[INFO] fetching crate obsidian-mcp-rs 0.7.1...
[INFO] testing obsidian-mcp-rs-0.7.1 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate obsidian-mcp-rs 0.7.1 into /workspace/builds/worker-6-tc2/source
[INFO] removed /workspace/builds/worker-6-tc2/source/rust-toolchain.toml
[INFO] started tweaking crates.io crate obsidian-mcp-rs 0.7.1
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate obsidian-mcp-rs 0.7.1
[INFO] tweaked toml for crates.io crate obsidian-mcp-rs 0.7.1 written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate obsidian-mcp-rs 0.7.1 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate obsidian-mcp-rs 0.7.1 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.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:115:12
[INFO] [stderr]     |
[INFO] [stderr] 115 | homepage = "https://github.com/MrRefactoring/obsidian-mcp-rs"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 120 | repository = "https://github.com/MrRefactoring/obsidian-mcp-rs"
[INFO] [stderr]     |              --------------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `obsidian-mcp-rs` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177
[INFO] running `Command { std: "docker" "start" "9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177", 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" "9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177", 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" "9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:115:12
[INFO] [stderr]     |
[INFO] [stderr] 115 | homepage = "https://github.com/MrRefactoring/obsidian-mcp-rs"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 120 | repository = "https://github.com/MrRefactoring/obsidian-mcp-rs"
[INFO] [stderr]     |              --------------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `obsidian-mcp-rs` (manifest) generated 1 warning
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]    Compiling futures-core v0.3.33
[INFO] [stderr]    Compiling futures-sink v0.3.33
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling crossbeam-deque v0.8.7
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling futures-channel v0.3.33
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling ref-cast v1.0.26
[INFO] [stderr]    Compiling futures-task v0.3.33
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling regex-automata v0.4.16
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling futures-io v0.3.33
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling ref-cast-impl v1.0.26
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling bytes v1.12.1
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling futures-macro v0.3.33
[INFO] [stderr]    Compiling tokio-macros v2.7.1
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling futures-util v0.3.33
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling bstr v1.13.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]    Compiling rmcp v2.2.0
[INFO] [stderr]    Compiling winnow v1.0.4
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling console v0.16.4
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling clap_builder v4.6.2
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling globset v0.4.19
[INFO] [stderr]    Compiling futures-executor v0.3.33
[INFO] [stderr]    Compiling futures v0.3.33
[INFO] [stderr]    Compiling rmcp-macros v2.2.0
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling async-trait v0.1.91
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling thread_local v1.1.10
[INFO] [stderr]    Compiling toml_writer v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling pastey v0.2.3
[INFO] [stderr]    Compiling shell-words v1.1.1
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling either v1.17.0
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling dialoguer v0.12.0
[INFO] [stderr]    Compiling toml_edit v0.25.13+spec-1.1.0
[INFO] [stderr]    Compiling serde_yaml_ng v0.10.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling clap v4.6.4
[INFO] [stderr]    Compiling ignore v0.4.31
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling fs4 v1.1.0
[INFO] [stderr]    Compiling jsonc-parser v0.33.0
[INFO] [stderr]    Compiling similar v3.1.1
[INFO] [stderr]    Compiling obsidian-mcp-rs v0.7.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 26s
[INFO] running `Command { std: "docker" "inspect" "9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177", 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" "9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:115:12
[INFO] [stderr]     |
[INFO] [stderr] 115 | homepage = "https://github.com/MrRefactoring/obsidian-mcp-rs"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 120 | repository = "https://github.com/MrRefactoring/obsidian-mcp-rs"
[INFO] [stderr]     |              --------------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `obsidian-mcp-rs` (manifest) generated 1 warning
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling either v1.17.0
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]    Compiling zerocopy-derive v0.8.55
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling cc v1.4.0
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]    Compiling criterion-plot v0.8.2
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling rmcp v2.2.0
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling criterion v0.8.2
[INFO] [stderr]    Compiling obsidian-mcp-rs v0.7.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 3m 46s
[INFO] running `Command { std: "docker" "inspect" "9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177", 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" "9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:115:12
[INFO] [stderr]     |
[INFO] [stderr] 115 | homepage = "https://github.com/MrRefactoring/obsidian-mcp-rs"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 120 | repository = "https://github.com/MrRefactoring/obsidian-mcp-rs"
[INFO] [stderr]     |              --------------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `obsidian-mcp-rs` (manifest) generated 1 warning
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.33s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/obsidian-mcp-rs/2354ab35106d3dde/out/obsidian_mcp_rs-2354ab35106d3dde)
[INFO] [stdout] 
[INFO] [stdout] running 428 tests
[INFO] [stdout] test error::tests::from_vault_error_into_error_data ... ok
[INFO] [stdout] test error::tests::invalid_path_message ... ok
[INFO] [stdout] test error::tests::directory_already_exists_message ... ok
[INFO] [stdout] test error::tests::note_already_exists_message ... ok
[INFO] [stdout] test error::tests::invalid_frontmatter_message ... ok
[INFO] [stdout] test error::tests::io_constructor ... ok
[INFO] [stdout] test error::tests::client_errors_map_to_invalid_params ... ok
[INFO] [stdout] test error::tests::server_errors_map_to_internal_error ... ok
[INFO] [stdout] test error::tests::note_not_found_message ... ok
[INFO] [stdout] test error::tests::vault_not_found_message ... ok
[INFO] [stdout] test handler::tests::a_move_that_moves_nothing_is_rejected ... ok
[INFO] [stdout] test handler::tests::create_directory_ok ... ok
[INFO] [stdout] test handler::tests::add_tags_ok ... ok
[INFO] [stdout] test error::tests::tool_execution_errors_are_classified ... ok
[INFO] [stdout] test handler::tests::create_note_duplicate_is_tool_error ... ok
[INFO] [stdout] test handler::tests::create_note_ok ... ok
[INFO] [stdout] test error::tests::search_error_message ... ok
[INFO] [stdout] test handler::tests::create_directory_default_recursive ... ok
[INFO] [stdout] test handler::tests::delete_note_missing_is_tool_error ... ok
[INFO] [stdout] test handler::tests::a_structured_tool_reports_a_missing_note_as_a_result_the_model_can_see ... ok
[INFO] [stdout] test handler::tests::edit_note_missing_is_tool_error ... ok
[INFO] [stdout] test handler::tests::delete_note_ok ... ok
[INFO] [stdout] test handler::tests::edit_note_rejects_half_a_target ... ok
[INFO] [stdout] test handler::tests::edit_note_missing_target_is_tool_error ... ok
[INFO] [stdout] test handler::tests::every_tool_is_listed_when_writes_are_allowed ... ok
[INFO] [stdout] test handler::tests::edit_note_search_text_not_found_is_tool_error ... ok
[INFO] [stdout] test handler::tests::edit_note_append_ok ... ok
[INFO] [stdout] test handler::tests::edit_note_can_target_one_section ... ok
[INFO] [stdout] test handler::tests::frontmatter_get_returns_structured_content ... ok
[INFO] [stdout] test handler::tests::no_edit_allows_frontmatter_get ... ok
[INFO] [stdout] test handler::tests::list_available_vaults_returns_list ... ok
[INFO] [stdout] test handler::tests::list_available_vaults_empty_manager ... ok
[INFO] [stdout] test handler::tests::no_edit_allows_list_available_vaults ... ok
[INFO] [stdout] test handler::tests::no_edit_blocks_create_directory ... ok
[INFO] [stdout] test handler::tests::no_edit_blocks_add_tags ... ok
[INFO] [stdout] test handler::tests::no_edit_allows_read_note ... ok
[INFO] [stdout] test handler::tests::no_edit_blocks_delete_note ... ok
[INFO] [stdout] test handler::tests::no_edit_blocks_create_note ... ok
[INFO] [stdout] test handler::tests::no_edit_allows_search_vault ... ok
[INFO] [stdout] test handler::tests::no_edit_blocks_edit_note ... ok
[INFO] [stdout] test handler::tests::no_edit_blocks_frontmatter_set ... ok
[INFO] [stdout] test handler::tests::move_note_ok ... ok
[INFO] [stdout] test handler::tests::move_note_missing_is_tool_error ... ok
[INFO] [stdout] test handler::tests::no_edit_blocks_frontmatter_remove ... ok
[INFO] [stdout] test handler::tests::frontmatter_set_writes_the_key ... ok
[INFO] [stdout] test handler::tests::no_edit_blocks_move_note ... ok
[INFO] [stdout] test handler::tests::no_edit_hides_write_tools_from_the_tool_list ... ok
[INFO] [stdout] test handler::tests::read_note_ok ... ok
[INFO] [stdout] test handler::tests::no_edit_blocks_remove_tags ... ok
[INFO] [stdout] test handler::tests::no_edit_blocks_rename_tag ... ok
[INFO] [stdout] test handler::tests::read_note_not_found_is_tool_error ... ok
[INFO] [stdout] test handler::tests::rename_tag_ok ... ok
[INFO] [stdout] test handler::tests::read_note_outline_returns_targets_not_prose ... ok
[INFO] [stdout] test handler::tests::search_vault_both_type ... ok
[INFO] [stdout] test handler::tests::search_vault_empty_still_has_structured_content ... ok
[INFO] [stdout] test handler::tests::search_vault_finds_result ... ok
[INFO] [stdout] test handler::tests::remove_tags_ok ... ok
[INFO] [stdout] test handler::tests::search_vault_returns_structured_content ... ok
[INFO] [stdout] test handler::tests::search_vault_filename_type ... ok
[INFO] [stdout] test handler::tests::search_vault_no_results ... ok
[INFO] [stdout] test handler::tests::unknown_vault_is_protocol_error ... ok
[INFO] [stdout] test install::binary::tests::a_missing_binary_is_refused_rather_than_written_into_a_config ... ok
[INFO] [stdout] test install::binary::tests::the_installed_copy_lives_under_the_user_data_directory ... ok
[INFO] [stdout] test install::binary::tests::a_busy_destination_says_what_to_do_about_it ... ok
[INFO] [stdout] test install::binary::tests::a_file_is_the_same_as_itself_and_not_as_its_neighbour ... ok
[INFO] [stdout] test install::clients::tests::all_targets_includes_cursor_local ... ok
[INFO] [stdout] test install::clients::tests::all_targets_includes_claude_desktop ... ok
[INFO] [stdout] test install::binary::tests::the_windows_copy_keeps_its_extension ... ok
[INFO] [stdout] test install::clients::tests::all_targets_includes_claude_code_local ... ok
[INFO] [stdout] test install::clients::tests::all_targets_local_ones_are_always_detected ... ok
[INFO] [stdout] test install::clients::tests::all_targets_returns_non_empty ... ok
[INFO] [stdout] test install::clients::tests::display_path_inside_home ... ok
[INFO] [stdout] test install::clients::tests::expand_tilde_alone ... ok
[INFO] [stdout] test install::clients::tests::expand_tilde_relative_no_tilde ... ok
[INFO] [stdout] test install::clients::tests::expand_tilde_no_tilde ... ok
[INFO] [stdout] test install::clients::tests::install_target_label_no_suffix_when_detected ... ok
[INFO] [stdout] test install::clients::tests::install_target_label_no_suffix_when_local ... ok
[INFO] [stdout] test install::tests::a_command_is_labelled_by_its_binary_not_its_path ... ok
[INFO] [stdout] test install::tests::install_one_already_installed_returns_false ... ok
[INFO] [stdout] test install::tests::an_entry_running_anything_else_is_not_the_installed_server ... ok
[INFO] [stdout] test install::tests::install_one_dry_run_returns_false ... ok
[INFO] [stdout] test install::tests::install_one_written_creates_file ... ok
[INFO] [stdout] test install::clients::tests::display_path_outside_home ... ok
[INFO] [stdout] test install::tests::install_one_written_updates_existing ... ok
[INFO] [stdout] test install::clients::tests::install_target_label_appends_not_found ... ok
[INFO] [stdout] test install::clients::tests::expand_tilde_with_path ... ok
[INFO] [stdout] test install::tests::normalize_vaults_keeps_nonexistent_path ... ok
[INFO] [stdout] test install::tests::nothing_is_called_stale_when_the_server_has_no_home ... ok
[INFO] [stdout] test install::tests::resolve_targets_cursor_default_is_local ... ok
[INFO] [stdout] test install::tests::resolve_targets_claude_code_default_is_local ... ok
[INFO] [stdout] test install::tests::resolve_targets_claude_code_global_is_not_local ... ok
[INFO] [stdout] test install::tests::normalize_vaults_expands_existing_path ... ok
[INFO] [stdout] test install::tests::resolve_targets_claude_global_flag_same ... ok
[INFO] [stdout] test install::tests::resolve_targets_claude_always_global ... ok
[INFO] [stdout] test install::tests::resolve_targets_openclaw_always_global ... ok
[INFO] [stdout] test install::tests::run_install_interactive_no_tty_returns_err ... ok
[INFO] [stdout] test install::tests::run_install_requires_vaults_when_client_specified ... ok
[INFO] [stdout] test install::tests::run_uninstall_interactive_no_tty_returns_err ... ok
[INFO] [stdout] test install::tests::the_installed_server_is_recognised_as_itself ... ok
[INFO] [stdout] test install::tests::run_list_succeeds ... ok
[INFO] [stdout] test install::tests::run_install_direct_dry_run ... ok
[INFO] [stdout] test install::tests::run_uninstall_direct_missing_client_ok ... ok
[INFO] [stdout] test install::writer::tests::an_entry_left_over_from_the_npx_era_reads_as_different ... ok
[INFO] [stdout] test install::tests::uninstall_one_not_installed_is_ok ... ok
[INFO] [stdout] test install::tests::resolve_targets_cursor_global_is_not_local ... ok
[INFO] [stdout] test install::tests::uninstall_one_dry_run ... ok
[INFO] [stdout] test install::writer::tests::check_status_file_not_found ... ok
[INFO] [stdout] test install::tests::uninstall_one_removes_entry ... ok
[INFO] [stdout] test install::writer::tests::check_status_installed_openclaw ... ok
[INFO] [stdout] test install::writer::tests::check_status_installed_standard ... ok
[INFO] [stdout] test install::writer::tests::check_status_reports_the_command_a_stale_npx_entry_runs ... ok
[INFO] [stdout] test install::writer::tests::check_status_toml_file_not_found ... ok
[INFO] [stdout] test install::writer::tests::check_status_reads_the_command_out_of_an_opencode_argv ... ok
[INFO] [stdout] test install::writer::tests::check_status_toml_installed ... ok
[INFO] [stdout] test install::writer::tests::check_status_not_installed_empty_object ... ok
[INFO] [stdout] test install::writer::tests::check_status_toml_not_installed ... ok
[INFO] [stdout] test install::writer::tests::check_status_yaml_installed ... ok
[INFO] [stdout] test install::writer::tests::check_status_yaml_file_not_found ... ok
[INFO] [stdout] test install::writer::tests::check_status_yaml_not_installed ... ok
[INFO] [stdout] test install::writer::tests::remove_entry_missing_file_returns_false ... ok
[INFO] [stdout] test install::writer::tests::remove_entry_dry_run_does_not_modify ... ok
[INFO] [stdout] test install::writer::tests::remove_entry_not_installed_returns_false ... ok
[INFO] [stdout] test install::writer::tests::remove_entry_yaml_not_installed ... ok
[INFO] [stdout] test install::writer::tests::remove_entry_removes_standard ... ok
[INFO] [stdout] test install::writer::tests::remove_entry_yaml_removes ... ok
[INFO] [stdout] test install::writer::tests::write_entry_already_installed_no_force ... ok
[INFO] [stdout] test install::writer::tests::the_entry_we_just_wrote_reads_as_unchanged ... ok
[INFO] [stdout] test install::writer::tests::write_entry_claude_app_format_has_type_stdio ... ok
[INFO] [stdout] test install::writer::tests::write_entry_creates_file ... ok
[INFO] [stdout] test install::writer::tests::write_entry_creates_backup ... ok
[INFO] [stdout] test install::writer::tests::write_entry_no_edit_false_not_in_args ... ok
[INFO] [stdout] test install::writer::tests::remove_entry_toml_removes ... ok
[INFO] [stdout] test install::writer::tests::remove_entry_toml_not_installed ... ok
[INFO] [stdout] test install::writer::tests::remove_entry_removes_openclaw ... ok
[INFO] [stdout] test install::writer::tests::write_entry_no_edit_flag_included_in_args ... ok
[INFO] [stdout] test install::writer::tests::write_entry_toml_creates_file ... ok
[INFO] [stdout] test install::writer::tests::write_entry_yaml_already_installed_no_force ... ok
[INFO] [stdout] test install::writer::tests::write_entry_openclaw_format ... ok
[INFO] [stdout] test install::writer::tests::write_entry_force_overwrites ... ok
[INFO] [stdout] test install::writer::tests::write_entry_toml_already_installed_no_force ... ok
[INFO] [stdout] test install::writer::tests::no_edit_still_reaches_every_backend ... ok
[INFO] [stdout] test parent::tests::an_ordinary_parent_is_watched ... ok
[INFO] [stdout] test parent::tests::the_top_of_the_tree_has_no_host ... ok
[INFO] [stdout] test install::writer::tests::write_entry_yaml_dry_run ... ok
[INFO] [stdout] test parent::tests::the_watch_ends_when_the_parent_is_replaced ... ok
[INFO] [stdout] test tools::add_tags::tests::a_mistyped_location_is_rejected_instead_of_silently_meaning_both ... ok
[INFO] [stdout] test tools::add_tags::tests::a_mistyped_position_is_rejected_instead_of_silently_meaning_end ... ok
[INFO] [stdout] test tools::add_tags::tests::the_defaults_are_both_and_end ... ok
[INFO] [stdout] test tools::add_tags::tests::the_legal_values_parse ... ok
[INFO] [stdout] test tools::edit_note::tests::a_target_parses_into_its_typed_kind ... ok
[INFO] [stdout] test parent::tests::a_live_parent_keeps_the_watch_running ... ok
[INFO] [stdout] test tools::edit_note::tests::the_documented_operations_all_parse ... ok
[INFO] [stdout] test install::writer::tests::every_format_points_at_the_binary_rather_than_npx ... ok
[INFO] [stdout] test tools::edit_note::tests::unknown_operation_is_rejected ... ok
[INFO] [stdout] test tools::read_note::tests::defaults_protect_the_context_window ... ok
[INFO] [stdout] test tools::search_vault::tests::known_search_types_parse ... ok
[INFO] [stdout] test tools::search_vault::tests::omitted_search_type_defaults_to_content ... ok
[INFO] [stdout] test install::writer::tests::write_entry_toml_dry_run ... ok
[INFO] [stdout] test install::writer::tests::write_entry_yaml_creates_file ... ok
[INFO] [stdout] test parent::tests::a_parent_of_init_means_we_are_already_an_orphan ... ok
[INFO] [stdout] test tools::read_note::tests::a_zero_is_read_as_the_smallest_real_request ... ok
[INFO] [stdout] test vault::frontmatter::tests::extract_frontmatter_open_without_close_returns_none ... ok
[INFO] [stdout] test vault::frontmatter::tests::extract_frontmatter_parses_block_list ... ok
[INFO] [stdout] test vault::frontmatter::tests::extract_frontmatter_parses_inline_list ... ok
[INFO] [stdout] test vault::frontmatter::tests::extract_frontmatter_parses_multiline_block ... ok
[INFO] [stdout] test vault::cache::tests::an_unreadable_file_is_reported_as_such_and_not_remembered ... ok
[INFO] [stdout] test vault::frontmatter::tests::extract_frontmatter_parses_single_value ... ok
[INFO] [stdout] test vault::frontmatter::tests::extract_frontmatter_returns_none_without_dashes ... ok
[INFO] [stdout] test vault::frontmatter::tests::find_closing_fm_skips_false_marker_line ... ok
[INFO] [stdout] test vault::frontmatter::tests::parse_fields_reads_every_key_not_just_tags ... ok
[INFO] [stdout] test vault::frontmatter::tests::parse_fields_rejects_malformed_yaml ... ok
[INFO] [stdout] test vault::frontmatter::tests::parse_fields_without_frontmatter_is_empty_not_an_error ... ok
[INFO] [stdout] test vault::frontmatter::tests::remove_field_drops_a_nested_mapping_whole ... ok
[INFO] [stdout] test vault::frontmatter::tests::remove_field_leaves_an_absent_key_alone ... ok
[INFO] [stdout] test vault::cache::tests::a_deleted_file_stops_being_served ... ok
[INFO] [stdout] test vault::cache::tests::a_change_of_length_alone_is_enough ... ok
[INFO] [stdout] test vault::frontmatter::tests::remove_the_only_field_leaves_an_empty_but_valid_block ... ok
[INFO] [stdout] test tools::search_vault::tests::unknown_search_type_is_rejected ... ok
[INFO] [stdout] test install::writer::tests::write_entry_dry_run_does_not_write ... ok
[INFO] [stdout] test vault::frontmatter::tests::remove_field_drops_the_key_and_the_lines_it_owns ... ok
[INFO] [stdout] test vault::cache::tests::an_unchanged_file_is_served_from_memory ... ok
[INFO] [stdout] test vault::cache::tests::a_file_written_by_someone_else_is_re_read ... ok
[INFO] [stdout] test vault::frontmatter::tests::set_field_appends_a_missing_key ... ok
[INFO] [stdout] test vault::frontmatter::tests::set_field_leaves_comments_and_key_order_alone ... ok
[INFO] [stdout] test vault::frontmatter::tests::set_field_opens_a_frontmatter_block_when_there_is_none ... ok
[INFO] [stdout] test vault::frontmatter::tests::set_field_quotes_values_that_yaml_would_misread ... ok
[INFO] [stdout] test vault::frontmatter::tests::set_field_writes_a_list_as_an_indented_block ... ok
[INFO] [stdout] test vault::frontmatter::tests::set_field_replaces_a_whole_block_value ... ok
[INFO] [stdout] test vault::frontmatter::tests::set_field_survives_a_multiline_string ... ok
[INFO] [stdout] test vault::links::tests::a_link_inside_code_is_never_rewritten ... ok
[INFO] [stdout] test vault::info::tests::recent_respects_the_limit ... ok
[INFO] [stdout] test vault::frontmatter::tests::set_field_rejects_a_key_yaml_would_have_to_quote ... ok
[INFO] [stdout] test vault::frontmatter::tests::set_field_replaces_a_scalar_in_place ... ok
[INFO] [stdout] test vault::links::tests::a_markdown_link_is_rewritten_with_its_extension ... ok
[INFO] [stdout] test vault::info::tests::a_tag_inside_a_code_block_is_not_a_tag ... ok
[INFO] [stdout] test vault::info::tests::tags_counts_notes_not_occurrences ... ok
[INFO] [stdout] test vault::info::tests::stats_describe_the_vault ... ok
[INFO] [stdout] test vault::links::tests::an_ambiguous_name_prefers_the_source_folder ... ok
[INFO] [stdout] test vault::links::tests::ignores_links_inside_fenced_code ... ok
[INFO] [stdout] test vault::links::tests::ignores_links_inside_inline_code ... ok
[INFO] [stdout] test vault::links::tests::multiple_links_on_one_line_are_all_rewritten ... ok
[INFO] [stdout] test vault::links::tests::ignores_links_inside_tilde_fences ... ok
[INFO] [stdout] test vault::links::tests::a_path_style_link_follows_the_note ... ok
[INFO] [stdout] test vault::links::tests::parses_block_reference_targets ... ok
[INFO] [stdout] test vault::links::tests::a_plain_folder_move_rewrites_nothing ... ok
[INFO] [stdout] test vault::links::tests::an_unknown_target_is_broken ... ok
[INFO] [stdout] test vault::links::tests::a_rename_preserves_heading_alias_and_embed ... ok
[INFO] [stdout] test vault::links::tests::a_rename_rewrites_bare_links ... ok
[INFO] [stdout] test vault::links::tests::records_line_numbers ... ok
[INFO] [stdout] test vault::links::tests::resolves_a_bare_name_anywhere_in_the_vault ... ok
[INFO] [stdout] test vault::links::tests::resolves_a_path_style_target ... ok
[INFO] [stdout] test vault::lock::tests::an_unusable_path_degrades_instead_of_panicking ... ok
[INFO] [stdout] test vault::links::tests::parses_markdown_links_to_notes ... ok
[INFO] [stdout] test vault::links::tests::parses_the_wikilink_shapes ... ok
[INFO] [stdout] test vault::lock::tests::the_lock_file_lives_outside_any_vault ... ok
[INFO] [stdout] test vault::patch::tests::a_block_covers_its_whole_paragraph ... ok
[INFO] [stdout] test vault::patch::tests::a_caret_glued_to_a_word_is_not_a_block_marker ... ok
[INFO] [stdout] test vault::patch::tests::a_section_stops_at_the_next_heading_of_the_same_level ... ok
[INFO] [stdout] test vault::patch::tests::a_section_swallows_its_nested_headings ... ok
[INFO] [stdout] test vault::patch::tests::a_tag_at_the_start_of_a_line_is_not_a_heading ... ok
[INFO] [stdout] test vault::patch::tests::a_target_copied_verbatim_out_of_the_rendered_outline_resolves ... ok
[INFO] [stdout] test vault::patch::tests::a_heading_inside_a_code_fence_is_not_a_heading ... ok
[INFO] [stdout] test vault::patch::tests::append_keeps_the_blank_line_before_the_next_heading ... ok
[INFO] [stdout] test vault::patch::tests::a_headings_body_starts_after_its_own_line ... ok
[INFO] [stdout] test vault::patch::tests::append_lands_at_the_end_of_the_section_not_the_note ... ok
[INFO] [stdout] test vault::patch::tests::block_matches_with_or_without_its_caret ... ok
[INFO] [stdout] test vault::patch::tests::every_heading_the_outline_offers_can_actually_be_found ... ok
[INFO] [stdout] test vault::patch::tests::append_to_the_last_section_does_not_grow_a_trailing_newline ... ok
[INFO] [stdout] test vault::patch::tests::heading_matches_with_or_without_its_hashes ... ok
[INFO] [stdout] test vault::patch::tests::missing_target_is_not_found ... ok
[INFO] [stdout] test vault::patch::tests::outline_lists_every_patchable_target ... ok
[INFO] [stdout] test vault::lock::tests::locking_creates_the_file_and_its_parent ... ok
[INFO] [stdout] test vault::patch::tests::a_hash_inside_the_frontmatter_is_not_a_heading ... ok
[INFO] [stdout] test vault::patch::tests::outline_says_so_when_there_is_nothing_to_aim_at ... ok
[INFO] [stdout] test vault::patch::tests::find_and_replace_is_confined_to_the_region ... ok
[INFO] [stdout] test vault::patch::tests::prepend_lands_under_the_heading_not_above_it ... ok
[INFO] [stdout] test vault::patch::tests::find_and_replace_reports_a_miss_rather_than_editing_elsewhere ... ok
[INFO] [stdout] test vault::patch::tests::heading_level_must_agree_when_given ... ok
[INFO] [stdout] test vault::patch::tests::heading_match_is_case_insensitive ... ok
[INFO] [stdout] test vault::path::tests::ensure_md_adds_extension ... ok
[INFO] [stdout] test vault::periodic::tests::a_configured_template_seeds_the_note ... ok
[INFO] [stdout] test vault::patch::tests::replace_keeps_the_heading_line ... ok
[INFO] [stdout] test vault::patch::tests::replace_a_block_swaps_only_that_block ... ok
[INFO] [stdout] test vault::patch::tests::replacing_a_section_does_not_touch_its_siblings ... ok
[INFO] [stdout] test vault::patch::tests::replace_into_an_empty_section_does_not_glue_it_to_the_next_heading ... ok
[INFO] [stdout] test vault::periodic::tests::each_period_steps_back_by_its_own_unit ... ok
[INFO] [stdout] test vault::periodic::tests::core_daily_notes_settings_are_honoured ... ok
[INFO] [stdout] test vault::periodic::tests::a_disabled_period_falls_back_instead_of_using_its_settings ... ok
[INFO] [stdout] test vault::periodic::tests::falls_back_to_obsidians_defaults_when_unconfigured ... ok
[INFO] [stdout] test vault::periodic::tests::longer_tokens_win ... ok
[INFO] [stdout] test vault::periodic::tests::iso_week_year_is_not_the_calendar_year ... ok
[INFO] [stdout] test vault::info::tests::recent_lists_newest_first ... ok
[INFO] [stdout] test vault::periodic::tests::renders_obsidians_default_formats ... ok
[INFO] [stdout] test vault::periodic::tests::the_periodic_notes_plugin_wins_over_core ... ok
[INFO] [stdout] test vault::periodic::tests::parse_date_rejects_nonsense ... ok
[INFO] [stdout] test vault::periodic::tests::unknown_characters_pass_through ... ok
[INFO] [stdout] test vault::periodic::tests::a_template_outside_the_vault_is_ignored_not_read ... ok
[INFO] [stdout] test vault::search::tests::an_invalid_regex_is_reported_not_swallowed ... ok
[INFO] [stdout] test vault::search::tests::a_filter_alone_answers_which_notes_carry_a_field ... ok
[INFO] [stdout] test vault::search::tests::a_match_heavy_note_cannot_flood_the_response ... ok
[INFO] [stdout] test vault::search::tests::a_list_field_matches_when_it_contains_the_value ... ok
[INFO] [stdout] test vault::search::tests::a_term_in_every_note_does_not_decide_the_ranking ... ok
[INFO] [stdout] test vault::periodic::tests::square_brackets_are_literal_text ... ok
[INFO] [stdout] test vault::search::tests::case_sensitive_search_respects_case ... ok
[INFO] [stdout] test vault::search::tests::content_search_ignores_filename_matches ... ok
[INFO] [stdout] test vault::search::tests::no_matches_gives_an_empty_page ... ok
[INFO] [stdout] test vault::search::tests::long_lines_are_clipped ... ok
[INFO] [stdout] test vault::search::tests::a_filter_narrows_a_ranked_query ... ok
[INFO] [stdout] test vault::search::tests::every_field_in_the_filter_must_match ... ok
[INFO] [stdout] test vault::search::tests::filename_search_ignores_body_matches ... ok
[INFO] [stdout] test vault::search::tests::offset_pages_through_results ... ok
[INFO] [stdout] test vault::search::tests::snippets_carry_line_numbers_and_text ... ok
[INFO] [stdout] test vault::tags::tests::add_tag_to_inline_list_stays_inline_and_parses ... ok
[INFO] [stdout] test vault::search::tests::regex_ranks_by_how_many_lines_matched ... ok
[INFO] [stdout] test vault::search::tests::tag_search_still_works_and_is_paginated ... ok
[INFO] [stdout] test vault::search::tests::ranks_a_title_match_above_a_body_mention ... ok
[INFO] [stdout] test vault::search::tests::ranks_a_heading_match_above_a_body_match ... ok
[INFO] [stdout] test vault::tags::tests::normalize_tag_lowercases_and_hyphenates ... ok
[INFO] [stdout] test vault::tags::tests::remove_scalar_tag ... ok
[INFO] [stdout] test vault::search::tests::regex_matches_a_pattern_not_a_word ... ok
[INFO] [stdout] test vault::tags::tests::remove_tags_does_not_touch_a_matching_alias ... ok
[INFO] [stdout] test vault::tags::tests::remove_tag_from_inline_list ... ok
[INFO] [stdout] test vault::tags::tests::add_tag_to_scalar_promotes_it_to_a_block_list ... ok
[INFO] [stdout] test vault::tags::tests::removing_last_inline_tag_leaves_an_empty_list ... ok
[INFO] [stdout] test vault::search::tests::limit_caps_the_files_returned_and_reports_the_total ... ok
[INFO] [stdout] test vault::tags::tests::rename_tag_does_not_touch_a_matching_alias ... ok
[INFO] [stdout] test vault::tags::tests::rename_leaves_nested_tags_alone ... ok
[INFO] [stdout] test vault::tags::tests::remove_tags_keeps_frontmatter_block_intact ... ok
[INFO] [stdout] test vault::tags::tests::rename_scalar_tag ... ok
[INFO] [stdout] test vault::tags::tests::unrelated_frontmatter_survives_byte_for_byte ... ok
[INFO] [stdout] test vault::tags::tests::inline_tag_match_requires_a_left_boundary ... ok
[INFO] [stdout] test vault::tags::tests::inline_tag_match_requires_a_right_boundary ... ok
[INFO] [stdout] test vault::tags::tests::rename_tag_in_inline_list ... ok
[INFO] [stdout] test vault::tags::tests::nested_tags_match_the_parent_when_searching_only ... ok
[INFO] [stdout] test vault::tests::a_batch_with_one_missing_file_changes_nothing_at_all ... ok
[INFO] [stdout] test vault::tags::tests::rename_tag_keeps_frontmatter_block_intact ... ok
[INFO] [stdout] test vault::tests::a_long_note_is_cut_and_says_how_to_get_the_rest ... ok
[INFO] [stdout] test vault::tests::a_vault_whose_directory_is_gone_says_so_instead_of_looking_empty ... ok
[INFO] [stdout] test vault::tests::a_missing_target_is_an_error_not_a_whole_note_overwrite ... ok
[INFO] [stdout] test vault::tests::add_tags_blocks_absolute_path ... ok
[INFO] [stdout] test vault::tests::a_name_collision_is_broken_by_the_parent_folder ... ok
[INFO] [stdout] test vault::tests::a_trashed_note_is_invisible_to_search ... ok
[INFO] [stdout] test vault::tests::a_note_that_fits_comes_back_byte_for_byte ... ok
[INFO] [stdout] test vault::tests::a_multibyte_character_is_never_split_in_half ... ok
[INFO] [stdout] test vault::tests::add_tags_blocks_traversal ... ok
[INFO] [stdout] test vault::tests::add_tags_both_location ... ok
[INFO] [stdout] test vault::tests::add_tags_to_content_start_with_frontmatter ... ok
[INFO] [stdout] test vault::tests::add_tags_to_frontmatter_block_list ... ok
[INFO] [stdout] test vault::tests::add_tags_names_the_files_it_could_not_find ... ok
[INFO] [stdout] test vault::tests::add_tags_normalizes ... ok
[INFO] [stdout] test vault::tests::add_tags_to_content_end ... ok
[INFO] [stdout] test vault::tests::add_tags_creates_frontmatter_if_absent ... ok
[INFO] [stdout] test vault::tests::add_tags_deduplicates ... ok
[INFO] [stdout] test vault::tests::allows_normal_nested_path ... ok
[INFO] [stdout] test vault::tests::allows_symlink_staying_inside_vault ... ok
[INFO] [stdout] test vault::tests::an_empty_new_folder_moves_the_note_to_the_vault_root ... ok
[INFO] [stdout] test vault::tests::add_tags_to_frontmatter_inline_tag_line ... ok
[INFO] [stdout] test vault::tests::an_offset_past_the_end_says_so_instead_of_returning_nothing ... ok
[INFO] [stdout] test vault::tests::add_tags_to_content_start ... ok
[INFO] [stdout] test vault::tests::an_edit_never_builds_on_a_cached_read ... ok
[INFO] [stdout] test vault::tests::create_directory_blocks_traversal ... ok
[INFO] [stdout] test vault::tests::create_directory_error_if_already_exists ... ok
[INFO] [stdout] test vault::tests::create_directory_non_recursive ... ok
[INFO] [stdout] test vault::tests::append_persists_to_disk ... ok
[INFO] [stdout] test vault::tests::append_adds_content_to_end ... ok
[INFO] [stdout] test vault::tests::concurrent_edits_to_one_note_do_not_lose_updates ... ok
[INFO] [stdout] test vault::tests::create_note_errors_if_already_exists ... ok
[INFO] [stdout] test vault::tests::create_note_blocks_traversal ... ok
[INFO] [stdout] test vault::tests::create_note_creates_parent_directories ... ok
[INFO] [stdout] test vault::tests::create_note_writes_content ... ok
[INFO] [stdout] test vault::tests::create_directory_recursive ... ok
[INFO] [stdout] test vault::tests::delete_note_does_not_remove_vault_root ... ok
[INFO] [stdout] test vault::tests::delete_note_error_if_not_found ... ok
[INFO] [stdout] test vault::tests::create_note_returns_path ... ok
[INFO] [stdout] test vault::tests::delete_note_blocks_traversal ... ok
[INFO] [stdout] test vault::tests::concurrent_tag_and_frontmatter_writes_do_not_lose_each_other ... ok
[INFO] [stdout] test vault::tests::delete_note_keeps_nonempty_source_folder ... ok
[INFO] [stdout] test vault::tests::delete_note_removes_file ... ok
[INFO] [stdout] test vault::tests::delete_note_removes_emptied_source_folder ... ok
[INFO] [stdout] test vault::tests::deleting_from_the_trash_erases_it ... ok
[INFO] [stdout] test vault::tests::edit_returns_error_for_missing_note ... ok
[INFO] [stdout] test vault::tests::delete_keeps_the_folder_structure_inside_the_trash ... ok
[INFO] [stdout] test vault::tests::find_and_replace_returns_error_when_search_param_missing ... ok
[INFO] [stdout] test vault::tests::delete_moves_the_note_to_the_trash_by_default ... ok
[INFO] [stdout] test vault::tests::frontmatter_get_reads_every_key ... ok
[INFO] [stdout] test vault::tests::frontmatter_blocks_traversal ... ok
[INFO] [stdout] test vault::tests::find_and_replace_returns_error_when_search_text_not_found ... ok
[INFO] [stdout] test vault::tests::frontmatter_set_needs_a_key_and_a_value ... ok
[INFO] [stdout] test vault::tests::every_tool_names_a_note_the_same_way ... ok
[INFO] [stdout] test vault::tests::find_and_replace_substitutes_first_occurrence ... ok
[INFO] [stdout] test vault::tests::frontmatter_reports_malformed_yaml_rather_than_silently_reading_nothing ... ok
[INFO] [stdout] test vault::tests::frontmatter_get_with_a_key_answers_with_just_that_key ... ok
[INFO] [stdout] test vault::tests::frontmatter_set_to_the_same_value_is_not_a_write ... ok
[INFO] [stdout] test vault::tests::frontmatter_remove_drops_the_key ... ok
[INFO] [stdout] test vault::tests::frontmatter_set_writes_one_key_and_preserves_the_rest ... ok
[INFO] [stdout] test vault::tests::list_vaults_returns_sorted ... ok
[INFO] [stdout] test vault::tests::move_note_renames_file ... ok
[INFO] [stdout] test vault::tests::move_note_to_a_folder_leaves_bare_links_alone ... ok
[INFO] [stdout] test vault::tests::move_note_error_if_not_found ... ok
[INFO] [stdout] test vault::tests::move_note_rewrites_inbound_links_on_rename ... ok
[INFO] [stdout] test vault::tests::note_path_empty_folder_ignores_folder ... ok
[INFO] [stdout] test vault::tests::move_note_removes_emptied_source_folder ... ok
[INFO] [stdout] test vault::tests::note_path_with_folder ... ok
[INFO] [stdout] test vault::tests::note_path_keeps_md_extension ... ok
[INFO] [stdout] test vault::tests::move_note_keeps_nonempty_source_folder ... ok
[INFO] [stdout] test vault::tests::offset_pages_through_the_note_and_the_last_page_says_so ... ok
[INFO] [stdout] test vault::tests::move_note_leaves_links_in_code_blocks_alone ... ok
[INFO] [stdout] test vault::tests::move_note_does_not_remove_vault_root ... ok
[INFO] [stdout] test vault::tests::note_path_adds_md_extension ... ok
[INFO] [stdout] test vault::tests::outline_lists_the_targets_an_edit_can_aim_at ... ok
[INFO] [stdout] test vault::tests::move_note_to_subfolder ... ok
[INFO] [stdout] test vault::tests::periodic_is_under_the_same_cap_as_read_note ... ok
[INFO] [stdout] test vault::tests::one_enormous_line_cannot_flood_the_context ... ok
[INFO] [stdout] test vault::tests::patching_a_section_leaves_the_rest_of_the_note_byte_for_byte ... ok
[INFO] [stdout] test vault::tests::periodic_create_makes_the_note_where_obsidian_would ... ok
[INFO] [stdout] test vault::tests::patching_a_block_touches_only_that_block ... ok
[INFO] [stdout] test vault::tests::periodic_create_is_idempotent ... ok
[INFO] [stdout] test vault::tests::periodic_get_fails_when_the_note_is_not_there_yet ... ok
[INFO] [stdout] test vault::tests::periodic_rejects_a_date_it_cannot_parse ... ok
[INFO] [stdout] test vault::tests::read_note_accepts_md_extension ... ok
[INFO] [stdout] test vault::tests::permanent_delete_erases_the_note ... ok
[INFO] [stdout] test vault::tests::read_note_error_if_not_found ... ok
[INFO] [stdout] test vault::tests::rejects_absolute_filename ... ok
[INFO] [stdout] test vault::tests::rejects_absolute_folder ... ok
[INFO] [stdout] test vault::tests::prepend_adds_content_to_start ... ok
[INFO] [stdout] test vault::tests::rejects_parent_traversal_in_folder ... ok
[INFO] [stdout] test vault::tests::rejects_symlink_escape ... ok
[INFO] [stdout] test vault::tests::rejects_parent_traversal_in_filename ... ok
[INFO] [stdout] test vault::tests::remove_tags_blocks_traversal ... ok
[INFO] [stdout] test vault::tests::read_note_in_subfolder ... ok
[INFO] [stdout] test vault::tests::read_note_returns_content ... ok
[INFO] [stdout] test vault::tests::remove_tags_names_the_files_it_could_not_find ... ok
[INFO] [stdout] test vault::tests::remove_tags_from_content ... ok
[INFO] [stdout] test vault::tests::remove_tags_from_frontmatter ... ok
[INFO] [stdout] test vault::tests::remove_tags_does_not_corrupt_overlapping_inline_tags ... ok
[INFO] [stdout] test vault::tests::rename_tag_does_not_corrupt_overlapping_inline_tags ... ok
[INFO] [stdout] test vault::tests::reordering_the_vault_paths_does_not_swap_which_is_which ... ok
[INFO] [stdout] test vault::tests::rename_tag_in_frontmatter ... ok
[INFO] [stdout] test vault::tests::rename_tag_no_matches ... ok
[INFO] [stdout] test vault::tests::replace_overwrites_entire_content ... ok
[INFO] [stdout] test vault::tests::replacing_a_section_keeps_its_heading_and_its_siblings ... ok
[INFO] [stdout] test vault::tests::renaming_a_note_leaves_it_in_its_folder ... ok
[INFO] [stdout] test vault::tests::resolve_vault_not_found_error ... ok
[INFO] [stdout] test vault::tests::search_case_sensitive ... ok
[INFO] [stdout] test vault::tests::search_both_finds_in_filename_and_content ... ok
[INFO] [stdout] test vault::tests::rename_tag_inline ... ok
[INFO] [stdout] test vault::tests::search_vault_blocks_traversal_in_path ... ok
[INFO] [stdout] test vault::tests::search_content_finds_matching_lines ... ok
[INFO] [stdout] test vault::tests::search_with_path_limit ... ok
[INFO] [stdout] test vault::tests::search_tag_finds_frontmatter_tag ... ok
[INFO] [stdout] test vault::tests::search_tag_finds_inline_tag ... ok
[INFO] [stdout] test vault::tests::search_no_results ... ok
[INFO] [stdout] test vault::tests::search_filename_finds_by_name ... ok
[INFO] [stdout] test vault::tests::the_outline_ignores_the_window ... ok
[INFO] [stdout] test vault::tests::trashing_the_same_path_twice_does_not_overwrite_the_first ... ok
[INFO] [stdout] test vault::tests::what_search_returns_is_what_read_note_accepts ... ok
[INFO] [stdout] test vault::tests::wikilinks_orphans_finds_notes_nothing_links_to ... ok
[INFO] [stdout] test vault::walk::tests::hidden_directories_are_not_walked ... ok
[INFO] [stdout] test vault::tests::wikilinks_backlinks_lists_the_linking_notes ... ok
[INFO] [stdout] test vault::write::tests::temp_path_is_sibling_of_target ... ok
[INFO] [stdout] test vault::write::tests::overwrites_existing_file ... ok
[INFO] [stdout] test vault::write::tests::writes_full_contents_and_leaves_no_temp ... ok
[INFO] [stdout] test vault::tests::wikilinks_blocks_traversal ... ok
[INFO] [stdout] test vault::tests::wikilinks_outgoing_lists_this_notes_links ... ok
[INFO] [stdout] test vault::tests::wikilinks_broken_finds_targets_that_do_not_exist ... ok
[INFO] [stdout] test vault::tests::wikilinks_backlinks_requires_a_filename ... ok
[INFO] [stdout] test vault::tests::periodic_list_finds_the_notes_that_exist ... ok
[INFO] [stdout] test vault::tests::a_write_waits_while_another_server_holds_the_lock ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 428 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/obsidian-mcp-rs/dddc5e44a621adfb/out/obsidian_mcp_rs-dddc5e44a621adfb)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test tests::rotate_moves_oversized_file_to_backup ... ok
[INFO] [stdout] test tests::rotate_ignores_missing_file ... ok
[INFO] [stdout] test tests::rotated_path_appends_dot_one ... ok
[INFO] [stdout] test tests::rotate_leaves_small_file_untouched ... ok
[INFO] [stdout] test tests::rotate_replaces_previous_backup ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/mcp_stdio.rs (/opt/rustwide/target/release/build/obsidian-mcp-rs/7453d5d63b0ff899/out/mcp_stdio-7453d5d63b0ff899)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test the_structured_tools_keep_their_output_schema_and_can_report_is_error ... ok
[INFO] [stdout] test no_edit_does_not_advertise_the_write_tools_over_the_wire ... ok
[INFO] [stdout] test note_contents_never_reach_the_log_file ... ok
[INFO] [stderr]      Running tests/orphan_exit.rs (/opt/rustwide/target/release/build/obsidian-mcp-rs/713d5c0446b8bad3/out/orphan_exit-713d5c0446b8bad3)
[INFO] [stdout] test stdio_handshake_lists_tools_and_reads_a_note ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test the_server_still_exits_on_stdin_eof ... ok
[INFO] [stdout] test a_living_parent_does_not_trip_the_watch ... ok
[INFO] [stdout] test the_server_exits_when_its_parent_dies_without_closing_stdin ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- the_server_exits_when_its_parent_dies_without_closing_stdin stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'the_server_exits_when_its_parent_dies_without_closing_stdin' (3216) panicked at tests/orphan_exit.rs:104:13:
[INFO] [stdout] server 3224 outlived its parent by 30s — it is an orphan
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x65440828b666 - <unknown>
[INFO] [stdout]    1:     0x65440823b77a - <unknown>
[INFO] [stdout]    2:     0x654408290dfc - <unknown>
[INFO] [stdout]    3:     0x6544082676e2 - <unknown>
[INFO] [stdout]    4:     0x654408283b01 - <unknown>
[INFO] [stdout]    5:     0x654408283ce2 - <unknown>
[INFO] [stdout]    6:     0x654408267792 - <unknown>
[INFO] [stdout]    7:     0x654408260489 - <unknown>
[INFO] [stdout]    8:     0x6544082683ad - <unknown>
[INFO] [stdout]    9:     0x65440823be6c - <unknown>
[INFO] [stdout]   10:     0x65440824dab1 - <unknown>
[INFO] [stdout]   11:     0x65440829325b - <unknown>
[INFO] [stdout]   12:     0x6544082a1104 - <unknown>
[INFO] [stdout]   13:     0x65440829a834 - <unknown>
[INFO] [stdout]   14:     0x6544082a4ec2 - <unknown>
[INFO] [stdout]   15:     0x65440828ac34 - <unknown>
[INFO] [stdout]   16:     0x730aac36adfa - <unknown>
[INFO] [stdout]   17:     0x730aac3fe3d4 - clone
[INFO] [stdout]   18:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     the_server_exits_when_its_parent_dies_without_closing_stdin
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 2 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 31.20s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--test orphan_exit`
[INFO] running `Command { std: "docker" "inspect" "9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177", kill_on_drop: false }`
[INFO] [stdout] 9384c4130a582006efdd6afd49d0c383d5209d18a787dffa28c64f8967519177
