[INFO] cloning repository https://github.com/jordan-gibbs/knack-cli [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jordan-gibbs/knack-cli" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjordan-gibbs%2Fknack-cli", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjordan-gibbs%2Fknack-cli'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] a88f1e63dd65201025654e0aa426ed972d49382f [INFO] testing jordan-gibbs/knack-cli against 1.97.0-beta.6 for beta-1.98-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjordan-gibbs%2Fknack-cli" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/jordan-gibbs/knack-cli [INFO] finished tweaking git repo https://github.com/jordan-gibbs/knack-cli [INFO] tweaked toml for git repo https://github.com/jordan-gibbs/knack-cli written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/jordan-gibbs/knack-cli on toolchain 1.97.0-beta.6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/jordan-gibbs/knack-cli 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded http v1.4.1 [INFO] [stderr] Downloaded linux-keyutils v0.2.5 [INFO] [stderr] Downloaded clap_complete v4.6.5 [INFO] [stderr] Downloaded hyper v1.10.0 [INFO] [stderr] Downloaded keyring v3.6.3 [INFO] [stderr] Downloaded git2 v0.19.0 [INFO] [stderr] Downloaded libz-sys v1.1.28 [INFO] [stderr] Downloaded libgit2-sys v0.17.0+1.8.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b [INFO] running `Command { std: "docker" "start" "bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b", 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" "bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b", 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" "bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling http v1.4.1 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling log v0.4.30 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling cc v1.2.62 [INFO] [stderr] Compiling rustls-pki-types v1.14.1 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling autocfg v1.5.1 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling serde_json v1.0.150 [INFO] [stderr] Compiling memchr v2.8.1 [INFO] [stderr] Compiling openssl-probe v0.2.1 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling hashbrown v0.17.1 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling portable-atomic v1.13.1 [INFO] [stderr] Compiling dirs-sys v0.4.1 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling uuid v1.23.1 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling simd-adler32 v0.3.9 [INFO] [stderr] Compiling rustls-native-certs v0.8.4 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling webpki-roots v1.0.7 [INFO] [stderr] Compiling indexmap v2.14.0 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling console v0.15.11 [INFO] [stderr] Compiling dirs v5.0.1 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling xattr v1.6.1 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling linux-keyutils v0.2.5 [INFO] [stderr] Compiling include_dir_macros v0.7.4 [INFO] [stderr] Compiling filetime v0.2.29 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling number_prefix v0.4.0 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling indicatif v0.17.11 [INFO] [stderr] Compiling tar v0.4.46 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling keyring v3.6.3 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling include_dir v0.7.4 [INFO] [stderr] Compiling similar v2.7.0 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling libz-sys v1.1.28 [INFO] [stderr] Compiling libgit2-sys v0.17.0+1.8.1 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling rustls v0.23.40 [INFO] [stderr] Compiling synstructure v0.13.2 [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.6 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling clap_derive v4.6.1 [INFO] [stderr] Compiling tokio v1.52.3 [INFO] [stderr] Compiling zerofrom v0.1.8 [INFO] [stderr] Compiling yoke v0.8.2 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling rustls-webpki v0.103.13 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling clap v4.6.1 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling clap_complete v4.6.5 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling serde_yaml v0.9.34+deprecated [INFO] [stderr] Compiling idna_adapter v1.2.2 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling knack-types v0.1.0 (/opt/rustwide/workdir/crates/knack-types) [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling hyper v1.10.0 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling git2 v0.19.0 [INFO] [stderr] Compiling webbrowser v1.2.1 [INFO] [stderr] Compiling tower-http v0.6.11 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling hyper-rustls v0.27.9 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling knack-backend-github v0.7.21 (/opt/rustwide/workdir/crates/knack-backend-github) [INFO] [stderr] Compiling knack v0.7.21 (/opt/rustwide/workdir/crates/knack) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 25s [INFO] running `Command { std: "docker" "inspect" "bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b", 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" "bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling memchr v2.8.1 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling num_cpus v1.17.0 [INFO] [stderr] Compiling deadpool-runtime v0.1.4 [INFO] [stderr] Compiling deadpool v0.12.3 [INFO] [stderr] Compiling h2 v0.4.14 [INFO] [stderr] Compiling serde_json v1.0.150 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling knack-types v0.1.0 (/opt/rustwide/workdir/crates/knack-types) [INFO] [stderr] Compiling assert-json-diff v2.0.2 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling hyper v1.10.0 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling tower-http v0.6.11 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-rustls v0.27.9 [INFO] [stderr] Compiling wiremock v0.6.5 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling knack-backend-github v0.7.21 (/opt/rustwide/workdir/crates/knack-backend-github) [INFO] [stderr] Compiling knack v0.7.21 (/opt/rustwide/workdir/crates/knack) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 58.57s [INFO] running `Command { std: "docker" "inspect" "bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b", 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" "bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.46s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/knack_cli-611c1ea660a3af79) [INFO] [stdout] [INFO] [stdout] running 160 tests [INFO] [stdout] test api::tests::maps_5xx_to_server ... ok [INFO] [stdout] test api::tests::maps_409_to_conflict ... ok [INFO] [stdout] test api::tests::maps_403_plan_limit_to_plan_variant ... ok [INFO] [stdout] test api::tests::maps_401_to_auth_failed ... ok [INFO] [stdout] test api::tests::maps_404_to_not_found ... ok [INFO] [stdout] test auth_store::tests::auth_file_path_env_override_beats_codex_fallback ... ok [INFO] [stdout] test auth_store::tests::stored_credential_is_pat_detection ... ok [INFO] [stdout] test commands::auth::tests::human_duration_zero ... ok [INFO] [stdout] test auth_store::tests::auth_file_path_ignores_codex_home_with_nonstandard_basename ... ok [INFO] [stdout] test commands::auth::tests::human_duration_days_hours ... ok [INFO] [stdout] test auth_store::tests::memory_store_round_trips ... ok [INFO] [stdout] test commands::auth::tests::base64url_decode_basic ... ok [INFO] [stdout] test auth_store::tests::memory_store_isolates_accounts ... ok [INFO] [stdout] test commands::auth::tests::human_duration_hours_mins ... ok [INFO] [stdout] test commands::create::tests::scope_public_no_team ... ok [INFO] [stdout] test commands::auth::tests::jwt_exp_decode_with_far_future_exp ... ok [INFO] [stdout] test commands::create::tests::scope_personal_no_team ... ok [INFO] [stdout] test commands::create::tests::scope_rejects_unknown ... ok [INFO] [stdout] test commands::create::tests::slug_accepts_canonical ... ok [INFO] [stdout] test commands::create::tests::scope_team_requires_id ... ok [INFO] [stdout] test commands::create::tests::slug_rejects_uppercase ... ok [INFO] [stdout] test commands::create::tests::slug_rejects_leading_hyphen ... ok [INFO] [stdout] test commands::create::tests::scaffold_rejects_non_empty_target ... ok [INFO] [stdout] test commands::create::tests::slug_rejects_empty ... ok [INFO] [stdout] test commands::create::tests::slug_rejects_underscore ... ok [INFO] [stdout] test commands::create::tests::scaffold_writes_three_required_files ... ok [INFO] [stdout] test auth_store::tests::file_store_accepts_legacy_access_token_field ... ok [INFO] [stdout] test commands::diff::tests::split_rejects_missing_at ... ok [INFO] [stdout] test commands::diff::tests::split_parses_slug_at_version ... ok [INFO] [stdout] test commands::info_chunks::tests::toc_lists_every_slug ... ok [INFO] [stdout] test commands::info_chunks::tests::unknown_slug_is_none ... ok [INFO] [stdout] test commands::debug::tests::host_of_strips_scheme_and_path ... ok [INFO] [stdout] test auth_store::tests::file_store_isolates_accounts ... ok [INFO] [stdout] test commands::info_chunks::tests::overview_is_the_intro_only ... ok [INFO] [stdout] test commands::init::tests::parses_owner_repo ... ok [INFO] [stdout] test commands::diff::tests::unified_diff_empty_when_identical ... ok [INFO] [stdout] test commands::diff::tests::unified_diff_marks_changes ... ok [INFO] [stdout] test commands::info_chunks::tests::distinct_sections_do_not_collide ... ok [INFO] [stdout] test commands::init::tests::init_creates_workspace_at_explicit_path ... ok [INFO] [stdout] test commands::info_chunks::tests::running_keeps_nested_markers_and_does_not_bleed_into_sharing ... ok [INFO] [stdout] test commands::install::block::tests::remove_deletes_file_when_empty_after ... ok [INFO] [stdout] test commands::install::block::tests::upsert_creates_missing_file ... ok [INFO] [stdout] test commands::init::tests::init_is_idempotent ... ok [INFO] [stdout] test commands::install::installed::tests::add_keeps_same_slug_different_scope ... ok [INFO] [stdout] test auth_store::tests::file_store_atomic_write_leaves_no_tempfiles ... ok [INFO] [stdout] test auth_store::tests::auth_file_path_uses_codex_sandbox_fallback_when_codex_home_ends_in_dot_codex ... ok [INFO] [stdout] test commands::install::block::tests::upsert_is_idempotent ... ok [INFO] [stdout] test commands::install::block::tests::remove_on_missing_file_is_noop ... ok [INFO] [stdout] test commands::install::installed::tests::add_then_remove_round_trips ... ok [INFO] [stdout] test commands::install::block::tests::upsert_preserves_existing_content ... ok [INFO] [stdout] test auth_store::tests::file_store_rejects_unknown_schema_version ... ok [INFO] [stdout] test commands::install::block::tests::remove_strips_block_only ... ok [INFO] [stdout] test commands::install::linked::tests::add_dedupes_same_slug_same_scope_keeps_both_scopes ... ok [INFO] [stdout] test commands::install::block::tests::upsert_replaces_old_block ... ok [INFO] [stdout] test auth_store::tests::file_store_missing_file_returns_none ... ok [INFO] [stdout] test commands::install::shim::tests::file_carries_sigil_matches_body_sigil_not_only_line_one ... ok [INFO] [stdout] test commands::install::linked::tests::add_then_remove_round_trips ... ok [INFO] [stdout] test commands::install::linked::tests::load_missing_returns_empty ... ok [INFO] [stdout] test commands::install::installed::tests::save_is_atomic_via_tempfile_rename ... ok [INFO] [stdout] test commands::install::shim::tests::remove_native_skill_deletes_with_sigil ... ok [INFO] [stdout] test commands::install::installed::tests::load_missing_file_returns_empty ... ok [INFO] [stdout] test auth_store::tests::file_store_writes_with_0600_perms ... ok [INFO] [stdout] test auth_store::tests::file_store_round_trips ... ok [INFO] [stdout] test commands::install::installed::tests::add_dedupes_same_slug_same_scope ... ok [INFO] [stdout] test commands::install::shim::tests::render_linked_skill_without_frontmatter_puts_sigil_first ... ok [INFO] [stdout] test commands::install::shim::tests::render_native_skill_uses_frontmatter_description ... ok [INFO] [stdout] test commands::install::shim::tests::render_linked_skill_keeps_frontmatter_first_and_wraps_body ... ok [INFO] [stdout] test commands::install::shim::tests::render_text_block_includes_slug_and_description ... ok [INFO] [stdout] test commands::install::shim::tests::split_frontmatter_handles_both_shapes ... ok [INFO] [stdout] test commands::install::shim::tests::render_native_rule_emits_mdc_with_alwaysapply_false ... ok [INFO] [stdout] test commands::install::shim::tests::remove_skill_block_only_removes_matching_slug ... ok [INFO] [stdout] test commands::install::shim::tests::remove_native_skill_refuses_without_sigil ... ok [INFO] [stdout] test commands::install::shim::tests::foreign_skill_present_guards_user_authored_slug ... ok [INFO] [stdout] test commands::install::shim::tests::upsert_skill_block_inserts_after_install_block_when_present ... ok [INFO] [stdout] test commands::install::shim::tests::upsert_skill_block_is_idempotent ... ok [INFO] [stdout] test commands::install::shim::tests::upsert_skill_block_appends_when_no_install_block_exists ... ok [INFO] [stdout] test commands::install::tests::apply_dry_run_returns_two_outcomes_per_native_skill_target ... ok [INFO] [stdout] test commands::info_chunks::tests::every_slug_resolves_to_a_nonempty_section ... ok [INFO] [stdout] test commands::install::shim::tests::upsert_skill_block_replaces_existing_same_slug ... ok [INFO] [stdout] test commands::install::shim::tests::write_native_skill_is_idempotent ... ok [INFO] [stdout] test commands::install::shim::tests::write_and_remove_linked_skill_round_trip ... ok [INFO] [stdout] test commands::install::tests::apply_dry_run_single_outcome_for_textblock_target ... ok [INFO] [stdout] test commands::install::tests::install_path_native_skill_lands_in_skills_subdir ... ok [INFO] [stdout] test commands::install::tests::install_path_native_rule_lands_at_bare_knack_mdc ... ok [INFO] [stdout] test commands::install::tests::render_body_native_rule_emits_mdc_with_alwaysapply_false ... ok [INFO] [stdout] test commands::install::tests::render_body_native_skill_emits_skill_md_with_sigil_and_frontmatter ... ok [INFO] [stdout] test commands::install::tests::render_body_textblock_is_plain_markdown_no_frontmatter ... ok [INFO] [stdout] test commands::install::tests::target_names_includes_every_planned_agent ... ok [INFO] [stdout] test commands::install::tests::apply_dry_run_single_outcome_for_cursor ... ok [INFO] [stdout] test commands::install::tests::targets_find_returns_none_for_unknown ... ok [INFO] [stdout] test commands::mark::tests::mark_failed_envelope_includes_hint_when_present ... ok [INFO] [stdout] test commands::publish::tests::bump_major ... ok [INFO] [stdout] test commands::link::tests::safe_slug_accepts_real_slugs_rejects_traversal ... ok [INFO] [stdout] test commands::introspect::tests::root_command_has_all_subcommands ... ok [INFO] [stdout] test commands::introspect::tests::auth_subcommand_has_login_logout_status ... ok [INFO] [stdout] test commands::publish::tests::bump_minor ... ok [INFO] [stdout] test commands::publish::tests::bump_patch_basic ... ok [INFO] [stdout] test commands::publish::tests::bump_patch_rejects_garbage ... ok [INFO] [stdout] test commands::install::shim::tests::remove_linked_skill_refuses_user_authored_folder ... ok [INFO] [stdout] test commands::pull::tests::write_if_changed_creates_new_file ... ok [INFO] [stdout] test commands::pull::tests::write_if_changed_skips_when_identical ... ok [INFO] [stdout] test commands::publish::tests::bump_rejects_garbage ... ok [INFO] [stdout] test commands::introspect::tests::exit_codes_table_complete ... ok [INFO] [stdout] test commands::pull::tests::write_if_changed_writes_on_diff ... ok [INFO] [stdout] test commands::uninstall::tests::script_oneliner_matches_platform ... ok [INFO] [stdout] test commands::uninstall::tests::guess_binary_path_returns_platform_default ... ok [INFO] [stdout] test commands::upgrade::tests::platform_oneliner_matches_target ... ok [INFO] [stdout] test commands::upgrade::tests::print_flag_short_circuits_run ... ok [INFO] [stdout] test config::tests::link_scope_default_is_home ... ok [INFO] [stdout] test config::tests::link_scope_parses_documented_and_synonym_values ... ok [INFO] [stdout] test config::tests::skills_dir_falls_back_when_no_home ... ok [INFO] [stdout] test docs::tests::every_topic_loaded_and_nonempty ... ok [INFO] [stdout] test docs::tests::find_known_topic ... ok [INFO] [stdout] test docs::tests::toc_lists_every_topic ... ok [INFO] [stdout] test errors::tests::error_kind_to_exit_code ... ok [INFO] [stdout] test errors::tests::auth_required_has_hint ... ok [INFO] [stdout] test output::tests::err_envelope_carries_code_and_hint ... ok [INFO] [stdout] test output::tests::ok_envelope_has_schema_marker ... ok [INFO] [stdout] test output::tests::schema_pins_v1 ... ok [INFO] [stdout] test skill_pack::tests::check_safe_name_rejects_traversal_and_absolute ... ok [INFO] [stdout] test errors::tests::exit_codes_are_stable ... ok [INFO] [stdout] test output::tests::err_envelope_omits_hint_when_none ... ok [INFO] [stdout] test commands::upgrade::tests::windows_never_auto_runs ... ok [INFO] [stdout] test skill_pack::tests::parse_frontmatter_ignores_extra_fields ... ok [INFO] [stdout] test skill_pack::tests::parse_frontmatter_lifts_name_and_description ... ok [INFO] [stdout] test config::tests::config_strips_trailing_slash ... ok [INFO] [stdout] test docs::tests::find_unknown_topic_is_none ... ok [INFO] [stdout] test skill_pack::tests::packed_s3_key_canonical ... ok [INFO] [stdout] test skill_pack::tests::pack_rejects_missing_required ... ok [INFO] [stdout] test skill_pack::tests::parse_frontmatter_no_close_fence_returns_none ... ok [INFO] [stdout] test skill_pack::tests::parse_frontmatter_returns_none_when_no_fence ... ok [INFO] [stdout] test skill_validators::tests::details_envelope_carries_issue_array ... ok [INFO] [stdout] test slug::tests::handle_slug_with_version ... ok [INFO] [stdout] test skill_validators::tests::ok_when_both_files_present_and_nonempty ... ok [INFO] [stdout] test skill_validators::tests::flags_empty_meta_yaml ... ok [INFO] [stdout] test slug::tests::without_version ... ok [INFO] [stdout] test skill_validators::tests::flags_missing_dir ... ok [INFO] [stdout] test slug::tests::handle_slug_no_version ... ok [INFO] [stdout] test slug::tests::with_version ... ok [INFO] [stdout] test slug::tests::v_prefix_left_intact ... ok [INFO] [stdout] test workspace::tests::discover_finds_workspace_above_start_below_home ... ok [INFO] [stdout] test skill_pack::tests::parse_frontmatter_tolerates_bom_and_blank_lines ... ok [INFO] [stdout] test skill_validators::tests::flags_missing_skill_md ... ok [INFO] [stdout] test workspace::tests::discover_finds_nearest_dot_knack ... ok [INFO] [stdout] test workspace::tests::discover_returns_none_when_no_workspace_exists ... ok [INFO] [stdout] test skill_pack::tests::pack_unpack_round_trip_minimal ... ok [INFO] [stdout] test workspace::tests::init_workspace_is_idempotent ... ok [INFO] [stdout] test workspace::tests::discover_stops_at_home_even_when_home_knack_exists ... ok [INFO] [stdout] test workspace::tests::init_workspace_root_gitignore_is_idempotent ... ok [INFO] [stdout] test skill_pack::tests::unpack_rejects_newer_manifest_version ... ok [INFO] [stdout] test workspace::tests::init_workspace_preserves_existing_root_gitignore ... ok [INFO] [stdout] test workspace::tests::init_workspace_skips_root_gitignore_when_not_a_git_repo ... ok [INFO] [stdout] test workspace::tests::resolve_skills_root_falls_back_to_cwd_dot_knack ... ok [INFO] [stdout] test workspace::tests::resolve_skills_root_global_falls_back_to_home ... ok [INFO] [stdout] test skill_pack::tests::pack_includes_full_anthropic_layout ... ok [INFO] [stdout] test workspace::tests::resolve_skills_root_prefers_explicit_target ... ok [INFO] [stdout] test workspace::tests::init_workspace_adds_dot_knack_to_root_gitignore_inside_git_repo ... ok [INFO] [stdout] test workspace::tests::resolve_skills_root_uses_discovered_workspace ... ok [INFO] [stdout] test workspace::tests::resolve_existing_skill_dir_prefers_drafts ... ok [INFO] [stdout] test commands::completions::tests::root_command_renders_for_every_shell ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 160 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/knack-f7d5c45e1767b70b) [INFO] [stdout] [INFO] [stderr] Running tests/auth.rs (/opt/rustwide/target/debug/deps/auth-31be20b2bc8bf2b1) [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] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test create_cli_token_returns_plaintext ... ok [INFO] [stdout] test revoke_cli_token_calls_delete ... ok [INFO] [stdout] test me_endpoint_returns_user_info ... ok [INFO] [stdout] test refresh_on_401_retries_and_persists_new_tokens ... ok [INFO] [stdout] test device_poll_pending_then_approved ... ok [INFO] [stdout] test device_start_returns_codes_and_uri ... ok [INFO] [stdout] test pat_401_does_not_attempt_refresh ... ok [INFO] [stdout] test refresh_failure_clears_store_and_surfaces_auth_required ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s [INFO] [stdout] [INFO] [stderr] Running tests/link.rs (/opt/rustwide/target/debug/deps/link-8b9dd3ef28c7c9b1) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test link_writes_wrapped_skill_then_unlink_removes_it ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s [INFO] [stdout] [INFO] [stderr] Running tests/runs.rs (/opt/rustwide/target/debug/deps/runs-802ad2c4348ad92c) [INFO] [stdout] [INFO] [stdout] running 11 tests [INFO] [stdout] test skill_stats_untagged_enum_round_trips ... ok [INFO] [stdout] test get_overview_returns_summary_with_regressions ... ok [INFO] [stdout] test get_stats_default_returns_flat_shape ... ok [INFO] [stdout] test mark_run_posts_status_and_note ... ok [INFO] [stdout] test mark_404_when_run_unknown ... ok [INFO] [stdout] test finish_run_includes_status_and_outputs ... ok [INFO] [stdout] test start_run_posts_skill_version_id ... ok [INFO] [stdout] test get_trend_daily_returns_series ... ok [INFO] [stdout] test get_stats_cross_tab_version_and_agent ... ok [INFO] [stdout] test get_stats_group_by_version_returns_buckets_with_p50 ... ok [INFO] [stdout] test list_for_skill_threads_filters_into_query ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.40s [INFO] [stdout] [INFO] [stderr] Running tests/runs_aggregate.rs (/opt/rustwide/target/debug/deps/runs_aggregate-56dc71463b0a6943) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test overview_stale_when_no_runs ... ok [INFO] [stdout] test overview_no_regression_when_only_one_version ... ok [INFO] [stdout] test detect_regression_returns_none_when_current_better ... ok [INFO] [stdout] test scan_then_group_by_version_matches_smoke_test_expectations ... ok [INFO] [stdout] test trend_daily_emits_gap_free_series ... ok [INFO] [stdout] test trend_weekly_buckets_align_to_monday ... ok [INFO] [stdout] test cross_tab_version_and_agent_isolates_per_agent_regression ... ok [INFO] [stdout] test overview_detects_regression ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Running tests/skills.rs (/opt/rustwide/target/debug/deps/skills-faa6bd0ff6dbc217) [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test get_version_404_maps_to_not_found ... ok [INFO] [stdout] test find_by_slug_paginates_and_matches ... ok [INFO] [stdout] test list_filters_by_scope ... ok [INFO] [stdout] test create_propagates_description_on_wire ... ok [INFO] [stdout] test list_returns_paged_skills ... ok [INFO] [stdout] test server_5xx_maps_to_server_error ... ok [INFO] [stdout] test create_version_posts_full_body ... ok [INFO] [stdout] test create_409_maps_to_conflict ... ok [INFO] [stdout] test create_posts_full_body_and_returns_skill ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.44s [INFO] [stdout] [INFO] [stderr] Running tests/smoke.rs (/opt/rustwide/target/debug/deps/smoke-2d85bd04c6097105) [INFO] [stdout] [INFO] [stdout] running 13 tests [INFO] [stdout] test auth_required_carries_actionable_hint ... ok [INFO] [stdout] test exit_codes_pin_v0_7_x_table ... ok [INFO] [stdout] test every_error_variant_maps_to_documented_exit_code ... ok [INFO] [stdout] test json_envelopes_carry_schema_marker_v1 ... ok [INFO] [stdout] test partial_preserves_counts_in_envelope ... ok [INFO] [stdout] test user_error_inner_code_wins_over_generic ... ok [INFO] [stdout] test cli_token_create_then_revoke_round_trip ... ok [INFO] [stdout] test overview_response_parses_regression_and_stale_blocks ... ok [INFO] [stdout] test runs_by_skill_404_maps_to_not_found_user_exit ... ok [INFO] [stdout] test pat_credential_does_not_attempt_refresh_on_401 ... ok [INFO] [stdout] test server_500_maps_to_internal_exit ... ok [INFO] [stdout] test network_error_maps_to_network_exit ... ok [INFO] [stdout] test plan_limit_403_maps_to_plan_exit ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/knack_backend_github-37f659535a663965) [INFO] [stdout] [INFO] [stdout] running 39 tests [INFO] [stdout] test external::tests::parse_custom_repo ... ok [INFO] [stdout] test aggregate::tests::bucket_no_marked_runs_returns_no_rate ... ok [INFO] [stdout] test aggregate::tests::bucket_counts_and_rate ... ok [INFO] [stdout] test aggregate::tests::top_notes_collapses_cosmetic_variants ... ok [INFO] [stdout] test external::tests::parse_default_repo ... ok [INFO] [stdout] test aggregate::tests::group_buckets_no_dimensions_returns_one_overall_bucket ... ok [INFO] [stdout] test aggregate::tests::top_notes_orders_by_count_then_text ... ok [INFO] [stdout] test aggregate::tests::group_buckets_by_version_splits_cohorts ... ok [INFO] [stdout] test aggregate::tests::group_buckets_cross_tab_version_and_agent ... ok [INFO] [stdout] test aggregate::tests::legacy_aborted_status_rolls_into_failed ... ok [INFO] [stdout] test git::tests::fallback_is_origin_main ... ok [INFO] [stdout] test external::tests::parse_with_version ... ok [INFO] [stdout] test external::tests::rejects_no_at_prefix ... ok [INFO] [stdout] test backend::tests::search_still_matches_description ... ok [INFO] [stdout] test backend::tests::search_tolerates_missing_skill_md ... ok [INFO] [stdout] test backend::tests::search_still_matches_slug ... ok [INFO] [stdout] test backend::tests::search_matches_skill_md_body_when_slug_and_description_miss ... ok [INFO] [stdout] test git::tests::parse_non_github_returns_none ... ok [INFO] [stdout] test git::tests::parse_https_url ... ok [INFO] [stdout] test git::tests::parse_ssh_url ... ok [INFO] [stdout] test runs::tests::is_valid_day_file_name_validates ... ok [INFO] [stdout] test runs::tests::find_run_recovers_run_outside_lookback_window ... ok [INFO] [stdout] test runs::tests::find_run_skips_non_ymd_dirs_and_files ... ok [INFO] [stdout] test runs::tests::is_valid_month_dir_name_validates ... ok [INFO] [stdout] test workspace::tests::missing_file_returns_none ... ok [INFO] [stdout] test workspace::tests::policy_cli_beats_env ... ok [INFO] [stdout] test workspace::tests::policy_cli_no_push_beats_workspace_true ... ok [INFO] [stdout] test workspace::tests::policy_env_accepts_false_and_no ... ok [INFO] [stdout] test workspace::tests::policy_env_kill_beats_workspace_true ... ok [INFO] [stdout] test workspace::tests::policy_workspace_false_disables_push ... ok [INFO] [stdout] test workspace::tests::policy_workspace_true_keeps_push ... ok [INFO] [stdout] test workspace::tests::yaml_with_auto_push_false_returns_false ... ok [INFO] [stdout] test workspace::tests::yaml_with_auto_push_true_returns_true ... ok [INFO] [stdout] test workspace::tests::policy_malformed_yaml_propagates_error ... ok [INFO] [stdout] test workspace::tests::policy_default_is_push ... ok [INFO] [stdout] test workspace::tests::yaml_without_auto_push_returns_none ... ok [INFO] [stdout] test backend::tests::dirty_check_ignores_gitignored_knack_workspace ... ok [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/knack_types-1dc0a51b0236348d) [INFO] [stdout] test backend::tests::dirty_check_allows_changes_inside_current_skill_prefix ... ok [INFO] [stdout] test backend::tests::dirty_check_flags_real_unrelated_changes ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 39 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test tls::tests::truthy_accepts_common_forms ... ok [INFO] [stdout] test tls::tests::flags_override_env ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests knack_cli [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] Doc-tests knack_backend_github [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] Doc-tests knack_types [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" "bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b", kill_on_drop: false }` [INFO] [stdout] bfc9247d6d4e8e24e2e1f83bdc0f7130890175720cc5e66f3468b1726920cf3b