[INFO] cloning repository https://github.com/carterbs/gardener [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/carterbs/gardener" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcarterbs%2Fgardener", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcarterbs%2Fgardener'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 26a8966e5409de61d10c131b2da08f8eeef0e4a7 [INFO] testing carterbs/gardener/26a8966e5409de61d10c131b2da08f8eeef0e4a7 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcarterbs%2Fgardener" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/carterbs/gardener [INFO] finished tweaking git repo https://github.com/carterbs/gardener [INFO] tweaked toml for git repo https://github.com/carterbs/gardener written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/carterbs/gardener on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/carterbs/gardener 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" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded tempfile v3.26.0 [INFO] [stderr] Downloaded clap_lex v1.0.0 [INFO] [stderr] Downloaded conpty v0.5.1 [INFO] [stderr] Downloaded ptyprocess v0.5.0 [INFO] [stderr] Downloaded assert_cmd v2.1.2 [INFO] [stderr] Downloaded darling_macro v0.23.0 [INFO] [stderr] Downloaded instability v0.3.11 [INFO] [stderr] Downloaded clap v4.5.60 [INFO] [stderr] Downloaded compact_str v0.8.1 [INFO] [stderr] Downloaded darling_core v0.23.0 [INFO] [stderr] Downloaded zerocopy-derive v0.8.40 [INFO] [stderr] Downloaded rusqlite v0.32.1 [INFO] [stderr] Downloaded darling v0.23.0 [INFO] [stderr] Downloaded zerocopy v0.8.40 [INFO] [stderr] Downloaded clap_builder v4.5.60 [INFO] [stderr] Downloaded getrandom v0.4.1 [INFO] [stderr] Downloaded expectrl v0.8.0 [INFO] [stderr] Downloaded hashlink v0.9.1 [INFO] [stderr] Downloaded ratatui v0.29.0 [INFO] [stderr] Downloaded libc v0.2.182 [INFO] [stderr] Downloaded libsqlite3-sys v0.30.1 [INFO] [stderr] Downloaded windows v0.44.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 4473ac579a53016fe85d39860787555d85ae2d5963dae6ffcc44248a1ddf0bc0 [INFO] running `Command { std: "docker" "start" "-a" "4473ac579a53016fe85d39860787555d85ae2d5963dae6ffcc44248a1ddf0bc0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4473ac579a53016fe85d39860787555d85ae2d5963dae6ffcc44248a1ddf0bc0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4473ac579a53016fe85d39860787555d85ae2d5963dae6ffcc44248a1ddf0bc0", kill_on_drop: false }` [INFO] [stdout] 4473ac579a53016fe85d39860787555d85ae2d5963dae6ffcc44248a1ddf0bc0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 80bb5634589b6f41aa7734ff4ffb7add32a16f21090548fd4dee03c76903bd0b [INFO] running `Command { std: "docker" "start" "-a" "80bb5634589b6f41aa7734ff4ffb7add32a16f21090548fd4dee03c76903bd0b", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling typenum v1.19.0 [INFO] [stderr] Compiling rustversion v1.0.22 [INFO] [stderr] Compiling zerocopy v0.8.40 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Compiling find-msvc-tools v0.1.9 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling linux-raw-sys v0.4.15 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling paste v1.0.15 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling instability v0.3.11 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling libsqlite3-sys v0.30.1 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling castaway v0.2.4 [INFO] [stderr] Compiling unicode-width v0.1.14 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling winnow v0.7.14 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling clap_lex v1.0.0 [INFO] [stderr] Compiling indoc v2.0.7 [INFO] [stderr] Compiling compact_str v0.8.1 [INFO] [stderr] Compiling clap_builder v4.5.60 [INFO] [stderr] Compiling crossterm v0.28.1 [INFO] [stderr] Compiling unicode-truncate v1.1.0 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling lru v0.12.5 [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling cassowary v0.3.0 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Compiling strum v0.26.3 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling ratatui v0.29.0 [INFO] [stderr] Compiling clap v4.5.60 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling rusqlite v0.32.1 [INFO] [stderr] Compiling gardener v0.1.0 (/opt/rustwide/workdir/tools/gardener) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 51s [INFO] running `Command { std: "docker" "inspect" "80bb5634589b6f41aa7734ff4ffb7add32a16f21090548fd4dee03c76903bd0b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "80bb5634589b6f41aa7734ff4ffb7add32a16f21090548fd4dee03c76903bd0b", kill_on_drop: false }` [INFO] [stdout] 80bb5634589b6f41aa7734ff4ffb7add32a16f21090548fd4dee03c76903bd0b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4a487b8e203b145d32c575d3bf6cd758d861ca5293661db55e76bb3521f620b2 [INFO] running `Command { std: "docker" "start" "-a" "4a487b8e203b145d32c575d3bf6cd758d861ca5293661db55e76bb3521f620b2", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling memoffset v0.7.1 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling predicates-core v1.0.10 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling getrandom v0.4.1 [INFO] [stderr] Compiling assert_cmd v2.1.2 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling termtree v0.5.1 [INFO] [stderr] Compiling difflib v0.4.0 [INFO] [stderr] Compiling predicates-tree v1.0.13 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling predicates v3.1.4 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling rusqlite v0.32.1 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling nix v0.26.4 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling crossterm v0.28.1 [INFO] [stderr] Compiling tempfile v3.26.0 [INFO] [stderr] Compiling ratatui v0.29.0 [INFO] [stderr] Compiling ptyprocess v0.5.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling expectrl v0.8.0 [INFO] [stderr] Compiling gardener v0.1.0 (/opt/rustwide/workdir/tools/gardener) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 38s [INFO] running `Command { std: "docker" "inspect" "4a487b8e203b145d32c575d3bf6cd758d861ca5293661db55e76bb3521f620b2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4a487b8e203b145d32c575d3bf6cd758d861ca5293661db55e76bb3521f620b2", kill_on_drop: false }` [INFO] [stdout] 4a487b8e203b145d32c575d3bf6cd758d861ca5293661db55e76bb3521f620b2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] eab244dee6e76ce303f2a75ffe9aa0c818ab0b39d4fcc6609de9dc33319146a1 [INFO] running `Command { std: "docker" "start" "-a" "eab244dee6e76ce303f2a75ffe9aa0c818ab0b39d4fcc6609de9dc33319146a1", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.31s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/gardener-47c9b432a4adac7e) [INFO] [stdout] [INFO] [stdout] running 593 tests [INFO] [stdout] test agent::claude::tests::probe_detects_supported_flags ... ok [INFO] [stdout] test agent::claude::tests::missing_success_event_is_rejected ... ok [INFO] [stdout] test agent::claude::tests::parses_ndjson_and_extracts_terminal_result_payload ... ok [INFO] [stdout] test agent::claude::tests::permissive_mode_adds_bypass_flag ... ok [INFO] [stdout] test agent::codex::tests::ignores_non_json_stdout_lines_when_terminal_event_exists ... ok [INFO] [stdout] test agent::codex::tests::returns_failure_terminal_when_failed_event_present_even_on_nonzero_exit ... ok [INFO] [stdout] test agent::factory::tests::factory_registers_default_plugins ... ok [INFO] [stdout] test agent::codex::tests::parses_concatenated_records_without_newlines ... ok [INFO] [stdout] test agent::codex::tests::missing_turn_completed_event_errors ... ok [INFO] [stdout] test agent::claude::tests::ignores_non_json_stdout_lines_when_terminal_result_exists ... ok [INFO] [stdout] test agent::codex::tests::probe_detects_json_and_schema_flags ... ok [INFO] [stdout] test agent::tests::probe_persists_capability_snapshot_for_multiple_adapters ... ok [INFO] [stdout] test agent::tests::probe_persists_capability_snapshot ... ok [INFO] [stdout] test agent::tests::validate_model_rejects_placeholders ... ok [INFO] [stdout] test agent::codex::tests::turn_failed_is_failure_terminal ... ok [INFO] [stdout] test agent::tests::probe_and_persist_reports_missing_cli_binary_as_cli_error ... ok [INFO] [stdout] test backlog_snapshot::tests::sanitizes_markdown_cells ... ok [INFO] [stdout] test agent::codex::tests::parses_jsonl_and_finishes_on_turn_completed ... ok [INFO] [stdout] test backlog_store::tests::count_tasks_by_priority_excludes_complete ... ok [INFO] [stdout] test backlog_snapshot::tests::snapshot_hides_merge_queue_tasks ... ok [INFO] [stdout] test backlog_snapshot::tests::exporter_writes_file ... ok [INFO] [stdout] test backlog_store::tests::claim_prioritizes_retries_within_same_priority ... ok [INFO] [stdout] test backlog_snapshot::tests::snapshot_renders_expected_table ... ok [INFO] [stdout] test backlog_store::tests::claim_is_priority_ordered_fifo_by_last_updated ... ok [INFO] [stdout] test backlog_store::tests::covers_conversion_and_error_paths ... ok [INFO] [stdout] test backlog_store::tests::drop_flushes_pending_writes ... ok [INFO] [stdout] test backlog_store::tests::insert_and_list_rejected_seeds_round_trip ... ok [INFO] [stdout] test backlog_store::tests::insert_rejected_seed_deduplicates_by_title_and_domain ... ok [INFO] [stdout] test backlog_store::tests::open_rejects_corrupt_file ... ok [INFO] [stdout] test backlog_store::tests::open_rejects_zero_byte_file ... ok [INFO] [stdout] test backlog_store::tests::mark_complete_requires_owner_match ... ok [INFO] [stdout] test backlog_store::tests::insert_rejected_seed_without_reason ... ok [INFO] [stdout] test backlog_store::tests::concurrent_claims_never_return_same_task ... ok [INFO] [stdout] test backlog_store::tests::lower_priority_reinsert_does_not_downgrade ... ok [INFO] [stdout] test backlog_store::tests::list_backlog_tasks_hides_merge_pending ... ok [INFO] [stdout] test backlog_store::tests::mark_unresolved_requires_owner_match ... ok [INFO] [stdout] test do_phase::tests::fallback_commit_message_handles_empty_summary ... ok [INFO] [stdout] test do_phase::tests::parse_doing_output_returns_err_when_payload_invalid ... ok [INFO] [stdout] test do_phase::tests::parse_doing_output_returns_err_when_payload_null ... ok [INFO] [stdout] test do_phase::tests::parse_doing_output_succeeds_with_valid_payload ... ok [INFO] [stdout] test do_phase::tests::try_git_salvage_commits_dirty_worktree_when_needed ... ok [INFO] [stdout] test do_phase::tests::try_git_salvage_prefers_existing_commit_subject ... ok [INFO] [stdout] test do_phase::tests::try_git_salvage_returns_none_for_clean_tree_without_commits ... ok [INFO] [stdout] test do_phase::tests::try_git_salvage_returns_none_without_git ... ok [INFO] [stdout] test friction_analysis::tests::extract_drops_noise_events ... ok [INFO] [stdout] test friction_analysis::tests::extract_filters_by_worker_and_run ... ok [INFO] [stdout] test friction_analysis::tests::extract_handles_malformed_json ... ok [INFO] [stdout] test friction_analysis::tests::extract_keeps_high_severity_regardless_of_type ... ok [INFO] [stdout] test friction_analysis::tests::extract_returns_empty_for_missing_file ... ok [INFO] [stdout] test backlog_store::tests::list_rejected_seeds_caps_at_twenty ... ok [INFO] [stdout] test backlog_store::tests::set_merge_pending_to_ready_demotes_poisoned_merge_queue_rows ... ok [INFO] [stdout] test friction_analysis::tests::findings_to_tasks_returns_empty_for_empty_findings ... ok [INFO] [stdout] test friction_analysis::tests::findings_to_tasks_maps_severity_to_priority ... ok [INFO] [stdout] test friction_analysis::tests::friction_output_schema_is_strict ... ok [INFO] [stdout] test friction_analysis::tests::parse_friction_payload_errors_on_empty_payload ... ok [INFO] [stdout] test friction_analysis::tests::parse_friction_payload_errors_on_null_envelope_payload ... ok [INFO] [stdout] test friction_analysis::tests::parse_friction_payload_errors_on_null_payload ... ok [INFO] [stdout] test friction_analysis::tests::parse_friction_payload_from_file_errors_on_null_payload ... ok [INFO] [stdout] test friction_analysis::tests::parse_friction_payload_from_file_reads_and_parses_output ... ok [INFO] [stdout] test friction_analysis::tests::response_deserializes_valid_json ... ok [INFO] [stdout] test friction_analysis::tests::response_deserializes_smooth_run ... ok [INFO] [stdout] test backlog_store::tests::reopen_complete_task_to_merge_pending ... ok [INFO] [stdout] test friction_analysis::tests::response_from_malformed_json_returns_default ... ok [INFO] [stdout] test friction_analysis::tests::run_friction_analysis_recovers_from_null_payload_with_output_file ... ok [INFO] [stdout] test friction_analysis::tests::run_friction_analysis_recovers_from_null_envelope_payload_with_output_file ... ok [INFO] [stdout] test backlog_store::tests::task_identity_contract_matches_store_ids ... ok [INFO] [stdout] test backlog_store::tests::stale_recovery_skips_in_progress_with_live_lease ... ok [INFO] [stdout] test fsm::tests::transition_validator_rejects_invalid_edges ... ok [INFO] [stdout] test fsm::tests::planning_skip_mapping_is_deterministic ... ok [INFO] [stdout] test gh::tests::check_mergeability_parses_conflicting_status ... ok [INFO] [stdout] test gh::tests::create_pr_parses_number_from_url ... ok [INFO] [stdout] test fsm::tests::turn_and_review_caps_park_the_worker ... ok [INFO] [stdout] test gh::tests::check_mergeability_parses_clean_status ... ok [INFO] [stdout] test gh::tests::create_pr_reports_process_error_as_failure ... ok [INFO] [stdout] test gh::tests::create_pr_reuses_existing_pr_when_gh_reports_already_exists ... ok [INFO] [stdout] test gh::tests::extract_run_id_from_link_parses_github_actions_url ... ok [INFO] [stdout] test gh::tests::extract_run_id_from_link_returns_none_for_bad_url ... ok [INFO] [stdout] test gh::tests::fetch_failed_checks_handles_no_failures ... ok [INFO] [stdout] test gh::tests::fetch_failed_checks_returns_failed_with_logs ... ok [INFO] [stdout] test gh::tests::fetch_failed_checks_handles_pending_exit_code_8 ... ok [INFO] [stdout] test gh::tests::find_pr_for_branch_returns_error_for_invalid_json ... ok [INFO] [stdout] test gh::tests::find_pr_for_branch_returns_error_when_no_pr_exists ... ok [INFO] [stdout] test gh::tests::find_pr_for_branch_returns_first_match ... ok [INFO] [stdout] test gh::tests::generate_pr_title_body_falls_back_when_first_commit_is_generic ... ok [INFO] [stdout] test gh::tests::generate_pr_title_body_multiple_commits ... ok [INFO] [stdout] test gh::tests::generate_pr_title_body_single_commit_no_description ... ok [INFO] [stdout] test gh::tests::generate_pr_title_body_single_commit_with_description ... ok [INFO] [stdout] test gh::tests::is_good_pr_title_accepts_conventional_commit ... ok [INFO] [stdout] test gh::tests::is_good_pr_title_rejects_blocklisted_and_invalid ... ok [INFO] [stdout] test gh::tests::is_pending_returns_false_for_terminal_states ... ok [INFO] [stdout] test gh::tests::is_pending_returns_true_for_unknown_and_blocked ... ok [INFO] [stdout] test gh::tests::list_open_prs_fails_when_json_invalid ... ok [INFO] [stdout] test gh::tests::list_open_prs_reports_open_prs ... ok [INFO] [stdout] test gh::tests::merge_pr_fails_when_both_strategies_fail ... ok [INFO] [stdout] test gh::tests::merge_pr_falls_back_to_merge_on_squash_failure ... ok [INFO] [stdout] test gh::tests::merge_pr_squash_succeeds ... ok [INFO] [stdout] test gh::tests::mergeability_enum_deserializes_from_gh_json ... ok [INFO] [stdout] test gh::tests::merged_verification_requires_merged_state_and_validation ... ok [INFO] [stdout] test gh::tests::poll_mergeability_resolves_after_unknown ... ok [INFO] [stdout] test gh::tests::poll_mergeability_waits_through_blocked ... ok [INFO] [stdout] test gh::tests::pr_title_from_summary_truncates_to_72_chars ... ok [INFO] [stdout] test gh::tests::required_checks_green_false_when_not_all_passed ... ok [INFO] [stdout] test gh::tests::required_checks_green_false_when_pending ... ok [INFO] [stdout] test gh::tests::required_checks_green_true_when_all_required_checks_pass ... ok [INFO] [stdout] test gh::tests::truncate_log_keeps_last_n_lines ... ok [INFO] [stdout] test gh::tests::truncate_log_returns_full_when_under_limit ... ok [INFO] [stdout] test gh::tests::unmerged_collision_priority_escalates_one_level ... ok [INFO] [stdout] test gh::tests::verify_merged_fails_when_merge_commit_missing ... ok [INFO] [stdout] test gh::tests::view_pr_invalid_json_reports_parse_error ... ok [INFO] [stdout] test gh::tests::verify_merged_requires_pr_merged_state_or_sha ... ok [INFO] [stdout] test git::tests::abort_merge_if_in_progress_executes_abort ... ok [INFO] [stdout] test git::tests::abort_merge_if_in_progress_noop_without_merge_head ... ok [INFO] [stdout] test git::tests::abort_rebase_executes_rebase_abort ... ok [INFO] [stdout] test git::tests::commit_all_runs_add_before_commit ... ok [INFO] [stdout] test gh::tests::list_open_prs_fails_when_command_fails ... ok [INFO] [stdout] test git::tests::commit_all_skips_clean_tree ... ok [INFO] [stdout] test git::tests::commits_since_empty_base_returns_empty ... ok [INFO] [stdout] test git::tests::commits_since_nonzero_exit_returns_empty ... ok [INFO] [stdout] test git::tests::commits_since_returns_subjects ... ok [INFO] [stdout] test git::tests::pull_main_corrects_core_bare_true_before_merge ... ok [INFO] [stdout] test git::tests::head_ahead_behind_main_rejects_invalid_output ... ok [INFO] [stdout] test git::tests::pull_main_errors_on_non_ff_merge_error ... ok [INFO] [stdout] test git::tests::pull_main_recovers_from_diverged_main_with_hard_reset ... ok [INFO] [stdout] test friction_analysis::tests::run_friction_analysis_keeps_smooth_run_false_when_payload_is_null ... ok [INFO] [stdout] test git::tests::pull_main_with_stashed_changes_stashes_and_restores_dirty_worktree ... ok [INFO] [stdout] test git::tests::pull_main_with_stashed_changes_keeps_clean_worktree_unmodified ... ok [INFO] [stdout] test git::tests::detached_head_detection ... ok [INFO] [stdout] test git::tests::head_ahead_behind_main_parses_counts ... ok [INFO] [stdout] test git::tests::push_force_with_lease_recovery_path ... ok [INFO] [stdout] test backlog_store::tests::stale_recovery_requeues_in_progress_and_expired_leases ... ok [INFO] [stdout] test git::tests::run_validation_command_fails_when_core_bare_correction_fails ... ok [INFO] [stdout] test git::tests::run_validation_command_reports_failure ... ok [INFO] [stdout] test git::tests::try_merge_from_main_clean ... ok [INFO] [stdout] test git::tests::try_merge_from_main_conflict_leaves_merge_in_progress ... ok [INFO] [stdout] test git::tests::try_merge_from_main_unknown_error_aborts ... ok [INFO] [stdout] test git::tests::push_recovery_bails_on_non_recoverable_error ... ok [INFO] [stdout] test git::tests::rebase_local_recovery_paths_are_exercised ... ok [INFO] [stdout] test git::tests::push_recovery_handles_logged_non_fast_forward_case_without_rebase ... ok [INFO] [stdout] test git::tests::try_rebase_onto_local_reports_conflict ... ok [INFO] [stdout] test git::tests::rebase_onto_main_succeeds ... ok [INFO] [stdout] test git::tests::worktree_dirty_when_status_has_output ... ok [INFO] [stdout] test learning_loop::tests::learning_loop_collects_postmerge_and_failure_entries ... ok [INFO] [stdout] test git::tests::verify_ancestor_tracks_expected_results ... ok [INFO] [stdout] test git::tests::worktree_clean_when_status_empty ... ok [INFO] [stdout] test log_query::tests::discover_log_files_skips_missing_slots ... ok [INFO] [stdout] test log_query::tests::index_file_empty_file ... ok [INFO] [stdout] test backlog_store::tests::upsert_dedupes_and_upgrades_priority ... ok [INFO] [stdout] test log_query::tests::index_file_returns_deduplicated_sorted_ids ... ok [INFO] [stdout] test log_query::tests::parse_log_line_blank ... ok [INFO] [stdout] test log_query::tests::parse_log_line_invalid_json ... ok [INFO] [stdout] test log_query::tests::parse_log_line_missing_fields ... ok [INFO] [stdout] test log_query::tests::parse_log_line_requires_event_type ... ok [INFO] [stdout] test log_query::tests::parse_log_line_valid ... ok [INFO] [stdout] test log_query::tests::parse_time_filter_supports_rfc3339_and_nanos ... ok [INFO] [stdout] test log_query::tests::run_trace_builds_summary_for_run ... ok [INFO] [stdout] test git::tests::try_rebase_onto_local_fails_on_unexpected_error ... ok [INFO] [stdout] test git::tests::rebase_onto_main_aborts_on_conflict ... ok [INFO] [stdout] test log_retention::tests::drops_oldest_rotation_at_limit ... ok [INFO] [stdout] test log_retention::tests::no_rotation_when_under_limit ... ok [INFO] [stdout] test log_retention::tests::rotated_path_follows_naming_convention ... ok [INFO] [stdout] test logging::tests::current_log_line_count_is_zero_for_unreadable_file ... ok [INFO] [stdout] test logging::tests::current_log_line_count_reports_number_of_lines ... ok [INFO] [stdout] test log_retention::tests::rotates_when_over_limit ... ok [INFO] [stdout] test logging::tests::current_run_context_functions_report_initialized_run_state ... ok [INFO] [stdout] test logging::tests::default_path_points_at_cache_file ... ok [INFO] [stdout] test logging::tests::default_path_prefers_explicit_log_path_env ... ok [INFO] [stdout] test log_retention::tests::never_deletes_sqlite_sidecar_files ... ok [INFO] [stdout] test logging::tests::fallback_line_is_deterministic ... ok [INFO] [stdout] test logging::tests::format_adapter_event_command_covers_kind_raw_and_call_paths ... ok [INFO] [stdout] test logging::tests::helper_json_and_utf8_truncate_work_for_large_payloads ... ok [INFO] [stdout] test logging::tests::logger_rotates_at_threshold ... ok [INFO] [stdout] test logging::tests::logger_writes_jsonl ... ok [INFO] [stdout] test logging::tests::current_log_line_count_is_zero_when_run_not_initialized ... ok [INFO] [stdout] test logging::tests::local_time_for_next_check_uses_local_timestamp_format ... ok [INFO] [stdout] test log_retention::tests::never_deletes_sqlite_files ... ok [INFO] [stdout] test logging::tests::recent_worker_state_events_collects_activity_state_events ... ok [INFO] [stdout] test logging::tests::payload_is_truncated_when_needed ... ok [INFO] [stdout] test logging::tests::recent_worker_log_lines_filters_and_limits_by_worker ... ok [INFO] [stdout] test log_retention::tests::prunes_oldest_files_until_budget_is_met ... ok [INFO] [stdout] test logging::tests::otel_log_line_contains_log_record_shape ... ok [INFO] [stdout] test logging::tests::otel_severity_mapping_is_stable ... ok [INFO] [stdout] test logging::tests::worker_log_predicates_track_worker_field ... ok [INFO] [stdout] test merge_loop::tests::blocked_state_without_explicit_failed_checks_is_not_remediated ... ok [INFO] [stdout] test merge_loop::tests::merge_polling_block_reason_maps_states ... ok [INFO] [stdout] test logging::tests::recent_worker_tool_commands_collects_tool_events ... ok [INFO] [stdout] test logging::tests::worker_state_details_for_ci_failure_includes_state_suffix ... ok [INFO] [stdout] test logging::tests::worker_state_details_formats_merge_polling_fields ... ok [INFO] [stdout] test merge_loop::tests::blocked_state_with_explicit_failed_checks_is_remediated ... ok [INFO] [stdout] test postmerge_analysis::tests::postmerge_analysis_only_emits_for_successful_merges ... ok [INFO] [stdout] test postmortem::tests::postmortem_encodes_reason_into_knowledge_key ... ok [INFO] [stdout] test priority::tests::db_round_trip_strings_are_stable ... ok [INFO] [stdout] test prompt_knowledge::tests::evidence_file_written_and_referenced ... ok [INFO] [stdout] test prompt_context::tests::packet_build_is_deterministic_and_has_required_sections ... ok [INFO] [stdout] test prompt_knowledge::tests::empty_evidence_skips_file ... ok [INFO] [stdout] test prompt_registry::tests::ci_failure_remediation_template_references_knowledge_context ... ok [INFO] [stdout] test prompt_registry::tests::seeding_prompt_template_uses_canonical_version_constant ... ok [INFO] [stdout] test prompt_registry::tests::gitting_remediation_template_prohibits_git_moves ... ok [INFO] [stdout] test prompt_registry::tests::merge_remediation_template_grants_autonomy ... ok [INFO] [stdout] test prompt_registry::tests::registry_contains_v1_worker_templates ... ok [INFO] [stdout] test prompt_registry::tests::with_retry_rebase_noop_on_first_attempt ... ok [INFO] [stdout] test prompt_registry::tests::with_retry_rebase_swaps_doing_template_on_retry ... ok [INFO] [stdout] test prompts::tests::render_includes_prompt_version_and_manifest_hash ... ok [INFO] [stdout] test protocol::tests::codex_legacy_event_aliases_are_not_mapped ... ok [INFO] [stdout] test protocol::tests::codex_unknown_events_are_retained ... ok [INFO] [stdout] test protocol::tests::extract_helpers_read_nested_and_fallback_fields ... ok [INFO] [stdout] test protocol::tests::jsonl_parser_rejects_malformed_lines ... ok [INFO] [stdout] test protocol::tests::strip_shell_wrapper_no_wrapper_passthrough ... ok [INFO] [stdout] test protocol::tests::parse_json_records_accepts_concatenated_events ... ok [INFO] [stdout] test protocol::tests::parse_json_records_rejects_malformed_stream ... ok [INFO] [stdout] test protocol::tests::strip_shell_wrapper_double_quotes ... ok [INFO] [stdout] test protocol::tests::strip_shell_wrapper_single_quotes ... ok [INFO] [stdout] test protocol::tests::summarize_agent_event_handles_all_kinds ... ok [INFO] [stdout] test quality_assertion_counter::tests::count_assertions_empty ... ok [INFO] [stdout] test quality_assertion_counter::tests::count_assertions_in_rust_file ... ok [INFO] [stdout] test quality_assessment_prompt::tests::build_prompt_contains_evidence_bundle_json ... ok [INFO] [stdout] test prompt_knowledge::tests::knowledge_scoring_and_decay_contract ... ok [INFO] [stdout] test quality_assessment_prompt::tests::build_prompt_contains_markers ... ok [INFO] [stdout] test quality_assessment_runner::tests::deterministic_fallback_detects_missing_ci ... ok [INFO] [stdout] test quality_assessment_runner::tests::default_config_values ... ok [INFO] [stdout] test quality_assessment_prompt::tests::truncate_small_bundle_is_noop ... ok [INFO] [stdout] test log_retention::tests::shifts_existing_rotations ... ok [INFO] [stdout] test quality_assessment_runner::tests::deterministic_fallback_empty_repo ... ok [INFO] [stdout] test quality_assessment_runner::tests::deterministic_fallback_detects_missing_steering_docs ... ok [INFO] [stdout] test quality_assessment_runner::tests::discover_domains_flat_repo ... ok [INFO] [stdout] test quality_assessment_runner::tests::deterministic_fallback_with_source_files ... ok [INFO] [stdout] test quality_assessment_runner::tests::deterministic_fallback_scores_are_bounded ... ok [INFO] [stdout] test quality_assessment_runner::tests::discover_domains_uses_directory_clustering ... ok [INFO] [stdout] test quality_assessment_runner::tests::parse_assessment_payload_fails_without_markers ... ok [INFO] [stdout] test quality_assessment_runner::tests::parse_assessment_payload_extracts_json ... ok [INFO] [stdout] test quality_assessment_runner::tests::validate_payload_rejects_empty_domains ... ok [INFO] [stdout] test quality_assessment_runner::tests::validate_payload_clamps_scores ... ok [INFO] [stdout] test quality_assessment_runner::tests::run_assessment_uses_deterministic_fallback_without_factory ... ok [INFO] [stdout] test quality_ci_lint_detector::tests::detect_ci_lint_empty_repo ... ok [INFO] [stdout] test quality_ci_lint_detector::tests::detect_linters_finds_eslintrc ... ok [INFO] [stdout] test quality_ci_lint_detector::tests::detect_pre_commit_finds_husky ... ok [INFO] [stdout] test quality_ci_lint_detector::tests::parse_git_config_hooks_path_extracts_value ... ok [INFO] [stdout] test quality_ci_lint_detector::tests::parse_git_config_hooks_path_returns_none_when_absent ... ok [INFO] [stdout] test quality_ci_lint_detector::tests::detect_pre_commit_finds_hooks_via_git_config ... ok [INFO] [stdout] test quality_complexity_analyzer::tests::empty_repo ... ok [INFO] [stdout] test quality_complexity_analyzer::tests::go_function_counting ... ok [INFO] [stdout] test quality_complexity_analyzer::tests::js_arrow_function_counting ... ok [INFO] [stdout] test quality_complexity_analyzer::tests::python_nesting_by_indent ... ok [INFO] [stdout] test quality_complexity_analyzer::tests::rust_pub_fn_counted ... ok [INFO] [stdout] test quality_complexity_analyzer::tests::simple_rust_file_complexity ... ok [INFO] [stdout] test quality_complexity_analyzer::tests::complexity_score_calculation ... ok [INFO] [stdout] test quality_ci_lint_detector::tests::detect_ci_finds_github_workflows ... ok [INFO] [stdout] test quality_complexity_analyzer::tests::sorting_highest_complexity_first ... ok [INFO] [stdout] test quality_coverage_parser::tests::parse_coverage_no_artifacts ... ok [INFO] [stdout] test quality_coverage_parser::tests::parse_cobertura_basic ... ok [INFO] [stdout] test quality_coverage_parser::tests::parse_lcov_basic ... ok [INFO] [stdout] test quality_debt_scanner::tests::scan_debt_empty_file ... ok [INFO] [stdout] test quality_debt_scanner::tests::scan_debt_finds_todo ... ok [INFO] [stdout] test quality_debt_scanner::tests::scan_debt_finds_fixme ... ok [INFO] [stdout] test quality_dimension_prompts::tests::agent_steering_includes_research_rubric_keywords ... ok [INFO] [stdout] test quality_dimension_prompts::tests::each_dimension_prompt_includes_name_and_scoring ... ok [INFO] [stdout] test quality_dimension_prompts::tests::hybrid_prompts_include_adjustment_instructions ... ok [INFO] [stdout] test quality_dimension_prompts::tests::shared_context_handles_empty_manifests ... ok [INFO] [stdout] test quality_dimension_prompts::tests::shared_context_is_non_empty ... ok [INFO] [stdout] test quality_dimension_prompts::tests::synthesizer_includes_all_dimension_reports ... ok [INFO] [stdout] test quality_dimension_prompts::tests::synthesizer_includes_json_markers ... ok [INFO] [stdout] test quality_doc_scanner::tests::scan_docs_empty_repo ... ok [INFO] [stdout] test quality_doc_scanner::tests::scan_docs_finds_readme ... ok [INFO] [stdout] test quality_dimension_prompts::tests::domain_discovery_includes_json_output_instructions ... ok [INFO] [stdout] test quality_doc_scanner::tests::scan_docs_finds_steering_doc ... ok [INFO] [stdout] test quality_doc_scanner::tests::scan_docs_truncates_large_files ... ok [INFO] [stdout] test quality_debt_scanner::tests::scan_debt_multiple_markers ... ok [INFO] [stdout] test quality_domain_catalog::tests::discover_domains_defaults_to_infrastructure_if_no_src_dir ... ok [INFO] [stdout] test quality_domain_catalog::tests::discover_domains_includes_infrastructure_plus_detected_domains ... ok [INFO] [stdout] test quality_doc_scanner::tests::scan_docs_includes_docs_directory ... ok [INFO] [stdout] test quality_evidence::tests::collect_evidence_finds_integration_tests_for_domain ... ok [INFO] [stdout] test quality_evidence::tests::collect_evidence_infrastructure_domain_excludes_triage_files ... ok [INFO] [stdout] test quality_evidence::tests::collect_evidence_no_src_dir_returns_empty_source_files ... ok [INFO] [stdout] test quality_evidence::tests::collect_evidence_scans_nested_src_subdirectories ... ok [INFO] [stdout] test quality_evidence::tests::collect_evidence_seeding_domain_matches_seed_runner ... ok [INFO] [stdout] test quality_evidence::tests::collect_evidence_with_empty_domains_returns_empty ... ok [INFO] [stdout] test quality_evidence_bundle::tests::collect_evidence_bundle_empty_repo ... ok [INFO] [stdout] test quality_evidence::tests::collect_evidence_finds_backlog_source_files ... ok [INFO] [stdout] test quality_evidence_bundle::tests::collect_evidence_bundle_with_rust_files ... ok [INFO] [stdout] test quality_evidence_bundle::tests::detect_package_manifests_finds_cargo_toml ... ok [INFO] [stdout] test quality_evidence_bundle::tests::load_domain_hints_parses_toml ... ok [INFO] [stdout] test quality_domain_catalog::tests::collect_source_domains_maps_known_files_to_domain_labels ... ok [INFO] [stdout] test quality_file_sampler::tests::format_sampled_files_produces_expected_markdown ... ok [INFO] [stdout] test quality_file_sampler::tests::rank_files_by_complexity_sorts_descending ... ok [INFO] [stdout] test quality_file_sampler::tests::rank_test_files_by_assertions_sorts_descending ... ok [INFO] [stdout] test quality_file_sampler::tests::sample_files_always_includes_first_file_even_if_over_budget ... ok [INFO] [stdout] test quality_file_sampler::tests::sample_files_empty_paths_returns_empty ... ok [INFO] [stdout] test quality_file_sampler::tests::sample_files_reads_actual_file_contents ... ok [INFO] [stdout] test quality_file_sampler::tests::sample_files_respects_max_total_lines ... ok [INFO] [stdout] test quality_file_sampler::tests::sample_files_skips_missing_files ... ok [INFO] [stdout] test quality_grade_compute::tests::all_100_repo_scores_yield_a ... ok [INFO] [stdout] test quality_grade_compute::tests::all_100_scores_yield_a ... ok [INFO] [stdout] test quality_grade_compute::tests::all_zero_scores_yield_f ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_39_is_f ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_40_is_d ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_54_is_d ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_55_is_c_minus ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_59_is_c_minus ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_60_is_c ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_74_is_c_plus ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_75_is_b_minus ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_79_is_b_minus ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_80_is_b ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_86_is_b ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_87_is_b_plus ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_92_is_b_plus ... ok [INFO] [stdout] test quality_grade_compute::tests::boundary_93_is_a ... ok [INFO] [stdout] test quality_grade_compute::tests::grade_report_sorts_deficiencies_by_severity_then_category ... ok [INFO] [stdout] test quality_grade_compute::tests::grade_report_sorts_domains_worst_first ... ok [INFO] [stdout] test quality_grade_compute::tests::known_domain_composite_calculation ... ok [INFO] [stdout] test quality_evidence_bundle::tests::load_domain_hints_returns_none_when_missing ... ok [INFO] [stdout] test quality_grade_compute::tests::known_repo_composite_calculation ... ok [INFO] [stdout] test quality_grade_renderer::tests::basic_render_without_repo_wide_still_works ... ok [INFO] [stdout] test quality_grade_renderer::tests::render_contains_agent_readiness_table ... ok [INFO] [stdout] test quality_grade_renderer::tests::render_contains_domain_coverage_table ... ok [INFO] [stdout] test quality_grade_compute::tests::all_zero_repo_scores_yield_f ... ok [INFO] [stdout] test quality_grade_renderer::tests::render_contains_footer_with_assessed_by ... ok [INFO] [stdout] test quality_grade_renderer::tests::render_contains_domain_notes ... ok [INFO] [stdout] test quality_grade_renderer::tests::render_contains_header_and_languages ... ok [INFO] [stdout] test quality_grade_renderer::tests::render_empty_deficiencies_shows_none_message ... ok [INFO] [stdout] test quality_grade_renderer::tests::render_contains_structural_deficiencies ... ok [INFO] [stdout] test quality_backlog_emitter::tests::emit_creates_tasks_for_each_deficiency ... ok [INFO] [stdout] test quality_grade_renderer::tests::render_contains_overall_readiness ... ok [INFO] [stdout] test quality_grade_renderer::tests::render_shows_dimension_details_when_rationale_present ... ok [INFO] [stdout] test quality_grade_renderer::tests::render_shows_domain_score_details_when_rationale_present ... ok [INFO] [stdout] test quality_grade_renderer::tests::render_skips_rationale_sections_when_empty ... ok [INFO] [stdout] test quality_instrumentation_detector::tests::detect_instrumentation_empty ... ok [INFO] [stdout] test quality_instrumentation_detector::tests::detect_instrumentation_finds_rust_tracing ... ok [INFO] [stdout] test quality_language_registry::tests::builtin_registry_has_five_languages ... ok [INFO] [stdout] test quality_instrumentation_detector::tests::detect_instrumentation_ratio ... ok [INFO] [stdout] test quality_language_registry::tests::classify_e2e_test_by_path ... ok [INFO] [stdout] test quality_language_registry::tests::classify_integration_test_by_path ... ok [INFO] [stdout] test quality_language_registry::tests::classify_unit_test_by_default ... ok [INFO] [stdout] test quality_language_registry::tests::identify_language_by_extension ... ok [INFO] [stdout] test quality_language_registry::tests::identify_language_by_shebang ... ok [INFO] [stdout] test quality_pipeline::tests::pipeline_document_contains_assessed_by ... ok [INFO] [stdout] test quality_grades::tests::does_not_annotate_quality_doc_when_discovery_available ... ok [INFO] [stdout] test quality_grades::tests::renders_agent_readiness_with_unknown_when_discovery_unavailable ... ok [INFO] [stdout] test quality_test_detector::tests::detect_tests_finds_inline_rust_tests ... ok [INFO] [stdout] test quality_test_detector::tests::detect_tests_finds_test_files_from_tree ... ok [INFO] [stdout] test quality_tree_walker::tests::generate_tree_diagram_empty ... ok [INFO] [stdout] test quality_tree_walker::tests::generate_tree_diagram_file_grouping ... ok [INFO] [stdout] test quality_tree_walker::tests::generate_tree_diagram_max_chars_truncation ... ok [INFO] [stdout] test quality_test_detector::tests::detect_tests_empty_tree ... ok [INFO] [stdout] test quality_tree_walker::tests::generate_tree_diagram_simple_directory ... ok [INFO] [stdout] test quality_tree_walker::tests::walk_repo_empty_dir ... ok [INFO] [stdout] test quality_pipeline::tests::pipeline_runs_without_factory_or_store ... ok [INFO] [stdout] test quality_tree_walker::tests::walk_repo_finds_rust_source_file ... ok [INFO] [stdout] test quality_tree_walker::tests::walk_repo_excludes_node_modules ... ok [INFO] [stdout] test quality_untested_finder::tests::extract_test_stem_strips_suffixes ... ok [INFO] [stdout] test quality_tree_walker::tests::walk_repo_identifies_test_files ... ok [INFO] [stdout] test quality_untested_finder::tests::find_untested_all_untested ... ok [INFO] [stdout] test quality_untested_finder::tests::find_untested_with_corresponding_test ... ok [INFO] [stdout] test repo_intelligence::tests::build_profile_uses_unknown_discovery_without_scoring ... ok [INFO] [stdout] test quality_untested_finder::tests::find_untested_with_inline_tests ... ok [INFO] [stdout] test repo_intelligence::tests::derive_agent_readiness_marks_unknown_as_unscored ... ok [INFO] [stdout] test repo_intelligence::tests::derive_agent_readiness_without_known_grades_stays_unknown_gap ... ok [INFO] [stdout] test retry::tests::retry_with_backoff_returns_immediately_on_success ... ok [INFO] [stdout] test retry::tests::retry_with_backoff_returns_last_error_when_exhausted ... ok [INFO] [stdout] test retry::tests::retry_with_backoff_succeeds_after_retry ... ok [INFO] [stdout] test review_phase::tests::parse_reviewing_output_defaults_to_needs_changes_without_verdict ... ok [INFO] [stdout] test review_phase::tests::parse_reviewing_output_is_fail_closed_for_missing_or_unknown_verdict ... ok [INFO] [stdout] test review_phase::tests::parse_reviewing_output_preserves_needs_changes_and_suggestions ... ok [INFO] [stdout] test runtime::tests::backlog_path_detector_matches_primary_and_sidecar_files ... ok [INFO] [stdout] test runtime::tests::copy_shortcut_key_matches_c_without_case_sensitive ... ok [INFO] [stdout] test runtime::tests::fake_clock_tracks_sleep_deadlines ... ok [INFO] [stdout] test runtime::tests::fake_file_system_can_fail_next_operation ... ok [INFO] [stdout] test runtime::tests::fake_process_runner_reports_spawn_wait_kill_paths ... ok [INFO] [stdout] test runtime::tests::fake_terminal_records_draw_calls ... ok [INFO] [stdout] test runtime::tests::line_splitter_flushes_each_complete_line ... ok [INFO] [stdout] test runtime::tests::line_splitter_flushes_trailing_partial_line ... ok [INFO] [stdout] test quality_backlog_emitter::tests::emit_empty_deficiencies_returns_empty_vec ... ok [INFO] [stdout] test seed_runner::tests::direct_v2_calls_on_event_callback ... ok [INFO] [stdout] test seed_runner::tests::direct_v2_failure_with_null_payload_uses_fallback_message ... ok [INFO] [stdout] test seed_runner::tests::direct_v2_returns_err_on_codex_failure ... ok [INFO] [stdout] test seed_runner::tests::direct_v2_returns_ok_on_codex_success ... ok [INFO] [stdout] test seed_runner::tests::legacy_v1_on_event_callback_is_invoked ... ok [INFO] [stdout] test seed_runner::tests::legacy_v1_rejects_unwrapped_direct_payload ... ok [INFO] [stdout] test seed_runner::tests::legacy_v1_returns_err_on_bad_payload ... ok [INFO] [stdout] test seed_runner::tests::legacy_v1_returns_err_on_exec_failure ... ok [INFO] [stdout] test seed_runner::tests::legacy_v1_with_task_count_rejects_wrong_payload_size ... ok [INFO] [stdout] test seed_runner::tests::parse_seed_payload_rejects_bad_envelope_metadata ... ok [INFO] [stdout] test seed_runner::tests::parse_seed_payload_rejects_direct_payload_format ... ok [INFO] [stdout] test seed_runner::tests::parse_seed_payload_returns_err_on_invalid_value ... ok [INFO] [stdout] test seed_runner::tests::parse_seed_payload_accepts_envelope_payload_format ... ok [INFO] [stdout] test seed_runner::tests::parse_seed_payload_with_task_count_enforces_exact_task_count ... ok [INFO] [stdout] test seed_runner::tests::parse_seed_payload_with_task_count_rejects_duplicate_titles ... ok [INFO] [stdout] test seed_runner::tests::parse_seed_payload_with_task_count_rejects_placeholder_domain ... ok [INFO] [stdout] test seed_runner::tests::seed_output_schema_is_strict ... ok [INFO] [stdout] test seed_runner::tests::seed_runner_uses_codex_adapter_output_contract ... ok [INFO] [stdout] test seed_runner::tests::seed_task_serde_defaults_apply_when_fields_absent ... ok [INFO] [stdout] test seeding::tests::build_seed_dry_run_prompt_contract ... ok [INFO] [stdout] test seeding::tests::build_seed_prompt_context_includes_repo_artifacts ... ok [INFO] [stdout] test seeding::tests::build_seed_prompt_uses_quality_markdown_without_repository_files ... ok [INFO] [stdout] test seeding::tests::build_seed_refine_prompt_format ... ok [INFO] [stdout] test seeding::tests::build_seed_refine_prompt_includes_rejected_tasks_context ... ok [INFO] [stdout] test seeding::tests::collect_docs_listing_skips_missing_and_non_markdown_files ... ok [INFO] [stdout] test seeding::tests::dry_run_prompt_includes_rejected_tasks_when_non_empty ... ok [INFO] [stdout] test seeding::tests::dry_run_prompt_omits_rejected_section_when_empty ... ok [INFO] [stdout] test seeding::tests::extract_quality_risks_ignores_unknown_rows ... ok [INFO] [stdout] test seeding::tests::prompt_builds_multiple_sections ... ok [INFO] [stdout] test seeding::tests::read_optional_file_reads_existing_file ... ok [INFO] [stdout] test seeding::tests::read_optional_file_returns_empty_when_missing ... ok [INFO] [stdout] test quality_backlog_emitter::tests::emit_upsert_is_idempotent ... ok [INFO] [stdout] test seeding::tests::walk_docs_collects_nested_markdown_files ... ok [INFO] [stdout] test startup::tests::backlog_db_path_defaults_to_non_cache_home_path ... ok [INFO] [stdout] test startup::tests::backlog_db_path_respects_test_mode ... ok [INFO] [stdout] test startup::tests::print_seed_recommendations_writes_expected_lines ... ok [INFO] [stdout] test startup::tests::backup_db_if_exists_skips_zero_byte ... ok [INFO] [stdout] test startup::tests::quality_stamp_path_appends_extension ... ok [INFO] [stdout] test startup::tests::backup_db_if_exists_skips_missing_file ... ok [INFO] [stdout] test startup::tests::seeding_gate_requires_empty_backlog ... ok [INFO] [stdout] test startup::tests::report_stamp_is_stale_when_ttl_exceeded ... ok [INFO] [stdout] test startup::tests::report_stamp_is_stale_for_missing_stamp ... ok [INFO] [stdout] test task_identity::tests::canonical_json_field_order_is_deterministic ... ok [INFO] [stdout] test task_identity::tests::normalization_contract_is_stable ... ok [INFO] [stdout] test task_identity::tests::task_kind_strings_match_contract ... ok [INFO] [stdout] test task_identity::tests::task_id_is_stable_for_logically_identical_inputs ... ok [INFO] [stdout] test quality_pipeline::tests::pipeline_emits_backlog_tasks_when_store_provided ... ok [INFO] [stdout] test tests::parse_conflicting_worker_count_and_num_workers_is_rejected ... ok [INFO] [stdout] test tests::profile_parallelism_does_not_override_cli_parallelism ... ok [INFO] [stdout] test tests::parse_num_workers_cli_flag ... ok [INFO] [stdout] test tests::record_session_flag_is_removed ... ok [INFO] [stdout] test tests::parse_worker_count_alias_cli_flag ... ok [INFO] [stdout] test tests::required_agent_backends_collects_unique_backends ... ok [INFO] [stdout] test tests::required_agent_backends_requires_effective_backend_for_each_active_state ... ok [INFO] [stdout] test triage_discovery::tests::build_discovery_prompt_includes_scoped_note_when_root_differs ... ok [INFO] [stdout] test triage_discovery::tests::build_discovery_prompt_includes_working_and_repo_root ... ok [INFO] [stdout] test triage_discovery::tests::run_discovery_returns_output_error_on_invalid_envelope ... ok [INFO] [stdout] test triage_discovery::tests::run_discovery_returns_process_error_when_runner_fails ... ok [INFO] [stdout] test triage_discovery::tests::run_discovery_success_for_claude ... ok [INFO] [stdout] test triage_discovery::tests::run_discovery_success_for_codex ... ok [INFO] [stdout] test triage_interview::tests::non_tty_path_formats_read_only_sections ... ok [INFO] [stdout] test tui::quality::tests::quality_activity_lines_preserve_order_and_fallback_copy ... ok [INFO] [stdout] test tui::quality::tests::quality_dimension_lines_cover_every_dimension_description ... ok [INFO] [stdout] test startup::tests::backup_db_if_exists_copies_file ... ok [INFO] [stdout] test tui::quality::tests::render_quality_grading_shows_activity_lines_and_footer ... ok [INFO] [stdout] test tui::quality::tests::live_quality_draw_wrappers_render_without_test_only_bypass_hooks ... ok [INFO] [stdout] test tui::quality::tests::render_quality_grading_uses_waiting_state_when_empty ... ok [INFO] [stdout] test tui::startup::tests::from_elapsed_ms_advances_spinner_and_ellipsis_independently ... ok [INFO] [stdout] test tui::startup::tests::from_tick_clamps_after_startup_window_and_wraps_verb_index ... ok [INFO] [stdout] test tui::startup::tests::from_view_copies_render_fields ... ok [INFO] [stdout] test tui::startup::tests::live_startup_headline_initializes_and_resets ... ok [INFO] [stdout] test tui::state::seed_review::tests::discard_reason_enter_records_provided_reason ... ok [INFO] [stdout] test tui::state::seed_review::tests::finalize_review_decisions_fills_missing_entries_with_discard_none ... ok [INFO] [stdout] test tui::state::seed_review::tests::handle_seed_review_input_routes_by_mode ... ok [INFO] [stdout] test tui::state::seed_review::tests::input_mode_backspace_and_character_keys_update_buffer ... ok [INFO] [stdout] test tui::state::seed_review::tests::input_mode_escape_clears_buffer_and_exits_mode ... ok [INFO] [stdout] test tui::state::seed_review::tests::input_mode_handler_is_noop_without_active_mode ... ok [INFO] [stdout] test tui::state::seed_review::tests::new_initializes_empty_review_state ... ok [INFO] [stdout] test tui::state::seed_review::tests::refine_enter_ignores_blank_buffer_and_keeps_mode_active ... ok [INFO] [stdout] test tui::state::seed_review::tests::refine_enter_records_feedback_and_advances ... ok [INFO] [stdout] test tui::state::seed_review::tests::review_mode_keep_records_decision_and_advances ... ok [INFO] [stdout] test tui::state::seed_review::tests::review_mode_quit_keys_return_true_and_other_keys_do_not ... ok [INFO] [stdout] test tui::state::seed_review::tests::review_mode_switches_to_discard_and_refine_inputs ... ok [INFO] [stdout] test tui::state::wizard::tests::escape_finishes_from_any_step ... ok [INFO] [stdout] test tui::state::wizard::tests::finalize_answers_accepts_valid_parallelism_and_custom_validation ... ok [INFO] [stdout] test tui::state::seed_review::tests::discard_reason_enter_records_none_for_blank_buffer ... ok [INFO] [stdout] test tui::state::wizard::tests::finalize_answers_uses_defaults_for_invalid_parallelism_and_blank_validation ... ok [INFO] [stdout] test tui::state::wizard::tests::new_state_uses_expected_defaults ... ok [INFO] [stdout] test tui::state::wizard::tests::notes_step_edits_text_and_enter_finishes ... ok [INFO] [stdout] test tui::state::wizard::tests::step_one_edits_validation_and_advances ... ok [INFO] [stdout] test tui::state::wizard::tests::step_three_allows_auto_approval_and_enter_advance ... ok [INFO] [stdout] test tui::state::wizard::tests::step_three_supports_toggle_shortcuts_and_selection ... ok [INFO] [stdout] test tui::state::wizard::tests::step_two_updates_docs_access_and_advances ... ok [INFO] [stdout] test tui::state::wizard::tests::step_zero_edits_parallelism_and_advances ... ok [INFO] [stdout] test tui::terminal::tests::clamped_selection_and_offset_adjust_to_visible_bounds ... ok [INFO] [stdout] test tui::terminal::tests::close_live_terminal_resets_live_size_without_touching_worker_scroll_state ... ok [INFO] [stdout] test tui::terminal::tests::scroll_workers_down_and_up_respect_capacity_and_bounds ... ok [INFO] [stdout] test tui::terminal::tests::scroll_workers_is_noop_without_workers ... ok [INFO] [stdout] test tui::terminal::tests::seeding_frame_renders_empty_and_populated_activity_states ... ok [INFO] [stdout] test quality_assessment_prompt::tests::truncate_sets_truncated_flag_on_large_bundle ... ok [INFO] [stdout] test tui::terminal::tests::shutdown_frame_renders_success_and_error_copy_variants ... ok [INFO] [stdout] test tui::terminal::tests::live_draw_wrappers_render_without_test_only_bypass_hooks ... ok [INFO] [stdout] test tests::startup_reconcile_reopens_complete_task_with_open_pr ... ok [INFO] [stdout] test tests::startup_reconcile_demotes_merge_pending_task_without_open_pr ... ok [INFO] [stdout] test tui::terminal::tests::shutdown_frame_treats_blank_lines_as_empty_rows ... ok [INFO] [stdout] test tui::tests::command_stream_window_truncates_without_scrolling ... ok [INFO] [stdout] test tui::tests::dashboard_feed_state_keeps_boundary_selected_worker_input ... ok [INFO] [stdout] test tui::quality::tests::render_quality_intro_lists_all_dimension_ids ... ok [INFO] [stdout] test tui::tests::command_stream_is_rendered_per_worker ... ok [INFO] [stdout] test tui::tests::active_worker_displays_current_state_label ... ok [INFO] [stdout] test tui::tests::backlog_rendering_is_priority_ordered ... ok [INFO] [stdout] test tui::tests::dashboard_panes_render_with_borders ... ok [INFO] [stdout] test tui::tests::quality_dimensions_ids_are_unique ... ok [INFO] [stdout] test tui::tests::dashboard_worker_labels_are_readable ... ok [INFO] [stdout] test tui::tests::quality_grading_screen_renders_header_and_activity ... ok [INFO] [stdout] test tui::tests::backlog_excludes_in_progress_tasks ... ok [INFO] [stdout] test tui::tests::quality_dimensions_has_nine_entries ... ok [INFO] [stdout] test tui::tests::quality_grading_screen_renders_empty_activity ... ok [INFO] [stdout] test tui::tests::report_scroll_is_noop_when_content_fits ... ok [INFO] [stdout] test quality_tree_walker::tests::generate_tree_diagram_real_repo_under_budget ... ok [INFO] [stdout] test tui::tests::does_not_render_human_problem_panel ... ok [INFO] [stdout] test tui::tests::quality_intro_screen_renders_header_and_dimensions ... ok [INFO] [stdout] test tui::tests::seeding_screen_renders_empty_activity ... ok [INFO] [stdout] test tui::tests::seeding_screen_renders_header_and_activity ... ok [INFO] [stdout] test tui::tests::seed_review_shows_refine_prompt ... ok [INFO] [stdout] test tui::tests::startup_headline_elapsed_time_updates_ellipsis_and_wraps_verbs ... ok [INFO] [stdout] test tui::tests::shutdown_screen_renders_success_and_error_variants ... ok [INFO] [stdout] test tui::tests::style_activity_line_handles_plain_line ... ok [INFO] [stdout] test tui::tests::style_activity_line_styles_agent_activity_command ... ok [INFO] [stdout] test tui::tests::triage_mode_renders_activity_and_artifact_cards ... ok [INFO] [stdout] test tui::tests::triage_stage_progress_comes_from_activity_stream ... ok [INFO] [stdout] test tui::tests::wizard_answers_includes_backlog_approval ... ok [INFO] [stdout] test tui::tests::wizard_backlog_a_key_selects_auto_seed_and_advances ... ok [INFO] [stdout] test tui::tests::wizard_backlog_arrow_keys_toggle ... ok [INFO] [stdout] test tui::tests::wizard_backlog_enter_advances_to_notes ... ok [INFO] [stdout] test tui::tests::startup_headline_stops_after_30_ticks ... ok [INFO] [stdout] test tui::tests::wizard_backlog_r_key_selects_review_and_advances ... ok [INFO] [stdout] test tui::tests::wizard_backlog_tab_then_enter_preserves_selection ... ok [INFO] [stdout] test tui::tests::wizard_backlog_uppercase_keys_select_and_advance ... ok [INFO] [stdout] test tui::tests::wizard_backlog_tab_toggles ... ok [INFO] [stdout] test tui::tests::wizard_docs_step_toggles_yes_no_and_advances ... ok [INFO] [stdout] test tui::tests::wizard_notes_step_edits_and_finishes ... ok [INFO] [stdout] test tui::tests::wizard_esc_finishes_at_any_step ... ok [INFO] [stdout] test tui::tests::wizard_parallelism_input_handles_digits_backspace_and_ctrl_guard ... ok [INFO] [stdout] test tui::tests::wizard_step_indicator_highlights_backlog_at_step_3 ... ok [INFO] [stdout] test tui::tests::wizard_step_labels_has_five_steps_with_backlog ... ok [INFO] [stdout] test tui::tests::wizard_step_progression_through_all_steps ... ok [INFO] [stdout] test tui::tests::wizard_unrelated_keys_on_backlog_step_ignored ... ok [INFO] [stdout] test tui::tests::wizard_validation_input_handles_editing ... ok [INFO] [stdout] test tui::tests::report_view_scrolls_when_content_exceeds_viewport ... ok [INFO] [stdout] test tui::tests::worker_command_stream_shows_most_recent_first ... ok [INFO] [stdout] test tui::tests::seed_review_renders_task_card_with_all_fields ... ok [INFO] [stdout] test tui::tests::worker_flow_chain_normalizes_case_and_whitespace_before_display ... ok [INFO] [stdout] test tui::tests::worker_flow_chain_handles_state_prefixes_for_early_states ... ok [INFO] [stdout] test tui::tests::seed_review_shows_round_and_discard_prompt ... ok [INFO] [stdout] test tui::tests::worker_flow_chain_shows_full_chain_for_understand_state ... ok [INFO] [stdout] test tui::tests::seed_review_renders_different_priorities ... ok [INFO] [stdout] test tui::tests::worker_flow_chain_treats_handoff_as_merging_state ... ok [INFO] [stdout] test tui::tests::worker_metrics_are_derived_from_states ... ok [INFO] [stdout] test tui::tests::worker_viewport_helpers_clamp_and_offset_selection ... ok [INFO] [stdout] test types::tests::worker_activity_state_as_str_covers_all_variants ... ok [INFO] [stdout] test tui::tests::work_now_card_freezes_spinner_after_startup ... ok [INFO] [stdout] test understand_phase::tests::classify_build_and_implement_as_feature_for_planning ... ok [INFO] [stdout] test tui::tests::wizard_rendering_covers_all_steps ... ok [INFO] [stdout] test types::tests::worker_state_as_str_covers_all_variants ... ok [INFO] [stdout] test types::tests::agent_kind_as_str_covers_all_variants ... ok [INFO] [stdout] test worker::evidence::tests::collect_handoff_evidence_bundle_persists_runnable_artifact ... ok [INFO] [stdout] test worker::merge_phase::tests::execute_merge_phase_blocks_merge_when_validation_command_fails ... ok [INFO] [stdout] test understand_phase::tests::parse_understand_output_falls_back_to_classifier_when_payload_invalid ... ok [INFO] [stdout] test worker::merge_phase::tests::teardown_after_completion_keeps_clean_repo_without_stash ... ok [INFO] [stdout] test worker::worker_doing::tests::parse_merge_open_pr_number_reads_manual_merge_tasks ... ok [INFO] [stdout] test worker::merge_phase::tests::teardown_after_completion_stashes_dirty_repo_before_main_sync ... ok [INFO] [stdout] test worker::worker_doing::tests::merged_pr_with_commits_ahead_stays_in_pr_flow ... ok [INFO] [stdout] test worker::worker_doing::tests::review_needs_changes_requires_rework_before_handoff ... ok [INFO] [stdout] test worker::worker_doing::tests::worker_executes_fsm_and_teardown_protocol ... ok [INFO] [stdout] test worker::worktree_naming::tests::sanitize_for_branch_strips_invalid_chars ... ok [INFO] [stdout] test worker::worktree_naming::tests::worktree_names_are_git_safe_for_namespaced_task_ids ... ok [INFO] [stdout] test worker::worktree_naming::tests::worktree_slug_for_task_is_stable_and_collision_resistant ... ok [INFO] [stdout] test worker_identity::tests::retry_and_restart_create_fresh_session_identity ... ok [INFO] [stdout] test worker_pool::tests::all_advertised_hotkeys_have_actions ... ok [INFO] [stdout] test worker_pool::tests::apply_pool_stream_event_updates_doing_worker_from_live_events ... ok [INFO] [stdout] test worker_pool::tests::execution_task_packet_includes_details_when_present ... ok [INFO] [stdout] test worker::worker_doing::tests::merged_pr_without_branch_diff_completes_task ... ok [INFO] [stdout] test worker_pool::tests::available_doing_slots_respects_in_flight_merge_budget ... ok [INFO] [stdout] test tui::tests::render_and_key_handling_cover_ui_branches ... ok [INFO] [stdout] test worker_pool::tests::hotkey_actions_match_default_and_operator_contracts ... ok [INFO] [stdout] test worker_pool::tests::report_hotkey_actions_cover_report_bindings ... ok [INFO] [stdout] test worker::worker_doing::tests::review_needs_changes_at_cap_is_parked ... ok [INFO] [stdout] test worker_pool::tests::handle_doing_non_complete_transition_parks_to_unresolved ... ok [INFO] [stdout] test worker_pool::tests::handle_merge_summary_rejects_false_complete_transition ... ok [INFO] [stdout] test worker_pool::tests::handle_doing_complete_transition_rejects_false_complete ... ok [INFO] [stdout] test tui::tests::workers_panel_uses_scrollable_viewport ... ok [INFO] [stdout] test worker_pool::tests::run_worker_pool_fsm_quits_on_q ... ok [INFO] [stdout] test worker_pool::tests::run_worker_pool_fsm_handles_v_and_b_with_report_draws ... ok [INFO] [stdout] test worker_pool::tests::run_worker_pool_fsm_skips_invalid_merge_pending_rows_in_same_cycle ... ok [INFO] [stdout] test worker_pool::tests::state_transition_guard_prevents_handoff_regression ... ok [INFO] [stdout] test worker_pool::tests::wait_for_quit_copies_error_on_copy_shortcut ... ok [INFO] [stdout] test worker_pool::tests::wait_for_quit_copies_error_on_copy_shortcut_uppercase ... ok [INFO] [stdout] test worker_pool::tests::wait_for_quit_copies_error_on_ctrl_c ... ok [INFO] [stdout] test worker_pool::tests::wait_for_quit_does_not_copy_error_on_other_key ... ok [INFO] [stdout] test worker_pool::tests::wait_for_quit_does_not_copy_without_target ... ok [INFO] [stdout] test worker_pool::tests::run_worker_pool_limits_worker_slots_to_target ... ok [INFO] [stdout] test worktree::tests::create_or_resume_cleans_empty_unregistered_path_before_creating ... ok [INFO] [stdout] test worktree::tests::create_or_resume_copies_repo_hooks_to_worktree ... ok [INFO] [stdout] test worker_pool::tests::run_worker_pool_fsm_handles_g_and_regenerates_report ... ok [INFO] [stdout] test worker_pool::tests::worker_execute_dispatch_includes_insert_awareness_metadata ... ok [INFO] [stdout] test worktree::tests::create_or_resume_fails_on_non_empty_unregistered_path ... ok [INFO] [stdout] test worktree::tests::create_or_resume_is_idempotent ... ok [INFO] [stdout] test worktree::tests::create_or_resume_reclaims_wrong_branch_worktree ... ok [INFO] [stdout] test worktree::tests::create_or_resume_reuses_existing_branch_if_create_fails ... ok [INFO] [stdout] test worktree::tests::prune_and_cleanup_paths_run ... ok [INFO] [stdout] test worktree_audit::live::tests::reconcile_worktrees_with_runner_reports_zero_fixed_when_prune_fails ... ok [INFO] [stdout] test worktree_audit::logic::tests::inspect_worktrees_counts_missing_paths_as_stale ... ok [INFO] [stdout] test worktree_audit::logic::tests::summarize_reconcile_leaves_stale_fixed_at_zero_when_prune_fails ... ok [INFO] [stdout] test worktree_audit::logic::tests::summarize_reconcile_reports_all_stale_paths_when_prune_succeeds ... ok [INFO] [stdout] test worktree::tests::create_or_resume_reclaims_detached_head_worktree ... ok [INFO] [stdout] test worktree::tests::create_or_resume_reuses_existing_branch_when_branch_exists_reference_check_succeeds ... ok [INFO] [stdout] test worker_pool::tests::run_worker_pool_fsm_claims_tasks_inserted_while_idle ... ok [INFO] [stdout] test worker_pool::tests::run_worker_pool_fsm_switches_between_dashboard_and_report_frames ... ok [INFO] [stdout] test friction_analysis::tests::extract_truncates_oversized_results ... ok [INFO] [stdout] test worker_pool::tests::run_worker_pool_fsm_ignores_operator_hotkeys_by_default ... ok [INFO] [stdout] test worker::merge_phase::tests::execute_merge_phase_completes_when_post_merge_validation_fails_after_merge ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 593 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.87s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/gardener-e9c34cea3ccba979) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test otel_logs_cmd::tests::parse_invalid_time_bound_is_rejected ... ok [INFO] [stdout] test otel_logs_cmd::tests::resolve_log_path_defaults_to_expected_path ... ok [INFO] [stderr] Running tests/adapter_integration.rs (/opt/rustwide/target/debug/deps/adapter_integration-a74f1e47edb15fba) [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 34 tests [INFO] [stdout] test phase05_agent_adapters::discovery_assessment_unknown_has_f_grade ... ok [INFO] [stdout] test phase05_agent_adapters::claude_turn_failed_returns_failure ... ok [INFO] [stdout] test phase05_agent_adapters::claude_happy_path_returns_success ... ok [INFO] [stdout] test phase05_agent_adapters::discovery_no_envelope_returns_error ... ok [INFO] [stdout] test phase05_agent_adapters::codex_happy_path_returns_success ... ok [INFO] [stdout] test phase05_agent_adapters::codex_error_event_returns_failure ... ok [INFO] [stdout] test phase05_agent_adapters::codex_turn_failed_detected_before_completed_scan ... ok [INFO] [stdout] test phase05_agent_adapters::discovery_nonzero_exit_code_returns_error ... ok [INFO] [stdout] test phase05_agent_adapters::claude_malformed_lines_are_skipped_not_fatal ... ok [INFO] [stdout] test phase05_agent_adapters::discovery_wrong_state_returns_error ... ok [INFO] [stdout] test phase05_agent_adapters::discovery_valid_envelope_parsed ... ok [INFO] [stdout] test phase09_adapter_edge_cases::claude_multiple_result_events_take_last_result ... ok [INFO] [stdout] test phase09_adapter_edge_cases::claude_empty_stdout_exit_zero_is_error ... ok [INFO] [stdout] test phase09_adapter_edge_cases::claude_nonzero_exit_without_result_event_is_process_error ... ok [INFO] [stdout] test phase09_adapter_edge_cases::claude_result_without_subtype_is_failure ... ok [INFO] [stdout] test phase09_adapter_edge_cases::claude_multi_content_block_produces_multiple_turn_started_events ... ok [INFO] [stdout] test phase09_adapter_edge_cases::claude_result_without_result_field_returns_null_payload ... ok [INFO] [stdout] test phase09_adapter_edge_cases::claude_non_json_stdout_is_ignored ... ok [INFO] [stdout] test phase09_adapter_edge_cases::claude_unknown_event_type_in_output_is_protocol_violation ... ok [INFO] [stdout] test phase09_adapter_edge_cases::claude_stderr_does_not_affect_success ... ok [INFO] [stdout] test phase09_adapter_edge_cases::claude_unknown_subtype_is_failure ... ok [INFO] [stdout] test phase09_adapter_edge_cases::codex_both_failed_and_completed_prefers_first_failed_event ... ok [INFO] [stdout] test phase09_adapter_edge_cases::codex_empty_stdout_exit_zero_is_error ... ok [INFO] [stdout] test phase09_adapter_edge_cases::codex_completed_before_failed_still_reports_failure ... ok [INFO] [stdout] test phase09_adapter_edge_cases::discovery_end_marker_before_start_marker_is_rejected ... ok [INFO] [stdout] test phase09_adapter_edge_cases::codex_unknown_event_is_retained_in_event_stream ... ok [INFO] [stdout] test phase09_adapter_edge_cases::codex_unknown_event_type_in_output_is_protocol_violation ... ok [INFO] [stdout] test phase09_adapter_edge_cases::codex_error_event_is_treated_as_protocol_violation ... ok [INFO] [stdout] test phase09_adapter_edge_cases::codex_multiple_turn_completed_takes_last_event ... ok [INFO] [stdout] test phase09_adapter_edge_cases::discovery_envelope_missing_gardener_output_is_structurally_invalid ... ok [INFO] [stdout] test phase09_adapter_edge_cases::discovery_payload_parse_shape_is_not_validated_by_parse_last_envelope ... ok [INFO] [stdout] test phase09_adapter_edge_cases::discovery_envelope_with_invalid_json_fails_parse ... ok [INFO] [stdout] test phase09_adapter_edge_cases::discovery_multiple_envelopes_uses_last_one ... ok [INFO] [stdout] test phase09_adapter_edge_cases::discovery_schema_version_2_rejected ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 34 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Running tests/cli_integration.rs (/opt/rustwide/target/debug/deps/cli_integration-5d30ff6bbd4d7cc0) [INFO] [stdout] [INFO] [stdout] running 32 tests [INFO] [stdout] test backlog_db_cli::add_rejects_invalid_kind ... ok [INFO] [stdout] test backlog_db_cli::add_creates_manual_row ... ok [INFO] [stdout] test backlog_db_cli::add_requires_title_and_details ... ok [INFO] [stdout] test backlog_db_cli::add_rejects_invalid_status ... ok [INFO] [stdout] test backlog_db_cli::add_respects_custom_id ... ok [INFO] [stdout] test backlog_db_cli::add_rejects_invalid_priority ... ok [INFO] [stdout] test backlog_db_cli::runbook_prints_markdown ... ok [INFO] [stdout] test backlog_db_cli::list_shows_recent_rows ... ok [INFO] [stdout] test cli_smoke::documented_termination_flags_are_listed_in_help ... ok [INFO] [stdout] test cli_smoke::invalid_config_path_exits_nonzero ... ok [INFO] [stdout] test cli_smoke::help_lists_phase1_flags ... ok [INFO] [stdout] test backlog_db_cli::retire_clears_existing_lease_without_explicit_flag ... ok [INFO] [stdout] test cli_smoke::prune_only_with_scoped_working_dir_succeeds ... ok [INFO] [stdout] test cli_smoke::prune_only_smoke_succeeds ... ok [INFO] [stdout] test backlog_db_cli::update_clear_lease_removes_owner ... ok [INFO] [stdout] test cli_smoke::seed_backlog_invalid_config_path_exits_nonzero ... ok [INFO] [stdout] test backlog_db_cli::retire_sets_final_status ... ok [INFO] [stdout] test backlog_db_cli::update_json_returns_before_and_after ... ok [INFO] [stdout] test command_drift_linter::linter_agent_facing_commands_match_current_cli ... ok [INFO] [stdout] test otel_log_query::filter_run_id_spans_rotation_boundary ... ok [INFO] [stdout] test command_drift_linter::linter_includes_root_readme_commands ... ok [INFO] [stdout] test otel_log_query::filter_tail_returns_last_matches_in_chronological_order ... ok [INFO] [stdout] test backlog_db_cli::update_dry_run_does_not_persist_changes ... ok [INFO] [stdout] test otel_log_query::filter_max_limits_output ... ok [INFO] [stdout] test otel_log_query::index_empty_directory_prints_header_only ... ok [INFO] [stdout] test otel_log_query::run_trace_identifies_files_spanned_and_errors ... ok [INFO] [stdout] test otel_log_query::index_json_mode_outputs_valid_json ... ok [INFO] [stdout] test otel_log_query::index_lists_metadata_for_rotated_files ... ok [INFO] [stdout] test otel_log_query::run_trace_missing_run_exits_1 ... ok [INFO] [stdout] test backlog_db_cli::show_json_returns_task ... ok [INFO] [stdout] test cli_smoke::sync_only_exports_snapshot_and_exits_zero ... ok [INFO] [stderr] Running tests/docs_integration.rs (/opt/rustwide/target/debug/deps/docs_integration-f1ccd4a777f9a8b8) [INFO] [stdout] test cli_smoke::quit_after_smoke_succeeds ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 32 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.33s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 18 tests [INFO] [stdout] test agent_doc_integrity_linter::parses_inline_code_references ... ok [INFO] [stdout] test agent_doc_integrity_linter::agent_doc_paths_includes_runbooks_and_cookbooks ... ok [INFO] [stdout] test agent_doc_integrity_linter::filters_non_targets_from_command_line_fragments ... ok [INFO] [stdout] test agent_doc_integrity_linter::parses_markdown_links_from_agent_docs ... ok [INFO] [stdout] test docs_readme::docs_readme_documents_scripts_fixture_start_point ... ok [INFO] [stdout] test docs_readme::backlog_paths_are_documented_consistently_across_runbooks ... ok [INFO] [stdout] test docs_readme::docs_readme_documents_test_domain_start_point ... ok [INFO] [stdout] test docs_readme::agent_bootstrap_runbook_has_required_sections ... ok [INFO] [stdout] test docs_readme::docs_readme_links_agent_bootstrap_runbook ... ok [INFO] [stdout] test docs_readme::docs_readme_uses_stable_worktree_link_target ... ok [INFO] [stdout] test docs_readme::docs_readme_links_runtime_failure_triage_cookbook ... ok [INFO] [stdout] test docs_readme::docs_readme_disallows_ephemeral_plan_links ... ok [INFO] [stdout] test docs_readme::startup_artifact_map_runbook_has_steering_focus ... ok [INFO] [stdout] test root_claude_redirect::claude_md_redirects_to_agents_md ... ok [INFO] [stdout] test validation_pipeline_docs::coverage_ignore_manifest_is_implemented ... ok [INFO] [stdout] test gitignore_contract::gitignore_covers_runtime_leftovers ... ok [INFO] [stdout] test agent_doc_integrity_linter::linter_agent_docs_have_valid_links_and_command_targets ... ok [INFO] [stderr] Running tests/hotkey_integration.rs (/opt/rustwide/target/debug/deps/hotkey_integration-f58d2cc7d542ecc0) [INFO] [stdout] test validation_pipeline_docs::validation_pipeline_docs_match_live_validation_hook ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 17 tests [INFO] [stdout] test hotkey_lint::linter_hotkeys_advertised_in_ui_must_have_behavior ... ok [INFO] [stdout] test phase07_hotkeys::all_dashboard_bindings_have_matching_action ... ok [INFO] [stdout] test phase07_hotkeys::all_standard_bindings_resolved ... ok [INFO] [stdout] test hotkey_lint::linter_operator_hotkeys_are_hidden_by_default_but_supported_when_enabled ... ok [INFO] [stdout] test phase07_hotkeys::dashboard_controls_legend_includes_all_keys ... ok [INFO] [stdout] test phase07_hotkeys::dashboard_controls_legend_with_operator_includes_operator_keys ... ok [INFO] [stdout] test phase07_hotkeys::back_action_available_always ... ok [INFO] [stdout] test phase07_hotkeys::all_operator_bindings_have_matching_action ... ok [INFO] [stdout] test phase07_hotkeys::operator_keys_gated_without_flag ... ok [INFO] [stdout] test phase11_hotkey_edge_cases::operator_hotkey_mapping_unchanged ... ok [INFO] [stdout] test phase07_hotkeys::operator_keys_enabled_with_flag ... ok [INFO] [stdout] test phase11_hotkey_edge_cases::operator_hotkeys_env_var_truthy_variants ... ok [INFO] [stdout] test phase07_hotkeys::unknown_key_returns_none ... ok [INFO] [stdout] test phase07_hotkeys::report_controls_legend_includes_back_and_regenerate ... ok [INFO] [stdout] test phase11_hotkey_edge_cases::unknown_hotkey_does_not_corrupt_known_actions ... ok [INFO] [stdout] test phase11_hotkey_edge_cases::quit_after_zero_shows_shutdown_screen ... ok [INFO] [stdout] test phase11_hotkey_edge_cases::escalate_creates_task_even_with_zero_active_workers ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s [INFO] [stdout] [INFO] [stderr] Running tests/lint_integration.rs (/opt/rustwide/target/debug/deps/lint_integration-648c92e06d3d8805) [INFO] [stdout] [INFO] [stdout] running 38 tests [INFO] [stdout] test clippy_identity_op::check_no_warnings_script_enforces_redundant_static_lifetimes_lint ... ok [INFO] [stdout] test clippy_identity_op::check_no_warnings_script_enforces_if_same_then_else_lint ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enables_if_same_then_else_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enables_manual_unwrap_or_warn ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enables_needless_borrowed_reference_warn ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enables_needless_question_mark_warn ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enables_needless_option_as_deref_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enables_unnecessary_to_owned_warn ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enables_unnecessary_lazy_evaluations_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enables_needless_update_warn ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_manual_filter_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_expect_used_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_identity_op_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_manual_clamp_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_manual_find_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_manual_map_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_manual_range_contains_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_manual_retain_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_manual_memcpy_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_manual_strip_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_manual_flatten_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_manual_ok_or_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_same_functions_in_if_condition_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_redundant_static_lifetimes_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_unnecessary_sort_by_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_needless_late_init_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_manual_non_exhaustive_deny ... ok [INFO] [stdout] test clippy_identity_op::workspace_clippy_lint_configuration_enforces_manual_try_fold_deny ... ok [INFO] [stdout] test quality_dimension_linter::extract_tui_dimensions_finds_nine ... ok [INFO] [stdout] test quality_dimension_linter::quality_dimensions_match_runner_and_tui ... ok [INFO] [stdout] test instrumentation_lint::linter_instrumentation_coverage_by_file ... ok [INFO] [stdout] test quality_dimension_linter::extract_runner_dimensions_finds_nine ... ok [INFO] [stdout] test worker_log_payload_linter::worker_log_payloads_include_worker_id ... ok [INFO] [stdout] test instrumentation_lint::linter_run_triage_with_tty_must_be_ignored ... ok [INFO] [stdout] test instrumentation_lint::linter_e2e_binary_spawn_requires_log_isolation ... ok [INFO] [stdout] test testability_boundary_lint::manifest_is_fail_closed_for_in_scope_files ... ok [INFO] [stdout] test testability_boundary_lint::manifest_entries_are_well_formed_and_in_scope ... ok [INFO] [stdout] test testability_boundary_lint::unit_core_files_do_not_depend_on_boundary_side_effects ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s [INFO] [stdout] [INFO] [stderr] Running tests/runtime_integration.rs (/opt/rustwide/target/debug/deps/runtime_integration-4815fd447ebe55fa) [INFO] [stdout] [INFO] [stdout] running 25 tests [INFO] [stdout] test phase04_scheduler::scheduler_mode_completes_target ... ignored [INFO] [stdout] test phase1_contracts::agent_kind_helpers ... ok [INFO] [stdout] test phase1_contracts::cli_agent_from_impl_covers_both_variants ... ok [INFO] [stdout] test phase1_contracts::cli_help_contract ... ok [INFO] [stdout] test phase1_contracts::non_interactive_detection_contract ... ok [INFO] [stdout] test phase1_contracts::output_envelope_error_contracts ... ok [INFO] [stdout] test phase1_contracts::output_envelope_contract ... ok [INFO] [stdout] test phase1_contracts::config_covers_prompts_without_budget_and_state_backend_present_validation_loop ... ok [INFO] [stdout] test phase1_contracts::config_precedence_and_resolution_contracts ... ok [INFO] [stdout] test phase1_contracts::config_exhaustive_overrides_and_validation_paths ... ok [INFO] [stdout] test phase1_contracts::run_with_runtime_backlog_only_failure_triggers_startup_diagnostics_capture ... ok [INFO] [stdout] test phase1_contracts::runtime_extra_branch_coverage ... ok [INFO] [stdout] test phase1_contracts::runtime_fake_contracts ... ok [INFO] [stdout] test phase1_contracts::run_with_runtime_validate_flag_runs_configured_validation_command ... ok [INFO] [stdout] test phase1_contracts::parse_worker_count_alias_emits_deprecation_warning ... ok [INFO] [stdout] test phase1_contracts::working_dir_resolution_contract ... ok [INFO] [stdout] test phase1_contracts::default_config_is_discovered_from_repo_root_or_cwd ... ok [INFO] [stdout] test phase1_contracts::run_with_runtime_validate_ignores_quality_report_freshness ... ok [INFO] [stdout] test worktree_audit_live::reconcile_worktrees_in_returns_default_for_non_repo_directory ... ok [INFO] [stdout] frame [INFO] [stdout] test phase1_contracts::runtime_production_contracts ... ok [INFO] [stdout] test phase1_contracts::binary_help_and_prune_smoke ... ok [INFO] [stdout] test phase1_contracts::run_with_runtime_propagates_write_and_config_errors ... ok [INFO] [stdout] test worktree_audit_live::reconcile_worktrees_in_leaves_clean_repo_unchanged ... ok [INFO] [stdout] test worktree_audit_live::reconcile_worktrees_in_prunes_missing_worktree_paths_in_real_repo ... ok [INFO] [stderr] Running tests/script_integration.rs (/opt/rustwide/target/debug/deps/script_integration-9af0c0d37d45035e) [INFO] [stdout] test phase1_contracts::run_with_runtime_paths_and_errors ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 24 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.26s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test binary_blob_guard::rejects_runtime_artifacts_by_name ... ok [INFO] [stdout] test watch_otel_logs_script::watch_otel_logs_smoke_mode_stops_after_configured_refreshes ... ok [INFO] [stdout] test binary_blob_guard::allows_text_file_arguments ... ok [INFO] [stdout] test binary_blob_guard::rejects_binary_file_arguments ... ok [INFO] [stdout] test backlog_db_script::backlog_db_runbook_command_prints_markdown ... ok [INFO] [stdout] test backlog_db_script::backlog_db_help_shows_default_db_path ... ok [INFO] [stdout] test backlog_db_script::backlog_db_help_includes_runbook_command ... ok [INFO] [stdout] test watch_otel_logs_script::watch_otel_logs_smoke_defaults_invalid_env_values ... ok [INFO] [stderr] Running tests/triage_integration.rs (/opt/rustwide/target/debug/deps/triage_integration-92dcd69de4846ca6) [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.02s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 27 tests [INFO] [stdout] test phase02b_triage::triage_writes_profile_and_triage_needed_logic ... ignored [INFO] [stdout] test phase02b_triage::agent_detection_classifies_fixture_variants ... ok [INFO] [stdout] test phase02b_triage::non_interactive_signals_are_detected ... ok [INFO] [stdout] test phase02b_triage::discovery_prompt_includes_scope_details ... ok [INFO] [stdout] test phase08_triage_integration::discovery_wrong_state_returns_error ... ok [INFO] [stdout] test phase08_triage_integration::discovery_no_envelope_returns_error ... ok [INFO] [stdout] test phase08_triage_integration::non_interactive_detected_in_ci ... ok [INFO] [stdout] test phase08_triage_integration::non_interactive_detected_without_tty ... ok [INFO] [stdout] test phase08_triage_integration::triage_needed_when_force_retriage ... ok [INFO] [stdout] test phase08_triage_integration::ensure_profile_uses_stale_profile_in_non_interactive_mode ... ok [INFO] [stdout] test phase08_triage_integration::ensure_profile_still_blocks_non_interactive_when_profile_missing ... ok [INFO] [stdout] test phase08_triage_integration::triage_needed_when_profile_missing ... ok [INFO] [stdout] test phase08_triage_integration::discovery_valid_envelope_parsed_directly ... ok [INFO] [stdout] test phase08_triage_integration::discovery_assessment_unknown_has_f_grade ... ok [INFO] [stdout] test phase10_triage_error_paths::detect_agent_both_signals_defaults_to_codex ... ok [INFO] [stdout] test phase10_triage_error_paths::profile_with_schema_version_99_is_silently_accepted ... ok [INFO] [stdout] test phase10_triage_error_paths::run_discovery_process_error_can_be_fallback_to_unknown ... ok [INFO] [stdout] test phase10_triage_error_paths::run_discovery_invalid_json_falls_back_to_unknown ... ok [INFO] [stdout] test phase03_startup::startup_hard_stops_when_profile_missing ... ok [INFO] [stdout] test phase10_triage_error_paths::run_discovery_missing_gardener_output_falls_back_to_unknown ... ok [INFO] [stdout] test phase10_triage_error_paths::unknown_sha_written_to_profile_after_git_failure ... ignored [INFO] [stdout] test phase08_triage_integration::interactive_detected_with_tty_no_ci ... ok [INFO] [stdout] test phase10_triage_error_paths::triage_needed_commits_since_failure_defaults_not_stale ... ok [INFO] [stdout] test phase10_triage_error_paths::triage_needed_unknown_sha_profile_is_never_retriggered ... ok [INFO] [stdout] test phase10_triage_error_paths::triage_needed_git_revparse_failure_uses_unknown_sha ... ok [INFO] [stdout] test phase10_triage_error_paths::discovery_lost_when_interview_write_line_fails ... ok [INFO] [stdout] test phase03_startup::startup_quality_only_writes_quality_doc_when_profile_exists ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 25 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.10s [INFO] [stdout] [INFO] [stderr] Running tests/tui_integration.rs (/opt/rustwide/target/debug/deps/tui_integration-fe5c10108533f8f8) [INFO] [stdout] [INFO] [stdout] running 24 tests [INFO] [stdout] test phase06_tui_rendering::dashboard_skips_human_problems_panel ... ok [INFO] [stdout] test phase06_tui_rendering::dashboard_keeps_three_workers_visible_with_backlog ... ok [INFO] [stdout] test phase06_tui_rendering::dashboard_keeps_three_workers_visible_in_short_viewports_without_backlog ... ok [INFO] [stdout] test phase06_tui_rendering::shutdown_screen_captures_title_and_message ... ok [INFO] [stdout] test phase06_tui_rendering::dashboard_backlog_priority_badges ... ok [INFO] [stdout] test phase06_tui_rendering::triage_layout_collapses_when_narrow_and_expands_when_wide ... ok [INFO] [stdout] test phase06_tui_rendering::triage_render_includes_artifacts ... ok [INFO] [stdout] test phase06_tui_rendering::dashboard_header_shows_queue_stats ... ok [INFO] [stdout] test phase06_tui_rendering::report_screen_via_fake_terminal ... ok [INFO] [stdout] test phase06_tui_rendering::triage_screen_renders_activity ... ok [INFO] [stdout] test phase06_tui_rendering::dashboard_empty_backlog_renders_without_panic ... ok [INFO] [stdout] test phase12_render_edge_cases::fake_filesystem_exists_does_not_see_directories ... ok [INFO] [stdout] test phase12_render_edge_cases::fake_terminal_draw_shutdown_does_not_produce_drawn_frame ... ok [INFO] [stdout] test phase06_tui_rendering::flow_chain_renders_for_early_states ... ok [INFO] [stdout] test phase06_tui_rendering::dashboard_allocates_more_worker_rows_with_wider_viewport ... ok [INFO] [stdout] test phase12_render_edge_cases::render_dashboard_zero_width_zero_height ... ok [INFO] [stdout] test phase12_render_edge_cases::render_triage_empty_activity_no_panic ... ok [INFO] [stdout] test tui_harness_test::non_tty_fallback_line_is_stable_in_harness ... ok [INFO] [stdout] test tui_harness_test::fake_terminal_captures_tui_frames_and_interactions ... ok [INFO] [stdout] test phase12_render_edge_cases::render_dashboard_width_1_height_1 ... ok [INFO] [stdout] test phase12_render_edge_cases::render_report_view_empty_report ... ok [INFO] [stdout] test phase12_render_edge_cases::render_dashboard_many_workers_small_viewport ... ok [INFO] [stdout] test phase12_render_edge_cases::render_report_view_very_long_content_truncated ... ok [INFO] [stdout] test phase06_tui_rendering::dashboard_worker_states_all_render ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s [INFO] [stdout] [INFO] [stderr] Running tests/tui_live_integration.rs (/opt/rustwide/target/debug/deps/tui_live_integration-e21d59791dc8b4f1) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test hotkey_pty_e2e::pty_e2e_ctrl_c_interrupts_live_blocking_turn ... ignored [INFO] [stdout] test hotkey_pty_e2e::pty_e2e_ctrl_c_quits ... ignored [INFO] [stdout] test hotkey_pty_e2e::pty_e2e_hotkeys_v_g_b_q_drive_screen_transitions ... ignored [INFO] [stdout] test hotkey_pty_e2e::pty_e2e_operator_hotkeys_emit_feedback_and_create_escalation_task ... ignored [INFO] [stdout] test hotkey_pty_e2e::pty_e2e_q_interrupts_live_blocking_turn ... ignored [INFO] [stdout] [?1049h[?25l[?1049l[?25h[?1049h[?25l[?1049l[?25h[?1049h[?25l[?1049l[?25h[?1049h[?25l[?1049l[?25h[?1049h[?25l[?1049l[?25h[?1049h[?25l[?1049l[?25h[?1049h[?25l[?1049l[?25htest tui_live_smoke::live_tui_wrappers_run_under_a_pseudo_terminal ... ok [INFO] [stdout] test tui_live_smoke::live_tui_wizards_run_under_a_pseudo_terminal ... ok [INFO] [stderr] Doc-tests gardener [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 1.52s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "eab244dee6e76ce303f2a75ffe9aa0c818ab0b39d4fcc6609de9dc33319146a1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "eab244dee6e76ce303f2a75ffe9aa0c818ab0b39d4fcc6609de9dc33319146a1", kill_on_drop: false }` [INFO] [stdout] eab244dee6e76ce303f2a75ffe9aa0c818ab0b39d4fcc6609de9dc33319146a1