[INFO] fetching crate dodot-lib 5.10.0... [INFO] testing dodot-lib-5.10.0 against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2 [INFO] extracting crate dodot-lib 5.10.0 into /workspace/builds/worker-5-tc1/source [INFO] started tweaking crates.io crate dodot-lib 5.10.0 [INFO] finished tweaking crates.io crate dodot-lib 5.10.0 [INFO] tweaked toml for crates.io crate dodot-lib 5.10.0 written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate dodot-lib 5.10.0 on toolchain 1.99.0-beta.8 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate dodot-lib 5.10.0 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.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded memo-map v0.3.3 [INFO] [stderr] Downloaded timeago v0.6.1 [INFO] [stderr] Downloaded standout-bbparser v7.10.2 [INFO] [stderr] Downloaded dark-light v0.2.3 [INFO] [stderr] Downloaded zvariant_derive v3.15.2 [INFO] [stderr] Downloaded zvariant_utils v1.0.1 [INFO] [stderr] Downloaded zbus_names v2.6.1 [INFO] [stderr] Downloaded zbus_macros v3.15.2 [INFO] [stderr] Downloaded async-process v1.8.1 [INFO] [stderr] Downloaded minijinja v2.19.0 [INFO] [stderr] Downloaded dlv-list v0.3.0 [INFO] [stderr] Downloaded dconf_rs v0.3.0 [INFO] [stderr] Downloaded east-asian-width v0.1.0 [INFO] [stderr] Downloaded rust-ini v0.18.0 [INFO] [stderr] Downloaded ordered-multimap v0.4.3 [INFO] [stderr] Downloaded confique-macro v0.0.13 [INFO] [stderr] Downloaded event-listener v3.1.0 [INFO] [stderr] Downloaded zvariant v3.15.2 [INFO] [stderr] Downloaded cssparser v0.31.2 [INFO] [stderr] Downloaded plist v1.9.0 [INFO] [stderr] Downloaded diffy v0.4.2 [INFO] [stderr] Downloaded burgertocow-lib v0.4.0 [INFO] [stderr] Downloaded confique v0.4.0 [INFO] [stderr] Downloaded clapfig v0.16.0 [INFO] [stderr] Downloaded zbus v3.15.2 [INFO] [stderr] Downloaded standout-render v7.10.2 [INFO] [stderr] Downloaded detect-desktop-environment v0.2.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6 [INFO] running `Command { std: "docker" "start" "2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6", 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" "2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6", 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" "2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.185 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling hashbrown v0.17.0 [INFO] [stderr] Compiling parking v2.2.1 [INFO] [stderr] Compiling futures-io v0.3.32 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling winnow v0.5.40 [INFO] [stderr] Compiling zerofrom v0.1.7 [INFO] [stderr] Compiling cc v1.2.62 [INFO] [stderr] Compiling ahash v0.7.8 [INFO] [stderr] Compiling io-lifetimes v1.0.11 [INFO] [stderr] Compiling event-listener v2.5.3 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling futures-lite v2.6.1 [INFO] [stderr] Compiling yoke v0.8.2 [INFO] [stderr] Compiling memoffset v0.7.1 [INFO] [stderr] Compiling polling v2.8.0 [INFO] [stderr] Compiling enumflags2_derive v0.7.12 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling fastrand v1.9.0 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling waker-fn v1.2.0 [INFO] [stderr] Compiling rustix v0.37.28 [INFO] [stderr] Compiling siphasher v1.0.2 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling async-task v4.7.1 [INFO] [stderr] Compiling indexmap v2.14.0 [INFO] [stderr] Compiling phf_shared v0.11.3 [INFO] [stderr] Compiling concurrent-queue v2.5.0 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling rustls-pki-types v1.14.1 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling enumflags2 v0.7.12 [INFO] [stderr] Compiling futures-lite v1.13.0 [INFO] [stderr] Compiling event-listener v5.4.1 [INFO] [stderr] Compiling piper v0.2.5 [INFO] [stderr] Compiling event-listener-strategy v0.5.4 [INFO] [stderr] Compiling async-channel v2.5.0 [INFO] [stderr] Compiling async-lock v2.8.0 [INFO] [stderr] Compiling async-io v1.13.0 [INFO] [stderr] Compiling async-fs v1.6.0 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling linux-raw-sys v0.3.8 [INFO] [stderr] Compiling phf_generator v0.11.3 [INFO] [stderr] Compiling blocking v1.6.2 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling simd-adler32 v0.3.9 [INFO] [stderr] Compiling dlv-list v0.3.0 [INFO] [stderr] Compiling winnow v1.0.1 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling phf_macros v0.11.3 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling toml_edit v0.19.15 [INFO] [stderr] Compiling toml_parser v1.1.2+spec-1.1.0 [INFO] [stderr] Compiling async-executor v1.14.0 [INFO] [stderr] Compiling async-broadcast v0.5.1 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling serde_spanned v1.1.1 [INFO] [stderr] Compiling toml_datetime v0.7.5+spec-1.1.0 [INFO] [stderr] Compiling ordered-stream v0.2.0 [INFO] [stderr] Compiling serde_repr v0.1.20 [INFO] [stderr] Compiling async-recursion v1.1.1 [INFO] [stderr] Compiling adler2 v2.0.1 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling socket2 v0.4.10 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling hashbrown v0.12.3 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling xdg-home v1.3.0 [INFO] [stderr] Compiling nix v0.26.4 [INFO] [stderr] Compiling ordered-multimap v0.4.3 [INFO] [stderr] Compiling dirs-sys v0.3.7 [INFO] [stderr] Compiling memo-map v0.3.3 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling dark-light v0.2.3 [INFO] [stderr] Compiling proc-macro-crate v1.3.1 [INFO] [stderr] Compiling rustls v0.23.40 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling zvariant_utils v1.0.1 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling toml v0.9.12+spec-1.1.0 [INFO] [stderr] Compiling rust-ini v0.18.0 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling dirs v4.0.0 [INFO] [stderr] Compiling minijinja v2.19.0 [INFO] [stderr] Compiling console v0.16.3 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling phf v0.11.3 [INFO] [stderr] Compiling webpki-roots v1.0.7 [INFO] [stderr] Compiling idna_adapter v1.2.2 [INFO] [stderr] Compiling confique-macro v0.0.13 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling csv-core v0.1.13 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling cssparser-macros v0.6.1 [INFO] [stderr] Compiling detect-desktop-environment v0.2.0 [INFO] [stderr] Compiling bumpalo v3.20.2 [INFO] [stderr] Compiling unsafe-libyaml v0.2.11 [INFO] [stderr] Compiling dconf_rs v0.3.0 [INFO] [stderr] Compiling zip v2.4.2 [INFO] [stderr] Compiling zopfli v0.8.3 [INFO] [stderr] Compiling cssparser v0.31.2 [INFO] [stderr] Compiling zvariant_derive v3.15.2 [INFO] [stderr] Compiling derivative v2.2.0 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling confique v0.4.0 [INFO] [stderr] Compiling zbus_macros v3.15.2 [INFO] [stderr] Compiling zvariant v3.15.2 [INFO] [stderr] Compiling serde_yaml v0.9.34+deprecated [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling csv v1.4.0 [INFO] [stderr] Compiling standout-bbparser v7.10.2 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling webpki-roots v0.26.11 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling directories v6.0.0 [INFO] [stderr] Compiling xattr v1.6.1 [INFO] [stderr] Compiling terminal_size v0.4.4 [INFO] [stderr] Compiling filetime v0.2.27 [INFO] [stderr] Compiling quick-xml v0.36.2 [INFO] [stderr] Compiling serde_ignored v0.1.14 [INFO] [stderr] Compiling quick-xml v0.39.2 [INFO] [stderr] Compiling east-asian-width v0.1.0 [INFO] [stderr] Compiling deunicode v1.6.2 [INFO] [stderr] Compiling similar v2.7.0 [INFO] [stderr] Compiling diffy v0.4.2 [INFO] [stderr] Compiling zbus_names v2.6.1 [INFO] [stderr] Compiling plist v1.9.0 [INFO] [stderr] Compiling zbus v3.15.2 [INFO] [stderr] Compiling burgertocow-lib v0.4.0 [INFO] [stderr] Compiling clapfig v0.16.0 [INFO] [stderr] Compiling tar v0.4.45 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling timeago v0.6.1 [INFO] [stderr] Compiling glob v0.3.3 [INFO] [stderr] Compiling rustls-webpki v0.103.13 [INFO] [stderr] Compiling standout-render v7.10.2 [INFO] [stderr] Compiling ureq v2.12.1 [INFO] [stderr] Compiling dodot-lib v5.10.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 3m 31s [INFO] running `Command { std: "docker" "inspect" "2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6", 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" "2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling dodot-lib v5.10.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 1m 26s [INFO] running `Command { std: "docker" "inspect" "2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6", 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" "2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.43s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/release/deps/dodot_lib-d2c23658fc9acb43) [INFO] [stdout] [INFO] [stdout] running 2012 tests [INFO] [stdout] test commands::adopt::classify::tests::a_defined_gate_directory_stays_adoptable ... ok [INFO] [stdout] test commands::adopt::classify::tests::a_hidden_inferred_pack_name_refuses ... ok [INFO] [stdout] test commands::adopt::classify::tests::an_undefined_gate_directory_is_not_adoptable ... ok [INFO] [stdout] test commands::adopt::classify::tests::a_failing_gate_directory_hides_its_child_from_classification ... ok [INFO] [stdout] test commands::adopt::classify::tests::hidden_wins_over_an_undefined_gate_label ... ok [INFO] [stdout] test commands::adopt::classify::tests::a_passing_gate_directory_exposes_its_child_to_classification ... ok [INFO] [stdout] test commands::adopt::classify::tests::an_inferred_pack_name_the_root_scan_ignores_refuses ... ok [INFO] [stdout] test commands::adopt::classify::tests::an_ignored_first_component_names_that_component ... ok [INFO] [stdout] test commands::adopt::classify::tests::an_undefined_gate_directory_adopted_whole_is_not_adoptable ... ok [INFO] [stdout] test commands::adopt::classify::tests::an_undefined_gate_name_on_a_file_is_adoptable ... ok [INFO] [stdout] test commands::adopt::classify::tests::ignore_wins_over_hidden ... ok [INFO] [stdout] test commands::adopt::classify::tests::only_the_first_component_is_classified ... ok [INFO] [stdout] test commands::adopt::classify::tests::dot_config_is_the_hidden_rules_exception ... ok [INFO] [stdout] test commands::adopt::classify::tests::an_empty_stem_inferred_pack_name_refuses ... ok [INFO] [stdout] test commands::adopt::classify::tests::an_invalid_inferred_pack_name_refuses ... ok [INFO] [stdout] test commands::adopt::classify::tests::a_discoverable_pack_name_passes ... ok [INFO] [stdout] test commands::adopt::infer::tests::gui_app_heuristic_empty_name_no ... ok [INFO] [stdout] test commands::adopt::infer::tests::gui_app_heuristic_uppercase_yes ... ok [INFO] [stdout] test commands::adopt::infer::tests::gui_app_heuristic_reverse_dns_yes ... ok [INFO] [stdout] test commands::adopt::infer::tests::gui_app_heuristic_dotted_but_empty_segment_no ... ok [INFO] [stdout] test commands::adopt::classify::tests::reserved_wins_over_hidden ... ok [INFO] [stdout] test commands::adopt::classify::tests::routing_prefixes_are_ordinary_names_and_stop_the_walk ... ok [INFO] [stdout] test commands::adopt::classify::tests::reserved_below_the_first_component_is_adoptable ... ok [INFO] [stdout] test commands::adopt::infer::tests::gui_app_heuristic_space_yes ... ok [INFO] [stdout] test commands::adopt::infer::tests::gui_app_heuristic_lowercase_cli_tool_no ... ok [INFO] [stdout] test commands::adopt::infer::tests::xdg_inside_home_prefers_xdg_root ... ok [INFO] [stdout] test commands::adopt::infer::tests::home_dotted_file_uses_home_prefix_no_pack_inference ... ok [INFO] [stdout] test commands::adopt::infer::tests::app_support_nested_file_uses_app_prefix ... ok [INFO] [stdout] test commands::adopt::infer::tests::unrecognized_root_lists_known_roots ... ok [INFO] [stdout] test commands::adopt::infer::tests::app_support_pack_root_directory_triggers_expansion ... ok [INFO] [stdout] test commands::adopt::infer::tests::macos_containers_path_is_refused ... ok [INFO] [stdout] test commands::adopt::infer::tests::home_nested_outside_xdg_is_unrecognized ... ok [INFO] [stdout] test commands::adopt::infer::tests::app_support_outranks_home_when_distinct_root ... ok [INFO] [stdout] test commands::adopt::infer::tests::xdg_deeply_nested_file_keeps_full_subpath ... ok [INFO] [stdout] test commands::adopt::infer::tests::home_dotted_dir_uses_home_subtree_prefix ... ok [INFO] [stdout] test commands::adopt::infer::tests::xdg_loose_file_at_root_is_refused ... ok [INFO] [stdout] test commands::adopt::infer::tests::home_force_home_uses_bare_name ... ok [INFO] [stdout] test commands::adopt::infer::tests::home_root_itself_is_refused ... ok [INFO] [stdout] test commands::adopt::infer::tests::home_non_dotted_is_refused ... ok [INFO] [stdout] test commands::adopt::infer::tests::app_support_collapsed_falls_back_to_lib_or_unrecognized ... ok [INFO] [stdout] test commands::adopt::infer::tests::xdg_nested_file_infers_pack_and_relative_path ... ok [INFO] [stdout] test commands::adopt::infer::tests::xdg_pack_root_directory_triggers_expansion ... ok [INFO] [stdout] test commands::adopt::infer::tests::xdg_root_itself_is_refused ... ok [INFO] [stdout] test commands::git_alias::tests::install_alias_is_idempotent_on_current_block ... ok [INFO] [stdout] test commands::git_alias::tests::managed_block_is_self_contained_and_grep_detectable ... ok [INFO] [stdout] test commands::fill::tests::fill_nonexistent_pack_errors ... ok [INFO] [stdout] test commands::git_alias::tests::detect_returns_some_for_zsh ... ok [INFO] [stdout] test commands::git_alias::tests::detect_returns_none_for_unknown_shell ... ok [INFO] [stdout] test commands::git_alias::tests::find_managed_block_locates_byte_range ... ok [INFO] [stdout] test commands::git_alias::tests::alias_line_runs_refresh_then_command_git ... ok [INFO] [stdout] test commands::git_alias::tests::from_str_opt_recognises_known_shells ... ok [INFO] [stdout] test commands::fill::tests::fill_creates_template_files ... ok [INFO] [stdout] test commands::fill::tests::fill_all_existing_reports_correctly ... ok [INFO] [stdout] test commands::git_alias::tests::is_installed_reflects_state ... ok [INFO] [stdout] test commands::git_alias::tests::resolve_shell_no_explicit_unset_shell_errors ... ok [INFO] [stdout] test commands::git_alias::tests::resolve_shell_no_explicit_unsupported_shell_errors ... ok [INFO] [stdout] test commands::fill::tests::fill_skips_existing_files ... ok [INFO] [stdout] test commands::git_alias::tests::install_alias_updates_a_stale_block ... ok [INFO] [stdout] test commands::git_filters::tests::gitattributes_recogniser_handles_whitespace_and_comments ... ok [INFO] [stdout] test commands::git_alias::tests::find_managed_block_returns_none_when_absent ... ok [INFO] [stdout] test commands::git_alias::tests::detect_returns_some_for_bash ... ok [INFO] [stdout] test commands::git_alias::tests::resolve_shell_explicit_unknown_returns_error ... ok [INFO] [stdout] test commands::probe::render::tests::display_path_keeps_paths_outside_home ... ok [INFO] [stdout] test commands::probe::render::tests::display_path_shortens_home ... ok [INFO] [stdout] test commands::git_alias::tests::install_alias_appends_to_existing_rc ... ok [INFO] [stdout] test commands::probe::render::tests::into_display_entry_handles_sentinel_source ... ok [INFO] [stdout] test commands::git_alias::tests::install_alias_creates_rc_file_when_absent ... ok [INFO] [stdout] test commands::git_alias::tests::show_alias_reports_already_installed_when_block_present ... ok [INFO] [stdout] test commands::git_filters::tests::normalize_plist_extensions_strips_lowercases_dedupes_and_filters ... ok [INFO] [stdout] test commands::git_alias::tests::rc_paths_match_shell_conventions ... ok [INFO] [stdout] test commands::git_filters::tests::config_block_has_required_key ... ok [INFO] [stdout] test commands::probe::render::tests::humanize_bytes_boundaries ... ok [INFO] [stdout] test commands::probe::render::tests::annotate_broken_symlink ... ok [INFO] [stdout] test commands::probe::tests::probe_result_show_data_dir_serialises_with_kind_tag ... ok [INFO] [stdout] test commands::git_alias::tests::show_alias_renders_block_without_writing ... ok [INFO] [stdout] test commands::probe::tests::probe_subcommands_list_matches_variants ... ok [INFO] [stdout] test commands::prompts::tests::list_shows_dismissed_after_dismissal ... ok [INFO] [stdout] test commands::prompts::tests::list_shows_every_known_prompt_as_active_initially ... ok [INFO] [stdout] test commands::git_alias::tests::resolve_shell_explicit_known_returns_match ... ok [INFO] [stdout] test commands::probe::tests::probe_result_deployment_map_serialises_with_kind_tag ... ok [INFO] [stdout] test commands::git_filters::tests::detect_plist_files_finds_plists_in_packs ... ok [INFO] [stdout] test commands::prompts::tests::reset_all_clears_everything ... ok [INFO] [stdout] test commands::prompts::tests::list_surfaces_unknown_keys_so_they_can_be_reset ... ok [INFO] [stdout] test commands::prompts::tests::reset_one_persists ... ok [INFO] [stdout] test commands::git_filters::tests::detect_plist_files_honors_custom_extension ... ok [INFO] [stdout] test commands::probe::shell_init::tests::format_unix_ts_handles_zero_and_out_of_range ... ok [INFO] [stdout] test commands::probe::render::tests::tree_flattening_produces_branch_glyphs ... ok [INFO] [stdout] test commands::probe::render::tests::annotate_symlink_with_target ... ok [INFO] [stdout] test commands::prompts::tests::reset_unknown_key_succeeds_without_error ... ok [INFO] [stdout] test commands::probe::render::tests::annotate_truncated_dir ... ok [INFO] [stdout] test commands::refresh::tests::a_baseline_without_a_source_path_is_reported_as_stale ... ok [INFO] [stdout] test commands::refresh::tests::clean_state_is_a_noop ... ok [INFO] [stdout] test commands::git_filters::tests::detect_plist_files_skips_dodotignored_packs ... ok [INFO] [stdout] test commands::refresh::tests::empty_cache_yields_empty_report ... ok [INFO] [stdout] test commands::roots::tests::an_absent_trust_file_lists_as_no_approvals ... ok [INFO] [stdout] test commands::refresh::tests::entries_are_sorted_by_pack_handler_filename ... ok [INFO] [stdout] test commands::roots::tests::a_root_that_no_longer_exists_is_still_revocable_by_its_printed_spelling ... ok [INFO] [stdout] test commands::roots::tests::a_relative_argument_without_an_invocation_directory_fails_with_the_recovery_route ... ok [INFO] [stdout] test commands::git_filters::tests::gitattributes_lines_emits_one_per_extension ... ok [INFO] [stdout] test commands::refresh::tests::missing_source_is_reported_not_an_error ... ok [INFO] [stdout] test commands::refresh::tests::missing_deployed_is_reported_not_an_error ... ok [INFO] [stdout] test commands::roots::tests::listing_reports_whether_each_approved_root_still_exists ... ok [INFO] [stdout] test commands::refresh::tests::list_paths_mode_reports_only_authorized_sources ... ok [INFO] [stdout] test commands::roots::tests::an_absolute_argument_revokes_without_an_invocation_directory ... ok [INFO] [stdout] test commands::roots::tests::an_argument_matching_nothing_is_reported_rather_than_failed ... ok [INFO] [stdout] test commands::roots::tests::forgetting_repairs_a_duplicated_approval_that_every_other_route_refuses ... ok [INFO] [stdout] test commands::safety::tests::the_rendered_prompt_names_the_root_its_counts_and_its_sample ... ok [INFO] [stdout] test commands::safety::tests::the_view_names_the_root_the_way_roots_list_will ... ok [INFO] [stdout] test commands::roots::tests::listing_surfaces_an_unusable_trust_file_instead_of_showing_it_empty ... ok [INFO] [stdout] test commands::safety::tests::an_empty_root_says_so_instead_of_rendering_an_empty_inventory ... ok [INFO] [stdout] test commands::roots::tests::lossy_colliding_roots_list_and_revoke_as_two_records ... ok [INFO] [stdout] test commands::safety::tests::counts_survive_the_path_cap_that_omitted_their_examples ... ok [INFO] [stdout] test commands::roots::tests::forgetting_removes_the_approval_and_leaves_the_others ... ok [INFO] [stdout] test commands::refresh::tests::authorizing_one_root_never_touches_the_other_roots_sources ... ok [INFO] [stdout] test commands::refresh::tests::a_source_symlinked_out_of_the_root_is_reported_not_touched ... ok [INFO] [stdout] test commands::secret::tests::scan_finds_single_quoted_call ... ok [INFO] [stdout] test commands::secret::tests::scan_reports_correct_line_number_in_multiline_template ... ok [INFO] [stdout] test commands::secret::tests::scan_does_not_match_word_with_secret_prefix ... ok [INFO] [stdout] test commands::secret::tests::scan_skips_unterminated_string_and_does_not_panic ... ok [INFO] [stdout] test commands::secret::tests::scan_does_not_match_word_with_secret_suffix ... ok [INFO] [stdout] test commands::secret::tests::scan_finds_double_quoted_call ... ok [INFO] [stdout] test commands::secret::tests::probe_reports_disabled_when_master_switch_off ... ok [INFO] [stdout] test commands::secret::tests::scan_finds_multiple_calls_in_one_template ... ok [INFO] [stdout] test commands::secret::tests::probe_reports_disabled_when_no_provider_is_enabled ... ok [INFO] [stdout] test commands::status::tests::line_summary_singular_for_one_added ... ok [INFO] [stdout] test commands::secret::tests::list_recognises_gate_suffixed_template_extension ... ok [INFO] [stdout] test commands::status::tests::intent_display_name_falls_back_to_basename_for_unrelated_paths ... ok [INFO] [stdout] test commands::secret::tests::scan_handles_mismatched_quote_styles_independently ... ok [INFO] [stdout] test commands::secret::tests::list_skips_basename_gated_template ... ok [INFO] [stdout] test commands::secret::tests::scan_tolerates_whitespace_between_secret_paren_and_string ... ok [INFO] [stdout] test commands::status::tests::unified_diff_carries_per_run_filename_decorations ... ok [INFO] [stdout] test commands::status::tests::intent_display_name_pack_relative_for_pack_file ... ok [INFO] [stdout] test commands::status::tests::intent_display_name_strips_preprocessed_prefix_for_rendered_files ... ok [INFO] [stdout] test commands::status::tests::run_once_health_older_version_no_snapshot_falls_back_to_label_only ... ok [INFO] [stdout] test commands::status::tests::run_once_health_older_version_carries_line_summary_when_snapshot_present ... ok [INFO] [stdout] test commands::status::tests::run_once_health_show_diff_emits_diff_payload_when_snapshot_present ... ok [INFO] [stdout] test commands::status::tests::run_once_health_deployed_when_current_hash_matches ... ok [INFO] [stdout] test commands::status::tests::run_once_health_pending_when_no_sentinel ... ok [INFO] [stdout] test commands::status::tests::line_summary_counts_added_and_removed_lines ... ok [INFO] [stdout] test commands::status::tests::line_summary_zero_when_inputs_match ... ok [INFO] [stdout] test commands::roots::tests::a_relative_argument_is_anchored_to_the_captured_invocation_directory ... ok [INFO] [stdout] test commands::refresh::tests::list_paths_mode_does_not_write_mtimes ... ok [INFO] [stdout] test commands::template_clean::tests::fast_path_echoes_stdin_when_deployed_matches_baseline ... ok [INFO] [stdout] test commands::template_clean::tests::no_reverse_pattern_match_skips_slow_path ... ok [INFO] [stdout] test commands::refresh::tests::divergent_deployed_touches_source_mtime ... ok [INFO] [stdout] test commands::refresh::tests::quiet_mode_still_writes_mtimes ... ok [INFO] [stdout] test commands::template_clean::tests::empty_tracked_render_falls_back_to_echo ... ok [INFO] [stdout] test commands::template_clean::tests::no_reverse_glob_match_skips_slow_path ... ok [INFO] [stdout] test commands::refresh::tests::divergent_with_equal_mtimes_still_bumps_source ... ok [INFO] [stdout] test commands::refresh::tests::pure_data_edit_is_still_treated_as_divergent ... ok [INFO] [stdout] test commands::template_clean::tests::no_reverse_does_not_block_fast_path ... ok [INFO] [stdout] test commands::template_install_filter::tests::config_block_carries_required_keys ... ok [INFO] [stdout] test commands::template_install_filter::tests::gitattributes_line_recogniser_handles_whitespace_and_comments ... ok [INFO] [stdout] test commands::template_clean::tests::stdio_passthrough_writes_filter_output_to_stdout ... ok [INFO] [stdout] test commands::template_clean::tests::slow_path_pure_data_edit_echoes_stdin ... ok [INFO] [stdout] test commands::template_clean::tests::missing_deployed_echoes_stdin ... ok [INFO] [stdout] test commands::template_install_filter::tests::show_filter_renders_block_and_attributes_line ... ok [INFO] [stdout] test commands::template_clean::tests::filter_never_fails_on_baseline_disagreement ... ok [INFO] [stdout] test commands::template_install_filter::tests::install_filter_is_idempotent ... ok [INFO] [stdout] test commands::template_clean::tests::unknown_source_path_echoes_stdin ... ok [INFO] [stdout] test commands::template_install_filter::tests::install_filter_writes_three_config_keys_first_time ... ok [INFO] [stdout] test commands::template_install_filter::tests::is_installed_reflects_state_correctly ... ok [INFO] [stdout] test commands::template_clean::tests::slow_path_patches_static_line_edit ... ok [INFO] [stdout] test commands::template_clean::tests::slow_path_conflict_appends_marker_block_to_template ... ok [INFO] [stdout] test commands::tests::activation::status_from_a_stale_shell_hints_at_opening_a_new_shell ... ok [INFO] [stdout] test commands::tests::activation::status_after_an_up_does_not_advise_a_new_shell_when_the_hook_is_gone ... ok [INFO] [stdout] test commands::tests::addignore_idempotent ... ok [INFO] [stdout] test commands::tests::activation::down_reports_the_wired_but_empty_script ... ok [INFO] [stdout] test commands::tests::activation::status_reads_a_planted_pre_version_heartbeat_as_the_bound ... ok [INFO] [stdout] test commands::tests::activation::the_footer_renders_both_lines ... ok [INFO] [stdout] test commands::tests::activation::an_all_ignored_repo_reports_the_wired_but_empty_script ... ok [INFO] [stdout] test commands::tests::activation::up_on_a_fresh_install_ends_with_the_never_activated_warning ... ok [INFO] [stdout] test commands::tests::activation::status_stays_healthy_when_the_heartbeat_is_current_but_this_process_has_no_stamp ... ok [INFO] [stdout] test commands::tests::activation::status_reports_the_healthy_footer_for_a_healthy_hookup ... ok [INFO] [stdout] test commands::template_clean::tests::stdio_soft_fails_when_inner_clean_errors ... ok [INFO] [stdout] test commands::tests::activation::status_from_a_tty_shell_with_the_hook_wired_advises_a_new_shell ... ok [INFO] [stdout] test commands::tests::activation::a_healthy_footer_renders_in_the_ok_style ... ok [INFO] [stdout] test commands::tests::activation::status_from_a_live_tty_shell_stays_healthy ... ok [INFO] [stdout] test commands::tests::addignore_creates_file ... ok [INFO] [stdout] test commands::tests::activation::up_from_a_live_shell_reports_the_healthy_footer ... ok [INFO] [stdout] test commands::tests::adopt::a_failure_on_the_second_of_three_sources_leaves_the_first_and_third_adopted ... ok [INFO] [stdout] test commands::tests::adopt::a_failed_source_puts_back_the_destination_force_displaced ... ok [INFO] [stdout] test commands::tests::adopt::a_recovery_does_not_put_a_displacement_back_over_a_path_taken_since ... ok [INFO] [stdout] test commands::tests::activation::status_from_a_tty_shell_without_a_stamp_reports_the_dead_hookup ... ok [INFO] [stdout] test commands::tests::adopt::a_file_source_is_readable_until_one_rename_makes_it_the_symlink ... ok [INFO] [stdout] test commands::tests::addignore_on_deployed_pack_warns ... ok [INFO] [stdout] test commands::tests::adopt::a_defined_gate_directory_stays_adoptable ... ok [INFO] [stdout] test commands::tests::activation::status_reports_version_skew_naming_both_versions ... ok [INFO] [stdout] test commands::tests::adopt::a_directory_source_whose_symlink_fails_comes_back_whole ... ok [INFO] [stdout] test commands::tests::adopt::a_new_pack_keeps_the_entries_of_the_sources_that_were_replaced ... ok [INFO] [stdout] test commands::tests::adopt::a_recovery_leaves_an_existing_packs_directory_a_writer_edited_inside ... ok [INFO] [stdout] test commands::tests::adopt::a_recovery_leaves_a_new_packs_directory_a_writer_edited_inside ... ok [INFO] [stdout] test commands::tests::adopt::a_new_pack_whose_every_source_fails_is_taken_back_out ... ok [INFO] [stdout] test commands::tests::adopt::a_failed_source_takes_the_directories_publication_made_for_it ... ok [INFO] [stdout] test commands::tests::adopt::adopt_app_support_falls_back_to_lowercase_when_no_cask_match ... ignored, macOS-only enrichment paths [INFO] [stdout] test commands::tests::adopt::adopt_app_support_reverse_dns_uses_cask_token_in_tip ... ignored, macOS-only enrichment paths [INFO] [stdout] test commands::tests::adopt::a_recovery_that_cannot_take_the_entry_out_of_an_existing_pack_names_it ... ok [INFO] [stdout] test commands::tests::adopt::a_recovery_that_cannot_put_a_displacement_back_keeps_the_staged_copy ... ok [INFO] [stdout] test commands::tests::adopt::a_recovery_leaves_a_new_packs_entry_another_writer_replaced ... ok [INFO] [stdout] test commands::tests::adopt::adopt_already_adopted_source_is_skipped ... ok [INFO] [stdout] test commands::tests::adopt::adopt_classifies_inside_a_passing_only_os_directory ... ok [INFO] [stdout] test commands::tests::adopt::adopt_deploy_conflict_refused_against_an_unrendered_template ... ok [INFO] [stdout] test commands::tests::adopt::adopt_disagreeing_inferred_packs_refused ... ok [INFO] [stdout] test commands::tests::adopt::adopt_app_support_pack_root_directory_expands_to_children ... ok [INFO] [stdout] test commands::tests::adopt::a_run_of_successful_plans_and_left_in_place_reports_exits_zero ... ok [INFO] [stdout] test commands::tests::adopt::adopt_deploy_conflict_refused_against_an_externals_manifest ... ok [INFO] [stdout] test commands::tests::adopt::adopt_deploy_conflict_not_bypassed_by_force ... ok [INFO] [stdout] test commands::tests::adopt::adopt_app_support_source_round_trips_through_app_prefix ... ok [INFO] [stdout] test commands::tests::adopt::adopt_classification_refusal_creates_no_inferred_pack ... ok [INFO] [stdout] test commands::tests::adopt::adopt_empty_sources_errors ... ok [INFO] [stdout] test commands::tests::adopt::a_recovery_that_cannot_remove_a_new_packs_entry_names_it ... ok [INFO] [stdout] test commands::tests::adopt::adopt_app_support_emits_capitalization_hint ... ok [INFO] [stdout] test commands::tests::adopt::adopt_dry_run_makes_no_changes ... ok [INFO] [stdout] test commands::tests::adopt::adopt_deploy_conflict_refused ... ok [INFO] [stdout] test commands::tests::adopt::adopt_discovered_reserved_filename_errors ... ok [INFO] [stdout] test commands::tests::adopt::adopt_directory_creates_symlink_and_preserves_contents ... ok [INFO] [stdout] test commands::tests::adopt::adopt_app_support_into_override_suppresses_hint ... ok [INFO] [stdout] test commands::tests::adopt::adopt_destination_conflict_refused_without_force ... ok [INFO] [stdout] test commands::tests::adopt::adopt_dispatch_layer_filters_do_not_refuse_or_report ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_force_failure_restores_every_displaced_destination ... ok [INFO] [stdout] test commands::tests::adopt::adopt_destination_conflict_resolved_with_force ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_force_retains_displaced_content_through_source_replacement ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_rollback_keeps_a_directory_that_gained_content ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_creates_only_the_intermediate_dirs_the_plan_needs ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_refused_by_validation_stays_byte_identical ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_dry_run_writes_no_final_path ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_publishes_directories_and_nested_destinations ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_failure_before_displacement_restores_nothing ... ok [INFO] [stdout] test commands::tests::adopt::adopt_expansion_adopts_a_child_named_dot_config ... ok [INFO] [stdout] test commands::tests::adopt::adopt_expansion_leaves_a_hidden_child_in_place_and_names_the_rule ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_failure_restores_a_displaced_directory_and_clears_nested_dirs ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_rollback_leaves_a_path_another_writer_replaced ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_failure_at_entry_two_restores_entry_one ... ok [INFO] [stdout] test commands::tests::adopt::adopt_expansion_with_only_hidden_children_errors ... ok [INFO] [stdout] test commands::tests::adopt::adopt_expansion_with_no_adoptable_children_errors_and_writes_nothing ... ok [INFO] [stdout] test commands::tests::adopt::adopt_expansion_of_an_empty_directory_errors ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_rollback_that_cannot_unpublish_leaves_the_content_in_place ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_refuses_an_intermediate_that_is_not_a_directory ... ok [INFO] [stdout] test commands::tests::adopt::adopt_filename_matching_pack_ignore_refused ... ok [INFO] [stdout] test commands::tests::adopt::adopt_force_preserves_old_content_when_copy_fails ... ok [INFO] [stdout] test commands::tests::adopt::adopt_dotted_dir_from_home_round_trips_via_home_escape ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_rollback_that_cannot_restore_keeps_the_displaced_content ... ok [INFO] [stdout] test commands::tests::adopt::adopt_force_still_refuses_a_conflict_the_replacement_leaves_standing ... ok [INFO] [stdout] test commands::tests::adopt::adopt_force_supersedes_an_entry_behind_a_passing_directory_gate ... ok [INFO] [stdout] test commands::tests::adopt::adopt_existing_pack_rollback_does_not_overwrite_a_destination_taken_since ... ok [INFO] [stdout] test commands::tests::adopt::adopt_home_source_without_into_requires_pack ... ok [INFO] [stdout] test commands::tests::adopt::adopt_ignored_pack_refused ... ok [INFO] [stdout] test commands::tests::adopt::adopt_ignored_first_component_errors_naming_that_component ... ok [INFO] [stdout] test commands::tests::adopt::adopt_ignores_but_does_not_touch_a_leftover_preparation_directory ... ok [INFO] [stdout] test commands::tests::adopt::adopt_hidden_name_below_the_top_level_position_is_adopted ... ok [INFO] [stdout] test commands::tests::adopt::adopt_named_ignored_source_names_the_pack_layer_for_a_default_pattern ... ok [INFO] [stdout] test commands::tests::adopt::adopt_ignored_component_below_the_first_is_adopted ... ok [INFO] [stdout] test commands::tests::adopt::adopt_named_ignored_source_errors_naming_pattern_and_default_layer ... ok [INFO] [stdout] test commands::tests::adopt::adopt_named_reserved_filename_errors_without_a_pattern_or_layer ... ok [INFO] [stdout] test commands::tests::adopt::adopt_moves_file_and_creates_symlink ... ok [INFO] [stdout] test commands::tests::adopt::adopt_new_pack_preparation_child_failure_removes_the_claimed_root ... ok [INFO] [stdout] test commands::tests::adopt::adopt_new_pack_copy_failure_removes_preparation_and_creates_no_pack ... ok [INFO] [stdout] test commands::tests::adopt::adopt_new_pack_claims_another_name_when_the_preparation_name_is_taken ... ok [INFO] [stdout] test commands::tests::adopt::adopt_named_hidden_source_errors_without_suggesting_a_config_change ... ok [INFO] [stdout] test commands::tests::adopt::adopt_fully_managed_source_keeps_original_skip_message ... ok [INFO] [stdout] test commands::tests::adopt::adopt_expansion_leaves_an_ignored_child_in_place_and_reports_it ... ok [INFO] [stdout] test commands::tests::adopt::adopt_into_existing_pack_leaves_a_leftover_preparation_directory_alone ... ok [INFO] [stdout] test commands::tests::adopt::adopt_force_validates_the_tree_publication_leaves_not_the_one_on_disk ... ok [INFO] [stdout] test commands::tests::adopt::adopt_new_pack_publication_failure_leaves_no_pack ... ok [INFO] [stdout] test commands::tests::adopt::adopt_nonexistent_pack_returns_pack_not_found ... ok [INFO] [stdout] test commands::tests::adopt::adopt_new_pack_refuses_when_the_pack_path_appears_at_the_instant_of_publication ... ok [INFO] [stdout] test commands::tests::adopt::adopt_overlapping_sources_refused_during_plan ... ok [INFO] [stdout] test commands::tests::adopt::adopt_force_changes_no_classification_outcome ... ok [INFO] [stdout] test commands::tests::adopt::adopt_nonexistent_source_errors ... ok [INFO] [stdout] test commands::tests::adopt::adopt_pack_level_ignore_replaces_the_root_list ... ok [INFO] [stdout] test commands::tests::adopt::adopt_new_pack_publishes_with_one_rename_and_replaces_sources ... ok [INFO] [stdout] test commands::tests::adopt::adopt_overlap_through_directory_expansion_refused_during_plan ... ok [INFO] [stdout] test commands::tests::adopt::adopt_overlapping_in_pack_paths_refused_with_their_pack_paths ... ok [INFO] [stdout] test commands::tests::adopt::adopt_new_pack_dry_run_reports_the_plan_and_writes_nothing ... ok [INFO] [stdout] test commands::tests::adopt::adopt_named_ignored_source_names_the_root_layer ... ok [INFO] [stdout] test commands::tests::adopt::adopt_preserves_executable_permissions ... ok [INFO] [stdout] test commands::tests::adopt::adopt_new_pack_stages_under_a_preparation_dir_no_pack_scan_reads ... ok [INFO] [stdout] test commands::tests::adopt::adopt_refuses_an_ignored_pack_name_for_a_directory_source ... ok [INFO] [stdout] test commands::tests::adopt::adopt_refuses_a_hidden_inferred_pack_name ... ok [INFO] [stdout] test commands::tests::adopt::adopt_new_pack_refuses_when_the_pack_path_appears_after_planning ... ok [INFO] [stdout] test commands::tests::adopt::adopt_no_follow_keeps_source_symlink_as_symlink ... ok [INFO] [stdout] test commands::tests::adopt::adopt_refused_while_an_externals_manifest_is_still_unrendered ... ok [INFO] [stdout] test commands::tests::adopt::adopt_refuses_a_source_behind_an_undefined_gate_directory ... ok [INFO] [stdout] test commands::tests::adopt::adopt_proceeds_against_an_externals_manifest_rendered_from_the_current_template ... ok [INFO] [stdout] test commands::tests::adopt::adopt_refuses_an_inferred_pack_name_the_root_scan_ignores ... ok [INFO] [stdout] test commands::tests::adopt::adopt_no_follow_on_dangling_symlink_succeeds ... ok [INFO] [stdout] test commands::tests::adopt::adopt_refused_while_an_externals_manifest_was_rendered_with_other_vars ... ok [INFO] [stdout] test commands::tests::adopt::adopt_refuses_non_dotted_home_entry ... ok [INFO] [stdout] test commands::tests::adopt::adopt_reads_externals_claims_from_the_cached_baseline ... ok [INFO] [stdout] test commands::tests::adopt::adopt_nested_replacement_keeps_the_top_level_entry_holding_it ... ok [INFO] [stdout] test commands::tests::adopt::adopt_refuses_an_inferred_pack_name_the_root_config_ignores ... ok [INFO] [stdout] test commands::tests::adopt::adopt_reserved_filename_below_the_first_component_is_adopted ... ok [INFO] [stdout] test commands::tests::adopt::adopt_new_pack_deploy_conflict_refused_leaves_no_pack ... ok [INFO] [stdout] test commands::tests::adopt::adopt_routing_prefix_position_never_refuses_on_its_own ... ok [INFO] [stdout] test commands::tests::adopt::adopt_plans_the_prepared_tree_under_the_destination_packs_config ... ok [INFO] [stdout] test commands::tests::adopt::adopt_xdg_lowercase_pack_emits_no_hint ... ok [INFO] [stdout] test commands::tests::adopt::adopt_preserves_inner_symlinks_as_symlinks ... ok [INFO] [stdout] test commands::tests::adopt::adopt_xdg_nested_file_lands_at_pack_root ... ok [INFO] [stdout] test commands::tests::adopt::adopt_persists_no_record_of_left_in_place_entries ... ok [INFO] [stdout] test commands::tests::adopt::adopt_xdg_pack_root_directory_expands_to_children ... ok [INFO] [stdout] test commands::tests::adopt::adopt_validation_does_not_render_another_packs_templates ... ok [INFO] [stdout] test commands::tests::adopt::adopt_relative_path_with_curdir_normalizes ... ok [INFO] [stdout] test commands::tests::adopt::pack_filename_round_trips_through_resolve_target ... ok [INFO] [stdout] test commands::tests::adopt::adopt_xdg_root_itself_refused ... ok [INFO] [stdout] test commands::tests::adopt::adopt_refused_while_an_externals_manifest_is_rendered_from_an_older_template ... ok [INFO] [stderr] dodot: homebrew at brew did not report its version: printed nothing. dodot cannot tell whether it is at 5.1.2, below which not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. This run continues. [INFO] [stderr] dodot: homebrew at /tmp/.tmpDDeMbC/home/fake-prefix/bin/brew did not report its version: printed nothing. dodot cannot tell whether it is at 5.1.2, below which not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. This run continues. [INFO] [stdout] test commands::tests::adopt::routing_prefixes_are_not_undefined_gate_labels ... ok [INFO] [stdout] test commands::tests::adopt::an_explicit_pack_takes_a_source_whose_inferred_name_is_ignored ... ok [INFO] [stdout] test commands::tests::adopt::adopt_xdg_with_into_override_uses_xdg_prefix ... ok [INFO] [stdout] test commands::tests::adopt::an_undefined_gate_directory_found_by_expansion_is_left_in_place ... ok [INFO] [stdout] test commands::tests::adopt::the_directory_sweep_keeps_what_a_replaced_source_still_occupies ... ok [INFO] [stdout] test commands::tests::availability::a_manager_removed_after_a_successful_run_annotates_without_changing_the_verdict ... ok [INFO] [stdout] test commands::tests::availability::a_handler_dodot_does_not_locate_keeps_its_path_lookup ... ok [INFO] [stdout] test commands::tests::adopt::up_auto_replaces_content_equivalent_pre_existing_file ... ok [INFO] [stdout] test commands::tests::availability::an_absent_manager_a_gate_and_no_provision_read_differently ... ok [INFO] [stdout] test commands::tests::adopt::unrendered_externals_refusal_not_bypassed_by_force ... ok [INFO] [stderr] dodot: homebrew at /tmp/.tmpqNxSAq/home/fake-prefix/bin/brew did not report its version: printed nothing. dodot cannot tell whether it is at 5.1.2, below which not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. This run continues. [INFO] [stdout] test commands::tests::adopt::force_does_not_bypass_the_pack_directory_rules ... ok [INFO] [stdout] test commands::tests::diagnostics_render_severity_headings_plain_markers_and_muted_commands ... ok [INFO] [stdout] test commands::tests::adopt::up_still_refuses_content_different_pre_existing_file ... ok [INFO] [stderr] dodot: homebrew at /tmp/.tmpSEVWza/home/fake-prefix/bin/brew did not report its version: printed nothing. dodot cannot tell whether it is at 5.1.2, below which not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. This run continues. [INFO] [stdout] test commands::tests::adopt::adopt_xdg_source_infers_pack_and_auto_creates ... ok [INFO] [stderr] dodot: homebrew at /tmp/.tmpJExZYI/home/fake-prefix/bin/brew did not report its version: printed nothing. dodot cannot tell whether it is at 5.1.2, below which not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. This run continues. [INFO] [stdout] test commands::tests::adopt::status_does_not_flag_content_equivalent_file_as_conflict ... ok [INFO] [stderr] dodot: homebrew at /tmp/.tmp0AAaXU/home/fake-prefix/bin/brew did not report its version: printed nothing. dodot cannot tell whether it is at 5.1.2, below which not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. This run continues. [INFO] [stdout] test commands::tests::adopt::adopt_xdg_pack_root_expansion_with_override_uses_xdg_prefix ... ok [INFO] [stdout] test commands::tests::availability::status_spawns_nothing_and_writes_nothing_whether_the_manager_is_there_or_not ... ok [INFO] [stdout] test commands::tests::availability::a_probe_failure_fails_the_run_without_costing_the_pack ... ok [INFO] [stdout] test commands::tests::availability::a_located_path_dodot_cannot_name_is_never_handed_over_corrupted ... ok [INFO] [stdout] test commands::tests::availability::a_probe_failure_is_an_error_not_an_absence ... ok [INFO] [stdout] test commands::tests::availability::an_absent_manager_costs_the_pack_nothing ... ok [INFO] [stdout] test commands::tests::availability::an_absent_manager_is_a_skip_that_names_where_dodot_looked ... ok [INFO] [stdout] test commands::tests::by_status_groups_packs_under_banners ... ok [INFO] [stdout] test commands::tests::availability::an_absent_manager_and_a_dry_run_both_stay_out_of_the_exit_code ... ok [INFO] [stdout] test commands::tests::down_on_already_down_pack_says_nothing_to_do ... ok [INFO] [stderr] dodot: homebrew at /tmp/.tmpeQBaoI/home/fake-prefix/bin/brew did not report its version: `/tmp/.tmpeQBaoI/home/fake-prefix/bin/brew --version` exited 127 (dyld: library not loaded). dodot cannot tell whether it is at 5.1.2, below which not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. This run continues. [INFO] [stdout] test commands::tests::availability::installing_the_manager_runs_the_file_on_the_next_up ... ok [INFO] [stderr] dodot: homebrew at /tmp/.tmpPHKcdS/home/fake-prefix/bin/brew is 5.0.16, older than 5.1.2: not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. Run `brew update` to update it. dodot runs this file anyway — everything that does not need the newer homebrew still works. [INFO] [stderr] dodot: homebrew at /tmp/.tmpFmudFR/home/fake-prefix/bin/brew is 5.0.16, older than 5.1.2: not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. Run `brew update` to update it. dodot runs this file anyway — everything that does not need the newer homebrew still works. [INFO] [stdout] test commands::tests::fitness::a_brew_that_will_not_say_is_a_probe_failure_not_an_absent_manager ... ok [INFO] [stdout] test commands::tests::availability::the_run_spawns_the_absolute_path_the_probe_found ... ok [INFO] [stdout] test commands::tests::fitness::a_brewfile_that_is_not_going_to_run_costs_no_version_probe ... ok [INFO] [stderr] dodot: homebrew at /tmp/.tmpPHKcdS/home/fake-prefix/bin/brew is 5.0.16, older than 5.1.2: not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. Run `brew update` to update it. dodot runs this file anyway — everything that does not need the newer homebrew still works. [INFO] [stderr] dodot: homebrew at /tmp/.tmp6HGY0e/home/fake-prefix/bin/brew is 5.0.16, older than 5.1.2: not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. Run `brew update` to update it. dodot runs this file anyway — everything that does not need the newer homebrew still works. [INFO] [stderr] dodot: homebrew at /tmp/.tmpTetlZE/home/fake-prefix/bin/brew is 5.0.16, older than 5.1.2: not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. Run `brew update` to update it. dodot runs this file anyway — everything that does not need the newer homebrew still works. [INFO] [stdout] test commands::tests::down_preserves_user_symlink_pointing_elsewhere ... ok [INFO] [stderr] dodot: homebrew at /tmp/.tmpVXvcG9/home/fake-prefix/bin/brew is 5.0.16, older than 5.1.2: not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. Run `brew update` to update it. dodot runs this file anyway — everything that does not need the newer homebrew still works. [INFO] [stdout] test commands::tests::down_removes_deployed_state ... ok [INFO] [stdout] test commands::tests::down_ignore_sweep_removes_live_user_symlink ... ok [INFO] [stdout] test commands::tests::fitness::a_brew_at_or_above_the_floor_produces_no_extra_output ... ok [INFO] [stdout] test commands::tests::fitness::one_spawn_per_manager_however_many_packs_declare_a_brewfile ... ok [INFO] [stdout] test commands::tests::down_and_status_produce_matching_labels ... ok [INFO] [stdout] test commands::tests::availability::up_status_and_dry_run_agree_on_every_machine_state ... ok [INFO] [stdout] test commands::tests::fitness::status_and_dry_run_never_ask_a_manager_for_its_version ... ok [INFO] [stdout] test commands::tests::down_leaves_live_links_of_orphaned_packs ... ok [INFO] [stdout] test commands::tests::fitness::provision_rerun_asks_again_because_the_file_runs_again ... ok [INFO] [stdout] test commands::tests::full_mode_renders_80_column_rows_with_isolated_status_style ... ok [INFO] [stdout] test commands::tests::fitness::the_version_probe_carries_the_same_environment_the_run_will ... ok [INFO] [stdout] test commands::tests::gating::adopt_only_os_unknown_label_errors ... ok [INFO] [stdout] test commands::tests::gating::adopt_only_os_wraps_file_in_gate_dir ... ok [INFO] [stdout] test commands::tests::gating::adopt_only_os_user_defined_label_works ... ok [INFO] [stdout] test commands::tests::fitness::the_warning_reaches_the_terminal_before_the_bundle_does ... ok [INFO] [stdout] test commands::tests::gating::down_dry_run_reports_deactivation_for_now_ignored_pack ... ok [INFO] [stdout] test commands::tests::gating::down_dry_run_reports_orphaned_pack ... ok [INFO] [stdout] test commands::tests::gating::down_resolves_orphan_by_display_name ... ok [INFO] [stdout] test commands::tests::gating::down_accepts_orphaned_pack_name ... ok [INFO] [stdout] test commands::tests::gating::down_no_args_sweeps_orphaned_pack_state ... ok [INFO] [stdout] test commands::tests::down_removes_live_external_user_link ... ok [INFO] [stdout] test commands::tests::gating::pack_os_macos_alias_matches_darwin_target ... ok [INFO] [stdout] test commands::tests::gating::pack_os_active_pack_runs_normally ... ok [INFO] [stdout] test commands::tests::gating::passive_first_time_pack_surfaces_pending_placeholder ... ok [INFO] [stdout] test commands::tests::fitness::the_version_question_is_asked_before_the_brewfile_runs ... ok [INFO] [stdout] test commands::tests::down_removes_live_user_symlink ... ok [INFO] [stdout] test commands::tests::fitness::the_fitness_verdict_leaves_nothing_behind ... ok [INFO] [stdout] test commands::tests::gating::status_filtered_to_one_pack_no_conflict_warning ... ok [INFO] [stdout] test commands::tests::full_lifecycle_up_status_down_status ... ok [INFO] [stdout] test commands::tests::gating::down_unknown_name_still_errors_when_orphans_exist ... ok [INFO] [stdout] test commands::tests::gating::gate_failed_template_does_not_render_at_up ... ok [INFO] [stdout] test commands::tests::gating::status_surfaces_gated_template_under_original_name ... ok [INFO] [stderr] dodot: homebrew at /tmp/.tmpBMcCE9/home/fake-prefix/bin/brew is 5.0.16, older than 5.1.2: not all of the `Brewfile` entry types go, cargo, uv, npm, and krew are supported, and one of them may fail to parse. Run `brew update` to update it. dodot runs this file anyway — everything that does not need the newer homebrew still works. [INFO] [stdout] test commands::tests::gating::status_shows_conflict_even_when_not_deployed ... ok [INFO] [stdout] test commands::tests::gating::status_warns_on_potential_cross_pack_conflict ... ok [INFO] [stdout] test commands::tests::gating::up_conflict_two_packs_same_home_prefix_target ... ok [INFO] [stdout] test commands::tests::gating::install_template_dry_run_emits_correct_sentinel_without_writing_rendered_file ... ok [INFO] [stdout] test commands::tests::gating::down_sweeps_state_of_pack_ignored_after_deploy ... ok [INFO] [stdout] test commands::tests::gating::up_does_not_read_files_from_ignored_pack ... ok [INFO] [stdout] test commands::tests::gating::up_dry_run_first_time_pack_with_install_template_does_not_error ... ok [INFO] [stdout] test commands::tests::gating::status_no_warnings_without_conflicts ... ok [INFO] [stdout] test commands::tests::gating::filtered_up_sweeps_now_ignored_pack_outside_the_filter ... ok [INFO] [stdout] test commands::tests::gating::pack_os_inactive_pack_surfaces_in_status ... ok [INFO] [stdout] test commands::tests::gating::up_dry_run_still_detects_cross_pack_conflict ... ok [INFO] [stdout] test commands::tests::gating::up_halts_no_partial_deployment_on_conflict ... ok [INFO] [stdout] test commands::tests::gating::up_down_status_agree_for_explicitly_requested_ignored_pack ... ok [INFO] [stdout] test commands::tests::gating::up_force_does_not_override_cross_pack_conflict ... ok [INFO] [stdout] test commands::tests::gating::up_halts_on_cross_pack_symlink_conflict ... ok [INFO] [stdout] test commands::tests::gating::up_dry_run_does_not_write_to_datastore ... ok [INFO] [stdout] test commands::tests::gating::up_conflict_via_config_mapping ... ok [INFO] [stdout] test commands::tests::gating::status_conflict_with_config_mapping ... ok [INFO] [stdout] test commands::tests::gating::up_error_message_includes_all_conflict_details ... ok [INFO] [stdout] test commands::tests::gating::up_catches_mappings_gates_filename_conflict ... ok [INFO] [stdout] test commands::tests::gating::filtered_down_leaves_unrelated_orphans_and_warns ... ok [INFO] [stdout] test commands::tests::gating::pack_os_inactive_pack_emits_no_operations_in_up ... ok [INFO] [stdout] test commands::tests::gating::up_conflict_via_home_prefix ... ok [INFO] [stdout] test commands::tests::gating::up_no_conflict_within_same_pack ... ok [INFO] [stdout] test commands::tests::gating::status_does_not_write_to_datastore ... ok [INFO] [stdout] test commands::tests::fitness::a_brew_below_the_floor_is_named_with_its_remedy_and_the_file_still_runs ... ok [INFO] [stdout] test commands::tests::gating::up_three_packs_partial_conflict ... ok [INFO] [stdout] test commands::tests::gating::up_with_cross_pack_conflict_renders_full_status_view ... ok [INFO] [stdout] test commands::tests::hookup::a_dry_run_measures_nothing ... ok [INFO] [stdout] test commands::tests::gating::up_rejects_invalid_mappings_gates_glob ... ok [INFO] [stdout] test commands::tests::gating::up_path_dirs_with_same_executable_name_conflicts ... ok [INFO] [stdout] test commands::tests::gating::up_skips_mappings_gated_template ... ok [INFO] [stdout] test commands::tests::gating::up_lists_ignored_packs_in_full_run ... ok [INFO] [stdout] test commands::tests::gating::up_mixed_selection_deploys_active_and_reports_ignored ... ok [INFO] [stdout] test commands::tests::gating::up_path_dirs_with_different_executables_ok ... ok [INFO] [stdout] test commands::tests::gating::up_sweeps_state_of_pack_ignored_after_deploy ... ok [INFO] [stdout] test commands::tests::gating::up_no_cross_handler_conflict ... ok [INFO] [stdout] test commands::tests::gating::up_warns_about_orphaned_state_without_sweeping ... ok [INFO] [stdout] test commands::tests::hookup::a_first_up_ends_on_a_measured_verdict_when_the_shell_activates ... ok [INFO] [stdout] test commands::tests::gating::up_filtered_packs_only_checks_filtered_subset ... ok [INFO] [stdout] test commands::tests::hookup::a_live_shell_is_proof_enough_on_its_own ... ok [INFO] [stdout] test commands::tests::gating::up_same_name_shell_scripts_are_not_conflicts ... ok [INFO] [stdout] test commands::tests::install::an_existing_eval_hookup_is_left_exactly_where_it_is ... ok [INFO] [stdout] test commands::tests::install::an_rc_override_at_the_profile_keeps_its_hook_and_gets_no_chain ... ok [INFO] [stdout] test commands::tests::gating::up_no_conflict_when_different_target_files ... ok [INFO] [stdout] test commands::tests::install::dry_run_reports_an_existing_hook_as_present ... ok [INFO] [stdout] test commands::tests::install::an_unsupported_shell_still_works_when_rc_is_given ... ok [INFO] [stdout] test commands::tests::install::linux_bash_gets_no_profile_chain ... ok [INFO] [stdout] test commands::tests::install::dry_run_reports_everything_and_writes_nothing ... ok [INFO] [stdout] test commands::tests::hookup::a_measured_broken_hookup_beats_the_stale_shell_guess ... ok [INFO] [stdout] test commands::tests::install::macos_bash_gets_the_login_shell_chain ... ok [INFO] [stdout] test commands::tests::init_fails_if_exists ... ok [INFO] [stdout] test commands::tests::hookup::a_first_up_whose_shell_does_not_activate_names_the_missing_hook ... ok [INFO] [stdout] test commands::tests::install::nothing_spawns_a_shell_when_the_policy_says_never ... ok [INFO] [stdout] test commands::tests::install::macos_bash_chains_a_symlinked_bashrc_too ... ok [INFO] [stdout] test commands::tests::init_creates_pack_directory ... ok [INFO] [stdout] test commands::tests::install::rc_override_wins_over_the_whole_ladder ... ok [INFO] [stdout] test commands::tests::install::the_dry_report_reaches_rendered_output ... ok [INFO] [stdout] test commands::tests::install::write_creates_a_missing_rc_with_the_marked_block ... ok [INFO] [stdout] test commands::tests::install::an_rc_override_elsewhere_gets_no_macos_chain ... ok [INFO] [stdout] test commands::tests::install::write_follows_a_symlinked_rc_into_the_dotfiles_repo ... ok [INFO] [stdout] test commands::tests::install::the_written_report_names_the_file_and_the_notes ... ok [INFO] [stdout] test commands::tests::hookup::an_unverifiable_probe_degrades_instead_of_wedging_up ... ok [INFO] [stdout] test commands::tests::install::write_is_idempotent_and_never_duplicates_the_block ... ok [INFO] [stdout] test commands::tests::hookup::status_never_spawns_a_shell_whatever_the_policy_says ... ok [INFO] [stdout] test commands::tests::hookup::a_healthy_machine_never_spawns_a_probe ... ok [INFO] [stdout] test commands::tests::install::write_honors_the_zdotdir_ladder ... ok [INFO] [stdout] test commands::tests::probe::plan_pack_emits_missing_target_hint_with_cask_enrichment ... ignored, macOS-only behavior [INFO] [stdout] test commands::tests::probe::probe_app_collects_alias_force_and_underscore_entries ... ignored, macOS-only enrichment paths [INFO] [stdout] test commands::tests::hookup::the_probed_shell_does_not_inherit_this_process_stamp ... ok [INFO] [stdout] test commands::tests::multi_file_pack_and_ignored_pack_rendering ... ok [INFO] [stdout] test commands::tests::install::write_replaces_a_stale_block_in_place ... ok [INFO] [stdout] test commands::tests::probe::probe_deployment_map_json_mode_is_kind_tagged ... ok [INFO] [stdout] test commands::tests::probe::probe_app_non_macos_returns_minimal_view ... ok [INFO] [stdout] test commands::tests::probe::probe_app_rejects_path_traversal_input ... ok [INFO] [stdout] test commands::tests::list_shows_all_packs ... ok [INFO] [stdout] test commands::tests::hookup::up_does_not_certify_a_session_it_never_measured ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_aggregate_json_is_kind_tagged ... ok [INFO] [stdout] test commands::tests::install::an_unsupported_shell_is_refused_with_the_line_and_the_escape_hatch ... ok [INFO] [stdout] test commands::tests::probe::by_status_folds_ignored_packs_into_ignored_group ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_default_explains_only_incomplete_profiles ... ok [INFO] [stdout] test commands::tests::probe::probe_deployment_map_empty_state_shows_hint ... ok [INFO] [stdout] test commands::tests::hookup::a_measured_verdict_still_outranks_the_session_signal ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_aggregate_renders_percentile_table ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_aggregate_warns_when_fewer_runs_than_requested ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_errors_json_is_kind_tagged ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_aggregate_empty_state_shows_hint ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_aggregate_banner_when_newest_predates_last_up ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_errors_only_clean_window_says_so ... ok [INFO] [stdout] test commands::tests::probe::down_refreshes_deployment_map_to_empty ... ok [INFO] [stdout] test commands::tests::pack_status_renders_latest_success_row_green_with_warning_marker ... ok [INFO] [stdout] test commands::tests::pack_status_renders_flaky_timeline_with_semantic_styles ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_default_explains_disabled_profiling_and_incomplete_profile ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_errors_only_sorts_by_failure_count_desc ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_filter_attaches_captured_stderr_to_matching_run ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_errors_only_keeps_only_failed_runs ... ok [INFO] [stdout] test commands::tests::probe::probe_deployment_map_renders_rows_after_up ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_filter_runs_are_newest_first ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_filter_supports_nested_subpaths ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_filter_renders_with_template ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_history_json_is_kind_tagged ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_declines_unresolved_file_source_hooks ... ok [INFO] [stdout] test commands::tests::pack_status_renders_unobserved_shell_row_as_pending ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_history_renders_one_row_per_run_newest_first ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_filter_json_is_kind_tagged ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_history_banner_when_newest_predates_last_up ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_banner_when_profile_predates_last_up ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_filter_pack_only_lists_each_target_in_pack ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_path_provenance_is_empty_before_any_up ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_filter_with_filename_narrows_to_single_target ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_filter_basename_does_not_partial_match ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_no_banner_when_no_last_up_marker ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_no_banner_when_profile_postdates_last_up ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_trace_reports_a_missing_rc_plainly ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_default_uses_latest_complete_profile ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_spawn_forbidden_has_no_fake_elapsed_time ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_trace_reports_an_unsupported_shell_plainly ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_filter_empty_when_no_match ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_history_renders_incomplete_rows_with_unknown_total ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_trace_reports_an_absent_hook_plainly ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_history_empty_state_shows_hint ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_no_banner_when_no_profile ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_skipped_verification_has_no_fake_elapsed_time ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_trace_degrades_when_the_policy_forbids_spawning ... ok [INFO] [stdout] test commands::tests::provisioning::a_failure_does_not_flip_a_row_it_only_shares_a_basename_with ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_without_trace_has_null_trace_field ... ok [INFO] [stdout] test commands::tests::probe::probe_summary_lists_available_subcommands ... ok [INFO] [stdout] test commands::tests::provisioning::two_scripts_sharing_a_basename_each_keep_their_own_failure_row ... ok [INFO] [stdout] test commands::tests::probe::up_dry_run_does_not_touch_deployment_map ... ok [INFO] [stdout] test commands::tests::reset::reset_does_not_touch_the_dotfiles_repo ... ok [INFO] [stdout] test commands::tests::provisioning::a_dry_run_runs_nothing_and_exits_zero_even_for_a_script_that_would_fail ... ok [INFO] [stdout] test commands::tests::probe::probe_show_data_dir_renders_tree_with_sizes ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_surfaces_declared_and_raw_path_provenance ... ok [INFO] [stdout] test commands::tests::reset::reset_removes_everything_under_data_dir ... ok [INFO] [stdout] test commands::tests::provisioning::a_clean_run_reports_exit_code_zero ... ok [INFO] [stdout] test commands::tests::reset::reset_never_acts_on_an_absent_data_dir_observation ... ok [INFO] [stdout] test commands::tests::probe::up_writes_last_up_marker ... ok [INFO] [stdout] test commands::tests::provisioning::a_run_with_a_failure_reports_a_non_zero_exit_code ... ok [INFO] [stdout] test commands::tests::reset::reset_dry_run_lists_without_removing ... ok [INFO] [stdout] test commands::tests::reset::reset_from_absent_data_dir_locks_against_a_racing_writer ... ok [INFO] [stdout] test commands::tests::reset::reset_removes_symlink_entries_without_following ... ok [INFO] [stdout] test commands::tests::run_once_rows::never_ran_row_reads_the_handler_pending_copy ... ok [INFO] [stdout] test commands::tests::probe::up_writes_deployment_map ... ok [INFO] [stdout] test commands::tests::provisioning::a_failed_run_writes_no_sentinel_so_the_next_up_retries ... ok [INFO] [stdout] test commands::tests::provisioning::a_failing_script_does_not_take_the_rest_of_its_pack_with_it ... ok [INFO] [stdout] test commands::tests::reset::reset_preserves_the_writer_lock_file ... ok [INFO] [stdout] test commands::tests::provisioning::the_failure_is_reported_against_the_file_that_failed ... ok [INFO] [stdout] test commands::tests::run_once_rows::no_provision_dry_run_still_shows_the_skipped_file ... ok [INFO] [stdout] test commands::tests::status_detects_conflict_at_user_path ... ok [INFO] [stdout] test commands::tests::status_detects_broken_user_link_removed ... ok [INFO] [stdout] test commands::tests::reset::reset_with_no_state_reports_nothing_to_do ... ok [INFO] [stdout] test commands::tests::short_mode_renders_one_line_per_pack_with_count ... ok [INFO] [stdout] test commands::tests::run_once_rows::a_no_provision_skip_and_a_gated_out_file_read_differently ... ok [INFO] [stdout] test commands::tests::status_pack_filter_applies_to_ignored_packs ... ok [INFO] [stdout] test commands::tests::status_marks_readme_and_license_as_skipped ... ok [INFO] [stdout] test commands::tests::status_lists_top_level_dirs_wholesale ... ok [INFO] [stdout] test commands::tests::status_on_nonexistent_pack_returns_error ... ok [INFO] [stdout] test commands::tests::status_no_warning_for_same_name_shell_scripts ... ok [INFO] [stdout] test commands::tests::status_does_not_flag_pre_existing_symlinks_as_conflict ... ok [INFO] [stdout] test commands::tests::run_once_rows::ran_current_row_reads_the_handler_deployed_copy ... ok [INFO] [stdout] test commands::tests::run_once_rows::no_provision_row_reports_the_skip_the_user_asked_for ... ok [INFO] [stdout] test commands::tests::status_lists_ignored_packs ... ok [INFO] [stdout] test commands::tests::status_detects_broken_source_deleted ... ok [INFO] [stdout] test commands::tests::status_reports_template_pending_before_up ... ok [INFO] [stdout] test commands::tests::run_once_rows::ran_older_version_row_carries_a_footnote_naming_provision_rerun ... ok [INFO] [stdout] test commands::tests::status_renders_with_standout ... ok [INFO] [stdout] test commands::tests::status_shows_pending_before_up ... ok [INFO] [stdout] test commands::tests::status_reports_template_under_stripped_name ... ok [INFO] [stdout] test commands::tests::status_shell_profiling_disabled_keeps_chain_verdict ... ok [INFO] [stdout] test commands::tests::status_shell_latest_success_keeps_row_deployed_despite_history ... ok [INFO] [stdout] test commands::tests::status_surfaces_pre_existing_conflict_as_warning_with_footnote ... ok [INFO] [stdout] test commands::tests::status_shell_clean_history_renders_sourced_without_note ... ok [INFO] [stdout] test commands::tests::status_shell_unobserved_renders_pending ... ok [INFO] [stdout] test commands::tests::status_shell_handler_detects_broken_source ... ok [INFO] [stdout] test commands::tests::status_shell_handler_verified_deployed ... ok [INFO] [stdout] test commands::tests::status_path_handler_verified_deployed ... ok [INFO] [stdout] test commands::tests::summary_rolls_up_error_over_pending_over_deployed ... ok [INFO] [stdout] test commands::tests::summary_aggregates_all_deployed_as_deployed ... ok [INFO] [stdout] test commands::tests::status_verified_deployed_after_up ... ok [INFO] [stdout] test commands::tests::status_shows_xdg_target_for_subdirectory ... ok [INFO] [stdout] test commands::tests::status_suppresses_lib_prefix_rows_when_skipped ... ok [INFO] [stdout] test commands::tests::status_shell_unrelated_profile_entries_do_not_count ... ok [INFO] [stdout] test commands::tests::status_shell_latest_failure_reports_newest_exit ... ok [INFO] [stdout] test commands::tests::up_conflict_xdg_path_both_packs_subdir ... ok [INFO] [stdout] test commands::tests::status_surfaces_syntax_error_sidecar_for_deployed_shell_file ... ok [INFO] [stdout] test commands::tests::up_dry_run_no_changes ... ok [INFO] [stdout] test commands::tests::up_auto_chmod_makes_bin_files_executable ... ok [INFO] [stdout] test commands::tests::up_dry_run_does_not_write_preprocessing_baselines ... ok [INFO] [stdout] test commands::tests::up_on_nonexistent_pack_returns_error ... ok [INFO] [stdout] test commands::tests::up_auto_chmod_disabled_via_config ... ok [INFO] [stdout] test commands::tests::up_deploys_packs ... ok [INFO] [stdout] test commands::tests::up_conflict_with_home_prefix_convention ... ok [INFO] [stdout] test commands::tests::up_force_overwrites_existing_files ... ok [INFO] [stdout] test commands::tests::up_multiple_simultaneous_conflicts ... ok [INFO] [stdout] test commands::tests::up_generates_shell_init ... ok [INFO] [stdout] test commands::tests::up_preserves_install_sentinel_when_source_deleted ... ok [INFO] [stdout] test commands::tests::up_ignored_pack_does_not_cause_conflict ... ok [INFO] [stdout] test commands::tests::up_and_status_produce_matching_labels ... ok [INFO] [stdout] test commands::transform::install_hook::tests::find_managed_block_locates_byte_range ... ok [INFO] [stdout] test commands::tests::up_preserves_install_sentinel_when_source_persists ... ok [INFO] [stdout] test commands::tests::up_reports_conflict_when_file_exists ... ok [INFO] [stdout] test commands::tests::up_ignore_sweep_removes_live_user_symlink ... ok [INFO] [stdout] test commands::transform::install_hook::tests::install_hook_appends_to_existing_pre_commit ... ok [INFO] [stdout] test commands::tests::up_reconciles_deleted_shell_source ... ok [INFO] [stdout] test commands::transform::install_hook::tests::install_hook_is_idempotent_on_second_call ... ok [INFO] [stdout] test commands::transform::install_hook::tests::hook_is_installed_reports_correctly ... ok [INFO] [stdout] test commands::transform::install_hook::tests::install_hook_no_op_on_current_block ... ok [INFO] [stdout] test commands::tests::up_reconciles_deleted_path_dir ... ok [INFO] [stdout] test commands::tests::up_reconciles_deleted_symlink_source ... ok [INFO] [stdout] test commands::transform::install_hook::tests::install_hook_errors_if_no_git_dir ... ok [INFO] [stdout] test commands::transform::install_hook::tests::install_hook_replaces_a_stale_managed_block ... ok [INFO] [stdout] test commands::tests::up_succeeds_after_resolving_conflict ... ok [INFO] [stdout] test commands::transform::install_hook::tests::install_hook_sets_executable_bit ... ok [INFO] [stdout] test commands::transform::install_hook::tests::managed_block_is_self_contained_and_grep_detectable ... ok [INFO] [stdout] test commands::transform::install_hook::tests::find_managed_block_returns_none_when_absent ... ok [INFO] [stdout] test commands::transform::tests::empty_cache_yields_clean_no_findings ... ok [INFO] [stdout] test commands::transform::install_hook::tests::install_hook_creates_new_pre_commit_when_absent ... ok [INFO] [stdout] test commands::transform::tests::needs_rebaseline_when_tracked_render_is_empty_and_deployed_edited ... ok [INFO] [stdout] test commands::transform::tests::missing_source_is_reported_with_finding ... ok [INFO] [stdout] test commands::transform::tests::no_reverse_glob_pattern_skips_reverse_merge ... ok [INFO] [stdout] test commands::tests::reset::reset_waits_for_an_active_transaction_and_clears_its_write ... ok [INFO] [stdout] test commands::transform::tests::a_source_symlinked_out_of_the_root_is_reported_not_patched ... ok [INFO] [stdout] test commands::transform::tests::status_empty_cache_yields_zero_counts ... ok [INFO] [stdout] test commands::transform::tests::status_classifies_output_change ... ok [INFO] [stdout] test commands::transform::tests::output_changed_pure_data_edit_yields_synced ... ok [INFO] [stdout] test commands::tests::up_writes_syntax_error_sidecar_when_check_fails ... ok [INFO] [stdout] test commands::transform::tests::no_reverse_pattern_skips_reverse_merge ... ok [INFO] [stdout] test commands::tests::up_then_status_expands_app_escape_prefix_per_file ... ok [INFO] [stdout] test commands::transform::tests::status_on_clean_repo_reports_one_synced_row ... ok [INFO] [stdout] test commands::transform::tests::dry_run_does_not_write_to_source ... ok [INFO] [stdout] test commands::transform::tests::a_baseline_without_a_source_path_is_reported_as_stale ... ok [INFO] [stdout] test commands::tutorial::tests::classify_config_plus_install_pack ... ok [INFO] [stdout] test commands::transform::tests::paths_are_rendered_relative_to_home_for_display ... ok [INFO] [stdout] test commands::transform::tests::status_surfaces_secret_references_from_sidecar ... ok [INFO] [stdout] test commands::tutorial::tests::classify_config_plus_shell_pack ... ok [INFO] [stdout] test commands::tutorial::tests::classify_empty_pack ... ok [INFO] [stdout] test commands::tutorial::tests::classify_pack_with_arbitrary_shell_extension_filenames ... ok [INFO] [stdout] test commands::tutorial::tests::detect_shell_honours_zdotdir ... ok [INFO] [stdout] test commands::tutorial::tests::classify_config_only_pack ... ok [INFO] [stdout] test commands::tutorial::tests::detect_shell_sees_both_hookup_forms ... ok [INFO] [stdout] test commands::tutorial::tests::detect_unsupported_shell_is_informational_only ... ok [INFO] [stdout] test commands::tutorial::tests::detect_shell_follows_symlinked_rc ... ok [INFO] [stdout] test commands::transform::tests::status_returns_empty_secret_references_when_no_sidecar ... ok [INFO] [stdout] test commands::tutorial::tests::detect_shell_with_no_rc_file_reports_absent ... ok [INFO] [stdout] test config::tests::app_uses_library_default_is_true ... ok [INFO] [stdout] test commands::transform::tests::strict_mode_flags_unresolved_marker_in_source ... ok [INFO] [stdout] test config::tests::app_aliases_overridable_in_root_config ... ok [INFO] [stdout] test config::tests::install_rules_outrank_shell_glob ... ok [INFO] [stdout] test config::tests::mappings_skip_emits_priority_50_skip_rules ... ok [INFO] [stdout] test commands::transform::tests::status_does_not_mutate_anything ... ok [INFO] [stdout] test config::tests::mappings_to_rules_produces_expected_rules ... ok [INFO] [stdout] test commands::transform::tests::authorizing_one_root_never_patches_the_other_roots_sources ... ok [INFO] [stdout] test config::tests::default_force_app_under_hundred_entry_cap ... ok [INFO] [stdout] test config::tests::shell_homebrew_overridable_and_validated ... ok [INFO] [stdout] test commands::tutorial::tests::detect_shell_ignores_commented_out_hookups ... ok [INFO] [stdout] test config::tests::default_force_app_seed_contains_expected_entries ... ok [INFO] [stdout] test config::tests::root_config_overrides_defaults ... ok [INFO] [stdout] test conflicts::tests::conflict_display_includes_all_info ... ok [INFO] [stdout] test conflicts::tests::detects_fetch_fetch_conflict ... ok [INFO] [stdout] test conflicts::tests::detects_link_fetch_conflict ... ok [INFO] [stdout] test config::tests::profiling_section_overridable ... ok [INFO] [stdout] test conflicts::tests::detects_link_link_conflict ... ok [INFO] [stdout] test conflicts::tests::detects_multiple_conflicts ... ok [INFO] [stdout] test config::tests::pack_config_overrides_root ... ok [INFO] [stdout] test conflicts::tests::format_conflicts_combines_multiple ... ok [INFO] [stdout] test conflicts::tests::no_conflicts_for_run_intents ... ok [INFO] [stdout] test config::tests::root_config_rejects_pack_os ... ok [INFO] [stdout] test conflicts::tests::no_conflicts_when_empty ... ok [INFO] [stdout] test conflicts::tests::no_conflicts_when_single_pack ... ok [INFO] [stdout] test config::tests::to_handler_config_converts_correctly ... ok [INFO] [stdout] test conflicts::tests::no_path_conflict_when_different_executables ... ok [INFO] [stdout] test conflicts::tests::same_name_shell_scripts_are_not_conflicts ... ok [INFO] [stdout] test conflicts::tests::stage_intents_do_not_conflict_with_link_intents ... ok [INFO] [stdout] test conflicts::tests::three_packs_one_conflict ... ok [INFO] [stdout] test commands::transform::tests::output_changed_static_edit_patches_source ... ok [INFO] [stdout] test conflicts::tests::no_conflicts_when_different_targets ... ok [INFO] [stdout] test conflicts::tests::same_pack_path_executables_are_not_conflicts ... ok [INFO] [stdout] test config::tests::default_config_has_expected_values ... ok [INFO] [stdout] test commands::transform::tests::strict_mode_clean_repo_is_zero_findings ... ok [INFO] [stdout] test conflicts::tests::detects_path_shadowing_via_symlinks ... ok [INFO] [stdout] test commands::transform::tests::strict_mode_scans_only_the_authorized_roots_sources ... ok [INFO] [stdout] test datastore::filesystem::tests::create_user_link_creates_symlink ... ok [INFO] [stdout] test datastore::filesystem::tests::create_user_link_conflict_with_regular_file ... ok [INFO] [stdout] test conflicts::tests::detects_path_executable_shadowing ... ok [INFO] [stdout] test conflicts::tests::path_executable_conflict_shows_source_files ... ok [INFO] [stdout] test datastore::filesystem::tests::create_data_link_is_idempotent ... ok [INFO] [stdout] test datastore::filesystem::tests::create_data_link_creates_symlink ... ok [INFO] [stdout] test datastore::filesystem::tests::create_user_link_is_idempotent ... ok [INFO] [stdout] test datastore::filesystem::tests::create_data_link_replaces_wrong_target ... ok [INFO] [stdout] test datastore::filesystem::tests::did_run_different_without_snapshot_returns_none ... ok [INFO] [stdout] test datastore::filesystem::tests::extract_header_block_no_shebang ... ok [INFO] [stdout] test datastore::filesystem::tests::create_user_link_replaces_wrong_symlink ... ok [INFO] [stdout] test datastore::filesystem::tests::did_run_picks_most_recent_timestamp_for_tie_break ... ok [INFO] [stdout] test datastore::filesystem::tests::did_run_returns_different_when_only_other_hash_present ... ok [INFO] [stdout] test datastore::filesystem::tests::did_run_returns_current_when_hash_matches ... ok [INFO] [stdout] test datastore::filesystem::tests::extract_header_block_no_comments ... ok [INFO] [stdout] test datastore::filesystem::tests::extract_header_block_empty_input ... ok [INFO] [stdout] test datastore::filesystem::tests::extract_header_block_skips_shebang ... ok [INFO] [stdout] test datastore::filesystem::tests::extract_header_block_stops_at_first_non_comment ... ok [INFO] [stdout] test datastore::filesystem::tests::did_run_unparseable_timestamp_falls_to_bottom ... ok [INFO] [stdout] test datastore::filesystem::tests::extract_header_block_blanks_between_shebang_and_comments ... ok [INFO] [stdout] test datastore::filesystem::tests::extract_header_block_strips_extra_hashes_and_spaces ... ok [INFO] [stdout] test datastore::filesystem::tests::did_run_never_ran_when_no_state ... ok [INFO] [stdout] test datastore::filesystem::tests::full_double_link_chain ... ok [INFO] [stdout] test datastore::filesystem::tests::extract_sentinel_hash_parses_canonical_form ... ok [INFO] [stdout] test datastore::filesystem::tests::did_run_ignores_other_filenames_in_same_handler_dir ... ok [INFO] [stdout] test datastore::filesystem::tests::parse_completed_timestamp_extracts_unix_seconds ... ok [INFO] [stdout] test datastore::filesystem::tests::progress_label_falls_back_to_the_executable ... ok [INFO] [stdout] test datastore::filesystem::tests::progress_label_names_the_manifest_not_the_last_argument ... ok [INFO] [stdout] test datastore::filesystem::tests::list_handler_sentinels_empty_when_no_state ... ok [INFO] [stdout] test datastore::filesystem::tests::has_handler_state_true_when_entries_exist ... ok [INFO] [stdout] test datastore::filesystem::tests::list_pack_handlers_empty_when_no_pack_state ... ok [INFO] [stdout] test datastore::filesystem::tests::extract_sentinel_hash_rejects_non_sentinels ... ok [INFO] [stdout] test datastore::filesystem::tests::list_pack_handlers_returns_handler_dirs ... ok [INFO] [stdout] test datastore::filesystem::tests::remove_state_is_noop_when_no_state ... ok [INFO] [stdout] test datastore::filesystem::tests::list_packs_returns_pack_dirs_with_state ... ok [INFO] [stdout] test datastore::filesystem::tests::list_handler_sentinels_returns_file_names ... ok [INFO] [stdout] test commands::transform::tests::synced_files_report_synced_and_no_findings ... ok [INFO] [stdout] test datastore::filesystem::tests::remove_state_clears_handler_dir ... ok [INFO] [stdout] test datastore::filesystem::tests::run_and_record_creates_sentinel ... ok [INFO] [stdout] test datastore::filesystem::tests::run_and_record_hands_the_declared_environment_to_the_runner ... ok [INFO] [stdout] test datastore::filesystem::tests::list_packs_empty_when_no_datastore ... ok [INFO] [stdout] test datastore::filesystem::tests::run_and_record_passes_no_environment_when_none_is_declared ... ok [INFO] [stdout] test datastore::filesystem::tests::run_and_record_is_idempotent ... ok [INFO] [stdout] test datastore::filesystem::tests::has_handler_state_false_when_empty_dir ... ok [INFO] [stdout] test datastore::filesystem::tests::run_and_record_propagates_command_failure ... ok [INFO] [stdout] test datastore::filesystem::tests::run_and_record_snapshot_failure_does_not_fail_run ... ok [INFO] [stdout] test datastore::filesystem::tests::write_rendered_dir_is_idempotent ... ok [INFO] [stdout] test datastore::filesystem::tests::write_rendered_file_creates_parent_dirs ... ok [INFO] [stdout] test datastore::filesystem::tests::write_rendered_dir_rejects_unsafe_paths ... ok [INFO] [stdout] test datastore::filesystem::tests::write_rendered_file_creates_regular_file ... ok [INFO] [stdout] test datastore::filesystem::tests::write_rendered_file_overwrites_existing ... ok [INFO] [stdout] test datastore::filesystem::tests::write_rendered_file_binary_content ... ok [INFO] [stdout] test datastore::filesystem::tests::write_rendered_file_empty_content ... ok [INFO] [stdout] test datastore::filesystem::tests::run_and_record_writes_snapshot_for_a_nix_run ... ok [INFO] [stdout] test datastore::filesystem::tests::run_and_record_writes_snapshot_sibling ... ok [INFO] [stdout] test datastore::filesystem::tests::write_rendered_dir_creates_dir ... ok [INFO] [stdout] test datastore::filesystem::tests::has_handler_state_false_when_no_dir ... ok [INFO] [stdout] test datastore::filesystem::tests::write_rendered_file_rejects_parent_dir ... ok [INFO] [stdout] test datastore::filesystem::tests::write_rendered_file_rejects_absolute_path ... ok [INFO] [stdout] test datastore::tests::parse_status_line_matches_one_space ... ok [INFO] [stdout] test datastore::tests::parse_status_line_rejects_shebang ... ok [INFO] [stdout] test datastore::tests::parse_status_line_rejects_non_comment ... ok [INFO] [stdout] test datastore::tests::parse_status_line_returns_empty_message ... ok [INFO] [stdout] test datastore::tests::parse_status_line_matches_extra_whitespace ... ok [INFO] [stdout] test datastore::filesystem::tests::write_rendered_file_supports_nested_filename ... ok [INFO] [stdout] test equivalence::tests::absent_user_path_is_not_equivalent ... ok [INFO] [stdout] test equivalence::tests::broken_symlink_is_not_equivalent ... ok [INFO] [stdout] test datastore::tests::parse_status_line_matches_no_space ... ok [INFO] [stdout] test datastore::tests::parse_status_line_rejects_plain_comment ... ok [INFO] [stdout] test datastore::tests::shell_runner_layers_the_environment_onto_the_inherited_one ... ok [INFO] [stdout] test equivalence::tests::regular_file_with_different_content_is_not_equivalent ... ok [INFO] [stdout] test equivalence::tests::symlink_pointing_elsewhere_is_not_equivalent ... ok [INFO] [stdout] test datastore::tests::shell_runner_returns_error_on_nonzero_exit ... ok [INFO] [stdout] test equivalence::tests::direct_symlink_to_source_is_equivalent ... ok [INFO] [stdout] test execution::fetch::tests::archive_sha256_mismatch_refuses_to_extract ... ok [INFO] [stdout] test equivalence::tests::relative_direct_symlink_to_source_is_equivalent ... ok [INFO] [stdout] test execution::fetch::tests::archive_file_extracts_single_member ... ok [INFO] [stdout] -> phase one [INFO] [stdout] -> phase two [INFO] [stdout] test equivalence::tests::multi_hop_symlink_to_source_is_not_equivalent ... ok [INFO] [stdout] test equivalence::tests::directory_is_not_equivalent ... ok [INFO] [stdout] test datastore::tests::shell_runner_captures_stderr_in_command_output ... ok [INFO] [stdout] test datastore::tests::shell_runner_streams_and_captures_real_script ... ok [INFO] [stdout] test execution::fetch::tests::execute_fetch_is_idempotent_via_sentinel ... ok [INFO] [stdout] test equivalence::tests::regular_file_with_identical_content_is_equivalent ... ok [INFO] [stdout] test execution::fetch::tests::archive_file_missing_member_fails_clearly ... ok [INFO] [stdout] test execution::fetch::tests::archive_idempotent_via_sentinel ... ok [INFO] [stdout] test execution::fetch::tests::execute_fetch_rejects_sha256_mismatch ... ok [INFO] [stdout] test execution::fetch::tests::archive_unknown_format_url_fails_helpfully ... ok [INFO] [stdout] test execution::fetch::tests::dry_run_does_not_fetch ... ok [INFO] [stdout] test execution::fetch::tests::git_repo_subpath_targets_subdirectory ... ok [INFO] [stdout] test execution::fetch::tests::git_repo_offline_fetch_after_upstream_move_soft_fails ... ok [INFO] [stdout] test execution::fetch::tests::git_repo_offline_ls_remote_surfaces_failure_keeps_clone ... ok [INFO] [stdout] test execution::fetch::tests::git_repo_refreshes_when_upstream_moves ... ok [INFO] [stdout] test execution::fetch::tests::non_symlink_at_target_returns_failed_result_not_error ... ok [INFO] [stdout] test execution::fetch::tests::git_repo_dry_run_does_not_touch_filesystem ... ok [INFO] [stdout] test execution::fetch::tests::git_repo_commit_pin_skips_ls_remote_when_local_matches ... ok [INFO] [stdout] test execution::fetch::tests::transient_network_failure_is_non_fatal ... ok [INFO] [stdout] test execution::fetch::tests::unsupported_type_fails_cleanly ... ok [INFO] [stdout] test execution::link::tests::execute_link_creates_double_link ... ok [INFO] [stdout] test execution::fetch::tests::execute_fetch_writes_datastore_and_symlinks ... ok [INFO] [stdout] test execution::fetch::tests::git_repo_ref_pin_uses_named_reference ... ok [INFO] [stdout] test execution::link::tests::execute_link_conflict_returns_failed_result ... ok [INFO] [stdout] test execution::link::tests::force_does_not_bypass_ancestor_cycle_check ... ok [INFO] [stdout] test execution::fetch::tests::sentinel_hit_repairs_deleted_user_symlink ... ok [INFO] [stdout] test execution::link::tests::execute_link_force_overwrites_existing_file ... ok [INFO] [stdout] test execution::link::tests::link_refuses_relative_ancestor_symlink_into_pack ... ok [INFO] [stdout] test execution::link::tests::simulate_link_reports_ancestor_cycle ... ok [INFO] [stdout] test execution::link::tests::dry_run_detects_conflict ... ok [INFO] [stdout] test execution::link::tests::execute_link_conflict_does_not_block_other_intents ... ok [INFO] [stdout] test execution::run::tests::a_sentinel_write_failure_aborts_instead_of_becoming_a_failure_row ... ok [INFO] [stdout] test execution::run::tests::dry_run_older_version_notice_names_provision_rerun ... ok [INFO] [stdout] test execution::link::tests::link_refuses_when_user_path_parent_symlinks_into_data_dir ... ok [INFO] [stdout] test execution::run::tests::execute_run_hands_the_intents_environment_to_the_runner ... ok [INFO] [stdout] test execution::fetch::tests::git_repo_fresh_clone_runs_once_then_idempotent ... ok [INFO] [stdout] test execution::run::tests::execute_run_skips_silently_when_current_hash_matches ... ok [INFO] [stdout] test execution::run::tests::execute_run_runs_when_never_ran ... ok [INFO] [stdout] test execution::run::tests::execute_run_passes_no_environment_when_the_intent_declares_none ... ok [INFO] [stdout] test execution::stage::tests::dry_run_reports_non_executable_without_modifying ... ok [INFO] [stdout] test execution::run::tests::execute_run_skips_with_notice_when_older_version_ran ... ok [INFO] [stdout] test execution::fetch::tests::archive_full_extracts_tree_and_symlinks ... ok [INFO] [stdout] test execution::run::tests::a_failed_command_is_a_failed_operation_carrying_the_managers_output ... ok [INFO] [stdout] test execution::link::tests::link_refuses_when_user_path_parent_symlinks_into_pack ... ok [INFO] [stdout] test execution::run::tests::provision_rerun_bypasses_skip_when_current ... ok [INFO] [stdout] test execution::run::tests::provision_rerun_bypasses_skip_when_older_version ... ok [INFO] [stdout] test execution::stage::tests::path_stage_auto_chmod_disabled ... ok [INFO] [stdout] test execution::stage::tests::execute_stage_creates_data_link_only ... ok [INFO] [stdout] test execution::stage::tests::path_stage_skips_already_executable ... ok [INFO] [stdout] test external::archive::tests::infer_format_from_url ... ok [INFO] [stdout] test external::archive::tests::read_all_zip_returns_entries ... ok [INFO] [stdout] test external::archive::tests::root_placeholder_returns_none_not_err ... ok [INFO] [stdout] test external::archive::tests::read_all_tar_gz_returns_entries ... ok [INFO] [stdout] test external::archive::tests::read_member_tar_gz_missing_errors_clearly ... ok [INFO] [stdout] test external::archive::tests::unsafe_paths_rejected ... ok [INFO] [stdout] test execution::tests::dry_run_does_not_modify_filesystem ... ok [INFO] [stdout] test execution::run::tests::work_after_a_failed_command_still_executes_and_still_reports ... ok [INFO] [stdout] test external::drift::tests::archive_entry_reports_not_implemented ... ok [INFO] [stdout] test execution::stage::tests::path_stage_auto_chmod_multiple_files ... ok [INFO] [stdout] test execution::stage::tests::path_stage_skips_directories ... ok [INFO] [stdout] test external::archive::tests::tar_symlink_entries_are_rejected ... ok [INFO] [stdout] test execution::stage::tests::path_stage_adds_execute_permission ... ok [INFO] [stdout] test external::archive::tests::read_member_tar_gz_finds_named_entry ... ok [INFO] [stdout] test execution::stage::tests::shell_stage_does_not_auto_chmod ... ok [INFO] [stdout] test execution::tests::execute_multiple_intents_sequentially ... ok [INFO] [stdout] test external::drift::tests::report_is_drifted_helper_only_true_for_drifted_kind ... ok [INFO] [stdout] test external::fetch::tests::rejects_unknown_scheme ... ok [INFO] [stdout] test external::git::tests::mock_offline_ls_remote ... ok [INFO] [stdout] test external::git::tests::mock_checkout_updates_local_sha ... ok [INFO] [stdout] test external::git::tests::mock_clone_subpath_places_marker_inside_subpath ... ok [INFO] [stdout] test external::git::tests::mock_clone_writes_marker_and_records_sha ... ok [INFO] [stdout] test external::git::tests::mock_fetch_updates_marker_and_sha ... ok [INFO] [stdout] test external::drift::tests::file_drift_ignores_stale_siblings_in_entry_dir ... ok [INFO] [stdout] test external::drift::tests::missing_deployed_file_reports_missing ... ok [INFO] [stdout] test external::git::tests::transient_classification ... ok [INFO] [stdout] test external::spec::tests::accepts_internal_dots_dashes_underscores ... ok [INFO] [stdout] test external::fetch::tests::file_url_reads_local_file ... ok [INFO] [stdout] test external::spec::tests::entries_are_alphabetical ... ok [INFO] [stdout] test external::spec::tests::missing_sha256_on_file_is_an_error ... ok [INFO] [stdout] test external::spec::tests::parses_git_repo_entry_with_subpath_and_ref ... ok [INFO] [stdout] test external::drift::tests::file_drift_detected_when_user_edits_deployed_copy ... ok [INFO] [stdout] test external::spec::tests::parses_git_repo_entry_minimal ... ok [INFO] [stdout] test external::spec::tests::parses_file_entry ... ok [INFO] [stdout] test external::spec::tests::rejects_dash_prefixed_subpath ... ok [INFO] [stdout] test external::spec::tests::rejects_absolute_subpath ... ok [INFO] [stdout] test external::spec::tests::parses_git_repo_entry_with_commit_pin ... ok [INFO] [stdout] test external::drift::tests::git_drift_uses_runner_status_porcelain ... ok [INFO] [stdout] test external::spec::tests::rejects_invalid_utf8 ... ok [INFO] [stdout] test external::fetch::tests::missing_file_url_is_network_error ... ok [INFO] [stdout] test external::drift::tests::file_drift_clean_when_sha_matches ... ok [INFO] [stdout] test external::spec::tests::rejects_short_commit_sha ... ok [INFO] [stdout] test external::spec::tests::rejects_ref_and_commit_simultaneously ... ok [INFO] [stdout] test external::spec::tests::rejects_dot_prefixed_entry_name ... ok [INFO] [stdout] test external::spec::tests::rejects_dotdot_entry_name ... ok [INFO] [stdout] test external::spec::tests::rejects_dotdot_in_subpath ... ok [INFO] [stdout] test external::spec::tests::rejects_entry_names_with_path_separator ... ok [INFO] [stdout] test external::spec::tests::unknown_type_becomes_unsupported ... ok [INFO] [stdout] test fs::os::tests::a_replaced_file_reads_as_a_different_entry_even_on_a_reused_inode ... ok [INFO] [stdout] test fs::os::tests::a_renamed_file_stays_the_same_entry_with_a_new_ctime ... ok [INFO] [stdout] test external::spec::tests::rejects_malformed_toml ... ok [INFO] [stdout] test external::spec::tests::rejects_non_hex_commit_sha ... ok [INFO] [stdout] test fs::os::tests::lstat_does_not_follow_symlinks ... ok [INFO] [stdout] test fs::os::tests::error_contains_path ... ok [INFO] [stdout] test fs::os::tests::mkdir_all_creates_nested_dirs ... ok [INFO] [stdout] test fs::os::tests::copy_file_preserves_content ... ok [INFO] [stdout] test fs::os::tests::mkdir_exclusive_refuses_an_existing_path ... ok [INFO] [stdout] test fs::os::tests::set_permissions_works ... ok [INFO] [stdout] test fs::os::tests::symlink_and_readlink_roundtrip ... ok [INFO] [stdout] test fs::os::tests::rename_noreplace_refuses_the_destinations_plain_rename_replaces ... ok [INFO] [stdout] test fs::os::tests::rename_noreplace_moves_only_onto_a_free_path ... ok [INFO] [stdout] test fs::os::tests::remove_file_and_remove_dir_all ... ok [INFO] [stdout] test fs::os::tests::rename_file ... ok [INFO] [stdout] test fs::os::tests::write_and_read_file ... ok [INFO] [stdout] test fs::os::tests::exists_and_is_dir ... ok [INFO] [stdout] test fs::os::tests::read_dir_sorted ... ok [INFO] [stdout] test fs::os::tests::read_file_bytes ... ok [INFO] [stdout] test gates::tests::arm64_alias_resolves_to_aarch64 ... ok [INFO] [stdout] test gates::tests::builtins_cover_os_and_arch ... ok [INFO] [stdout] test fs::os::tests::stat_follows_symlinks ... ok [INFO] [stdout] test gates::tests::dir_gate_invalid_chars_not_a_gate ... ok [INFO] [stdout] test gates::tests::dir_gate_no_underscore_is_not_a_gate ... ok [INFO] [stdout] test gates::tests::hostfacts_get_returns_known_dims ... ok [INFO] [stdout] test gates::tests::merge_user_can_shadow_builtin ... ok [INFO] [stdout] test fs::tests::write_atomic_removes_the_temp_when_the_write_fails ... ok [INFO] [stdout] test gates::tests::merge_user_adds_labels ... ok [INFO] [stdout] test gates::tests::merge_user_compound_label_is_and ... ok [INFO] [stdout] test gates::tests::macos_alias_resolves_to_darwin ... ok [INFO] [stdout] test fs::tests::write_atomic_with_mode_removes_the_temp_when_the_chmod_fails ... ok [INFO] [stdout] test gates::tests::dir_gate_routing_prefix_not_a_gate ... ok [INFO] [stdout] test gates::tests::describe_renders_inline_table ... ok [INFO] [stdout] test gates::tests::compound_predicate_is_and ... ok [INFO] [stdout] test gates::tests::hostfacts_detect_runs ... ok [INFO] [stdout] test gates::tests::dir_gate_recognised_for_underscore_label ... ok [INFO] [stdout] test gates::tests::merge_user_empty_label_errors ... ok [INFO] [stdout] test gates::tests::merge_user_empty_value_errors ... ok [INFO] [stdout] test fs::tests::concurrent_writers_to_one_target_leave_one_complete_file_and_no_temps ... ok [INFO] [stdout] test fs::tests::temp_sibling_never_repeats_across_threads_and_calls ... ok [INFO] [stdout] test gates::tests::pack_os_macos_alias_matches_darwin ... ok [INFO] [stdout] test gates::tests::pack_os_matches_listed_os ... ok [INFO] [stdout] test gates::tests::merge_user_unknown_dimension_errors ... ok [INFO] [stdout] test gates::tests::merge_user_routing_prefix_label_errors ... ok [INFO] [stdout] test gates::tests::merge_user_invalid_label_name_errors ... ok [INFO] [stdout] test gates::tests::missing_dimension_does_not_match ... ok [INFO] [stdout] test gates::tests::pack_os_empty_allowlist_is_active_everywhere ... ok [INFO] [stdout] test gates::tests::parse_extensionless_gate ... ok [INFO] [stdout] test gates::tests::parse_routing_prefix_with_gate ... ok [INFO] [stdout] test gates::tests::parse_simple_gate_with_extension ... ok [INFO] [stdout] test gates::tests::pack_os_multiple_oses_is_or ... ok [INFO] [stdout] test gates::tests::parse_compound_label_with_dash ... ok [INFO] [stdout] test gates::tests::parse_dot_underscore_with_empty_label_is_not_a_gate ... ok [INFO] [stdout] test gates::tests::parse_no_gate_in_plain_filename ... ok [INFO] [stdout] test gates::tests::parse_template_extension_sees_inner_gate ... ok [INFO] [stdout] test gates::tests::parse_only_takes_rightmost_label ... ok [INFO] [stdout] test gates::tests::single_dim_predicate_matches ... ok [INFO] [stdout] test handlers::catalog::tests::prose_describing_the_markers_is_not_a_marker ... ok [INFO] [stdout] test handlers::catalog::tests::roster_regions_accumulates_every_marked_block ... ok [INFO] [stdout] test handlers::catalog::tests::catalog_covers_the_registry_exactly ... ok [INFO] [stdout] test gates::tests::parse_underscore_without_dot_is_not_a_gate ... ok [INFO] [stdout] test handlers::catalog::tests::a_mention_outside_the_roster_does_not_count ... ok [INFO] [stdout] test handlers::catalog::tests::roster_regions_reports_missing_and_unbalanced_markers ... ok [INFO] [stdout] test handlers::externals::tests::resolve_target_expands_tilde ... ok [INFO] [stdout] test handlers::externals::tests::directory_entries_are_skipped ... ok [INFO] [stdout] test handlers::filter::tests::ignore_handler_identity ... ok [INFO] [stdout] test handlers::externals::tests::missing_file_is_skipped_quietly ... ok [INFO] [stdout] test handlers::catalog::tests::rows_are_in_phase_order ... ok [INFO] [stdout] test handlers::filter::tests::ignore_handler_never_emits_intents ... ok [INFO] [stdout] test handlers::gate::tests::name_and_phase_identity ... ok [INFO] [stdout] test handlers::filter::tests::skip_check_status_is_invariant_and_silent ... ok [INFO] [stdout] test handlers::filter::tests::skip_handler_identity ... ok [INFO] [stdout] test handlers::catalog::tests::every_phase_that_holds_handlers_is_listed_once ... ok [INFO] [stdout] test handlers::externals::tests::to_intents_emits_one_fetch_per_entry ... ok [INFO] [stdout] test handlers::externals::tests::to_intents_propagates_parse_errors ... ok [INFO] [stdout] test handlers::gate::tests::to_intents_never_emits ... ok [INFO] [stdout] test handlers::homebrew::tests::brewfile_command_identity ... ok [INFO] [stdout] test handlers::filter::tests::ignore_check_status_is_invariant_and_silent ... ok [INFO] [stdout] test handlers::filter::tests::skip_handler_never_emits_intents ... ok [INFO] [stdout] test handlers::homebrew::tests::brewfile_command_emits_run_intent_with_expected_shape ... ok [INFO] [stdout] test handlers::homebrew::tests::brewfile_command_does_not_upgrade_unrelated_formulae ... ok [INFO] [stdout] test handlers::install::tests::install_command_identity ... ok [INFO] [stdout] test handlers::homebrew::tests::brewfile_command_suppresses_auto_update ... ok [INFO] [stdout] test handlers::install::tests::interpreter_for_selects_by_extension ... ok [INFO] [stdout] test handlers::nix::tests::every_invocation_forces_impure_evaluation ... ok [INFO] [stdout] test handlers::nix::tests::manifest_path_is_passed_verbatim_however_it_is_spelled ... ok [INFO] [stdout] test handlers::install::tests::install_command_emits_run_intent_with_expected_shape ... ok [INFO] [stdout] test handlers::nix::tests::the_command_is_the_whole_specialization ... ok [INFO] [stdout] test handlers::nix::tests::nix_command_identity ... ok [INFO] [stdout] test handlers::nix::tests::wrapper_expression_takes_the_manifest_as_an_argument ... ok [INFO] [stdout] test handlers::nix::tests::command_for_emits_profile_install_with_wrapper_expression ... ok [INFO] [stdout] test handlers::path::tests::name_and_phase_identity ... ok [INFO] [stdout] test handlers::nix::tests::command_for_is_shape_agnostic ... ok [INFO] [stdout] test handlers::catalog::tests::contextual_rosters_list_every_handler ... FAILED [INFO] [stdout] test handlers::path::tests::to_intents_empty_in_empty_out ... ok [INFO] [stdout] test handlers::path::tests::check_status_deployed_when_state_present ... ok [INFO] [stdout] test handlers::path::tests::to_intents_drops_non_directory_matches ... ok [INFO] [stdout] test handlers::gate::tests::check_status_is_invariant_and_silent ... ok [INFO] [stdout] test handlers::path::tests::to_intents_stages_each_matched_directory ... ok [INFO] [stdout] test handlers::install::tests::install_command_picks_interpreter_per_script_via_handler ... ok [INFO] [stdout] test handlers::path::tests::check_status_pending_when_no_state ... ok [INFO] [stdout] test handlers::run_once::tests::file_checksum_changes_with_content ... ok [INFO] [stdout] test handlers::run_once::tests::to_intents_emits_one_intent_per_match ... ok [INFO] [stdout] test handlers::run_once::tests::to_intents_falls_back_to_disk_when_no_rendered_bytes ... ok [INFO] [stdout] test handlers::run_once::tests::check_status_reports_deployed_when_sentinel_exists ... ok [INFO] [stdout] test handlers::run_once::tests::to_intents_skips_directories ... ok [INFO] [stdout] test handlers::catalog::tests::handler_registry_doc_is_current ... FAILED [INFO] [stdout] test handlers::run_once::tests::to_intents_skips_first_time_pack_passive_placeholder ... ok [INFO] [stdout] test handlers::run_once::tests::to_intents_prefers_rendered_bytes_over_disk_read ... ok [INFO] [stdout] test handlers::shell::tests::check_status_deployed_when_state_present ... ok [INFO] [stdout] test handlers::shell::tests::name_and_phase_identity ... ok [INFO] [stdout] test handlers::run_once::tests::to_intents_emits_run_with_shared_shape ... ok [INFO] [stdout] test handlers::run_once::tests::handler_exposes_command_identity ... ok [INFO] [stdout] test handlers::shell::tests::check_status_pending_when_no_state ... ok [INFO] [stdout] test handlers::run_once::tests::file_checksum_and_bytes_agree ... ok [INFO] [stdout] test handlers::run_once::tests::check_status_reports_older_version_when_hash_differs ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::app_prefix_routes_top_level_file_to_app_support_root ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::app_alias_loses_to_explicit_xdg_prefix ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::app_alias_loses_to_home_prefix ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::app_alias_reroutes_default_rule ... ok [INFO] [stdout] test handlers::run_once::tests::check_status_reports_pending_when_no_sentinel ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::app_prefix_outranks_default ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::force_app_is_case_sensitive ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::force_app_loses_to_explicit_app_prefix ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::force_home_subdirectory_file ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::force_app_outranks_app_alias ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::force_app_routes_first_segment_to_app_support ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::app_alias_uses_pack_display_name ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::app_prefix_routes_to_app_support_root ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::force_home_top_level_dir_wholesale ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::home_prefix_routes_top_level_file_to_home ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::lib_prefix_resolution_full_returns_skip_on_non_macos ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::force_home_top_level_file ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::file_prefixes_only_apply_at_top_level ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::home_prefix_works_even_when_pack_not_force_home ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::home_prefix_dir_escapes_pack_namespace ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::lib_prefix_routes_top_level_file_to_library_on_macos ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::literal_bare_file_prefix_filenames_do_not_target_root ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::literal_home_dot_filename_does_not_target_home_root ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::strip_file_prefix_unit ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::xdg_prefix_dir_escapes_pack_namespace ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::xdg_prefix_routes_top_level_file_to_xdg_root ... ok [INFO] [stdout] test handlers::shell::tests::to_intents_empty_in_empty_out ... ok [INFO] [stdout] test handlers::symlink::tests::force_home_does_not_match_unrelated ... ok [INFO] [stdout] test handlers::symlink::tests::force_home_matches_without_dot ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::home_prefix_not_applied_to_subdirs ... ok [INFO] [stdout] test handlers::symlink::tests::integration::custom_target_absolute_path ... ok [INFO] [stdout] test handlers::symlink::tests::cascade::lib_file_prefix_emits_warning_on_non_macos ... ok [INFO] [stdout] test handlers::symlink::tests::integration::no_custom_target_falls_through_to_pack_namespaced_default ... ok [INFO] [stdout] test handlers::symlink::tests::integration::custom_target_relative_path ... ok [INFO] [stdout] test handlers::symlink::tests::integration::has_routing_prefix_unit ... ok [INFO] [stdout] test handlers::shell::tests::to_intents_stages_each_matched_file ... ok [INFO] [stdout] test handlers::shell::tests::to_intents_drops_directory_matches ... ok [INFO] [stdout] test handlers::symlink::tests::integration::custom_target_overrides_all_layers ... ok [INFO] [stdout] test handlers::symlink::tests::integration::dir_with_protected_path_falls_back_to_per_file_and_skips_protected ... ok [INFO] [stdout] test handlers::symlink::tests::integration::plain_top_level_dir_produces_single_wholesale_intent ... ok [INFO] [stdout] test handlers::symlink::tests::integration::targets_plus_directory_prefix_is_a_conflict ... ok [INFO] [stdout] test handlers::symlink::tests::integration::per_file_fallback_skips_special_and_pack_ignored_files ... ok [INFO] [stdout] test handlers::gate::tests::to_intents_empty_in_empty_out ... ok [INFO] [stdout] test handlers::symlink::tests::prefixed_pack_deploys_under_display_name_dir ... ok [INFO] [stdout] test handlers::symlink::tests::prefixed_pack_with_force_home_still_strips_prefix ... ok [INFO] [stdout] test handlers::symlink::tests::integration::lib_prefix_emits_warning_on_non_macos ... ok [INFO] [stdout] test handlers::symlink::tests::prefixed_pack_works_with_underscore_separator ... ok [INFO] [stdout] test handlers::symlink::tests::nested_file_namespaced_under_pack ... ok [INFO] [stdout] test handlers::symlink::tests::not_protected ... ok [INFO] [stdout] test handlers::symlink::tests::integration::dir_with_targets_override_falls_back_to_per_file ... ok [INFO] [stdout] test handlers::symlink::tests::top_level_dir_wholesale_goes_to_pack_xdg_dir ... ok [INFO] [stdout] test handlers::symlink::tests::top_level_file_named_config_goes_under_pack_no_xdg_collision ... ok [INFO] [stdout] test handlers::symlink::tests::protected_exact_match ... ok [INFO] [stdout] test handlers::symlink::tests::top_level_dir_goes_to_pack_xdg_dir ... ok [INFO] [stdout] test handlers::symlink::tests::top_level_file_goes_to_pack_xdg_dir ... ok [INFO] [stdout] test handlers::tests::execution_phase_category_mapping ... ok [INFO] [stdout] test handlers::symlink::tests::protected_parent_directory ... ok [INFO] [stdout] test handlers::symlink::tests::integration::top_level_app_and_lib_dirs_force_per_file_mode ... ok [INFO] [stdout] test operations::tests::operation_accessors ... ok [INFO] [stdout] test handlers::tests::handler_category_eq ... ok [INFO] [stdout] test handlers::tests::two_exclusive_catchalls_panic - should panic ... FAILED [INFO] [stdout] test handlers::symlink::tests::integration::check_status_uses_steady_state_messages ... ok [INFO] [stdout] test operations::tests::handler_intent_accessors ... ok [INFO] [stdout] test handlers::symlink::tests::integration::targets_plus_home_prefix_is_a_conflict ... ok [INFO] [stdout] test handlers::symlink::tests::integration::targets_without_prefix_is_not_a_conflict ... ok [INFO] [stdout] test handlers::tests::execution_phase_declaration_order_drives_ord ... ok [INFO] [stdout] test operations::tests::operation_result_constructors ... ok [INFO] [stdout] test operations::tests::operation_serializes ... ok [INFO] [stdout] test handlers::tests::default_registry_has_exactly_one_exclusive_catchall ... ok [INFO] [stdout] test packs::orchestration::planning::tests::no_provision_records_what_it_dropped ... ok [INFO] [stdout] test packs::orchestration::planning::tests::collect_pack_intents_uses_default_registry ... ok [INFO] [stdout] test handlers::tests::builtin_handler_phases ... ok [INFO] [stdout] test packs::orchestration::planning::tests::preprocessing_collision_detected ... ok [INFO] [stdout] test packs::orchestration::planning::tests::preprocessing_disabled_via_config_treats_files_as_regular ... ok [INFO] [stdout] test packs::orchestration::planning::tests::preprocessing_no_registry_works_like_before ... ok [INFO] [stdout] test handlers::tests::handler_config_default ... ok [INFO] [stdout] test handlers::tests::handler_status_serializes ... ok [INFO] [stdout] test packs::orchestration::planning::tests::preprocessing_identity_file_deploys_via_symlink_handler ... ok [INFO] [stdout] test packs::orchestration::planning::tests::preprocessing_multiple_types_in_registry ... ok [INFO] [stdout] test packs::orchestration::planning::tests::preprocessing_mixed_pack_deploys_both ... ok [INFO] [stdout] test packs::orchestration::planning::tests::provisioning_runs_leave_the_skip_list_empty ... ok [INFO] [stdout] test packs::orchestration::planning::tests::template_with_install_handler_sentinel_reflects_rendered_content ... ok [INFO] [stdout] test packs::orchestration::planning::tests::template_deploys_rendered_content_via_symlink_handler ... ok [INFO] [stdout] test packs::orchestration::resolve::tests::resolve_pack_dir_name_errors_on_unknown_pack ... ok [INFO] [stdout] test packs::orchestration::planning::tests::plan_pack_surfaces_divergence_warnings ... ok [INFO] [stdout] test packs::orchestration::planning::tests::template_disabled_via_config_treats_files_as_regular ... ok [INFO] [stdout] test packs::orchestration::planning::tests::template_with_shell_handler_sources_rendered_content ... ok [INFO] [stdout] test packs::orchestration::planning::tests::plan_pack_force_overwrites_and_skips_warning ... ok [INFO] [stdout] test packs::orchestration::planning::tests::template_respects_per_pack_var_overrides ... ok [INFO] [stdout] test packs::orchestration::planning::tests::template_render_error_surfaces_with_source_path ... ok [INFO] [stdout] test packs::orchestration::planning::tests::template_reserved_var_fails_fast ... ok [INFO] [stdout] test packs::orchestration::planning::tests::preprocessing_error_propagates_through_pipeline ... ok [INFO] [stdout] test packs::orchestration::resolve::tests::resolve_pack_dir_name_finds_pack_by_raw_directory_name ... ok [INFO] [stdout] test packs::orchestration::resolve::tests::resolve_pack_dir_name_finds_pack_by_display_name ... ok [INFO] [stdout] test packs::tests::discover_finds_pack_directories ... ok [INFO] [stdout] test packs::orchestration::tests::run_handler_pipeline_creates_symlinks ... ok [INFO] [stdout] test packs::orchestration::tests::dry_run_produces_results_without_side_effects ... ok [INFO] [stdout] test packs::orchestration::planning::tests::preprocessing_end_to_end_deploy_and_verify_content ... ok [INFO] [stdout] test packs::orchestration::tests::execute_filter_resolves_display_name_to_prefixed_pack ... ok [INFO] [stdout] test packs::tests::discover_skips_files_at_root ... ok [INFO] [stdout] test packs::tests::display_name_for_helper_handles_both_forms ... ok [INFO] [stdout] test packs::tests::pack_new_keeps_unprefixed_name_for_display_name ... ok [INFO] [stdout] test packs::tests::pack_new_strips_prefix_for_display_name ... ok [INFO] [stdout] test packs::orchestration::tests::no_provision_skips_install_handler ... ok [INFO] [stdout] test packs::tests::discover_sorts_alphabetically ... ok [INFO] [stdout] test packs::tests::parse_prefix_recognises_dash_separator ... ok [INFO] [stdout] test packs::tests::discover_skips_hidden_dirs ... ok [INFO] [stdout] test packs::tests::parse_prefix_passes_through_unprefixed_names ... ok [INFO] [stdout] test packs::tests::discover_skips_ignored_patterns ... ok [INFO] [stdout] test packs::orchestration::tests::execute_filter_accepts_raw_directory_name_as_fallback ... ok [INFO] [stdout] test packs::tests::parse_prefix_rejects_empty_stem ... ok [INFO] [stdout] test packs::tests::parse_prefix_recognises_underscore_separator ... ok [INFO] [stdout] test packs::orchestration::tests::execute_discovers_and_processes_packs ... ok [INFO] [stdout] test packs::tests::scan_allows_same_prefix_with_different_stems ... ok [INFO] [stdout] test packs::tests::scan_interleaves_prefixed_and_unprefixed_via_lex ... ok [INFO] [stdout] test packs::tests::scan_rejects_logical_name_collision_between_prefixed_and_unprefixed ... ok [INFO] [stdout] test packs::orchestration::tests::execute_skips_dodotignored_packs ... ok [INFO] [stdout] test packs::tests::scan_rejects_empty_stem_directory ... ok [INFO] [stdout] test packs::tests::scan_partitions_active_and_ignored_packs ... ok [INFO] [stdout] test packs::orchestration::tests::execute_filters_by_pack_name ... ok [INFO] [stdout] test packs::tests::scan_rejects_multi_prefix_collision ... ok [INFO] [stdout] test packs::tests::valid_pack_names ... ok [INFO] [stdout] test paths::tests::builder_explicit_paths ... ok [INFO] [stdout] test paths::tests::default_xdg_config_home_is_nested_under_home ... ok [INFO] [stdout] test paths::tests::dotfiles_root_and_data_dir_are_distinct_namespaces ... ok [INFO] [stdout] test paths::tests::explicit_xdg_config_home_overrides_default ... ok [INFO] [stdout] test packs::tests::scan_sorts_prefixed_packs_numerically_via_lex_when_zero_padded ... ok [INFO] [stdout] test paths::tests::builder_refuses_to_rediscover_a_dotfiles_root ... ok [INFO] [stdout] test paths::tests::explicit_app_support_dir_overrides_default ... ok [INFO] [stdout] test paths::tests::default_app_support_dir_is_platform_aware ... ok [INFO] [stdout] test packs::tests::discover_skips_dodotignore ... ok [INFO] [stdout] test paths::tests::handler_data_dir_structure ... ok [INFO] [stdout] test paths::tests::homebrew_cache_path_sits_next_to_the_init_script ... ok [INFO] [stdout] test paths::tests::init_script_path ... ok [INFO] [stdout] test paths::tests::pack_data_dir_structure ... ok [INFO] [stdout] test plists::tests::clean_output_contains_no_carriage_returns ... ok [INFO] [stdout] test paths::tests::pack_path_joins_dotfiles_root ... ok [INFO] [stdout] test plists::tests::clean_accepts_binary_input ... ok [INFO] [stdout] test plists::tests::clean_handles_mixed_value_types ... ok [INFO] [stdout] test plists::tests::determinism_property_test ... ok [INFO] [stdout] test plists::tests::clean_rejects_garbage_input ... ok [INFO] [stdout] test plists::tests::clean_preserves_array_order ... ok [INFO] [stdout] test plists::tests::clean_sorts_nested_dict_keys ... ok [INFO] [stdout] test paths::tests::safety_lock_state_lives_under_the_data_dir_not_the_dotfiles_root ... ok [INFO] [stdout] test plists::tests::clean_emits_trailing_newline ... ok [INFO] [stdout] test plists::tests::clean_sorts_top_level_keys ... ok [INFO] [stdout] test paths::tests::shell_dir_derived_from_data_dir ... ok [INFO] [stdout] test preprocessing::age::tests::expand_invokes_age_with_decrypt_and_identity_args ... ok [INFO] [stdout] test plists::tests::smudge_rejects_garbage_input ... ok [INFO] [stdout] test preprocessing::age::tests::expand_handles_empty_stderr_failure ... ok [INFO] [stdout] test preprocessing::age::tests::expand_maps_no_identity_match_to_recipient_diagnostic ... ok [INFO] [stdout] test preprocessing::age::tests::matches_extension_only_when_dot_age_is_a_real_suffix ... ok [INFO] [stdout] test preprocessing::age::tests::expand_passes_unrecognized_stderr_through_with_command_context ... ok [INFO] [stdout] test preprocessing::age::tests::expand_propagates_runner_error_when_subprocess_fails_to_spawn ... ok [INFO] [stdout] test plists::tests::smudge_then_clean_roundtrips_to_canonical_xml ... ok [INFO] [stdout] test preprocessing::age::tests::stripped_name_drops_age_suffix ... ok [INFO] [stdout] test preprocessing::age::tests::expand_preserves_binary_plaintext_verbatim_via_run_bytes ... ok [INFO] [stdout] test preprocessing::age::tests::expand_maps_missing_identity_file_to_generate_hint ... ok [INFO] [stdout] test preprocessing::baseline::tests::build_records_hashes_and_optional_fields ... ok [INFO] [stdout] test preprocessing::baseline::tests::hex_encoding_is_lowercase_and_padded ... ok [INFO] [stdout] test preprocessing::baseline::tests::cache_filename_for_drops_parent_directories ... ok [INFO] [stdout] test preprocessing::baseline::tests::sidecar_write_with_empty_ranges_removes_stale_file ... ok [INFO] [stdout] test preprocessing::baseline::tests::load_returns_none_for_missing_file ... ok [INFO] [stdout] test preprocessing::baseline::tests::rendered_content_preserves_lossy_utf8 ... ok [INFO] [stdout] test preprocessing::baseline::tests::sidecar_load_returns_none_when_absent ... ok [INFO] [stdout] test preprocessing::baseline::tests::sidecar_write_with_empty_ranges_does_not_create_file ... ok [INFO] [stdout] test preprocessing::baseline::tests::load_rejects_corrupted_json ... ok [INFO] [stdout] test preprocessing::baseline::tests::load_rejects_unsupported_schema_version ... ok [INFO] [stdout] test preprocessing::conflict::tests::detects_a_full_three_line_block ... ok [INFO] [stdout] test preprocessing::baseline::tests::sidecar_load_rejects_unsupported_version_with_actionable_message ... ok [INFO] [stdout] test preprocessing::baseline::tests::build_then_write_then_load_round_trips ... ok [INFO] [stdout] test preprocessing::conflict::tests::detects_marker_with_trailing_annotation ... ok [INFO] [stdout] test preprocessing::baseline::tests::sidecar_round_trips_through_write_and_load ... ok [INFO] [stdout] test preprocessing::baseline::tests::write_overwrites_existing_baseline ... ok [INFO] [stdout] test preprocessing::conflict::tests::detects_no_markers_in_clean_content ... ok [INFO] [stdout] test preprocessing::baseline::tests::sidecar_load_rejects_corrupt_json_with_actionable_message ... ok [INFO] [stdout] test preprocessing::conflict::tests::detects_marker_with_crlf_line_ending ... ok [INFO] [stdout] test preprocessing::conflict::tests::finds_multiple_independent_blocks ... ok [INFO] [stdout] test preprocessing::conflict::tests::marker_constants_use_distinct_directional_chars ... ok [INFO] [stdout] test preprocessing::conflict::tests::skips_markers_with_leading_whitespace ... ok [INFO] [stdout] test preprocessing::conflict::tests::skips_markers_in_the_middle_of_a_line ... ok [INFO] [stdout] test preprocessing::conflict::tests::detects_partial_block ... ok [INFO] [stdout] test preprocessing::conflict::tests::ensure_no_unresolved_markers_returns_descriptive_error ... ok [INFO] [stdout] test preprocessing::conflict::tests::error_message_quotes_paths_with_spaces ... ok [INFO] [stdout] test preprocessing::conflict::tests::empty_content_has_no_markers ... ok [INFO] [stdout] test preprocessing::conflict::tests::ensure_no_unresolved_markers_error_renders_actionable_message ... ok [INFO] [stdout] test preprocessing::conflict::tests::ensure_no_unresolved_markers_passes_clean_content ... ok [INFO] [stdout] test preprocessing::conflict::tests::error_message_defangs_leading_dash_paths ... ok [INFO] [stdout] test preprocessing::divergence::tests::collect_baselines_skips_secret_sidecars ... ok [INFO] [stdout] test preprocessing::divergence::tests::empty_cache_yields_empty_report ... ok [INFO] [stdout] test preprocessing::divergence::tests::find_baseline_for_source_returns_none_when_unknown ... ok [INFO] [stdout] test preprocessing::gpg::tests::expand_handles_empty_stderr_failure ... ok [INFO] [stdout] test preprocessing::gpg::tests::expand_invokes_gpg_with_decrypt_quiet_batch ... ok [INFO] [stdout] test preprocessing::divergence::tests::find_baseline_for_source_on_empty_cache_returns_none ... ok [INFO] [stdout] test preprocessing::divergence::tests::missing_deployed_when_datastore_file_gone ... ok [INFO] [stdout] test preprocessing::gpg::tests::expand_maps_agent_failure_to_agent_diagnostic ... ok [INFO] [stdout] test preprocessing::divergence::tests::both_changed_when_both_edited ... ok [INFO] [stdout] test preprocessing::baseline::tests::write_creates_nested_directories ... ok [INFO] [stdout] test preprocessing::divergence::tests::baseline_with_empty_source_path_is_classified_missing_source ... ok [INFO] [stdout] test preprocessing::gpg::tests::expand_maps_bad_passphrase_to_batch_caching_hint ... ok [INFO] [stdout] test preprocessing::divergence::tests::output_changed_when_deployed_edited ... ok [INFO] [stdout] test preprocessing::divergence::tests::report_is_sorted_by_pack_handler_filename ... ok [INFO] [stdout] test preprocessing::divergence::tests::find_baseline_for_source_returns_match ... ok [INFO] [stdout] test preprocessing::divergence::tests::missing_source_when_pack_file_deleted ... ok [INFO] [stdout] test preprocessing::identity::tests::double_extension_only_strips_last ... ok [INFO] [stdout] test preprocessing::gpg::tests::expand_maps_missing_source_to_file_diagnostic ... ok [INFO] [stdout] test preprocessing::gpg::tests::expand_strips_asc_extension_when_used ... ok [INFO] [stdout] test preprocessing::identity::tests::custom_extension ... ok [INFO] [stdout] test preprocessing::gpg::tests::expand_maps_no_secret_key_to_keyring_diagnostic ... ok [INFO] [stdout] test preprocessing::gpg::tests::stripped_name_drops_either_extension ... ok [INFO] [stdout] test preprocessing::identity::tests::matches_identity_extension ... ok [INFO] [stdout] test preprocessing::identity::tests::trait_properties ... ok [INFO] [stdout] test preprocessing::no_reverse::tests::exact_filename_match ... ok [INFO] [stdout] test preprocessing::gpg::tests::matches_extension_handles_both_gpg_and_asc ... ok [INFO] [stdout] test preprocessing::no_reverse::tests::glob_matches_by_suffix ... ok [INFO] [stdout] test preprocessing::no_reverse::tests::invalid_glob_pattern_is_ignored ... ok [INFO] [stdout] test preprocessing::no_reverse::tests::glob_matches_one_of_many ... ok [INFO] [stdout] test preprocessing::identity::tests::expand_empty_file ... ok [INFO] [stdout] test preprocessing::gpg::tests::expand_passes_unrecognized_stderr_through_with_command_context ... ok [INFO] [stdout] test preprocessing::no_reverse::tests::no_match_returns_false ... ok [INFO] [stdout] test preprocessing::identity::tests::expand_binary_content ... ok [INFO] [stdout] test preprocessing::identity::tests::expand_returns_content_unchanged ... ok [INFO] [stdout] test preprocessing::identity::tests::stripped_name_removes_extension ... ok [INFO] [stdout] test preprocessing::no_reverse::tests::empty_patterns_never_match ... ok [INFO] [stdout] test preprocessing::divergence::tests::synced_state_when_nothing_changed ... ok [INFO] [stdout] test preprocessing::identity::tests::expand_missing_file_returns_error ... ok [INFO] [stdout] test preprocessing::identity::tests::expand_is_idempotent ... ok [INFO] [stdout] test preprocessing::divergence::tests::input_changed_when_source_edited ... ok [INFO] [stdout] test preprocessing::pipeline::tests::baseline::baseline_is_skipped_in_passive_mode ... ok [INFO] [stdout] test preprocessing::pipeline::tests::baseline::baseline_is_skipped_for_preprocessors_without_tracked_render ... ok [INFO] [stdout] test preprocessing::pipeline::tests::baseline::end_to_end_baseline_for_real_template_preprocessor ... ok [INFO] [stdout] test preprocessing::pipeline::tests::conflict_marker::conflict_marker_gate_skipped_for_preprocessors_without_reverse_merge ... ok [INFO] [stdout] test preprocessing::pipeline::tests::baseline::passive_falls_back_to_the_source_check_for_a_preprocessor_without_a_context ... ok [INFO] [stdout] test preprocessing::pipeline::tests::baseline::baseline_is_written_when_paths_provided_and_tracked_render_present ... ok [INFO] [stdout] test preprocessing::pipeline::tests::baseline::baseline_overwrites_on_repeated_up ... ok [INFO] [stdout] test preprocessing::pipeline::tests::collision_detection_rejects_conflict ... ok [INFO] [stdout] test preprocessing::pipeline::tests::conflict_marker::conflict_marker_gate_runs_on_tracking_scripted_preprocessor ... ok [INFO] [stdout] test preprocessing::pipeline::tests::baseline::passive_reports_a_template_whose_vars_changed_as_unrendered ... ok [INFO] [stdout] test preprocessing::pipeline::tests::baseline::passive_reports_a_legacy_baseline_as_superseded_when_the_context_moved ... ok [INFO] [stdout] test preprocessing::pipeline::tests::baseline::passive_trusts_a_baseline_rendered_from_the_current_source_and_context ... ok [INFO] [stdout] test preprocessing::pipeline::tests::conflict_marker::gate_detects_markers_in_non_utf8_source ... ok [INFO] [stdout] test preprocessing::pipeline::tests::datastore_distinguishes_sibling_from_flattened_name ... ok [INFO] [stdout] test preprocessing::pipeline::tests::directories_are_never_preprocessed ... ok [INFO] [stdout] test preprocessing::pipeline::tests::conflict_marker::template_renders_normally_after_markers_are_resolved ... ok [INFO] [stdout] test preprocessing::no_reverse::tests::matches_against_filename_not_full_path ... ok [INFO] [stdout] test preprocessing::pipeline::tests::baseline::passive_reports_a_source_it_cannot_read_as_unrendered ... ok [INFO] [stdout] test preprocessing::pipeline::tests::conflict_marker::conflict_marker_in_template_source_blocks_expansion ... ok [INFO] [stdout] test preprocessing::pipeline::tests::datastore_preserves_directory_structure ... ok [INFO] [stdout] test preprocessing::pipeline::tests::divergence::divergence_guard_active_for_read_only_callers ... ok [INFO] [stdout] test preprocessing::pipeline::tests::identity_preprocessor_creates_virtual_entry ... ok [INFO] [stdout] test preprocessing::pipeline::tests::divergence::divergence_guard_no_op_when_nothing_changed ... ok [INFO] [stdout] test preprocessing::pipeline::tests::divergence::divergence_guard_reproceeds_when_user_undoes_their_edit ... ok [INFO] [stdout] test preprocessing::pipeline::tests::baseline::passive_reports_a_template_edited_since_its_render_as_unrendered ... ok [INFO] [stdout] test preprocessing::pipeline::tests::merged_entries_combines_and_sorts ... ok [INFO] [stdout] test preprocessing::pipeline::tests::expansion_error_propagates ... ok [INFO] [stdout] test preprocessing::pipeline::tests::inter_preprocessor_collision_detected ... ok [INFO] [stdout] test preprocessing::pipeline::tests::empty_registry_passes_all_through ... ok [INFO] [stdout] test preprocessing::pipeline::tests::divergence::divergence_guard_baseline_stays_pinned_to_last_successful_render ... ok [INFO] [stdout] test preprocessing::pipeline::tests::divergence::divergence_guard_skips_when_deployed_was_edited ... ok [INFO] [stdout] test preprocessing::pipeline::tests::divergence::divergence_guard_overridden_by_force ... ok [INFO] [stdout] test preprocessing::pipeline::tests::multiple_preprocessor_files_in_one_pack ... ok [INFO] [stdout] test preprocessing::pipeline::tests::passthrough_when_no_preprocessor_files ... ok [INFO] [stdout] test preprocessing::pipeline::tests::path_traversal::curdir_prefixed_paths_collide_with_plain_paths ... ok [INFO] [stdout] test preprocessing::pipeline::tests::path_traversal::directory_entry_is_mkdird_not_written_as_file ... ok [INFO] [stdout] test preprocessing::pipeline::tests::pack_with_only_preprocessor_files ... ok [INFO] [stdout] test preprocessing::pipeline::tests::mixed_pack_partitions_correctly ... ok [INFO] [stdout] test preprocessing::pipeline::tests::path_traversal::rejects_parent_dir_escape_from_preprocessor ... ok [INFO] [stdout] test preprocessing::pipeline::tests::path_traversal::virtual_entry_relative_path_is_normalized ... ok [INFO] [stdout] test preprocessing::reverse_merge::tests::auto_merges_consistent_edit_across_loop_iterations ... ok [INFO] [stdout] test preprocessing::pipeline::tests::preprocessing_is_idempotent ... ok [INFO] [stdout] test preprocessing::pipeline::tests::path_traversal::rejects_empty_path_from_preprocessor ... ok [INFO] [stdout] test preprocessing::pipeline::tests::path_traversal::rejects_absolute_path_from_preprocessor ... ok [INFO] [stdout] test preprocessing::pipeline::tests::subdirectory_preprocessor_file_preserves_parent ... ok [INFO] [stdout] test preprocessing::pipeline::tests::path_traversal::deploy_mode_some_chmods_rendered_file_to_specified_mode ... ok [INFO] [stdout] test preprocessing::pipeline::tests::source_map_is_complete ... ok [INFO] [stdout] test preprocessing::pipeline::tests::divergence::divergence_guard_skips_when_both_changed ... ok [INFO] [stdout] test preprocessing::pipeline::tests::path_traversal::rejects_curdir_only_path_from_preprocessor ... ok [INFO] [stdout] test preprocessing::pipeline::tests::divergence::divergence_guard_proceeds_when_source_changed_only ... ok [INFO] [stdout] test preprocessing::reverse_merge::tests::is_actionable_distinguishes_outcomes ... ok [INFO] [stdout] test preprocessing::reverse_merge::tests::mask_makes_secret_line_rotation_invisible_to_reverse_diff ... ok [INFO] [stdout] test preprocessing::reverse_merge::tests::empty_mask_is_byte_equivalent_to_unmasked ... ok [INFO] [stdout] test preprocessing::template::secrets::tests::finalize_secrets_drops_entries_whose_sentinel_was_not_emitted ... ok [INFO] [stdout] test preprocessing::reverse_merge::tests::mask_does_not_hide_unmasked_static_line_edits ... ok [INFO] [stdout] test preprocessing::reverse_merge::tests::patches_static_text_edit_outside_variables ... ok [INFO] [stdout] test preprocessing::reverse_merge::tests::unchanged_when_cached_tracked_is_empty ... ok [INFO] [stdout] test preprocessing::template::secrets::tests::finalize_secrets_handles_two_calls_resolving_to_same_value ... ok [INFO] [stdout] test preprocessing::reverse_merge::tests::flags_conflict_for_inconsistent_per_iteration_edits ... ok [INFO] [stdout] test preprocessing::template::tests::context_hash_changes_when_user_var_changes ... ok [INFO] [stdout] test preprocessing::reverse_merge::tests::patched_outcome_is_byte_stable_across_runs ... ok [INFO] [stdout] test preprocessing::reverse_merge::tests::unchanged_when_only_variable_values_changed ... ok [INFO] [stdout] test preprocessing::template::secrets::tests::finalize_secrets_does_not_match_value_substring_outside_sentinel ... ok [INFO] [stdout] test preprocessing::template::tests::extension_with_leading_dot_still_matches ... ok [INFO] [stdout] test preprocessing::template::tests::matches_default_extensions ... ok [INFO] [stdout] test preprocessing::template::secrets::tests::finalize_secrets_substitutes_sentinels_and_records_line_ranges ... ok [INFO] [stdout] test preprocessing::template::secrets::tests::finalize_secrets_substitutes_sentinels_in_tracked_render_too ... ok [INFO] [stdout] test preprocessing::template::tests::build_dodot_context_omits_undetected_optional_keys ... ok [INFO] [stdout] test preprocessing::template::tests::context_hash_is_order_independent_for_user_vars ... ok [INFO] [stdout] test preprocessing::template::tests::matches_custom_extension ... ok [INFO] [stdout] test preprocessing::template::tests::missing_dodot_key_can_be_defaulted ... ok [INFO] [stdout] test preprocessing::template::tests::env_var_default_filter_bridges_missing_vars ... ok [INFO] [stdout] test preprocessing::template::tests::overlapping_extensions_prefer_longest_match ... ok [INFO] [stdout] test preprocessing::template::tests::overlapping_suffix_does_not_false_match ... ok [INFO] [stdout] test preprocessing::template::tests::expand_emits_tracked_render_with_markers_around_each_variable ... ok [INFO] [stdout] test preprocessing::template::tests::missing_dodot_key_raises_strict_error ... ok [INFO] [stdout] test preprocessing::template::tests::expand_visible_output_matches_tracked_with_markers_stripped ... ok [INFO] [stdout] test preprocessing::template::tests::renders_dodot_builtins ... ok [INFO] [stdout] test preprocessing::template::tests::context_hash_is_populated_and_stable ... ok [INFO] [stdout] test preprocessing::template::tests::renders_empty_template ... ok [INFO] [stdout] test preprocessing::template::tests::reserved_dodot_var_rejected ... ok [INFO] [stdout] test preprocessing::template::tests::renders_unicode_content_and_vars ... ok [INFO] [stdout] test preprocessing::template::tests::renders_filters_and_conditionals ... ok [INFO] [stdout] test preprocessing::template::tests::renders_user_var ... ok [INFO] [stdout] test preprocessing::template::tests::empty_template_still_emits_tracked_render ... ok [INFO] [stdout] test preprocessing::template::tests::renders_for_loop_over_user_var ... ok [INFO] [stdout] test preprocessing::template::tests::reserved_env_var_rejected ... ok [INFO] [stdout] test preprocessing::template::tests::secret_function_records_sidecar_entry_with_correct_line_range ... ok [INFO] [stdout] test preprocessing::pipeline::tests::conflict_marker::gate_handles_non_utf8_source_via_lossy_decode ... ok [INFO] [stdout] test preprocessing::template::tests::secret_function_unknown_scheme_lists_configured_schemes ... ok [INFO] [stdout] test preprocessing::template::tests::rendering_is_deterministic_across_calls ... ok [INFO] [stdout] test preprocessing::template::tests::secret_function_caches_repeated_references_within_a_render ... ok [INFO] [stdout] test preprocessing::template::tests::secret_function_tracks_render_into_baseline ... ok [INFO] [stdout] test preprocessing::template::tests::secret_function_resolves_via_registry ... ok [INFO] [stdout] test preprocessing::template::tests::missing_env_var_errors ... ok [INFO] [stdout] test preprocessing::template::tests::secret_function_propagates_provider_resolve_failure ... ok [INFO] [stdout] test preprocessing::template::tests::secret_function_caches_across_multiple_expands_on_one_registry ... ok [INFO] [stdout] test preprocessing::template::tests::secret_function_refuses_multiline_value_per_section_3_4 ... ok [INFO] [stdout] test preprocessing::template::tests::stripped_name_of_literal_extension_returns_empty ... ok [INFO] [stdout] test preprocessing::template::tests::secret_function_supports_multiple_schemes_in_one_template ... ok [INFO] [stdout] test preprocessing::template::tests::renders_env_var ... ok [INFO] [stdout] test preprocessing::template::tests::renders_template_without_substitutions ... ok [INFO] [stdout] test preprocessing::template::tests::stripped_name_removes_either_extension ... ok [INFO] [stdout] test preprocessing::tests::registry_first_match_wins ... ok [INFO] [stdout] test preprocessing::tests::registry_multiple_different_preprocessors ... ok [INFO] [stdout] test preprocessing::tests::transform_type_eq ... ok [INFO] [stdout] test preprocessing::template::tests::secret_function_without_registry_errors_with_actionable_hint ... ok [INFO] [stdout] test preprocessing::template::tests::syntax_error_reports_source_file ... ok [INFO] [stdout] test preprocessing::unarchive::tests::expand_empty_tar_gz ... ok [INFO] [stdout] test preprocessing::template::tests::undefined_user_var_errors ... ok [INFO] [stdout] test preprocessing::tests::default_registry_registers_age_when_enabled ... ok [INFO] [stdout] test preprocessing::tests::default_registry_does_not_register_age_or_gpg_when_disabled ... ok [INFO] [stdout] test preprocessing::unarchive::tests::matches_tar_gz_extension ... ok [INFO] [stdout] test preprocessing::unarchive::tests::expand_missing_file_returns_error ... ok [INFO] [stdout] test preprocessing::tests::default_registry_registers_gpg_when_enabled_for_both_extensions ... ok [INFO] [stdout] test preprocessing::tests::registry_does_not_match_partial_extension ... ok [INFO] [stdout] test preprocessing::tests::empty_registry ... ok [INFO] [stdout] test preprocessing::unarchive::tests::expand_single_file_tar_gz ... ok [INFO] [stdout] test preprocessing::unarchive::tests::stripped_name_removes_extension ... ok [INFO] [stdout] test preprocessing::unarchive::tests::rejects_tar_slip_parent_dir ... ok [INFO] [stdout] test preprocessing::unarchive::tests::rejects_tar_slip_absolute_path ... ok [INFO] [stdout] test preprocessing::unarchive::tests::expand_tar_gz_with_directory ... ok [INFO] [stdout] test preprocessing::unarchive::tests::trait_properties ... ok [INFO] [stdout] test probe::brew::tests::info_cask_caches_first_result_then_serves_from_cache ... ignored, macOS-only behavior [INFO] [stdout] test probe::brew::tests::info_cask_refetches_when_ttl_expires ... ignored, macOS-only behavior [INFO] [stdout] test probe::brew::tests::info_cask_returns_none_on_brew_failure ... ignored, macOS-only behavior [INFO] [stdout] test preprocessing::tests::registry_finds_preprocessor ... ok [INFO] [stdout] test probe::brew::tests::invalidate_all_cache_clears_every_token ... ignored, macOS-only behavior [INFO] [stdout] test probe::brew::tests::invalidate_cache_forces_refetch ... ignored, macOS-only behavior [INFO] [stdout] test probe::brew::tests::list_installed_casks_parses_first_column ... ignored, macOS-only behavior [INFO] [stdout] test probe::brew::tests::match_folders_cache_only_skips_brew_info_on_miss ... ignored, macOS-only behavior [INFO] [stdout] test probe::brew::tests::parse_info_json_extracts_first_cask ... ok [INFO] [stdout] test probe::brew::tests::parse_info_json_missing_casks_array_returns_none ... ok [INFO] [stdout] test probe::brew::tests::list_installed_casks_silent_on_non_macos ... ok [INFO] [stdout] test preprocessing::unarchive::tests::expand_corrupted_archive_returns_error ... ok [INFO] [stdout] test probe::cfprefsd_marker::tests::clear_is_idempotent_when_missing ... ok [INFO] [stdout] test probe::brew::tests::cache_path_sanitizes_token ... ok [INFO] [stdout] test preprocessing::unarchive::tests::expand_extracts_tar_gz ... ok [INFO] [stdout] test probe::data_dir_tree::tests::deep_tree_truncates_at_max_depth ... ok [INFO] [stdout] test probe::data_dir_tree::tests::count_and_total_size_helpers_agree ... ok [INFO] [stdout] test probe::cfprefsd_marker::tests::marker_round_trip ... ok [INFO] [stdout] test probe::data_dir_tree::tests::depth_zero_returns_root_only_with_truncated_count ... ok [INFO] [stdout] test preprocessing::unarchive::tests::rejects_symlink_entry ... ok [INFO] [stdout] test probe::deployment_map::tests::empty_datastore_yields_empty_map ... ok [INFO] [stdout] test probe::data_dir_tree::tests::symlinks_carry_target_and_are_not_followed ... ok [INFO] [stdout] test probe::data_dir_tree::tests::files_report_size ... ok [INFO] [stdout] test probe::data_dir_tree::tests::missing_data_dir_returns_empty_root ... ok [INFO] [stdout] test probe::deployment_map::tests::empty_input_produces_header_only ... ok [INFO] [stdout] test probe::deployment_map::tests::parser_skips_malformed_rows ... ok [INFO] [stdout] test probe::deployment_map::tests::paths_with_tabs_would_break_tsv_but_are_not_produced_by_dodot ... ok [INFO] [stdout] test probe::cfprefsd_marker::tests::write_is_idempotent ... ok [INFO] [stdout] test probe::deployment_map::tests::broken_symlink_still_recorded_with_empty_source ... ok [INFO] [stdout] test probe::deployment_map::tests::parser_ignores_comments_and_blank_lines ... ok [INFO] [stdout] test probe::data_dir_tree::tests::directories_before_files_then_alphabetical ... ok [INFO] [stdout] test preprocessing::template::tests::trait_properties ... ok [INFO] [stdout] test probe::deployment_map::tests::sentinel_file_classified_as_file_with_no_source ... ok [INFO] [stdout] test probe::deployment_map::tests::read_returns_empty_when_file_missing ... ok [INFO] [stdout] test probe::deployment_map::tests::entries_sort_by_pack_then_handler_then_name ... ok [INFO] [stdout] test probe::deployment_map::tests::write_and_reread_roundtrip ... ok [INFO] [stdout] test probe::deployment_map::tests::symlink_entries_capture_source_and_datastore ... ok [INFO] [stdout] test probe::deployment_map::tests::format_has_header_and_one_row_per_entry ... ok [INFO] [stdout] test probe::macos_native::tests::bundle_id_returns_none_on_nonzero_exit ... ignored, macOS-only behavior [INFO] [stdout] test probe::macos_native::tests::bundle_id_returns_value_on_success ... ignored, macOS-only behavior [INFO] [stdout] test probe::macos_native::tests::find_app_bundle_returns_first_path ... ignored, macOS-only behavior [INFO] [stdout] test probe::macos_native::tests::bundle_id_silent_on_non_macos ... ok [INFO] [stdout] test probe::last_up::tests::unparseable_marker_reads_as_none ... ok [INFO] [stdout] test probe::macos_native::tests::find_app_bundle_returns_none_when_no_results ... ignored, macOS-only behavior [INFO] [stdout] test probe::macos_native::tests::parse_mdls_value_empty_input ... ok [INFO] [stdout] test probe::macos_native::tests::parse_mdls_value_null ... ok [INFO] [stdout] test probe::last_up::tests::missing_marker_reads_as_none ... ok [INFO] [stdout] test probe::shell_init::tests::aggregate_empty_profiles_returns_empty_view ... ok [INFO] [stdout] test probe::shell_init::tests::group_profile_aggregates_by_pack_handler ... ok [INFO] [stdout] test probe::shell_init::tests::group_profile_sorts_across_packs ... ok [INFO] [stdout] test probe::macos_native::tests::parse_mdls_value_quoted ... ok [INFO] [stdout] test probe::macos_native::tests::parse_mdls_value_unquoted ... ok [INFO] [stdout] test probe::shell_init::tests::aggregate_profiles_buckets_by_pack_handler_target ... ok [INFO] [stdout] test probe::shell_init::tests::aggregate_targets_sort_by_pack_handler_target ... ok [INFO] [stdout] test probe::shell_init::tests::group_profile_clamps_framing_when_total_below_entries ... ok [INFO] [stdout] test probe::shell_init::tests::parse_errors_log_handles_single_record ... ok [INFO] [stdout] test probe::shell_init::tests::parser_extracts_preamble_and_rows ... ok [INFO] [stdout] test probe::shell_init::tests::parser_marks_missing_end_marker_incomplete ... ok [INFO] [stdout] test probe::shell_init::tests::parse_errors_log_returns_empty_for_empty_or_header_only ... ok [INFO] [stdout] test probe::shell_init::tests::parse_errors_log_skips_malformed_headers ... ok [INFO] [stdout] test probe::shell_init::tests::parse_unix_ts_handles_unparseable_filenames ... ok [INFO] [stdout] test probe::shell_init::tests::parser_marks_uncomputable_whole_run_total_incomplete ... ok [INFO] [stdout] test probe::last_up::tests::write_then_read_round_trip ... ok [INFO] [stdout] test probe::shell_init::tests::parser_skips_malformed_rows ... ok [INFO] [stdout] test probe::shell_init::tests::percentile_nearest_rank_basic_cases ... ok [INFO] [stdout] test probe::shell_init::tests::parse_errors_log_handles_multiple_records_with_multiline_stderr ... ok [INFO] [stdout] test probe::shell_init::tests::read_latest_returns_none_when_dir_missing ... ok [INFO] [stdout] test probe::shell_init::tests::read_latest_skips_newer_incomplete_profiles ... ok [INFO] [stdout] test probe::shell_init::tests::read_latest_skips_profiles_with_uncomputable_totals ... ok [INFO] [stdout] test probe::shell_init::tests::read_recent_handles_fewer_files_than_limit ... ok [INFO] [stdout] test probe::shell_init::tests::read_recent_with_no_sibling_errors_log_yields_empty_errors ... ok [INFO] [stdout] test probe::shell_init::tests::summarize_history_marks_incomplete_totals_unknown ... ok [INFO] [stdout] test probe::shell_init::tests::rotate_ignores_non_profile_files ... ok [INFO] [stdout] test probe::shell_init::tests::read_recent_with_limit_zero_returns_empty ... ok [INFO] [stdout] test prompts::catalog::tests::keys_are_alphabetised ... ok [INFO] [stdout] test prompts::catalog::tests::keys_are_unique ... ok [INFO] [stdout] test probe::shell_init::tests::read_latest_picks_highest_filename_lexicographically ... ok [INFO] [stdout] test probe::shell_init::tests::summarize_history_pulls_basic_metrics_per_run ... ok [INFO] [stdout] test probe::shell_init::tests::read_recent_returns_newest_first_capped_at_limit ... ok [INFO] [stdout] test probe::shell_init::tests::rotate_below_threshold_is_a_noop ... ok [INFO] [stdout] test prompts::tests::save_and_reload_roundtrip ... ok [INFO] [stdout] test prompts::tests::dismiss_then_query ... ok [INFO] [stdout] test prompts::catalog::tests::lookup_finds_known_keys ... ok [INFO] [stdout] test probe::shell_init::tests::read_recent_loads_sibling_errors_log_when_present ... ok [INFO] [stdout] test provisioners::availability::tests::a_candidate_that_cannot_be_examined_is_a_failure_not_an_absence ... ok [INFO] [stdout] test prompts::tests::dismiss_is_idempotent_and_updates_timestamp ... ok [INFO] [stdout] test prompts::tests::corrupted_file_returns_error ... ok [INFO] [stdout] test provisioners::availability::tests::a_handler_dodot_does_not_locate_is_present_with_no_path ... ok [INFO] [stdout] test provisioners::availability::tests::a_present_manager_renders_no_row_of_its_own ... ok [INFO] [stdout] test probe::shell_init::tests::rotate_keeps_newest_n ... ok [INFO] [stdout] test provisioners::availability::tests::a_candidate_that_is_not_runnable_lets_the_next_one_answer ... ok [INFO] [stdout] test provisioners::availability::tests::a_candidate_under_a_non_directory_is_a_miss ... ok [INFO] [stdout] test provisioners::availability::tests::a_probe_failure_renders_as_an_error_not_a_skip ... ok [INFO] [stdout] test provisioners::availability::tests::a_row_with_a_receipt_gets_the_locations_without_the_wrong_remedy ... ok [INFO] [stdout] test provisioners::availability::tests::a_set_environment_variable_leads_the_candidate_list ... ok [INFO] [stdout] test prompts::tests::unsupported_schema_version_returns_error ... ok [INFO] [stdout] test provisioners::availability::tests::an_absent_row_names_the_manager_the_locations_and_the_project_page ... ok [INFO] [stdout] test prompts::tests::reset_all_returns_count_cleared ... ok [INFO] [stdout] test prompts::tests::load_missing_file_returns_empty ... ok [INFO] [stdout] test prompts::tests::reset_one_returns_whether_present ... ok [INFO] [stdout] test provisioners::availability::tests::detect_anchors_home_candidates_to_the_callers_home ... ok [INFO] [stdout] test provisioners::availability::tests::an_unset_environment_variable_drops_its_candidate ... ok [INFO] [stdout] test provisioners::availability::tests::absent_names_every_location_probed_in_order ... ok [INFO] [stdout] test provisioners::availability::tests::present_at_the_first_candidate_holding_an_executable ... ok [INFO] [stdout] test provisioners::availability::tests::detect_locates_the_managers_and_leaves_install_alone ... ok [INFO] [stdout] test provisioners::availability::tests::an_empty_home_drops_home_anchored_candidates_rather_than_inventing_one ... ok [INFO] [stdout] test provisioners::availability::tests::a_test_context_that_has_not_opted_in_probes_nothing ... ok [INFO] [stdout] test provisioners::fitness::tests::a_brew_above_the_floor_is_fit ... ok [INFO] [stdout] test provisioners::fitness::tests::a_brew_at_the_floor_is_fit_and_says_nothing ... ok [INFO] [stdout] test provisioners::fitness::tests::every_declared_floor_parses ... ok [INFO] [stdout] test provisioners::fitness::tests::homebrew_is_the_only_handler_with_a_floor ... ok [INFO] [stdout] test provisioners::fitness::tests::the_probe_asks_the_executable_the_run_will_spawn_under_its_own_environment ... ok [INFO] [stdout] test provisioners::fitness::tests::a_runner_error_is_a_probe_failure ... ok [INFO] [stdout] test provisioners::fitness::tests::a_lower_bound_is_neither_fit_nor_below_the_floor ... ok [INFO] [stdout] test provisioners::fitness::tests::a_failing_version_command_is_a_probe_failure_not_an_absent_manager ... ok [INFO] [stdout] test provisioners::fitness::tests::output_with_no_version_in_it_is_a_probe_failure ... ok [INFO] [stdout] test provisioners::fitness::tests::a_handler_with_no_floor_is_fit_without_spawning_anything ... ok [INFO] [stdout] test provisioners::fitness::tests::trailing_zero_components_do_not_make_a_version_older ... ok [INFO] [stdout] test provisioners::tests::descriptor_matches_command ... ok [INFO] [stdout] test provisioners::fitness::tests::a_brew_below_the_floor_is_reported_with_its_remedy ... ok [INFO] [stdout] test provisioners::fitness::tests::a_development_build_is_read_by_its_release_number ... ok [INFO] [stdout] test provisioners::tests::install_is_the_path_exception ... ok [INFO] [stdout] test provisioners::tests::nix_manifest_is_not_the_last_argument ... ok [INFO] [stdout] test provisioners::tests::registry_holds_one_row_per_provisioning_handler ... ok [INFO] [stdout] test provisioners::tests::only_homebrew_declares_an_environment ... ok [INFO] [stdout] test provisioners::tests::every_probed_provisioner_names_its_project_page ... ok [INFO] [stdout] test provisioners::tests::homebrew_candidates_track_the_bootstrap_prefixes ... ok [INFO] [stdout] test render::tests::json_mode_produces_json ... ok [INFO] [stdout] test provisioners::tests::descriptor_for_is_none_outside_provisioning ... ok [INFO] [stdout] test provisioners::tests::every_probed_candidate_is_absolute_or_anchored ... ok [INFO] [stdout] test rules::grouping::tests::group_by_handler_groups_correctly ... ok [INFO] [stdout] test rules::grouping::tests::handler_execution_order_follows_phase_declaration ... ok [INFO] [stdout] test render::tests::theme_parses_without_error ... ok [INFO] [stdout] test render::tests::render_pack_status_text_mode ... ok [INFO] [stdout] test provisioners::tests::short_arguments_resolve_to_none ... ok [INFO] [stdout] test rules::pattern::tests::case_insensitive_pattern_lowercases_at_compile_time ... ok [INFO] [stdout] test rules::pattern::tests::catchall_matches_everything ... ok [INFO] [stdout] test rules::pattern::tests::exact_match ... ok [INFO] [stdout] test rules::pattern::tests::glob_match ... ok [INFO] [stdout] test render::tests::renderer_creates_with_all_templates ... ok [INFO] [stdout] test rules::grouping::tests::handler_execution_order_places_unknown_handlers_last ... ok [INFO] [stdout] test rules::grouping::tests::same_phase_handlers_are_ordered_by_name ... ok [INFO] [stdout] test rules::pattern::tests::directory_match ... ok [INFO] [stdout] test rules::scanner::tests::dir_gates::dir_gate_failing_emits_gate_match ... ok [INFO] [stdout] test provisioners::tests::descriptor_environment_reaches_each_command ... ok [INFO] [stdout] test render::tests::all_tutorial_templates_render_in_text_mode ... ok [INFO] [stdout] test rules::scanner::tests::dir_gates::dir_gate_nested_failing_inner_gate_drops_subtree ... ok [INFO] [stdout] test rules::scanner::tests::gates::gate_arch_label_uses_arm64_alias ... ok [INFO] [stdout] test rules::scanner::tests::dir_gates::dir_gate_unknown_label_is_hard_error ... ok [INFO] [stdout] test rules::scanner::tests::dir_gates::dir_gate_nested_inside_passing_gate_still_evaluates ... ok [INFO] [stdout] test provisioners::tests::a_handler_with_no_descriptor_declares_no_environment ... ok [INFO] [stdout] test rules::scanner::tests::dir_gates::dir_gate_passing_descends_and_flattens ... ok [INFO] [stdout] test rules::scanner::tests::dir_gates::dir_gate_routing_prefix_is_not_a_gate ... ok [INFO] [stdout] test rules::scanner::tests::gates::gate_brewfile_extensionless ... ok [INFO] [stdout] test rules::scanner::tests::dir_gates::dir_gate_with_routing_prefix_inside_passing_gate ... ok [INFO] [stdout] test rules::scanner::tests::gates::gate_composes_with_home_routing_prefix ... ok [INFO] [stdout] test rules::scanner::tests::gates::gate_composes_with_template_extension ... ok [INFO] [stdout] test probe::shell_init::tests::rotate_with_keep_zero_is_a_noop ... ok [INFO] [stdout] test rules::scanner::tests::gates::gate_passing_strips_suffix_and_routes_to_handler ... ok [INFO] [stdout] test rules::scanner::tests::gates::gate_failing_emits_gate_handler_match ... ok [INFO] [stdout] test rules::scanner::tests::gates::gate_unknown_label_is_hard_error ... ok [INFO] [stdout] test rules::scanner::tests::gates::gate_compound_user_label_evaluates_and ... ok [INFO] [stdout] test rules::scanner::tests::mapping_gates::mappings_gate_failing_drops_file ... ok [INFO] [stdout] test rules::scanner::tests::nested_install_sh_is_not_matched_by_install_rule ... ok [INFO] [stdout] test rules::scanner::tests::mapping_gates::mappings_gate_passing_does_not_alter_dispatch ... ok [INFO] [stdout] test rules::scanner::tests::scan_pack_basic ... ok [INFO] [stdout] test rules::scanner::tests::mapping_gates::mappings_gate_unknown_label_errors ... ok [INFO] [stdout] test rules::scanner::tests::mapping_gates::mappings_gate_conflict_with_basename_gate_errors ... ok [INFO] [stdout] test rules::scanner::tests::gates::gate_mixed_files_in_one_pack ... ok [INFO] [stdout] test rules::scanner::tests::ignore_rule_outranks_skip ... ok [INFO] [stdout] test rules::scanner::tests::mapping_gates::mappings_gate_glob_matches_subpath ... ok [INFO] [stdout] test rules::scanner::tests::scan_pack_priority_ordering ... ok [INFO] [stdout] test rules::scanner::tests::scan_pack_skips_hidden_files ... ok [INFO] [stdout] test rules::scanner::tests::scan_pack_directory_entry ... ok [INFO] [stdout] test rules::scanner::tests::scan_pack_ignore_rule_outranks_catchall ... ok [INFO] [stdout] test rules::scanner::tests::shell_glob_defaults_dont_override_skip_rules ... ok [INFO] [stdout] test rules::scanner::tests::shell_glob_defaults_dont_steal_install_sh ... ok [INFO] [stdout] test rules::scanner::tests::shell_glob_does_not_recurse_into_subdirectories ... ok [INFO] [stdout] test rules::scanner::tests::scan_pack_skips_special_files ... ok [INFO] [stdout] test rules::scanner::tests::scan_pack_with_ignore_patterns ... ok [INFO] [stdout] test rules::scanner::tests::shell_glob_defaults_source_arbitrary_names_at_pack_root ... ok [INFO] [stdout] test rules::scanner::tests::shell_glob_does_not_match_template_extension ... ok [INFO] [stdout] test safety_lock::check::tests::a_moved_root_does_not_inherit_the_old_locations_approval ... ok [INFO] [stdout] test rules::types::tests::rule_match_serializes ... ok [INFO] [stdout] test rules::scanner::tests::skip_handler_outranks_precise_handler ... ok [INFO] [stdout] test safety_lock::check::tests::an_environment_root_is_deliberate_without_a_trust_record ... ok [INFO] [stdout] test safety_lock::check::tests::approving_an_approved_root_changes_nothing ... ok [INFO] [stdout] test safety_lock::check::tests::independent_roots_are_approved_without_arbitration ... ok [INFO] [stdout] test safety_lock::check::tests::only_an_unapproved_implicit_root_needs_confirmation ... ok [INFO] [stdout] test safety_lock::check::tests::an_implicit_root_is_approved_only_when_the_collection_holds_it ... ok [INFO] [stdout] test safety_lock::check::tests::an_alias_of_an_approved_root_is_already_approved ... ok [INFO] [stdout] test rules::scanner::tests::scan_pack_returns_only_top_level_entries ... ok [INFO] [stdout] test safety_lock::check::tests::the_lifecycle_produces_collections_that_load_back_unchanged ... ok [INFO] [stdout] test safety_lock::environment::tests::a_leading_tilde_expands_against_the_injected_home_directory ... ok [INFO] [stdout] test safety_lock::environment::tests::a_captured_value_keeps_its_native_bytes ... ok [INFO] [stdout] test safety_lock::environment::tests::a_failing_expanded_value_names_the_path_it_expanded_to ... ok [INFO] [stdout] test rules::scanner::tests::skip_handler_matches_case_insensitively ... ok [INFO] [stdout] test safety_lock::environment::tests::a_non_unicode_value_keeps_its_native_form ... ok [INFO] [stdout] test safety_lock::check::tests::unusable_trust_state_is_reported_rather_than_read_as_empty ... ok [INFO] [stdout] test safety_lock::environment::tests::a_relative_value_resolves_against_the_injected_invocation_directory ... ok [INFO] [stdout] test safety_lock::environment::tests::a_tilde_user_value_is_not_expanded ... ok [INFO] [stdout] test safety_lock::environment::tests::a_real_directory_resolves_through_the_os_probe ... ok [INFO] [stdout] test safety_lock::environment::tests::a_non_unicode_failure_is_named_reversibly ... ok [INFO] [stdout] test safety_lock::environment::tests::a_value_is_canonicalized_once_into_the_identity ... ok [INFO] [stdout] test safety_lock::environment::tests::an_environment_root_is_invocation_local_and_needs_no_approval ... ok [INFO] [stdout] test safety_lock::environment::tests::each_unusable_class_produces_its_own_diagnostic ... ok [INFO] [stdout] test safety_lock::environment::tests::an_absolute_value_selects_that_root_with_environment_provenance ... ok [INFO] [stdout] test safety_lock::environment::tests::no_failing_value_ever_reaches_implicit_discovery ... ok [INFO] [stdout] test safety_lock::environment::tests::an_empty_value_is_a_hard_error ... ok [INFO] [stdout] test safety_lock::environment::tests::an_unset_variable_leaves_selection_to_implicit_discovery ... ok [INFO] [stdout] test safety_lock::files::tests::a_conventional_home_dotfiles_directory_is_not_an_implicit_fallback ... ok [INFO] [stdout] test safety_lock::environment::tests::presence_is_independent_of_usability ... ok [INFO] [stdout] test safety_lock::files::tests::a_non_unicode_root_keeps_its_native_form ... ok [INFO] [stdout] test safety_lock::files::tests::a_relative_current_directory_does_not_spoil_a_usable_git_top_level ... ok [INFO] [stdout] test safety_lock::files::tests::a_real_repository_resolves_through_the_os_probe ... ok [INFO] [stdout] test safety_lock::files::tests::a_git_top_level_wins_over_the_directory_the_user_stands_in ... ok [INFO] [stdout] test safety_lock::files::tests::a_nested_repository_selects_its_own_top_level ... ok [INFO] [stdout] test safety_lock::files::tests::a_relative_candidate_is_refused_before_it_reaches_the_filesystem ... ok [INFO] [stdout] test safety_lock::files::tests::an_unusable_git_top_level_never_falls_through_to_the_current_directory ... ok [INFO] [stdout] test safety_lock::files::tests::a_non_unicode_failure_is_named_reversibly ... ok [INFO] [stdout] test safety_lock::files::tests::repository_membership_is_stated_as_data ... ok [INFO] [stdout] test safety_lock::files::tests::a_relocated_symlink_target_is_a_new_identity ... ok [INFO] [stdout] test safety_lock::files::tests::the_diagnostic_names_the_mechanism_that_chose_the_path ... ok [INFO] [stdout] test safety_lock::files::tests::aliases_of_one_directory_resolve_to_one_identity ... ok [INFO] [stdout] test safety_lock::files::tests::each_unusable_class_produces_its_own_diagnostic ... ok [INFO] [stdout] test safety_lock::forget::tests::a_change_reports_whether_it_removed_anything ... ok [INFO] [stdout] test safety_lock::forget::tests::a_deleted_root_is_forgotten_by_its_exact_stored_spelling ... ok [INFO] [stdout] test safety_lock::forget::tests::a_duplicated_approval_is_repairable_by_forgetting_its_root ... ok [INFO] [stdout] test safety_lock::forget::tests::a_request_keeps_the_argument_bytes_it_was_given ... ok [INFO] [stdout] test safety_lock::forget::tests::a_duplicated_trust_file_is_repaired_through_the_production_routes ... ok [INFO] [stdout] test safety_lock::forget::tests::a_root_replaced_at_its_own_spelling_is_still_revocable ... ok [INFO] [stdout] test safety_lock::files::tests::every_implicit_root_requires_approval ... ok [INFO] [stdout] test safety_lock::files::tests::moving_a_root_changes_its_identity_and_replacing_it_in_place_does_not ... ok [INFO] [stdout] test safety_lock::forget::tests::aliases_resolve_against_a_real_filesystem ... ok [INFO] [stdout] test safety_lock::forget::tests::a_resolvable_parent_alias_revokes_what_it_resolves_to ... ok [INFO] [stdout] test safety_lock::forget::tests::an_alias_of_a_live_root_selects_its_approval ... ok [INFO] [stdout] test safety_lock::files::tests::without_a_git_top_level_the_current_directory_is_the_root ... ok [INFO] [stdout] test safety_lock::forget::tests::an_argument_that_cannot_name_a_root_says_so ... ok [INFO] [stdout] test safety_lock::forget::tests::moving_a_root_leaves_the_old_approval_revocable ... ok [INFO] [stdout] test safety_lock::forget::tests::the_canonical_rule_is_tried_before_the_stored_spelling ... ok [INFO] [stdout] test safety_lock::forget::tests::an_argument_that_matches_nothing_is_reported_not_failed ... ok [INFO] [stdout] test safety_lock::forget::tests::forgetting_one_lossy_colliding_root_leaves_the_other ... ok [INFO] [stdout] test safety_lock::forget::tests::an_unreadable_but_present_root_still_canonicalizes ... ok [INFO] [stdout] test safety_lock::inventory::tests::a_pack_that_breaks_an_inherited_label_is_named_for_it ... ok [INFO] [stdout] test safety_lock::inventory::tests::a_passing_gate_is_listed_under_the_name_the_root_carries ... ok [INFO] [stdout] test safety_lock::inventory::tests::a_root_that_cannot_be_routed_fails_rather_than_reporting_nothing ... ok [INFO] [stdout] test safety_lock::check::tests::lossy_colliding_roots_are_approved_independently ... ok [INFO] [stdout] test safety_lock::environment::tests::a_relative_value_is_refused_when_the_invocation_directory_is_relative ... ok [INFO] [stdout] test safety_lock::forget::tests::an_unusable_collection_the_argument_does_not_repair_is_reported ... ok [INFO] [stdout] test safety_lock::inventory::tests::category_labels_are_stable ... ok [INFO] [stdout] test safety_lock::inventory::tests::an_empty_root_inventories_to_nothing ... ok [INFO] [stdout] test safety_lock::inventory::tests::an_unknown_handler_counts_as_other ... ok [INFO] [stdout] test safety_lock::inventory::tests::categories_follow_handler_phases ... ok [INFO] [stdout] test safety_lock::inventory::tests::counts_stay_whole_when_paths_are_capped ... ok [INFO] [stdout] test safety_lock::inventory::tests::a_template_is_listed_by_its_source_name_without_being_rendered ... ok [INFO] [stdout] test safety_lock::inventory::tests::category_ordering_is_the_prompt_priority ... ok [INFO] [stdout] test safety_lock::inventory::tests::a_mapping_the_walk_never_consults_does_not_claim_another_failure ... ok [INFO] [stdout] test safety_lock::inventory::tests::detail_is_ordered_by_category_then_path ... ok [INFO] [stdout] test safety_lock::inventory::tests::custom_handler_mappings_are_honoured ... ok [INFO] [stdout] test safety_lock::inventory::tests::a_directory_entry_counts_once_and_is_not_descended_into ... ok [INFO] [stdout] test safety_lock::inventory::tests::configuration_the_walk_rejects_names_the_pack_config_file ... ok [INFO] [stdout] test safety_lock::inventory::tests::a_root_layer_a_pack_completes_is_not_an_error ... ok [INFO] [stdout] test safety_lock::inventory::tests::entries_sort_by_category_then_relative_path ... ok [INFO] [stdout] test safety_lock::inventory::tests::the_implementation_reads_no_candidate_contents ... ok [INFO] [stdout] test safety_lock::inventory::tests::every_recognized_file_lands_in_exactly_one_category ... ok [INFO] [stdout] test safety_lock::list::tests::an_empty_listing_is_a_state_not_an_error ... ok [INFO] [stdout] test safety_lock::list::tests::an_entry_prints_the_spelling_forget_accepts ... ok [INFO] [stdout] test safety_lock::inventory::tests::invalid_configuration_names_the_offending_file ... ok [INFO] [stdout] test safety_lock::inventory::tests::a_broken_root_is_named_even_when_the_pack_also_configures_gates ... ok [INFO] [stdout] test safety_lock::inventory::tests::detail_stops_at_ten_paths_and_counts_what_it_dropped ... ok [INFO] [stdout] test safety_lock::inventory::tests::packs_gated_off_this_host_are_not_counted ... ok [INFO] [stdout] test safety_lock::inventory::tests::configuration_inherited_from_the_root_names_the_root_config_file ... ok [INFO] [stdout] test safety_lock::list::tests::every_approved_root_lists_once_in_stored_order ... ok [INFO] [stdout] test safety_lock::list::tests::an_unusable_collection_is_reported_rather_than_listed_empty ... ok [INFO] [stdout] test safety_lock::list::tests::every_listed_spelling_reads_back_as_the_root_it_names ... ok [INFO] [stdout] test safety_lock::list::tests::existence_reflects_the_real_filesystem ... ok [INFO] [stdout] test safety_lock::list::tests::lossy_colliding_roots_list_as_two_distinguishable_entries ... ok [INFO] [stdout] test safety_lock::operation::tests::a_permitted_root_is_never_inventoried ... ok [INFO] [stdout] test safety_lock::list::tests::nothing_approved_lists_nothing ... ok [INFO] [stdout] test safety_lock::operation::tests::only_root_sensitive_mutation_requires_trust ... ok [INFO] [stdout] test safety_lock::operation::tests::operation_labels_name_the_kind ... ok [INFO] [stdout] test safety_lock::inventory::tests::what_deploys_nothing_is_not_counted ... ok [INFO] [stdout] test safety_lock::operation::tests::invalid_configuration_yields_no_approvable_outcome ... ok [INFO] [stdout] test safety_lock::operation::tests::a_non_root_sensitive_operation_consults_no_trust_state ... ok [INFO] [stdout] test safety_lock::roots::tests::containment_refuses_candidates_that_escape_through_parent_dirs ... ok [INFO] [stdout] test safety_lock::roots::tests::aliases_cannot_produce_a_second_identity_for_one_root ... ok [INFO] [stdout] test safety_lock::roots::tests::identities_never_collapse_on_a_lossy_rendering ... ok [INFO] [stdout] test safety_lock::roots::tests::identity_containment_covers_the_root_itself_and_its_children ... ok [INFO] [stdout] test safety_lock::roots::tests::both_selection_paths_produce_one_resolved_root_type ... ok [INFO] [stdout] test safety_lock::roots::tests::identity_displays_its_reversible_spelling ... ok [INFO] [stdout] test safety_lock::roots::tests::identity_parses_back_from_either_spelling ... ok [INFO] [stdout] test safety_lock::roots::tests::identity_deserialization_rejects_relative_and_malformed_spellings ... ok [INFO] [stdout] test safety_lock::roots::tests::identity_serializes_as_its_spelling ... ok [INFO] [stdout] test safety_lock::operation::tests::the_gate_stops_exactly_unapproved_implicit_root_sensitive_mutation ... ok [INFO] [stdout] test safety_lock::roots::tests::normalization_preserves_native_component_bytes ... ok [INFO] [stdout] test safety_lock::roots::tests::relative_paths_are_not_identities ... ok [INFO] [stdout] test safety_lock::schema::tests::a_malformed_entry_fails_the_load_instead_of_reading_as_empty ... ok [INFO] [stdout] test safety_lock::schema::tests::a_root_listed_twice_is_rejected ... ok [INFO] [stdout] test safety_lock::roots::tests::only_implicit_sources_require_approval ... ok [INFO] [stdout] test safety_lock::roots::tests::parent_dir_aliases_are_not_identities ... ok [INFO] [stdout] test safety_lock::roots::tests::source_labels_name_the_selecting_mechanism ... ok [INFO] [stdout] test safety_lock::schema::tests::a_failed_write_leaves_the_previous_approvals_intact ... FAILED [INFO] [stdout] test safety_lock::schema::tests::absent_file_loads_an_empty_collection ... ok [INFO] [stdout] test safety_lock::schema::tests::approval_lookup_is_exact ... ok [INFO] [stdout] test safety_lock::schema::tests::duplicate_roots_in_the_file_fail_the_production_load ... ok [INFO] [stdout] test safety_lock::schema::tests::persisted_state_loads_back_byte_for_byte ... ok [INFO] [stdout] test safety_lock::schema::tests::persisting_creates_the_data_directory ... ok [INFO] [stdout] test safety_lock::schema::tests::lossy_colliding_roots_persist_as_two_records ... ok [INFO] [stdout] test safety_lock::schema::tests::multiple_roots_round_trip_through_the_file ... ok [INFO] [stdout] test safety_lock::schema::tests::spelling_variants_of_one_root_are_caught_as_duplicates ... ok [INFO] [stdout] test safety_lock::schema::tests::the_trust_file_is_one_document_under_the_data_dir ... ok [INFO] [stdout] test safety_lock::scope::tests::a_baseline_with_no_source_path_is_stale_and_never_probed ... ok [INFO] [stdout] test safety_lock::schema::tests::the_default_matches_what_an_absent_file_loads ... ok [INFO] [stdout] test safety_lock::scope::tests::a_missing_source_is_reported_as_missing ... ok [INFO] [stdout] test safety_lock::scope::tests::a_relative_source_path_is_stale_and_never_probed ... ok [INFO] [stdout] test safety_lock::scope::tests::a_resolution_that_is_not_placeable_is_refused ... ok [INFO] [stdout] test safety_lock::inventory::tests::the_reported_defect_and_the_named_file_are_the_same_entry ... ok [INFO] [stdout] test safety_lock::scope::tests::a_source_that_cannot_be_resolved_is_reported_as_uncanonicalizable ... ok [INFO] [stdout] test safety_lock::scope::tests::a_symlink_out_of_the_root_escapes_the_mutation_set ... ok [INFO] [stdout] test safety_lock::scope::tests::an_empty_scope_authorizes_and_reports_nothing ... ok [INFO] [stdout] test safety_lock::scope::tests::an_in_root_symlink_is_authorized_at_its_resolved_path ... ok [INFO] [stdout] test safety_lock::scope::tests::authorizing_either_root_never_reaches_the_other ... ok [INFO] [stdout] test safety_lock::scope::tests::outcomes_stay_aligned_with_the_candidates ... ok [INFO] [stdout] test safety_lock::scope::tests::prefix_confusable_siblings_are_not_descendants ... ok [INFO] [stdout] test safety_lock::scope::tests::sources_inside_the_root_are_the_mutation_set ... ok [INFO] [stdout] test safety_lock::scope::tests::the_os_probe_scopes_a_real_directory ... ok [INFO] [stdout] test safety_lock::schema::tests::the_revocation_route_relaxes_the_duplicate_invariant_and_nothing_else ... ok [INFO] [stdout] test safety_lock::inventory::tests::the_layer_that_declared_the_failing_entry_is_the_one_named ... ok [INFO] [stdout] test safety_lock::scope::tests::another_roots_source_is_reported_not_written ... ok [INFO] [stdout] test safety_lock::schema::tests::the_generated_template_documents_the_approved_collection ... ok [INFO] [stdout] test safety_lock::selection::tests::an_unusable_implicit_candidate_fails_the_whole_selection ... ok [INFO] [stdout] test safety_lock::schema::tests::racing_transactions_lose_no_update ... ok [INFO] [stdout] test safety_lock::selection::tests::a_broken_explicit_root_never_reaches_implicit_selection ... ok [INFO] [stdout] test safety_lock::selection::tests::the_resolved_root_is_carried_rather_than_rediscovered ... ok [INFO] [stdout] test safety_lock::selection::tests::an_explicit_root_outranks_both_implicit_mechanisms ... ok [INFO] [stdout] test safety_lock::selection::tests::the_whole_order_holds_against_a_real_filesystem ... ok [INFO] [stdout] test safety_lock::selection::tests::selection_never_reads_the_process_environment ... ok [INFO] [stdout] test safety_lock::selection::tests::both_selection_paths_see_one_captured_invocation_directory ... ok [INFO] [stdout] test safety_lock::operation::tests::passing_the_gate_never_establishes_trust ... ok [INFO] [stdout] test safety_lock::selection::tests::one_invocation_canonicalizes_exactly_once ... ok [INFO] [stdout] test safety_lock::operation::tests::the_confirmation_inventory_is_root_wide_not_command_scoped ... ok [INFO] [stdout] test safety_lock::util::tests::non_unicode_paths_spell_tagged_and_round_trip ... ok [INFO] [stdout] test safety_lock::util::tests::os_probe_canonicalizes_and_reports_readable_dirs ... ok [INFO] [stdout] test safety_lock::util::tests::os_probe_rejects_a_directory_it_can_list_but_not_walk ... ok [INFO] [stdout] test safety_lock::selection::tests::without_an_explicit_root_the_git_top_level_wins ... ok [INFO] [stdout] test safety_lock::selection::tests::without_git_the_current_directory_is_the_root ... ok [INFO] [stdout] test safety_lock::util::tests::a_relative_candidate_is_refused_without_touching_the_filesystem ... ok [INFO] [stdout] test safety_lock::util::tests::lossy_collisions_keep_distinct_spellings ... ok [INFO] [stdout] test safety_lock::util::tests::non_hex_tagged_spelling_is_rejected ... ok [INFO] [stdout] test safety_lock::util::tests::truncated_tagged_spelling_is_rejected ... ok [INFO] [stdout] test secret::bw::tests::parse_reference_defaults_to_password_when_no_fragment ... ok [INFO] [stdout] test safety_lock::util::tests::utf8_paths_round_trip ... ok [INFO] [stdout] test secret::bw::tests::parse_reference_extracts_explicit_field ... ok [INFO] [stdout] test safety_lock::util::tests::os_probe_separates_being_a_directory_from_being_readable ... ok [INFO] [stdout] test secret::bw::tests::probe_not_authenticated_when_unauthenticated ... ok [INFO] [stdout] test secret::bw::tests::probe_not_authenticated_when_vault_locked ... ok [INFO] [stdout] test safety_lock::util::tests::plain_text_starting_with_the_tag_is_encoded_not_confused ... ok [INFO] [stdout] test secret::bw::tests::probe_not_installed_when_runner_errors ... ok [INFO] [stdout] test secret::bw::tests::parse_reference_rejects_empty_item ... ok [INFO] [stdout] test secret::bw::tests::parse_reference_rejects_unsupported_field ... ok [INFO] [stdout] test secret::bw::tests::parse_reference_rejects_empty_suffix ... ok [INFO] [stdout] test secret::bw::tests::probe_failed_when_status_output_unrecognized ... ok [INFO] [stdout] test secret::bw::tests::probe_ok_when_binary_present_and_vault_unlocked ... ok [INFO] [stdout] test secret::bw::tests::resolve_maps_not_found_to_actionable_message ... ok [INFO] [stdout] test secret::bw::tests::resolve_passes_through_unrecognized_stderr ... ok [INFO] [stdout] test secret::error_render::tests::preflight_succeeds_on_empty_registry ... ok [INFO] [stdout] test secret::error_render::tests::preflight_succeeds_when_all_providers_ok ... ok [INFO] [stdout] test secret::bw::tests::resolve_strips_exactly_one_trailing_newline ... ok [INFO] [stdout] test secret::error_render::tests::render_misconfigured_surfaces_provider_hint_verbatim ... ok [INFO] [stdout] test secret::bw::tests::resolve_default_field_invokes_bw_get_password ... ok [INFO] [stdout] test secret::error_render::tests::preflight_aggregates_multiple_failures_into_one_message ... ok [INFO] [stdout] test secret::bw::tests::resolve_explicit_field_routes_to_correct_subcommand ... ok [INFO] [stdout] test safety_lock::util::tests::utf8_paths_spell_plainly ... ok [INFO] [stdout] test secret::error_render::tests::render_not_authenticated_surfaces_provider_hint ... ok [INFO] [stdout] test secret::error_render::tests::preflight_fails_with_aggregated_message_when_one_provider_fails ... ok [INFO] [stdout] test secret::error_render::tests::render_not_installed_uses_underscore_key_for_secret_tool ... ok [INFO] [stdout] test secret::keychain::tests::parse_reference_rejects_trailing_slash ... ok [INFO] [stdout] test secret::error_render::tests::render_ok_returns_empty_string ... ok [INFO] [stdout] test secret::keychain::tests::parse_reference_service_and_account ... ok [INFO] [stdout] test secret::error_render::tests::render_not_installed_includes_install_hint_and_disable_pointer ... ok [INFO] [stdout] test secret::keychain::tests::parse_reference_rejects_empty_suffix ... ok [INFO] [stdout] test secret::keychain::tests::resolve_maps_exit_44_to_not_found_with_actionable_hint ... ok [INFO] [stdout] test secret::keychain::tests::resolve_maps_exit_51_to_locked_keychain_diagnostic ... ok [INFO] [stdout] test secret::keychain::tests::probe_failed_when_default_keychain_returns_nonzero ... ok [INFO] [stdout] test secret::keychain::tests::resolve_not_found_qualifier_includes_account_when_provided ... ok [INFO] [stdout] test secret::keychain::tests::probe_not_installed_when_runner_errors ... ok [INFO] [stdout] test secret::keychain::tests::resolve_with_account_threads_account_into_args ... ok [INFO] [stdout] test secret::op::tests::probe_not_authenticated_when_no_service_token_in_env ... ok [INFO] [stdout] test secret::error_render::tests::render_probe_failed_includes_debug_pointer ... ok [INFO] [stdout] test secret::op::tests::probe_not_authenticated_when_whoami_fails_despite_token ... ok [INFO] [stdout] test secret::keychain::tests::parse_reference_rejects_empty_service ... ok [INFO] [stdout] test secret::op::tests::resolve_handles_value_without_trailing_newline ... ok [INFO] [stdout] test secret::op::tests::probe_not_installed_when_op_binary_missing ... ok [INFO] [stdout] test secret::keychain::tests::resolve_passes_through_unrecognized_stderr ... ok [INFO] [stdout] test secret::op::tests::probe_ok_when_binary_present_token_set_and_whoami_succeeds ... ok [INFO] [stdout] test secret::op::tests::resolve_maps_authentication_failures_to_token_hint ... ok [INFO] [stdout] test secret::op::tests::resolve_maps_isnt_an_item_to_actionable_error ... ok [INFO] [stdout] test secret::op::tests::resolve_other_failures_include_stderr ... ok [INFO] [stdout] test secret::op::tests::resolve_rejects_reference_without_double_slash ... ok [INFO] [stdout] test secret::keychain::tests::parse_reference_service_only ... ok [INFO] [stdout] test secret::keychain::tests::probe_ok_when_security_present_and_default_keychain_resolves ... ok [INFO] [stdout] test secret::pass::tests::parent_path_strips_last_segment ... ok [INFO] [stdout] test secret::pass::tests::probe_misconfigured_when_store_uninitialised ... ok [INFO] [stdout] test secret::pass::tests::probe_not_installed_when_runner_errors ... ok [INFO] [stdout] test secret::bw::tests::resolve_maps_locked_vault_to_lock_diagnostic ... ok [INFO] [stdout] test secret::keychain::tests::resolve_service_only_invokes_find_generic_password_correctly ... ok [INFO] [stdout] test secret::op::tests::resolve_rejects_too_few_segments ... ok [INFO] [stdout] test secret::keychain::tests::resolve_strips_exactly_one_trailing_newline ... ok [INFO] [stdout] test secret::op::tests::resolve_strips_one_trailing_newline_from_stdout ... ok [INFO] [stdout] test secret::op::tests::scheme_is_op ... ok [INFO] [stdout] test secret::pass::tests::probe_ok_when_binary_present_and_store_initialised ... ok [INFO] [stdout] test secret::pass::tests::probe_failed_on_nonzero_version_exit ... ok [INFO] [stdout] test secret::pass::tests::resolve_accepts_double_dot_inside_a_segment ... ok [INFO] [stdout] test secret::pass::tests::resolve_rejects_empty_reference ... ok [INFO] [stdout] test secret::pass::tests::resolve_rejects_dotdot_in_middle_segment ... ok [INFO] [stdout] test secret::registry::tests::cache_is_independent_between_separate_registry_constructions ... ok [INFO] [stdout] test secret::pass::tests::resolve_rejects_dotdot_reference ... ok [INFO] [stdout] test secret::pass::tests::resolve_other_failures_include_stderr_verbatim ... ok [INFO] [stdout] test secret::pass::tests::resolve_returns_first_line_of_pass_show_output ... ok [INFO] [stdout] test secret::pass::tests::scheme_is_pass ... ok [INFO] [stdout] test secret::registry::tests::cache_is_shared_between_clones_of_the_same_registry ... ok [INFO] [stdout] test secret::registry::tests::cache_get_returns_none_until_cache_put_populates_it ... ok [INFO] [stdout] test secret::registry::tests::registry_dispatches_to_correct_provider ... ok [INFO] [stdout] test secret::pass::tests::resolve_handles_value_without_trailing_newline ... ok [INFO] [stdout] test secret::registry::tests::registry_has_and_schemes_reflect_registered_providers ... ok [INFO] [stdout] test secret::registry::tests::registry_register_replaces_same_scheme ... ok [INFO] [stdout] test secret::pass::tests::resolve_maps_not_in_store_to_actionable_error ... ok [INFO] [stdout] test secret::provider::tests::probe_result_is_ok_only_for_ok_variant ... ok [INFO] [stdout] test secret::registry::tests::missing_provider_error_uses_underscore_key_for_secret_tool ... ok [INFO] [stdout] test secret::registry::tests::split_scheme_handles_op_uri_form ... ok [INFO] [stdout] test secret::registry::tests::split_scheme_handles_pass_single_colon ... ok [INFO] [stdout] test secret::secret_string::tests::contains_newline_detects_multiline_for_section_3_4 ... ok [INFO] [stdout] test secret::registry::tests::split_scheme_handles_sops_with_fragment ... ok [INFO] [stdout] test secret::registry::tests::scheme_to_config_key_maps_only_secret_tool ... ok [INFO] [stdout] test secret::secret_string::tests::debug_does_not_leak_value ... ok [INFO] [stdout] test secret::secret_string::tests::drop_zeroes_underlying_bytes ... ok [INFO] [stdout] test secret::secret_string::tests::empty_secret_is_well_behaved ... ok [INFO] [stdout] test secret::secret_string::tests::from_bytes_supports_non_utf8_payload ... ok [INFO] [stdout] test secret::secret_tool::tests::parse_reference_rejects_trailing_slash ... ok [INFO] [stdout] test secret::secret_tool::tests::parse_reference_rejects_empty_service ... ok [INFO] [stdout] test secret::secret_tool::tests::parse_reference_service_and_account ... ok [INFO] [stdout] test secret::secret_tool::tests::parse_reference_rejects_empty_suffix ... ok [INFO] [stdout] test secret::registry::tests::split_scheme_rejects_empty_scheme ... ok [INFO] [stdout] test secret::registry::tests::split_scheme_rejects_no_colon_with_actionable_message ... ok [INFO] [stdout] test secret::secret_string::tests::new_and_expose_round_trip ... ok [INFO] [stdout] test secret::secret_tool::tests::resolve_maps_locked_keyring_to_actionable_diagnostic ... ok [INFO] [stdout] test secret::secret_tool::tests::resolve_maps_exit_1_empty_stderr_to_not_found ... ok [INFO] [stdout] test secret::secret_tool::tests::resolve_passes_through_unrecognized_stderr ... ok [INFO] [stdout] test secret::secret_tool::tests::resolve_service_only_invokes_lookup_correctly ... ok [INFO] [stdout] test secret::registry::tests::registry_resolve_does_not_consult_or_populate_cache ... ok [INFO] [stdout] test secret::registry::tests::registry_unknown_scheme_lists_configured_schemes_in_error ... ok [INFO] [stdout] test secret::secret_tool::tests::resolve_not_found_qualifier_includes_account_when_provided ... ok [INFO] [stdout] test secret::sops::tests::parse_reference_escapes_quotes_and_backslashes_in_segments ... ok [INFO] [stdout] test secret::secret_tool::tests::parse_reference_service_only ... ok [INFO] [stdout] test secret::secret_tool::tests::probe_failed_when_version_returns_nonzero ... ok [INFO] [stdout] test secret::sops::tests::parse_reference_keeps_absolute_paths_unchanged ... ok [INFO] [stdout] test secret::secret_tool::tests::probe_not_installed_when_runner_errors ... ok [INFO] [stdout] test secret::secret_tool::tests::resolve_keeps_value_intact_when_no_trailing_newline ... ok [INFO] [stdout] test secret::secret_tool::tests::resolve_with_account_threads_account_attribute ... ok [INFO] [stdout] test secret::sops::tests::probe_failed_when_version_returns_nonzero ... ok [INFO] [stdout] test secret::sops::tests::parse_reference_rejects_empty_key_path ... ok [INFO] [stdout] test secret::sops::tests::parse_reference_rejects_empty_segment ... ok [INFO] [stdout] test secret::secret_tool::tests::resolve_strips_one_trailing_newline_when_present ... ok [INFO] [stdout] test secret::secret_tool::tests::probe_ok_when_binary_present ... ok [INFO] [stdout] test secret::sops::tests::parse_reference_rejects_missing_fragment ... ok [INFO] [stdout] test secret::sops::tests::parse_reference_rejects_empty_file_name ... ok [INFO] [stdout] test secret::sops::tests::parse_reference_anchors_relative_paths_at_dotfiles_root ... ok [INFO] [stdout] test secret::sops::tests::resolve_maps_decrypt_failure_to_key_diagnostic ... ok [INFO] [stdout] test secret::sops::tests::resolve_maps_missing_file_to_actionable_message ... ok [INFO] [stdout] test secret::sops::tests::resolve_maps_missing_key_path_to_yq_hint ... ok [INFO] [stdout] test secret::sops::tests::resolve_passes_through_unrecognized_stderr_with_command_context ... ok [INFO] [stdout] test secret::sops::tests::resolve_maps_unencrypted_file_to_encrypt_in_place_hint ... ok [INFO] [stdout] test secret::sops::tests::probe_not_installed_when_runner_errors ... ok [INFO] [stdout] test secret::test_support::tests::mock_returns_canned_value ... ok [INFO] [stdout] test secret::test_support::tests::mock_unknown_reference_errors_clearly ... ok [INFO] [stdout] test secret::test_support::tests::panicking_provider_panics_on_resolve - should panic ... ok [INFO] [stdout] test secret::test_support::tests::panicking_provider_probe_is_ok ... ok [INFO] [stdout] test shell::activation::tests::a_contribution_less_script_says_so_instead_of_claiming_health ... ok [INFO] [stdout] test secret::sops::tests::resolve_strips_exactly_one_trailing_newline ... ok [INFO] [stdout] test secret::sops::tests::parse_reference_translates_dot_path_to_bracket_extract ... ok [INFO] [stdout] test secret::test_support::tests::mock_with_probe_overrides_default_ok ... ok [INFO] [stdout] test secret::test_support::tests::mock_counts_resolve_invocations ... ok [INFO] [stdout] test shell::activation::tests::a_disagreement_without_an_mtime_still_names_both_dodots ... ok [INFO] [stdout] test shell::activation::tests::a_heartbeat_splits_into_generation_and_version ... ok [INFO] [stdout] test shell::activation::tests::a_skewed_stamp_beside_a_newer_heartbeat_keeps_both_events_intact ... ok [INFO] [stdout] test shell::activation::tests::a_version_less_signal_renders_as_the_bound_not_as_unknown ... ok [INFO] [stdout] test shell::activation::tests::a_stamp_without_a_heartbeat_reports_an_unknown_time ... ok [INFO] [stdout] test shell::activation::tests::a_disagreement_reports_two_events_never_one_blended_from_both ... ok [INFO] [stdout] test shell::activation::tests::a_version_less_heartbeat_reports_skew_against_the_bound ... ok [INFO] [stdout] test shell::activation::tests::agreeing_signals_render_a_single_event ... ok [INFO] [stdout] test secret::sops::tests::probe_ok_when_binary_present ... ok [INFO] [stdout] test secret::sops::tests::resolve_dispatches_decrypt_extract_with_correct_args ... ok [INFO] [stdout] test shell::activation::tests::a_corrupt_heartbeat_is_not_a_pre_version_activation ... ok [INFO] [stdout] test shell::activation::tests::an_unreadable_mtime_says_so_instead_of_guessing ... ok [INFO] [stdout] test shell::activation::tests::never_activated_is_prominent_and_names_the_manual_hook ... ok [INFO] [stdout] test shell::activation::tests::evaluation_covers_the_full_stamp_by_heartbeat_by_tty_matrix ... ok [INFO] [stdout] test shell::activation::tests::every_state_renders_its_pinned_two_lines ... ok [INFO] [stdout] test shell::activation::tests::stale_shell_says_open_a_new_shell ... ok [INFO] [stdout] test shell::activation::tests::stamp_classification_covers_generation_comparisons ... ok [INFO] [stdout] test shell::activation::tests::the_healthy_footer_reads_as_the_spec_tabulates_it ... ok [INFO] [stdout] test shell::activation::tests::heartbeat_classification_covers_generation_comparisons ... ok [INFO] [stdout] test shell::activation::tests::shell_not_loaded_lets_the_rc_scan_pick_the_next_step ... ok [INFO] [stdout] test shell::activation::tests::skew_is_a_version_mismatch_never_staleness_alone ... ok [INFO] [stdout] test shell::activation::tests::hook_line_outside_home_stays_absolute ... ok [INFO] [stdout] test shell::homebrew::tests::a_blank_home_contributes_no_per_user_candidate ... ok [INFO] [stdout] test shell::homebrew::tests::a_non_utf8_prefix_env_still_leads_the_candidates ... ok [INFO] [stdout] test shell::homebrew::tests::a_relative_prefix_or_home_is_dropped_rather_than_resolved_against_the_cwd ... ok [INFO] [stdout] test shell::activation::tests::script_generation_is_read_back_from_the_export_line ... ok [INFO] [stdout] test shell::homebrew::tests::absent_brew_stays_silent_and_clears_the_cache ... ok [INFO] [stdout] test shell::activation::tests::unparseable_signals_read_as_absent_not_zero ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_trace_elapsed_includes_legacy_eval_capability_negotiation ... ok [INFO] [stdout] test shell::homebrew::tests::both_linuxbrew_prefixes_are_probed_in_installer_order ... ok [INFO] [stdout] test shell::activation::tests::a_corrupt_heartbeat_reads_as_no_activation_on_every_axis ... ok [INFO] [stdout] test shell::activation::tests::last_loaded_comes_from_the_heartbeat_mtime_not_its_contents ... ok [INFO] [stdout] test shell::homebrew::tests::brew_absent_is_silent_absence ... ok [INFO] [stdout] test shell::homebrew::tests::a_warm_linuxbrew_cache_is_served_without_spawning_brew ... ok [INFO] [stdout] test shell::homebrew::tests::captured_output_is_emitted_byte_for_byte ... ok [INFO] [stdout] test shell::homebrew::tests::cache_round_trips_the_capture_byte_for_byte ... ok [INFO] [stdout] test shell::homebrew::tests::a_linuxbrew_install_is_captured_like_any_other ... ok [INFO] [stdout] test shell::homebrew::tests::detection_probes_the_injected_home_not_the_process_env ... ok [INFO] [stdout] test shell::homebrew::tests::cache_for_another_prefix_is_invalidated_not_served ... ok [INFO] [stdout] test shell::homebrew::tests::a_non_executable_brew_is_not_a_brew ... ok [INFO] [stdout] test shell::homebrew::tests::cache_miss_captures_live_and_does_not_persist ... ok [INFO] [stdout] test shell::homebrew::tests::failed_answer_never_serves_a_mismatched_prefix_cache ... ok [INFO] [stdout] test shell::homebrew::tests::brew_that_fails_to_spawn_is_a_finding_carrying_the_error ... ok [INFO] [stdout] test shell::homebrew::tests::capture_asks_brew_once_per_shell_dialect ... ok [INFO] [stdout] test shell::homebrew::tests::corrupt_cache_is_a_miss_not_an_error ... ok [INFO] [stdout] test shell::homebrew::tests::brew_that_fails_to_answer_is_a_finding_not_an_absence ... ok [INFO] [stdout] test shell::homebrew::tests::mode_parses_its_vocabulary_and_rejects_the_rest ... ok [INFO] [stdout] test shell::homebrew::tests::homebrew_prefix_env_leads_the_candidates ... ok [INFO] [stdout] test shell::homebrew::tests::failed_answer_with_no_cache_warns_and_emits_nothing ... ok [INFO] [stdout] test shell::homebrew::tests::failed_answer_warns_and_keeps_the_previous_capture ... ok [INFO] [stdout] test shell::homebrew::tests::persist_replaces_the_cache_by_rename_not_by_truncating_it ... ok [INFO] [stdout] test shell::homebrew::tests::persist_leaves_no_temp_file_behind ... ok [INFO] [stdout] test shell::homebrew::tests::persisting_an_empty_capture_clears_the_cache ... ok [INFO] [stdout] test shell::homebrew::tests::one_failing_dialect_fails_the_capture_and_names_itself ... ok [INFO] [stdout] test shell::homebrew::tests::one_failing_dialect_warns_and_keeps_instead_of_stripping_both ... ok [INFO] [stdout] test shell::homebrew::tests::unset_or_blank_prefix_env_leaves_the_defaults ... ok [INFO] [stdout] test shell::path_attribution::tests::header_only_content_parses_to_no_entries ... ok [INFO] [stdout] test shell::homebrew::tests::off_ignores_a_warm_cache ... ok [INFO] [stdout] test shell::path_attribution::tests::parses_header_and_rows ... ok [INFO] [stdout] test shell::path_attribution::tests::skips_malformed_rows ... ok [INFO] [stdout] test shell::homebrew::tests::zsh_only_lines_stay_under_the_zsh_guard ... ok [INFO] [stdout] test shell::path_attribution::tests::tolerates_a_missing_header ... ok [INFO] [stdout] test shell::homebrew::tests::silent_exit_zero_still_carries_brews_stderr ... ok [INFO] [stdout] test shell::probe::tests::a_failed_measurement_with_nothing_to_degrade_to_stays_silent ... ok [INFO] [stdout] test shell::homebrew::tests::first_candidate_holding_brew_wins ... ok [INFO] [stdout] test shell::probe::tests::a_current_stamp_is_a_measured_verification ... ok [INFO] [stdout] test shell::homebrew::tests::successful_capture_persists_and_carries_no_warning ... ok [INFO] [stdout] test shell::homebrew::tests::off_emits_nothing_and_never_spawns_brew ... ok [INFO] [stdout] test shell::probe::tests::a_measured_skew_outranks_an_empty_script ... ok [INFO] [stdout] test shell::probe::tests::a_failed_measurement_degrades_to_the_evidence_notice ... ok [INFO] [stdout] test shell::homebrew::tests::warm_cache_emits_without_spawning_brew ... ok [INFO] [stdout] test shell::probe::tests::a_stale_sourced_script_is_reported_as_such ... ok [INFO] [stdout] test shell::probe::tests::a_measured_activation_of_an_empty_script_is_not_reported_healthy ... ok [INFO] [stdout] test shell::probe::tests::a_current_generation_from_another_dodot_is_skew_not_health ... ok [INFO] [stdout] test shell::probe::tests::no_stamp_from_a_known_capable_hook_blames_the_rc_file ... ok [INFO] [stdout] test shell::probe::tests::no_stamp_from_an_unknown_capability_hook_is_inconclusive ... ok [INFO] [stdout] test shell::probe::tests::no_stamp_plus_no_hook_names_the_file_and_the_command ... ok [INFO] [stdout] test shell::probe::tests::a_shell_that_cannot_be_run_is_a_couldnt_verify_not_a_panic ... ok [INFO] [stdout] test shell::probe::tests::no_stamp_without_static_hook_context_is_inconclusive ... ok [INFO] [stdout] test shell::probe::tests::only_the_init_stamp_family_is_scrubbed ... ok [INFO] [stdout] test shell::probe::tests::skew_outranks_a_stale_generation_the_way_the_evidence_path_does ... ok [INFO] [stdout] test shell::probe::tests::a_shell_with_no_hook_reports_no_stamp ... ok [INFO] [stdout] test shell::probe::tests::disconnected_stderr_waits_instead_of_spinning ... ok [INFO] [stdout] test shell::probe::tests::rc_noise_and_a_nonzero_exit_do_not_fail_a_successful_probe ... FAILED [INFO] [stdout] test commands::tests::probe::probe_shell_init_trace_reports_a_hook_the_shell_never_reaches ... ok [INFO] [stdout] test shell::probe::tests::targeted_response_is_found_after_trailing_output_is_drained ... ok [INFO] [stdout] test shell::probe::tests::targeted_response_requires_nonce_and_direct_child_identity ... ok [INFO] [stdout] test shell::probe::tests::stderr_stop_does_not_wait_for_a_descendant_retaining_stdout ... ok [INFO] [stdout] test shell::probe::tests::a_shell_that_activates_reports_both_halves_of_the_stamp ... ok [INFO] [stdout] test shell::probe::tests::the_announcement_names_the_shell_being_run ... ok [INFO] [stdout] test shell::probe::tests::the_bound_release_does_not_claim_skew_on_a_version_less_stamp ... ok [INFO] [stdout] test shell::probe::tests::the_gate_fires_only_when_both_cheap_signals_are_inconclusive ... ok [INFO] [stdout] test shell::probe::tests::the_stamp_is_read_out_of_arbitrary_rc_noise ... ok [INFO] [stdout] test shell::probe::tests::timeout_from_a_known_capable_hook_is_broken ... ok [INFO] [stdout] test shell::rc::tests::a_commented_chain_does_not_count ... ok [INFO] [stdout] test shell::rc::tests::a_half_written_block_is_appended_to_not_spliced_into ... ok [INFO] [stdout] test shell::probe::tests::a_shell_activating_another_dodot_measures_as_skew ... ok [INFO] [stdout] test shell::probe::tests::primary_trace_spawn_finishes_under_a_pty ... ok [INFO] [stdout] test shell::rc::tests::block_is_created_appended_replaced_and_then_left_alone ... ok [INFO] [stdout] test shell::rc::tests::bash_chain_is_needed_until_some_profile_sources_bashrc ... ok [INFO] [stdout] test shell::rc::tests::content_around_the_block_survives_a_replacement ... ok [INFO] [stdout] test shell::rc::tests::a_symlinked_rc_is_written_through_and_announced ... ok [INFO] [stdout] test shell::rc::tests::scan_tells_managed_manual_and_absent_apart ... ok [INFO] [stdout] test shell::probe::tests::stderr_stop_matches_each_line_and_retains_complete_diagnostics ... ok [INFO] [stdout] test shell::rc::tests::shell_detection_reads_the_basename_and_refuses_the_rest ... ok [INFO] [stdout] test shell::rc::tests::zdotdir_is_peeked_out_of_zshenv_when_the_environment_is_silent ... ok [INFO] [stdout] test shell::rc::tests::explicit_rc_overrides_the_whole_ladder ... ok [INFO] [stdout] test shell::rc::tests::zdotdir_parsing_handles_quotes_comments_and_overrides ... ok [INFO] [stdout] test shell::rc::tests::write_block_creates_the_file_and_stays_idempotent_on_disk ... ok [INFO] [stdout] test shell::rc::tests::zsh_targets_zshrc_and_bash_targets_bashrc ... ok [INFO] [stdout] test shell::rc::tests::scanning_a_missing_file_is_absent_not_an_error ... ok [INFO] [stdout] test shell::rc::tests::zdotdir_from_the_environment_moves_the_target_and_is_announced ... ok [INFO] [stdout] test shell::activation::tests::end_to_end_generation_matrix_through_collected_evidence ... ok [INFO] [stdout] test shell::tests::an_empty_script_is_readable_as_having_no_contributions ... ok [INFO] [stdout] test shell::tests::eval_probe_response_contains_no_ordinary_init_body ... ok [INFO] [stdout] test shell::tests::empty_datastore_produces_helpful_script ... ok [INFO] [stdout] test shell::tests::a_linuxbrew_block_is_emitted_first_and_verbatim ... ok [INFO] [stdout] test shell::tests::evidence_costs_two_exports_and_one_redirect ... ok [INFO] [stdout] test shell::tests::diagnostic_trace_mode_precedes_and_guards_mutating_evidence ... ok [INFO] [stdout] test shell::tests::evidence_is_emitted_unconditionally_in_every_script_shape ... ok [INFO] [stdout] test shell::tests::diagnostic_trace_mode_stays_sticky_across_repeated_sources ... ok [INFO] [stdout] test shell::tests::homebrew_tier_stays_below_a_pack_even_when_the_pack_sorts_first ... ok [INFO] [stdout] test shell::tests::homebrew_block_survives_an_empty_datastore ... ok [INFO] [stdout] test shell::tests::homebrew_block_precedes_the_first_pack_path_addition ... ok [INFO] [stdout] test shell::tests::loud_failure_wrapper_present_in_both_modes ... ok [INFO] [stdout] test shell::tests::concurrent_sources_leave_an_intact_heartbeat ... ok [INFO] [stdout] test shell::tests::no_capture_means_no_homebrew_lines_at_all ... ok [INFO] [stdout] test shell::tests::multiple_packs_combined ... ok [INFO] [stdout] test shell::tests::init_script_is_replaced_by_rename_not_truncated_in_place ... ok [INFO] [stdout] test shell::tests::ignores_non_symlink_files_in_handler_dirs ... ok [INFO] [stdout] test shell::tests::path_attribution_diff_does_not_use_command_substitution ... ok [INFO] [stdout] test shell::tests::pinned_three_pack_worked_example_from_spec_2_3 ... ok [INFO] [stdout] test shell::tests::path_handler_state_produces_path_lines ... ok [INFO] [stdout] test shell::tests::path_additions_come_before_shell_sources ... ok [INFO] [stdout] test shell::probe::tests::targeted_marker_spawn_finishes_under_a_pty ... ok [INFO] [stdout] test shell::tests::profiled_source_initialises_rc_so_missing_file_isnt_reported_as_failure ... ok [INFO] [stdout] test shell::tests::profiling_captures_source_stderr_into_errors_log ... ok [INFO] [stdout] test shell::tests::profiling_enabled_with_empty_datastore_skips_preamble ... ok [INFO] [stdout] test shell::tests::profiling_disabled_omits_the_profile_wrapper ... ok [INFO] [stdout] test shell::tests::profiling_enabled_emits_runtime_gated_preamble ... ok [INFO] [stdout] test shell::tests::profiling_enabled_wraps_each_source_with_else_path ... ok [INFO] [stdout] test shell::tests::profiling_epilogue_writes_end_marker_and_unsets_state ... ok [INFO] [stdout] test shell::tests::raw_path_mixed_change_attributes_only_newly_introduced_entries ... ok [INFO] [stdout] test shell::tests::raw_path_prepend_of_mixed_new_and_existing_attributes_only_the_new_entry ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_trace_end_to_end_names_the_stale_binary_and_the_skips ... ok [INFO] [stdout] test shell::tests::raw_path_mutation_survives_and_is_attributed_to_its_pack ... ok [INFO] [stdout] test shell::tests::generated_script_parses_in_sh_bash_and_zsh ... ok [INFO] [stdout] test shell::tests::raw_path_prepend_of_already_present_entry_produces_no_attribution_row ... ok [INFO] [stdout] test shell::tests::shell_quoting_handles_paths_with_single_quotes ... ok [INFO] [stdout] test shell::tests::script_regenerated_reflects_current_state ... ok [INFO] [stdout] test shell::tests::shell_handler_state_produces_source_lines ... ok [INFO] [stdout] test shell::tests::real_shell_composes_the_pinned_path_matching_the_rust_computed_value ... ok [INFO] [stdout] test shell::tests::raw_path_removal_produces_no_attribution_row ... ok [INFO] [stdout] test shell::tests::targeted_probe_branch_precedes_activation_evidence ... ok [INFO] [stdout] test shell::tests::raw_path_replacement_attributes_only_the_new_entry ... ok [INFO] [stdout] test shell::tests::raw_path_append_attributes_only_the_new_entry ... ok [INFO] [stdout] test shell::tests::sourcing_the_script_exports_the_stamp_and_writes_the_heartbeat ... ok [INFO] [stdout] test shell::tests::stale_pack_duplicating_the_homebrew_bin_dir_is_dropped_from_the_packs_tier ... ok [INFO] [stdout] test shell::tests::shell_scripts_that_do_not_touch_path_produce_no_attribution_row ... ok [INFO] [stdout] test shell::tests::sourcing_under_sh_takes_the_sh_branch_of_the_homebrew_block ... ok [INFO] [stdout] test shell::tests::the_evidence_block_precedes_the_homebrew_block_precedes_the_packs ... ok [INFO] [stdout] test shell::trace::tests::a_commented_hook_is_no_hook ... ok [INFO] [stdout] test shell::trace::tests::a_line_dodot_cannot_read_resolves_to_nothing_rather_than_a_guess ... ok [INFO] [stdout] test shell::tests::two_packs_staging_the_same_directory_produce_one_entry ... ok [INFO] [stdout] test shell::trace::tests::a_marker_less_trace_yields_no_records ... ok [INFO] [stdout] test shell::tests::write_init_script_creates_executable_file ... ok [INFO] [stdout] test shell::tests::the_heartbeat_write_survives_noclobber_in_every_shell ... ok [INFO] [stdout] test shell::tests::write_init_script_stamps_generation_and_creates_heartbeat_dir ... ok [INFO] [stdout] test shell::trace::tests::a_path_that_is_not_a_readable_file_is_not_a_present_script ... ok [INFO] [stdout] test shell::trace::tests::a_script_written_by_another_dodot_is_skew_not_soundness ... ok [INFO] [stdout] test shell::trace::tests::a_real_zsh_reports_path_at_the_hook_line_via_zdotdir ... ok [INFO] [stdout] test shell::trace::tests::a_script_older_than_the_one_up_maintains_is_stale_not_sound ... ok [INFO] [stdout] test shell::tests::generated_scripts_do_not_leave_trace_state_in_the_shell ... ok [INFO] [stdout] test shell::trace::tests::an_unstamped_file_is_unverified_never_sound ... ok [INFO] [stdout] test shell::trace::tests::a_dangling_symlink_is_reported_never_silently_skipped ... ok [INFO] [stdout] test shell::trace::tests::an_unrunnable_shell_is_an_error_not_a_panic ... ok [INFO] [stdout] test shell::trace::tests::find_hook_names_line_and_form ... ok [INFO] [stdout] test shell::trace::tests::empty_path_components_search_the_working_directory ... ok [INFO] [stdout] test shell::trace::tests::nested_records_with_repeated_plus_signs_still_parse ... ok [INFO] [stdout] test shell::trace::tests::record_parsing_rejects_near_misses ... ok [INFO] [stdout] test shell::trace::tests::missing_dirs_and_non_executables_are_classified ... ok [INFO] [stdout] test shell::trace::tests::report_only_copy_stops_before_the_hook ... ok [INFO] [stdout] test shell::trace::tests::relative_path_components_resolve_against_the_traced_directory ... ok [INFO] [stdout] test shell::trace::tests::report_only_hold_terminates_with_parent_liveness_in_bash ... ok [INFO] [stdout] test shell::trace::tests::report_only_hold_terminates_with_parent_liveness_in_zsh ... ok [INFO] [stdout] test shell::trace::tests::report_only_hold_avoids_multi_digit_redirection_in_dash ... ok [INFO] [stdout] test shell::trace::tests::report_only_hold_uses_a_descriptor_below_a_reduced_soft_limit ... ok [INFO] [stdout] test provisioners::availability::tests::a_blank_environment_variable_drops_its_candidate ... ok [INFO] [stdout] test commands::tests::probe::probe_shell_init_trace_runs_diagnostic_capable_eval_contributions ... ok [INFO] [stdout] test provisioners::availability::tests::a_relative_candidate_is_dropped_rather_than_resolved_against_the_cwd ... ok [INFO] [stdout] test provisioners::availability::tests::a_non_utf8_environment_prefix_keeps_its_candidate ... ok [INFO] [stdout] test shell::trace::tests::the_announcement_warns_about_the_maximum_rc_starts ... ok [INFO] [stdout] test shell::trace::tests::the_bash_record_at_the_hook_line_is_addressable ... ok [INFO] [stdout] test shell::trace::tests::shell_quoting_survives_embedded_single_quotes ... ok [INFO] [stdout] test shell::trace::tests::report_only_trace_survives_fd_three_and_shadowed_commands_in_zsh ... ok [INFO] [stdout] test shell::trace::tests::the_fallback_restores_zdotdir_inside_the_copy ... ok [INFO] [stdout] test shell::trace::tests::the_report_line_is_inserted_not_truncated ... ok [INFO] [stdout] test shell::trace::tests::the_file_source_verdict_judges_the_sourced_path_not_the_expected_one ... ok [INFO] [stdout] test shell::trace::tests::the_scratch_dir_is_private_unpredictable_and_transient ... ok [INFO] [stdout] test shell::trace::tests::the_retained_path_is_the_one_the_line_sources ... ok [INFO] [stdout] test shell::trace::tests::the_zsh_fallback_runs_the_zshenv_that_establishes_zdotdir ... ok [INFO] [stdout] test shell::trace::tests::the_zsh_record_at_the_hook_line_is_addressable ... ok [INFO] [stdout] test shell::probe::tests::an_inherited_stamp_is_scrubbed_before_the_child_sees_it ... ok [INFO] [stdout] test shell::trace::tests::the_first_executable_match_wins ... ok [INFO] [stdout] test shell::trace::tests::version_output_parses_the_clap_shape_and_rejects_noise ... ok [INFO] [stdout] test shell::trace::tests::verdict_different_binary_names_the_winner_and_its_version ... ok [INFO] [stdout] test shell::trace::tests::verdict_unresolvable_carries_the_searched_path ... ok [INFO] [stdout] test shell::trace::tests::verdict_running_binary_follows_symlinks_to_identity ... ok [INFO] [stdout] test shell::validate::tests::empty_datastore_is_ok ... ok [INFO] [stdout] test shell::validate::tests::interpreter_picked_per_extension ... ok [INFO] [stdout] test shell::validate::tests::missing_interpreter_recorded_and_sidecar_left_alone ... ok [INFO] [stdout] test shell::validate::tests::syntax_failure_writes_sidecar_with_stderr ... ok [INFO] [stdout] test shell::validate::tests::fixed_syntax_clears_stale_sidecar ... ok [INFO] [stdout] test shell::probe::tests::targeted_verification_stops_at_current_file_source_hook ... ok [INFO] [stdout] test shell::validate::tests::validates_each_deployed_shell_file ... ok [INFO] [stdout] test shell::validate::tests::unknown_extensions_are_skipped ... ok [INFO] [stdout] test testing::tests::assert_no_handler_state_passes_when_empty ... ok [INFO] [stdout] test testing::tests::assert_no_handler_state_fails_when_state_exists - should panic ... ok [INFO] [stdout] test testing::tests::assert_sentinel_works ... ok [INFO] [stdout] test testing::tests::builder_creates_dodotignore ... ok [INFO] [stdout] test testing::tests::assert_symlink_works ... ok [INFO] [stdout] test testing::tests::builder_creates_directory_structure ... ok [INFO] [stdout] test testing::tests::builder_creates_home_files ... ok [INFO] [stdout] test testing::tests::builder_creates_nested_files ... ok [INFO] [stdout] test testing::tests::handler_data_dir_within_temp ... ok [INFO] [stdout] test testing::tests::builder_creates_pack_config ... ok [INFO] [stdout] test testing::tests::empty_environment_has_basic_structure ... ok [INFO] [stdout] test testing::tests::pather_points_at_temp_dirs ... ok [INFO] [stdout] test testing::tests::list_dir_names_helper ... ok [INFO] [stdout] test shell::probe::tests::a_hanging_rc_times_out_and_takes_its_children_with_it ... ok [INFO] [stdout] test testing::tests::multiple_environments_coexist ... ok [INFO] [stdout] test shell::trace::tests::a_hook_inside_a_dead_branch_yields_no_record_twice ... ok [INFO] [stdout] test shell::trace::tests::a_ps4_override_falls_back_to_the_inserted_report_copy ... ok [INFO] [stdout] test shell::trace::tests::a_real_bash_reports_path_at_the_hook_line ... ok [INFO] [stdout] test shell::trace::tests::an_rc_that_never_parsed_is_still_traced ... ok [INFO] [stdout] test shell::trace::tests::an_insertion_that_breaks_the_copys_parse_refuses_to_answer ... ok [INFO] [stderr] bash: cannot set terminal process group (3215): Inappropriate ioctl for device [INFO] [stderr] bash: no job control in this shell [INFO] [stdout] test shell::trace::tests::diagnostic_supported_trace_leaves_evidence_untouched_and_runs_contributions ... ok [INFO] [stdout] test shell::trace::tests::report_only_trace_does_not_execute_a_capability_unknown_hook ... ok [INFO] [stdout] test shell::probe::tests::targeted_runner_terminates_descendants_when_the_direct_shell_exits ... ok [INFO] [stdout] test shell::trace::tests::report_only_trace_reaches_the_record_after_noisy_rc_output ... ok [INFO] [stdout] test shell::trace::tests::report_only_trace_survives_fd_three_and_shadowed_commands_in_bash ... ok [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- handlers::catalog::tests::contextual_rosters_list_every_handler stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'handlers::catalog::tests::contextual_rosters_list_every_handler' (4172) panicked at src/handlers/catalog.rs:772:39: [INFO] [stdout] read /opt/README.md: No such file or directory (os error 2) [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x617b593bbbe1 - <::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt [INFO] [stdout] 1: 0x617b593d6ada - core[df12db4294e9bfd3]::fmt::write [INFO] [stdout] 2: 0x617b593c16ec - as core[df12db4294e9bfd3]::io::write::Write>::write_fmt [INFO] [stdout] 3: 0x617b5938ffe6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0} [INFO] [stdout] 4: 0x617b593b0879 - std[70759c8f55707aa4]::panicking::default_hook [INFO] [stdout] 5: 0x617b58eb5e30 - test[9d35eded1c95d3be]::test_main_inner::::{closure#0} [INFO] [stdout] 6: 0x617b593b0ba2 - std[70759c8f55707aa4]::panicking::panic_with_hook [INFO] [stdout] 7: 0x617b59390092 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0} [INFO] [stdout] 8: 0x617b59388699 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] 9: 0x617b5939142d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind [INFO] [stdout] 10: 0x617b593d72fc - core[df12db4294e9bfd3]::panicking::panic_fmt [INFO] [stdout] 11: 0x617b58a86b89 - dodot_lib[56e8d480eac4a08e]::handlers::catalog::tests::contextual_rosters_list_every_handler::{closure#0} [INFO] [stdout] 12: 0x617b58ab90ba - dodot_lib[56e8d480eac4a08e]::handlers::catalog::tests::contextual_rosters_list_every_handler [INFO] [stdout] 13: 0x617b5873d649 - >::call_once [INFO] [stdout] 14: 0x617b58ea911b - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>> [INFO] [stdout] 15: 0x617b58eb6785 - test[9d35eded1c95d3be]::run_test::{closure#0} [INFO] [stdout] 16: 0x617b58eb0044 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] 17: 0x617b58eb98e2 - ::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} [INFO] [stdout] 18: 0x617b593ba1e9 - ::new::thread_start [INFO] [stdout] 19: 0x703224b53dfa - [INFO] [stdout] 20: 0x703224be73d4 - clone [INFO] [stdout] 21: 0x0 - [INFO] [stdout] [INFO] [stdout] ---- handlers::catalog::tests::handler_registry_doc_is_current stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'handlers::catalog::tests::handler_registry_doc_is_current' (4174) panicked at src/handlers/catalog.rs:735:35: [INFO] [stdout] read /opt/docs/reference/handler-registry.lex: No such file or directory (os error 2) [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x617b593bbbe1 - <::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt [INFO] [stdout] 1: 0x617b593d6ada - core[df12db4294e9bfd3]::fmt::write [INFO] [stdout] 2: 0x617b593c16ec - as core[df12db4294e9bfd3]::io::write::Write>::write_fmt [INFO] [stdout] 3: 0x617b5938ffe6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0} [INFO] [stdout] 4: 0x617b593b0879 - std[70759c8f55707aa4]::panicking::default_hook [INFO] [stdout] 5: 0x617b58eb5e30 - test[9d35eded1c95d3be]::test_main_inner::::{closure#0} [INFO] [stdout] 6: 0x617b593b0ba2 - std[70759c8f55707aa4]::panicking::panic_with_hook [INFO] [stdout] 7: 0x617b59390092 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0} [INFO] [stdout] 8: 0x617b59388699 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] 9: 0x617b5939142d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind [INFO] [stdout] 10: 0x617b593d72fc - core[df12db4294e9bfd3]::panicking::panic_fmt [INFO] [stdout] 11: 0x617b58a86ae9 - dodot_lib[56e8d480eac4a08e]::handlers::catalog::tests::handler_registry_doc_is_current::{closure#0} [INFO] [stdout] 12: 0x617b58ab8821 - dodot_lib[56e8d480eac4a08e]::handlers::catalog::tests::handler_registry_doc_is_current [INFO] [stdout] 13: 0x617b5873d609 - >::call_once [INFO] [stdout] 14: 0x617b58ea911b - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>> [INFO] [stdout] 15: 0x617b58eb6785 - test[9d35eded1c95d3be]::run_test::{closure#0} [INFO] [stdout] 16: 0x617b58eb0044 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] 17: 0x617b58eb98e2 - ::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} [INFO] [stdout] 18: 0x617b593ba1e9 - ::new::thread_start [INFO] [stdout] 19: 0x703224b53dfa - [INFO] [stdout] 20: 0x703224be73d4 - clone [INFO] [stdout] 21: 0x0 - [INFO] [stdout] [INFO] [stdout] ---- handlers::tests::two_exclusive_catchalls_panic stdout ---- [INFO] [stdout] note: test did not panic as expected at src/handlers/mod.rs:544:8 [INFO] [stdout] ---- safety_lock::schema::tests::a_failed_write_leaves_the_previous_approvals_intact stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'safety_lock::schema::tests::a_failed_write_leaves_the_previous_approvals_intact' (4874) panicked at src/safety_lock/schema.rs:696:14: [INFO] [stdout] called `Result::unwrap_err()` on an `Ok` value: () [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x617b593bbbe1 - <::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt [INFO] [stdout] 1: 0x617b593d6ada - core[df12db4294e9bfd3]::fmt::write [INFO] [stdout] 2: 0x617b593c16ec - as core[df12db4294e9bfd3]::io::write::Write>::write_fmt [INFO] [stdout] 3: 0x617b5938ffe6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0} [INFO] [stdout] 4: 0x617b593b0879 - std[70759c8f55707aa4]::panicking::default_hook [INFO] [stdout] 5: 0x617b58eb5e30 - test[9d35eded1c95d3be]::test_main_inner::::{closure#0} [INFO] [stdout] 6: 0x617b593b0ba2 - std[70759c8f55707aa4]::panicking::panic_with_hook [INFO] [stdout] 7: 0x617b59390092 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0} [INFO] [stdout] 8: 0x617b59388699 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] 9: 0x617b5939142d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind [INFO] [stdout] 10: 0x617b593d72fc - core[df12db4294e9bfd3]::panicking::panic_fmt [INFO] [stdout] 11: 0x617b593d70d2 - core[df12db4294e9bfd3]::result::unwrap_failed [INFO] [stdout] 12: 0x617b58cc36e8 - dodot_lib[56e8d480eac4a08e]::safety_lock::schema::tests::a_failed_write_leaves_the_previous_approvals_intact [INFO] [stdout] 13: 0x617b586c6709 - >::call_once [INFO] [stdout] 14: 0x617b58ea911b - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>> [INFO] [stdout] 15: 0x617b58eb6785 - test[9d35eded1c95d3be]::run_test::{closure#0} [INFO] [stdout] 16: 0x617b58eb0044 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] 17: 0x617b58eb98e2 - ::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} [INFO] [stdout] 18: 0x617b593ba1e9 - ::new::thread_start [INFO] [stdout] 19: 0x703224b53dfa - [INFO] [stdout] 20: 0x703224be73d4 - clone [INFO] [stdout] 21: 0x0 - [INFO] [stdout] [INFO] [stdout] ---- shell::probe::tests::rc_noise_and_a_nonzero_exit_do_not_fail_a_successful_probe stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'shell::probe::tests::rc_noise_and_a_nonzero_exit_do_not_fail_a_successful_probe' (5165) panicked at src/shell/probe.rs:2233:9: [INFO] [stdout] assertion `left == right` failed [INFO] [stdout] left: SpawnFailed("Text file busy (os error 26)") [INFO] [stdout] right: Stamp(ProbeStamp { generation: 42, version: Known("5.6.0") }) [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x617b593bbbe1 - <::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt [INFO] [stdout] 1: 0x617b593d6ada - core[df12db4294e9bfd3]::fmt::write [INFO] [stdout] 2: 0x617b593c16ec - as core[df12db4294e9bfd3]::io::write::Write>::write_fmt [INFO] [stdout] 3: 0x617b5938ffe6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0} [INFO] [stdout] 4: 0x617b593b0879 - std[70759c8f55707aa4]::panicking::default_hook [INFO] [stdout] 5: 0x617b58eb5e30 - test[9d35eded1c95d3be]::test_main_inner::::{closure#0} [INFO] [stdout] 6: 0x617b593b0ba2 - std[70759c8f55707aa4]::panicking::panic_with_hook [INFO] [stdout] 7: 0x617b59390092 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0} [INFO] [stdout] 8: 0x617b59388699 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] 9: 0x617b5939142d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind [INFO] [stdout] 10: 0x617b593d72fc - core[df12db4294e9bfd3]::panicking::panic_fmt [INFO] [stdout] 11: 0x617b593d7213 - core[df12db4294e9bfd3]::panicking::assert_failed_inner [INFO] [stdout] 12: 0x617b5882bb34 - core[df12db4294e9bfd3]::panicking::assert_failed:: [INFO] [stdout] 13: 0x617b58c418bc - dodot_lib[56e8d480eac4a08e]::shell::probe::tests::rc_noise_and_a_nonzero_exit_do_not_fail_a_successful_probe [INFO] [stdout] 14: 0x617b586daa39 - >::call_once [INFO] [stdout] 15: 0x617b58ea911b - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>> [INFO] [stdout] 16: 0x617b58eb6785 - test[9d35eded1c95d3be]::run_test::{closure#0} [INFO] [stdout] 17: 0x617b58eb0044 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] 18: 0x617b58eb98e2 - ::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} [INFO] [stdout] 19: 0x617b593ba1e9 - ::new::thread_start [INFO] [stdout] 20: 0x703224b53dfa - [INFO] [stdout] 21: 0x703224be73d4 - clone [INFO] [stdout] 22: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] handlers::catalog::tests::contextual_rosters_list_every_handler [INFO] [stdout] handlers::catalog::tests::handler_registry_doc_is_current [INFO] [stdout] handlers::tests::two_exclusive_catchalls_panic [INFO] [stdout] safety_lock::schema::tests::a_failed_write_leaves_the_previous_approvals_intact [INFO] [stdout] shell::probe::tests::rc_noise_and_a_nonzero_exit_do_not_fail_a_successful_probe [INFO] [stdout] [INFO] [stdout] test result: FAILED. 1992 passed; 5 failed; 15 ignored; 0 measured; 0 filtered out; finished in 3.52s [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass `--lib` [INFO] running `Command { std: "docker" "inspect" "2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6", kill_on_drop: false }` [INFO] [stdout] 2f108a9d6a25a3abdb66b62c41416458df58fb3fcc0549cd17dfafd4035e20f6