[INFO] cloning repository https://github.com/driftsys/upskill
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/driftsys/upskill" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdriftsys%2Fupskill", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdriftsys%2Fupskill'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] bb4409b4245fb01c424cb547f435b34be8f455b3
[INFO] testing driftsys/upskill against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdriftsys%2Fupskill" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/driftsys/upskill
[INFO] finished tweaking git repo https://github.com/driftsys/upskill
[INFO] tweaked toml for git repo https://github.com/driftsys/upskill written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/driftsys/upskill on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/driftsys/upskill already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893
[INFO] running `Command { std: "docker" "start" "e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling cc v1.2.58
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling nix v0.31.2
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling pulldown-cmark v0.11.3
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling getopts v0.2.24
[INFO] [stderr]    Compiling bumpalo v3.20.2
[INFO] [stderr]    Compiling rustc-hash v2.1.2
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling pulldown-cmark-escape v0.11.0
[INFO] [stderr]    Compiling webpki-roots v1.0.6
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling hybrid-array v0.4.9
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling crypto-common v0.2.1
[INFO] [stderr]    Compiling block-buffer v0.12.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling digest v0.11.2
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling ctrlc v3.5.2
[INFO] [stderr]    Compiling dprint-core-macros v0.1.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling rustls-webpki v0.103.10
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling dprint-core v0.67.4
[INFO] [stderr]    Compiling serde_yaml_ng v0.10.0
[INFO] [stderr]    Compiling dprint-plugin-markdown v0.21.1
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling ureq v2.12.1
[INFO] [stderr]    Compiling upskill v0.8.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 47.27s
[INFO] running `Command { std: "docker" "inspect" "e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling assert_cmd v2.2.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling roff v1.1.1
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling clap_mangen v0.2.33
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling dprint-plugin-markdown v0.21.1
[INFO] [stderr]    Compiling upskill v0.8.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 38.86s
[INFO] running `Command { std: "docker" "inspect" "e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.33s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/upskill-e90b0ae21031fcb9)
[INFO] [stdout] 
[INFO] [stdout] running 388 tests
[INFO] [stdout] test ancillary::tests::remove_claude_mcp_noop_when_no_file ... ok
[INFO] [stdout] test ancillary::tests::remove_opencode_plugin_uri_noop_when_no_file ... ok
[INFO] [stdout] test ancillary::tests::opencode_preserves_existing_entry ... ok
[INFO] [stdout] test ancillary::tests::remove_opencode_plugin_uri_noop_when_absent ... ok
[INFO] [stdout] test ancillary::tests::creates_claude_md_when_absent ... ok
[INFO] [stdout] test ancillary::tests::preserves_existing_claude_md_verbatim ... ok
[INFO] [stdout] test ancillary::tests::opencode_no_rules_is_no_op ... ok
[INFO] [stdout] test ancillary::tests::vscode_no_rules_is_no_op ... ok
[INFO] [stdout] test ancillary::tests::vscode_preserves_when_path_already_true ... ok
[INFO] [stdout] test ancillary::tests::vscode_preserves_when_path_explicitly_false ... ok
[INFO] [stdout] test ancillary::tests::opencode_creates_file_when_absent_and_has_rules ... ok
[INFO] [stdout] test ancillary::tests::remove_opencode_plugin_uri_removes_entry ... ok
[INFO] [stdout] test ancillary::tests::opencode_adds_instructions_when_field_absent ... ok
[INFO] [stdout] test ancillary::tests::vscode_creates_file_when_absent_and_has_rules ... ok
[INFO] [stdout] test ancillary::tests::vscode_adds_key_when_absent ... ok
[INFO] [stdout] test ancillary::tests::vscode_appends_when_key_present_without_path ... ok
[INFO] [stdout] test ancillary::tests::write_claude_mcp_json_adds_local_server ... ok
[INFO] [stdout] test ancillary::tests::write_claude_mcp_json_adds_remote_server ... ok
[INFO] [stdout] test ancillary::tests::write_opencode_plugin_uri_creates_file_when_absent ... ok
[INFO] [stdout] test ancillary::tests::write_opencode_plugin_uri_fails_on_non_array_plugin_key ... ok
[INFO] [stdout] test ancillary::tests::vscode_errors_on_non_object_top_level ... ok
[INFO] [stdout] test ancillary::tests::second_call_after_create_is_preserve ... ok
[INFO] [stdout] test ancillary::tests::opencode_errors_on_non_array_instructions ... ok
[INFO] [stdout] test ancillary::tests::opencode_appends_when_instructions_present_without_entry ... ok
[INFO] [stdout] test ancillary::tests::write_opencode_plugin_uri_appends_to_existing ... ok
[INFO] [stdout] test ancillary::tests::vscode_errors_on_non_object_instructions_value ... ok
[INFO] [stdout] test ancillary::tests::remove_claude_mcp_removes_server ... ok
[INFO] [stdout] test ancillary::tests::opencode_errors_on_non_object_top_level ... ok
[INFO] [stdout] test ancillary::tests::write_opencode_mcp_preserves_existing_keys ... ok
[INFO] [stdout] test ancillary::tests::write_claude_mcp_json_preserves_existing_servers ... ok
[INFO] [stdout] test ancillary::tests::write_vscode_mcp_uses_servers_root_and_stdio_type ... ok
[INFO] [stdout] test ancillary::tests::write_vscode_mcp_remote_types_by_transport ... ok
[INFO] [stdout] test config::tests::empty_project_clients_fall_back_to_global ... ok
[INFO] [stdout] test config::tests::merge_layers_project_overrides_global ... ok
[INFO] [stdout] test config::tests::load_config_returns_default_when_no_files ... ok
[INFO] [stdout] test config::tests::no_flags_no_config_targets_all ... ok
[INFO] [stdout] test bundle::tests::resolve_errors_on_missing_requirement ... ok
[INFO] [stdout] test config::tests::flags_override_config_selection ... ok
[INFO] [stdout] test bundle::tests::resolve_errors_on_cycle ... ok
[INFO] [stdout] test bundle::tests::resolve_walks_requires_in_dependency_order ... ok
[INFO] [stdout] test bundle::tests::resolve_unions_items_across_bundles ... ok
[INFO] [stdout] test bundle::tests::resolve_dedupe_path_diamond_does_not_error ... ok
[INFO] [stdout] test bundle::tests::resolve_allows_same_name_in_different_kinds ... ok
[INFO] [stdout] test ancillary::tests::write_opencode_plugin_uri_is_idempotent ... ok
[INFO] [stdout] test config::tests::no_flags_use_config_selection ... ok
[INFO] [stdout] test ancillary::tests::write_opencode_mcp_uses_array_command_and_environment ... ok
[INFO] [stdout] test bundle::tests::resolve_single_bundle_with_no_requires ... ok
[INFO] [stdout] test config::tests::project_clients_replace_global_clients ... ok
[INFO] [stdout] test conflict::tests::no_conflict_same_source ... ok
[INFO] [stdout] test conflict::tests::same_name_different_kind_no_conflict ... ok
[INFO] [stdout] test config::tests::parse_config_rejects_unknown_client ... ok
[INFO] [stdout] test config::tests::parse_config_with_registries ... ok
[INFO] [stdout] test config::tests::parse_config_no_registries_key ... ok
[INFO] [stdout] test ancillary::tests::remove_vscode_and_opencode_mcp_drop_only_the_named_server ... ok
[INFO] [stdout] test config::tests::parse_empty_config ... ok
[INFO] [stdout] test config::tests::parse_config_with_clients ... ok
[INFO] [stdout] test conflict::tests::no_conflict_item_not_in_lockfile ... ok
[INFO] [stdout] test fetch::tests::cleanup_removes_directory ... ok
[INFO] [stdout] test conflict::tests::conflict_different_source ... ok
[INFO] [stdout] test fetch::tests::resolve_subfolder_rejects_tilde_path ... ok
[INFO] [stdout] test fetch::tests::resolve_subfolder_rejects_absolute_path ... ok
[INFO] [stdout] test fetch::tests::resolve_subfolder_rejects_dot_dot_escape ... ok
[INFO] [stdout] test fetch::tests::copy_skills_skips_dot_git ... ok
[INFO] [stdout] test fetch::tests::resolve_subfolder_allows_internal_dot_dot ... ok
[INFO] [stdout] test bundle::tests::resolve_errors_on_item_conflict ... ok
[INFO] [stdout] test fetch::tests::copy_skills_preserves_nested_dirs ... ok
[INFO] [stdout] test fmt::tests::canonicalise_preserves_bundle_comments ... ok
[INFO] [stdout] test fmt::tests::fmt_handles_bundle ... ok
[INFO] [stdout] test fmt::tests::canonicalise_body_is_idempotent ... ok
[INFO] [stdout] test fmt::tests::canonicalise_preserves_clean_body_seam ... ok
[INFO] [stdout] test fmt::tests::fmt_preserves_bundle_comments_end_to_end ... ok
[INFO] [stdout] test fmt::tests::fmt_refuses_consumer_project ... ok
[INFO] [stdout] test fmt::tests::canonicalise_reorders_keys ... ok
[INFO] [stdout] test fmt::tests::reorder_bundle_mcps_after_plugins_before_metadata ... ok
[INFO] [stdout] test fmt::tests::canonicalise_preserves_html_comment_and_code_fence ... ok
[INFO] [stdout] test fmt::tests::canonicalise_formats_body ... ok
[INFO] [stdout] test fmt::tests::reorder_moves_blocks_to_canonical_order ... ok
[INFO] [stdout] test fmt::tests::reorder_preamble_stays_at_top ... ok
[INFO] [stdout] test fmt::tests::reorder_is_idempotent ... ok
[INFO] [stdout] test fmt::tests::reorder_preserves_indented_children ... ok
[INFO] [stdout] test fmt::tests::reorder_preserves_inline_comments ... ok
[INFO] [stdout] test fmt::tests::reorder_unknown_keys_sort_alphabetically_at_end ... ok
[INFO] [stdout] test fmt::tests::reorder_requires_ignore_after_metadata_before_claude ... ok
[INFO] [stdout] test fmt::tests::reorder_with_multiline_values ... ok
[INFO] [stdout] test generate::directives::tests::negative_strips_only_for_listed_client ... ok
[INFO] [stdout] test fmt::tests::fmt_skips_already_canonical_files ... ok
[INFO] [stdout] test fmt::tests::canonicalise_preserves_description_wrapping ... ok
[INFO] [stdout] test generate::directives::tests::positive_stripped_for_other_clients ... ok
[INFO] [stdout] test generate::directives::tests::nested_directive_errors ... ok
[INFO] [stdout] test fmt::tests::canonicalise_preserves_directives ... ok
[INFO] [stdout] test fmt::tests::fmt_handles_rule_with_scope ... ok
[INFO] [stdout] test generate::directives::tests::surrounding_blank_lines_collapsed_on_strip ... ok
[INFO] [stdout] test generate::directives::tests::unbalanced_close_without_open_errors ... ok
[INFO] [stdout] test generate::directives::tests::unbalanced_unclosed_errors ... ok
[INFO] [stdout] test generate::directives::tests::unknown_client_identifier_errors ... ok
[INFO] [stdout] test generate::directives::tests::positive_kept_for_listed_client ... ok
[INFO] [stdout] test generate::link_rewrite::tests::empty_copied_set_is_identity ... ok
[INFO] [stdout] test generate::link_rewrite::tests::leaves_absolute_path_untouched ... ok
[INFO] [stdout] test generate::link_rewrite::tests::idempotent ... ok
[INFO] [stdout] test generate::format::tests::empty_input_clean ... ok
[INFO] [stdout] test fmt::tests::canonicalise_is_idempotent ... ok
[INFO] [stdout] test generate::format::tests::multiline_inline_code_in_list_does_not_panic ... ok
[INFO] [stdout] test generate::link_rewrite::tests::leaves_inline_code_untouched ... ok
[INFO] [stdout] test generate::link_rewrite::tests::leaves_fenced_code_untouched ... ok
[INFO] [stdout] test generate::link_rewrite::tests::leaves_parent_escape_untouched ... ok
[INFO] [stdout] test generate::link_rewrite::tests::leaves_bare_fragment_untouched ... ok
[INFO] [stdout] test generate::link_rewrite::tests::leaves_uncopied_target_untouched ... ok
[INFO] [stdout] test generate::link_rewrite::tests::leaves_percent_encoded_parent_escape_untouched ... ok
[INFO] [stdout] test generate::link_rewrite::tests::leaves_urls_untouched ... ok
[INFO] [stdout] test generate::link_rewrite::tests::reprefix_leaves_non_resource_coincidence_untouched ... ok
[INFO] [stdout] test generate::link_rewrite::tests::reprefix_preserves_fragment ... ok
[INFO] [stdout] test fmt::tests::reorder_preserves_comments ... ok
[INFO] [stdout] test generate::link_rewrite::tests::reprefix_swaps_namespaced_segment ... ok
[INFO] [stdout] test generate::link_rewrite::tests::reprefix_without_dot_slash ... ok
[INFO] [stdout] test generate::link_rewrite::tests::rewrites_inline_link_with_dot_slash ... ok
[INFO] [stdout] test generate::link_rewrite::tests::rewrites_image ... ok
[INFO] [stdout] test generate::link_rewrite::tests::rewrites_inline_link_without_dot_slash ... ok
[INFO] [stdout] test generate::link_rewrite::tests::rewrites_percent_encoded_link_with_dot_slash ... ok
[INFO] [stdout] test generate::link_rewrite::tests::reprefix_identity_when_names_equal ... ok
[INFO] [stdout] test generate::link_rewrite::tests::preserves_title_and_fragment ... ok
[INFO] [stdout] test generate::link_rewrite::tests::rewrites_percent_encoded_link ... ok
[INFO] [stdout] test generate::link_rewrite::tests::rewrites_reference_definition ... ok
[INFO] [stdout] test generate::link_rewrite::tests::rewrites_url_not_text_when_link_text_repeats_dest ... ok
[INFO] [stdout] test generate::link_rewrite::tests::rewrites_url_not_title_when_title_repeats_dest ... ok
[INFO] [stdout] test generate::link_rewrite::tests::reprefix_leaves_sibling_prefix_untouched ... ok
[INFO] [stdout] test generate::link_rewrite::tests::rewrites_percent_encoded_reference_definition ... ok
[INFO] [stdout] test generate::link_rewrite::tests::rewrites_refdef_url_not_title_when_title_repeats_dest ... ok
[INFO] [stdout] test index::tests::index_cache_path ... ok
[INFO] [stdout] test index::tests::is_local_source_detects_windows_paths ... ok
[INFO] [stdout] test index::tests::build_index_for_local_path ... ok
[INFO] [stdout] test generate::format::tests::already_canonical_idempotent ... ok
[INFO] [stdout] test index::tests::ls_remote_head_empty_output ... ok
[INFO] [stdout] test index::tests::round_trip_index ... ok
[INFO] [stdout] test generate::tests::render_rule_uses_passed_name_not_frontmatter ... ok
[INFO] [stdout] test index::tests::is_stale_when_head_differs ... ok
[INFO] [stdout] test index::tests::scan_registry_finds_items ... ok
[INFO] [stdout] test index::tests::ls_remote_head_parses_output ... ok
[INFO] [stdout] test generate::link_rewrite::tests::reprefix_percent_encoded_remainder ... ok
[INFO] [stdout] test fmt::tests::canonicalise_preserves_frontmatter_comments ... ok
[INFO] [stdout] test lint::tests::lint_flags_invalid_mcps_transport_in_bundle ... ok
[INFO] [stdout] test lint::tests::lint_flags_bundle_filename_mismatch ... ok
[INFO] [stdout] test lint::tests::lint_clean_skill_yields_no_findings ... ok
[INFO] [stdout] test lint::tests::lint_detects_fence_without_language ... ok
[INFO] [stdout] test lint::tests::lint_detects_h1_in_body ... ok
[INFO] [stdout] test generate::tests::preload_skills_not_in_body_for_claude ... ok
[INFO] [stdout] test lint::tests::lint_item_directory_reports_findings ... ok
[INFO] [stdout] test lint::tests::lint_flags_unbalanced_directive ... ok
[INFO] [stdout] test generate::tests::preload_skills_rendered_as_prose_for_copilot_and_opencode ... ok
[INFO] [stdout] test lint::tests::lint_clean_body_has_no_body_format_finding ... ok
[INFO] [stdout] test lint::tests::lint_refuses_consumer_project ... ok
[INFO] [stdout] test lint::tests::lint_item_directory_with_multiple_entrypoints ... ok
[INFO] [stdout] test lint::tests::lint_strict_promotes_body_format_to_error ... ok
[INFO] [stdout] test lockfile::tests::items_are_sorted_for_deterministic_output ... ok
[INFO] [stdout] test generate::format::tests::wrap_width_config_takes_effect ... ok
[INFO] [stdout] test lockfile::tests::items_from_report_dedupes_per_kind_name ... ok
[INFO] [stdout] test lockfile::tests::existing_lockfile_without_plugins_field_loads_fine ... ok
[INFO] [stdout] test lint::tests::lint_skill_name_mismatch_is_flagged_but_rule_divergence_is_silent ... ok
[INFO] [stdout] test lint::tests::lint_flags_name_directory_mismatch ... ok
[INFO] [stdout] test lockfile::tests::load_missing_file_returns_empty ... ok
[INFO] [stdout] test lockfile::tests::new_lockfile_has_current_schema ... ok
[INFO] [stdout] test lockfile::tests::load_rejects_newer_schema ... ok
[INFO] [stdout] test lockfile::tests::load_rejects_unrecognised_shape ... ok
[INFO] [stdout] test lockfile::tests::locked_item_serializes_source_name_when_present ... ok
[INFO] [stdout] test lockfile::tests::locked_item_omits_source_name_when_none ... ok
[INFO] [stdout] test lint::tests::lint_flags_unformatted_body ... ok
[INFO] [stdout] test lint::tests::lint_item_directory_discovers_entrypoint ... ok
[INFO] [stdout] test lockfile::tests::save_and_load_roundtrip ... ok
[INFO] [stdout] test lockfile::tests::remove_plugins_by_name_removes_all_clients ... ok
[INFO] [stdout] test lint::tests::lint_skips_h1_inside_fence ... ok
[INFO] [stdout] test lockfile::tests::remove_filters_by_kind_and_name ... ok
[INFO] [stdout] test lockfile::tests::plugins_roundtrip_through_save_and_load ... ok
[INFO] [stdout] test lockfile::tests::remove_mcps_by_name_drops_all_clients ... ok
[INFO] [stdout] test lockfile::tests::upsert_mcp_replaces_by_name_and_client ... ok
[INFO] [stdout] test lockfile::tests::upsert_plugin_adds_new_entry ... ok
[INFO] [stdout] test lockfile::tests::upsert_replaces_existing_item_with_same_kind_and_name ... ok
[INFO] [stdout] test mcp::tests::claude_remote_args_include_transport_and_url ... ok
[INFO] [stdout] test lockfile::tests::skipped_plugin_roundtrips_through_save_and_load ... ok
[INFO] [stdout] test lockfile::tests::upsert_keeps_distinct_kinds_separate ... ok
[INFO] [stdout] test mcp::tests::copilot_remote_args_include_transport_and_url ... ok
[INFO] [stdout] test mcp::tests::mcp_target_names_are_stable ... ok
[INFO] [stdout] test generate::tests::empty_preload_skills_produces_no_skills_section ... ok
[INFO] [stdout] test mcp::tests::vscode_local_json_uses_stdio_type_and_inline_name ... ok
[INFO] [stdout] test mcp::tests::copilot_local_args_have_no_scope_flag ... ok
[INFO] [stdout] test mcp::tests::vscode_remote_json_carries_transport_type_and_url ... ok
[INFO] [stdout] test model::requires::tests::empty_when_no_kinds ... ok
[INFO] [stdout] test mcp::tests::claude_local_args_include_scope_env_and_command ... ok
[INFO] [stdout] test model::requires::tests::parses_bare_string_and_map_entries ... ok
[INFO] [stdout] test lockfile::tests::plugin_without_status_field_defaults_to_installed_on_load ... ok
[INFO] [stdout] test lockfile::tests::save_is_atomic_no_tmp_file_remains ... ok
[INFO] [stdout] test parse::bundle::tests::discover_errors_when_schema_present_but_otherwise_malformed ... ok
[INFO] [stdout] test parse::bundle::tests::discover_empty_when_root_missing_or_no_bundles ... ok
[INFO] [stdout] test parse::bundle::tests::load_parses_instructions_only_plugin ... ok
[INFO] [stdout] test parse::bundle::tests::load_accepts_empty_items_when_only_requires ... ok
[INFO] [stdout] test parse::bundle::tests::load_parses_mcp_remote_and_local ... ok
[INFO] [stdout] test parse::bundle::tests::load_parses_plugins_with_all_clients ... ok
[INFO] [stdout] test parse::bundle::tests::discover_skips_yaml_files_without_schema_field ... ok
[INFO] [stdout] test lint::tests::lint_strict_promotes_warnings_to_errors ... ok
[INFO] [stdout] test parse::bundle::tests::load_parses_config_write_plugin ... ok
[INFO] [stdout] test parse::bundle::tests::load_accepts_bundle_without_plugins ... ok
[INFO] [stdout] test parse::bundle::tests::load_parses_plugins_with_single_client ... ok
[INFO] [stdout] test lockfile::tests::upsert_plugin_replaces_by_name_and_client ... ok
[INFO] [stdout] test parse::bundle::tests::load_parses_requires_with_and_without_version ... ok
[INFO] [stdout] test parse::bundle::tests::load_parses_requires_with_cross_source ... ok
[INFO] [stdout] test parse::bundle::tests::discover_finds_bundles_recursively_anywhere_in_tree ... ok
[INFO] [stdout] test parse::bundle::tests::load_rejects_filename_stem_mismatch ... ok
[INFO] [stdout] test parse::bundle::tests::load_rejects_string_form_requires ... ok
[INFO] [stdout] test parse::bundle::tests::load_round_trips_format_spec_example ... ok
[INFO] [stdout] test parse::frontmatter::tests::agent_appendix_a4_round_trip ... ok
[INFO] [stdout] test parse::frontmatter::tests::parse_rejects_missing_frontmatter ... ok
[INFO] [stdout] test parse::frontmatter::tests::rule_appendix_a2_round_trip ... ok
[INFO] [stdout] test parse::frontmatter::tests::parse_rejects_schema_2 ... ok
[INFO] [stdout] test parse::bundle::tests::load_rejects_claude_plugin_without_marketplace ... ok
[INFO] [stdout] test parse::frontmatter::tests::requires_and_ignore_parse_into_typed_fields_not_extra ... ok
[INFO] [stdout] test parse::frontmatter::tests::split_basic ... ok
[INFO] [stdout] test parse::frontmatter::tests::metadata_unknown_keys_preserved ... ok
[INFO] [stdout] test parse::bundle::tests::load_rejects_mcp_local_empty_command ... ok
[INFO] [stdout] test parse::frontmatter::tests::skill_appendix_a3_round_trip ... ok
[INFO] [stdout] test parse::frontmatter::tests::split_empty_frontmatter ... ok
[INFO] [stdout] test parse::bundle::tests::load_rejects_mcp_remote_with_bad_type ... ok
[INFO] [stdout] test parse::frontmatter::tests::split_strips_bom ... ok
[INFO] [stdout] test pipeline::discovery::tests::find_bundle_by_name_returns_none_when_not_found ... ok
[INFO] [stdout] test pipeline::discovery::tests::find_bundle_by_name_skips_hidden_dirs ... ok
[INFO] [stdout] test parse::frontmatter::tests::split_no_fence_returns_none ... ok
[INFO] [stdout] test pipeline::discovery::tests::has_matching_items_true_for_rules_and_agents ... ok
[INFO] [stdout] test pipeline::discovery::tests::has_ssot_layout_detects_direct_children ... ok
[INFO] [stdout] test pipeline::discovery::tests::is_override_file_matches_every_kind_and_client ... ok
[INFO] [stdout] test pipeline::discovery::tests::find_bundle_by_name_finds_nested_bundle_file ... ok
[INFO] [stdout] test pipeline::discovery::tests::find_registry_root_returns_parent_for_sibling_layout ... ok
[INFO] [stdout] test pipeline::discovery::tests::iter_item_dirs_still_finds_direct_children ... ok
[INFO] [stdout] test pipeline::discovery::tests::has_matching_items_true_when_skill_exists ... ok
[INFO] [stdout] test pipeline::discovery::tests::iter_item_dirs_finds_items_in_category_subdirs ... ok
[INFO] [stdout] test pipeline::discovery::tests::has_matching_items_false_when_no_item_exists ... ok
[INFO] [stdout] test pipeline::discovery::tests::iter_item_resources_excludes_entrypoint_and_overrides ... ok
[INFO] [stdout] test pipeline::discovery::tests::has_ssot_layout_returns_false_for_empty_dir ... ok
[INFO] [stdout] test pipeline::discovery::tests::is_override_file_rejects_non_overrides ... ok
[INFO] [stdout] test pipeline::discovery::tests::iter_item_resources_does_not_loop_on_symlink_cycle ... ok
[INFO] [stdout] test pipeline::discovery::tests::iter_item_resources_empty_when_only_entrypoint ... ok
[INFO] [stdout] test pipeline::discovery::tests::has_ssot_layout_detects_grandchild_entrypoints ... ok
[INFO] [stdout] test pipeline::git::tests::git_clone_url_appends_dot_git ... ok
[INFO] [stdout] test pipeline::git::tests::github_clone_url_is_https_dot_git ... ok
[INFO] [stdout] test pipeline::git::tests::repo_display_parts_splits_last_segment ... ok
[INFO] [stdout] test pipeline::ignore::tests::bare_dir_name_ignores_subtree ... ok
[INFO] [stdout] test pipeline::git::tests::git_clone_url_preserves_deep_paths_and_ports ... ok
[INFO] [stdout] test pipeline::ignore::tests::double_star_prefix_drops_subtree ... ok
[INFO] [stdout] test pipeline::ignore::tests::bare_name_matches_basename_at_any_depth ... ok
[INFO] [stdout] test pipeline::ignore::tests::non_matching_pattern_keeps_file ... ok
[INFO] [stdout] test pipeline::ignore::tests::single_star_does_not_cross_slash ... ok
[INFO] [stdout] test pipeline::ignore::tests::empty_patterns_keep_everything ... ok
[INFO] [stdout] test pipeline::install::tests::audience_subset_filters_other_clients ... ok
[INFO] [stdout] test pipeline::install::tests::audience_none_targets_all_clients ... ok
[INFO] [stdout] test pipeline::install::tests::closure_errors_on_missing_cross_source_item ... ok
[INFO] [stdout] test pipeline::install::tests::closure_pulls_cross_source_dependency ... ok
[INFO] [stdout] test pipeline::install::tests::closure_pulls_same_source_dependency ... ok
[INFO] [stdout] test pipeline::install::tests::closure_rejects_cycle ... ok
[INFO] [stdout] test pipeline::install::tests::closure_rejects_cross_source_cycle ... ok
[INFO] [stdout] test lockfile::tests::upsert_plugin_keeps_different_clients_separate ... ok
[INFO] [stdout] test pipeline::output::tests::output_path_dispatches_to_per_kind_helper ... ok
[INFO] [stdout] test pipeline::output::tests::is_dir_backed_matches_layout ... ok
[INFO] [stdout] test pipeline::output::tests::output_paths_match_spec ... ok
[INFO] [stdout] test pipeline::output::tests::resource_base_dir_backed_is_entrypoint_dir ... ok
[INFO] [stdout] test pipeline::install::tests::closure_skips_absent_preload_skill ... ok
[INFO] [stdout] test pipeline::install::tests::closure_rejects_same_item_from_two_sources ... ok
[INFO] [stdout] test pipeline::output::tests::remove_item_outputs_never_wipes_sibling_items_in_shared_dir ... ok
[INFO] [stdout] test pipeline::output::tests::resource_base_flat_is_sibling_namespace_dir ... ok
[INFO] [stdout] test pipeline::report::tests::doctor_report_clean_with_config_missing_or_unreadable_mcp ... ok
[INFO] [stdout] test pipeline::report::tests::doctor_report_clean_with_mcp_cli_not_found_or_query_failed ... ok
[INFO] [stdout] test pipeline::output::tests::remove_item_outputs_deletes_flat_kind_resource_dir ... ok
[INFO] [stdout] test pipeline::report::tests::doctor_report_is_clean_when_all_buckets_empty ... ok
[INFO] [stdout] test plugin::tests::check_output_for_exact_line_case_insensitive ... ok
[INFO] [stdout] test pipeline::report::tests::doctor_report_not_clean_with_not_registered_mcp ... ok
[INFO] [stdout] test plugin::tests::check_output_for_exact_line_cli_not_found ... ok
[INFO] [stdout] test pipeline::report::tests::doctor_report_not_clean_with_any_drift ... ok
[INFO] [stdout] test plugin::tests::check_output_for_exact_line_finds_matching_extension ... ok
[INFO] [stdout] test plugin::tests::check_output_for_substring_finds_plugin_name ... ok
[INFO] [stdout] test plugin::tests::check_output_for_substring_returns_not_installed_when_absent ... ok
[INFO] [stdout] test plugin::tests::check_output_query_failed_maps_correctly ... ok
[INFO] [stdout] test plugin::tests::check_vscode_extension_installed_returns_cli_not_found_when_no_binary ... ok
[INFO] [stdout] test pipeline::output::tests::copy_item_resources_preserves_tree ... ok
[INFO] [stdout] test parse::bundle::tests::plugins_round_trips_through_serialize ... ok
[INFO] [stdout] test plugin::tests::check_output_for_exact_line_returns_not_installed_when_absent ... ok
[INFO] [stdout] test plugin::tests::is_cli_available_returns_false_for_nonexistent_binary ... ok
[INFO] [stdout] test plugin::tests::install_claude_returns_cli_not_found_when_binary_missing ... ok
[INFO] [stdout] test plugin::tests::install_copilot_returns_cli_not_found_when_binary_missing ... ok
[INFO] [stdout] test plugin::tests::install_opencode_returns_cli_not_found_when_binary_missing ... ok
[INFO] [stdout] test plugin::tests::plugin_check_result_predicates ... ok
[INFO] [stdout] test plugin::tests::plugin_scope_as_claude_flag ... ok
[INFO] [stdout] test plugin::tests::outcome_is_success_predicate ... ok
[INFO] [stdout] test plugin::tests::run_command_returns_success_on_zero_exit ... ok
[INFO] [stdout] test plugin::tests::is_cli_available_returns_true_for_known_binary ... ok
[INFO] [stdout] test scaffold::tests::parse_kind_round_trips_strings ... ok
[INFO] [stdout] test plugin::tests::outcome_is_cli_not_found_predicate ... ok
[INFO] [stdout] test plugin::tests::uninstall_copilot_returns_cli_not_found_when_binary_missing ... ok
[INFO] [stdout] test plugin::tests::run_command_returns_failed_on_nonzero_exit ... ok
[INFO] [stdout] test plugin::tests::check_output_for_substring_cli_not_found ... ok
[INFO] [stdout] test plugin::tests::install_vscode_returns_cli_not_found_when_binary_missing ... ok
[INFO] [stdout] test scaffold::tests::scaffold_refuses_existing_entrypoint ... ok
[INFO] [stdout] test scaffold::tests::scaffold_colocates_when_existing_entrypoint_shares_name ... ok
[INFO] [stdout] test scaffold::tests::scaffold_coloc_succeeds_when_existing_agent_has_divergent_name ... ok
[INFO] [stdout] test scaffold::tests::scaffold_refuses_consumer_project ... ok
[INFO] [stdout] test scaffold::tests::scaffold_skill_writes_canonical_skill_md ... ok
[INFO] [stdout] test scaffold::tests::scaffold_refuses_coloc_when_existing_skill_has_divergent_name ... ok
[INFO] [stdout] test scaffold::tests::scaffold_refuses_coloc_when_existing_name_mismatches ... ok
[INFO] [stdout] test scaffold::tests::scaffold_refuses_when_dir_exists_without_entrypoint ... ok
[INFO] [stdout] test pipeline::ignore::tests::question_mark_matches_single_char ... ok
[INFO] [stdout] test scaffold::tests::scaffold_agent_emits_subagent_sonnet_defaults ... ok
[INFO] [stdout] test scaffold::tests::validate_name_accepts_canonical_forms ... ok
[INFO] [stdout] test scaffold::tests::validate_name_rejects_invalid_forms ... ok
[INFO] [stdout] test scaffold::tests::validate_name_rejects_too_long ... ok
[INFO] [stdout] test scaffold::tests::scaffold_coloc_succeeds_when_existing_rule_has_divergent_name ... ok
[INFO] [stdout] test select::tests::copilot_and_vscode_share_one_generation_client ... ok
[INFO] [stdout] test search::tests::build_agent_succeeds_with_valid_proxy ... ok
[INFO] [stdout] test search::tests::proxy_from_env_falls_back_to_lowercase ... ok
[INFO] [stdout] test search::tests::proxy_from_env_reads_https_proxy ... ok
[INFO] [stdout] test search::tests::proxy_from_env_ignores_empty_value ... ok
[INFO] [stdout] test select::tests::from_str_rejects_unknown ... ok
[INFO] [stdout] test search::tests::build_agent_succeeds_with_no_proxy ... ok
[INFO] [stdout] test search::tests::proxy_from_env_returns_none_when_unset ... ok
[INFO] [stdout] test select::tests::from_str_round_trips_all_names ... ok
[INFO] [stdout] test source::tests::home_dir_falls_back_to_userprofile ... ok
[INFO] [stdout] test select::tests::mcp_mapping_is_one_to_one ... ok
[INFO] [stdout] test select::tests::vscode_maps_to_copilot_generation ... ok
[INFO] [stdout] test select::tests::vscode_only_targets_copilot_generation_but_only_vscode_mcp ... ok
[INFO] [stdout] test source::tests::home_dir_prefers_home_over_userprofile ... ok
[INFO] [stdout] test source::tests::home_dir_returns_none_when_neither_set ... ok
[INFO] [stdout] test source::tests::home_dir_reads_home_var ... ok
[INFO] [stdout] test source::tests::label_rejects_bare_string ... ok
[INFO] [stdout] test search::tests::search_index_matches_name_and_description ... ok
[INFO] [stdout] test select::tests::claude_only_excludes_other_generation_clients ... ok
[INFO] [stdout] test source::tests::label_roundtrip_local_path ... ok
[INFO] [stdout] test select::tests::default_and_empty_restrict_target_everything ... ok
[INFO] [stdout] test source::tests::label_roundtrip_github_minimal ... ok
[INFO] [stdout] test source::tests::label_roundtrip_github_full ... ok
[INFO] [stdout] test source::tests::label_roundtrip_git_full ... ok
[INFO] [stdout] test source::tests::parse_git_url_gitlab_com ... ok
[INFO] [stdout] test source::tests::git_label_exact_form ... ok
[INFO] [stdout] test source::tests::parse_git_url_bitbucket ... ok
[INFO] [stdout] test source::tests::label_roundtrip_git_minimal ... ok
[INFO] [stdout] test source::tests::label_roundtrip_git_with_port ... ok
[INFO] [stdout] test source::tests::parse_git_url_strips_dot_git_before_ref_and_subfolder ... ok
[INFO] [stdout] test source::tests::parse_git_url_strips_trailing_dot_git ... ok
[INFO] [stdout] test source::tests::parse_git_url_self_hosted_with_port ... ok
[INFO] [stdout] test source::tests::parse_git_url_single_path_segment ... ok
[INFO] [stdout] test source::tests::parse_git_url_strips_trailing_slash ... ok
[INFO] [stdout] test source::tests::label_rejects_removed_gitlab_shorthand ... ok
[INFO] [stdout] test source::tests::parse_git_url_with_ref_and_subfolder ... ok
[INFO] [stdout] test source::tests::parse_github_source_with_subfolder ... ok
[INFO] [stdout] test source::tests::parse_local_path_dot_dot_slash ... ok
[INFO] [stdout] test source::tests::parse_git_url_subgroups_any_depth ... ok
[INFO] [stdout] test source::tests::parse_github_source_without_subfolder ... ok
[INFO] [stdout] test source::tests::parse_local_path_tilde_alone_expands_to_home ... ok
[INFO] [stdout] test source::tests::parse_local_path_windows_drive_letter ... ok
[INFO] [stdout] test source::tests::parse_ref_branch ... ok
[INFO] [stdout] test source::tests::parse_ref_tag ... ok
[INFO] [stdout] test source::tests::parse_ref_with_subfolder ... ok
[INFO] [stdout] test source::tests::parse_github_url ... ok
[INFO] [stdout] test source::tests::parse_local_path_absolute ... ok
[INFO] [stdout] test source::tests::parse_local_path_dot_slash ... ok
[INFO] [stdout] test source::tests::reject_empty_ref_with_subfolder ... ok
[INFO] [stdout] test source::tests::reject_empty_ref ... ok
[INFO] [stdout] test source::tests::parse_ref_commit_sha ... ok
[INFO] [stdout] test source::tests::reject_empty_owner ... ok
[INFO] [stdout] test source::tests::reject_git_url_empty_ref ... ok
[INFO] [stdout] test source::tests::parse_valid_owner_repo ... ok
[INFO] [stdout] test source::tests::reject_empty_repo ... ok
[INFO] [stdout] test source::tests::reject_empty_subfolder ... ok
[INFO] [stdout] test pipeline::install::tests::closure_folds_preload_skills ... ok
[INFO] [stdout] test source::tests::reject_missing_separator ... ok
[INFO] [stdout] test source::tests::reject_removed_gitlab_plus_shorthand ... ok
[INFO] [stdout] test source::tests::relative_local_path_canonicalizes_to_absolute_label ... ok
[INFO] [stdout] test source::tests::reject_extra_slashes ... ok
[INFO] [stdout] test style::tests::empty_no_color_does_not_disable ... ok
[INFO] [stdout] test style::tests::force_color_re_enables_when_piped ... ok
[INFO] [stdout] test style::tests::no_color_env_disables ... ok
[INFO] [stdout] test style::tests::no_color_flag_disables ... ok
[INFO] [stdout] test style::tests::term_dumb_disables ... ok
[INFO] [stdout] test source::tests::reject_whitespace_subfolder ... ok
[INFO] [stdout] test source::tests::reject_git_url_empty_subfolder ... ok
[INFO] [stdout] test style::tests::upskill_no_color_disables ... ok
[INFO] [stdout] test source::tests::reject_removed_gitlab_shorthand ... ok
[INFO] [stdout] test source::tests::reject_git_url_without_path ... ok
[INFO] [stdout] test source::tests::reject_git_url_with_empty_path ... ok
[INFO] [stdout] test source::tests::parse_local_path_tilde_expands_home ... ok
[INFO] [stdout] test fetch::tests::sparse_clone_fetches_only_subfolder ... ok
[INFO] [stdout] test fetch::tests::sparse_clone_with_git_ref ... ok
[INFO] [stdout] test fetch::tests::shallow_clone_local_repo ... ok
[INFO] [stdout] test fetch::tests::shallow_clone_without_subfolder_fetches_everything ... ok
[INFO] [stdout] test fetch::tests::clone_missing_subfolder_fails ... ok
[INFO] [stdout] test fetch::tests::clone_with_subfolder ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 388 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.43s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/upskill-dd7daad1733e4282)
[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_add.rs (/opt/rustwide/target/debug/deps/cli_add-367950f8e203ce21)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test add_invalid_source_returns_usage_error ... ok
[INFO] [stdout] test add_with_items_no_match_is_general_error ... ok
[INFO] [stdout] test add_installs_local_ssot_to_cwd ... ok
[INFO] [stdout] test add_with_items_subset_installs_only_named_items ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_alias_requires.rs (/opt/rustwide/target/debug/deps/cli_alias_requires-e93512df98406344)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test dependency_provenance_survives_dependency_alias ... ok
[INFO] [stdout] test doctor_does_not_flag_dependency_when_requirer_aliased ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_bundle_cross_source.rs (/opt/rustwide/target/debug/deps/cli_bundle_cross_source-df6d9d5898f6ef6d)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test add_bundle_cross_source_item_conflict_errors ... ok
[INFO] [stdout] test add_bundle_cross_source_cycle_errors ... ok
[INFO] [stdout] test add_bundle_by_name_pulls_cross_source_required_bundle ... ok
[INFO] [stdout] test add_bundle_missing_cross_source_bundle_errors ... ok
[INFO] [stdout] test add_bundle_pulls_cross_source_required_bundle ... ok
[INFO] [stderr]      Running tests/cli_bundle_install.rs (/opt/rustwide/target/debug/deps/cli_bundle_install-570e214ad7522281)
[INFO] [stdout] test add_bundle_cross_source_dep_with_same_source_subdeps ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test bundle_install_errors_on_item_conflict ... ok
[INFO] [stdout] test bundle_install_sibling_layout_discovers_items_in_peer_directories ... ok
[INFO] [stdout] test bundle_install_writes_only_referenced_items ... ok
[INFO] [stdout] test bundle_install_records_bundle_in_lockfile ... ok
[INFO] [stdout] test bundle_install_resolves_transitive_requires ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_ci_mode.rs (/opt/rustwide/target/debug/deps/cli_ci_mode-482ead772ce79a23)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test no_color_env_strips_ansi ... ok
[INFO] [stdout] test force_color_re_enables_when_piped ... ok
[INFO] [stdout] test term_dumb_strips_ansi ... ok
[INFO] [stdout] test no_color_flag_strips_ansi ... ok
[INFO] [stdout] test upskill_no_color_strips_ansi ... ok
[INFO] [stderr]      Running tests/cli_client_filtering.rs (/opt/rustwide/target/debug/deps/cli_client_filtering-0a33fa300bb24521)
[INFO] [stdout] test piped_output_strips_ansi_by_default ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 11 tests
[INFO] [stdout] test empty_audience_selection_warns_and_skips ... ok
[INFO] [stdout] test project_config_overrides_global_config ... ok
[INFO] [stdout] test project_config_clients_restricts_without_flags ... ok
[INFO] [stdout] test doctor_clean_after_narrowed_install ... ok
[INFO] [stdout] test mcp_fanout_respects_selection ... ok
[INFO] [stdout] test copilot_and_vscode_share_github_tree ... ok
[INFO] [stdout] test claude_flag_writes_only_claude_tree ... ok
[INFO] [stdout] test update_preserves_narrowed_selection ... ok
[INFO] [stdout] test default_add_writes_all_three_client_trees ... ok
[INFO] [stdout] test global_install_ignores_project_config ... ok
[INFO] [stdout] test invocation_flag_overrides_config ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_colocation_remove.rs (/opt/rustwide/target/debug/deps/cli_colocation_remove-970c63af5fd57150)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test remove_solo_item_leaves_independent_items_in_other_folders ... ok
[INFO] [stdout] test remove_unknown_name_still_errors ... ok
[INFO] [stdout] test remove_named_member_removes_the_whole_colocated_unit ... ok
[INFO] [stderr]      Running tests/cli_conflict.rs (/opt/rustwide/target/debug/deps/cli_conflict-bca0dc25f6841573)
[INFO] [stdout] test remove_by_divergent_rule_name_removes_whole_unit ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test add_from_different_source_succeeds_with_force ... ok
[INFO] [stdout] test update_handles_aliased_items ... ok
[INFO] [stdout] test add_with_exclude_skips_named_item ... ok
[INFO] [stdout] test add_from_different_source_errors_without_force ... ok
[INFO] [stdout] test update_dry_run_handles_aliased_items ... ok
[INFO] [stdout] test add_with_alias_installs_under_alternate_name ... ok
[INFO] [stdout] test add_from_same_source_succeeds_without_force ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_doctor.rs (/opt/rustwide/target/debug/deps/cli_doctor-f6399becfbcb7419)
[INFO] [stdout] 
[INFO] [stdout] running 13 tests
[INFO] [stdout] test doctor_empty_lockfile_exits_zero ... ok
[INFO] [stdout] test doctor_skipped_plugin_exits_zero_and_reports_it ... ok
[INFO] [stdout] test doctor_installed_plugin_missing_from_client_exits_one ... ok
[INFO] [stdout] test doctor_installed_plugin_present_in_client_exits_zero ... ok
[INFO] [stdout] test doctor_detects_ssot_hash_drift ... ok
[INFO] [stdout] test doctor_json_missing_output_lists_files ... ok
[INFO] [stdout] test doctor_json_clean_install_emits_empty_buckets ... ok
[INFO] [stdout] test doctor_json_orphan_entry_has_kebab_case_reason ... ok
[INFO] [stdout] test doctor_detects_missing_output_files ... ok
[INFO] [stdout] test doctor_json_includes_skipped_plugins_bucket ... ok
[INFO] [stdout] test doctor_detects_orphan_when_item_removed_from_source ... ok
[INFO] [stdout] test doctor_clean_install_exits_zero ... ok
[INFO] [stdout] test doctor_detects_orphan_when_local_path_gone ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.77s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_doctor_orphan.rs (/opt/rustwide/target/debug/deps/cli_doctor_orphan-a38bc3b25edfa8b8)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test doctor_does_not_flag_dependency_while_requirer_installed ... ok
[INFO] [stdout] test doctor_flags_orphaned_dependency_after_requirer_removed ... ok
[INFO] [stderr]      Running tests/cli_doctor_source_lookup.rs (/opt/rustwide/target/debug/deps/cli_doctor_source_lookup-b136a35c0222c562)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test doctor_clean_for_divergent_named_rule ... ok
[INFO] [stdout] test doctor_clean_for_aliased_item ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_exit_codes.rs (/opt/rustwide/target/debug/deps/cli_exit_codes-83abf8e367d5635b)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test general_errors_exit_one ... ok
[INFO] [stdout] test removed_gitlab_shorthand_exits_two_with_url_hint ... ok
[INFO] [stdout] test help_exits_zero ... ok
[INFO] [stdout] test version_short_flag_prints_to_stdout_and_exits_zero ... ok
[INFO] [stdout] test version_long_flag_prints_to_stdout_and_exits_zero ... ok
[INFO] [stdout] test usage_errors_exit_two ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_fmt.rs (/opt/rustwide/target/debug/deps/cli_fmt-74a9f875083b02f1)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test fmt_refuses_to_run_inside_consumer_project ... ok
[INFO] [stdout] test fmt_reorders_frontmatter_keys_canonically ... ok
[INFO] [stdout] test fmt_preserves_already_canonical_body_structure ... ok
[INFO] [stdout] test fmt_is_idempotent ... ok
[INFO] [stdout] test fmt_reports_files_changed_count ... ok
[INFO] [stdout] test fmt_formats_markdown_body ... ok
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_global_scope.rs (/opt/rustwide/target/debug/deps/cli_global_scope-3f1365d5fcf04960)
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test add_global_errors_clearly_when_neither_home_nor_userprofile_set ... ok
[INFO] [stdout] test global_and_project_flags_conflict ... ok
[INFO] [stdout] test list_global_reads_home_lockfile ... ok
[INFO] [stdout] test add_short_g_flag_works_too ... ok
[INFO] [stdout] test project_flag_overrides_auto_fallback ... ok
[INFO] [stdout] test add_global_writes_under_home_not_cwd ... ok
[INFO] [stdout] test auto_fallback_when_not_in_git_repo_uses_global ... ok
[INFO] [stdout] test add_global_uses_userprofile_when_home_unset ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.32s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_install.rs (/opt/rustwide/target/debug/deps/cli_install-479bd721ce0afb24)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test unsupported_platform_fails_with_cargo_hint ... ok
[INFO] [stdout] test help_works_without_home_env ... ok
[INFO] [stdout] test help_flag_prints_usage_and_exits_zero ... ok
[INFO] [stdout] test unsupported_platform_without_home_still_hints ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_lint.rs (/opt/rustwide/target/debug/deps/cli_lint-de9316788441dc74)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test lint_flags_h1_in_body_as_warning ... ok
[INFO] [stdout] test lint_flags_name_directory_mismatch_as_error ... ok
[INFO] [stdout] test lint_flags_unformatted_body_as_warning ... ok
[INFO] [stdout] test lint_flags_fence_without_language_as_warning ... ok
[INFO] [stdout] test lint_refuses_to_run_inside_consumer_project ... ok
[INFO] [stdout] test lint_strict_fails_on_unformatted_body ... ok
[INFO] [stdout] test lint_flags_bundle_item_name_collision ... ok
[INFO] [stdout] test lint_flags_unbalanced_directive_as_error ... ok
[INFO] [stdout] test lint_strict_promotes_warnings_to_errors ... ok
[INFO] [stdout] test lint_clean_fixture_corpus_exits_zero ... ok
[INFO] [stderr]      Running tests/cli_list.rs (/opt/rustwide/target/debug/deps/cli_list-1333a944cef6129e)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test list_empty_lockfile_reports_no_items ... ok
[INFO] [stdout] test list_json_empty_lockfile_emits_empty_buckets ... ok
[INFO] [stdout] test list_bundle_install_surfaces_bundles_section ... ok
[INFO] [stdout] test list_json_groups_installed_items_by_kind ... ok
[INFO] [stdout] test list_groups_installed_items_by_kind ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_mangen.rs (/opt/rustwide/target/debug/deps/cli_mangen-7a104210b243a857)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test root_man_page_has_synopsis_and_name ... ok
[INFO] [stdout] test root_man_page_documents_quiet_flag ... ok
[INFO] [stdout] test every_subcommand_renders_a_man_page ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_mcp.rs (/opt/rustwide/target/debug/deps/cli_mcp-9f5a18f0004ca095)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test add_bundle_with_mcp_writes_claude_mcp_json ... ok
[INFO] [stdout] test add_bundle_with_mcp_is_deterministic_second_run ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_misc.rs (/opt/rustwide/target/debug/deps/cli_misc-ba7ea5f321016f36)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test install_is_not_an_alias_for_add ... ok
[INFO] [stdout] test uninstall_is_not_an_alias_for_remove ... ok
[INFO] [stdout] test outputs_are_file_copies_not_symlinks ... ok
[INFO] [stdout] test claude_md_bridge_content_is_at_agents_md ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_new.rs (/opt/rustwide/target/debug/deps/cli_new-39ad43609292dac7)
[INFO] [stdout] running 7 tests
[INFO] [stdout] test new_rejects_invalid_name ... ok
[INFO] [stdout] test new_rule_creates_rule_md ... ok
[INFO] [stdout] test new_skill_creates_skill_md_with_minimum_frontmatter ... ok
[INFO] [stdout] test new_refuses_to_run_inside_consumer_project ... ok
[INFO] [stdout] test new_agent_emits_default_mode_and_model ... ok
[INFO] [stdout] test new_refuses_existing_item_directory ... ok
[INFO] [stdout] test new_output_passes_lint_and_fmt ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_quiet.rs (/opt/rustwide/target/debug/deps/cli_quiet-4cc3e3a705e5041b)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test list_quiet_on_empty_lockfile_emits_no_stdout ... ok
[INFO] [stdout] test quiet_does_not_silence_errors_on_stderr ... ok
[INFO] [stdout] test lint_quiet_on_clean_corpus_emits_no_stdout ... ok
[INFO] [stdout] test lint_short_q_on_clean_corpus_emits_no_stdout ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_relaxed_naming.rs (/opt/rustwide/target/debug/deps/cli_relaxed_naming-351e1e6005eb37d1)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test lint_errors_on_skill_name_folder_mismatch ... ok
[INFO] [stdout] test lint_allows_rule_name_folder_mismatch ... ok
[INFO] [stdout] test skill_without_name_falls_back_to_folder ... ok
[INFO] [stdout] test rule_name_diverges_from_folder ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_remove.rs (/opt/rustwide/target/debug/deps/cli_remove-c8538ae76c250287)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test remove_bare_invocation_is_usage_error ... ok
[INFO] [stdout] test remove_names_and_source_together_is_usage_error ... ok
[INFO] [stdout] test remove_by_name_deletes_all_per_client_outputs_and_lockfile_entry ... ok
[INFO] [stdout] test remove_preserves_ancillary_files ... ok
[INFO] [stdout] test remove_unknown_name_is_general_error ... ok
[INFO] [stdout] test remove_by_source_drops_every_entry_from_that_source ... ok
[INFO] [stderr]      Running tests/cli_requires.rs (/opt/rustwide/target/debug/deps/cli_requires-46c4fc79c2969151)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.33s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test add_cross_source_cycle_aborts ... ok
[INFO] [stdout] test add_cross_source_conflict_with_existing_install_aborts ... ok
[INFO] [stdout] test add_pulls_same_source_requires_and_records_provenance ... ok
[INFO] [stdout] test add_resolves_transitive_cross_source_closure ... ok
[INFO] [stdout] test add_pulls_preload_skills_as_requires ... ok
[INFO] [stdout] test update_does_not_pull_unrelated_siblings_of_a_cross_source_dependency ... ok
[INFO] [stdout] test add_pulls_cross_source_requires_from_local_sibling ... ok
[INFO] [stdout] test removing_requirer_leaves_cross_source_dep_as_doctor_orphan ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_resources.rs (/opt/rustwide/target/debug/deps/cli_resources-2fdbd13ac490319c)
[INFO] [stdout] 
[INFO] [stdout] running 14 tests
[INFO] [stdout] test audience_scopes_resource_copy ... ok
[INFO] [stdout] test alias_relocates_and_reprefixes_flat_agent_resources ... ok
[INFO] [stdout] test bundle_install_copies_resources ... ok
[INFO] [stdout] test alias_relocates_dir_backed_skill_resources ... ok
[INFO] [stdout] test agent_resources_namespaced_and_rewritten_all_clients ... ok
[INFO] [stdout] test colocated_kinds_share_resources ... ok
[INFO] [stdout] test alias_on_bundle_source_does_not_crash_guard ... ok
[INFO] [stdout] test alias_relocates_and_reprefixes_flat_rule_resources ... ok
[INFO] [stdout] test remove_deletes_resource_tree ... ok
[INFO] [stdout] test update_removes_stale_resource_after_source_deletes_it ... ok
[INFO] [stdout] test update_relocates_aliased_resource_item ... ok
[INFO] [stdout] test rule_resources_namespaced_and_rewritten_per_client ... ok
[INFO] [stdout] test skill_resources_copied_for_all_clients_no_rewrite ... ok
[INFO] [stdout] test readd_is_idempotent ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.47s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_search.rs (/opt/rustwide/target/debug/deps/cli_search-ad9b4bfde629d18f)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test search_returns_results ... ok
[INFO] [stdout] test search_shows_install_command ... ok
[INFO] [stdout] test search_empty_results ... ok
[INFO] [stdout] test search_unreachable_registry_exits_one ... ok
[INFO] [stdout] test search_help_exits_zero ... ok
[INFO] [stderr]      Running tests/cli_stdio_discipline.rs (/opt/rustwide/target/debug/deps/cli_stdio_discipline-b0c0cade3a5aa96a)
[INFO] [stdout] test search_requires_query ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test add_invalid_source_writes_error_to_stderr_not_stdout ... ok
[INFO] [stdout] test add_invalid_source_stderr_has_no_ansi_under_no_color_env ... ok
[INFO] [stdout] test list_stdout_has_no_ansi_when_piped ... ok
[INFO] [stdout] test list_data_goes_to_stdout_stderr_is_empty ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_test_harness_guard.rs (/opt/rustwide/target/debug/deps/cli_test_harness_guard-6fcbc03dbb1af4a1)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test integration_tests_use_fake_home_harness ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_update.rs (/opt/rustwide/target/debug/deps/cli_update-772c10cae4987d43)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test update_empty_lockfile_is_no_op ... ok
[INFO] [stdout] test update_dry_run_reports_up_to_date_for_divergent_named_rule ... ok
[INFO] [stdout] test update_no_change_reports_up_to_date ... ok
[INFO] [stdout] test update_dry_run_reports_change_without_writing ... ok
[INFO] [stdout] test update_unknown_name_is_general_error ... ok
[INFO] [stdout] test update_dry_run_reports_would_remove_without_deleting ... ok
[INFO] [stdout] test update_after_ssot_mutation_rewrites_outputs_and_lockfile_hash ... ok
[INFO] [stdout] test update_removes_stale_output_file_from_previous_generation ... ok
[INFO] [stdout] test update_removes_orphaned_item_when_source_no_longer_contains_it ... ok
[INFO] [stdout] test update_without_yes_proceeds_in_non_tty ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.53s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_update_bundle.rs (/opt/rustwide/target/debug/deps/cli_update_bundle-3ed58a9ef150153c)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test update_dry_run_named_bundle_item_is_not_removed ... ok
[INFO] [stdout] test update_dry_run_does_not_report_bundle_items_as_removed ... ok
[INFO] [stdout] test update_apply_does_not_delete_bundle_items ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_ux_polish.rs (/opt/rustwide/target/debug/deps/cli_ux_polish-6c05acec66b72d23)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test search_short_limit_flag_is_recognised ... ok
[INFO] [stdout] test lint_short_strict_flag_is_recognised ... ok
[INFO] [stdout] test remove_short_source_flag_is_recognised ... ok
[INFO] [stdout] test add_against_unreachable_github_emits_progress_line_to_stderr ... ok
[INFO] [stdout] test remove_by_source_under_yes_flag_skips_prompt_and_proceeds ... ok
[INFO] [stdout] test update_short_dry_run_flag_is_recognised ... ok
[INFO] [stdout] test remove_by_source_in_non_tty_does_not_prompt_and_proceeds ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/generate_agents.rs (/opt/rustwide/target/debug/deps/generate_agents-ab8e218e0e633b69)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test security_reviewer_claude ... ok
[INFO] [stdout] test security_reviewer_opencode ... ok
[INFO] [stdout] test security_reviewer_copilot ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/generate_rules.rs (/opt/rustwide/target/debug/deps/generate_rules-2a4ef74657c1b71d)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test api_conventions_claude ... ok
[INFO] [stdout] test license_awareness_copilot ... ok
[INFO] [stdout] test api_conventions_copilot ... ok
[INFO] [stdout] test license_awareness_claude ... ok
[INFO] [stdout] test api_conventions_opencode ... ok
[INFO] [stdout] test license_awareness_opencode ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/generate_skills.rs (/opt/rustwide/target/debug/deps/generate_skills-b6f4576dccc86705)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test create_api_endpoint_opencode ... ok
[INFO] [stdout] test create_api_endpoint_copilot ... ok
[INFO] [stdout] test create_api_endpoint_claude ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/generate_strip_ssot_fields.rs (/opt/rustwide/target/debug/deps/generate_strip_ssot_fields-38547bf60c978a15)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test generated_skill_output_omits_requires_and_ignore ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/parse_bundles.rs (/opt/rustwide/target/debug/deps/parse_bundles-2c2e5fd495e9d88c)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test baseline_carries_every_fixture_item ... ok
[INFO] [stdout] test with_plugins_declares_client_native_plugins ... ok
[INFO] [stdout] test discovers_every_fixture_bundle ... ok
[INFO] [stdout] test extras_pins_baseline_with_caret_constraint ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/pipeline_ignore.rs (/opt/rustwide/target/debug/deps/pipeline_ignore-e2ff71a8b33b19d6)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test ignored_resource_subtree_is_not_copied ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/pipeline_local.rs (/opt/rustwide/target/debug/deps/pipeline_local-c37e7d6f7eef9431)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test install_respects_top_level_audience_filter ... ok
[INFO] [stdout] test install_writes_per_client_output_for_all_kinds ... ok
[INFO] [stderr]      Running tests/pipeline_lockfile.rs (/opt/rustwide/target/debug/deps/pipeline_lockfile-06d23d229377d619)
[INFO] [stdout] test install_is_idempotent ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 17 tests
[INFO] [stdout] test doctor_skipped_plugins_do_not_cause_is_clean_false ... ok
[INFO] [stdout] test doctor_reports_multiple_skipped_plugins ... ok
[INFO] [stdout] test doctor_reports_skipped_plugin_from_lockfile ... ok
[INFO] [stdout] test doctor_installed_plugin_cli_not_found_is_not_reported_as_missing ... ok
[INFO] [stdout] test install_by_name_errors_on_ambiguity ... ok
[INFO] [stdout] test plugin_results_carry_correct_metadata ... ok
[INFO] [stdout] test install_by_name_prefers_items_when_only_items_match ... ok
[INFO] [stdout] test install_by_name_discovers_bundle_when_no_item_matches ... ok
[INFO] [stdout] test cli_not_found_plugins_recorded_as_skipped_in_lockfile ... ok
[INFO] [stdout] test install_creates_claude_bridge_when_absent ... ok
[INFO] [stdout] test install_registers_vscode_instructions_location_when_rules_present ... ok
[INFO] [stdout] test install_preserves_unrelated_existing_entries ... ok
[INFO] [stdout] test install_preserves_existing_claude_bridge ... ok
[INFO] [stdout] test bundle_with_plugins_produces_plugin_results ... ok
[INFO] [stdout] test install_registers_opencode_rules_glob_when_rules_present ... ok
[INFO] [stdout] test install_writes_lockfile_at_target_root ... ok
[INFO] [stdout] test re_install_upserts_existing_entries ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.49s
[INFO] [stderr]      Running tests/pipeline_mcp.rs (/opt/rustwide/target/debug/deps/pipeline_mcp-1153ef7228a972c6)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test add_local_mcp_uses_per_target_shapes_and_keeps_secret_verbatim ... ok
[INFO] [stdout] test doctor_surfaces_unreadable_config_file ... ok
[INFO] [stdout] test add_remote_mcp_configures_every_target_with_correct_root_key ... ok
[INFO] [stdout] test remove_mcp_clears_every_target_config_file ... ok
[INFO] [stdout] test doctor_reconciles_config_targets_and_flags_drift_without_false_positives ... ok
[INFO] [stdout] test add_then_remove_mcp_updates_lockfile ... ok
[INFO] [stdout] test doctor_surfaces_missing_config_file_without_flagging_drift ... ok
[INFO] [stderr]      Running tests/pipeline_source.rs (/opt/rustwide/target/debug/deps/pipeline_source-b7e3b7001d4b0a6c)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test install_from_source_local_path ... ok
[INFO] [stdout] test install_from_source_clones_local_bare_repo_via_file_url ... ok
[INFO] [stdout] test install_from_source_clone_subfolder ... ok
[INFO] [stderr]    Doc-tests upskill
[INFO] [stdout] test re_install_after_upstream_push_picks_up_new_content ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.94s
[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" "e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893", kill_on_drop: false }`
[INFO] [stdout] e363f825398a5f50739a021054b26e63cdf8b5f2efc5b741288fcd32757a3893
