[INFO] cloning repository https://github.com/haowjy/mars-agents [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/haowjy/mars-agents" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhaowjy%2Fmars-agents", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhaowjy%2Fmars-agents'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 6c6936dbb1748dc86a084314f218176e81c838ce [INFO] testing haowjy/mars-agents against beta-2026-04-21 for beta-1.96-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhaowjy%2Fmars-agents" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/haowjy/mars-agents [INFO] finished tweaking git repo https://github.com/haowjy/mars-agents [INFO] tweaked toml for git repo https://github.com/haowjy/mars-agents written to /workspace/builds/worker-7-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/haowjy/mars-agents on toolchain beta-2026-04-21 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/haowjy/mars-agents already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] dbe64fe536141faa248a30d0a9869bc74efbde636d20ab2cf49493904f75d05d [INFO] running `Command { std: "docker" "start" "-a" "dbe64fe536141faa248a30d0a9869bc74efbde636d20ab2cf49493904f75d05d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "dbe64fe536141faa248a30d0a9869bc74efbde636d20ab2cf49493904f75d05d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "dbe64fe536141faa248a30d0a9869bc74efbde636d20ab2cf49493904f75d05d", kill_on_drop: false }` [INFO] [stdout] dbe64fe536141faa248a30d0a9869bc74efbde636d20ab2cf49493904f75d05d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 2839d32b12be7af640708da8a938b627bc636d435400397692bb80873120cd58 [INFO] running `Command { std: "docker" "start" "-a" "2839d32b12be7af640708da8a938b627bc636d435400397692bb80873120cd58", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.184 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling itoa v1.0.18 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling cc v1.2.58 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling colorchoice v1.0.5 [INFO] [stderr] Compiling simd-adler32 v0.3.9 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Compiling indexmap v2.13.1 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling utf8-zero v0.8.1 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling semver v1.0.27 [INFO] [stderr] Compiling dunce v1.0.5 [INFO] [stderr] Compiling pathdiff v0.2.3 [INFO] [stderr] Compiling webpki-roots v1.0.6 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling ureq-proto v0.6.0 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling filetime v0.2.27 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling dirs v6.0.0 [INFO] [stderr] Compiling xattr v1.6.1 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling which v7.0.3 [INFO] [stderr] Compiling tar v0.4.45 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling rustls-webpki v0.103.10 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling serde_yaml v0.9.34+deprecated [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling ureq v3.3.0 [INFO] [stderr] Compiling mars-agents v0.1.16 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 47.19s [INFO] running `Command { std: "docker" "inspect" "2839d32b12be7af640708da8a938b627bc636d435400397692bb80873120cd58", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2839d32b12be7af640708da8a938b627bc636d435400397692bb80873120cd58", kill_on_drop: false }` [INFO] [stdout] 2839d32b12be7af640708da8a938b627bc636d435400397692bb80873120cd58 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 1c9efc82b67caedab0afffbc7c73e29a8b4c095996027a6b8c77e837dcf61561 [INFO] running `Command { std: "docker" "start" "-a" "1c9efc82b67caedab0afffbc7c73e29a8b4c095996027a6b8c77e837dcf61561", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling value-bag v1.12.0 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling futures-io v0.3.32 [INFO] [stderr] Compiling concurrent-queue v2.5.0 [INFO] [stderr] Compiling dirs-sys-next v0.1.2 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling async-io v2.6.0 [INFO] [stderr] Compiling crunchy v0.2.4 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling litemap v0.8.2 [INFO] [stderr] Compiling writeable v0.6.3 [INFO] [stderr] Compiling event-listener v5.4.1 [INFO] [stderr] Compiling futures-lite v2.6.1 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling dirs-next v2.0.0 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling async-task v4.7.1 [INFO] [stderr] Compiling siphasher v1.0.2 [INFO] [stderr] Compiling icu_properties_data v2.2.0 [INFO] [stderr] Compiling icu_normalizer_data v2.2.0 [INFO] [stderr] Compiling tiny-keccak v2.0.2 [INFO] [stderr] Compiling event-listener-strategy v0.5.4 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling phf_shared v0.11.3 [INFO] [stderr] Compiling async-channel v2.5.0 [INFO] [stderr] Compiling term v0.7.0 [INFO] [stderr] Compiling indexmap v2.13.1 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling new_debug_unreachable v1.0.6 [INFO] [stderr] Compiling precomputed-hash v0.1.1 [INFO] [stderr] Compiling fixedbitset v0.4.2 [INFO] [stderr] Compiling bit-vec v0.6.3 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling string_cache v0.8.9 [INFO] [stderr] Compiling bit-set v0.5.3 [INFO] [stderr] Compiling itertools v0.11.0 [INFO] [stderr] Compiling ena v0.14.4 [INFO] [stderr] Compiling piper v0.2.5 [INFO] [stderr] Compiling async-lock v3.4.2 [INFO] [stderr] Compiling ascii-canvas v3.0.0 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling pico-args v0.5.0 [INFO] [stderr] Compiling unicode-xid v0.2.6 [INFO] [stderr] Compiling async-executor v1.14.0 [INFO] [stderr] Compiling blocking v1.6.2 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling event-listener v2.5.3 [INFO] [stderr] Compiling predicates-core v1.0.10 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Compiling async-channel v1.9.0 [INFO] [stderr] Compiling ureq-proto v0.6.0 [INFO] [stderr] Compiling http v0.2.12 [INFO] [stderr] Compiling float-cmp v0.10.0 [INFO] [stderr] Compiling kv-log-macro v1.0.7 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling petgraph v0.6.5 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling doc-comment v0.3.4 [INFO] [stderr] Compiling predicates-tree v1.0.13 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling http-body v0.4.6 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling socket2 v0.5.10 [INFO] [stderr] Compiling sdd v3.0.10 [INFO] [stderr] Compiling assert_cmd v2.2.0 [INFO] [stderr] Compiling lalrpop-util v0.20.2 [INFO] [stderr] Compiling scc v2.4.0 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling base64 v0.21.7 [INFO] [stderr] Compiling levenshtein v1.0.5 [INFO] [stderr] Compiling async-attributes v1.1.2 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling zerovec-derive v0.11.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling lalrpop v0.20.2 [INFO] [stderr] Compiling predicates v3.1.4 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling serial_test_derive v3.4.0 [INFO] [stderr] Compiling tokio v1.51.0 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling globset v0.4.18 [INFO] [stderr] Compiling zerofrom v0.1.7 [INFO] [stderr] Compiling ureq v3.3.0 [INFO] [stderr] Compiling polling v3.11.0 [INFO] [stderr] Compiling xattr v1.6.1 [INFO] [stderr] Compiling yoke v0.8.2 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling tar v0.4.45 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling ignore v0.4.25 [INFO] [stderr] Compiling which v7.0.3 [INFO] [stderr] Compiling async-signal v0.2.13 [INFO] [stderr] Compiling async-global-executor v2.4.1 [INFO] [stderr] Compiling async-process v2.5.0 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling async-std v1.13.2 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling globwalk v0.9.1 [INFO] [stderr] Compiling assert_fs v1.1.3 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling serial_test v3.4.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling serde_yaml v0.9.34+deprecated [INFO] [stderr] Compiling assert-json-diff v2.0.2 [INFO] [stderr] Compiling serde_regex v1.1.0 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling hyper v0.14.32 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling async-object-pool v0.1.5 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling mars-agents v0.1.16 (/opt/rustwide/workdir) [INFO] [stderr] Compiling basic-cookies v0.1.5 [INFO] [stderr] Compiling httpmock v0.7.0 [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 46s [INFO] running `Command { std: "docker" "inspect" "1c9efc82b67caedab0afffbc7c73e29a8b4c095996027a6b8c77e837dcf61561", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1c9efc82b67caedab0afffbc7c73e29a8b4c095996027a6b8c77e837dcf61561", kill_on_drop: false }` [INFO] [stdout] 1c9efc82b67caedab0afffbc7c73e29a8b4c095996027a6b8c77e837dcf61561 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] a7853a38b0fda1970ee4b3e1f6a2484e6949998abc8fc5ab10b654c7a3893a76 [INFO] running `Command { std: "docker" "start" "-a" "a7853a38b0fda1970ee4b3e1f6a2484e6949998abc8fc5ab10b654c7a3893a76", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.43s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/mars_agents-dd67ad6fe9779832) [INFO] [stdout] [INFO] [stdout] running 630 tests [INFO] [stdout] test cli::add::tests::conflicting_subpath_is_rejected ... ok [INFO] [stdout] test cli::add::tests::format_filter_only_modes ... ok [INFO] [stdout] test cli::add::tests::format_filter_all ... ok [INFO] [stdout] test cli::add::tests::format_filter_lists ... ok [INFO] [stdout] test cli::add::tests::detects_filter_change_for_message ... ok [INFO] [stdout] test cli::add::tests::parse_explicit_subpath_merges_when_source_has_none ... ok [INFO] [stdout] test cli::add::tests::parse_full_url ... ok [INFO] [stdout] test cli::add::tests::parse_github_shorthand ... ok [INFO] [stdout] test cli::add::tests::parse_https_url ... ok [INFO] [stdout] test cli::add::tests::parse_local_path_parent ... ok [INFO] [stdout] test cli::add::tests::parse_local_path_absolute ... ok [INFO] [stdout] test cli::add::tests::parse_github_shorthand_with_version ... ok [INFO] [stdout] test cli::add::tests::parse_ssh_url ... ok [INFO] [stdout] test cli::add::tests::parse_ssh_url_keeps_at_suffix_in_path ... ok [INFO] [stdout] test cli::cache::tests::remove_dir_contents_nonexistent_ok ... ok [INFO] [stdout] test cli::add::tests::parse_local_path_relative ... ok [INFO] [stdout] test cli::add::tests::parse_source_embedded_subpath ... ok [INFO] [stdout] test cli::cache::tests::dir_size_nonexistent ... ok [INFO] [stdout] test cli::cache::tests::dir_size_with_files ... ok [INFO] [stdout] test cli::check::tests::check_accepts_flat_skill_repo ... ok [INFO] [stdout] test cli::check::tests::check_skips_symlinked_agent ... ok [INFO] [stdout] test cli::check::tests::check_skips_symlinked_skill ... ok [INFO] [stdout] test cli::check::tests::check_suppresses_warning_for_dependency_provided_skill ... ok [INFO] [stdout] test cli::cache::tests::remove_dir_contents_clears_files ... ok [INFO] [stdout] test cli::check::tests::check_warns_for_truly_missing_external_skill ... ok [INFO] [stdout] test cli::cache::tests::dir_size_empty ... ok [INFO] [stdout] test cli::init::tests::validate_target_accepts_simple_names ... ok [INFO] [stdout] test cli::init::tests::validate_target_rejects_empty ... ok [INFO] [stdout] test cli::link::tests::normalize_strips_trailing_slash ... ok [INFO] [stdout] test cli::models::tests::list_args_parses_no_refresh_models ... ok [INFO] [stdout] test cli::doctor::tests::check_target_divergence_warns_for_missing_and_modified_items ... ok [INFO] [stdout] test cli::models::tests::list_no_refresh_without_cache_is_non_zero ... ok [INFO] [stdout] test cli::models::tests::resolve_no_refresh_without_cache_is_non_zero ... ok [INFO] [stdout] test cli::doctor::tests::check_target_divergence_checks_every_managed_target ... ok [INFO] [stdout] test cli::models::tests::resolve_alias_args_parses_no_refresh_models ... ok [INFO] [stdout] test cli::list::tests::read_name_description_uses_provided_fallback_name ... ok [INFO] [stdout] test cli::tests::detect_managed_root_falls_through_on_missing_config ... ok [INFO] [stdout] test cli::sync::tests::parses_no_upgrade_hint ... ok [INFO] [stdout] test cli::tests::detect_managed_root_surfaces_parse_errors ... ok [INFO] [stdout] test cli::tests::find_root_with_custom_managed_dir_from_settings ... ok [INFO] [stdout] test cli::tests::detect_managed_root_reads_settings ... ok [INFO] [stdout] test cli::tests::find_root_with_default_managed_dir ... ok [INFO] [stdout] test cli::tests::find_root_with_custom_managed_dir_marker ... ok [INFO] [stdout] test cli::init::tests::validate_target_rejects_dots ... ok [INFO] [stdout] test cli::init::tests::ensure_consumer_config_accepts_existing_mars_toml ... ok [INFO] [stdout] test cli::tests::context_rejects_symlinked_managed_root_outside_project ... ok [INFO] [stdout] test cli::init::tests::ensure_consumer_config_creates_root_mars_toml ... ok [INFO] [stdout] test cli::models::tests::alias_updates_existing_model_entry ... ok [INFO] [stdout] test cli::init::tests::validate_target_rejects_paths ... ok [INFO] [stdout] test cli::link::tests::normalize_rejects_dots ... ok [INFO] [stdout] test cli::link::tests::normalize_rejects_empty ... ok [INFO] [stdout] test cli::sync::tests::parses_no_refresh_models ... ok [INFO] [stdout] test cli::cache::tests::format_bytes_ranges ... ok [INFO] [stdout] test cli::link::tests::normalize_rejects_path ... ok [INFO] [stdout] test cli::tests::init_rejects_root_that_looks_like_managed_dir ... ok [INFO] [stdout] test cli::tests::package_manifest_without_dependencies_is_valid_project_root ... ok [INFO] [stdout] test cli::tests::walk_up_crosses_submodule_boundary ... ok [INFO] [stdout] test cli::tests::walk_up_finds_config_in_ancestor ... ok [INFO] [stdout] test cli::version::tests::resolve_next_version_explicit ... ok [INFO] [stdout] test cli::tests::find_root_with_explicit_path ... ok [INFO] [stdout] test cli::tests::walk_up_errors_when_no_config_found ... ok [INFO] [stdout] test cli::version::tests::parse_release_version_accepts_plain_semver ... ok [INFO] [stdout] test config::tests::error_on_both_url_and_path ... ok [INFO] [stdout] test cli::version::tests::parse_release_version_rejects_prerelease ... ok [INFO] [stdout] test cli::tests::walk_up_from_deep_subdirectory ... ok [INFO] [stdout] test config::tests::error_on_both_include_and_exclude ... ok [INFO] [stdout] test config::tests::error_on_duplicate_name_across_sections ... ok [INFO] [stdout] test config::tests::error_on_only_agents_with_skills_list ... ok [INFO] [stdout] test cli::tests::walk_up_prefers_nearest_mars_toml ... ok [INFO] [stdout] test cli::tests::walk_up_with_root_flag_starts_from_specified_path ... ok [INFO] [stdout] test cli::version::tests::resolve_next_version_bump_kinds ... ok [INFO] [stdout] test config::tests::error_on_neither_url_nor_path ... ok [INFO] [stdout] test config::tests::error_on_only_skills_and_only_agents ... ok [INFO] [stdout] test config::tests::error_on_only_skills_with_agents_list ... ok [INFO] [stdout] test config::tests::filter_config_to_mode ... ok [INFO] [stdout] test cli::tests::walk_up_crosses_git_boundary_to_find_config ... ok [INFO] [stdout] test config::tests::load_accepts_model_visibility_include_only ... ok [INFO] [stdout] test config::tests::load_does_not_migrate_ssh_url ... ok [INFO] [stdout] test config::tests::load_manifest_returns_none_without_package ... ok [INFO] [stdout] test config::tests::load_migrates_legacy_bare_domain_url ... ok [INFO] [stdout] test config::tests::load_manifest_returns_package_and_dependencies ... ok [INFO] [stdout] test config::tests::load_accepts_model_visibility_exclude_only ... ok [INFO] [stdout] test config::tests::filter_config_has_any_filter ... ok [INFO] [stdout] test config::tests::load_missing_file_returns_not_found ... ok [INFO] [stdout] test config::tests::load_from_disk ... ok [INFO] [stdout] test config::tests::load_local_from_disk ... ok [INFO] [stdout] test config::tests::load_local_missing_returns_default ... ok [INFO] [stdout] test config::tests::managed_targets_defaults_to_agents ... ok [INFO] [stdout] test config::tests::load_rejects_model_visibility_with_include_and_exclude ... ok [INFO] [stdout] test config::tests::local_dependencies_merged_into_effective_config ... ok [INFO] [stdout] test config::tests::managed_targets_explicit_overrides_links_and_managed_root ... ok [INFO] [stdout] test config::tests::local_dependencies_not_exported_to_manifest ... ok [INFO] [stdout] test config::tests::managed_root_setting_roundtrip ... ok [INFO] [stdout] test config::tests::managed_targets_uses_explicit_targets ... ok [INFO] [stdout] test config::tests::managed_targets_uses_managed_root_as_primary ... ok [INFO] [stdout] test config::tests::load_manifest_io_error_includes_operation_and_path ... ok [INFO] [stdout] test config::tests::error_on_only_skills_with_exclude ... ok [INFO] [stdout] test config::tests::model_visibility_is_empty_reports_state ... ok [INFO] [stdout] test config::tests::merge_with_empty_local ... ok [INFO] [stdout] test config::tests::merge_all_filter_mode ... ok [INFO] [stdout] test config::tests::parse_include_filter ... ok [INFO] [stdout] test config::tests::parse_exclude_filter ... ok [INFO] [stdout] test config::tests::only_skills_false_not_serialized ... ok [INFO] [stdout] test config::tests::model_visibility_validate_rejects_include_and_exclude ... ok [INFO] [stdout] test config::tests::parse_git_dependency ... ok [INFO] [stdout] test config::tests::merge_override_retains_subpath_coordinate ... ok [INFO] [stdout] test config::tests::local_dependencies_roundtrip ... ok [INFO] [stdout] test config::tests::only_skills_true_roundtrips ... ok [INFO] [stdout] test config::tests::merge_override_replaces_with_path ... ok [INFO] [stdout] test config::tests::parse_local_dependencies ... ok [INFO] [stdout] test config::tests::parse_path_dependency ... ok [INFO] [stdout] test config::tests::parse_mixed_dependencies ... ok [INFO] [stdout] test config::tests::parse_package_and_dependencies_coexist ... ok [INFO] [stdout] test config::tests::parse_only_agents_filter ... ok [INFO] [stdout] test config::tests::rename_map_preserved ... ok [INFO] [stdout] test config::tests::save_roundtrip_guard_rejects_managed_root_loss ... ok [INFO] [stdout] test config::tests::settings_models_cache_ttl_defaults_to_24_when_settings_present_without_ttl ... ok [INFO] [stdout] test config::tests::self_dependency_name_rejected ... ok [INFO] [stdout] test config::tests::save_roundtrip_guard_rejects_dependency_count_loss ... ok [INFO] [stdout] test config::tests::settings_models_cache_ttl_roundtrip_preserves_value ... ok [INFO] [stdout] test config::tests::model_visibility_validate_allows_include_only_exclude_only_and_empty ... ok [INFO] [stdout] test config::tests::settings_models_cache_ttl_defaults_to_24_when_omitted ... ok [INFO] [stdout] test config::tests::settings_models_cache_ttl_parses_custom_value ... ok [INFO] [stdout] test discover::tests::conventional_discovery_finds_agents_and_skills ... ok [INFO] [stdout] test config::tests::save_and_reload ... ok [INFO] [stdout] test config::tests::roundtrip_full_config_shape_survives_save ... ok [INFO] [stdout] test discover::tests::fallback_dedupes_overlapping_manifest_and_container_paths ... ok [INFO] [stdout] test discover::tests::conventional_root_skill_does_not_override_conventional_items ... ok [INFO] [stdout] test config::tests::parse_only_skills_filter ... ok [INFO] [stdout] test config::tests::settings_models_cache_ttl_parses_zero ... ok [INFO] [stdout] test discover::tests::discover_installed_reads_frontmatter ... ok [INFO] [stdout] test discover::tests::fallback_prefers_first_mirrored_skill_match ... ok [INFO] [stdout] test discover::tests::fallback_prefers_first_match_after_visit_dedupe ... ok [INFO] [stdout] test discover::tests::dispatcher_prefers_conventional_when_manifest_exists ... ok [INFO] [stdout] test error::tests::mars_error_exit_codes_match_spec ... ok [INFO] [stdout] test discover::tests::fallback_groups_layout_variants_into_same_logical_layer ... ok [INFO] [stdout] test discover::tests::fallback_manifest_declared_escape_is_rejected ... ok [INFO] [stdout] test discover::tests::fallback_manifest_paths_precede_heuristic_layers ... ok [INFO] [stdout] test frontmatter::tests::parse_flow_style_skills ... ok [INFO] [stdout] test frontmatter::tests::parse_empty_frontmatter_roundtrips_delimiters ... ok [INFO] [stdout] test frontmatter::tests::parse_without_frontmatter_keeps_body ... ok [INFO] [stdout] test discover::tests::fallback_short_circuits_root_skill ... ok [INFO] [stdout] test frontmatter::tests::parse_malformed_yaml_errors ... ok [INFO] [stdout] test frontmatter::tests::rewrite_does_not_corrupt_substrings ... ok [INFO] [stdout] test config::tests::roundtrip_multiple_dependencies_with_distinct_filter_combos ... ok [INFO] [stdout] test discover::tests::fallback_selects_first_non_empty_logical_layer ... ok [INFO] [stdout] test config::tests::save_preserves_dependencies_when_clearing_last_target ... ok [INFO] [stdout] test config::tests::roundtrip_preserves_all_filter_fields ... ok [INFO] [stdout] test fs::tests::atomic_install_dir_copies_tree ... ok [INFO] [stdout] test frontmatter::tests::parse_and_render_roundtrip ... ok [INFO] [stdout] test fs::tests::atomic_install_dir_replaces_existing ... ok [INFO] [stdout] test fs::tests::atomic_write_creates_parent_dirs ... ok [INFO] [stdout] test fs::tests::atomic_install_dir_dest_exists_throughout ... ok [INFO] [stdout] test fs::tests::atomic_install_dir_filtered_excludes_top_level_entries ... ok [INFO] [stdout] test discover::tests::fallback_manifest_declares_agent_paths_without_heuristic_json_walk ... ok [INFO] [stdout] test fs::tests::file_lock_released_on_drop ... ok [INFO] [stdout] test fs::tests::file_lock_acquire_returns_lock ... ok [INFO] [stdout] test fs::tests::file_lock_creates_parent_dirs ... ok [INFO] [stdout] test hash::tests::compute_hash_skill_directory ... ok [INFO] [stdout] test hash::tests::dir_hash_changes_with_different_content ... ok [INFO] [stdout] test fs::tests::atomic_install_dir_cleans_stale_old ... ok [INFO] [stdout] test fs::tests::remove_item_removes_file ... ok [INFO] [stdout] test fs::tests::atomic_write_creates_file_with_correct_content ... ok [INFO] [stdout] test hash::tests::dir_hash_deterministic_regardless_of_creation_order ... ok [INFO] [stdout] test hash::tests::hash_bytes_returns_lowercase_hex ... ok [INFO] [stdout] test fs::tests::atomic_write_overwrites_existing_file ... ok [INFO] [stdout] test fs::tests::remove_item_removes_directory ... ok [INFO] [stdout] test hash::tests::dir_hash_changes_with_different_filename ... ok [INFO] [stdout] test local_source::tests::includes_repo_root_when_preferred_root_is_empty ... ok [INFO] [stdout] test local_source::tests::prefers_mars_src_over_repo_root ... ok [INFO] [stdout] test discover::tests::fallback_priority_scan_finds_skill_dirs_and_agents ... ok [INFO] [stdout] test lock::tests::build_keeps_self_items_from_old_lock_on_skipped_action ... ok [INFO] [stdout] test lock::tests::build_rejects_empty_checksums_from_carried_items ... ok [INFO] [stdout] test lock::tests::build_rejects_missing_installed_checksum_for_write_actions ... ok [INFO] [stdout] test lock::tests::build_uses_graph_provenance_for_sources ... ok [INFO] [stdout] test local_source::tests::skips_legacy_repo_root_without_package_gate ... ok [INFO] [stdout] test lock::tests::dual_checksums_present ... ok [INFO] [stdout] test lock::tests::deterministic_serialization ... ok [INFO] [stdout] test lock::tests::item_id_display ... ok [INFO] [stdout] test hash::tests::filtered_skill_hash_ignores_excluded_top_level_entries ... ok [INFO] [stdout] test lock::tests::item_kind_display ... ok [INFO] [stdout] test lock::tests::item_kind_serializes_lowercase ... ok [INFO] [stdout] test lock::tests::load_absent_returns_empty ... ok [INFO] [stdout] test lock::tests::empty_lock_file ... ok [INFO] [stdout] test merge::tests::count_zero_conflicts ... ok [INFO] [stdout] test lock::tests::path_source_in_lock ... ok [INFO] [stdout] test merge::tests::count_one_conflict ... ok [INFO] [stdout] test merge::tests::has_conflict_markers_at_start_of_file ... ok [INFO] [stdout] test merge::tests::has_conflict_markers_in_middle_of_line_not_detected ... ok [INFO] [stdout] test merge::tests::has_conflict_markers_detects_markers ... ok [INFO] [stdout] test merge::tests::has_conflict_markers_no_markers ... ok [INFO] [stdout] test merge::tests::has_conflict_markers_partial_marker_not_detected ... ok [INFO] [stdout] test merge::tests::count_multiple_conflicts ... ok [INFO] [stdout] test merge::tests::empty_base_with_different_content ... ok [INFO] [stdout] test merge::tests::empty_base_same_additions ... ok [INFO] [stdout] test cli::version::tests::run_requires_package_section ... ok [INFO] [stdout] test lock::tests::parse_valid_lock_file ... ok [INFO] [stdout] test merge::tests::all_three_identical ... ok [INFO] [stdout] test models::harness::tests::candidates_for_known_provider ... ok [INFO] [stdout] test models::harness::tests::candidates_for_unknown_provider ... ok [INFO] [stdout] test lock::tests::write_and_reload ... ok [INFO] [stdout] test lock::tests::roundtrip_lock_file ... ok [INFO] [stdout] test models::harness::tests::resolve_harness_case_insensitive_provider ... ok [INFO] [stdout] test models::harness::tests::resolve_harness_anthropic_with_claude ... ok [INFO] [stdout] test merge::tests::overlapping_changes_produce_conflict ... ok [INFO] [stdout] test merge::tests::all_empty ... ok [INFO] [stdout] test models::harness::tests::resolve_harness_anthropic_falls_back_to_opencode ... ok [INFO] [stdout] test merge::tests::conflict_markers_match_git_format ... ok [INFO] [stdout] test merge::tests::theirs_changed_local_same_as_base ... ok [INFO] [stdout] test merge::tests::labels_appear_in_conflict_markers ... ok [INFO] [stdout] test merge::tests::local_changed_theirs_same_as_base ... ok [INFO] [stdout] test cli::version::tests::run_patch_updates_version_commits_and_tags ... ok [INFO] [stdout] test merge::tests::multiple_conflict_regions ... ok [INFO] [stdout] test models::harness::tests::resolve_harness_none_installed ... ok [INFO] [stdout] test models::tests::auto_resolve_basic ... ok [INFO] [stdout] test models::tests::auto_resolve_provider_case_insensitive ... ok [INFO] [stdout] test models::tests::auto_resolve_empty_cache ... ok [INFO] [stdout] test models::harness::tests::resolve_harness_unknown_provider ... ok [INFO] [stdout] test models::tests::auto_resolve_shortest_id_tiebreaker ... ok [INFO] [stdout] test models::tests::auto_resolve_no_match ... ok [INFO] [stdout] test cli::version::tests::run_requires_clean_working_tree ... ok [INFO] [stdout] test models::tests::auto_resolve_exclude ... ok [INFO] [stdout] test merge::tests::non_overlapping_changes_merge_cleanly ... ok [INFO] [stdout] test models::tests::auto_resolve_skip_latest ... ok [INFO] [stdout] test cli::version::tests::run_rejects_existing_tag ... ok [INFO] [stdout] test models::tests::ensure_fresh_3_stale_usable_offline_returns_stale ... ok [INFO] [stdout] test models::tests::ensure_fresh_10_corrupt_json_auto_refetches ... ok [INFO] [stdout] test models::tests::ensure_fresh_5_stale_auto_success_refreshes ... ok [INFO] [stdout] test models::tests::ensure_fresh_14_future_fetched_at_is_stale ... ok [INFO] [stdout] test models::tests::ensure_fresh_7_stale_auto_empty_catalog_falls_back ... ok [INFO] [stdout] test models::tests::ensure_fresh_18_force_ignores_offline_env ... ok [INFO] [stdout] test models::tests::ensure_fresh_9_empty_cache_offline_errors ... ok [INFO] [stdout] test models::tests::ensure_fresh_20_failed_fetch_cooldown_coalesces_sequential_calls ... ok [INFO] [stdout] test models::tests::filter_by_visibility_exclude_mode_removes_matches ... ok [INFO] [stdout] test models::tests::filter_by_visibility_include_mode_keeps_matches_only ... ok [INFO] [stdout] test models::tests::glob_empty_pattern ... ok [INFO] [stdout] test models::tests::glob_exact_match ... ok [INFO] [stdout] test models::tests::glob_multiple_stars ... ok [INFO] [stdout] test models::tests::glob_star_middle ... ok [INFO] [stdout] test models::tests::glob_star_only ... ok [INFO] [stdout] test models::tests::glob_star_prefix ... ok [INFO] [stdout] test models::tests::glob_star_suffix ... ok [INFO] [stdout] test models::tests::harness_source_serializes_snake_case ... ok [INFO] [stdout] test models::tests::ensure_fresh_11_corrupt_json_offline_errors ... ok [INFO] [stdout] test models::tests::ensure_fresh_1_missing_cache_offline_errors ... ok [INFO] [stdout] test models::tests::filter_by_visibility_empty_config_returns_all ... ok [INFO] [stdout] test models::tests::infer_provider_from_model_id_detects_known_prefixes ... ok [INFO] [stdout] test models::tests::infer_provider_from_model_id_is_case_insensitive ... ok [INFO] [stdout] test models::tests::infer_provider_from_model_id_returns_none_for_empty_string ... ok [INFO] [stdout] test models::tests::infer_provider_from_model_id_returns_none_for_unknown_model ... ok [INFO] [stdout] test models::tests::load_models_cache_ttl_defaults_to_24_when_config_missing ... ok [INFO] [stdout] test models::tests::merge_consumer_override_suppresses_dep_conflict_warning ... ok [INFO] [stdout] test models::tests::merge_consumer_beats_dep ... ok [INFO] [stdout] test models::tests::load_models_cache_ttl_reads_config_value ... ok [INFO] [stdout] test models::tests::merge_dep_conflict_warns_with_winner_and_resolution_hint ... ok [INFO] [stdout] test models::tests::merge_consumer_overrides_dependency_alias ... ok [INFO] [stdout] test models::tests::merge_dep_overrides_builtin ... ok [INFO] [stdout] test models::tests::merge_dep_conflicts_are_non_blocking ... ok [INFO] [stdout] test models::tests::merge_dep_three_way_conflict_warns_each_loser_against_first_winner ... ok [INFO] [stdout] test models::tests::merge_empty_returns_builtins ... ok [INFO] [stdout] test models::tests::model_alias_both_model_and_match_errors ... ok [INFO] [stdout] test models::tests::model_alias_neither_model_nor_match_errors ... ok [INFO] [stdout] test models::tests::model_alias_pinned_json_roundtrip_with_provider ... ok [INFO] [stdout] test models::tests::model_alias_pinned_toml_roundtrip_backwards_compat_harness ... ok [INFO] [stdout] test models::tests::model_alias_pinned_toml_roundtrip_without_harness ... ok [INFO] [stdout] test models::tests::model_alias_pinned_toml_roundtrip_with_provider ... ok [INFO] [stdout] test models::tests::parse_models_dev_catalog_requires_object_root ... ok [INFO] [stdout] test models::tests::model_alias_auto_resolve_toml_roundtrip ... ok [INFO] [stdout] test models::tests::parse_models_dev_catalog_maps_fields_and_filters_providers ... ok [INFO] [stdout] test models::tests::read_cache_io_error_includes_operation_and_path ... ok [INFO] [stdout] test models::tests::resolve_all_empty_cache_omits_unresolvable ... ok [INFO] [stdout] test models::tests::resolve_all_auto_detect_harness ... ok [INFO] [stdout] test models::tests::resolve_all_pinned ... ok [INFO] [stdout] test models::tests::resolve_all_pinned_auto_detect_harness ... ok [INFO] [stdout] test models::tests::resolve_harness_auto_detected ... ok [INFO] [stdout] test models::tests::resolve_all_unavailable_harness_still_included ... ok [INFO] [stdout] test models::tests::resolve_harness_explicit_installed ... ok [INFO] [stdout] test models::tests::resolve_harness_unavailable_no_provider_match ... ok [INFO] [stdout] test models::tests::resolve_model_and_provider_auto_resolve ... ok [INFO] [stdout] test models::tests::resolve_model_and_provider_pinned_explicit_provider ... ok [INFO] [stdout] test models::tests::resolve_model_and_provider_pinned_inferred ... ok [INFO] [stdout] test models::tests::resolve_model_and_provider_pinned_unknown ... ok [INFO] [stdout] test platform::cache::tests::archive_cache_component_no_colon ... ok [INFO] [stdout] test platform::cache::tests::git_cache_component_no_colon ... ok [INFO] [stdout] test platform::cache::tests::git_cache_component_various_urls ... ok [INFO] [stdout] test models::tests::resolve_all_pinned_with_provider ... ok [INFO] [stdout] test models::tests::resolve_harness_explicit_not_installed ... ok [INFO] [stdout] test models::tests::resolve_harness_unavailable ... ok [INFO] [stdout] test platform::cache::tests::safe_component_handles_empty ... ok [INFO] [stdout] test platform::cache::tests::safe_component_handles_reserved_names ... ok [INFO] [stdout] test platform::cache::tests::safe_component_handles_trailing_space_dot ... ok [INFO] [stdout] test platform::cache::tests::safe_component_replaces_invalid_chars ... ok [INFO] [stdout] test platform::cache::tests::safe_component_with_hash_prevents_collisions ... ok [INFO] [stdout] test platform::fs::tests::publish_cache_dir_if_absent_publishes ... ok [INFO] [stdout] test platform::fs::tests::publish_cache_dir_if_absent_accepts_existing ... ok [INFO] [stdout] test models::tests::ensure_fresh_13_unparseable_fetched_at_is_stale ... ok [INFO] [stdout] test platform::fs::tests::replace_generated_dir_basic ... ok [INFO] [stdout] test platform::fs::tests::safe_remove_handles_nonexistent ... ok [INFO] [stdout] test platform::fs::tests::replace_generated_dir_replaces_existing ... ok [INFO] [stdout] test platform::fs::tests::replace_generated_dir_cleans_stale_backup_before_replace ... ok [INFO] [stdout] test platform::fs::tests::safe_remove_removes_file_and_directory_tree ... ok [INFO] [stdout] test platform::path_syntax::tests::classify_posix_relative ... ok [INFO] [stdout] test models::tests::ensure_fresh_15_offline_env_auto_fresh_returns_offline ... ok [INFO] [stdout] test models::tests::ensure_fresh_16_offline_env_zero_is_not_offline ... ok [INFO] [stdout] test platform::path_syntax::tests::classify_rejects_extended_paths ... ok [INFO] [stdout] test platform::path_syntax::tests::classify_rejects_protocol_aliases ... ok [INFO] [stdout] test platform::path_syntax::tests::classify_rejects_ssh_shorthand ... ok [INFO] [stdout] test platform::path_syntax::tests::classify_rejects_shorthand ... ok [INFO] [stdout] test platform::path_syntax::tests::classify_rejects_urls ... ok [INFO] [stdout] test platform::path_syntax::tests::classify_windows_backslash_relative ... ok [INFO] [stdout] test platform::path_syntax::tests::classify_windows_root_relative ... ok [INFO] [stdout] test platform::path_syntax::tests::classify_windows_drive_paths ... ok [INFO] [stdout] test platform::path_syntax::tests::classify_posix_absolute ... ok [INFO] [stdout] test platform::path_syntax::tests::classify_windows_unc_paths ... ok [INFO] [stdout] test platform::process::tests::display_command_formats_args ... ok [INFO] [stdout] test platform::path_syntax::tests::classify_home_relative ... ok [INFO] [stdout] test platform::process::tests::run_git_raw_execute_failure_returns_structured_error ... ok [INFO] [stdout] test platform::process::tests::run_git_execute_failure_includes_cwd_and_command ... ok [INFO] [stdout] test reconcile::fs_ops::tests::atomic_copy_dir_follows_symlinks ... ok [INFO] [stdout] test reconcile::fs_ops::tests::atomic_copy_dir_copies_tree ... ok [INFO] [stdout] test platform::process::tests::run_git_version_succeeds ... ok [INFO] [stdout] test resolve::compat::tests::different_ref_pin_is_conflicting ... ok [INFO] [stdout] test resolve::compat::tests::different_semver_is_conflicting ... ok [INFO] [stdout] test resolve::compat::tests::equivalent_semver_syntax_is_compatible_for_resolved_version ... ok [INFO] [stdout] test resolve::compat::tests::incompatible_semver_syntax_is_conflicting_for_resolved_version ... ok [INFO] [stdout] test resolve::compat::tests::latest_with_latest_is_compatible ... ok [INFO] [stdout] test resolve::compat::tests::latest_with_ref_pin_is_potentially_conflicting ... ok [INFO] [stdout] test resolve::compat::tests::latest_with_semver_is_potentially_conflicting ... ok [INFO] [stdout] test resolve::compat::tests::same_ref_pin_is_compatible ... ok [INFO] [stdout] test resolve::compat::tests::same_semver_is_compatible ... ok [INFO] [stdout] test resolve::compat::tests::semver_with_ref_pin_is_conflicting ... ok [INFO] [stdout] test resolve::tests::filter_tests::direct_filter_is_retained_when_same_source_is_also_a_filtered_transitive_dep ... ok [INFO] [stdout] test resolve::tests::filter_tests::filtered_include_dep_resolves_version_without_seeding_transitive_items ... ok [INFO] [stdout] test resolve::tests::filter_tests::filtered_parent_dep_does_not_seed_unfiltered_grandchild_items ... ok [INFO] [stdout] test models::tests::ensure_fresh_21_empty_catalog_cooldown_coalesces_sequential_calls ... ok [INFO] [stdout] test reconcile::fs_ops::tests::atomic_copy_file_copies_regular_file ... ok [INFO] [stdout] test reconcile::fs_ops::tests::atomic_copy_file_follows_source_symlink ... ok [INFO] [stdout] test resolve::tests::integration_tests::alphabetical_order_ignores_dependency_shape ... ok [INFO] [stdout] test resolve::tests::integration_tests::alphabetical_order_linear_chain ... ok [INFO] [stdout] test resolve::tests::filter_tests::filtered_transitive_dep_without_seed_request_does_not_collect_materialization_filter ... ok [INFO] [stdout] test resolve::tests::integration_tests::alphabetical_order_no_deps ... ok [INFO] [stdout] test resolve::tests::integration_tests::alphabetical_order_is_stable_for_cycles ... ok [INFO] [stdout] test models::tests::ensure_fresh_4_fresh_auto_skips_http ... ok [INFO] [stdout] test resolve::tests::integration_tests::apply_subpath_file_not_dir_rejection ... ok [INFO] [stdout] test resolve::tests::filter_tests::filtered_parent_transitive_dep_materializes_only_frontmatter_required_items ... ok [INFO] [stdout] test resolve::tests::integration_tests::apply_subpath_missing_directory_rejection ... ok [INFO] [stdout] test resolve::tests::integration_tests::apply_subpath_success_case ... ok [INFO] [stdout] test resolve::tests::integration_tests::apply_subpath_none_yields_checkout_as_package_root ... ok [INFO] [stdout] test resolve::tests::integration_tests::apply_subpath_traversal_rejection ... ok [INFO] [stdout] test resolve::tests::integration_tests::cycle_does_not_error ... ok [INFO] [stdout] test resolve::tests::integration_tests::compatible_constraints_from_two_dependents ... ok [INFO] [stdout] test resolve::tests::integration_tests::different_version_revisit_errors ... ok [INFO] [stdout] test resolve::tests::integration_tests::incompatible_constraints_produce_error ... ok [INFO] [stdout] test resolve::tests::integration_tests::duplicate_source_identity_detects_same_url_and_subpath ... ok [INFO] [stdout] test resolve::tests::integration_tests::frozen_mode_errors_when_locked_commit_unreachable ... ok [INFO] [stdout] test models::tests::ensure_fresh_12_ttl_zero_always_refetches ... ok [INFO] [stdout] test resolve::tests::integration_tests::path_source_resolves_without_version ... ok [INFO] [stdout] test platform::process::tests::run_git_with_ref_passes_ref_without_shell_interpretation ... ok [INFO] [stdout] test resolve::tests::integration_tests::narrower_second_constraint_causes_validation_error ... ok [INFO] [stdout] test resolve::tests::integration_tests::resolver_reads_manifest_from_package_root_not_checkout_root ... ok [INFO] [stdout] test resolve::tests::integration_tests::normal_mode_falls_back_when_locked_commit_unreachable ... ok [INFO] [stdout] test resolve::tests::integration_tests::latest_and_pinned_revisit_errors_with_version_conflict ... ok [INFO] [stdout] test resolve::tests::integration_tests::source_without_manifest_has_no_transitive_deps ... ok [INFO] [stdout] test resolve::tests::integration_tests::transitive_dep_propagates_subpath_into_source_identity ... ok [INFO] [stdout] test resolve::tests::integration_tests::source_with_transitive_dep ... ok [INFO] [stdout] test resolve::tests::integration_tests::source_identity_mismatch_detects_different_subpaths_for_same_name ... ok [INFO] [stdout] test resolve::tests::integration_tests::two_sources_no_deps ... ok [INFO] [stdout] test resolve::tests::integration_tests::same_version_revisit_skips_and_package_fetches_once ... ok [INFO] [stdout] test resolve::tests::integration_tests::single_source_no_deps ... ok [INFO] [stdout] test resolve::tests::integration_tests::two_subpaths_same_url_resolve_to_distinct_package_roots ... ok [INFO] [stdout] test resolve::tests::tracker_tests::apply_item_version_policy_errors_on_non_local_conflict ... ok [INFO] [stdout] test resolve::tests::tracker_tests::apply_item_version_policy_warns_on_potential_drift ... ok [INFO] [stdout] test models::tests::ensure_fresh_2_missing_cache_auto_fetch_failure_errors ... ok [INFO] [stdout] test resolve::tests::tracker_tests::package_versions_conflict ... ok [INFO] [stdout] test resolve::tests::tracker_tests::package_versions_conflicting_constraints ... ok [INFO] [stdout] test resolve::tests::tracker_tests::package_versions_first_insert ... ok [INFO] [stdout] test resolve::tests::skill_tests::skill_not_found_has_requester_and_search_context ... ok [INFO] [stdout] test resolve::tests::integration_tests::transitive_dep_without_subpath_has_none_in_source_identity ... ok [INFO] [stdout] test resolve::tests::tracker_tests::package_versions_local_conflict_bypassed ... ok [INFO] [stdout] test resolve::tests::tracker_tests::package_versions_same_version_reuse ... ok [INFO] [stdout] test resolve::tests::tracker_tests::pending_item_scaffolding_fields_roundtrip ... ok [INFO] [stdout] test resolve::tests::tracker_tests::visited_set_not_seen ... ok [INFO] [stdout] test resolve::tests::tracker_tests::visited_set_different_version ... ok [INFO] [stdout] test resolve::tests::skill_tests::excluded_skill_not_reintroduced_from_frontmatter_reference ... ok [INFO] [stdout] test resolve::tests::tracker_tests::apply_item_version_policy_skips_local_conflict ... ok [INFO] [stdout] test resolve::tests::tracker_tests::visited_set_potentially_conflicting_version ... ok [INFO] [stdout] test resolve::tests::skill_tests::skill_resolution_prefers_dependency_closure_over_insertion_order ... ok [INFO] [stdout] test platform::process::tests::run_git_invalid_command_fails ... ok [INFO] [stdout] test resolve::tests::version_tests::latest_resolves_to_newest ... ok [INFO] [stdout] test resolve::tests::version_tests::bump_direct_constraints_ignores_direct_pin_for_target ... ok [INFO] [stdout] test resolve::tests::tracker_tests::visited_set_same_version ... ok [INFO] [stdout] test resolve::tests::version_tests::latest_constraint_does_not_skip_sibling_semver_validation ... ok [INFO] [stdout] test resolve::tests::version_tests::branch_ref_resolves_without_semver ... ok [INFO] [stdout] test resolve::tests::version_tests::frozen_mode_errors_for_untagged_locked_commit_unreachable ... ok [INFO] [stdout] test resolve::tests::integration_tests::local_path_source_resolves_transitive_path_dependencies ... ok [INFO] [stdout] test resolve::tests::version_tests::parse_branch_ref ... ok [INFO] [stdout] test resolve::tests::version_tests::parse_commit_ref ... ok [INFO] [stdout] test resolve::tests::version_tests::parse_empty_is_latest ... ok [INFO] [stdout] test resolve::tests::version_tests::parse_exact_version ... ok [INFO] [stdout] test resolve::tests::version_tests::parse_latest_string ... ok [INFO] [stdout] test resolve::tests::version_tests::parse_major_minor_version ... ok [INFO] [stdout] test resolve::tests::version_tests::equivalent_semver_syntax_accepts_same_resolved_version ... ok [INFO] [stdout] test resolve::tests::version_tests::locked_commit_is_used_when_reachable ... ok [INFO] [stdout] test resolve::tests::version_tests::maximize_mode_picks_newest ... ok [INFO] [stdout] test resolve::tests::version_tests::maximize_mode_ignores_locked_commit ... ok [INFO] [stdout] test resolve::tests::version_tests::parse_major_version ... ok [INFO] [stdout] test resolve::tests::version_tests::parse_semver_req_caret ... ok [INFO] [stdout] test resolve::tests::version_tests::locked_version_ignored_when_constraint_changed ... ok [INFO] [stdout] test resolve::tests::version_tests::locked_version_preferred_when_satisfies_constraint ... ok [INFO] [stdout] test resolve::tests::version_tests::maximize_with_specific_targets ... ok [INFO] [stdout] test resolve::tests::version_tests::parse_none_is_latest ... ok [INFO] [stdout] test resolve::tests::version_tests::no_available_versions_falls_back_to_head ... ok [INFO] [stdout] test models::tests::ensure_fresh_6_stale_auto_fetch_failure_falls_back ... ok [INFO] [stdout] test resolve::tests::version_tests::parse_semver_req_gte ... ok [INFO] [stdout] test resolve::tests::version_tests::parse_semver_req_tilde ... ok [INFO] [stdout] test models::tests::ensure_fresh_17_offline_env_truthy_is_offline ... ok [INFO] [stdout] test source::git::tests::is_github_host_rejects_other_hosts ... ok [INFO] [stdout] test source::git::tests::github_archive_only_for_https_github_urls ... ok [INFO] [stdout] test source::git::tests::is_github_host_accepts_supported_formats ... ok [INFO] [stdout] test source::archive::tests::extract_and_strip_archive_rejects_parent_traversal ... ok [INFO] [stdout] test resolve::tests::version_tests::untagged_source_falls_back_to_head_when_locked_commit_unreachable ... ok [INFO] [stdout] test resolve::tests::version_tests::untagged_source_uses_locked_commit_when_available ... ok [INFO] [stdout] test source::git::tests::parse_semver_no_prefix ... ok [INFO] [stdout] test source::git::tests::parse_semver_v_prefixed ... ok [INFO] [stdout] test source::git::tests::url_to_dirname_bare_domain ... ok [INFO] [stdout] test resolve::tests::version_tests::v2_resolves_to_major_range ... ok [INFO] [stdout] test source::archive::tests::extract_and_strip_archive_flattens_top_level_directory ... ok [INFO] [stdout] test source::archive::tests::extract_and_strip_archive_skips_symlinks ... ok [INFO] [stdout] test source::archive::tests::fetch_archive_uses_safe_cache_key_before_network ... ok [INFO] [stdout] test source::git::tests::url_to_dirname_https ... ok [INFO] [stdout] test source::git::tests::url_to_dirname_https_with_git_suffix ... ok [INFO] [stdout] test source::git::tests::url_to_dirname_ssh ... ok [INFO] [stdout] test source::git::tests::url_to_dirname_ssh_protocol ... ok [INFO] [stdout] test source::parse::tests::extract_hostname_supports_ssh_and_https ... ok [INFO] [stdout] test source::git::tests::url_to_dirname_trailing_slash ... ok [INFO] [stdout] test source::parse::tests::parse_github_alias_with_subpath ... ok [INFO] [stdout] test source::parse::tests::parse_github_tree_url_with_ref_and_subpath ... ok [INFO] [stdout] test source::parse::tests::parse_generic_git_ssh_source ... ok [INFO] [stdout] test source::parse::tests::parse_gitlab_alias_preserves_repo_coordinate_only ... ok [INFO] [stdout] test models::tests::ensure_fresh_8_empty_cache_auto_refetches ... ok [INFO] [stdout] test source::parse::tests::parse_gitlab_plain_repo_url_custom_host ... ok [INFO] [stdout] test source::parse::tests::parse_gitlab_repo_url_preserves_explicit_port ... ok [INFO] [stdout] test source::parse::tests::parse_local_path_wins_before_shorthand ... ok [INFO] [stdout] test source::parse::tests::parse_gitlab_tree_url_custom_host ... ok [INFO] [stdout] test source::parse::tests::parse_windows_drive_relative_source_as_local_path ... ok [INFO] [stdout] test source::parse::tests::parse_windows_extended_path_remains_unsupported ... ok [INFO] [stdout] test source::parse::tests::rejects_archive_download_url ... ok [INFO] [stdout] test source::parse::tests::rejects_file_download_url ... ok [INFO] [stdout] test source::parse::tests::parse_fragment_ref_beats_legacy_at_version ... ok [INFO] [stdout] test source::parse::tests::parse_legacy_at_version_still_supported ... ok [INFO] [stdout] test source::parse::tests::parse_github_shorthand_with_subpath ... ok [INFO] [stdout] test source::parse::tests::parse_windows_backslash_source_as_local_path ... ok [INFO] [stdout] test source::path::tests::fetch_nonexistent_path_returns_error ... ok [INFO] [stdout] test source::path::tests::fetch_relative_path ... ok [INFO] [stdout] test source::git::tests::url_to_dirname_http ... ok [INFO] [stdout] test source::parse::tests::parse_generic_git_preserves_explicit_port ... ok [INFO] [stdout] test sync::apply::tests::extract_agent_name ... ok [INFO] [stdout] test sync::apply::tests::extract_skill_name ... ok [INFO] [stdout] test source::parse::tests::rejects_slashy_tree_ref_when_encoded ... ok [INFO] [stdout] test source::path::tests::fetch_absolute_path ... ok [INFO] [stdout] test source::path::tests::fetch_file_not_directory_returns_error ... ok [INFO] [stdout] test source::tests::global_cache_idempotent ... ok [INFO] [stdout] test source::tests::global_cache_creates_directory ... ok [INFO] [stdout] test sync::apply::tests::prune_removes_orphaned_items ... ok [INFO] [stdout] test sync::apply::tests::dry_run_does_not_modify_files ... ok [INFO] [stdout] test sync::apply::tests::remove_deletes_file ... ok [INFO] [stdout] test sync::apply::tests::skip_produces_skipped_outcome ... ok [INFO] [stdout] test sync::diff::tests::both_changed_produces_conflict ... ok [INFO] [stdout] test sync::diff::tests::dual_checksum_prevents_false_conflict ... ok [INFO] [stdout] test sync::apply::tests::keep_local_produces_kept_outcome ... ok [INFO] [stdout] test sync::diff::tests::force_uses_source_checksum_for_local_change_detection ... ok [INFO] [stdout] test source::path::tests::fetch_relative_path_with_dotdot ... ok [INFO] [stdout] test sync::diff::tests::orphan_detected ... ok [INFO] [stdout] test sync::diff::tests::local_changed_source_unchanged_produces_local_modified ... ok [INFO] [stdout] test sync::apply::tests::remove_skill_directory ... ok [INFO] [stdout] test sync::diff::tests::mixed_diff_entries ... ok [INFO] [stdout] test sync::apply::tests::overwrite_replaces_existing_file ... ok [INFO] [stdout] test sync::diff::tests::new_item_produces_add ... ok [INFO] [stdout] test sync::apply::tests::install_caches_base_content ... ok [INFO] [stdout] test sync::filter::tests::filter_all_returns_everything ... ok [INFO] [stdout] test sync::diff::tests::rewritten_content_change_produces_update ... ok [INFO] [stdout] test sync::mutation::tests::apply_mutation_atomic_filter_replacement ... ok [INFO] [stdout] test sync::mutation::tests::apply_mutation_batch_upsert_applies_all_entries ... ok [INFO] [stdout] test sync::mutation::tests::apply_mutation_preserves_rename_on_filter_change ... ok [INFO] [stdout] test sync::mutation::tests::apply_mutation_returns_old_and_new_filters_for_readd ... ok [INFO] [stdout] test sync::apply::tests::install_flat_skill_excludes_repo_metadata ... ok [INFO] [stdout] test sync::diff::tests::unchanged_item_produces_unchanged ... ok [INFO] [stdout] test sync::plan::tests::add_produces_install ... ok [INFO] [stdout] test sync::filter::tests::filter_include_agents_only ... ok [INFO] [stdout] test sync::mutation::tests::apply_mutation_preserves_filters_on_version_bump ... ok [INFO] [stdout] test sync::filter::tests::filter_include_with_transitive_skill_deps ... ok [INFO] [stdout] test sync::filter::tests::filter_exclude_removes_items ... ok [INFO] [stdout] test sync::plan::tests::conflict_produces_overwrite_and_warning ... ok [INFO] [stdout] test sync::apply::tests::install_creates_new_file ... ok [INFO] [stdout] test sync::diff::tests::source_changed_local_unchanged_produces_update ... ok [INFO] [stdout] test sync::plan::tests::conflict_with_force_produces_overwrite ... ok [INFO] [stdout] test sync::plan::tests::orphan_produces_remove ... ok [INFO] [stdout] test sync::plan::tests::update_produces_overwrite ... ok [INFO] [stdout] test sync::plan::tests::unchanged_produces_skip ... ok [INFO] [stdout] test sync::plan::tests::mixed_plan ... ok [INFO] [stdout] test sync::plan::tests::local_modified_with_force_produces_overwrite ... ok [INFO] [stdout] test sync::plan::tests::skill_conflict_produces_overwrite_and_warning ... ok [INFO] [stdout] test sync::rewrite::tests::rewrite_skill_refs_uses_exact_skill_matches ... ok [INFO] [stdout] test sync::target::tests::build_target_items_have_correct_hashes ... ok [INFO] [stdout] test sync::apply::tests::install_skill_directory ... ok [INFO] [stdout] test sync::rewrite::tests::rewrite_skill_refs_cross_package_uses_dep_graph ... ok [INFO] [stdout] test sync::rewrite::tests::rewrite_skill_refs_leaves_non_matching_agents_unchanged ... ok [INFO] [stdout] test sync::target::tests::default_dest_path_uses_forward_slashes_for_agents_and_skills ... ok [INFO] [stdout] test sync::plan::tests::local_modified_produces_keep_local ... ok [INFO] [stdout] test sync::target::tests::parse_rename_dest_normalizes_backslashes_to_forward_slashes ... ok [INFO] [stdout] test sync::target::tests::collision_errors_instead_of_auto_renaming ... ok [INFO] [stdout] test cli::version::tests::run_with_push_pushes_branch_and_tag_to_origin ... ok [INFO] [stdout] test sync::target::tests::no_collision_no_renames ... ok [INFO] [stdout] test sync::target::tests::parse_rename_dest_rejects_absolute_and_escape_destinations ... ok [INFO] [stdout] test sync::target::tests::build_with_invalid_rename_destination_returns_error ... ok [INFO] [stdout] test sync::target::tests::build_with_path_rename_mapping ... ok [INFO] [stdout] test sync::target::tests::build_unions_multiple_include_filters_for_same_source ... ok [INFO] [stdout] test sync::target::tests::unmanaged_collision_reported_on_different_content ... ok [INFO] [stdout] test sync::target::tests::build_with_exclude_filter ... ok [INFO] [stdout] test sync::target::tests::unmanaged_disk_path_collision_reported ... ok [INFO] [stdout] test sync::target::tests::unmanaged_collision_skipped_when_hash_matches ... ok [INFO] [stdout] test sync::tests::declaration_ordered_dep_models_is_used_by_resolve_graph_and_finalize ... ok [INFO] [stdout] test sync::target::tests::build_single_source_no_filter ... ok [INFO] [stdout] test sync::tests::declaration_ordered_dep_models_diamond_uses_minimum_sponsor_position ... ok [INFO] [stdout] test sync::tests::declaration_ordered_dep_models_transitives_follow_sponsor_declaration_order ... ok [INFO] [stdout] test sync::tests::declaration_ordered_dep_models_keeps_deps_before_dependents ... ok [INFO] [stdout] test sync::target::tests::build_with_agents_filter_pulls_transitive_skills ... ok [INFO] [stdout] test sync::tests::declaration_ordered_dep_models_is_deterministic ... ok [INFO] [stdout] test sync::tests::declaration_ordered_dep_models_sibling_order ... ok [INFO] [stdout] test sync::tests::dry_run_produces_plan_without_changes ... ok [INFO] [stdout] test sync::tests::planned_bump_entries_bump_all_outdated_pins ... ok [INFO] [stdout] test sync::tests::planned_bump_entries_bump_specific_targets_only ... ok [INFO] [stdout] test sync::tests::planned_bump_entries_noop_when_already_latest ... ok [INFO] [stdout] test sync::tests::planned_bump_entries_preserve_filters_and_renames ... ok [INFO] [stdout] test sync::tests::pipeline_only_agents_no_agents_source ... ok [INFO] [stdout] test sync::tests::pipeline_only_agents_filter ... ok [INFO] [stdout] test sync::tests::execute_dry_run_with_mutation_does_not_write_config ... ok [INFO] [stdout] test sync::tests::pipeline_only_skills_filter ... ok [INFO] [stdout] test sync::tests::local_modification_preserved ... ok [INFO] [stdout] test sync::tests::validate_request_rejects_frozen_with_maximize ... ok [INFO] [stdout] test sync::types::tests::default_no_refresh_models_is_false ... ok [INFO] [stdout] test sync::tests::validate_request_rejects_frozen_with_mutation ... ok [INFO] [stdout] test sync::tests::orphan_removed_when_source_drops_item ... ok [INFO] [stdout] test target_sync::tests::cleanup_orphans_uses_forward_slash_keys_for_expected_paths ... ok [INFO] [stdout] test sync::tests::lock_written_after_apply ... ok [INFO] [stdout] test target_sync::tests::sync_cleans_up_previous_managed_orphans ... ok [INFO] [stdout] test target_sync::tests::sync_force_refreshes_skipped_target_content ... ok [INFO] [stdout] test target_sync::tests::sync_copies_installed_items_to_target ... ok [INFO] [stdout] test target_sync::tests::sync_convergence_on_rerun ... ok [INFO] [stdout] test sync::tests::re_sync_no_changes ... ok [INFO] [stdout] test target_sync::tests::sync_skill_directory ... ok [INFO] [stdout] test target_sync::tests::sync_multiple_targets ... ok [INFO] [stdout] test target_sync::tests::sync_skipped_warns_on_divergent_target_and_preserves_local_content ... ok [INFO] [stdout] test target_sync::tests::sync_skipped_recopies_missing_target ... ok [INFO] [stdout] test types::tests::dest_path_item_name_extracts_skill_leaf ... ok [INFO] [stdout] test sync::tests::execute_auto_inits_config_for_mutation ... ok [INFO] [stdout] test target_sync::tests::sync_removes_items_from_target ... ok [INFO] [stdout] test sync::tests::source_update_detects_changes ... ok [INFO] [stdout] test types::tests::config_roundtrip_preserves_subpath ... ok [INFO] [stdout] test types::tests::dest_path_normalizes_trailing_slash ... ok [INFO] [stdout] test target_sync::tests::sync_preserves_unmanaged_files_in_target ... ok [INFO] [stdout] test types::tests::dest_path_normalizes_windows_and_unix_separators ... ok [INFO] [stdout] test sync::tests::force_overwrites_local_modifications ... ok [INFO] [stdout] test sync::tests::full_pipeline_fresh_sync ... ok [INFO] [stdout] test types::tests::dest_path_item_name_extracts_agent_leaf ... ok [INFO] [stdout] test types::tests::dest_path_item_name_extracts_nested_agent_leaf ... ok [INFO] [stdout] test types::tests::dest_path_normalizes_leading_dot_slash ... ok [INFO] [stdout] test types::tests::dest_path_rejects_windows_drive_relative ... ok [INFO] [stdout] test types::tests::dest_path_rejects_absolute ... ok [INFO] [stdout] test types::tests::dest_path_rejects_empty ... ok [INFO] [stdout] test types::tests::dest_path_rejects_root_only ... ok [INFO] [stdout] test types::tests::dest_path_item_name_handles_no_slash_edge_case ... ok [INFO] [stdout] test types::tests::dest_path_roundtrip ... ok [INFO] [stdout] test types::tests::effective_dependency_subpath_preserved_through_merge ... ok [INFO] [stdout] test types::tests::dest_path_rejects_escape ... ok [INFO] [stdout] test types::tests::lock_roundtrip_with_and_without_subpath ... ok [INFO] [stdout] test types::tests::locked_source_json_roundtrip_without_subpath ... ok [INFO] [stdout] test types::tests::source_id_path_none_and_some_subpath_hash_distinctly ... ok [INFO] [stdout] test types::tests::locked_source_toml_missing_subpath_field_is_none ... ok [INFO] [stdout] test types::tests::locked_source_toml_subpath_serializes_alongside_other_fields ... ok [INFO] [stdout] test types::tests::rename_map_toml_roundtrip_compat ... ok [INFO] [stdout] test types::tests::source_id_git_same_url_same_subpath_are_equal_and_hash_equal ... ok [INFO] [stdout] test types::tests::source_id_path_same_canonical_same_subpath_are_equal ... ok [INFO] [stdout] test types::tests::source_subpath_accepts_deeply_nested ... ok [INFO] [stdout] test types::tests::source_subpath_accepts_nested_relative_path ... ok [INFO] [stdout] test types::tests::source_subpath_accepts_plugins_foo ... ok [INFO] [stdout] test types::tests::source_subpath_and_dest_path_share_normalization_rules ... ok [INFO] [stdout] test types::tests::source_id_path_same_canonical_different_subpaths_are_distinct ... ok [INFO] [stdout] test types::tests::source_id_git_same_url_different_subpaths_are_distinct ... ok [INFO] [stdout] test types::tests::source_subpath_join_under_base ... ok [INFO] [stdout] test types::tests::source_subpath_join_under_base_with_trailing_slash ... ok [INFO] [stdout] test types::tests::dest_path_rejects_windows_absolute ... ok [INFO] [stdout] test types::tests::locked_source_json_roundtrip_with_subpath ... ok [INFO] [stdout] test types::tests::source_subpath_join_under_rejects_escape_path ... ok [INFO] [stdout] test types::tests::source_subpath_rejects_absolute ... ok [INFO] [stdout] test types::tests::source_subpath_rejects_current_dir_dot ... ok [INFO] [stdout] test types::tests::source_subpath_rejects_empty ... ok [INFO] [stdout] test types::tests::source_subpath_normalizes_windows_and_unix_separators ... ok [INFO] [stdout] test types::tests::source_subpath_normalizes_leading_dot_slash ... ok [INFO] [stdout] test types::tests::source_subpath_rejects_harmless_parent_in_middle ... ok [INFO] [stdout] test types::tests::source_subpath_rejects_mid_path_double_parent_escape ... ok [INFO] [stdout] test types::tests::source_subpath_normalizes_trailing_slash ... ok [INFO] [stdout] test types::tests::source_subpath_rejects_root_only ... ok [INFO] [stdout] test types::tests::source_subpath_rejects_escape ... ok [INFO] [stdout] test types::tests::source_subpath_rejects_windows_drive_forward_slash ... ok [INFO] [stdout] test types::tests::source_subpath_rejects_windows_absolute ... ok [INFO] [stdout] test types::tests::source_subpath_serializes_with_forward_slashes ... ok [INFO] [stdout] test validate::tests::empty_agents_and_skills ... ok [INFO] [stdout] test validate::tests::agent_with_malformed_yaml_no_crash ... ok [INFO] [stdout] test validate::tests::no_suggestion_when_no_match ... ok [INFO] [stdout] test validate::tests::suggestion_case_insensitive ... ok [INFO] [stdout] test validate::tests::suggestion_forward_substring ... ok [INFO] [stdout] test validate::tests::suggestion_reverse_substring ... ok [INFO] [stdout] test validate::tests::missing_skill_produces_warning ... ok [INFO] [stdout] test validate::tests::all_skills_present_no_warnings ... ok [INFO] [stdout] test validate::tests::parse_skill_skills_reads_frontmatter ... ok [INFO] [stdout] test types::tests::lock_write_and_load_roundtrip_preserves_subpath ... ok [INFO] [stdout] test validate::tests::missing_skill_with_suggestion ... ok [INFO] [stdout] test validate::tests::parse_agent_skills_reads_frontmatter ... ok [INFO] [stdout] test validate::tests::multiple_agents_multiple_warnings ... ok [INFO] [stdout] test validate::tests::agent_with_no_frontmatter_no_warnings ... ok [INFO] [stdout] test validate::tests::unreadable_agent_file_treated_as_no_skills ... ok [INFO] [stdout] test validate::tests::unreferenced_skill_produces_no_warning ... ok [INFO] [stdout] test validate::tests::skills_with_dunder_prefix ... ok [INFO] [stdout] test sync::tests::two_sources_no_collision ... ok [INFO] [stdout] test source::git::tests::fetch_local_git_repo_uses_latest_semver_tag ... ok [INFO] [stdout] test source::git::tests::ls_remote_tags_filters_sorts_and_skips_peeled_refs ... ok [INFO] [stdout] test platform::cache::tests::global_cache_root_respects_env_var ... ok [INFO] [stdout] test platform::cache::tests::global_cache_root_uses_os_cache_when_no_env ... ok [INFO] [stdout] test models::tests::ensure_fresh_19_concurrent_auto_refresh_hits_api_once ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 630 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.50s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/mars-6f2ad895a302b139) [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] [stderr] Running tests/cli_integration.rs (/opt/rustwide/target/debug/deps/cli_integration-474effc8daf5ff3b) [INFO] [stdout] [INFO] [stdout] running 38 tests [INFO] [stdout] test integration::help_shows_all_commands ... ok [INFO] [stdout] test integration::add_skips_unmanaged_file_collision ... ok [INFO] [stdout] test integration::add_nonexistent_path_does_not_pollute_config ... ok [INFO] [stdout] test integration::init_twice_is_idempotent ... ok [INFO] [stdout] test integration::init_creates_agents_toml ... ok [INFO] [stdout] test integration::doctor_warns_when_mars_not_gitignored ... ok [INFO] [stdout] test integration::init_with_root_uses_resolved_root_path_in_message ... ok [INFO] [stdout] test integration::link_auto_inits_project_when_root_has_no_mars_toml ... ok [INFO] [stdout] test integration::json_output_valid ... ok [INFO] [stdout] test integration::doctor_reports_healthy_state ... ok [INFO] [stdout] test integration::add_with_agents_filter ... ok [INFO] [stdout] test integration::add_auto_inits_project_when_root_has_no_mars_toml ... ok [INFO] [stdout] test integration::root_discovery_from_subdir ... ok [INFO] [stdout] test integration::sync_diff_does_not_modify_files ... ok [INFO] [stdout] test integration::remove_prunes_files ... ok [INFO] [stdout] test integration::add_local_source_and_sync ... ok [INFO] [stdout] test integration::adopt_moves_skill_into_mars_src_and_syncs_targets ... ok [INFO] [stdout] test integration::list_shows_installed_items ... ok [INFO] [stdout] test integration::conflict_flow_with_resolve ... ok [INFO] [stdout] test integration::full_pipeline_with_local_package_and_custom_target ... ok [INFO] [stdout] test integration::sync_without_project_still_errors_instead_of_auto_init ... ok [INFO] [stdout] test integration::upgrade_command_is_available ... ok [INFO] [stdout] test integration::add_second_source_preserves_first_source_items_in_lock ... ok [INFO] [stdout] test integration::repair_recovers_from_corrupt_lock ... ok [INFO] [stdout] test integration::unlink_preserves_unrelated_config_sections ... ok [INFO] [stdout] test integration::sync_ignores_repo_root_local_items_without_package_section ... ok [INFO] [stdout] test integration::rename_applies_path_mapping_during_sync ... ok [INFO] [stdout] test integration::override_writes_local_config ... ok [INFO] [stdout] test integration::sync_prefers_mars_src_local_items_over_repo_root ... ok [INFO] [stdout] test integration::sync_reads_mars_src_local_items_without_package_section ... ok [INFO] [stdout] test integration::sync_json_includes_target_outcomes ... ok [INFO] [stdout] test integration::sync_idempotent ... ok [INFO] [stdout] test integration::rename_skill_rewrites_agent_skill_references ... ok [INFO] [stdout] test integration::sync_frozen_returns_exit_code_two ... ok [INFO] [stdout] test integration::sync_errors_when_lock_is_corrupt ... ok [INFO] [stdout] test integration::sync_force_overwrites_divergent_target ... ok [INFO] [stdout] test integration::sync_force_overwrites_local_changes ... ok [INFO] [stdout] test integration::why_traces_skill_to_source ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s [INFO] [stdout] [INFO] [stderr] Running tests/models_cache_ttl.rs (/opt/rustwide/target/debug/deps/models_cache_ttl-9cf4d7e12d04eae7) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test scenario_b_fresh_cache_skips_fetch ... ok [INFO] [stdout] test scenario_d_empty_cache_offline_errors_cleanly ... ok [INFO] [stdout] test scenario_a_cold_cache_refreshes_on_models_list ... ok [INFO] [stdout] test scenario_f_add_sync_force_and_resolve_dependency_alias ... ok [INFO] [stdout] test scenario_g_offline_sync_succeeds_without_cache_and_emits_diag ... ok [INFO] [stdout] test scenario_i_concurrent_processes_fetch_once ... ok [INFO] [stdout] test scenario_j_ttl_zero_always_refreshes ... ok [INFO] [stdout] test scenario_c_stale_cache_falls_back_on_fetch_failure ... ok [INFO] [stdout] test scenario_h_add_immediately_resolve_alias_without_explicit_sync ... ok [INFO] [stdout] test scenario_e_no_refresh_models_flag_matches_offline_behavior ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.85s [INFO] [stdout] [INFO] [stderr] Running tests/release_metadata.rs (/opt/rustwide/target/debug/deps/release_metadata-3e7486540c29818e) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test npm_launcher_routes_windows_to_exe_package ... ok [INFO] [stdout] test ci_workflow_runs_windows_build_test_clippy_and_fmt ... ok [INFO] [stdout] test npm_stub_declares_windows_optional_package ... ok [INFO] [stderr] Doc-tests mars_agents [INFO] [stdout] test release_workflow_builds_and_publishes_windows_artifacts ... ok [INFO] [stdout] test windows_npm_package_publishes_exe_only_for_win32_x64 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [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" "a7853a38b0fda1970ee4b3e1f6a2484e6949998abc8fc5ab10b654c7a3893a76", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a7853a38b0fda1970ee4b3e1f6a2484e6949998abc8fc5ab10b654c7a3893a76", kill_on_drop: false }` [INFO] [stdout] a7853a38b0fda1970ee4b3e1f6a2484e6949998abc8fc5ab10b654c7a3893a76