these 2 derivations will be built: /nix/store/x776maaj3bn074n9g078ccajlkgjd2ab-biomcp-0.9.3-vendor.drv /nix/store/a86pkbfww34x8km0akfp3787xy7y6v91-biomcp-0.9.3.drv building '/nix/store/x776maaj3bn074n9g078ccajlkgjd2ab-biomcp-0.9.3-vendor.drv' biomcp-0.9.3-vendor> tribuchet: building on psi biomcp-0.9.3-vendor> structuredAttrs is enabled biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/adler2-2.0.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/aes-0.8.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/aho-corasick-1.1.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/allocator-api2-0.2.21 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/android_system_properties-0.1.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/anstream-0.6.21 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/anstyle-1.0.13 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/anstyle-parse-0.2.7 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/anstyle-query-1.1.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/anstyle-wincon-3.0.11 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/anyhow-1.0.103 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/async-compression-0.4.41 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/async-trait-0.1.89 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/atoi_simd-0.18.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/atomic-waker-1.1.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/autocfg-1.5.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/axum-0.8.8 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/axum-core-0.5.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/base64-0.21.7 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/base64-0.22.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/bincode-1.3.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/bit-set-0.8.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/bit-vec-0.8.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/bitflags-1.3.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/bitflags-2.11.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/block-buffer-0.10.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/block-buffer-0.12.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/block-padding-0.3.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/bumpalo-3.20.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/byteorder-1.5.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/bytes-1.11.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/bytesize-1.3.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/cacache-13.1.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/calamine-0.36.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/cbc-0.1.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/cc-1.2.56 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/cfg-if-1.0.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/cfg_aliases-0.2.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/chacha20-0.10.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/chrono-0.4.44 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/cipher-0.4.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/cipher-0.5.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/clap-4.5.60 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/clap_builder-4.5.60 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/clap_derive-4.5.55 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/clap_lex-1.0.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/codepage-0.1.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/colorchoice-1.0.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/colorous-1.0.16 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/comma-1.0.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/compression-codecs-0.4.37 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/compression-core-0.4.31 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/core-foundation-0.10.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/core-foundation-sys-0.8.7 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/core_detect-1.0.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/core_maths-0.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/cpufeatures-0.2.17 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/cpufeatures-0.3.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/crc32fast-1.5.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/crossbeam-channel-0.5.15 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/crossbeam-deque-0.8.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/crossbeam-epoch-0.9.20 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/crossbeam-utils-0.8.21 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/crypto-common-0.1.7 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/crypto-common-0.2.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/cssparser-0.37.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/cssparser-macros-0.7.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/csv-1.4.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/csv-core-0.1.13 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/darling-0.23.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/darling_core-0.23.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/darling_macro-0.23.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/debug_unsafe-0.1.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/deranged-0.5.8 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/derive_more-2.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/derive_more-impl-2.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/digest-0.10.7 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/dirs-5.0.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/dirs-sys-0.4.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/displaydoc-0.2.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/dom_query-0.28.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/dom_smoothie-0.18.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/dtoa-1.0.11 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/dtoa-short-0.3.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/dyn-clone-1.0.20 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/ego-tree-0.11.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/either-1.15.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/encoding_rs-0.8.42 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/equivalent-1.0.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/errno-0.3.14 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/fast-float2-0.2.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/fastrand-2.3.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/fdeflate-0.3.7 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/filetime-0.2.27 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/find-msvc-tools-0.1.9 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/flagset-0.4.7 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/flate2-1.1.9 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/fnv-1.0.7 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/foldhash-0.1.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/foldhash-0.2.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/fontdue-0.9.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/form_urlencoded-1.2.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/futures-0.3.32 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/futures-channel-0.3.32 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/futures-core-0.3.32 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/futures-executor-0.3.32 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/futures-io-0.3.32 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/futures-macro-0.3.32 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/futures-sink-0.3.32 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/futures-task-0.3.32 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/futures-util-0.3.32 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/generic-array-0.14.7 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/getrandom-0.2.17 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/getrandom-0.3.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/getrandom-0.4.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/gjson-0.8.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/h2-0.4.16 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/hashbrown-0.12.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/hashbrown-0.15.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/hashbrown-0.16.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/heck-0.5.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/hex-0.4.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/htmd-0.5.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/html-escape-0.2.15 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/html5ever-0.38.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/html5ever-0.39.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/http-1.4.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/http-body-1.0.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/http-body-util-0.1.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/http-cache-0.20.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/http-cache-reqwest-0.15.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/http-cache-semantics-2.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/http-serde-2.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/httparse-1.10.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/httpdate-1.0.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/humantime-2.3.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/hybrid-array-0.4.10 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/hyper-1.8.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/hyper-rustls-0.27.7 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/hyper-timeout-0.5.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/hyper-util-0.1.20 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/iana-time-zone-0.1.65 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/iana-time-zone-haiku-0.1.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/icu_collections-2.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/icu_locale_core-2.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/icu_normalizer-2.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/icu_normalizer_data-2.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/icu_properties-2.1.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/icu_properties_data-2.1.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/icu_provider-2.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/id-arena-2.3.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/ident_case-1.0.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/idna-1.1.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/idna_adapter-1.2.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/indexmap-1.9.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/indexmap-2.13.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/inout-0.1.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/inout-0.2.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/instant-0.1.13 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/ipnet-2.12.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/iri-string-0.7.10 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/is_terminal_polyfill-1.70.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/itertools-0.14.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/itoa-1.0.17 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/jobserver-0.1.34 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/js-sys-0.3.91 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/kuva-0.5.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/lazy_static-1.5.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/leb128fmt-0.1.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/libc-0.2.190 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/libm-0.2.16 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/libredox-0.1.14 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/linux-raw-sys-0.12.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/litemap-0.8.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/lock_api-0.4.14 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/log-0.4.34 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/lru-slab-0.1.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/markup5ever-0.38.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/markup5ever-0.39.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/markup5ever_rcdom-0.38.0+unofficial biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/matchers-0.2.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/matchit-0.8.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/md-5-0.10.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/md5-0.7.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/memchr-2.8.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/memmap2-0.5.10 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/miette-5.10.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/miette-derive-5.10.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/mime-0.3.17 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/mime_guess-2.0.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/minijinja-2.17.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/miniz_oxide-0.8.9 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/mio-1.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/multiversion_no_op-1.0.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/new_debug_unreachable-1.0.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/nix-0.31.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/nom-8.0.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/nu-ansi-term-0.50.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/num-conv-0.2.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/num-traits-0.2.19 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/num_threads-0.1.7 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/once_cell-1.21.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/once_cell_polyfill-1.70.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/openssl-probe-0.2.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/option-ext-0.2.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/parking_lot-0.11.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/parking_lot-0.12.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/parking_lot_core-0.8.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/parking_lot_core-0.9.12 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/pastey-0.2.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/pem-3.0.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/percent-encoding-2.3.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/phf-0.13.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/phf_codegen-0.13.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/phf_generator-0.13.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/phf_macros-0.13.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/phf_shared-0.13.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/pin-project-1.1.11 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/pin-project-internal-1.1.11 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/pin-project-lite-0.2.17 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/pin-utils-0.1.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/pkg-config-0.3.32 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/plain-0.2.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/png-0.18.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/potential_utf-0.1.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/powerfmt-0.2.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/ppv-lite86-0.2.21 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/precomputed-hash-0.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/prettyplease-0.2.37 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/proc-macro2-1.0.106 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/process-wrap-9.1.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/prost-0.13.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/prost-derive-0.13.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/quick-xml-0.41.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/quinn-0.11.9 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/quinn-proto-0.11.15 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/quinn-udp-0.5.14 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/quote-1.0.45 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/r-efi-5.3.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/r-efi-6.0.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rand-0.8.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rand-0.9.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rand-0.10.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rand_chacha-0.3.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rand_chacha-0.9.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rand_core-0.6.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rand_core-0.9.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rand_core-0.10.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rayon-1.12.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rayon-core-1.13.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rc4-0.2.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rcgen-0.13.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/redox_syscall-0.2.16 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/redox_syscall-0.5.18 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/redox_syscall-0.7.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/redox_users-0.4.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/ref-cast-1.0.25 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/ref-cast-impl-1.0.25 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/reflink-copy-0.1.29 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/regex-1.12.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/regex-automata-0.4.14 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/regex-syntax-0.8.10 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/reqwest-0.12.28 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/reqwest-0.13.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/reqwest-middleware-0.4.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/reqwest-retry-0.7.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/retry-policies-0.4.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rexpect-0.7.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/ring-0.17.14 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rmcp-1.7.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rmcp-macros-1.7.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/roxmltree-0.20.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rust-embed-8.11.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rust-embed-impl-8.11.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rust-embed-utils-8.11.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rustc-hash-2.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rustc_version-0.4.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rustix-1.1.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rustls-0.23.46 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rustls-native-certs-0.8.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rustls-pemfile-2.2.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rustls-pki-types-1.14.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rustls-webpki-0.103.15 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/rustversion-1.0.22 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/ryu-1.0.23 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/same-file-1.0.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/schannel-0.1.28 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/schemars-1.2.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/schemars_derive-1.2.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/scopeguard-1.2.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/scraper-0.27.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/security-framework-3.7.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/security-framework-sys-2.17.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/selectors-0.38.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/semver-1.0.27 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/serde-1.0.228 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/serde_core-1.0.228 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/serde_derive-1.0.228 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/serde_derive_internals-0.29.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/serde_json-1.0.149 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/serde_path_to_error-0.1.20 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/serde_spanned-0.6.9 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/serde_urlencoded-0.7.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/serial_test-3.5.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/serial_test_derive-3.5.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/servo_arc-0.4.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/sha-1-0.10.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/sha1-0.10.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/sha2-0.10.9 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/sharded-slab-0.1.7 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/shlex-1.3.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/signal-hook-registry-1.4.8 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/simd-adler32-0.3.10 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/simdutf8-0.1.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/siphasher-1.0.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/slab-0.4.12 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/smallvec-1.15.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/socket2-0.6.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/sse-stream-0.2.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/ssri-9.2.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/stable_deref_trait-1.2.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/string_cache-0.9.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/string_cache_codegen-0.6.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/strsim-0.11.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/subtle-2.6.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/syn-2.0.117 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/sync_wrapper-1.0.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/synstructure-0.13.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tar-0.4.46 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tempfile-3.26.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tendril-0.5.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/thiserror-1.0.69 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/thiserror-2.0.18 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/thiserror-impl-1.0.69 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/thiserror-impl-2.0.18 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/thread_local-1.1.9 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/time-0.3.47 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/time-core-0.1.8 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/time-macros-0.2.27 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tinystr-0.8.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tinyvec-1.10.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tinyvec_macros-0.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tokio-1.50.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tokio-macros-2.6.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tokio-rustls-0.26.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tokio-stream-0.1.18 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tokio-util-0.7.18 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/toml-0.8.23 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/toml_datetime-0.6.11 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/toml_edit-0.22.27 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/toml_write-0.1.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tonic-0.12.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tower-0.4.13 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tower-0.5.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tower-http-0.6.8 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tower-layer-0.3.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tower-service-0.3.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tracing-0.1.44 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tracing-attributes-0.1.31 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tracing-core-0.1.36 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tracing-log-0.2.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/tracing-subscriber-0.3.22 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/try-lock-0.2.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/ttf-parser-0.25.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/typed-path-0.12.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/typenum-1.19.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/unicase-2.9.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/unicode-bidi-0.3.18 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/unicode-ident-1.0.24 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/unicode-normalization-0.1.25 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/unicode-segmentation-1.13.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/unicode-width-0.1.14 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/unicode-xid-0.2.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/unpdf-0.4.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/untrusted-0.9.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/url-2.5.8 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/utf-8-0.7.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/utf8_iter-1.0.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/utf8parse-0.2.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/uuid-1.22.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/valuable-0.1.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/version_check-0.9.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/walkdir-2.5.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/want-0.3.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasi-0.11.1+wasi-snapshot-preview1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasip2-1.0.2+wasi-0.2.9 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasm-bindgen-0.2.114 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasm-bindgen-futures-0.4.64 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasm-bindgen-macro-0.2.114 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasm-bindgen-macro-support-0.2.114 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasm-bindgen-shared-0.2.114 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasm-encoder-0.244.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasm-metadata-0.244.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasm-streams-0.5.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasm-timer-0.2.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wasmparser-0.244.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/web-sys-0.3.91 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/web-time-1.1.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/web_atoms-0.2.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/webpki-roots-1.0.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/winapi-0.3.9 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/winapi-i686-pc-windows-gnu-0.4.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/winapi-util-0.1.11 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/winapi-x86_64-pc-windows-gnu-0.4.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-0.62.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-collections-0.3.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-core-0.62.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-future-0.3.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-implement-0.60.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-interface-0.59.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-link-0.2.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-numerics-0.3.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-result-0.4.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-strings-0.5.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-sys-0.48.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-sys-0.52.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-sys-0.60.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-sys-0.61.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-targets-0.48.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-targets-0.52.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-targets-0.53.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows-threading-0.2.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_aarch64_gnullvm-0.48.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_aarch64_gnullvm-0.52.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_aarch64_gnullvm-0.53.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_aarch64_msvc-0.48.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_aarch64_msvc-0.52.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_aarch64_msvc-0.53.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_i686_gnu-0.48.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_i686_gnu-0.52.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_i686_gnu-0.53.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_i686_gnullvm-0.52.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_i686_gnullvm-0.53.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_i686_msvc-0.48.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_i686_msvc-0.52.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_i686_msvc-0.53.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_x86_64_gnu-0.48.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_x86_64_gnu-0.52.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_x86_64_gnu-0.53.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_x86_64_gnullvm-0.48.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_x86_64_gnullvm-0.52.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_x86_64_gnullvm-0.53.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_x86_64_msvc-0.48.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_x86_64_msvc-0.52.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/windows_x86_64_msvc-0.53.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/winnow-0.7.15 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wit-bindgen-0.51.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wit-bindgen-core-0.51.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wit-bindgen-rust-0.51.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wit-bindgen-rust-macro-0.51.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wit-component-0.244.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/wit-parser-0.244.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/writeable-0.6.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/xattr-1.6.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/xml5ever-0.38.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/xxhash-rust-0.8.15 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/yasna-0.5.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/yoke-0.8.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/yoke-derive-0.8.1 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zerocopy-0.8.40 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zerocopy-derive-0.8.40 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zerofrom-0.1.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zerofrom-derive-0.1.6 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zeroize-1.8.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zerotrie-0.2.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zerovec-0.11.5 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zerovec-derive-0.11.2 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zip-8.6.0 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zip-9.0.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zlib-rs-0.6.8 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zmij-1.0.21 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zopfli-0.8.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zstd-0.13.3 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zstd-safe-7.2.4 biomcp-0.9.3-vendor> Unpacking to /nix/store/fck47mdrw0i4pm7wyx5vgifz1xkqhybc-biomcp-0.9.3-vendor/source-registry-0/zstd-sys-2.0.16+zstd.1.5.7 building '/nix/store/a86pkbfww34x8km0akfp3787xy7y6v91-biomcp-0.9.3.drv' biomcp-0.9.3> tribuchet: building on psi biomcp-0.9.3> structuredAttrs is enabled biomcp-0.9.3> Running phase: unpackPhase biomcp-0.9.3> unpacking source archive /nix/store/5n991b4z901g4fbd9wp50x9fxw9ajbqx-source biomcp-0.9.3> source root is source biomcp-0.9.3> Executing cargoSetupPostUnpackHook biomcp-0.9.3> Finished cargoSetupPostUnpackHook biomcp-0.9.3> Running phase: patchPhase biomcp-0.9.3> Executing cargoSetupPostPatchHook biomcp-0.9.3> Validating consistency between /build/source/Cargo.lock and /build/biomcp-0.9.3-vendor/Cargo.lock biomcp-0.9.3> Finished cargoSetupPostPatchHook biomcp-0.9.3> Running phase: updateAutotoolsGnuConfigScriptsPhase biomcp-0.9.3> Running phase: configurePhase biomcp-0.9.3> Running phase: buildPhase biomcp-0.9.3> Executing cargoBuildHook biomcp-0.9.3> cargoBuildHook flags: -j 24 --target x86_64-unknown-linux-gnu --offline --profile release biomcp-0.9.3> Compiling proc-macro2 v1.0.106 biomcp-0.9.3> Compiling unicode-ident v1.0.24 biomcp-0.9.3> Compiling quote v1.0.45 biomcp-0.9.3> Compiling libc v0.2.190 biomcp-0.9.3> Compiling cfg-if v1.0.4 biomcp-0.9.3> Compiling serde_core v1.0.228 biomcp-0.9.3> Compiling memchr v2.8.0 biomcp-0.9.3> Compiling serde v1.0.228 biomcp-0.9.3> Compiling itoa v1.0.17 biomcp-0.9.3> Compiling smallvec v1.15.1 biomcp-0.9.3> Compiling bytes v1.11.1 biomcp-0.9.3> Compiling pin-project-lite v0.2.17 biomcp-0.9.3> Compiling version_check v0.9.5 biomcp-0.9.3> Compiling typenum v1.19.0 biomcp-0.9.3> Compiling futures-core v0.3.32 biomcp-0.9.3> Compiling once_cell v1.21.3 biomcp-0.9.3> Compiling log v0.4.34 biomcp-0.9.3> Compiling futures-sink v0.3.32 biomcp-0.9.3> Compiling stable_deref_trait v1.2.1 biomcp-0.9.3> Compiling siphasher v1.0.2 biomcp-0.9.3> Compiling fastrand v2.3.0 biomcp-0.9.3> Compiling slab v0.4.12 biomcp-0.9.3> Compiling equivalent v1.0.2 biomcp-0.9.3> Compiling find-msvc-tools v0.1.9 biomcp-0.9.3> Compiling shlex v1.3.0 biomcp-0.9.3> Compiling futures-task v0.3.32 biomcp-0.9.3> Compiling futures-io v0.3.32 biomcp-0.9.3> Compiling scopeguard v1.2.0 biomcp-0.9.3> Compiling bitflags v2.11.0 biomcp-0.9.3> Compiling hashbrown v0.16.1 biomcp-0.9.3> Compiling futures-channel v0.3.32 biomcp-0.9.3> Compiling crc32fast v1.5.2 biomcp-0.9.3> Compiling simd-adler32 v0.3.10 biomcp-0.9.3> Compiling phf_shared v0.13.1 biomcp-0.9.3> Compiling zmij v1.0.21 biomcp-0.9.3> Compiling adler2 v2.0.1 biomcp-0.9.3> Compiling parking_lot_core v0.9.12 biomcp-0.9.3> Compiling new_debug_unreachable v1.0.6 biomcp-0.9.3> Compiling tracing-core v0.1.36 biomcp-0.9.3> Compiling tower-service v0.3.3 biomcp-0.9.3> Compiling zlib-rs v0.6.8 biomcp-0.9.3> Compiling lock_api v0.4.14 biomcp-0.9.3> Compiling autocfg v1.5.0 biomcp-0.9.3> Compiling zeroize v1.8.2 biomcp-0.9.3> Compiling generic-array v0.14.7 biomcp-0.9.3> Compiling percent-encoding v2.3.2 biomcp-0.9.3> Compiling miniz_oxide v0.8.9 biomcp-0.9.3> Compiling precomputed-hash v0.1.1 biomcp-0.9.3> Compiling writeable v0.6.2 biomcp-0.9.3> Compiling httparse v1.10.1 biomcp-0.9.3> Compiling litemap v0.8.1 biomcp-0.9.3> Compiling phf_generator v0.13.1 biomcp-0.9.3> Compiling rustls-pki-types v1.14.0 biomcp-0.9.3> Compiling serde_json v1.0.149 biomcp-0.9.3> Compiling utf-8 v0.7.6 biomcp-0.9.3> Compiling icu_normalizer_data v2.1.1 biomcp-0.9.3> Compiling fnv v1.0.7 biomcp-0.9.3> Compiling phf_codegen v0.13.1 biomcp-0.9.3> Compiling icu_properties_data v2.1.2 biomcp-0.9.3> Compiling cpufeatures v0.2.17 biomcp-0.9.3> Compiling atomic-waker v1.1.2 biomcp-0.9.3> Compiling httpdate v1.0.3 biomcp-0.9.3> Compiling try-lock v0.2.5 biomcp-0.9.3> Compiling tendril v0.5.0 biomcp-0.9.3> Compiling pin-utils v0.1.0 biomcp-0.9.3> Compiling base64 v0.22.1 biomcp-0.9.3> Compiling want v0.3.1 biomcp-0.9.3> Compiling anyhow v1.0.103 biomcp-0.9.3> Compiling untrusted v0.9.0 biomcp-0.9.3> Compiling tower-layer v0.3.3 biomcp-0.9.3> Compiling http v1.4.0 biomcp-0.9.3> Compiling ipnet v2.12.0 biomcp-0.9.3> Compiling rustix v1.1.4 biomcp-0.9.3> Compiling thiserror v1.0.69 biomcp-0.9.3> Compiling zerocopy v0.8.40 biomcp-0.9.3> Compiling rustversion v1.0.22 biomcp-0.9.3> Compiling rustls v0.23.46 biomcp-0.9.3> Compiling getrandom v0.4.2 biomcp-0.9.3> Compiling indexmap v2.13.0 biomcp-0.9.3> Compiling rand_core v0.10.0 biomcp-0.9.3> Compiling sync_wrapper v1.0.2 biomcp-0.9.3> Compiling crossbeam-utils v0.8.21 biomcp-0.9.3> Compiling linux-raw-sys v0.12.1 biomcp-0.9.3> Compiling subtle v2.6.1 biomcp-0.9.3> Compiling num-traits v0.2.19 biomcp-0.9.3> Compiling form_urlencoded v1.2.2 biomcp-0.9.3> Compiling ryu v1.0.23 biomcp-0.9.3> Compiling unicase v2.9.0 biomcp-0.9.3> Compiling syn v2.0.117 biomcp-0.9.3> Compiling string_cache_codegen v0.6.1 biomcp-0.9.3> Compiling mime v0.3.17 biomcp-0.9.3> Compiling utf8_iter v1.0.4 biomcp-0.9.3> Compiling compression-core v0.4.31 biomcp-0.9.3> Compiling same-file v1.0.6 biomcp-0.9.3> Compiling mime_guess v2.0.5 biomcp-0.9.3> Compiling pkg-config v0.3.32 biomcp-0.9.3> Compiling crossbeam-epoch v0.9.20 biomcp-0.9.3> Compiling libm v0.2.16 biomcp-0.9.3> Compiling hybrid-array v0.4.10 biomcp-0.9.3> Compiling dtoa v1.0.11 biomcp-0.9.3> Compiling dtoa-short v0.3.5 biomcp-0.9.3> Compiling walkdir v2.5.0 biomcp-0.9.3> Compiling web_atoms v0.2.4 biomcp-0.9.3> Compiling webpki-roots v1.0.6 biomcp-0.9.3> Compiling selectors v0.38.0 biomcp-0.9.3> Compiling aho-corasick v1.1.4 biomcp-0.9.3> Compiling thiserror v2.0.18 biomcp-0.9.3> Compiling ident_case v1.0.1 biomcp-0.9.3> Compiling iana-time-zone v0.1.65 biomcp-0.9.3> Compiling jobserver v0.1.34 biomcp-0.9.3> Compiling errno v0.3.14 biomcp-0.9.3> Compiling socket2 v0.6.2 biomcp-0.9.3> Compiling mio v1.1.1 biomcp-0.9.3> Compiling getrandom v0.2.17 biomcp-0.9.3> Compiling http-body v1.0.1 biomcp-0.9.3> Compiling signal-hook-registry v1.4.8 biomcp-0.9.3> Compiling cc v1.2.56 biomcp-0.9.3> Compiling http-body-util v0.1.3 biomcp-0.9.3> Compiling rand_core v0.6.4 biomcp-0.9.3> Compiling encoding_rs v0.8.42 biomcp-0.9.3> Compiling either v1.15.0 biomcp-0.9.3> Compiling parking_lot v0.12.5 biomcp-0.9.3> Compiling powerfmt v0.2.0 biomcp-0.9.3> Compiling crypto-common v0.1.7 biomcp-0.9.3> Compiling block-buffer v0.10.4 biomcp-0.9.3> Compiling block-padding v0.3.3 biomcp-0.9.3> Compiling iri-string v0.7.10 biomcp-0.9.3> Compiling strsim v0.11.1 biomcp-0.9.3> Compiling digest v0.10.7 biomcp-0.9.3> Compiling regex-syntax v0.8.10 biomcp-0.9.3> Compiling unicode-width v0.1.14 biomcp-0.9.3> Compiling deranged v0.5.8 biomcp-0.9.3> Compiling inout v0.1.4 biomcp-0.9.3> Compiling sha2 v0.10.9 biomcp-0.9.3> Compiling sha-1 v0.10.1 biomcp-0.9.3> Compiling indexmap v1.9.3 biomcp-0.9.3> Compiling servo_arc v0.4.3 biomcp-0.9.3> Compiling rayon-core v1.13.0 biomcp-0.9.3> Compiling xxhash-rust v0.8.15 biomcp-0.9.3> Compiling num_threads v0.1.7 biomcp-0.9.3> Compiling core_detect v1.0.0 biomcp-0.9.3> Compiling rustc-hash v2.1.1 biomcp-0.9.3> Compiling simdutf8 v0.1.5 biomcp-0.9.3> Compiling ref-cast v1.0.25 biomcp-0.9.3> Compiling num-conv v0.2.0 biomcp-0.9.3> Compiling hex v0.4.3 biomcp-0.9.3> Compiling base64 v0.21.7 biomcp-0.9.3> Compiling time-core v0.1.8 biomcp-0.9.3> Compiling utf8parse v0.2.2 biomcp-0.9.3> Compiling multiversion_no_op v1.0.0 biomcp-0.9.3> Compiling anstyle-parse v0.2.7 biomcp-0.9.3> Compiling itertools v0.14.0 biomcp-0.9.3> Compiling crossbeam-deque v0.8.6 biomcp-0.9.3> Compiling sha1 v0.10.6 biomcp-0.9.3> Compiling cipher v0.4.4 biomcp-0.9.3> Compiling block-buffer v0.12.0 biomcp-0.9.3> Compiling inout v0.2.2 biomcp-0.9.3> Compiling crypto-common v0.2.1 biomcp-0.9.3> Compiling memmap2 v0.5.10 biomcp-0.9.3> Compiling is_terminal_polyfill v1.70.2 biomcp-0.9.3> Compiling foldhash v0.1.5 biomcp-0.9.3> Compiling bumpalo v3.20.3 biomcp-0.9.3> Compiling cpufeatures v0.3.0 biomcp-0.9.3> Compiling allocator-api2 v0.2.21 biomcp-0.9.3> Compiling bit-vec v0.8.0 biomcp-0.9.3> Compiling colorchoice v1.0.4 biomcp-0.9.3> Compiling hashbrown v0.12.3 biomcp-0.9.3> Compiling anstyle v1.0.13 biomcp-0.9.3> Compiling flate2 v1.1.9 biomcp-0.9.3> Compiling typed-path v0.12.3 biomcp-0.9.3> Compiling anstyle-query v1.1.5 biomcp-0.9.3> Compiling zstd-safe v7.2.4 biomcp-0.9.3> Compiling tinyvec_macros v0.1.1 biomcp-0.9.3> Compiling tinyvec v1.10.0 biomcp-0.9.3> Compiling anstream v0.6.21 biomcp-0.9.3> Compiling core_maths v0.1.1 biomcp-0.9.3> Compiling ttf-parser v0.25.1 biomcp-0.9.3> Compiling tempfile v3.26.0 biomcp-0.9.3> Compiling reflink-copy v0.1.29 biomcp-0.9.3> Compiling ring v0.17.14 biomcp-0.9.3> Compiling zstd-sys v2.0.16+zstd.1.5.7 biomcp-0.9.3> Compiling compression-codecs v0.4.37 biomcp-0.9.3> Compiling time v0.3.47 biomcp-0.9.3> Compiling hashbrown v0.15.5 biomcp-0.9.3> Compiling zopfli v0.8.4 biomcp-0.9.3> Compiling cipher v0.5.1 biomcp-0.9.3> Compiling bit-set v0.8.0 biomcp-0.9.3> Compiling chacha20 v0.10.2 biomcp-0.9.3> Compiling rust-embed-utils v8.11.0 biomcp-0.9.3> Compiling nom v8.0.0 biomcp-0.9.3> Compiling fdeflate v0.3.7 biomcp-0.9.3> Compiling openssl-probe v0.2.1 biomcp-0.9.3> Compiling dyn-clone v1.0.20 biomcp-0.9.3> Compiling foldhash v0.2.0 biomcp-0.9.3> Compiling lazy_static v1.5.0 biomcp-0.9.3> Compiling option-ext v0.2.0 biomcp-0.9.3> Compiling regex-automata v0.4.14 biomcp-0.9.3> Compiling rmcp v1.7.0 biomcp-0.9.3> Compiling kuva v0.5.0 biomcp-0.9.3> Compiling toml_write v0.1.2 biomcp-0.9.3> Compiling unpdf v0.4.5 biomcp-0.9.3> Compiling heck v0.5.0 biomcp-0.9.3> Compiling clap_lex v1.0.0 biomcp-0.9.3> Compiling debug_unsafe v0.1.4 biomcp-0.9.3> Compiling winnow v0.7.15 biomcp-0.9.3> Compiling atoi_simd v0.18.1 biomcp-0.9.3> Compiling rayon v1.12.0 biomcp-0.9.3> Compiling clap_builder v4.5.60 biomcp-0.9.3> Compiling zip v8.6.0 biomcp-0.9.3> Compiling png v0.18.1 biomcp-0.9.3> Compiling sharded-slab v0.1.7 biomcp-0.9.3> Compiling dirs-sys v0.4.1 biomcp-0.9.3> Compiling rustls-native-certs v0.8.3 biomcp-0.9.3> Compiling rand v0.10.1 biomcp-0.9.3> Compiling fontdue v0.9.4 biomcp-0.9.3> Compiling synstructure v0.13.2 biomcp-0.9.3> Compiling darling_core v0.23.0 biomcp-0.9.3> Compiling serde_derive_internals v0.29.1 biomcp-0.9.3> Compiling quick-xml v0.41.0 biomcp-0.9.3> Compiling ppv-lite86 v0.2.21 biomcp-0.9.3> Compiling codepage v0.1.3 biomcp-0.9.3> Compiling rc4 v0.2.0 biomcp-0.9.3> Compiling unicode-normalization v0.1.25 biomcp-0.9.3> Compiling xattr v1.6.1 biomcp-0.9.3> Compiling serde_path_to_error v0.1.20 biomcp-0.9.3> Compiling aes v0.8.4 biomcp-0.9.3> Compiling cbc v0.1.2 biomcp-0.9.3> Compiling md-5 v0.10.6 biomcp-0.9.3> Compiling rand_chacha v0.3.1 biomcp-0.9.3> Compiling axum-core v0.5.6 biomcp-0.9.3> Compiling uuid v1.22.0 biomcp-0.9.3> Compiling crossbeam-channel v0.5.15 biomcp-0.9.3> Compiling filetime v0.2.27 biomcp-0.9.3> Compiling rustls-pemfile v2.2.0 biomcp-0.9.3> Compiling rand v0.8.6 biomcp-0.9.3> Compiling tracing-log v0.2.0 biomcp-0.9.3> Compiling csv-core v0.1.13 biomcp-0.9.3> Compiling thread_local v1.1.9 biomcp-0.9.3> Compiling ego-tree v0.11.0 biomcp-0.9.3> Compiling html-escape v0.2.15 biomcp-0.9.3> Compiling colorous v1.0.16 biomcp-0.9.3> Compiling nu-ansi-term v0.50.3 biomcp-0.9.3> Compiling unicode-segmentation v1.13.3 biomcp-0.9.3> Compiling gjson v0.8.1 biomcp-0.9.3> Compiling pastey v0.2.1 biomcp-0.9.3> Compiling flagset v0.4.7 biomcp-0.9.3> Compiling matchit v0.8.4 biomcp-0.9.3> Compiling unicode-bidi v0.3.18 biomcp-0.9.3> Compiling byteorder v1.5.0 biomcp-0.9.3> Compiling fast-float2 v0.2.4 biomcp-0.9.3> Compiling csv v1.4.0 biomcp-0.9.3> Compiling tar v0.4.46 biomcp-0.9.3> Compiling dirs v5.0.1 biomcp-0.9.3> Compiling serde_derive v1.0.228 biomcp-0.9.3> Compiling tokio-macros v2.6.1 biomcp-0.9.3> Compiling zerofrom-derive v0.1.6 biomcp-0.9.3> Compiling futures-macro v0.3.32 biomcp-0.9.3> Compiling yoke-derive v0.8.1 biomcp-0.9.3> Compiling zerovec-derive v0.11.2 biomcp-0.9.3> Compiling tracing-attributes v0.1.31 biomcp-0.9.3> Compiling displaydoc v0.2.5 biomcp-0.9.3> Compiling phf_macros v0.13.1 biomcp-0.9.3> Compiling thiserror-impl v1.0.69 biomcp-0.9.3> Compiling async-trait v0.1.89 biomcp-0.9.3> Compiling derive_more-impl v2.1.1 biomcp-0.9.3> Compiling miette-derive v5.10.0 biomcp-0.9.3> Compiling cssparser-macros v0.7.1 biomcp-0.9.3> Compiling tokio v1.50.0 biomcp-0.9.3> Compiling thiserror-impl v2.0.18 biomcp-0.9.3> Compiling futures-util v0.3.32 biomcp-0.9.3> Compiling ref-cast-impl v1.0.25 biomcp-0.9.3> Compiling pin-project-internal v1.1.11 biomcp-0.9.3> Compiling prost-derive v0.13.5 biomcp-0.9.3> Compiling phf v0.13.1 biomcp-0.9.3> Compiling schemars_derive v1.2.1 biomcp-0.9.3> Compiling darling_macro v0.23.0 biomcp-0.9.3> Compiling regex v1.12.3 biomcp-0.9.3> Compiling cssparser v0.37.0 biomcp-0.9.3> Compiling matchers v0.2.0 biomcp-0.9.3> Compiling zerofrom v0.1.6 biomcp-0.9.3> Compiling retry-policies v0.4.0 biomcp-0.9.3> Compiling yoke v0.8.1 biomcp-0.9.3> Compiling derive_more v2.1.1 biomcp-0.9.3> Compiling rust-embed-impl v8.11.0 biomcp-0.9.3> Compiling clap_derive v4.5.55 biomcp-0.9.3> Compiling zip v9.0.4 biomcp-0.9.3> Compiling tracing v0.1.44 biomcp-0.9.3> Compiling humantime v2.3.0 biomcp-0.9.3> Compiling md5 v0.7.0 biomcp-0.9.3> Compiling zerovec v0.11.5 biomcp-0.9.3> Compiling zerotrie v0.2.3 biomcp-0.9.3> Compiling darling v0.23.0 biomcp-0.9.3> Compiling roxmltree v0.20.0 biomcp-0.9.3> Compiling miette v5.10.0 biomcp-0.9.3> Compiling rmcp-macros v1.7.0 biomcp-0.9.3> Compiling tracing-subscriber v0.3.22 biomcp-0.9.3> Compiling semver v1.0.27 biomcp-0.9.3> Compiling bytesize v1.3.3 biomcp-0.9.3> Compiling pin-project v1.1.11 biomcp-0.9.3> Compiling rust-embed v8.11.0 biomcp-0.9.3> Compiling tinystr v0.8.2 biomcp-0.9.3> Compiling potential_utf v0.1.4 biomcp-0.9.3> Compiling icu_collections v2.1.1 biomcp-0.9.3> Compiling icu_locale_core v2.1.1 biomcp-0.9.3> Compiling prost v0.13.5 biomcp-0.9.3> Compiling clap v4.5.60 biomcp-0.9.3> Compiling icu_provider v2.1.1 biomcp-0.9.3> Compiling string_cache v0.9.0 biomcp-0.9.3> Compiling chrono v0.4.44 biomcp-0.9.3> Compiling serde_urlencoded v0.7.1 biomcp-0.9.3> Compiling ssri v9.2.0 biomcp-0.9.3> Compiling http-serde v2.1.1 biomcp-0.9.3> Compiling icu_normalizer v2.1.1 biomcp-0.9.3> Compiling icu_properties v2.1.2 biomcp-0.9.3> Compiling http-cache-semantics v2.1.1 biomcp-0.9.3> Compiling bincode v1.3.3 biomcp-0.9.3> Compiling futures-executor v0.3.32 biomcp-0.9.3> Compiling toml_datetime v0.6.11 biomcp-0.9.3> Compiling serde_spanned v0.6.9 biomcp-0.9.3> Compiling futures v0.3.32 biomcp-0.9.3> Compiling sse-stream v0.2.1 biomcp-0.9.3> Compiling toml_edit v0.22.27 biomcp-0.9.3> Compiling minijinja v2.17.1 biomcp-0.9.3> Compiling calamine v0.36.1 biomcp-0.9.3> Compiling markup5ever v0.38.0 biomcp-0.9.3> Compiling markup5ever v0.39.0 biomcp-0.9.3> Compiling html5ever v0.39.0 biomcp-0.9.3> Compiling xml5ever v0.38.0 biomcp-0.9.3> Compiling idna_adapter v1.2.1 biomcp-0.9.3> Compiling html5ever v0.38.0 biomcp-0.9.3> Compiling schemars v1.2.1 biomcp-0.9.3> Compiling idna v1.1.0 biomcp-0.9.3> Compiling rustls-webpki v0.103.15 biomcp-0.9.3> Compiling url v2.5.8 biomcp-0.9.3> Compiling dom_query v0.28.0 biomcp-0.9.3> Compiling scraper v0.27.0 biomcp-0.9.3> Compiling markup5ever_rcdom v0.38.0+unofficial biomcp-0.9.3> Compiling tokio-util v0.7.18 biomcp-0.9.3> Compiling tower v0.5.3 biomcp-0.9.3> Compiling async-compression v0.4.41 biomcp-0.9.3> Compiling tokio-stream v0.1.18 biomcp-0.9.3> Compiling htmd v0.5.4 biomcp-0.9.3> Compiling toml v0.8.23 biomcp-0.9.3> Compiling h2 v0.4.16 biomcp-0.9.3> Compiling tower-http v0.6.8 biomcp-0.9.3> Compiling cacache v13.1.0 biomcp-0.9.3> Compiling tower v0.4.13 biomcp-0.9.3> Compiling dom_smoothie v0.18.2 biomcp-0.9.3> Compiling http-cache v0.20.1 biomcp-0.9.3> Compiling hyper v1.8.1 biomcp-0.9.3> Compiling tokio-rustls v0.26.4 biomcp-0.9.3> Compiling hyper-util v0.1.20 biomcp-0.9.3> Compiling zstd v0.13.3 biomcp-0.9.3> Compiling hyper-rustls v0.27.7 biomcp-0.9.3> Compiling hyper-timeout v0.5.2 biomcp-0.9.3> Compiling axum v0.8.8 biomcp-0.9.3> Compiling tonic v0.12.3 biomcp-0.9.3> Compiling reqwest v0.12.28 biomcp-0.9.3> Compiling reqwest-middleware v0.4.2 biomcp-0.9.3> Compiling http-cache-reqwest v0.15.1 biomcp-0.9.3> Compiling reqwest-retry v0.7.0 biomcp-0.9.3> Compiling biomcp-cli v0.9.3 (/build/source) biomcp-0.9.3> warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency biomcp-0.9.3> --> src/entities/article/variant_search.rs:377:64 biomcp-0.9.3> | biomcp-0.9.3> 377 | let _ = self.allocation.identity_verification_reserved.fetch_update( biomcp-0.9.3> | ^^^^^^^^^^^^ biomcp-0.9.3> | biomcp-0.9.3> = note: `#[warn(deprecated)]` on by default biomcp-0.9.3> help: replace the use of the deprecated method biomcp-0.9.3> | biomcp-0.9.3> 377 - let _ = self.allocation.identity_verification_reserved.fetch_update( biomcp-0.9.3> 377 + let _ = self.allocation.identity_verification_reserved.try_update( biomcp-0.9.3> | biomcp-0.9.3> biomcp-0.9.3> warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency biomcp-0.9.3> --> src/entities/article/variant_search.rs:496:22 biomcp-0.9.3> | biomcp-0.9.3> 496 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> | ^^^^^^^^^^^^ biomcp-0.9.3> | biomcp-0.9.3> help: replace the use of the deprecated method biomcp-0.9.3> | biomcp-0.9.3> 496 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> 496 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> | biomcp-0.9.3> biomcp-0.9.3> warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency biomcp-0.9.3> --> src/entities/article/variant_search.rs:521:18 biomcp-0.9.3> | biomcp-0.9.3> 521 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> | ^^^^^^^^^^^^ biomcp-0.9.3> | biomcp-0.9.3> help: replace the use of the deprecated method biomcp-0.9.3> | biomcp-0.9.3> 521 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> 521 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> | biomcp-0.9.3> biomcp-0.9.3> warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency biomcp-0.9.3> --> src/entities/article/variant_search.rs:541:18 biomcp-0.9.3> | biomcp-0.9.3> 541 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> | ^^^^^^^^^^^^ biomcp-0.9.3> | biomcp-0.9.3> help: replace the use of the deprecated method biomcp-0.9.3> | biomcp-0.9.3> 541 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> 541 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> | biomcp-0.9.3> biomcp-0.9.3> warning: `biomcp-cli` (lib) generated 4 warnings (run `cargo fix --lib -p biomcp-cli` to apply 4 suggestions) biomcp-0.9.3> Finished `release` profile [optimized] target(s) in 10m 11s biomcp-0.9.3> Executing cargoInstallPostBuildHook biomcp-0.9.3> Finished cargoInstallPostBuildHook biomcp-0.9.3> Finished cargoBuildHook biomcp-0.9.3> buildPhase completed in 10 minutes 12 seconds biomcp-0.9.3> Running phase: checkPhase biomcp-0.9.3> Executing cargoNextestHook biomcp-0.9.3> cargoNextestHook flags: --target x86_64-unknown-linux-gnu --offline --show-progress=none -j 24 --lib -- biomcp-0.9.3> Compiling proc-macro2 v1.0.106 biomcp-0.9.3> Compiling quote v1.0.45 biomcp-0.9.3> Compiling unicode-ident v1.0.24 biomcp-0.9.3> Compiling cfg-if v1.0.4 biomcp-0.9.3> Compiling libc v0.2.190 biomcp-0.9.3> Compiling serde_core v1.0.228 biomcp-0.9.3> Compiling memchr v2.8.0 biomcp-0.9.3> Compiling serde v1.0.228 biomcp-0.9.3> Compiling itoa v1.0.17 biomcp-0.9.3> Compiling smallvec v1.15.1 biomcp-0.9.3> Compiling pin-project-lite v0.2.17 biomcp-0.9.3> Compiling bytes v1.11.1 biomcp-0.9.3> Compiling futures-core v0.3.32 biomcp-0.9.3> Compiling version_check v0.9.5 biomcp-0.9.3> Compiling once_cell v1.21.3 biomcp-0.9.3> Compiling log v0.4.34 biomcp-0.9.3> Compiling typenum v1.19.0 biomcp-0.9.3> Compiling futures-sink v0.3.32 biomcp-0.9.3> Compiling stable_deref_trait v1.2.1 biomcp-0.9.3> Compiling slab v0.4.12 biomcp-0.9.3> Compiling bitflags v2.11.0 biomcp-0.9.3> Compiling equivalent v1.0.2 biomcp-0.9.3> Compiling siphasher v1.0.2 biomcp-0.9.3> Compiling futures-task v0.3.32 biomcp-0.9.3> Compiling futures-io v0.3.32 biomcp-0.9.3> Compiling shlex v1.3.0 biomcp-0.9.3> Compiling fastrand v2.3.0 biomcp-0.9.3> Compiling find-msvc-tools v0.1.9 biomcp-0.9.3> Compiling hashbrown v0.16.1 biomcp-0.9.3> Compiling crc32fast v1.5.2 biomcp-0.9.3> Compiling simd-adler32 v0.3.10 biomcp-0.9.3> Compiling zmij v1.0.21 biomcp-0.9.3> Compiling scopeguard v1.2.0 biomcp-0.9.3> Compiling adler2 v2.0.1 biomcp-0.9.3> Compiling zlib-rs v0.6.8 biomcp-0.9.3> Compiling parking_lot_core v0.9.12 biomcp-0.9.3> Compiling tower-service v0.3.3 biomcp-0.9.3> Compiling percent-encoding v2.3.2 biomcp-0.9.3> Compiling zeroize v1.8.2 biomcp-0.9.3> Compiling httparse v1.10.1 biomcp-0.9.3> Compiling writeable v0.6.2 biomcp-0.9.3> Compiling litemap v0.8.1 biomcp-0.9.3> Compiling icu_normalizer_data v2.1.1 biomcp-0.9.3> Compiling new_debug_unreachable v1.0.6 biomcp-0.9.3> Compiling autocfg v1.5.0 biomcp-0.9.3> Compiling try-lock v0.2.5 biomcp-0.9.3> Compiling futures-channel v0.3.32 biomcp-0.9.3> Compiling atomic-waker v1.1.2 biomcp-0.9.3> Compiling fnv v1.0.7 biomcp-0.9.3> Compiling base64 v0.22.1 biomcp-0.9.3> Compiling serde_json v1.0.149 biomcp-0.9.3> Compiling httpdate v1.0.3 biomcp-0.9.3> Compiling icu_properties_data v2.1.2 biomcp-0.9.3> Compiling lock_api v0.4.14 biomcp-0.9.3> Compiling pin-utils v0.1.0 biomcp-0.9.3> Compiling precomputed-hash v0.1.1 biomcp-0.9.3> Compiling tower-layer v0.3.3 biomcp-0.9.3> Compiling ipnet v2.12.0 biomcp-0.9.3> Compiling miniz_oxide v0.8.9 biomcp-0.9.3> Compiling want v0.3.1 biomcp-0.9.3> Compiling untrusted v0.9.0 biomcp-0.9.3> Compiling tracing-core v0.1.36 biomcp-0.9.3> Compiling sync_wrapper v1.0.2 biomcp-0.9.3> Compiling phf_shared v0.13.1 biomcp-0.9.3> Compiling utf-8 v0.7.6 biomcp-0.9.3> Compiling rustix v1.1.4 biomcp-0.9.3> Compiling getrandom v0.4.2 biomcp-0.9.3> Compiling anyhow v1.0.103 biomcp-0.9.3> Compiling rand_core v0.10.0 biomcp-0.9.3> Compiling cpufeatures v0.2.17 biomcp-0.9.3> Compiling form_urlencoded v1.2.2 biomcp-0.9.3> Compiling utf8_iter v1.0.4 biomcp-0.9.3> Compiling linux-raw-sys v0.12.1 biomcp-0.9.3> Compiling compression-core v0.4.31 biomcp-0.9.3> Compiling rustls-pki-types v1.14.0 biomcp-0.9.3> Compiling rustls v0.23.46 biomcp-0.9.3> Compiling thiserror v1.0.69 biomcp-0.9.3> Compiling rustversion v1.0.22 biomcp-0.9.3> Compiling subtle v2.6.1 biomcp-0.9.3> Compiling zerocopy v0.8.40 biomcp-0.9.3> Compiling ryu v1.0.23 biomcp-0.9.3> Compiling crossbeam-utils v0.8.21 biomcp-0.9.3> Compiling mime v0.3.17 biomcp-0.9.3> Compiling unicase v2.9.0 biomcp-0.9.3> Compiling iri-string v0.7.10 biomcp-0.9.3> Compiling generic-array v0.14.7 biomcp-0.9.3> Compiling tendril v0.5.0 biomcp-0.9.3> Compiling cfg_aliases v0.2.1 biomcp-0.9.3> Compiling powerfmt v0.2.0 biomcp-0.9.3> Compiling thiserror v2.0.18 biomcp-0.9.3> Compiling libm v0.2.16 biomcp-0.9.3> Compiling num_threads v0.1.7 biomcp-0.9.3> Compiling time-core v0.1.8 biomcp-0.9.3> Compiling nix v0.31.3 biomcp-0.9.3> Compiling ident_case v1.0.1 biomcp-0.9.3> Compiling regex-syntax v0.8.10 biomcp-0.9.3> Compiling phf_generator v0.13.1 biomcp-0.9.3> Compiling mime_guess v2.0.5 biomcp-0.9.3> Compiling pkg-config v0.3.32 biomcp-0.9.3> Compiling num-conv v0.2.0 biomcp-0.9.3> Compiling dtoa v1.0.11 biomcp-0.9.3> Compiling crossbeam-epoch v0.9.20 biomcp-0.9.3> Compiling iana-time-zone v0.1.65 biomcp-0.9.3> Compiling num-traits v0.2.19 biomcp-0.9.3> Compiling deranged v0.5.8 biomcp-0.9.3> Compiling same-file v1.0.6 biomcp-0.9.3> Compiling phf_codegen v0.13.1 biomcp-0.9.3> Compiling strsim v0.11.1 biomcp-0.9.3> Compiling ref-cast v1.0.25 biomcp-0.9.3> Compiling unicode-width v0.1.14 biomcp-0.9.3> Compiling dtoa-short v0.3.5 biomcp-0.9.3> Compiling walkdir v2.5.0 biomcp-0.9.3> Compiling either v1.15.0 biomcp-0.9.3> Compiling aho-corasick v1.1.4 biomcp-0.9.3> Compiling indexmap v1.9.3 biomcp-0.9.3> Compiling http v1.4.0 biomcp-0.9.3> Compiling selectors v0.38.0 biomcp-0.9.3> Compiling servo_arc v0.4.3 biomcp-0.9.3> Compiling rustc-hash v2.1.1 biomcp-0.9.3> Compiling webpki-roots v1.0.6 biomcp-0.9.3> Compiling multiversion_no_op v1.0.0 biomcp-0.9.3> Compiling rayon-core v1.13.0 biomcp-0.9.3> Compiling xxhash-rust v0.8.15 biomcp-0.9.3> Compiling core_detect v1.0.0 biomcp-0.9.3> Compiling hex v0.4.3 biomcp-0.9.3> Compiling simdutf8 v0.1.5 biomcp-0.9.3> Compiling base64 v0.21.7 biomcp-0.9.3> Compiling cpufeatures v0.3.0 biomcp-0.9.3> Compiling indexmap v2.13.0 biomcp-0.9.3> Compiling utf8parse v0.2.2 biomcp-0.9.3> Compiling anstyle-query v1.1.5 biomcp-0.9.3> Compiling allocator-api2 v0.2.21 biomcp-0.9.3> Compiling is_terminal_polyfill v1.70.2 biomcp-0.9.3> Compiling bumpalo v3.20.3 biomcp-0.9.3> Compiling chacha20 v0.10.2 biomcp-0.9.3> Compiling hashbrown v0.12.3 biomcp-0.9.3> Compiling dyn-clone v1.0.20 biomcp-0.9.3> Compiling itertools v0.14.0 biomcp-0.9.3> Compiling anstyle-parse v0.2.7 biomcp-0.9.3> Compiling bit-vec v0.8.0 biomcp-0.9.3> Compiling rmcp v1.7.0 biomcp-0.9.3> Compiling colorchoice v1.0.4 biomcp-0.9.3> Compiling zstd-safe v7.2.4 biomcp-0.9.3> Compiling typed-path v0.12.3 biomcp-0.9.3> Compiling foldhash v0.1.5 biomcp-0.9.3> Compiling tinyvec_macros v0.1.1 biomcp-0.9.3> Compiling anstyle v1.0.13 biomcp-0.9.3> Compiling nom v8.0.0 biomcp-0.9.3> Compiling fdeflate v0.3.7 biomcp-0.9.3> Compiling foldhash v0.2.0 biomcp-0.9.3> Compiling toml_write v0.1.2 biomcp-0.9.3> Compiling pastey v0.2.1 biomcp-0.9.3> Compiling openssl-probe v0.2.1 biomcp-0.9.3> Compiling tinyvec v1.10.0 biomcp-0.9.3> Compiling option-ext v0.2.0 biomcp-0.9.3> Compiling lazy_static v1.5.0 biomcp-0.9.3> Compiling debug_unsafe v0.1.4 biomcp-0.9.3> Compiling heck v0.5.0 biomcp-0.9.3> Compiling zopfli v0.8.4 biomcp-0.9.3> Compiling kuva v0.5.0 biomcp-0.9.3> Compiling winnow v0.7.15 biomcp-0.9.3> Compiling bit-set v0.8.0 biomcp-0.9.3> Compiling clap_lex v1.0.0 biomcp-0.9.3> Compiling unpdf v0.4.5 biomcp-0.9.3> Compiling sharded-slab v0.1.7 biomcp-0.9.3> Compiling anstream v0.6.21 biomcp-0.9.3> Compiling crossbeam-channel v0.5.15 biomcp-0.9.3> Compiling rustls-native-certs v0.8.3 biomcp-0.9.3> Compiling rustls-pemfile v2.2.0 biomcp-0.9.3> Compiling syn v2.0.117 biomcp-0.9.3> Compiling string_cache_codegen v0.6.1 biomcp-0.9.3> Compiling hashbrown v0.15.5 biomcp-0.9.3> Compiling tracing-log v0.2.0 biomcp-0.9.3> Compiling csv-core v0.1.13 biomcp-0.9.3> Compiling pem v3.0.6 biomcp-0.9.3> Compiling thread_local v1.1.9 biomcp-0.9.3> Compiling comma v1.0.0 biomcp-0.9.3> Compiling ego-tree v0.11.0 biomcp-0.9.3> Compiling html-escape v0.2.15 biomcp-0.9.3> Compiling byteorder v1.5.0 biomcp-0.9.3> Compiling encoding_rs v0.8.42 biomcp-0.9.3> Compiling clap_builder v4.5.60 biomcp-0.9.3> Compiling atoi_simd v0.18.1 biomcp-0.9.3> Compiling unicode-bidi v0.3.18 biomcp-0.9.3> Compiling crossbeam-deque v0.8.6 biomcp-0.9.3> Compiling fast-float2 v0.2.4 biomcp-0.9.3> Compiling unicode-segmentation v1.13.3 biomcp-0.9.3> Compiling flagset v0.4.7 biomcp-0.9.3> Compiling unicode-normalization v0.1.25 biomcp-0.9.3> Compiling gjson v0.8.1 biomcp-0.9.3> Compiling nu-ansi-term v0.50.3 biomcp-0.9.3> Compiling colorous v1.0.16 biomcp-0.9.3> Compiling matchit v0.8.4 biomcp-0.9.3> Compiling hybrid-array v0.4.10 biomcp-0.9.3> Compiling bytesize v1.3.3 biomcp-0.9.3> Compiling roxmltree v0.20.0 biomcp-0.9.3> Compiling http-body v1.0.1 biomcp-0.9.3> Compiling semver v1.0.27 biomcp-0.9.3> Compiling humantime v2.3.0 biomcp-0.9.3> Compiling md5 v0.7.0 biomcp-0.9.3> Compiling http-body-util v0.1.3 biomcp-0.9.3> Compiling web_atoms v0.2.4 biomcp-0.9.3> Compiling axum-core v0.5.6 biomcp-0.9.3> Compiling core_maths v0.1.1 biomcp-0.9.3> Compiling ttf-parser v0.25.1 biomcp-0.9.3> Compiling rayon v1.12.0 biomcp-0.9.3> Compiling jobserver v0.1.34 biomcp-0.9.3> Compiling crypto-common v0.2.1 biomcp-0.9.3> Compiling block-buffer v0.12.0 biomcp-0.9.3> Compiling inout v0.2.2 biomcp-0.9.3> Compiling crypto-common v0.1.7 biomcp-0.9.3> Compiling block-buffer v0.10.4 biomcp-0.9.3> Compiling block-padding v0.3.3 biomcp-0.9.3> Compiling cc v1.2.56 biomcp-0.9.3> Compiling digest v0.10.7 biomcp-0.9.3> Compiling inout v0.1.4 biomcp-0.9.3> Compiling cipher v0.4.4 biomcp-0.9.3> Compiling sha2 v0.10.9 biomcp-0.9.3> Compiling sha-1 v0.10.1 biomcp-0.9.3> Compiling sha1 v0.10.6 biomcp-0.9.3> Compiling md-5 v0.10.6 biomcp-0.9.3> Compiling errno v0.3.14 biomcp-0.9.3> Compiling socket2 v0.6.2 biomcp-0.9.3> Compiling mio v1.1.1 biomcp-0.9.3> Compiling getrandom v0.2.17 biomcp-0.9.3> Compiling time v0.3.47 biomcp-0.9.3> Compiling memmap2 v0.5.10 biomcp-0.9.3> Compiling dirs-sys v0.4.1 biomcp-0.9.3> Compiling filetime v0.2.27 biomcp-0.9.3> Compiling cbc v0.1.2 biomcp-0.9.3> Compiling aes v0.8.4 biomcp-0.9.3> Compiling signal-hook-registry v1.4.8 biomcp-0.9.3> Compiling rust-embed-utils v8.11.0 biomcp-0.9.3> Compiling reflink-copy v0.1.29 biomcp-0.9.3> Compiling xattr v1.6.1 biomcp-0.9.3> Compiling rand_core v0.6.4 biomcp-0.9.3> Compiling dirs v5.0.1 biomcp-0.9.3> Compiling regex-automata v0.4.14 biomcp-0.9.3> Compiling tempfile v3.26.0 biomcp-0.9.3> Compiling uuid v1.22.0 biomcp-0.9.3> Compiling rand v0.10.1 biomcp-0.9.3> Compiling codepage v0.1.3 biomcp-0.9.3> Compiling quick-xml v0.41.0 biomcp-0.9.3> Compiling parking_lot v0.12.5 biomcp-0.9.3> Compiling tar v0.4.46 biomcp-0.9.3> Compiling cipher v0.5.1 biomcp-0.9.3> Compiling rc4 v0.2.0 biomcp-0.9.3> Compiling ring v0.17.14 biomcp-0.9.3> Compiling zstd-sys v2.0.16+zstd.1.5.7 biomcp-0.9.3> Compiling serde_path_to_error v0.1.20 biomcp-0.9.3> Compiling csv v1.4.0 biomcp-0.9.3> Compiling fontdue v0.9.4 biomcp-0.9.3> Compiling yasna v0.5.2 biomcp-0.9.3> Compiling flate2 v1.1.9 biomcp-0.9.3> Compiling compression-codecs v0.4.37 biomcp-0.9.3> Compiling png v0.18.1 biomcp-0.9.3> Compiling zip v8.6.0 biomcp-0.9.3> Compiling zip v9.0.4 biomcp-0.9.3> Compiling ppv-lite86 v0.2.21 biomcp-0.9.3> Compiling rand_chacha v0.3.1 biomcp-0.9.3> Compiling synstructure v0.13.2 biomcp-0.9.3> Compiling darling_core v0.23.0 biomcp-0.9.3> Compiling serde_derive_internals v0.29.1 biomcp-0.9.3> Compiling rand v0.8.6 biomcp-0.9.3> Compiling regex v1.12.3 biomcp-0.9.3> Compiling matchers v0.2.0 biomcp-0.9.3> Compiling serde_derive v1.0.228 biomcp-0.9.3> Compiling tokio-macros v2.6.1 biomcp-0.9.3> Compiling futures-macro v0.3.32 biomcp-0.9.3> Compiling zerofrom-derive v0.1.6 biomcp-0.9.3> Compiling yoke-derive v0.8.1 biomcp-0.9.3> Compiling zerovec-derive v0.11.2 biomcp-0.9.3> Compiling tracing-attributes v0.1.31 biomcp-0.9.3> Compiling displaydoc v0.2.5 biomcp-0.9.3> Compiling phf_macros v0.13.1 biomcp-0.9.3> Compiling thiserror-impl v1.0.69 biomcp-0.9.3> Compiling async-trait v0.1.89 biomcp-0.9.3> Compiling thiserror-impl v2.0.18 biomcp-0.9.3> Compiling miette-derive v5.10.0 biomcp-0.9.3> Compiling cssparser-macros v0.7.1 biomcp-0.9.3> Compiling derive_more-impl v2.1.1 biomcp-0.9.3> Compiling ref-cast-impl v1.0.25 biomcp-0.9.3> Compiling pin-project-internal v1.1.11 biomcp-0.9.3> Compiling prost-derive v0.13.5 biomcp-0.9.3> Compiling serial_test_derive v3.5.0 biomcp-0.9.3> Compiling clap_derive v4.5.55 biomcp-0.9.3> Compiling rust-embed-impl v8.11.0 biomcp-0.9.3> Compiling schemars_derive v1.2.1 biomcp-0.9.3> Compiling rustls-webpki v0.103.15 biomcp-0.9.3> Compiling rcgen v0.13.2 biomcp-0.9.3> Compiling retry-policies v0.4.0 biomcp-0.9.3> Compiling zstd v0.13.3 biomcp-0.9.3> Compiling rust-embed v8.11.0 biomcp-0.9.3> Compiling futures-util v0.3.32 biomcp-0.9.3> Compiling tokio v1.50.0 biomcp-0.9.3> Compiling phf v0.13.1 biomcp-0.9.3> Compiling cssparser v0.37.0 biomcp-0.9.3> Compiling zerofrom v0.1.6 biomcp-0.9.3> Compiling yoke v0.8.1 biomcp-0.9.3> Compiling derive_more v2.1.1 biomcp-0.9.3> Compiling pin-project v1.1.11 biomcp-0.9.3> Compiling tracing v0.1.44 biomcp-0.9.3> Compiling zerovec v0.11.5 biomcp-0.9.3> Compiling zerotrie v0.2.3 biomcp-0.9.3> Compiling miette v5.10.0 biomcp-0.9.3> Compiling tracing-subscriber v0.3.22 biomcp-0.9.3> Compiling rexpect v0.7.0 biomcp-0.9.3> Compiling prost v0.13.5 biomcp-0.9.3> Compiling darling_macro v0.23.0 biomcp-0.9.3> Compiling clap v4.5.60 biomcp-0.9.3> Compiling tinystr v0.8.2 biomcp-0.9.3> Compiling potential_utf v0.1.4 biomcp-0.9.3> Compiling icu_collections v2.1.1 biomcp-0.9.3> Compiling icu_locale_core v2.1.1 biomcp-0.9.3> Compiling darling v0.23.0 biomcp-0.9.3> Compiling rmcp-macros v1.7.0 biomcp-0.9.3> Compiling icu_provider v2.1.1 biomcp-0.9.3> Compiling icu_properties v2.1.2 biomcp-0.9.3> Compiling icu_normalizer v2.1.1 biomcp-0.9.3> Compiling string_cache v0.9.0 biomcp-0.9.3> Compiling chrono v0.4.44 biomcp-0.9.3> Compiling serde_urlencoded v0.7.1 biomcp-0.9.3> Compiling http-serde v2.1.1 biomcp-0.9.3> Compiling ssri v9.2.0 biomcp-0.9.3> Compiling bincode v1.3.3 biomcp-0.9.3> Compiling toml_datetime v0.6.11 biomcp-0.9.3> Compiling serde_spanned v0.6.9 biomcp-0.9.3> Compiling minijinja v2.17.1 biomcp-0.9.3> Compiling calamine v0.36.1 biomcp-0.9.3> Compiling http-cache-semantics v2.1.1 biomcp-0.9.3> Compiling toml_edit v0.22.27 biomcp-0.9.3> Compiling futures-executor v0.3.32 biomcp-0.9.3> Compiling sse-stream v0.2.1 biomcp-0.9.3> Compiling futures v0.3.32 biomcp-0.9.3> Compiling serial_test v3.5.0 biomcp-0.9.3> Compiling markup5ever v0.39.0 biomcp-0.9.3> Compiling markup5ever v0.38.0 biomcp-0.9.3> Compiling idna_adapter v1.2.1 biomcp-0.9.3> Compiling idna v1.1.0 biomcp-0.9.3> Compiling html5ever v0.39.0 biomcp-0.9.3> Compiling xml5ever v0.38.0 biomcp-0.9.3> Compiling html5ever v0.38.0 biomcp-0.9.3> Compiling schemars v1.2.1 biomcp-0.9.3> Compiling url v2.5.8 biomcp-0.9.3> Compiling dom_query v0.28.0 biomcp-0.9.3> Compiling scraper v0.27.0 biomcp-0.9.3> Compiling markup5ever_rcdom v0.38.0+unofficial biomcp-0.9.3> Compiling htmd v0.5.4 biomcp-0.9.3> Compiling toml v0.8.23 biomcp-0.9.3> Compiling tokio-util v0.7.18 biomcp-0.9.3> Compiling tower v0.5.3 biomcp-0.9.3> Compiling async-compression v0.4.41 biomcp-0.9.3> Compiling tokio-rustls v0.26.4 biomcp-0.9.3> Compiling tokio-stream v0.1.18 biomcp-0.9.3> Compiling process-wrap v9.1.0 biomcp-0.9.3> Compiling dom_smoothie v0.18.2 biomcp-0.9.3> Compiling cacache v13.1.0 biomcp-0.9.3> Compiling h2 v0.4.16 biomcp-0.9.3> Compiling tower-http v0.6.8 biomcp-0.9.3> Compiling tower v0.4.13 biomcp-0.9.3> Compiling http-cache v0.20.1 biomcp-0.9.3> Compiling hyper v1.8.1 biomcp-0.9.3> Compiling hyper-util v0.1.20 biomcp-0.9.3> Compiling hyper-rustls v0.27.7 biomcp-0.9.3> Compiling reqwest v0.13.4 biomcp-0.9.3> Compiling hyper-timeout v0.5.2 biomcp-0.9.3> Compiling axum v0.8.8 biomcp-0.9.3> Compiling tonic v0.12.3 biomcp-0.9.3> Compiling reqwest v0.12.28 biomcp-0.9.3> Compiling reqwest-middleware v0.4.2 biomcp-0.9.3> Compiling reqwest-retry v0.7.0 biomcp-0.9.3> Compiling http-cache-reqwest v0.15.1 biomcp-0.9.3> Compiling biomcp-mcp-contract-client v0.1.0 (/build/source/crates/biomcp-mcp-contract-client) biomcp-0.9.3> Compiling biomcp-cli v0.9.3 (/build/source) biomcp-0.9.3> warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency biomcp-0.9.3> --> src/entities/article/variant_search.rs:377:64 biomcp-0.9.3> | biomcp-0.9.3> 377 | let _ = self.allocation.identity_verification_reserved.fetch_update( biomcp-0.9.3> | ^^^^^^^^^^^^ biomcp-0.9.3> | biomcp-0.9.3> = note: `#[warn(deprecated)]` on by default biomcp-0.9.3> help: replace the use of the deprecated method biomcp-0.9.3> | biomcp-0.9.3> 377 - let _ = self.allocation.identity_verification_reserved.fetch_update( biomcp-0.9.3> 377 + let _ = self.allocation.identity_verification_reserved.try_update( biomcp-0.9.3> | biomcp-0.9.3> biomcp-0.9.3> warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency biomcp-0.9.3> --> src/entities/article/variant_search.rs:496:22 biomcp-0.9.3> | biomcp-0.9.3> 496 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> | ^^^^^^^^^^^^ biomcp-0.9.3> | biomcp-0.9.3> help: replace the use of the deprecated method biomcp-0.9.3> | biomcp-0.9.3> 496 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> 496 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> | biomcp-0.9.3> biomcp-0.9.3> warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency biomcp-0.9.3> --> src/entities/article/variant_search.rs:521:18 biomcp-0.9.3> | biomcp-0.9.3> 521 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> | ^^^^^^^^^^^^ biomcp-0.9.3> | biomcp-0.9.3> help: replace the use of the deprecated method biomcp-0.9.3> | biomcp-0.9.3> 521 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> 521 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> | biomcp-0.9.3> biomcp-0.9.3> warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency biomcp-0.9.3> --> src/entities/article/variant_search.rs:541:18 biomcp-0.9.3> | biomcp-0.9.3> 541 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> | ^^^^^^^^^^^^ biomcp-0.9.3> | biomcp-0.9.3> help: replace the use of the deprecated method biomcp-0.9.3> | biomcp-0.9.3> 541 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> 541 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { biomcp-0.9.3> | biomcp-0.9.3> biomcp-0.9.3> warning: `biomcp-cli` (lib test) generated 4 warnings (run `cargo fix --lib -p biomcp-cli --tests` to apply 4 suggestions) biomcp-0.9.3> Finished `test` profile [unoptimized + debuginfo] target(s) in 2m 45s biomcp-0.9.3> ──────────── biomcp-0.9.3> Nextest run ID 657772ba-925e-44c8-99ea-1a50b6b324d1 with nextest profile: default biomcp-0.9.3> Starting 4212 tests across 1 binary (29 tests skipped) biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cache::config::tests::disk_free_threshold_methods_cover_percent_bytes_and_display biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cache::config::tests::defaults_when_no_env_or_file_uses_default_cache_config biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cache::config::tests::env_max_age_overrides_file_and_default biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cache::config::tests::a_test_builds_default_cache_root_never_reads_the_machine_cache biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cache::config::tests::default_min_disk_free_is_10_percent_with_default_origin biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cache::clean::tests::cache_clean_blob_not_found_is_benign_drift biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cache::clean::tests::cache_clean_age_cleanup_removes_only_old_entries biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cache::clean::tests::deadline_expiry_between_key_removals_leaves_the_next_key_untouched biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cache::config::tests::env_cache_dir_overrides_file_and_default biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cache::clean::tests::cache_clean_snapshot_failure_returns_io_error biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cache::config::tests::blank_env_values_are_treated_as_unset biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cache::clean::tests::cache_clean_shared_integrity_blob_waits_for_all_keys biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cache::config::tests::blank_env_max_age_falls_through biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cache::config::tests::default_origins_are_reported_when_values_fall_through biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cache::config::tests::blank_toml_dir_returns_error biomcp-0.9.3> PASS [ 0.020s] biomcp-cli augment_genes_with_opentargets_merges_sources_without_duplicates biomcp-0.9.3> PASS [ 0.021s] biomcp-cli augment_genes_with_opentargets_respects_twenty_gene_cap biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cache::config::tests::env_min_disk_free_overrides_file_and_tracks_env_origin biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cache::clean::tests::cache_clean_dry_run_reports_orphan_plan_without_deleting biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cache::config::tests::env_max_size_overrides_file_and_default biomcp-0.9.3> PASS [ 0.022s] biomcp-cli cache::clean::tests::cache_clean_destructive_removes_orphan_blobs biomcp-0.9.3> PASS [ 0.023s] biomcp-cli cache::clean::tests::cache_clean_default_origin_enforces_retention_without_size_eviction biomcp-0.9.3> PASS [ 0.023s] biomcp-cli cache::clean::tests::cache_clean_size_cleanup_uses_explicit_config_without_flag biomcp-0.9.3> PASS [ 0.024s] biomcp-cli cache::clean::tests::cache_clean_dry_run_matches_destructive_on_equivalent_seed biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cache::config::tests::invalid_env_max_age_returns_error biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cache::config::tests::toml_zero_max_age_returns_error biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cache::config::tests::toml_min_disk_free_parses_absolute_bytes_and_tracks_file_origin biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cache::config::tests::toml_zero_max_size_returns_error biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cache::config::tests::invalid_env_min_disk_free_returns_error biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cache::config::tests::toml_without_cache_section_uses_defaults biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cache::config::tests::invalid_env_size_returns_error biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cache::config::tests::zero_env_max_age_returns_error biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cache::config::tests::resolve_cache_config_reports_path_on_read_failure biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cache::config::tests::toml_dir_overrides_default biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cache::config::tests::invalid_env_min_disk_free_over_100_percent_returns_error biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cache::config::tests::invalid_toml_syntax_returns_error biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cache::config::tests::origins_track_mixed_precedence_without_max_age_env_override biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cache::config::tests::toml_max_size_overrides_default biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cache::config::tests::resolve_cache_config_uses_defaults_when_no_env_or_file biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cache::config::tests::resolve_cache_config_env_overrides_file biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cache::layout_tests::derived_index_bucket_is_the_file_cacache_writes biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cache::config::tests::zero_env_size_returns_error biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cache::config::tests::resolve_cache_config_reports_path_on_failure biomcp-0.9.3> PASS [ 0.022s] biomcp-cli cache::config::tests::resolve_cache_config_reads_cache_toml_from_xdg_config_home biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cache::config::tests::toml_max_age_overrides_default biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cache::config::tests::unknown_toml_field_returns_error biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cache::limits::tests::evaluate_cache_limits_converts_disk_deficit_into_effective_max_size biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cache::limits::tests::evaluate_cache_limits_can_drive_effective_max_size_to_zero biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cache::limits::tests::summarize_cache_usage_distinguishes_referenced_and_orphan_blob_bytes biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cache::maintenance::operation_lock_tests::constructor_repairs_and_independent_key_operations_do_not_serialize_globally biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cache::maintenance::tests::clear_missing_path_returns_zero_report biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cache::maintenance::tests::clear_preserves_sibling_downloads_directory biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cache::maintenance::tests::clear_nested_symlink_unlinks_entry_and_sets_bytes_to_none biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cache::maintenance::operation_lock_tests::cancelled_pending_shared_lock_releases_its_provisional_lease biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cache::maintenance::tests::clear_removes_directory_tree_and_root_http_dir biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cache::maintenance::operation_lock_tests::colliding_http_cache_keys_wait_for_the_local_writer biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cache::maintenance::tests::clear_rejects_special_file_before_mutation biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cache::maintenance::tests::clear_rejects_root_regular_file_before_mutation biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cache::maintenance::tests::clear_root_symlink_is_unlinked_without_traversing_target biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cache::manager::tests::run_eviction_cycle_propagates_snapshot_error biomcp-0.9.3> PASS [ 0.022s] biomcp-cli cache::maintenance::operation_lock_tests::same_process_readers_never_block_on_an_exclusive_upgrade biomcp-0.9.3> PASS [ 0.025s] biomcp-cli cache::maintenance::operation_lock_tests::local_shared_lease_delays_maintenance_until_release_within_deadline biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cache::manager::tests::startup_clean_tests::cache_mode_off_skips_the_startup_clean biomcp-0.9.3> PASS [ 0.028s] biomcp-cli cache::manager::tests::put_schedules_eviction_when_disk_floor_is_violated biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cache::manager::tests::write_security_tests::cacache_atomic_temporary_file_is_born_private biomcp-0.9.3> PASS [ 0.034s] biomcp-cli cache::maintenance::operation_lock_tests::local_shared_lease_maintenance_wait_expires_without_retaining_locks biomcp-0.9.3> PASS [ 0.036s] biomcp-cli cache::manager::tests::new_manager_seeds_approximate_bytes_from_fast_estimate biomcp-0.9.3> PASS [ 0.041s] biomcp-cli cache::maintenance::operation_lock_tests::local_key_wait_honors_expiry_and_cancellation_without_retaining_the_shard biomcp-0.9.3> PASS [ 0.035s] biomcp-cli cache::manager::tests::run_eviction_cycle_logs_successful_cleanup_still_under_floor_at_debug biomcp-0.9.3> PASS [ 0.036s] biomcp-cli cache::manager::tests::run_eviction_cycle_false_positive_resyncs_without_cleaning biomcp-0.9.3> PASS [ 0.038s] biomcp-cli cache::manager::tests::put_schedules_eviction_for_preexisting_oversized_cache_with_ample_disk biomcp-0.9.3> PASS [ 0.022s] biomcp-cli cache::manager::tests::startup_totals_tests::cache_mode_off_seeds_zero_without_reading_the_cache biomcp-0.9.3> PASS [ 0.039s] biomcp-cli cache::manager::tests::run_eviction_cycle_uses_effective_max_size_for_disk_pressure biomcp-0.9.3> PASS [ 0.032s] biomcp-cli cache::manager::tests::startup_clean_tests::a_marker_older_than_a_day_runs_the_clean_and_rewrites_the_marker biomcp-0.9.3> PASS [ 0.032s] biomcp-cli cache::manager::tests::startup_clean_tests::a_fresh_startup_clean_marker_skips_the_clean biomcp-0.9.3> PASS [ 0.037s] biomcp-cli cache::manager::tests::run_eviction_cycle_uses_exact_snapshot_state_for_size_eviction biomcp-0.9.3> PASS [ 0.049s] biomcp-cli cache::manager::tests::opening_manager_physically_removes_expired_entries_below_size_limit biomcp-0.9.3> PASS [ 0.047s] biomcp-cli cache::manager::tests::run_eviction_cycle_logs_cleanup_errors_at_warn biomcp-0.9.3> PASS [ 0.033s] biomcp-cli cache::manager::tests::startup_clean_tests::a_missing_startup_clean_marker_runs_the_clean_and_writes_the_marker biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cache::manager::tests::write_security_tests::put_rejects_a_multiply_linked_index_bucket biomcp-0.9.3> PASS [ 0.038s] biomcp-cli cache::manager::tests::startup_totals_tests::the_daily_clean_rewrites_the_totals_marker_with_an_exact_total biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cache::migration::tests::async_io_crossing_expiry_settles_without_admitting_a_mutation biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cache::manager::tests::write_security_tests::put_rejects_linked_index_bucket_and_each_linked_ancestor biomcp-0.9.3> PASS [ 0.062s] biomcp-cli cache::manager::tests::put_debounces_duplicate_eviction_scheduling biomcp-0.9.3> PASS [ 0.032s] biomcp-cli cache::manager::tests::write_security_tests::estimate_cache_bytes_fast_reads_a_missing_cache_as_zero biomcp-0.9.3> PASS [ 0.037s] biomcp-cli cache::manager::tests::write_security_tests::estimate_cache_bytes_fast_totals_once_then_reads_the_kept_marker biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cache::migration::tests::body_limit_epoch_rejects_linked_control_files_without_touching_targets biomcp-0.9.3> PASS [ 0.055s] biomcp-cli cache::manager::tests::startup_totals_tests::updating_the_total_replaces_the_record_without_truncating_its_old_inode biomcp-0.9.3> PASS [ 0.065s] biomcp-cli cache::manager::tests::stale_marker_tests::a_stale_serve_carries_the_marker_with_its_policy_age biomcp-0.9.3> PASS [ 0.065s] biomcp-cli cache::manager::tests::stale_marker_tests::put_clears_the_marker_so_revalidation_cannot_carry_it biomcp-0.9.3> PASS [ 0.071s] biomcp-cli cache::manager::tests::stale_marker_tests::a_fresh_serve_carries_no_marker biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cache::migration::tests::errors_when_legacy_path_is_a_dangling_symlink biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cache::migration::tests::epoch_cleanup_stops_mutating_after_a_mid_traversal_deadline biomcp-0.9.3> PASS [ 0.038s] biomcp-cli cache::manager::tests::write_security_tests::put_secures_only_its_exact_paths_under_a_permissive_umask biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cache::migration::tests::errors_when_legacy_path_is_not_a_directory biomcp-0.9.3> PASS [ 0.036s] biomcp-cli cache::migration::tests::body_limit_epoch_cleans_its_staging_file_after_an_ordinary_error biomcp-0.9.3> PASS [ 0.036s] biomcp-cli cache::migration::tests::body_limit_epoch_clears_legacy_entries_once biomcp-0.9.3> PASS [ 0.040s] biomcp-cli cache::manager::tests::write_security_tests::successful_put_with_metadata_read_error_fails_closed_with_stable_context biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cache::migration::tests::errors_when_runtime_http_target_is_not_a_directory biomcp-0.9.3> PASS [ 0.041s] biomcp-cli cache::manager::tests::write_security_tests::successful_put_with_missing_metadata_fails_closed_with_stable_context biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cache::migration::tests::errors_when_runtime_http_target_is_a_dangling_symlink biomcp-0.9.3> PASS [ 0.036s] biomcp-cli cache::migration::tests::body_limit_epoch_ignores_crash_orphans_and_later_succeeds biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cache::migration::tests::maintenance_contention_expires_without_partial_migration_and_releases_for_retry biomcp-0.9.3> PASS [ 0.032s] biomcp-cli cache::migration::tests::body_limit_epoch_lock_contention_obeys_variant_article_deadline biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cache::migration::tests::renames_legacy_http_cache_directory_when_only_legacy_dir_exists biomcp-0.9.3> PASS [ 0.035s] biomcp-cli cache::migration::tests::body_limit_epoch_is_concurrent_and_idempotent biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cache::migration::tests::skips_when_legacy_http_cache_directory_is_missing biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cache::migration::tests::skips_when_runtime_http_directory_already_exists biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cache::planner::tests::composite_cleanup_plans_age_then_size_on_one_snapshot biomcp-0.9.3> PASS [ 0.065s] biomcp-cli cache::manager::tests::write_security_tests::contended_constructor_defers_cleanup_until_a_later_uncontended_constructor biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cache::planner::tests::planner_walk_errors_when_content_root_is_not_a_directory biomcp-0.9.3> PASS [ 0.035s] biomcp-cli cache::migration::tests::body_limit_epoch_observes_a_private_temp_and_removes_it_after_publication biomcp-0.9.3> PASS [ 0.045s] biomcp-cli cache::migration::tests::body_limit_epoch_files_are_private_and_existing_modes_are_repaired biomcp-0.9.3> PASS [ 0.069s] biomcp-cli cache::manager::tests::write_security_tests::cold_cache_different_shard_puts_tolerate_common_directory_creation_races biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cache::planner::tests::plan_orphan_gc_selects_only_zero_refcount_blobs biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cache::planner::tests::planner_walk_skips_symlinked_content_entries biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cache::planner::tests::planner_walk_skips_malformed_blob_leaves biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cache::planner::tests::shared_integrity_age_cleanup_only_removes_blob_after_last_reference biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cache::planner::tests::snapshot_cache_errors_when_cache_root_is_not_a_directory biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cache::planner::tests::shared_integrity_size_lru_uses_projected_refcounts_and_oldest_first_tiebreak biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cache::planner::tests::size_lru_ignores_orphan_bytes biomcp-0.9.3> PASS [ 0.069s] biomcp-cli cache::manager::tests::write_security_tests::put_atomically_replaces_a_hostile_content_destination biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cache::planner::tests::snapshot_cache_returns_empty_snapshot_for_uninitialized_cache_root biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cache::planner::tests::size_lru_missing_blob_entries_do_not_displace_live_entries biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cache::planner::tests::snapshot_cache_returns_empty_snapshot_for_missing_cache_root biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cache::private::unix_tests::directory_create_race_revalidates_a_hostile_winner biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cache::private::unix_tests::explicit_whole_tree_maintenance_repairs_an_unrelated_sentinel biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cache::planner::tests::snapshot_cache_includes_orphan_blobs_without_synthesizing_missing_referenced_blobs biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cache::private::unix_tests::unrelated_nested_content_v2_directory_symlink_keeps_skip_behavior biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cache::planner::tests::snapshot_cache_reports_seeded_entries_and_blobs_deterministically biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cache::private::unix_tests::cache_root_basename_never_changes_managed_content_semantics biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cache::private::unix_tests::whole_tree_maintenance_skips_unrelated_links_but_rejects_content_directory_links biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cache::provider_capture::tests::capacity_planner_covers_exact_plus_one_and_stable_ties biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cache::provider_capture::tests::refuses_to_publish_through_a_symlinked_staging_directory biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::adverse_event::tests::resolved_device_report_rejects_every_named_section_including_all biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cache::provider_capture::unsupported::tests::absent_capture_store_is_the_only_supported_empty_state biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cache::provider_capture::tests::rejects_symlinked_capture_shards biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::adverse_event::tests::get_adverse_event_parses_sections biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::adverse_event::tests::search_adverse_event_device_rejects_positional_drug_alias biomcp-0.9.3> PASS [ 0.042s] biomcp-cli cache::migration::tests::synchronous_staging_window_is_deadline_raced_responsive_and_orphan_free biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::adverse_event::tests::search_adverse_event_parses_serious_default_and_limit biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_adverse_event_parses_source_filter biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_plan_count_without_source_uses_faers biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_count_for_vaers_source biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cli::adverse_event::tests::search_plan_accepts_each_route_specific_contract biomcp-0.9.3> PASS [ 0.034s] biomcp-cli cache::provider_capture::tests::refuses_a_blob_shard_swapped_after_validation_without_writing_outside biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_nondefault_source_for_device biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_nondefault_source_for_recall biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::article::assets::tests::asset_pages_are_stable_and_emit_exact_continuations biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_positional_drug_alias_for_device biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::article::assets::tests::asset_requires_exactly_one_key_and_no_assets_section biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_every_inapplicable_route_filter biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::assets::tests::assets_is_standalone_json_only_route biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::assets::tests::exact_duplicate_manifest_rows_are_removed_in_order biomcp-0.9.3> PASS [ 0.007s] biomcp-cli cli::article::fulltext_view::tests::a_single_oversized_line_is_rejected biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::dispatch::workflow_tests::article_follow_up_requires_pmid_and_annotations biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::article::fulltext_view::tests::fulltext_views_reject_a_symlink_instead_of_reading_its_target biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::article::fulltext_view::tests::an_open_managed_handle_is_not_redirected_by_path_replacement biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::fulltext_view::tests::heading_titles_are_truncated_on_utf8_boundaries biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::article::fulltext_view::tests::line_output_stops_only_at_complete_utf8_lines biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::fulltext_view::tests::line_ranges_are_one_based_ordered_and_bounded biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::fulltext_view::tests::outline_preserves_duplicate_headings_and_reports_the_cap biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::article::session::tests::capacity_pruning_covers_exact_and_plus_one_limits biomcp-0.9.3> PASS [ 0.007s] biomcp-cli cli::article::session::tests::capacity_pruning_resolves_ties_stably_in_memory biomcp-0.9.3> PASS [ 0.007s] biomcp-cli cli::article::session::tests::normalization_removes_search_filler_words_and_deduplicates_terms biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::article::session::tests::overlap_threshold_boundaries biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::article::session::tests::token_validation_accepts_safe_local_labels_and_rejects_unsafe_input biomcp-0.9.3> PASS [ 0.059s] biomcp-cli cli::adverse_event::tests::search_plan_covers_the_complete_rejected_filter_matrix biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::article::tests::citation_evidence::citation_evidence_markdown_pins_the_unresolved_and_unlinked_states biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::article::tests::diagnostics::article_search_diagnostics_render_only_in_full_detail biomcp-0.9.3> PASS [ 0.093s] biomcp-cli cache::provider_capture::tests::rejects_a_directory_in_place_of_capture_metadata biomcp-0.9.3> PASS [ 0.091s] biomcp-cli cache::provider_capture::tests::retained_bytes_counts_every_owned_regular_file biomcp-0.9.3> PASS [ 0.094s] biomcp-cli cache::provider_capture::tests::rejects_corrupt_bytes_and_removes_unpublished_orphans biomcp-0.9.3> PASS [ 0.044s] biomcp-cli cli::article::session::tests::malformed_store_recovers_as_empty_and_writes_valid_json biomcp-0.9.3> PASS [ 0.050s] biomcp-cli cli::article::session::tests::lock_contention_fails_open_without_rewriting_existing_baseline biomcp-0.9.3> PASS [ 0.108s] biomcp-cli cache::provider_capture::tests::captures_survive_store_restart_then_detect_corruption biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::article::tests::exact_lookup::article_entity_suggestion_uses_alias_reason_and_valid_sections biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::article::tests::exact_lookup::article_search_json_fails_open_when_exact_entity_lookup_returns_none biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::article::tests::exact_lookup::exact_article_keyword_lookup_eligibility_is_keyword_only_and_short biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::article::tests::exact_lookup::article_search_request_typed_filter_skips_exact_lookup biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::tests::exact_lookup::graph_markdown_is_exact_for_every_page_shape_and_direction biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::tests::exact_lookup::graph_markdown_uses_a_safe_code_span_for_the_shared_command biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::article::tests::filters::article_query_and_debug_filters_include_effective_ranking_context biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::article::tests::exact_lookup::handle_command_rejects_zero_limit_before_backend_lookup biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_query_and_debug_filters_render_default_and_disabled_max_per_source_modes biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cli::article::tests::exact_lookup::graph_offset_accepts_u64_boundaries_and_rejects_out_of_range_values biomcp-0.9.3> PASS [ 0.130s] biomcp-cli cache::provider_capture::tests::rejects_oversize_and_invalid_handles biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::article::tests::filters::article_search_request_accepts_semantic_scholar_source biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_search_request_records_author_capable_plan biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::article::tests::filters::article_search_request_records_normalized_cli_intent_and_backend_plan biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_search_request_records_exact_keyword_lookup_intent biomcp-0.9.3> PASS [ 0.039s] biomcp-cli cli::article::tests::exact_lookup::degraded_article_sources_share_safe_direct_retries_across_zero_row_surfaces biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_search_request_rejects_reserved_keyword_aliases_and_multiword_gene biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_search_request_rejects_native_keyword_field_syntax biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::article::tests::filters::article_search_request_trims_valid_gene_before_planning biomcp-0.9.3> PASS [ 0.232s] biomcp-cli cache::manager::tests::startup_totals_tests::start_up_seeds_kept_totals_without_walking_the_tree_again biomcp-0.9.3> PASS [ 0.084s] biomcp-cli cli::article::session::tests::session_store_records_first_search_then_emits_ordered_loop_suggestions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::article::tests::filters::build_article_debug_plan_includes_article_type_limitation_note biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::article::tests::filters::partial_keyword_warning_includes_zero_hits_and_explicit_semantic_mode biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::article::tests::filters::partial_keyword_coverage_warns_in_compact_and_full_json biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::tests::filters::partial_keyword_warning_uses_exact_coverage_after_public_counts_saturate biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::tests::filters::related_article_filters_default_to_relevance_and_safety_flags biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::tests::filters::ticket_400_request_command_article_fields_drive_execution_boundaries biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::article::tests::filters::partial_keyword_warning_obeys_non_trigger_boundaries biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::tests::filters::truncate_article_annotations_applies_limit_per_bucket biomcp-0.9.3> PASS [ 0.088s] biomcp-cli cli::article::session::tests::unavailable_loop_ladder_rungs_are_omitted biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::article::tests::help::article_get_pdf_modifier_parses_before_fulltext biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::article::tests::help::article_get_pdf_modifier_parses_after_fulltext biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::article::tests::help::article_asset_paging_modifiers_parse_after_assets biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::article::tests::help::article_full_flag_parses_and_help_explains_compact_default biomcp-0.9.3> PASS [ 0.236s] biomcp-cli cache::manager::tests::write_security_tests::eviction_waits_for_an_active_cache_operation biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::article::tests::help::article_year_flags_parse_and_expand_to_date_bounds biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::article::tests::help::article_session_flag_parses_and_help_documents_json_loop_breaker biomcp-0.9.3> PASS [ 0.032s] biomcp-cli cli::article::tests::filters::partial_keyword_coverage_warning_precedes_markdown_table biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::article::tests::help::article_year_flags_conflict_with_explicit_dates biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::article::tests::help::article_year_flags_reject_non_yyyy_values biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::article::tests::json::article_search_json_allows_loop_suggestions_without_sections biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::article::tests::json::article_search_json_includes_query_and_ranking_context biomcp-0.9.3> PASS [ 0.128s] biomcp-cli cli::article::session::tests::empty_normalized_keyword_resets_baseline_without_loop_suggestions biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::article::tests::help::article_year_max_conflicts_with_date_to biomcp-0.9.3> PASS [ 0.178s] biomcp-cli cache::provider_capture::tests::refuses_noncanonical_metadata_without_damaging_a_valid_capture biomcp-0.9.3> PASS [ 0.179s] biomcp-cli cache::provider_capture::tests::cspec_capture_is_unavailable_through_other_clingen_provider_prefixes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::article::tests::json::compact_article_search_rows_preserve_triage_fields_and_date_warnings biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::article::tests::json::ticket_377_article_renderer_envelope_contracts_json_meta biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::article::tests::json::date_warning_alone_retains_article_search_metadata biomcp-0.9.3> PASS [ 0.258s] biomcp-cli cache::manager::tests::write_security_tests::concurrent_same_key_puts_keep_metadata_attributable_until_hardening_finishes biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cli::article::tests::json::article_search_json_emits_structured_exact_entity_suggestions biomcp-0.9.3> PASS [ 0.135s] biomcp-cli cli::article::session::tests::expired_or_disjoint_session_state_does_not_emit_loop_suggestions biomcp-0.9.3> PASS [ 0.132s] biomcp-cli cli::article::session::tests::maintenance_physically_removes_only_expired_sessions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::cache::tests::build_cache_stats_report_counts_orphans_and_includes_all_blob_bytes biomcp-0.9.3> PASS [ 0.022s] biomcp-cli cli::article::tests::json::article_search_json_next_commands_preserve_source_filter biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::cache::tests::cache_stats_report_json_serializes_env_and_file_origins_lowercase biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::cache::tests::build_cache_stats_report_uses_index_entry_timestamps_only_for_age_range biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::cache::tests::cache_stats_report_markdown_is_heading_free_and_stable biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::cache::tests::build_cache_stats_report_empty_snapshot_has_zero_counts_null_age_and_default_origins biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::author::tests::author_papers_accepts_the_full_flag_with_limit_and_offset biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cli::author::tests::author_grammar_requires_named_query_and_omits_affiliation biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cli::article::tests::next_commands::article_search_json_keeps_exact_variant_follow_up_on_empty_page biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::cache::tests::collect_cache_stats_report_calls_snapshot_once_for_resolved_http_path biomcp-0.9.3> PASS [ 0.197s] biomcp-cli cache::provider_capture::tests::expires_captures_and_republishes_received_bytes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::cache::tests::render_path_for_config_appends_http_to_resolved_cache_root biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::cache::tests::render_path_for_config_does_not_create_or_migrate_directories biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::cache::tests::render_path_for_config_keeps_relative_cache_roots_relative biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::cache::tests::managed_clear_removes_the_citation_evidence_sidecar_and_sums_its_bytes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::chart::github_287_tests::a_missing_chart_exits_nonzero biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::chart::tests::chart_help_lists_descriptions_for_all_chart_topics biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::chart::tests::chart_subcommand_parses_heatmap_topic biomcp-0.9.3> PASS [ 0.029s] biomcp-cli cli::article::tests::outage::zero_rows_with_every_source_answered_keeps_exit_zero_complete_true biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::chart::tests::show_returns_heatmap_doc biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::chart::tests::chart_subcommand_parses_stacked_bar_topic biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::chart::tests::chart_subcommand_parses_survival_topic biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::chart::tests::chart_subcommand_parses_scatter_topic biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::chart::tests::show_returns_stacked_bar_doc biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::chart::tests::show_returns_scatter_doc biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::chart::tests::chart_subcommand_parses_waterfall_topic biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::chart::tests::chart_subcommand_parses_violin_topic biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::chart::tests::show_returns_waterfall_doc biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::diagnostic::tests::diagnostic_json_compacts_nested_lists_and_full_restores_them biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::diagnostic::tests::get_diagnostic_help_mentions_supported_sections biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::diagnostic::tests::handle_get_honors_trailing_json_flag_after_sections biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::diagnostic::tests::search_args_reject_zero_limit_before_gtr_lookup biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::diagnostic::tests::handle_search_json_omits_suggestions_for_high_offset_empty_page biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::diagnostic::tests::search_diagnostic_help_mentions_source_aware_examples biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::diagnostic::tests::handle_search_json_includes_suggestions_for_true_zero_result biomcp-0.9.3> PASS [ 0.227s] biomcp-cli cache::provider_capture::tests::captures_and_reads_exact_bytes_with_content_addressed_dedupe biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::diagnostic::tests::search_diagnostic_parses_filter_only_flags biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cli::discover::tests::discover_search_with_resolved_concepts_is_unchanged biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::disease::dispatch::workflow_tests::disease_trials_limit_one_avoids_ctgov_total_count biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cli::discover::tests::discover_inline_search_matches_the_suggested_command_requests biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::disease::tests::disease_search_json_includes_fallback_meta_and_provenance biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::disease::tests::disease_search_json_includes_next_commands_for_direct_hits biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::disease::tests::disease_search_json_preserves_fallback_with_workflow_meta biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::disease::tests::disease_trials_parses_source_and_limit biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::disease::tests::get_disease_accepts_explicit_multi_word_name biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::disease::tests::disease_trials_limit_rejects_too_big_before_lookup biomcp-0.9.3> PASS [ 0.024s] biomcp-cli cli::discover::tests::discover_search_without_concepts_runs_the_suggested_article_search biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::discover::tests::discover_without_search_keeps_the_note_only_response biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::disease::tests::get_disease_help_includes_when_to_use_guidance biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::disease::tests::related_limit_rejects_zero_before_lookup biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_adverse_events_parses_advertised_faers_filters biomcp-0.9.3> PASS [ 0.074s] biomcp-cli cli::article::tests::json::article_session_suggestions_flow_into_search_json_after_overlap biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_bare_name_parses_as_external_subcommand biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::drug::tests::drug_interactions_help_mentions_ddinter_bundle_and_truthful_empty_state biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::drug::tests::drug_adverse_events_help_lists_count_and_filter_parity biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cli::drug::alias_alignment_tests::public_region_aliases_are_aligned_across_parser_help_list_and_docs biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_trials_help_mentions_alias_expansion_and_opt_out biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::drug::tests::drug_interactions_parse_anchor_name biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_trials_parse_no_alias_expand biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_trials_reject_no_alias_expand_for_nci_source biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::drug::tests::get_drug_accepts_explicit_multi_word_name biomcp-0.9.3> PASS [ 0.068s] biomcp-cli cli::cache::tests::cache_stats_report_separates_provider_capture_namespace_bytes biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::drug::tests::get_drug_parses_ema_region_alias_as_eu biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::drug::tests::get_drug_help_mentions_raw_label_mode biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::drug::tests::get_drug_region_respects_explicit_region biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::drug::tests::get_drug_region_keeps_non_regulatory_no_flag_shapes_on_us_default biomcp-0.9.3> PASS [ 0.047s] biomcp-cli cli::discover::tests::discover_article_section_matches_the_direct_render_apart_from_the_header biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::drug::tests::get_drug_help_lists_region_flag_and_examples biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::drug::tests::get_drug_region_defaults_to_all_for_regulatory_only_queries biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::drug::tests::json::drug_search_json_all_region_carries_the_who_degrade_note biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::drug::tests::get_drug_parses_region_split_form biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cli::drug::tests::get_drug_raw_rejects_non_label_sections biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::drug::tests::json::drug_search_json_all_region_uses_unified_regions_envelope biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::drug::tests::json::drug_search_json_all_region_keeps_empty_buckets biomcp-0.9.3> PASS [ 0.267s] biomcp-cli cache::provider_capture::tests::concurrent_same_content_captures_publish_one_complete_record biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::drug::tests::json::drug_search_json_preserves_region_envelope_with_workflow_meta biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::drug::tests::json::drug_search_json_single_region_keeps_api_identifier_when_present biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::drug::tests::json::drug_search_json_orders_match_tiers_stably_within_one_region biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::drug::tests::search_drug_region_defaults_to_us_for_structured_queries biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::drug::tests::search_drug_region_allows_explicit_who_for_structured_queries biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::drug::tests::search_drug_region_defaults_to_all_for_name_only_queries biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::drug::tests::json::drug_search_json_single_region_keeps_selected_bucket_and_who_fields biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::drug::tests::json::drug_search_json_single_region_keeps_empty_selected_bucket_and_omits_meta biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::drug::tests::json::drug_search_json_single_region_omits_get_follow_up_for_vaccine_results biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::drug::tests::search_drug_help_mentions_default_all_and_structured_filter_note biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::drug::tests::search_drug_parses_who_product_type_filter biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::drug::tests::search_drug_region_rejects_explicit_non_us_for_structured_queries biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::drug::tests::search_plan_rejects_non_us_structured_region biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::gene::related::tests::gene_trials_use_literal_biomarker_and_avoid_limit_one_count biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::drug::tests::search_plan_rejects_product_type_without_explicit_who_region biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::drug::tests::search_plan_rejects_structured_who_vaccine_requests biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::gene::tests::gene_bare_symbol_parses_as_external_subcommand biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::gene::tests::handle_get_gene_alias_fallback_returns_markdown_suggestion biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::gene::tests::gene_cspec_document_parses_as_nested_raw_subcommand biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::gwas::dispatch::tests::gwas_pagination_human_guidance_distinguishes_all_three_states biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::gene::tests::gene_get_alias_parses_as_definition_subcommand biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::gwas::dispatch::tests::gwas_pagination_json_has_only_the_followable_contract biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::gwas::tests::search_args_reject_windows_beyond_the_provider_budget_without_panicking biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::gene::tests::get_gene_help_includes_when_to_use_guidance biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::gene::tests::gene_pathways_parses_limit_and_offset biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::gene::tests::gene_cspec_files_is_a_flag_on_version_or_capture_selection biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::gwas::tests::region_is_not_an_advertised_or_accepted_gwas_filter biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::http::probe_override_tests::a_non_loopback_base_with_a_loopback_signal_is_rejected biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::gwas::tests::search_args_reject_zero_limit_before_backend_lookup biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::gwas::tests::search_gwas_parses_positional_query biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::http::probe_override_tests::an_allowed_base_keeps_the_path_and_query biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::http::probe_override_tests::a_non_loopback_probe_base_is_never_allowed biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::http::probe_override_tests::the_exact_loopback_origin_the_signal_names_is_allowed biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::http::probe_override_tests::an_unparseable_base_leaves_the_catalog_url_unchanged biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::catalog::gencc_health_uses_dedicated_head_contract biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::catalog::fda_orphan_health_has_dedicated_form_probe biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::catalog::health_inventory_includes_all_expected_sources biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::catalog::markdown_shows_new_affects_mappings biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::tests::catalog::nci_health_probe_uses_keyword_query biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::health::tests::catalog::clingen_health_descriptors_and_affects_remain_distinct biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::tests::catalog::pharmgkb_health_row_probes_and_explains_the_clinpgx_move biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cli::gwas::tests::search_args_validate_probability_threshold_before_backend_lookup biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::tests::http::key_gated_source_is_excluded_when_env_missing biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::health_json_exposes_automation_exit_policy biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::http::empty_key_is_treated_as_missing biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::http::excluded_key_gated_row_serializes_key_configured_false biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_authed_semantic_scholar_as_configured biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_authenticated_429_as_error biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::health::tests::fda::fda_orphan_redirect_answer_names_the_block_in_the_row biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_unauthenticated_429_as_unavailable biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_unauthed_semantic_scholar_as_healthy biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_unauthenticated_non_429_as_error biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::http::orcid_row::a_configured_token_probes_the_public_person_endpoint biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cli::health::tests::fda::fda_orphan_fixture_probe_reconciles_rows_counts_and_fail_policy biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::http::vaers_query_error_reports_error_row_with_affects biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::health::tests::http::orcid_row::an_invalid_nonblank_token_is_an_error_row_without_any_request biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::tests::local::check_cache_dir_config_error_matches_pinned_contract biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::health::tests::http::orcid_row::a_missing_token_probes_the_public_person_endpoint_unauthenticated biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::http::vaers_query_success_reports_healthy_row biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::check_cache_limits_warns_when_disk_floor_is_violated biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::health::tests::local::check_cache_dir_success_row_uses_resolved_path_and_ok_contract biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::health::tests::local::check_cache_limits_reports_snapshot_errors_as_error_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::check_cache_limits_within_limits_returns_healthy_row biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::cvx_local_data_not_configured_when_default_root_is_empty biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::check_cache_limits_warns_when_referenced_bytes_exceed_max_size biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::cvx_local_data_errors_when_default_root_is_partial biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::cvx_local_data_reports_configured_stale_when_env_root_is_complete_but_old biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::health::tests::local::cvx_local_data_reports_available_when_default_root_is_complete biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::ema_local_data_errors_when_default_root_is_partial biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::ddinter_local_data_reports_available_when_default_root_is_complete biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::ema_local_data_json_reports_error_row_with_affects biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::ema_local_data_errors_when_env_root_is_missing_files biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::ema_local_data_not_configured_when_default_root_is_empty biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::ema_local_data_json_reports_healthy_row_without_affects biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::ema_local_data_reports_available_when_default_root_is_complete biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::health::tests::local::ema_local_data_reports_configured_when_env_root_is_complete biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::gtr_local_data_reports_available_when_default_root_is_complete biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::gtr_local_data_errors_when_default_root_is_partial biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::gtr_local_data_not_configured_when_default_root_is_empty biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::mcp_local_rows_serialize_and_render_without_local_paths biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::health::tests::local::gtr_local_data_reports_configured_stale_when_env_root_is_complete_but_old biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::probe_cache_dir_failure_preserves_error_contract biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_ivd_local_data_errors_when_env_root_is_missing_file biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_ivd_local_data_not_configured_when_default_root_is_empty biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_ivd_local_data_reports_available_when_default_root_is_complete biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::health::tests::local::mcp_cache_dir_row_names_the_cache_without_its_path biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_ivd_local_data_reports_configured_stale_when_env_root_is_complete_but_old biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_ivd_local_data_reports_configured_when_env_root_is_complete biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_local_data_errors_when_env_root_is_missing_file biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::tests::local::who_local_data_errors_when_only_api_file_is_missing biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_local_data_errors_when_only_vaccine_file_is_missing biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_local_data_reports_configured_stale_when_env_root_is_complete_but_old biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::tests::local::who_local_data_reports_default_path_stale_when_complete_but_old biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_local_data_not_configured_when_default_root_is_empty biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_local_data_reports_available_when_default_root_is_complete biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_local_data_reports_configured_when_env_root_is_complete biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::tests::runner::all_healthy_includes_warning_and_excluded_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::tests::requested_health_sources_are_exact_case_insensitive_and_deduplicated biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::runner::empty_report_counts_reconcile biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::runner::keyed_row_serializes_raw_status_with_key_configured_true biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::tests::runner::markdown_omits_affects_column_when_all_healthy biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::health::tests::runner::markdown_shows_affects_column_when_present biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::runner::markdown_decorates_keyed_error_rows_without_changing_status biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::runner::markdown_decorates_keyed_success_rows_without_changing_status biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::health::tests::runner::public_row_omits_key_configured_in_json biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::runner::report_counts_use_probe_class_not_status_prefixes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::health::tests::runner::not_built_row_serializes_fact_and_preserves_markdown biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::runner::markdown_summary_reports_ok_error_excluded_and_warning_counts biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::unknown_health_source_returns_bounded_canonical_suggestions biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::health::tests::runner::timed_out_probe_returns_error_row_with_timeout_latency biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::install::tests::missing_malformed_mismatched_and_symlink_receipts_fail_closed biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_article_page_documents_exact_author_filtering biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_batch_and_enrich_pages_exist biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::list::tests::pages::list_adverse_event_documents_source_free_count_invocation biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::list::tests::pages::list_article_page_mentions_entity_aware_followups biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_discover_page_exists biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_diagnostic_page_exists biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_discover_page_mentions_gene_topic_article_followup biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_discover_page_mentions_empty_and_low_confidence_article_fallbacks biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_discover_page_stays_terminal_friendly biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_discover_page_mentions_relational_redirect_and_supported_exceptions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_discover_page_states_exact_paging_and_output_bounds biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_disease_mentions_phenotype_search_supports_symptom_phrases biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_disease_mentions_opt_in_sections biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_drug_describes_omitted_region_behavior biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_drug_documents_raw_label_mode biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_entity_pages_drop_stale_skill_sections biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_pathway_describes_source_aware_sections biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_root_entity_verbs_match_public_grammar biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_gene_mentions_new_gene_sections biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_root_includes_routing_table_and_quickstart biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_root_primary_discovery_lines_stay_terminal_friendly biomcp-0.9.3> PASS [ 0.030s] biomcp-cli cli::install::tests::checksum_mismatch_and_package_manager_paths_fail_with_safe_guidance biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_search_all_page_mentions_counts_only_json_contract biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_search_pages_document_search_json_next_commands biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::list::tests::pages::list_root_json_includes_gettable_and_search_only_entities biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cli::list::tests::pages::list_json_is_a_typed_catalog_instead_of_rendered_markdown_fragments biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_study_page_exists biomcp-0.9.3> PASS [ 0.033s] biomcp-cli cli::install::tests::symlinked_executable_or_receipt_never_grants_ownership biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_suggest_page_is_not_valid biomcp-0.9.3> PASS [ 0.007s] biomcp-cli cli::list::tests::pages::list_variant_explains_alphagenome_availability_for_this_build biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_trial_and_article_include_missing_flags biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::list::tests::pages::list_skill_json_contains_real_commands_without_duplicates biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_variant_json_keeps_helper_commands_discoverable biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::pages::phenotype_list_mentions_hpo_ids_and_symptom_phrases biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::list::tests::pages::phenotype_and_gwas_include_workflow_tips biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::list::tests::router::list_skill_alias_routes_to_skill_listing biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::list::tests::router::unknown_entity_lists_new_valid_entities biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::mcp_config::tests::absolute_path_command_stays_valid_json biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::mcp_config::tests::codex_absolute_path_is_shell_safe biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::mcp_config::tests::no_client_output_lists_clients_and_examples biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::mcp_config::tests::vscode_uses_the_servers_key_it_actually_reads biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::mcp_config::tests::codex_uses_default_biomcp_serve_invocation biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::mcp_config::tests::json_clients_use_biomcp_serve_by_default biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::outcome::probe_tests::runtime_split::a_one_shot_drop_does_not_wait_for_background_blocking_work biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::outcome::tests::variant_article_disposition_survives_the_raw_mcp_execution_seam biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::outcome::tests::mcp_keeps_text_from_a_nonzero_structured_outcome biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::outcome::probe_tests::the_dispatch_future_stays_under_the_size_ceiling biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::outcome::tests::non_utf8_binary_outcome_is_never_converted_to_mcp_text biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::outcome::probe_tests::runtime_split::the_mcp_path_builds_no_one_shot_runtime biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::pathway::tests::pathway_trial_fallback_allows_no_match_on_first_page biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::pathway::tests::pathway_trial_fallback_skips_offset_or_known_matches biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::outcome::probe_tests::the_run_fallthrough_future_stays_under_the_size_ceiling biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::pathway::tests::pathway_help_describes_source_aware_section_contract biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::pathway::tests::pathway_trials_parse_source_and_limit biomcp-0.9.3> PASS [ 0.065s] biomcp-cli cli::health::tests::runner::health_probes_respect_concurrency_limit_and_source_order biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::pathway::tests::search_pathway_help_describes_conditional_query_contract biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::pathway::tests::related_limit_rejects_zero_before_lookup biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::phenotype::tests::pagination_footer_can_offer_local_continuation_and_warn_about_provider_ceiling biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::phenotype::tests::pagination_footer_keeps_ceiling_warning_on_final_local_page biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::pgx::tests::search_pgx_parses_positional_query biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::pathway::tests::search_pathway_limit_rejects_too_big_with_range biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::pgx::tests::search_args_reject_zero_limit_before_backend_lookup biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::phenotype::tests::search_args_reject_a_window_beyond_the_provider_budget biomcp-0.9.3> PASS [ 0.213s] biomcp-cli cli::cache::tests::explicit_cache_maintenance_waits_for_an_active_cache_operation biomcp-0.9.3> PASS [ 0.399s] biomcp-cli cache::provider_capture::tests::enforces_namespace_capacity_with_deterministic_lru_eviction biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cli::pathway::tests::search_pathway_requires_query_unless_top_level biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::phenotype::tests::search_args_reject_zero_limit_before_backend_lookup biomcp-0.9.3> PASS [ 0.064s] biomcp-cli cli::install::tests::valid_receipt_proves_ownership_and_pending_new_state_recovers biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::phenotype::tests::search_phenotype_help_mentions_hpo_ids_and_symptom_phrases biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::protein::tests::protein_structures_parses_offset_flag biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::protein::tests::search_args_reject_too_large_limit biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::protein::tests::search_protein_help_shows_limit_range biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::protein::tests::search_args_reject_next_page_with_offset biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::response_contract::tests::structured_error_finalizer_adds_paths_without_overwriting_values biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::response_contract::tests::structured_error_finalizer_leaves_unowned_shapes_unchanged biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cli::protein::tests::review_flags_are_explicit_and_conflicting_spellings_fail biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::response_contract::tests::variant_article_batch_errors_keep_the_stable_envelope biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::response_contract::tests::variant_article_item_failures_preserve_aggregate_state_and_followups biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::search_all::tests::dispatch::merge_trial_backfill_rows_respects_limit_with_preferred_only biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::search_all::tests::dispatch::merge_trial_backfill_rows_preserves_preferred_order_and_dedupes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::dispatch::section_timeout_uses_article_specific_budget biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::search_all::tests::dispatch::section_fetch_limit_reduces_only_safe_counts_only_sections biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::dispatch::trial_recruiting_filter_note_names_the_failure_and_the_widening biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::format::counts_only_json_projection_preserves_debug_plan biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::format::counts_only_json_projection_reports_truthful_exact_counts biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::search_all::tests::format::dedupe_gwas_rows_keeps_lowest_p_value biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::format::counts_only_json_uses_a_lower_bound_when_no_exact_total_exists biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::search_all::tests::format::format_search_all_p_value_removes_float_artifacts biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::search_all::tests::format::refine_drug_results_filters_metabolites_when_parent_like_match_exists biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::search_all::tests::format::refine_drug_results_keeps_metabolites_when_no_parent_like_match biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::format::variant_significance_rank_matches_clinical_priority biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::canonical_article_command_dedupes_shared_disease_keyword_token biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::search_all::tests::format::to_json_array_preserves_article_source_and_ranking_metadata biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::canonical_article_command_keeps_distinct_disease_and_keyword_filters biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::search_all::tests::links::canonical_article_command_quotes_apostrophe_keyword_for_shell_safety biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::canonical_article_command_keeps_keyword_only_search biomcp-0.9.3> PASS [ 0.024s] biomcp-cli cli::search_all::tests::dispatch::a_degraded_trial_section_renders_the_note_and_drops_count_exact biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::canonical_drug_command_stays_typed_only_with_gene_anchor biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::search_all::tests::links::top_get_command_prefers_parent_like_salt_name_over_metabolites biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::search_all::tests::links::top_get_command_skips_civic_variant_ids biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::top_get_command_prefers_parent_drug_name biomcp-0.9.3> PASS [ 0.026s] biomcp-cli cli::search_all::tests::dispatch::search_all_pathway_section_surfaces_sanitized_wikipathways_error biomcp-0.9.3> PASS [ 0.032s] biomcp-cli cli::response_contract::tests::argument_dependent_and_keyless_contract_inventory biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::search_all::tests::links::canonical_variant_command_preserves_unparsed_anchor biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::search_all::tests::links::canonical_trial_command_stays_typed_only_with_distinct_keyword biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::search_all::tests::plan::article_filters_follow_keyword_dependent_ranking_defaults biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::search_all::tests::plan::build_dispatch_plan_keyword_only_routes_to_article biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::search_all::tests::plan::build_dispatch_plan_gene_only_matches_contract biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::search_all::tests::plan::build_result_plan_keyword_article_leg_excludes_litsense2_default_source biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::search_all::tests::plan::build_result_plan_marks_shared_disease_keyword_orientation_fallback biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::plan::build_result_plan_marks_ungrounded_disease_fallback_on_article_leg biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::search_all::tests::plan::build_result_plan_includes_fallback_and_article_matched_sources biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::plan::preparation_keeps_literal_colons_and_valid_gene_tokens biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::search_all::tests::plan::preparation_rejects_article_owned_keyword_and_gene_shapes_before_fanout biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::search_all::tests::plan::build_result_plan_skips_ungrounded_marker_when_disease_leg_errors biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::search_all::tests::plan::prepared_input_rejects_empty_typed_slots biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::a_missing_skill_exits_nonzero_github_287 biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::search_all_command::tests::search_all_parses_positional_keyword biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::search_all_command::tests::search_all_without_typed_slots_still_parses_for_runtime_validation biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::skill::tests::catalog::an_empty_skill_catalog_fails_loudly_github_287 biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::canonical_prompt_body_matches_overview_and_normalizes_newlines biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::chart_asset_misses_exit_nonzero_github_287 biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::skill::tests::catalog::debug_builds_embed_the_skill_and_chart_assets_github_287 biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cli::search_all::tests::plan::build_dispatch_plan_variant_with_gene_fanout biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::search_all_command::tests::search_all_parses_slot_flags biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::embedded_skill_overview_is_routing_first_and_points_to_worked_examples biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::embedded_use_case_catalog_lists_expected_worked_examples biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::skill::tests::catalog::refreshed_search_examples_are_non_empty biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::skill::tests::catalog::missing_skill_suggests_skill_catalog biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::the_healthy_catalog_still_lists_github_287 biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::skill::tests::catalog::validate_skills_target_uses_project_free_uv_dev_environment biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::skill::tests::install::find_best_target_defaults_to_home_agents_when_nothing_exists biomcp-0.9.3> PASS [ 0.054s] biomcp-cli cli::response_contract::tests::command_collection_contract_inventory biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::skill::tests::install::find_best_target_preserves_pi_agent_skills_path biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::skill::tests::install::find_best_target_falls_back_to_agents_root_then_claude_root biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::skill::tests::install::find_best_target_prefers_agents_populated_skills_dir biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::skill::tests::install::find_best_target_ignores_non_skill_files_in_skills_dir biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::skill::tests::install::find_existing_install_ignores_skill_md_directory biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::skill::tests::install::find_existing_install_prefers_agents_and_reports_others biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::skill::tests::install::find_existing_install_detects_claude biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::skill::tests::install::fresh_atomic_rename_refuses_a_racing_target biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::stale_json_note_tests::search_all_json_body_carries_notes_only_when_present biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::charts::chart_auxiliary_flags_require_chart biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::charts::handle_command_rejects_invalid_expression_chart biomcp-0.9.3> PASS [ 0.023s] biomcp-cli cli::skill::tests::install::install_to_dir_writes_canonical_skill_md_and_assets biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::charts::png_pixel_budget_is_rejected_before_study_lookup biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::charts::short_help_hides_chart_flags_but_long_help_shows_them biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::study::tests::charts::study_co_occurrence_invalid_chart_lists_heatmap biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_co_occurrence_parses_heatmap_chart_flag biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_compare_expression_parses_scatter_chart_with_file_dimensions biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_compare_mutations_invalid_chart_lists_stacked_bar biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_compare_mutations_parses_stacked_bar_chart_flag biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::study::tests::charts::study_query_mutations_invalid_chart_lists_waterfall biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::study::tests::charts::study_query_parses_chart_flags biomcp-0.9.3> PASS [ 0.062s] biomcp-cli cli::skill::tests::install::failed_atomic_exchange_leaves_existing_target_unchanged biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::study::tests::charts::study_query_parses_waterfall_chart_flag biomcp-0.9.3> PASS [ 0.071s] biomcp-cli cli::skill::tests::catalog::embedded_use_case_anchor_commands_parse biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_survival_parses_survival_chart_flag biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::study::tests::help::study_co_occurrence_help_describes_gene_list_contract biomcp-0.9.3> PASS [ 0.065s] biomcp-cli cli::skill::tests::install::force_rejects_a_directory_at_a_manifest_recorded_file_path biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::study::tests::help::study_cohort_help_describes_gene_split biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::help::study_compare_help_describes_type_and_target biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::study::tests::help::study_download_help_describes_list_and_study_id biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::study::tests::help::study_filter_help_describes_each_filter_flag biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::help::study_help_lists_descriptions_for_all_subcommands biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::study::tests::help::study_query_help_describes_key_flags_and_aliases biomcp-0.9.3> PASS [ 0.070s] biomcp-cli cli::skill::tests::install::managed_status_distinguishes_current_unmanaged_stale_and_modified biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::study::tests::help::study_top_mutated_help_describes_limit biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::help::study_survival_help_describes_endpoint_values_and_aliases biomcp-0.9.3> PASS [ 0.079s] biomcp-cli cli::skill::tests::install::force_preserves_unrelated_symlinks_without_following_them biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::study::tests::parsing::study_co_occurrence_parses_gene_list biomcp-0.9.3> PASS [ 0.084s] biomcp-cli cli::skill::tests::install::install_result_reports_installed_unchanged_and_repaired_truthfully biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::parsing::study_download_parses_list_flag biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::study::tests::parsing::study_compare_parses_type_and_target biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cli::study::tests::parsing::study_cohort_parses_required_flags biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::parsing::study_list_parses_subcommand biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::study::tests::parsing::study_download_parses_positional_study_id biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::study::tests::parsing::study_filter_parses_all_flags_and_repeated_values biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::study::tests::parsing::study_survival_parses_endpoint_flag biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::study::tests::parsing::study_query_parses_required_flags biomcp-0.9.3> PASS [ 0.086s] biomcp-cli cli::skill::tests::install::malformed_manifest_cannot_authorize_removing_unrelated_files biomcp-0.9.3> PASS [ 0.088s] biomcp-cli cli::skill::tests::install::plain_install_preserves_edits_and_force_repairs_managed_files biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::study::tests::parsing::study_top_mutated_parses_limit_flag biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::study::tests::validation::study_filter_accepts_finite_f64_threshold_boundaries biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::study::tests::validation::study_co_occurrence_requires_2_to_10_genes biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::study::tests::validation::study_compare_rejects_unknown_type biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::system::batch::tests::dropping_settlement_cancels_active_and_queued_work biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::study::tests::validation::study_filter_rejects_malformed_expression_threshold biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::study::tests::validation::study_filter_requires_at_least_one_criterion biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::study::tests::validation::study_filter_cli_and_mcp_paths_share_non_finite_invalid_argument biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::study::tests::validation::study_survival_rejects_unknown_endpoint biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cli::system::batch::tests::article_batch_preflight_pins_modes_sections_counts_and_id_bytes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::system::batch::tests::settlement_caps_live_work_preserves_order_and_settles_after_failure biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::system::batch::tests::batch_command_parses_sections_source_and_closed_article_modes biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::system::tests::batch_help_includes_examples_and_limits biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::system::tests::clap_version_includes_the_build_version biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::system::tests::cvx_sync_help_describes_bundle_refresh biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::system::tests::cvx_help_mentions_sync_example biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::system::tests::ddinter_help_mentions_sync_example biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cli::system::dispatch::batch_settlement_tests::mixed_batch_preserves_input_order_and_emits_every_result biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::system::tests::cvx_sync_parses_subcommand biomcp-0.9.3> PASS [ 0.028s] biomcp-cli cli::study::tests::validation::study_filter_rejects_non_finite_expression_thresholds_before_study_lookup biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::system::tests::ddinter_sync_help_describes_eight_csv_refresh biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::system::tests::ddinter_sync_parses_subcommand biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cli::system::tests::dev2_contracts::batch_source_is_optional_and_trial_only biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::system::tests::enrich_json_always_serializes_unresolved_genes biomcp-0.9.3> PASS [ 0.033s] biomcp-cli cli::system::batch::tests::dropping_settlement_cancels_cacheable_article_provider_retry_and_admission biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::system::tests::enrich_command_parses_limit biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::system::tests::discover_top_level_command_parses_query biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::system::tests::dev2_contracts::serve_http_rejects_port_zero biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::system::tests::discover_help_includes_when_to_use_guidance biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::system::tests::ema_sync_parses_subcommand biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::system::tests::ema_help_mentions_sync_example biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::system::tests::enrich_markdown_reports_unresolved_genes_before_empty_result biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cli::system::tests::discover_and_batch_json_keep_executable_templates_without_human_option_prose biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::system::tests::enrich_markdown_reports_unresolved_genes_before_results biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::system::tests::gtr_help_mentions_sync_example biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::system::tests::gtr_sync_help_describes_diagnostic_bundle_refresh biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::system::tests::gtr_sync_parses_subcommand biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::system::tests::enrich_rejects_limit_above_max_before_api_call biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::system::tests::handle_enrich_rejects_zero_limit_before_api_call biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::system::tests::health_command_parses_apis_only biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::system::tests::enrich_rejects_zero_limit_before_api_call biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::system::tests::list_command_parses_entity_name biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::system::tests::rendered_list_help_names_exactly_the_production_catalog_entities biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::system::tests::serve_http_help_describes_streamable_http biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::system::tests::sync_json_reports_the_actual_change_flag biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::system::tests::sync_text_output_reports_its_message_not_a_change_flag biomcp-0.9.3> PASS [ 0.040s] biomcp-cli cli::system::tests::dev2_contracts::dropping_canonical_compact_command_cancels_provider_retry biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::system::tests::skill_uninstall_is_rejected_before_skill_lookup biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::system::tests::serve_http_host_safety_flags_conflict biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::system::tests::version_json_contract_has_identity_fields biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::system::tests::version_command_parses_verbose_flag biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::system::tests::who_help_mentions_sync_example biomcp-0.9.3> PASS [ 0.042s] biomcp-cli cli::system::tests::dev2_contracts::ten_batch_items_start_together_and_each_owns_its_deadline biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::system::tests::who_ivd_help_mentions_sync_example biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::system::tests::who_ivd_sync_help_describes_diagnostic_csv_refresh biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::system::tests::who_sync::who_sync_clean_json_keeps_synchronized_status_and_zero_exit biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::system::tests::who_sync::who_sync_partial_json_says_partial_with_per_file_outcomes_and_exits_nonzero biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::system::tests::who_sync::who_sync_partial_run_says_partial_names_each_file_and_exits_nonzero biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::system::tests::who_ivd_sync_parses_subcommand biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::system::tests::who_sync::who_sync_reports_refreshed_and_failed_files_instead_of_a_bare_success_claim biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::system::tests::who_sync_help_describes_dual_export_refresh biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::system::tests::who_sync_parses_subcommand biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_clean_command_parses_with_flags biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::facade::cache::cache_clean_help_mentions_dry_run_json_and_limits biomcp-0.9.3> PASS [ 0.028s] biomcp-cli cli::system::tests::uninstall_removes_exactly_the_owned_binary_and_receipt biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_clear_help_mentions_yes_tty_and_destructive_scope biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_clear_command_parses biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::tests::facade::cache::cache_clear_command_parses_with_yes_flag biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::tests::facade::cache::cache_help_lists_clear_subcommand biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::tests::facade::cache::cache_path_command_parses biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::tests::facade::cache::cache_path_help_describes_plain_and_typed_json_output biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_stats_command_parses biomcp-0.9.3> PASS [ 0.017s] biomcp-cli cli::tests::facade::cache::cache_help_keeps_json_but_hides_no_cache_everywhere biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_stats_help_mentions_json_and_cli_only biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::tests::facade::cache::json_cache_path_parses_as_plain_path_command biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::tests::facade::cache::no_cache_is_rejected_by_public_run_before_cache_dispatch biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::tests::facade::chart::chart_args_default_to_no_chart biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::json_cache_stats_parses_as_stats_command biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::no_cache_is_rejected_by_public_run_outcome_as_json_usage_error biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::facade::help::discover_help_mentions_article_search_fallback_for_non_canonical_queries biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::tests::facade::help::runtime_commands_still_parse_hidden_global_flags biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::facade::help::search_all_help_mentions_counts_only_json_contract biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::tests::facade::help::skill_help_examples_match_installed_surface biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::facade::help::runtime_help_hides_query_only_global_flags biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::tests::facade::help::top_level_help_lists_cache_command biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::facade::help::top_level_help_has_no_cache_path_json_exception biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cli::tests::facade::chart::chart_dimension_flags_enforce_practical_bounds biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::facade::help::top_level_help_omits_suggest_command biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::tests::facade::help::top_level_help_describes_cache_family_not_path_only biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::facade::help::top_level_help_uses_count_free_source_phrase biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::tests::facade::reversed_search_rejects_non_utf8_before_candidate_parsing biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::facade::shared_pagination_and_section_provenance_regressions biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::tests::facade::reversed_search_catchall_non_utf8_uses_safe_fallback biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::facade::search_all_requires_at_least_one_typed_slot biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::tests::facade::reversed_search_preserves_globals_delimiters_and_hostile_data biomcp-0.9.3> PASS [ 0.039s] biomcp-cli cli::tests::facade::chart::chart_json_uses_the_canonical_name_for_every_topic biomcp-0.9.3> PASS [ 0.024s] biomcp-cli cli::tests::facade::reversed_search_detector_preserves_baseline_boundaries biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_next_commands_keep_four_visible_gtr_sections biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_includes_regulatory_field_and_provenance_when_requested biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_omits_regulatory_field_when_unrequested biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_next_commands_quote_who_follow_up biomcp-0.9.3> PASS [ 0.030s] biomcp-cli cli::tests::facade::reversed_search_complete_sentence_cap_is_inclusive biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_next_commands_parse biomcp-0.9.3> PASS [ 0.031s] biomcp-cli cli::tests::facade::reversed_search_catchalls_fall_back_without_echo_when_correction_is_suppressed biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::disease_json_next_commands_omit_requested_section_follow_up biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::disease_json_suggestions_match_see_also_without_more_hints biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::pgx_json_next_commands_parse biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::tests::next_commands_json_property::gene_article::gene_json_next_commands_omit_requested_section_follow_up biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::gene_article::gene_json_suggestions_match_see_also_without_section_hints biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::disease_json_next_commands_parse biomcp-0.9.3> PASS [ 0.023s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::disease_json_next_commands_include_top_gene_context biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::trial_json_next_commands_parse biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cli::tests::next_commands_json_property::gene_article::article_json_next_commands_parse biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::batch_adverse_event_json_uses_variant_specific_meta biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::batch_protein_json_omits_requested_section_from_next_commands biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::faers_subset_json_filters_data_commands_and_provenance_together biomcp-0.9.3> PASS [ 0.024s] biomcp-cli cli::tests::next_commands_json_property::gene_article::gene_json_next_commands_include_clingen_trial_search biomcp-0.9.3> PASS [ 0.055s] biomcp-cli cli::tests::facade::reversed_search_global_delimiter_and_display_precedence_matrix biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::faers_json_next_commands_parse biomcp-0.9.3> PASS [ 0.023s] biomcp-cli cli::tests::next_commands_json_property::gene_article::gene_json_next_commands_parse biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::device_event_json_next_commands_parse biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::pathway_json_next_commands_parse biomcp-0.9.3> PASS [ 0.059s] biomcp-cli cli::tests::facade::reversed_search_names_report_copyable_canonical_commands biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::protein_json_next_commands_parse biomcp-0.9.3> PASS [ 0.068s] biomcp-cli cli::tests::facade::reversed_search_candidate_errors_and_byte_caps_preserve_baseline biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::next_commands_json_property::protein_phenotype::phenotype_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::next_commands_json_property::protein_phenotype::protein_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::tests::next_commands_json_property::variant_drug::drug_interaction_report_json_next_commands_include_helper_follow_ups biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::adverse_event_next_commands_parse biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::adverse_event_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::tests::next_commands_validity::article_and_discover_next_commands_parse biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::author_papers_rich_continuation_parses_with_original_arguments biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::tests::next_commands_json_property::variant_drug::variant_json_next_commands_parse biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cli::tests::next_commands_json_property::variant_drug::variant_json_next_commands_include_vus_literature_route biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cli::tests::next_commands_validity::article_loop_suggestion_commands_parse biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::device_event_next_commands_parse biomcp-0.9.3> PASS [ 0.023s] biomcp-cli cli::tests::next_commands_json_property::variant_drug::drug_json_next_commands_parse biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cli::tests::next_commands_validity::article_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::diagnostic_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::disease_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cli::tests::next_commands_validity::diagnostic_next_commands_parse biomcp-0.9.3> PASS [ 0.025s] biomcp-cli cli::tests::next_commands_validity::article_next_commands_parse biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::gene_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::drug_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::gwas_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::hostile_quoted_article_follow_up_parses_to_one_argument biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cli::tests::next_commands_validity::drug_next_commands_parse biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::tests::next_commands_validity::pathway_next_commands_parse biomcp-0.9.3> PASS [ 0.022s] biomcp-cli cli::tests::next_commands_validity::disease_next_commands_parse biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cli::tests::next_commands_validity::gene_next_commands_parse biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::pathway_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::pgx_next_commands_parse biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::pgx_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::trial_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::tests::next_commands_validity::protein_next_commands_parse biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::alias_fallback_ols_failure_preserves_original_not_found biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::ambiguous_gene_miss_points_to_discover biomcp-0.9.3> PASS [ 0.035s] biomcp-cli cli::tests::next_commands_validity::discover_next_commands_parse biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::variant_search_json_next_commands_parse biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::tests::next_commands_validity::trial_next_commands_parse biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::batch_gene_json_includes_meta_per_item biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::drug_alias_fallback_json_writes_stdout_and_exit_1 biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::tests::outcome::drug_alias_fallback_returns_exit_1_markdown_suggestion biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::extract_json_from_sections_detects_trailing_long_flag biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::extract_json_from_sections_detects_trailing_short_flag biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cli::tests::next_commands_validity::variant_next_commands_parse biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::tests::outcome::gene_alias_fallback_json_writes_stdout_and_exit_1 biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::tests::outcome::clap_diagnostics_remove_terminal_controls_from_rejected_arguments biomcp-0.9.3> PASS [ 0.015s] biomcp-cli cli::tests::outcome::clap_diagnostics_sanitize_layout_controls_in_non_utf8_arguments biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::extract_json_from_sections_keeps_regular_sections biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::gene_alias_fallback_returns_exit_1_markdown_suggestion biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::tests::outcome::mcp_alias_suggestion_json_stays_structured biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::long_running_server_json_rejection_is_structured_and_nonzero biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::tests::outcome::phenotype_search_json_contract_unchanged biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::tests::outcome::resolve_query_input_accepts_flag_or_positional biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::resolve_query_input_rejects_dual_values biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::tests::outcome::search_json_with_meta_includes_next_commands biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::search_json_with_meta_and_suggestions_includes_zero_result_suggestions biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::search_json_with_meta_omits_meta_when_empty biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::search_meta_trims_empty_commands biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::tests::outcome::search_meta_with_suggestions_keeps_empty_suggestions_array biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::tests::outcome::reflected_study_identifier_is_sanitized_at_the_human_diagnostic_boundary biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::tests::outcome::search_meta_with_workflow_keeps_meta_without_next_commands biomcp-0.9.3> PASS [ 0.025s] biomcp-cli cli::tests::outcome::formerly_plain_finite_commands_emit_one_json_document biomcp-0.9.3> PASS [ 0.038s] biomcp-cli cli::tests::next_commands_validity::workflow_ladder_sidecar_commands_parse biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::count_tests::json_and_text_mark_a_partial_count_with_its_reason biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::tests::surface_agreement::drug_command_discovery_has_one_renderer_owner_per_surface biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::trial::count_tests::search_json_carries_the_partial_note_in_meta_notes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::trial::count_tests::json_preserves_precision_and_omits_unknown_approximation biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::tests::printed_card_commands::detail_card_contract_rejects_malformed_command biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::count_tests::search_json_omits_meta_notes_when_the_page_is_fully_verified biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::trial::documents::tests::document_routes_require_standalone_arity biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::trial::count_tests::text_explains_each_unknown_reason_truthfully biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::trial::documents::tests::manifest_is_json_only_and_document_forms_are_ctgov_only biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::trial::tests::get_trial_parses_location_paging_before_sections biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::get_trial_parses_source_before_sections biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::handle_search_rejects_next_page_with_offset biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::handle_search_rejects_no_alias_expand_for_nci_source biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::handle_search_rejects_no_alias_expand_without_intervention biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::trial::tests::nci_repeated_biomarker_like_values_fail_before_dispatch biomcp-0.9.3> PASS [ 0.027s] biomcp-cli cli::tests::surface_agreement::every_detail_card_markdown_and_json_commands_agree biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::trial::tests::search_trial_parses_multi_word_positional_query biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_new_filter_flags biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_next_page_with_intervention biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_no_alias_expand biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_positional_query biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_positional_query_with_status_flag biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_unquoted_multi_token_mutation biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_rejects_non_numeric_age biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::trial_age_help_explains_age_only_count_is_approximate biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::trial_facility_help_names_text_search_and_geo_verify_modes biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_help_clarifies_mutation_vs_biomarker biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_help_documents_alias_expansion_controls biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests::verification_emptied_hint_names_the_upstream_count biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests::verification_emptied_zero_adds_the_criteria_relaxation_command biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_help_documents_nci_source_specific_notes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests::zero_result_trial_broadening_hints_name_filter_relaxations biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::trial::tests::trial_phase_help_explains_combined_phase_label biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_phase_help_explains_canonical_numeric_forms_and_aliases biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_sex_help_explains_all_means_no_restriction biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests::zero_result_trial_next_commands_offer_filtered_broadening biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::explicit_location_pages_carry_exact_nonterminal_continuation biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::handle_get_rejects_declared_limit_zero biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::handle_get_rejects_duplicate_declared_and_legacy_paging biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::handle_get_rejects_declared_paging_without_locations biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::trial::tests_locations::paginate_trial_locations_empty_page_keeps_non_site_contacts_and_normalizes_empty biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::trial::tests_locations::paginate_trial_locations_aligns_site_contacts_to_the_page biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::paginate_trial_locations_handles_missing_locations biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::parse_trial_location_paging_extracts_offset_limit_flags biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::trial::tests_locations::paginate_trial_locations_uses_counted_exact_membership_and_legacy_boundaries biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::parse_trial_location_paging_rejects_legacy_limit_zero biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::trial::tests_locations::terminal_location_page_omits_continuation_key_and_markdown_command biomcp-0.9.3> PASS [ 0.007s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_includes_alias_opt_out_marker biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_can_show_canonical_intervention biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::trial_locations_json_preserves_location_pagination_and_section_sources biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_includes_geo_filters biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_includes_nci_source_marker biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_omits_alias_opt_out_marker_when_not_applicable biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::trial_zero_result_nickname_hint_requires_positional_ctgov_query_with_zero_results biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::update::tests::enforce_checksum_policy_missing_sidecar_without_override_fails_closed biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::update::tests::enforce_checksum_policy_verified_succeeds biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::update::tests::extract_binary_from_targz_rejects_empty_binary biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::update::tests::extract_binary_from_targz_reports_missing_binary_as_not_found biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::update::tests::extract_binary_from_zip_returns_matching_binary_bytes biomcp-0.9.3> PASS [ 0.080s] biomcp-cli cli::tests::printed_card_commands::recovery_commands_round_trip_to_their_registered_routes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::update::tests::extract_binary_from_targz_returns_matching_binary_bytes biomcp-0.9.3> PASS [ 0.007s] biomcp-cli cli::update::tests::install_binary_after_checksum_policy_missing_sidecar_without_override_does_not_replace biomcp-0.9.3> PASS [ 0.007s] biomcp-cli cli::update::tests::production_archive_ceiling_is_exactly_256_mib biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::update::tests::verify_archive_against_checksum_rejects_invalid_format biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::update::tests::verify_archive_against_checksum_accepts_matching_sha256 biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::update::tests::verify_archive_against_checksum_rejects_mismatch biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::variant::car::tests::input_reader_rejects_a_file_larger_than_its_supported_size biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::variant::dispatch::tests::explicit_filter_flags_skip_unset_and_blank_values biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::variant::dispatch::tests::explicit_filter_flags_state_every_flag_in_command_spelling biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::variant::erepo::tests::empty_markdown_labels_germline_scope_and_routes_somatic_questions_to_civic biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::variant::erepo::tests::input_reader_accepts_exact_limit_and_rejects_one_extra_byte biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::variant::erepo::tests::markdown_reports_source_facts_without_json biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::variant::normalization_json::tests::render_deduplicates_aggregate_results biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::variant::tests::apply_gene_first_routing_keeps_every_explicit_filter_in_both_hints biomcp-0.9.3> PASS [ 0.112s] biomcp-cli cli::tests::printed_card_commands::detail_card_commands_parse biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::variant::tests::apply_gene_first_routing_keeps_explicit_filters_on_both_paths biomcp-0.9.3> PASS [ 0.040s] biomcp-cli cli::update::tests::failed_staged_version_smoke_preserves_binary_and_receipt biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::variant::tests::apply_gene_first_routing_routes_confirmed_symbols_and_refuses_the_rest biomcp-0.9.3> PASS [ 0.036s] biomcp-cli cli::update::tests::release_metadata_endpoint_is_injectable biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::variant::tests::apply_gene_first_routing_moves_a_leading_protein_change_to_hgvsp biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::variant::tests::articles::preserves_positional_syntax_and_accepts_structured_input biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::variant::tests::gene_first_working_form_quotes_multi_word_conditions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::variant::tests::gene_routing_preference_off_skips_the_mygene_request biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::variant::tests::articles::rejects_assembly_for_transcript_hgvs biomcp-0.9.3> PASS [ 0.014s] biomcp-cli cli::variant::tests::articles::rejects_positional_input_combination_with_the_batch_error_envelope biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::variant::tests::erepo_help_labels_germline_scope_and_civic_destination biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cli::variant::tests::erepo_gene_mode_is_bounded_and_mutually_exclusive biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::variant::tests::parsing::search_variant_parses_multi_token_positional_query_and_flag biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::variant::tests::parsing::search_variant_parses_single_token_positional_query biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::variant::tests::parsing::search_variant_parses_quoted_gene_change_positional_query biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cli::variant::tests::handle_get_returns_guidance_json_for_shorthand_variant biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::variant::tests::refused_zero_row_hint_keeps_the_explicit_hgvsp_and_consequence_flags biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cli::variant::tests::parse_simple_gene_change_rejects_non_simple_forms biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cli::variant::tests::parse_simple_gene_change_detects_supported_forms biomcp-0.9.3> PASS [ 0.078s] biomcp-cli cli::update::tests::owned_update_smokes_and_atomically_replaces_with_agreeing_receipt biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_keeps_explicit_gene_flag_routing biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_exon_deletion_phrase_to_gene_and_consequence biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_keeps_non_gene_phrases_as_conditions biomcp-0.9.3> PASS [ 0.019s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_gene_flag_residue_alias_to_residue_alias_search biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_gene_hgvsc_text_to_gene_and_hgvsc biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_rsid_to_rsid_filter biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_long_form_positional_gene_change_to_gene_and_hgvsp biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_gene_residue_alias_to_residue_alias_search biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::variant::tests::resolve_variant_query_normalizes_long_form_hgvsp_flag biomcp-0.9.3> PASS [ 0.016s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_simple_gene_change_to_gene_and_hgvsp biomcp-0.9.3> PASS [ 0.042s] biomcp-cli cli::variant::tests::refused_zero_row_json_next_command_keeps_both_caller_flags_end_to_end biomcp-0.9.3> PASS [ 0.008s] biomcp-cli cli::variant::tests::resolve_variant_query_preserves_complex_exact_protein_identity biomcp-0.9.3> PASS [ 0.007s] biomcp-cli cli::variant::tests::resolve_variant_query_preserves_empty_consequence_for_source_validation biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::variant::tests::resolve_variant_query_preserves_stop_x_for_hgvsp_flag biomcp-0.9.3> PASS [ 0.011s] biomcp-cli cli::variant::tests::resolve_variant_query_preserves_conjunctive_rsid_and_protein_identity biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_single_token_to_gene biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_offers_gene_first_candidate_for_free_text_phrases biomcp-0.9.3> PASS [ 0.136s] biomcp-cli cli::update::tests::archive_transport_accepts_exact_limit_for_declared_and_chunked_bodies biomcp-0.9.3> PASS [ 0.062s] biomcp-cli cli::variant::tests::refused_zero_row_search_hint_keeps_the_callers_flags_end_to_end biomcp-0.9.3> PASS [ 0.140s] biomcp-cli cli::update::tests::archive_transport_rejects_limit_plus_one_for_declared_and_chunked_bodies biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_rejects_conflicts_with_positional_mapping biomcp-0.9.3> PASS [ 1.036s] biomcp-cli cache::manager::tests::write_security_tests::put_does_not_wait_past_request_deadline_for_eviction biomcp-0.9.3> PASS [ 0.068s] biomcp-cli cli::variant::tests::refused_zero_row_markdown_hint_keeps_the_consequence_flag_end_to_end biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_returns_guidance_for_standalone_protein_change biomcp-0.9.3> PASS [ 0.021s] biomcp-cli cli::variant::tests::resolve_variant_query_returns_guidance_for_long_form_single_token_change biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_splits_a_protein_change_after_the_gene biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_still_rejects_condition_flag_with_positional_phrase biomcp-0.9.3> PASS [ 0.010s] biomcp-cli cli::variant::tests::split_gene_first_candidate_accepts_symbol_shaped_first_tokens biomcp-0.9.3> PASS [ 0.013s] biomcp-cli cli::variant::tests::search_variant_help_distinguishes_exact_identity_from_broad_discovery biomcp-0.9.3> PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_uses_gene_context_for_long_form_single_token_change biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::variant::tests::split_leading_protein_change_takes_only_a_leading_change biomcp-0.9.3> PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_uses_gene_context_for_standalone_protein_change biomcp-0.9.3> PASS [ 0.009s] biomcp-cli cli::variant::tests::variant_query_gene_routing_preference_defaults_to_mygene biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::variant::tests::variant_bare_id_parses_as_external_subcommand biomcp-0.9.3> PASS [ 0.010s] biomcp-cli enrich_sparse_disease_identity_prefers_exact_ols4_match biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::sections::tests::typed_subset_is_bounded_and_keeps_selected_empty_arrays biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::build_device_query_preserves_typed_seriousness biomcp-0.9.3> PASS [ 0.012s] biomcp-cli cli::variant::tests::variant_trials_parses_source_flag biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::build_device_query_requires_any_device_filter biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::build_device_query_supports_manufacturer_and_product_code_filters biomcp-0.9.3> PASS [ 0.023s] biomcp-cli cli::variant::tests::variant_filter_evaluation_renderers_keep_mixed_states_and_order biomcp-0.9.3> PASS [ 0.025s] biomcp-cli cli::variant::tests::ticket_377_variant_renderer_envelope_contracts biomcp-0.9.3> PASS [ 0.023s] biomcp-cli cli::variant::tests::variant_get_shorthand_json_returns_variant_guidance_metadata biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::build_enforcement_query_has_default_when_filters_empty biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::device_query_summary_names_all_seriousness_meanings biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::build_openfda_query_encodes_outcome_and_since biomcp-0.9.3> PASS [ 0.024s] biomcp-cli cli::variant::tests::variant_search_shorthand_json_returns_variant_guidance_metadata biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::count_field_catalog_accepts_and_canonicalizes_every_supported_value biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::build_openfda_query_requires_drug_name biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::normalize_classification_accepts_common_forms biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::adverse_event::tests::cvx_vaers_failure_state_matrix biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::optional_faers_status_degrades_provider_failures biomcp-0.9.3> PASS [ 0.025s] biomcp-cli disease_markdown_renders_ot_only_gene_association_table biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::optional_faers_status_preserves_invalid_arguments biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::query_type_rejects_unknown_flag biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::search_with_source_vaers_rejects_offset biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::search_count_rejects_empty_count_field biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::adverse_event::tests::search_with_source_all_skips_vaers_for_unsupported_filters biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::search_with_source_vaers_rejects_unsupported_filters biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::adverse_event::tests::search_with_source_all_treats_offset_as_a_visible_vaers_skip biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::source_filter_rejects_unknown_flag biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::search_with_status_preserves_openfda_empty_results biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::adverse_event::tests::search_with_source_all_non_vaccine_uses_local_only_vaers_result biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::search_with_status_preserves_openfda_not_found biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::successful_vaers_outcomes_credit_identity_and_evidence_sources biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::summarize_search_results_computes_top_reactions biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::trial_adverse_events_count_each_term_once_per_study biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::trial_adverse_events_prefers_alias_copy_with_counted_terms biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::trial_adverse_events_dedupe_studies_across_aliases biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::validate_count_field_rejects_total_affordances biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::validate_count_field_rejects_unknown_plausible_field biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::validate_count_field_rejects_non_field_syntax biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::vaers_limit_bounds_top_reactions biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::adverse_event::tests::vaers_resolver_matches_influenza_family_queries biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::vaers_summary_payload_maps_mmr_tables biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::adverse_event::tests::vaers_resolver_returns_query_not_vaccine_without_upstream_call biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::assets::tests::a_bare_name_with_several_refused_routes_names_the_strongest_reason biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::assets::tests::a_lone_zero_byte_route_keeps_the_filename_key_it_advertised biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::assets::tests::append_matching_figshare_ids_dedupes_sorts_and_caps biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::assets::tests::asset_bytes_match_filename_pins_the_committed_leading_bytes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::assets::tests::figshare_same_paper_matches_doi_or_normalized_exact_title biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::assets::tests::collision_keys_are_stable_while_unique_names_keep_legacy_handles biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::assets::tests::final_source_classification_distinguishes_absence_from_failure biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::assets::tests::europe_pmc_manifest_retains_pmc_license_source_and_exact_member_facts biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::assets::tests::build_manifest_hashes_binary_bytes_and_quotes_retrieval_commands biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::assets::tests::hash_dedup_preserves_coverage_for_distinct_provider_filenames biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::assets::tests::linked_budgets_are_deterministic_at_the_exact_boundaries biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::assets::tests::identity_then_hash_merge_keeps_primary_bytes_and_all_routes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::assets::tests::malformed_jats_is_a_source_failure_instead_of_silent_absence biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::assets::tests::zero_byte_routes_keep_stable_collision_keys_and_refuse_with_empty_response biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::assets::tests::source_attempt_budget_reports_timeout_without_collapsing_other_outcomes biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::assets::tests::wrong_type_bytes_keep_stable_collision_keys_and_refuse_with_unusable_asset biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::assets::tests::source_attempt_outcomes_are_stable_json biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::backends::tests::litsense2_candidates_apply_hydrated_journal_and_date_filters biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::backends::tests::litsense2_candidates_deduplicate_and_hydrate_pubmed_metadata biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::backends::tests::search_pubmed_page_cleans_question_keyword_before_esearch biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::backends::tests::search_pubmed_page_applies_offset_after_filtering biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::backends::tests::repeated_backend_requests_stop_before_the_fifty_first_future_runs biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::backends::tests::search_pubmed_page_hard_fails_on_blank_title biomcp-0.9.3> PASS [ 0.026s] biomcp-cli entities::article::backends::tests::expired_car_admission_records_each_planned_identity_once biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::backends::tests::search_pubmed_page_rejects_no_preprints biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::backends::tests::search_pubmed_page_refills_across_batches_after_filtering biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::backends::tests::search_pubmed_page_rejects_open_access biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::backends::tests::search_pubmed_page_sends_standalone_not_retraction_term biomcp-0.9.3> PASS [ 0.037s] biomcp-cli entities::article::assets::tests::pow_capture_projects_named_pmc_gate_coverage_without_an_asset biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::backends::tests::semantic_scholar_candidates_keep_unknown_retraction_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::backends::tests::ticket_376_article_source_status_contracts_semantic_scholar_unavailable_status_without_key biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::backends::tests::semantic_scholar_candidates_send_effective_year_filter biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::backends::tests::semantic_scholar_year_filter_uses_normalized_date_bounds biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::batch::tests::article_batch_item_projection_keeps_requested_id_year_and_top_entities biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::batch::tests::article_batch_rejects_more_than_max_ids_before_network biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::batch::tests::batch_semantic_scholar_merge_fills_fields_and_skips_none_rows_and_pmcid_only biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::article_source_pubmed_priority biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::article_source_litsense2_priority biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::batch::tests::post_construction_semantic_scholar_failure_emits_one_normalized_warning biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_default_cap_ignores_empty_pmid_rows biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::candidates::tests::federated_relevance_uses_source_local_position_not_merge_order biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_default_cap_limits_three_source_pool biomcp-0.9.3> PASS [ 0.051s] biomcp-cli entities::article::backends::tests::europepmc_cursor_walk_stops_on_an_absent_cursor_after_a_page_with_rows biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_explicit_cap_uses_primary_source_native_position biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_default_cap_skips_two_source_pools biomcp-0.9.3> PASS [ 0.056s] biomcp-cli entities::article::assets::tests::manifest_cache_reuses_fresh_entries_and_discards_expired_or_corrupt_entries biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_explicit_cap_equal_limit_disables_capping biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_explicit_cap_applies_on_two_source_pools biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_preserves_source_local_position biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::merge_article_candidates_dedups_transitively_across_identifiers biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::merge_article_candidates_keeps_min_source_local_position biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::candidates::tests::pubmed_led_rescue_preserves_per_source_positions_through_merge biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::merge_preserves_semantic_scholar_identifiers biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::candidates::tests::pubmed_unique_row_survives_first_page_in_mixed_federation biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::detail::tests::get_rejects_pdf_without_fulltext_section biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::detail::tests::europepmc_fallback_keeps_authorship_provenance_and_flag biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::detail::tests::is_doi_basic biomcp-0.9.3> PASS [ 0.059s] biomcp-cli entities::article::backends::tests::pubtator_search_commits_transformed_page_before_one_terminal_event biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::detail::tests::maps_pubmed_citation_to_available_indexing_without_flattening biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::detail::tests::parse_article_id_basic biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::article::detail::tests::indexing_timeout_and_missing_pmid_become_unavailable biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::detail::tests::parse_article_id_publisher_pii_is_invalid biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::detail::tests::parse_pmcid_basic biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::article::detail::tests::parse_sections_supports_tldr_indexing_and_all biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::detail::tests::parse_pmid_accepts_all_digit_identifiers_past_u32 biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::detail::tests::parse_pmid_basic biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::detail::tests::pubtator_lag_error_is_400_or_404_only biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::detail::tests::unavailable_indexing_maps_every_cause_to_a_static_failure biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::enrichment::tests::empty_enrichment_plan_makes_no_provider_requests biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::enrichment::tests::semantic_scholar_merge_treats_zero_citation_as_missing biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::enrichment::tests::article_base_merge_fills_abstract_when_semantic_scholar_has_none biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::filters::tests::article_gene_accepts_one_trimmed_whitespace_free_token biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::enrichment::tests::semantic_scholar_merge_preserves_existing_nonempty_primary_metadata biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::filters::tests::article_gene_rejects_empty_or_unicode_whitespace_with_fixed_guidance biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::article::enrichment::tests::semantic_scholar_merge_fills_missing_citation_and_abstract_metadata biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::filters::tests::exclude_retracted_keeps_unknown_retraction_status biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::filters::tests::literal_colons_false_prefixes_and_quote_bytes_remain_keywords biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::article::filters::tests::native_keyword_fields_are_rejected_with_typed_guidance biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::filters::tests::exclude_retracted_only_filters_confirmed_retractions biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::filters::tests::normalize_article_type_accepts_aliases biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::filters::tests::normalized_date_bounds_normalizes_partial_dates biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::filters::tests::normalized_date_bounds_rejects_bad_date_to_with_flag_name biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::filters::tests::normalized_date_bounds_rejects_bad_month biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::filters::tests::normalized_date_bounds_rejects_inverted_range biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::filters::tests::partial_date_normalization_and_filtering_are_consistent biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::filters::tests::ordinary_bracket_and_colon_keywords_remain_valid biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::filters::tests::reserved_article_keyword_fields_have_precise_boundaries_and_guidance biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::filters::tests::reserved_article_keyword_quote_escape_is_per_label_and_field_ordered biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::abstract_merge_preserves_nonblank_base_and_fills_missing_or_blank_values biomcp-0.9.3> PASS [ 0.055s] biomcp-cli entities::article::detail::tests::all_digit_pmid_past_u32_reports_not_found_with_the_full_identifier biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::fulltext_cache_key_is_kind_aware_and_versioned biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::fulltext::tests::attempt_state_orders_and_deduplicates_healthy_sources_without_erasing_failure biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::fulltext::tests::only_documented_absence_statuses_are_healthy_empty biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::fulltext::tests::partial_coverage_and_source_health_fold_independently_in_any_order biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::fulltext::tests::pdf_discovery_preserves_ineligible_empty_data_and_failure biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::article::fulltext::tests::semantic_scholar_pdf_policy_rejects_unsafe_urls_without_echoing_them biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::semantic_scholar_pdf_policy_accepts_publisher_hosts_before_contact biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::article::fulltext::tests::typed_timeout_failure_survives_later_healthy_miss_in_final_fold biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::xml_conversion_rejects_malformed_unsupported_and_accepts_usable_text biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::xml_fulltext_attempts_try_pmc_sources_before_med_fallback biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::xml_fulltext_attempts_use_med_when_only_pmid_is_available biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::xml_source_metadata_is_truthful biomcp-0.9.3> PASS [ 0.054s] biomcp-cli entities::article::fulltext::tests::abstract_only_xml_continues_to_a_later_body_winner biomcp-0.9.3> PASS [ 0.060s] biomcp-cli entities::article::fulltext::tests::earlier_fulltext_winner_overrides_failed_pdf_discovery biomcp-0.9.3> PASS [ 0.074s] biomcp-cli entities::article::fulltext::tests::resolver_continues_after_bad_xml_and_later_data_overrides_failures biomcp-0.9.3> PASS [ 0.079s] biomcp-cli entities::article::fulltext::tests::stale_v3_partial_artifact_cannot_become_the_current_winner biomcp-0.9.3> PASS [ 0.070s] biomcp-cli entities::article::graph::tests::cache::a_bypassed_cache_reads_and_writes_nothing biomcp-0.9.3> PASS [ 0.129s] biomcp-cli entities::article::fulltext::tests::pmc_bot_challenge_page_names_its_reason_and_keeps_the_pdf_ladder_running biomcp-0.9.3> PASS [ 0.139s] biomcp-cli entities::article::graph::tests::admission::citation_evidence_bounds_a_panicking_jats_worker_and_releases_the_permit biomcp-0.9.3> PASS [ 0.133s] biomcp-cli entities::article::graph::tests::cache::a_forced_call_serves_a_stored_fulltext_entry biomcp-0.9.3> PASS [ 0.170s] biomcp-cli entities::article::graph::tests::cache::a_corrupt_record_is_a_miss_and_is_replaced biomcp-0.9.3> PASS [ 0.095s] biomcp-cli entities::article::graph::tests::cache::a_non_evidence_status_is_never_cached biomcp-0.9.3> PASS [ 0.087s] biomcp-cli entities::article::graph::tests::cache::a_write_failure_leaves_the_outcome_unchanged biomcp-0.9.3> PASS [ 0.190s] biomcp-cli entities::article::graph::tests::cache::a_forced_call_ignores_a_stored_provider_context_entry biomcp-0.9.3> PASS [ 0.182s] biomcp-cli entities::article::graph::tests::cache::a_future_schema_version_is_a_miss biomcp-0.9.3> PASS [ 0.122s] biomcp-cli entities::article::graph::tests::cache::an_off_mode_guard_does_not_latch_the_bypass_for_later_reads biomcp-0.9.3> PASS [ 0.120s] biomcp-cli entities::article::graph::tests::cache::cross_spelling_call_is_served_for_the_same_resolved_pair biomcp-0.9.3> PASS [ 0.110s] biomcp-cli entities::article::graph::tests::cache::repeat_call_serves_the_stored_edge_without_graph_or_fulltext_requests biomcp-0.9.3> PASS [ 0.160s] biomcp-cli entities::article::graph::tests::cache::an_expired_entry_refetches biomcp-0.9.3> PASS [ 0.127s] biomcp-cli entities::article::graph::tests::cache::infinite_mode_serves_an_expired_entry biomcp-0.9.3> PASS [ 0.099s] biomcp-cli entities::article::graph::tests::citation_evidence_answers_from_opencitations_when_the_seed_hop_is_refused biomcp-0.9.3> PASS [ 0.098s] biomcp-cli entities::article::graph::tests::citation_evidence_compares_paper_ids_case_insensitively biomcp-0.9.3> PASS [ 0.107s] biomcp-cli entities::article::graph::tests::citation_evidence_bounds_the_traversal_at_three_pages biomcp-0.9.3> PASS [ 0.074s] biomcp-cli entities::article::graph::tests::citation_evidence_exhausted_pages_return_the_directed_not_found biomcp-0.9.3> PASS [ 0.095s] biomcp-cli entities::article::graph::tests::citation_evidence_deduplicates_duplicate_edges_and_contexts biomcp-0.9.3> PASS [ 0.134s] biomcp-cli entities::article::graph::tests::citation_evidence_confirms_the_edge_the_index_holds biomcp-0.9.3> PASS [ 0.109s] biomcp-cli entities::article::graph::tests::citation_evidence_fails_closed_on_a_matching_row_with_a_hostile_oci biomcp-0.9.3> PASS [ 0.103s] biomcp-cli entities::article::graph::tests::citation_evidence_follows_the_advertised_next_offset biomcp-0.9.3> PASS [ 0.096s] biomcp-cli entities::article::graph::tests::citation_evidence_keeps_the_dead_end_when_no_row_matches biomcp-0.9.3> PASS [ 0.080s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_for_a_resolved_reference biomcp-0.9.3> PASS [ 0.078s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_for_an_unlinked_marker biomcp-0.9.3> PASS [ 0.084s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_with_provider_context biomcp-0.9.3> PASS [ 0.114s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_for_linked_fulltext biomcp-0.9.3> PASS [ 0.095s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_without_a_normalizable_doi biomcp-0.9.3> PASS [ 0.089s] biomcp-cli entities::article::graph::tests::citation_evidence_names_a_malformed_identifier_when_the_matched_row_fails_the_shape biomcp-0.9.3> PASS [ 0.082s] biomcp-cli entities::article::graph::tests::citation_evidence_names_both_providers_when_the_answered_index_lacks_the_edge biomcp-0.9.3> PASS [ 0.787s] biomcp-cli entities::article::fulltext::tests::html_and_pdf_attempts_classify_transport_and_conversion_failures biomcp-0.9.3> PASS [ 2.014s] biomcp-cli cache::manager::tests::write_security_tests::put_deadline_transition_is_exactly_at_writer_commit biomcp-0.9.3> PASS [ 0.056s] biomcp-cli entities::article::graph::tests::citation_evidence_rejects_a_mismatched_page_offset biomcp-0.9.3> PASS [ 0.106s] biomcp-cli entities::article::graph::tests::citation_evidence_nulls_a_creation_outside_the_shape_and_never_echoes_provider_text biomcp-0.9.3> PASS [ 0.085s] biomcp-cli entities::article::graph::tests::citation_evidence_provider_context_needs_no_fulltext_request biomcp-0.9.3> PASS [ 0.064s] biomcp-cli entities::article::graph::tests::citation_evidence_rejects_a_page_with_more_rows_than_the_page_size biomcp-0.9.3> PASS [ 0.917s] biomcp-cli entities::article::enrichment::tests::metadata_fallback_warns_only_when_no_source_covers_the_row biomcp-0.9.3> PASS [ 0.046s] biomcp-cli entities::article::graph::tests::citation_evidence_reports_an_unaddressable_index_when_inputs_have_no_doi biomcp-0.9.3> PASS [ 0.036s] biomcp-cli entities::article::graph::tests::citation_evidence_returns_the_bounded_error_when_the_graph_deadline_expires biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::graph::tests::citations_map_semantic_scholar_edges biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::graph::tests::empty_pages_follow_provider_next_for_both_directions biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::graph::tests::graph_continuation_quotes_the_trimmed_caller_id biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::graph::tests::graph_edge_evidence_meta_orders_arguments_per_direction biomcp-0.9.3> PASS [ 0.070s] biomcp-cli entities::article::graph::tests::citation_evidence_reuses_the_resolved_citing_seed_when_the_cited_seed_is_refused biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::graph::tests::graph_page_validation_fails_closed_for_bad_offsets_and_next_values biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::graph::tests::graph_pages_preserve_provider_order_and_duplicate_edges biomcp-0.9.3> PASS [ 0.072s] biomcp-cli entities::article::graph::tests::citation_evidence_stops_after_the_matching_page biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::graph::tests::jats_extraction_seam_controls_the_blocking_parse_outcome biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::graph::tests::recommendations_map_semantic_scholar_papers biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::graph::tests::receipted_provider_only_citation_survives_article_graph_mapping biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::graph::tests::references_map_semantic_scholar_edges biomcp-0.9.3> PASS [ 1.670s] biomcp-cli cli::stale_json_note_tests::a_day_cached_gwas_search_inside_the_day_window_has_no_cache_note biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::graph::tests::semantic_scholar_lookup_id_supports_arxiv_and_paper_ids biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::identity_verification::tests::canonical_response_subset_ignores_arbitrary_relation_payloads biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::identity_verification::tests::empty_identity_anomaly_changes_the_response_digest biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::article::identity_verification::tests::arbitrary_relation_membership_cannot_confirm_typed_pubtator_linkage biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::article::identity_verification::tests::exact_allele_linked_to_another_gene_is_contradictory biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::article::identity_verification::tests::fulltext_export_keys_the_document_by_pmcid_and_confirms biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::article::identity_verification::tests::fulltext_pmcid_key_without_an_agreeing_pmid_is_an_anomaly biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::article::identity_verification::tests::inconsistent_typed_gene_ids_cannot_confirm biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::identity_verification::tests::intronic_coordinates_are_not_collapsed_into_a_contradiction biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::identity_verification::tests::ldh_confirms_an_annotation_in_the_live_response_shape biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::article::identity_verification::tests::ldh_explicit_requested_caid_wrong_gene_is_contradictory biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::article::identity_verification::tests::ldh_ignores_a_selector_quoted_from_a_supplementary_file biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::article::identity_verification::tests::ldh_unrequested_caid_in_a_multi_caid_annotation_is_ignored biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::article::identity_verification::tests::ldh_wrong_pmcid_is_incomplete_without_a_contradiction biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::article::identity_verification::tests::numeric_pmid_must_agree_with_returned_document_id biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::article::identity_verification::tests::overlong_linkage_fields_are_incomplete_and_ineligible biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::article::identity_verification::tests::receipt_backed_ldh_malformed_capture_is_incomplete_without_a_linkage biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::article::identity_verification::tests::receipt_backed_ldh_direct_capture_confirms_an_article_page_linkage biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::identity_verification::tests::requested_coding_or_protein_alias_can_confirm biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::article::identity_verification::tests::repeated_gene_annotations_collapse_into_one_observation biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::article::identity_verification::tests::string_normalized_gene_id_cannot_confirm_typed_linkage biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::article::identity_verification::tests::typed_corresponding_gene_confirms_and_deduplicates biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::article::identity_verification::tests::typed_corresponding_gene_requires_the_returned_pmid biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::planner::tests::article_type_limitation_note_tracks_compatible_source_sets biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::article::identity_verification::tests::unavailable_verification_is_incomplete_and_unverified biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::article::identity_verification::tests::typed_linkage_can_span_document_passages biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::explicit_article_sources_have_no_cross_provider_enrichment biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::litsense2_search_enabled_only_for_explicit_litsense2_source biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_rejects_litsense2_open_access_filter biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_rejects_author_on_incapable_explicit_sources biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_rejects_litsense2_type_filter biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_rejects_litsense2_without_keyword biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_rejects_pubtator_open_access_without_suggesting_pubmed biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_rejects_pubtator_type_and_no_preprints_without_suggesting_pubmed biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_rejects_pubtator_type_with_pubmed_compatible_filters_and_suggests_supported_routes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_rejects_semantic_scholar_open_access_filter biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::article::planner::tests::planner_rejects_semantic_scholar_type_filter biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_routes_all_to_europepmc_for_strict_filters biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_routes_all_with_author_and_no_preprints_to_europe_only biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_routes_all_with_author_to_author_capable_backends biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_routes_all_with_type_and_no_preprints_to_europe_only biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_routes_all_with_type_to_type_capable biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_routes_litsense2_to_litsense2_only biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::article::planner::tests::planner_routes_pubmed_to_pubmed_only biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_routes_semantic_scholar_to_semantic_scholar_only biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::planner::tests::semantic_scholar_search_is_disabled_for_author_filter biomcp-0.9.3> PASS [ 0.006s] biomcp-cli entities::article::planner::tests::semantic_scholar_search_is_enabled_for_explicit_semantic_scholar_source biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::article::planner::tests::semantic_scholar_search_is_enabled_for_federated_queries biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_explicit_litsense2_remains_selectable biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_explicit_pubtator_emits_pubtator_only biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_explicit_semantic_scholar_remains_selectable biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_keyword_all_excludes_litsense2 biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_no_preprints_omits_pubmed biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_reports_federated_sources_and_matches biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_reports_only_author_capable_sources biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_strict_filter_emits_europe_only_strict biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::query::tests::build_free_text_article_query_preserves_mixed_semantic_anchors biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::query::tests::build_pubmed_esearch_params_allows_federated_windows_above_user_limit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::query::tests::build_pubmed_esearch_params_rejects_federated_window_overflow biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::query::tests::build_pubmed_esearch_params_rejects_no_preprints biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::article::query::tests::build_pubmed_esearch_params_rejects_open_access biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::query::tests::build_pubmed_search_term_cleans_unfielded_clauses_only biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::query::tests::build_pubmed_esearch_params_reuses_article_type_aliases biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::query::tests::build_pubmed_search_term_falls_back_for_all_stopword_unfielded_clause biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::query::tests::build_pubmed_search_term_keeps_quoted_author_input_inside_author_field biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::query::tests::build_search_query_combines_keyword_and_since biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::query::tests::build_pubmed_search_term_uses_standalone_not_for_retraction_filter biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::query::tests::build_search_query_excludes_retracted_when_requested biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::query::tests::build_search_query_keeps_phrase_quoting_for_entity_filters biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::query::tests::build_search_query_rejects_unknown_article_type biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::query::tests::build_search_query_uses_gene_anchor_field_when_requested biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::query::tests::europepmc_keyword_does_not_quote_whitespace biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::query::tests::native_query_builders_keep_unrecognized_keyword_punctuation_literal biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::query::tests::gene_change_request_matches_the_pubtator_entity_from_its_id biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::query::tests::native_query_builders_share_keyword_field_validation biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::query::tests::pubtator_sort_sends_param_for_date biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::query::tests::pubtator_sort_omits_param_for_relevance biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::article::query::tests::gene_plus_change_matching_survives_a_db_id_rsid biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::query::tests::strict_variant_templates_quote_and_escape_provider_inputs biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::query::tests::rsid_request_matches_the_pubtator_entity_from_its_db_id biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::article::query::tests::pubtator_variant_candidate_requires_source_proof_for_gene_and_protein biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::query::tests::rsid_match_keeps_the_entity_display_name_out_of_the_comparison biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::query::tests::strip_pubmed_stopwords_cleans_question_patterns biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::query::tests::ticket_406_myd88_exact_protein_alias_article_precision biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_coverage_counts_title_and_abstract_duplicate_once biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_custom_weights_shift_ordering biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_coverage_uses_full_counts_before_public_counters_saturate biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_default_weights_orders_example_one biomcp-0.9.3> PASS [ 0.403s] biomcp-cli entities::article::graph::tests::citation_evidence_rejects_equal_and_decreasing_next_values biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_entity_only_falls_back_without_nan biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_exact_composite_tie_uses_stable_identifier_order biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_lexical_coverage_beats_a_high_citation_one_anchor_match biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_makes_exactly_one_calculator_call_per_candidate biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_scoring_is_zero_safe biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_uses_litsense2_signal_for_semantic_score biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_zero_anchor_lexical_score_is_finite_zero biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::lexical_mode_matches_current_ordering biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::semantic_mode_ignores_non_litsense2_raw_scores biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::semantic_mode_prefers_score_before_lexical_fallback biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::article::ranking::tests::calibration::rescue::anchor_count_pubmed_rescue_surfaces_above_higher_title_hit_competitor biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::rescue::exactly_one_anchor_hit_pubmed_unique_position_zero_is_rescued biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::calibration::rescue::mesh_synonym_zero_overlap_pubmed_row_does_not_rescue_above_literal_competitor biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::rescue::pubmed_led_row_rescues_when_pubmed_position_is_strictly_best biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::rescue::pubmed_nonfirst_position_does_not_rescue biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::calibration::rescue::rescued_rows_still_use_lexical_and_citation_tiebreaks biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::calibration::rescue::shared_source_row_with_better_non_pubmed_position_does_not_rescue biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::article::ranking::tests::calibration::rescue::rescue_metadata_records_kind_and_position biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::calibration::rescue::shared_source_tie_does_not_count_as_pubmed_led biomcp-0.9.3> PASS [ 0.441s] biomcp-cli entities::article::graph::tests::citation_evidence_returns_the_bounded_error_when_the_bridge_stalls biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::article::ranking::tests::calibration::rescue::zero_overlap_pubmed_unique_position_zero_is_not_rescued biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::ranking::tests::directness::directness_ranking_uses_full_title_and_token_boundaries biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::directness::directness_ranking_prefers_cue_then_citation_then_source_local_position biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::article::ranking::tests::keyword::compound_name_variants_match_symmetrically_in_ranking biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::keyword::keyword_tokenization_decomposes_multi_word_into_separate_anchors biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::keyword::keyword_tokenization_dedups_structured_filter_overlap biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::ranking::tests::policy::article_relevance_ranking_policy_formats_modes biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::keyword::multi_concept_keyword_all_tokens_in_title_scores_tier3 biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::ranking::tests::policy::search_article_ranking_flags_validate_cleanly biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::ranking::tests::policy::default_ranking_mode_depends_on_keyword_presence biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::keyword::multi_concept_keyword_partial_match_scores_nonzero biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::search::deadline::tests::deadline_budget_reads_the_injected_clock biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::search::deadline::tests::federated_leg_timeout_reads_the_injected_clock biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::search::tests::deadline::both_primaries_failing_prefers_a_deadline_error_over_the_fast_failure biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::search::tests::deadline::deadline_recognition_covers_the_io_cancellation_shape biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::search::tests::deadline::deep_offset_is_refused_on_every_sort_before_any_request biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::article::search::tests::deadline::construction_under_a_held_epoch_lock_honors_the_deadline biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::search::tests::deadline::held_fixture_replies_self_release_at_their_own_bound biomcp-0.9.3> PASS [ 0.142s] biomcp-cli entities::article::search::tests::deadline::healthy_federated_search_keeps_output_shape_and_records_timings biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::search::tests::finalizer::federated_collection_keeps_available_rows_when_semantic_scholar_is_unavailable biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::search::tests::finalizer::pubmed_only_rows_use_common_finalizer_for_sorting biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::search::tests::finalizer::semantic_scholar_status_tracker_keeps_batch_failure_non_fatal biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::search::tests::integration::federated_merge_includes_pubmed_rows_in_matched_sources biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::search::tests::integration::federated_merge_keeps_non_europepmc_matches_under_default_retraction_filter biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::federated_offset_applied_after_merge_not_per_leg biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::search::tests::merge::federated_sort_orders_merged_results_for_citations_and_date biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_dedups_with_pubtator_priority biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_preserves_known_retraction_status_from_later_duplicate biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_records_litsense2_in_matched_sources biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_returns_first_error_when_both_fail biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_returns_surviving_europe_leg biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_returns_surviving_pubtator_leg biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_sorts_surviving_leg_before_offset biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::search::tests::raw_federated_acquisition_marks_known_and_unknown_route_caps biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::search::tests::raw_federated_acquisition_retains_auxiliary_rows_when_primary_sources_fail biomcp-0.9.3> PASS [ 0.122s] biomcp-cli entities::article::search::tests::relevance_paging::europepmc_relevance_offset_page_lines_up_with_cursor_page biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::search::tests::type_capable::both_available_sources_survive_in_source_order_without_degradation biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::search::tests::type_capable::dual_failure_preserves_europe_pmc_error biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::search::tests::type_capable::dual_timeout_returns_deterministic_source_unavailable_error biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::search::tests::type_capable::europe_pmc_rows_and_total_survive_pubmed_failure biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::search::tests::type_capable::pubmed_error_is_used_when_europe_pmc_timed_out biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::search::tests::type_capable::pubmed_rows_and_total_survive_europe_pmc_failure biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::search::tests::validate_search_page_request_rejects_invalid_inputs_before_backend_io biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::supplement_search::tests::an_empty_archive_is_reported_as_a_read_file biomcp-0.9.3> PASS [ 0.263s] biomcp-cli entities::article::supplement_search::tests::extraction_timeout_kills_and_reaps_the_worker biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::supplement_search::tests::unicode_search_context_fits_the_byte_limit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::tests::article_error_copy_and_warn_threshold_match_contract biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::tests::article_ranking_mode_parses_supported_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::tests::article_search_result_serializes_unknown_retraction_as_null biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::tests::article_section_names_include_tldr biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::tests::article_section_outcomes_default_to_keyed_not_requested_and_reject_foreign_keys biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::tests::article_sort_default_is_relevance biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::tests::article_sort_parses_supported_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::tests::article_source_filter_parses_supported_values biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::tests::article_source_litsense2_display_name biomcp-0.9.3> PASS [ 1.551s] biomcp-cli entities::article::graph::tests::citation_evidence_marks_the_index_unavailable_when_the_deadline_leaves_no_room biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::tests::article_source_pubmed_display_name biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::tests::empty_filters_default_sort_is_relevance biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::tests::graph_and_recommendation_nonempty_shapes_remain_compatible biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::tests::graph_and_recommendation_primary_collections_serialize_when_empty biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::tests::invalid_article_id_error_names_supported_types_and_publisher_limit biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::tests::requested_fulltext_coverage_is_additive_and_uses_closed_values biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::tests::search_page_rejects_max_per_source_above_limit_before_backend_planning biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::article::tests::search_page_rejects_unknown_article_type_before_backend_planning biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::article::variant_search::tests::ambiguous_fallback_uses_only_request_compatible_shared_source_aliases biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::article::variant_search::tests::annotation_pre_call_stop_is_attributed_to_pubtator biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::variant_search::tests::article_search_refuses_a_bare_clinvar_variation_id biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::article::variant_search::tests::authoritative_refseq_strict_plans_include_only_known_supplied_proteins biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::article::variant_search::tests::candidate_trace_is_capped_and_serializes_only_stage_facts biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::canonical_equivalence_aggregation_uses_set_based_state_precedence biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::canonical_aliases_fill_only_unused_strict_alias_slots biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::canonical_equivalence_queries_require_explicit_versioned_refseq_inputs biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::article::variant_search::tests::citation_pre_call_stop_is_attributed_to_myvariant biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::compact_projection_omits_verbose_fields_and_preserves_unknown_retraction biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::confirmed_car_genomic_aliases_travel_with_the_gene_symbol biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::article::variant_search::tests::debug_plan_reports_strict_route_for_resolved_and_ambiguous_union_requests biomcp-0.9.3> PASS [ 1.214s] biomcp-cli entities::article::search::tests::deadline::deadline_expiry_without_rows_names_the_deadline_error biomcp-0.9.3> PASS [ 1.213s] biomcp-cli entities::article::search::tests::deadline::fast_pubtator_failure_does_not_hide_the_deadline_error biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::debug_plan_work_allocation_reconciles_parent_budgets_and_recorded_routes biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::article::variant_search::tests::empty_debug_plan_has_complete_candidate_trace biomcp-0.9.3> PASS [ 3.034s] biomcp-cli cli::update::tests::archive_larger_than_shared_default_reaches_verification_and_extraction biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::exact_and_identity_request_allowances_are_shared_and_bounded biomcp-0.9.3> PASS [ 2.264s] biomcp-cli entities::article::graph::tests::citation_evidence_keeps_the_dead_end_when_the_index_fails biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::exact_lexical_allowance_survives_strict_budget_exhaustion biomcp-0.9.3> PASS [ 0.187s] biomcp-cli entities::article::variant_search::tests::empty_search_where_every_source_answered_stays_an_ok_result biomcp-0.9.3> PASS [ 1.515s] biomcp-cli entities::article::search::tests::deadline::single_backend_deadline_keeps_fetched_rows_and_names_the_source biomcp-0.9.3> PASS [ 0.110s] biomcp-cli entities::article::variant_search::tests::gene_change_search_keeps_the_pubtator_entity_and_searches_by_its_id biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::article::variant_search::tests::generated_and_explicit_request_ids_share_duplicate_check biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::identity_verification_allowance_survives_strict_budget_exhaustion biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::article::variant_search::tests::invalid_items_are_retained_without_provider_execution biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::article::variant_search::tests::invocation_deadline_stops_new_provider_work_and_reports_one_scope biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::item_and_request_work_budgets_stop_at_fifty_and_five_hundred biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::item_errors_preserve_runtime_error_classification biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::ldh_direct_annotation_fetches_stop_after_ten_per_item biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::ldh_medium_lookup_is_one_per_item_and_survives_an_exhausted_item_budget biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::lexical_alias_budget_preserves_the_requested_identity_and_reports_truncation biomcp-0.9.3> PASS [ 0.226s] biomcp-cli entities::article::variant_search::tests::exact_mode_sends_one_phrase_quoted_query_per_source_without_resolution biomcp-0.9.3> PASS [ 3.381s] biomcp-cli cli::tests::printed_card_commands::braf_v600e_card_prints_follow_ups_on_the_headline_coordinate biomcp-0.9.3> PASS [ 0.113s] biomcp-cli entities::article::variant_search::tests::litvar_drops_a_non_matching_autocomplete_entry biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::missing_confirmed_record_during_citation_hydration_is_unavailable biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::article::variant_search::tests::mixed_usable_and_terminal_hard_batch_preserves_items_and_succeeds biomcp-0.9.3> PASS [ 0.706s] biomcp-cli entities::article::variant_search::tests::debug_plan_reports_yield_per_alias_per_source_with_cut_lists biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::non_object_batch_item_is_rejected biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::ordered_executor_never_runs_more_than_two_items biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::provider_plan_reports_mixed_outcomes_and_unknown_cache_truthfully biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::ranking_counts_only_the_best_alias_position_per_route_and_provider biomcp-0.9.3> PASS [ 0.148s] biomcp-cli entities::article::variant_search::tests::mid_route_expiry_preserves_materialized_units_across_strategy_identity_matrix biomcp-0.9.3> PASS [ 3.112s] biomcp-cli entities::article::graph::tests::admission::citation_evidence_deadline_bounds_late_jats_workers_under_one_permit biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::variant_search::tests::recorded_provider_calls_drive_public_and_debug_terminal_statuses biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::article::variant_search::tests::refseq_exact_aliases_are_only_caller_literal_forms biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::article::variant_search::tests::resolved_exact_aliases_include_validated_source_forms_once biomcp-0.9.3> PASS [ 0.130s] biomcp-cli entities::article::variant_search::tests::no_entity_annotation_run_names_the_miss_instead_of_complete_empty biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::source_work_precedence_distinguishes_timeout_partial_and_unstarted biomcp-0.9.3> PASS [ 0.024s] biomcp-cli entities::article::variant_search::tests::strict_provider_queries_keep_coding_collisions_distinct biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::article::variant_search::tests::structured_genomic_identity_is_the_resolution_lookup_key biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::article::variant_search::tests::structured_identity_accepts_only_documented_anchors biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::article::variant_search::tests::structured_input_enforces_byte_count_item_count_and_duplicate_ids biomcp-0.9.3> PASS [ 0.114s] biomcp-cli entities::article::variant_search::tests::rsid_search_keeps_the_pubtator_entity_and_searches_by_its_id biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::terminal_reconciliation_reports_residual_materialized_work_as_logical_cap biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::terminal_state_does_not_invent_an_internal_stop_for_a_provider_outage biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::terminal_state_is_complete_and_untruncated_after_an_auxiliary_budget_stop biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::terminal_state_is_complete_when_pagination_withholds_candidates biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::terminal_state_is_incomplete_and_truncated_when_requested_work_is_unperformed biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::transitive_merge_retains_associated_variant_provenance biomcp-0.9.3> PASS [ 4.251s] biomcp-cli cli::discover::tests::discover_inline_search_failure_propagates biomcp-0.9.3> PASS [ 0.209s] biomcp-cli entities::article::variant_search::tests::real_car_and_ldh_captures_confirm_tp53_article_identity biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::usable_partial_degradation_stays_nonterminal biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::article::variant_search::tests::visible_candidate_trace_retains_returned_pmid_when_prefix_is_full biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::author::detail_tests::detail_requires_matching_decimal_id_and_nonblank_name biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::article::variant_search::tests::zero_deadline_ledger_uses_independent_strategy_and_identity_oracles biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::author::detail_tests::provider_failure_does_not_expose_response_body biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::author::detail_tests::detail_serialization_is_allowlisted_and_has_required_metadata_arrays biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::author::papers::full_tests::admission_is_shared_between_compact_and_rich_views biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::papers::full_tests::evidence_url_encoder_matches_the_frozen_url_contract biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::papers::full_tests::frozen_rich_object_has_exactly_the_contract_keys_and_values biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::author::papers::full_tests::nullability_matrix_preserves_empty_false_zero_and_list_distinctions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::papers::full_tests::opaque_ids_get_urls_but_never_article_follow_ups biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::papers::full_tests::rich_follow_ups_prefer_pmid_doi_arxiv_then_hex_paper_id biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::author::papers::full_tests::wrong_typed_external_ids_fail_the_complete_command biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::canonical_identifier_normalizes_every_recognized_kind biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::an_orcid_offset_above_ten_thousand_is_a_static_rejection biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::cross_group_dedupe_drops_only_on_recognized_identity biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::excluded_location_identifiers_never_reach_the_projected_paper biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::full_mode_on_an_orcid_id_is_rejected_with_zero_requests biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::lexical_first_normalized_value_wins_the_flattened_slot biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::orcid_page_bounds_pin_first_middle_terminal_and_beyond_total biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::author::papers::orcid_works_tests::identifier_lists_preserve_unrecognized_types_in_first_occurrence_order biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::author::papers::wire_tests::command_deadline_is_thirty_five_seconds biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::author::papers::tests::provider_article_ids_are_shell_quoted_in_next_commands biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::author::papers::orcid_works_tests::orcid_paper_projects_the_frozen_shape_with_row_command_priority biomcp-0.9.3> PASS [ 2.746s] biomcp-cli entities::article::graph::tests::citation_evidence_names_both_providers_and_reasons_when_both_refuse biomcp-0.9.3> PASS [ 0.047s] biomcp-cli entities::author::papers::wire_tests::stalled_request_future_fails_at_the_absolute_deadline_without_late_output biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::author::search::tests::mapping_distinguishes_healthy_empty_and_unavailable biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::author::search::tests::mapping_retains_valid_rows_and_degrades_malformed_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::tests::orcid_ids_accept_exact_checksummed_forms_and_round_trip biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::tests::orcid_ids_reject_every_malformed_category_with_one_static_message biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::author::tests::provider_ids_are_strict_and_round_trip biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::author::tests::public_serialization_is_allowlisted biomcp-0.9.3> PASS [ 0.118s] biomcp-cli entities::author::papers::wire_tests::compact_and_rich_request_exactly_one_page_and_never_prefetch_next biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::cell_line::chembl::tests::a_failed_lookup_completes_the_section_as_unavailable biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::a_failed_status_call_falls_back_to_the_retrieval_time biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::a_record_completes_the_section_as_data biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::an_accession_chembl_does_not_list_makes_no_assay_request biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::one_record_asks_for_exactly_one_assay_count biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::the_all_selector_leaves_the_chembl_section_out biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::the_k562_record_answers_through_the_accession_not_the_name biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::the_molm13_record_carries_its_ids_and_assay_count biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::cell_line::chembl::tests::the_section_list_names_chembl biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::the_release_fixture_sets_data_as_of_and_its_kind biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::a_body_over_the_cap_is_unavailable_with_the_size_message biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::a_cell_line_pharmacodb_does_not_hold_completes_the_section_as_empty biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::an_accession_mismatch_is_unavailable_and_renders_no_payload biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::an_unknown_section_lists_drug_response_for_cell_lines biomcp-0.9.3> PASS [ 0.029s] biomcp-cli entities::cell_line::pharmacodb::tests::an_empty_section_says_so_and_prints_no_counts_line biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::counts_attach_as_data_and_carry_no_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::cell_line::pharmacodb::tests::the_section_is_asked_for_by_name_and_all_leaves_it_out biomcp-0.9.3> PASS [ 0.029s] biomcp-cli entities::cell_line::pharmacodb::tests::the_all_card_is_byte_identical_with_and_without_the_payload biomcp-0.9.3> PASS [ 0.024s] biomcp-cli entities::cell_line::pharmacodb::tests::the_section_prints_the_heading_the_counts_and_the_next_command biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::cell_line::tests::a_failed_release_read_names_the_retrieval_time_and_no_release biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::cell_line::tests::a_hybrid_record_keeps_every_species_it_lists biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::cell_line::tests::a_hyphenated_query_merges_both_windows_into_one_row_per_accession biomcp-0.9.3> PASS [ 0.027s] biomcp-cli entities::cell_line::tests::a_full_window_reports_an_unknown_total_and_one_note biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::cell_line::tests::a_query_that_names_an_accession_is_recognized_as_one biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::cell_line::tests::a_line_without_a_link_prints_the_key_as_an_empty_list biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::cell_line::tests::a_record_recorded_without_variants_completes_the_section_as_empty biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::cell_line::tests::a_record_with_variants_completes_the_section_as_data biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::tests::a_short_window_reports_its_row_count_and_no_note biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::tests::a_source_id_that_names_two_lines_asks_for_one_accession biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::cell_line::tests::all_turns_on_every_section biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::cell_line::tests::an_unknown_accession_is_not_found_and_names_the_search biomcp-0.9.3> PASS [ 0.756s] biomcp-cli entities::article::variant_search::tests::litvar_papers_merge_into_the_union_with_attribution biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::tests::an_unknown_section_fails_before_any_request biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::cell_line::tests::an_unmatched_source_id_is_not_found_and_names_the_search biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::cell_line::tests::different_lines_do_not_normalize_together biomcp-0.9.3> PASS [ 0.322s] biomcp-cli entities::author::papers::wire_tests::malformed_pages_fail_the_complete_command_with_no_partial_output biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::cell_line::tests::each_recorded_source_id_resolves_to_the_same_accession biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::tests::each_spelling_puts_its_line_first_as_an_exact_match biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::cell_line::tests::every_common_spelling_of_one_line_normalizes_to_the_same_string biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::cell_line::tests::kg1_returns_all_three_exact_lines_with_the_human_identifier_first biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::cell_line::tests::kg_1_merges_its_two_windows_with_no_duplicate_rows biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::cell_line::tests::the_attribution_line_names_the_release_the_licence_and_the_citation biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::cell_line::tests::mv4_11_lists_its_depmap_cosmic_and_chembl_links biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::cell_line::tests::nb4_puts_the_identifier_match_before_the_synonym_match biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::cell_line::tests::the_card_reads_identity_species_disease_category_and_sex biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::cell_line::tests::the_xrefs_section_lists_the_join_keys_and_leaves_the_sample_rows_out biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::cell_line::tests::the_release_fixture_reports_the_measured_release biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::cell_line::tests::the_variants_section_lists_the_curated_rows_as_published biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::diagnostic::search::tests::cross_condition_match_priority_drives_sort_before_paging biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::disease_match_prefers_requested_then_canonical_then_synonym biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::disease_match_uses_term_priority_across_all_conditions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::diagnostic::search::tests::disease_filter_validation_rejects_controls_and_oversize_before_normalization biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::disease_phrase_matches_accepts_word_and_phrase_boundaries biomcp-0.9.3> PASS [ 0.006s] biomcp-cli entities::diagnostic::search::tests::disease_phrase_matches_rejects_partial_words_and_keeps_scanning biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::diagnostic::search::tests::disease_phrase_matches_handles_utf8_boundaries_without_panicking biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::disease_sort_ranks_who_requested_then_canonical_then_provider_synonym_order biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::normalized_filters_reject_short_disease_filter biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::diagnostic::tests::diagnostic_source_filter_from_flag_accepts_expected_values biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::diagnostic::tests::get_diagnostic_genes_returns_full_deduped_broad_panel_list biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::diagnostic::tests::get_who_ivd_keeps_summary_and_resolves_supported_sections biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::diagnostic::tests::get_keeps_summary_by_default_and_requested_sections_as_options biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::diagnostic::tests::get_who_ivd_rejects_unsupported_sections_with_recovery_hint biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::diagnostic::tests::regulatory_overlay_bounds_unavailable_work_and_preserves_data biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::diagnostic::tests::regulatory_rows_dedupe_pma_supplements_and_keep_latest_decision biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::diagnostic::tests::search_page_all_source_uses_unknown_total_when_both_sources_match biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::diagnostic::tests::search_page_applies_conjunctive_filters_and_stable_ordering biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::diagnostic::tests::search_page_rejects_explicit_who_gene_filter biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::diagnostic::tests::search_page_disease_filter_requires_word_boundary biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::diagnostic::tests::search_page_rejects_short_disease_filter biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::diagnostic::tests::search_page_requires_at_least_one_filter biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::diagnostic::tests::search_page_returns_who_rows_for_disease_filter biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::diagnostic::tests::search_query_summary_uses_documented_filter_order biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::diagnostic::tests::who_ivd_regulatory_overlay_returns_empty_vec_on_no_match biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::a_gene_shaped_query_never_types_a_drug_label_as_a_gene biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::alias_fallback_classifier_returns_canonical_for_exact_gene_alias biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::discover::tests::alias_fallback_classifier_returns_none_without_discovery_signal biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::alias_fallback_memo_keys_carry_the_source_address biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::discover::tests::alias_fallback_classifier_returns_ambiguous_for_type_mismatch biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::discover::tests::compact_previews_bound_multibyte_labels_and_oversized_values biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::discover::tests::alias_fallback_memo_stays_bounded biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::discover_gene_function_with_topic_preserves_meaningful_keyword biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::discover_gene_function_without_topic_keeps_gene_only_article_search biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::discover_general_gene_topic_adds_filtered_article_search biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::discover_request_records_alias_fallback_no_cache_intent biomcp-0.9.3> PASS [ 3.920s] biomcp-cli entities::article::detail::tests::completed_pubtator_enrichment_survives_later_europepmc_failure biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::discover_request_records_command_intent_before_clients biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::discover::tests::discover_request_rejects_oversized_query_before_clients biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::drug_safety_queries_beat_treatment_language biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::empty_results_add_review_article_fallback_note_and_command biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::discover::tests::exact_article_keyword_resolver_accepts_gene_drug_and_disease_docs biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::discover::tests::empty_discover_result_quotes_shell_metacharacters_in_json_next_command biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::exact_article_keyword_resolver_canonicalizes_ols_aliases biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::exact_article_keyword_resolver_rejects_prefix_unsupported_and_ambiguous_matches biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::exact_article_keyword_resolver_reports_alias_to_canonical_match biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::exact_gene_query_promotes_hgnc_result biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::gene_disease_queries_prefer_search_all_orientation biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::discover::tests::gene_function_queries_prefer_get_gene biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::discover::tests::hpo_backed_symptom_concepts_route_to_phenotype_search_first biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::low_confidence_noncanonical_paths_append_article_search_once_when_missing biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::discover::tests::malformed_candidates_do_not_consume_the_requested_offset biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::discover::tests::normalize_primary_id_accepts_ols4_underscore_short_forms biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::discover::tests::merge_prefers_shared_xrefs biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::ols4_timeout_absorbs_slow_primary_discover_blips biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::discover::tests::ols_doc_identifier_falls_back_to_short_form_when_obo_id_is_empty biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::discover::tests::low_confidence_variant_adds_note_without_duplicate_article_fallback biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::discover::tests::ols_hpo_identifier_overrides_non_hp_prefix_to_symptom biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::page_past_returned_concepts_does_not_retain_hidden_guidance biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::relational_mef2_query_redirects_when_only_weak_general_hits_remain biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::single_entity_disease_queries_stay_stable_after_general_filtering biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::relational_warfarin_query_redirects_instead_of_returning_collocation_noise biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::discover::tests::single_entity_gene_alias_queries_stay_stable_after_general_filtering biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::discover::tests::symptom_disease_lookup_query_strips_intent_prefixes biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::symptom_queries_about_disease_prefer_phenotype_section biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::discover::tests::symptom_search_with_hpo_ids_suggests_capped_phenotype_bridge_first biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::symptom_queries_keep_search_suggestions_and_plain_language biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::ticket_400_request_command_discover_fields_drive_resolve_boundaries biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::discover::tests::treatment_queries_prefer_structured_indication_search biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::trial_intent_prefers_a_mentioned_disease_over_a_gene biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::discover::tests::trial_intent_uses_a_mentioned_symptom_after_unmentioned_disease_noise biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::discover::tests::trial_intent_uses_gene_when_other_resolved_labels_are_unmentioned biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::trial_intent_suppresses_plain_language biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::discover::tests::typed_alias_identity_leads_when_ontology_omits_hgnc biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::article_links::tests::a_title_that_shares_words_without_all_concept_words_still_links biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::article_links::tests::an_exact_or_broader_card_title_is_not_narrower biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::discover::tests::weak_umls_gene_label_never_becomes_an_exact_lookup biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::discover::tests::umbrella_disease_queries_stay_ambiguous_and_search_oriented biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::article_links::tests::skin_neoplasms_refuses_the_benign_card_because_its_title_narrows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::associations::tests::civic_gene_symbol_extraction_ignores_protein_change_tokens biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::associations::tests::augment_genes_with_opentargets_respects_twenty_gene_cap biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::disease::associations::tests::augment_genes_with_opentargets_merges_sources_without_duplicates biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::apply_requested_sections_clears_clinical_features_when_not_requested biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::enrichment::tests::apply_requested_sections_clears_funding_when_not_requested biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::enrichment::tests::disease_diagnostics_unavailable_sets_note biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::funding_query_prefers_free_text_lookup biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::disease::enrichment::tests::disease_diagnostics_section_populates_from_rows biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::enrichment::tests::enrich_sparse_disease_identity_prefers_exact_ols4_match biomcp-0.9.3> PASS [ 4.944s] biomcp-cli cli::article::tests::outage::zero_rows_with_semantic_scholar_down_exits_one_with_source_unavailable biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::funding_query_uses_canonical_name_for_identifier_lookups biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::survival_catalog_resolution_sets_unavailable_note_when_catalog_fails biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::disease::enrichment::tests::survival_catalog_resolution_sets_truthful_note_for_unmapped_disease biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::enrichment::tests::ticket_589_id_only_disease_enrichments_are_inapplicable_without_credit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::enrichment::tests::top_genes_label_joins_both_fallback_sources biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::top_genes_label_joins_the_disgenet_seed_with_other_fallbacks biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::top_genes_label_names_the_disgenet_seed_from_the_mydisease_hit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::enrichment::tests::top_genes_label_names_the_fallback_when_open_targets_did_not_produce_them biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::disease::fallback::tests::arnold_synonym_rescue_resolves_mesh_crosswalk_through_fixture_plan biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::canonical_fallback_row_ignores_not_found_and_maps_hits biomcp-0.9.3> PASS [ 1.712s] biomcp-cli entities::article::variant_search::tests::cdkn2a_a57v_articles_tie_the_genomic_alias_to_the_gene biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::contains_all_query_tokens_ignores_generic_suffix_terms biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::disease::fallback::tests::disease_fallback_request_records_alias_queries_and_doid_preference biomcp-0.9.3> PASS [ 0.029s] biomcp-cli entities::disease::enrichment::tests::ticket_589_disease_base_enrichment_failures_are_unavailable_without_credit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::disease_fallback_request_records_mesh_skip_before_discover biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::fallback_candidate_source_ids_prefer_primary_then_ranked_xrefs biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::disease::fallback::tests::fallback_rows_dedupe_by_resolved_disease_id biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::fallback_candidates_rank_specific_crosswalkable_disease_ahead_of_generic_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::fallback::tests::fallback_search_page_applies_offset_and_limit_after_dedupe biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::fallback::tests::fallback_search_page_swallows_discover_errors biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::fallback::tests::ticket_400_request_command_disease_fallback_fields_drive_discover_and_crosswalk_boundaries biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::get::tests::disease_parse_sections_accepts_diagnostics biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::get::tests::disease_parse_sections_all_keeps_diagnostics_opt_in biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::disease::get::tests::get_disease_cad_refuses_naming_every_exact_holder biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::disease::get::tests::get_disease_lowercase_mf_refuses_like_uppercase biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::disease::get::tests::get_disease_mds_refuses_naming_both_holders biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::disease::get::tests::get_disease_mf_refuses_instead_of_mixing_two_diseases biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::get::tests::get_disease_preserves_canonical_mondo_lookup_path biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::disease::get::tests::get_disease_mm_refusal_leads_with_the_oncology_reading biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::get::tests::get_disease_resolves_mesh_and_omim_crosswalk_ids_before_fetch biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::get::tests::get_disease_returns_not_found_for_unresolved_crosswalk_without_name_fallback biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::get::tests::parse_sections_accepts_clinical_features biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::get::tests::parse_sections_all_keeps_optional_sections_opt_in biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::disease::get::tests::parse_sections_supports_new_disease_sections biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::get::tests::parse_sections_unknown_section_lists_clinical_features biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::get::tests::parse_sections_unknown_value_suggests_name_flag_for_multi_word_diseases biomcp-0.9.3> PASS [ 0.232s] biomcp-cli entities::disease::get::tests::disease_card_keeps_the_resolving_term_when_detail_label_is_missing biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::a_leading_reading_is_not_repeated_as_a_holder biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::disease::resolution::tests::abbreviated_ambiguity_exposes_the_refusal_data_for_the_trial_note biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::abbreviation_holders_count_name_and_synonym_holds biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::default_reading_leads_the_candidates_and_additions_stay_pointers biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::detail_terms_bounds_and_deduplicates_provider_synonyms biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::detail_terms_rejects_id_disagreement_and_malformed_synonyms biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::disease_candidate_score_prefers_canonical_colorectal_match_over_subtype biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::disease_exact_rank_prefers_exact_then_prefix_then_contains biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::disease::resolution::tests::exact_resolution_direct_mondo_and_doid_ids_each_use_one_request biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::disease::resolution::tests::exact_resolution_maps_selected_detail_inconsistency_to_safe_source_error biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::exact_resolution_matches_only_primary_names_and_declared_synonyms biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::disease::resolution::tests::exact_resolution_one_identity_fetches_consistent_detail_once biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::disease::resolution::tests::exact_resolution_refuses_ambiguous_abbreviation_held_by_two_diseases biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::disease::resolution::tests::exact_resolution_rejects_incomplete_query_without_fetching_detail biomcp-0.9.3> PASS [ 1.239s] biomcp-cli entities::article::variant_search::tests::samhd1_i448t_articles_tie_the_genomic_alias_to_the_gene biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::disease::resolution::tests::exact_resolution_zero_and_multiple_identities_each_stop_after_query biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::full_word_holders_count_only_exact_name_holds biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::holder_candidate_lines_fill_the_mondo_label biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::holder_counting_leaves_nonhuman_records_out biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::mf_refusal_names_the_myelofibrosis_reading biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::normalize_disease_id_basic biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::parse_disease_lookup_input_distinguishes_canonical_crosswalk_and_text biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::preferred_crosswalk_hit_prefers_mondo_then_doid_then_lexicographic_id biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::rerank_disease_search_hits_keeps_every_exact_abbreviation_holder_above_loose_matches biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::rerank_disease_search_hits_prefers_canonical_exact_candidate_across_query_variants biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::rerank_disease_search_hits_ranks_exact_abbreviation_holder_first biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::resolve_disease_hit_by_name_direct_rejects_weak_contains_only_match biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::resolver_queries_adds_carcinoma_fallback_for_cancer_terms biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::resolver_queries_adds_cml_fallback_variant biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::resolver_queries_adds_hodgkin_alias_variants biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::scored_best_candidate_breaks_ties_on_provider_names_like_rerank biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::scored_best_candidate_for_queries_prefers_hodgkin_alias_over_non_hodgkin_contains_match biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::search::tests::disease_filter_normalizers_accept_supported_values biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::search::tests::disease_filter_normalizers_handle_case_whitespace_and_unknown_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::search::tests::disease_search_request_preserves_limit_and_query_validation biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::search::tests::disease_search_request_records_normalized_filters_and_fetch_plan biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::search::tests::parse_hpo_query_terms_requires_valid_ids biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::search::tests::phenotype_continuation_shrinks_to_the_remaining_provider_window biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::search::tests::phenotype_pages_slice_one_provider_ordered_deduplicated_window biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::search::tests::phenotype_phrase_rows_flatten_in_phrase_and_provider_order_without_truncating_the_eleventh biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::search::tests::phenotype_resolution_runs_all_ten_operations_with_at_most_four_in_flight biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::search::tests::phenotype_shared_resolution_deadline_cancels_every_in_flight_operation_at_eight_seconds biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::search::tests::phenotype_terms_and_result_window_are_bounded biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::search::tests::phenotype_support_transport_status_content_body_and_decode_failures_all_degrade biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::search::tests::resolve_phenotype_query_terms_empty_input_mentions_hpo_ids_and_symptom_phrases biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::search::tests::phenotype_whole_command_and_support_deadlines_have_distinct_observable_outcomes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::search::tests::split_phenotype_queries_preserves_single_phrase_and_splits_commas biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::disease::search::tests::ticket_400_request_command_disease_search_fields_drive_source_query_and_pagination biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::search::tests::unavailable_support_is_applied_pairwise_without_changing_similarity_order biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::tests::disease_clinical_features_empty_serializes_as_absent biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::disease::tests::disease_clinical_features_missing_json_deserializes_empty biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::disease::tests::disease_clinical_features_nonempty_serializes_rows biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::drug::cell_lines::tests::a_body_over_the_cap_is_unavailable_with_the_size_message biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::cell_lines::tests::a_compound_pharmacodb_does_not_hold_completes_the_section_as_empty biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::cell_lines::tests::a_listing_with_no_filter_fails_and_names_the_counts_command biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::cell_lines::tests::one_filter_is_accepted_and_two_are_refused biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::cell_lines::tests::the_section_attaches_the_recorded_venetoclax_counts_as_data biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::drug::cell_lines::tests::the_section_name_is_listed_for_drugs biomcp-0.9.3> PASS [ 0.030s] biomcp-cli entities::drug::cell_lines::tests::the_all_card_is_byte_identical_with_and_without_the_payload biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::get::tests::a_disagreeing_label_page_refuses_the_name_as_ambiguous biomcp-0.9.3> PASS [ 0.028s] biomcp-cli entities::drug::cell_lines::tests::the_section_prints_the_heading_the_counts_and_the_next_commands biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::get::tests::ambiguous_candidates_come_from_the_records_that_own_the_name biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::get::tests::ambiguous_candidates_rank_by_record_count_then_name_and_cap_at_ten biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::get::tests::cached_trial_alias_resolution_refreshes_worker_zero_label biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::drug::get::tests::build_trial_aliases_preserves_authorities_then_source_order_and_cap biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::drug::get::tests::drugbank_trial_alias_policy_keeps_codes_and_simple_names biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::drug::get::tests::drugbank_trial_alias_policy_rejects_systematic_and_descriptor_names biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::drug::get::tests::drugsfda_failure_state_matrix biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::drug::get::tests::get_drug_pain_relief_refuses_as_ambiguous_with_the_recorded_candidates biomcp-0.9.3> PASS [ 4.367s] biomcp-cli entities::article::graph::tests::citation_evidence_degrades_to_the_index_when_the_reference_walk_is_refused biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::drug::get::tests::interaction_additive_source_state_matrix_is_truthful biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::drug::get::tests::interaction_failure_preserves_only_surviving_label_evidence_without_leaking_errors biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::get::tests::interaction_requests_always_permit_typed_partial_settlement biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::get::tests::orphan_aliases_do_not_trust_anchorless_hits biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::get::tests::orphan_aliases_reject_a_multi_unii_hit_with_any_conflict biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::get::tests::orphan_aliases_require_matching_nonconflicting_anchor biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::get::tests::orphan_aliases_treat_an_absent_identifier_as_neutral biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::get::tests::parse_sections_all_with_explicit_label_keeps_label biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::get::tests::parse_sections_default_card_includes_targets_enrichment biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::get::tests::parse_sections_supports_all_and_rejects_unknown biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::get::tests::parse_sections_unknown_value_suggests_name_flag_for_multi_word_drugs biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::get::tests::trial_alias_cache_key_normalizes_requested_name biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::get::tests::trial_alias_candidates_keep_untruncated_source_provenance biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::get::tests::trial_alias_resolution_keeps_generic_requests_canonical biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::drug::get::tests::trial_alias_resolution_does_not_cache_transient_lookup_failure biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::drug::get::tests::validate_raw_usage_allows_raw_with_label_section biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::get::tests::validate_raw_usage_rejects_raw_without_label_section biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::drug::get::tests::unreadable_who_bundle_degrades_the_card_section_without_a_local_path biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::get::tests::validate_region_usage_allows_who_all_requests biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::get::tests::validate_region_usage_rejects_approvals_with_explicit_region biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::get::tests::validate_region_usage_rejects_explicit_region_without_regional_sections biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::get::tests::validate_region_usage_rejects_who_safety_only_requests biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::get::tests::validate_region_usage_rejects_who_shortage_only_requests biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::interactions::tests::aggregation_keeps_a_row_whose_partner_is_not_an_anchor_term biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::interactions::tests::ddinter_identity_for_anchor_passes_brands_and_synonyms_on biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::interactions::tests::interaction_description_uses_legacy_partner_narrative biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::interactions::tests::interaction_next_command_quotes_multi_word_anchor biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::interactions::tests::interaction_pages_reconstruct_the_sorted_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_boxed_only_still_returns_a_label biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_falls_back_to_legacy_warnings_field biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_carries_whole_sections_past_the_markdown_cap biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_raw_mode_preserves_whole_raw_subsections biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_raw_mode_reads_boxed_warning_alongside_modern_warnings biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_interaction_text_from_label_returns_none_when_missing biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_summary_mode_keeps_boxed_warning biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_interaction_text_from_label_uses_openfda_drug_interactions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_label_boxed_warning_is_truncated biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::label::tests::extraction::extract_label_boxed_warning_reads_all_strings_from_the_first_result biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_label_set_id_falls_back_to_spl_set_id biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::label::tests::extraction::extract_label_set_id_prefers_top_level_set_id biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_label_warnings_prefers_warnings_and_cautions_over_legacy_warnings biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::label::tests::extraction::extract_label_warnings_truncates_with_exact_dailymed_link biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::a_two_drug_combination_never_splits_to_one_ingredient biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::an_exact_brand_label_with_an_unrelated_generic_never_wins_the_brand_tier biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::drug::label::tests::identity::filter_keeps_only_identity_matching_results_and_rewrites_the_total biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::drug::label::tests::identity::filter_keeps_the_withdrawn_exkivity_record_from_the_mobocertinib_capture biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::label::tests::identity::identity_guard_accepts_the_sparse_multistrength_tagrisso_record biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::label::tests::identity::identity_guard_accepts_the_sparse_propulsid_record biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::drug::label::tests::identity::identity_guard_matches_active_ingredients_as_word_sequences biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::label::tests::identity::identity_guard_reads_the_name_runs_of_each_element_entry biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::drug::label::tests::identity::identity_guard_rejects_inactive_ingredients_that_repeat_across_strengths biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::identity_guard_rejects_labels_that_only_mention_the_drug biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::identity_guard_rejects_token_sequences_joined_across_fields biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::pairing_split_derives_the_plain_ingredient_from_the_records_own_list biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::drug::label::tests::summary::extract_inline_label_summary_mode_preserves_subtype_wording biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::drug::label::tests::summary::extract_inline_label_summary_mode_falls_back_to_raw_indications_when_no_rows biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::drug::label::tests::summary::extract_inline_label_summary_mode_trims_patient_eligibility_qualifiers biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::drug::label::tests::summary::extract_inline_label_summary_mode_uses_numbered_subsection_titles biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::metadata::tests::apply_openfda_metadata_keeps_a_resolved_typed_brand_listed biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::metadata::tests::apply_openfda_metadata_lists_only_the_cards_own_label_products biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::drug::metadata::tests::extract_top_adverse_events_ranks_by_frequency biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::metadata::tests::brand_lists_remove_generic_names_before_applying_the_cap biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::metadata::tests::map_drugsfda_approvals_extracts_key_fields biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::outcome_tests::omitted_drug_outcomes_initialize_every_registry_key biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::query::tests::build_mychem_query_escapes_free_text_query biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::query::tests::build_mychem_query_expands_purine_to_atc_codes biomcp-0.9.3> PASS [ 1.045s] biomcp-cli entities::disease::get::tests::get_disease_single_holder_abbreviation_still_resolves_one_record biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::query::tests::build_mychem_query_includes_mechanism_of_action_field biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::query::tests::build_mychem_query_includes_target_and_mechanism_filters biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::query::tests::build_mychem_query_keeps_atc_filter_exact biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::query::tests::build_mychem_query_rejects_public_interaction_filter biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::query::tests::build_mychem_query_requires_at_least_one_filter biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::query::tests::drug_search_filters_detect_structured_filters biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::query::tests::mechanism_atc_expansions_returns_purine_mapping biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::search::tests::complete_candidate_ranking_moves_a_later_exact_match_before_broad_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::search::tests::ema_identity_admits_only_hits_with_exact_allowed_fields_and_preserves_field_order biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::search::tests::ema_identity_has_no_all_hits_or_excluded_field_fallback biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::search::tests::every_allowed_ema_field_independently_admits_a_hit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_fallback_is_first_page_only biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_generic_names_keep_disagreeing_owners_apart biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_generic_names_prefer_the_rows_that_own_the_brand biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_generic_names_read_a_disagreeing_page_with_no_owner biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_generic_names_take_a_lone_pairing_label biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::search::tests::fallback::search_results_from_openfda_label_response_prefers_exact_brand_match biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::search::tests::fallback::search_results_from_openfda_label_response_respects_limit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::search::tests::fallback::search_results_from_openfda_label_response_returns_remaining_unique_generics biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::search::tests::mechanism::hit_mentions_mechanism_matches_atc_purine_hits biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::search::tests::mechanism::hit_mentions_mechanism_matches_mechanism_of_action_text biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::search::tests::mechanism::mechanism_match_uses_mechanism_fields_not_drug_name biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::search::tests::who::all_region_search_degrades_when_who_pq_data_is_absent_but_explicit_who_fails biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::search::tests::who::explicit_who_vaccine_search_skips_drug_identity_resolution biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::search::tests::who::structured_who_search_reports_exact_total_when_mychem_is_exhausted biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::search::tests::who::structured_who_search_stops_after_one_extra_match_and_reports_unknown_total biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::drug::search::tests::who::structured_who_search_with_api_filter_keeps_only_api_rows biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::search::tests::who::structured_who_search_with_finished_filter_keeps_only_finished_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::civic::extract_variant_targets_from_civic_deduplicates_and_filters_by_generic_target biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::civic::normalize_variant_target_label_keeps_spaced_protein_change biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::civic::normalize_variant_target_label_normalizes_egfr_roman_suffix biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::civic::normalize_variant_target_label_rejects_exact_gene_match biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::family::derive_target_family_name_handles_non_ascii_without_panicking biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::derive_target_family_name_requires_complete_member_names biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::derive_target_family_name_trims_numeric_member_suffix biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::targets::tests::family::family_target_chembl_id_accepts_mechanism_only_family_row biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::family_target_chembl_id_rejects_missing_matching_target_id biomcp-0.9.3> PASS [ 1.248s] biomcp-cli entities::disease::get::tests::get_disease_full_word_resolves_past_nonhuman_and_synonym_holders biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::family::family_target_chembl_id_rejects_multiple_matching_target_ids biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::targets::tests::family::family_target_chembl_id_requires_single_matching_target_id biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::strict_target_family_label_accepts_numeric_suffix_family biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::family::strict_target_family_label_handles_embedded_digits biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::strict_target_family_label_rejects_mixed_targets biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::strict_target_family_label_rejects_single_target biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::indications::format_opentargets_clinical_stage_falls_back_for_future_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::indications::format_opentargets_clinical_stage_maps_known_stages biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::indications::format_opentargets_clinical_stage_suppresses_unknown_and_blank biomcp-0.9.3> PASS [ 0.119s] biomcp-cli entities::drug::search::tests::unresolved_mychem_paths_each_request_once_and_preserve_positive_cvx_fallback biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::drug::test_support::a_brand_query_resolves_through_the_mychem_record_itself biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::drug::test_support::a_refusal_runs_the_discover_resolution_once_for_both_callers biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::drug::test_support::a_text_only_match_refuses_and_names_what_matched biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::drug::test_support::brand_resolution::a_brand_two_exact_drugs_answer_refuses_instead_of_picking_one biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::drug::test_support::brand_resolution::niraparib_names_the_plain_card_and_takes_its_own_label biomcp-0.9.3> PASS [ 4.015s] biomcp-cli entities::article::search::tests::deadline::overall_deadline_returns_partial_rows_and_names_the_held_source biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::drug::test_support::brand_resolution::pain_relief_refuses_without_naming_products_that_do_not_own_the_name biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::drug::test_support::brand_resolution::sleep_aid_refuses_when_openfdas_own_brands_disagree biomcp-0.9.3> PASS [ 0.026s] biomcp-cli entities::drug::test_support::brand_resolution::tarceva_lists_the_typed_brand_and_no_chemical_synonym biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::drug::test_support::brand_resolution::trastuzumab_lists_only_brands_whose_labels_name_trastuzumab biomcp-0.9.3> PASS [ 0.030s] biomcp-cli entities::drug::test_support::brand_resolution::tarceva_resolves_erlotinib_through_the_guarded_discover_rescue biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::drug::test_support::brand_resolution::zejula_returns_niraparib_with_the_zejula_label biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::drug::test_support::ingredient_resolution::a_combination_card_carries_no_single_ingredient_identifier biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::drug::test_support::ingredient_resolution::acetaminophen_takes_the_plain_ingredient_card_and_label biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::drug::test_support::ingredient_resolution::cold_and_flu_still_refuses_across_distinct_combination_products biomcp-0.9.3> PASS [ 2.486s] biomcp-cli entities::article::variant_search::tests::litvar_failure_degrades_only_its_source biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::drug::test_support::ingredient_resolution::aspirin_card_names_the_ingredient_not_a_product_rows_strength biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::drug::test_support::ingredient_resolution::fluorouracil_synonym_takes_the_plain_ingredient_card_and_label biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::drug::test_support::ingredient_resolution::motrin_resolves_to_the_ingredient_its_labels_mostly_name biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::drug::test_support::ingredient_resolution::tylenol_resolves_to_the_plain_ingredient_its_labels_mostly_name biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::drug::test_support::ingredient_resolution::keytruda_qlex_pairing_derives_the_plain_ingredient_from_the_records_own_list biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::drug::test_support::label_choice::a_contains_tier_ols_match_never_adopts_a_card biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::drug::test_support::label_choice::a_non_hyaluronidase_combination_never_becomes_another_products_card biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::drug::test_support::label_choice::amivantamab_takes_the_plain_rybrevant_label_not_faspro biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::drug::test_support::label_choice::avastin_takes_avastins_own_label biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::drug::test_support::label_choice::bevacizumab_escalates_past_the_biosimilar_page_to_avastin biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_choice::daratumumab_takes_the_plain_darzalex_label_not_faspro biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_choice::gleevec_keeps_its_own_label_against_the_generic_ingredient_twin biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::drug::test_support::label_choice::darzalex_takes_the_plain_darzalex_label_not_faspro biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::drug::test_support::label_choice::herceptin_takes_herceptins_own_label_not_the_biosimilar biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::drug::test_support::label_choice::keytruda_takes_keytrudas_own_label_not_the_qlex_pairing biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::drug::test_support::label_choice::pembrolizumab_takes_the_plain_keytruda_label biomcp-0.9.3> PASS [ 0.026s] biomcp-cli entities::drug::test_support::label_choice::phesgo_resolves_its_own_label_and_safety_line biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::drug::test_support::label_choice::rybrevant_takes_the_plain_rybrevant_label_not_faspro biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_choice::trastuzumab_takes_the_plain_herceptin_label_not_the_biosimilar biomcp-0.9.3> PASS [ 0.026s] biomcp-cli entities::drug::test_support::label_choice::the_rescue_adopts_a_candidate_only_through_its_own_record biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_elements_fallback_no_match_settles_as_the_honest_empty biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_elements_fallback_returns_the_own_record_not_an_empty biomcp-0.9.3> PASS [ 0.026s] biomcp-cli entities::drug::test_support::label_elements_oversize_response_settles_as_unavailable_with_reason biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::drug::test_support::product_names::advil_names_the_ingredient_it_pairs_not_the_merged_pm_row biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::drug::test_support::product_names::headache_relief_names_the_product_it_pairs_not_a_merged_row biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::drug::test_support::product_names::herceptin_hylecta_keeps_its_multi_word_brand_and_own_label biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::drug::test_support::product_names::nighttime_sleep_aid_names_the_record_not_another_products_row biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::drug::test_support::product_names::rituxan_hycela_keeps_its_multi_word_brand_and_own_label biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::drug::test_support::product_names::tecentriq_hybreza_keeps_its_multi_word_brand_and_own_label biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::drug::test_support::terfenadine_returns_terfenadines_card_with_an_honest_empty_label biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::cell_lines::tests::a_cellosaurus_failure_leaves_the_rows_with_no_accession_and_one_note biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::gene::cell_lines::tests::a_name_no_window_claims_gets_no_accession_and_the_note biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::cell_lines::tests::an_empty_window_gives_no_accession_and_no_failure_note biomcp-0.9.3> PASS [ 1.045s] biomcp-cli entities::drug::get::tests::drug_card_sources_run_at_once_and_keep_the_undelayed_output biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::cell_lines::tests::an_html_body_with_http_200_is_a_provider_error_naming_the_url biomcp-0.9.3> PASS [ 0.097s] biomcp-cli entities::gene::cell_lines::tests::every_leukemia_name_resolves_to_one_human_accession biomcp-0.9.3> PASS [ 0.094s] biomcp-cli entities::gene::cell_lines::tests::limit_and_offset_page_the_rows_and_keep_the_total biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::cell_lines::tests::parser_ignores_an_object_for_another_gene_and_answers_empty_when_none_matches biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::cell_lines::tests::parser_keeps_a_non_numeric_value_as_null biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::cell_lines::tests::parser_keeps_the_requested_gene_and_the_recorded_group_order biomcp-0.9.3> PASS [ 6.534s] biomcp-cli cli::stale_json_note_tests::a_stale_search_all_json_states_the_cache_age_in_meta_notes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::cell_lines::tests::the_attribution_line_names_the_recorded_file_date_and_the_confirmed_license biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::cell_lines::tests::the_group_list_is_the_thirty_the_data_access_page_publishes biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::gene::cell_lines::tests::the_license_agrees_across_the_attribution_line_and_both_registries biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::clingen::tests::canceling_during_settle_aborts_its_clingen_prefetch_task biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::gene::clingen::tests::canceling_parent_aborts_its_clingen_prefetch_task biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::clingen::tests::client_construction_failure_marks_both_families_before_requests biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::clingen::tests::family_statuses_define_the_exact_aggregate_truth_table biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::cspec::tests::ambiguous_short_version_lists_available_versions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::cspec::tests::bounded_preserves_utf8_when_the_limit_splits_a_character biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::cspec::tests::post_fetch_paging_failure_is_not_projected_as_a_clingen_provider_failure biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::gene::cspec::tests::receipted_atm_document_without_data_iri_pages_from_manifest_binding biomcp-0.9.3> PASS [ 0.099s] biomcp-cli entities::gene::cell_lines::tests::the_group_is_resolved_in_five_batches_and_no_sixth biomcp-0.9.3> PASS [ 0.033s] biomcp-cli entities::gene::cspec::tests::receipted_pten_files_and_normal_count_use_the_production_parser biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::cspec::tests::recorded_atm_document_deduplicates_citations_in_provider_order biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::cspec::tests::selected_document_must_match_the_manifest_specification_id biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::cspec::tests::selection_accepts_a_literal_iri_or_unique_short_version biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::gene::gencc::tests::assertion_cap_is_separate_from_the_total biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::gene::gencc::tests::canonical_symbol_and_hgnc_return_three_submission_rows biomcp-0.9.3> PASS [ 0.085s] biomcp-cli entities::gene::gencc::tests::bootstrap_parent_fsync_failures_fail_closed_before_any_store_is_returned biomcp-0.9.3> PASS [ 0.066s] biomcp-cli entities::gene::gencc::tests::cleanup_faults_retain_unowned_or_unfinished_entries_for_a_later_pass biomcp-0.9.3> PASS [ 0.225s] biomcp-cli entities::gene::cspec::tests::attachment_count_and_field_boundaries_fail_without_partial_rows biomcp-0.9.3> PASS [ 0.123s] biomcp-cli entities::gene::gencc::tests::descriptor_bootstrap_rejects_unsafe_or_substituted_anchors_and_reuses_inode biomcp-0.9.3> PASS [ 0.213s] biomcp-cli entities::gene::gencc::tests::default_and_override_subprocesses_reuse_the_external_anchor_inode_after_root_recreation biomcp-0.9.3> PASS [ 3.057s] biomcp-cli entities::author::papers::wire_tests::sanitized_errors_do_not_leak_provider_bodies_urls_or_credentials biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::gene_section_names_include_new_enrichment_sections biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::gene::gencc::tests::hgnc_precedence_matrix_covers_every_queryable_lifecycle_and_root_failure biomcp-0.9.3> PASS [ 0.321s] biomcp-cli entities::gene::gencc::tests::expired_refresh_budget_still_projects_authoritative_stale_data biomcp-0.9.3> PASS [ 2.536s] biomcp-cli entities::disease::get::tests::get_disease_alias_lookup_does_not_feed_the_abbreviation_to_open_targets biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::gene::gencc::tests::missing_hgnc_uses_unique_symbol_identity biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::gene::gencc::tests::one_sided_identity_match_is_inconclusive biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::gene::gencc::tests::overflow_uid_never_inherits_system_owner_trust biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::outcome_inventory_matches_parser_visible_sections biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::parse_sections_accepts_new_enrichment_sections biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::parse_sections_accepts_diagnostics biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::gene::gencc::tests::parse_sections_all_keeps_optional_diagnostics_opt_in biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::gencc::tests::parse_sections_all_keeps_optional_sections_opt_in biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::pre_index_identity_failure_precedes_store_creation biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::gene::gencc::tests::projection_deadline_cancels_and_joins_the_actual_gencc_worker biomcp-0.9.3> PASS [ 0.062s] biomcp-cli entities::gene::gencc::tests::publication_rejects_a_substituted_generations_component_without_writing_through_it biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::gene::gencc::tests::stale_positive_and_zero_outcomes_preserve_the_lifecycle_message biomcp-0.9.3> PASS [ 0.286s] biomcp-cli entities::gene::gencc::tests::injected_state_rename_failures_report_the_visible_namespace biomcp-0.9.3> PASS [ 0.350s] biomcp-cli entities::gene::gencc::tests::post_rename_200_and_304_deadlines_return_committed_public_rows biomcp-0.9.3> PASS [ 0.182s] biomcp-cli entities::gene::gencc::tests::subprocess_lease_child_exits_on_parent_end_of_input biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::canonical_alias_identity_keeps_the_entrez_identifier biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::tests::canonical_alias_matches_cover_common_gene_aliases biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::canonical_alias_matches_keep_ambiguous_aliases_ambiguous biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::exact_gene_query_candidate_requires_symbol_safe_ascii_with_a_letter biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::gene::tests::exact_gene_results_keep_distinct_ids_and_missing_identity_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::exact_gene_results_promote_then_dedupe_first_wins biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::tests::exact_search_followup_boundary_covers_fifty_and_fifty_one biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::tests::gene_diagnostics_section_populates_from_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::gene_diagnostics_unavailable_sets_note biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::gene::tests::gene_section_result_application_is_strategy_order_invariant biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::gnomad_constraint_without_metrics_is_healthy_empty biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::tests::merge_druggability_keeps_successful_source_data_when_other_source_fails biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::merge_pathways_keeps_kegg_then_appends_reactome_without_duplicates biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::tests::mygene_query_term_escapes_free_text_special_chars biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::tests::mygene_query_term_searches_aliases_for_symbol_like_input biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::tests::normalize_gene_chromosome_accepts_chr_prefix_and_special_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::tests::normalize_gene_chromosome_rejects_invalid_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::tests::normalize_gene_type_accepts_supported_aliases biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::gene::tests::normalize_gene_type_rejects_invalid_value biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::normalize_go_id_accepts_canonical_and_lowercase_prefix biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::tests::normalize_go_id_rejects_free_text biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::official_symbol_identity_keeps_the_entrez_identifier biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::official_symbol_matches_refuse_aliases biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::parse_sections_redirects_variants_to_variant_search biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::pathway_outcome_credits_merged_sources_and_only_retained_sources_on_failure biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::gene::tests::quickgo_and_string_failure_state_matrix biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::gene::tests::search_query_summary_includes_new_filters biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pathway::tests::ensembl_redirect_matcher_rejects_malformed_version_suffix biomcp-0.9.3> PASS [ 7.350s] biomcp-cli entities::article::assets::tests::manifest_and_bytes_preserve_induced_archive_failure_after_figshare_miss biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::pathway::tests::finalize_pathway_search_results_keeps_wikipathways_when_kegg_is_disabled biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::pathway::tests::extract_gene_symbols_dedupes_and_filters_non_gene_tokens biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pathway::tests::finalize_pathway_search_results_surfaces_partial_source_failure biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pathway::tests::kegg_all_expands_to_supported_sections_only biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pathway::tests::kegg_disabled_error_names_the_disable_reason_and_an_alternative biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::pathway::tests::kegg_explicit_enrichment_section_is_rejected biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pathway::tests::kegg_explicit_events_section_is_rejected biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::pathway::tests::looks_like_gene_symbol_rejects_mutation_notation biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pathway::tests::normalize_pathway_query_maps_confirmed_mapk_aliases biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pathway::tests::parse_sections_supports_all_and_rejects_unknown_values biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pathway::tests::pathway_json_compatibility_defaults_missing_outcomes_and_rejects_foreign_keys biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_gene_redirect_for_ensembl_gene_id biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_gene_redirect_for_ensembl_transcript_id biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_gene_redirect_for_gene_symbol biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_gene_redirect_for_versioned_ensembl_id biomcp-0.9.3> PASS [ 2.021s] biomcp-cli entities::drug::test_support::a_stalled_drug_refusal_costs_one_discover_budget biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_protein_redirect_for_uniprot_accession biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_variant_redirect_for_rsid biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pathway::tests::pathway_title_match_tier_prefers_exact_then_prefix_then_contains biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::pathway::tests::pathway_lookup_error_preserves_redirect_without_duplicate_source_recovery biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pathway::tests::rerank_pathway_search_results_drops_rows_unrelated_to_query biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pathway::tests::rerank_pathway_search_results_uses_upstream_position_for_same_tier biomcp-0.9.3> PASS [ 0.411s] biomcp-cli entities::gene::gencc::tests::subprocess_lease_defers_old_generation_cleanup_until_reader_exits biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pathway::tests::search_requires_query_with_quoted_example biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pathway::tests::wikipathways_all_expands_to_supported_sections_only biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pathway::tests::wikipathways_explicit_enrichment_section_is_rejected biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pathway::tests::wikipathways_explicit_events_section_is_rejected biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pathway::tests::wikipathways_gene_outcome_credits_symbol_resolution_provider biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pgx::recommendation_mapping_tests::recommendation_mapping_does_not_override_the_section_limit biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pgx::recommendation_mapping_tests::recommendations_keep_complete_deterministic_genotypes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pgx::recommendation_mapping_tests::recommendations_render_every_available_gene_without_hashmap_fallbacks biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pgx::tests::distinct_actionable_cpic_gene_count_counts_unique_genes_to_threshold biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::pgx::recommendation_mapping_tests::recommendations_fetch_bounded_gene_drug_coverage biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pgx::tests::likely_gene_uses_input_case_and_rejects_multi_word_queries biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pgx::tests::normalize_cpic_level_accepts_supported_values biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::pgx::tests::get_options_reject_invalid_paging_before_client_construction biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pgx::tests::normalize_cpic_level_rejects_invalid_value biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pgx::tests::normalize_pgx_testing_accepts_supported_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pgx::tests::normalize_pgx_testing_rejects_blank_and_unknown_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pgx::tests::parse_sections_supports_all biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pgx::tests::search_summary_formats_filters biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::pgx::tests::section_pagination_uses_exact_total_or_limit_plus_one biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::a_body_over_the_cap_is_an_unavailable_section_naming_the_size biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::a_cell_line_row_names_its_compound_and_a_drug_row_names_its_cell_line biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pharmacodb::tests::a_compound_name_matches_ignoring_ascii_case_only biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::a_known_dataset_normalizes_to_the_name_pharmacodb_publishes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::pharmacodb::tests::a_record_that_claims_another_accession_is_a_mismatch biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::a_null_metric_stays_null_in_json_and_prints_as_a_dash biomcp-0.9.3> PASS [ 2.119s] biomcp-cli entities::drug::test_support::a_slow_alias_fallback_round_gives_up_within_the_refusal_budget biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::pharmacodb::tests::a_record_that_claims_the_requested_accession_is_accepted biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::an_unknown_dataset_lists_the_ten_dataset_names biomcp-0.9.3> PASS [ 0.031s] biomcp-cli entities::pharmacodb::tests::a_dataset_filter_keeps_only_that_dataset_and_ignores_case biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::another_failure_is_unavailable_without_the_size_message biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::json_keeps_the_published_value_without_rounding biomcp-0.9.3> PASS [ 0.029s] biomcp-cli entities::pharmacodb::tests::a_repeated_compound_and_dataset_pair_keeps_every_row_with_its_own_id biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::pharmacodb::tests::markdown_prints_a_metric_with_up_to_four_significant_digits biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::pharmacodb::tests::no_record_at_all_is_missing_and_not_a_mismatch biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::pharmacodb::tests::the_attribution_line_names_the_terms_the_version_the_units_and_the_limits biomcp-0.9.3> PASS [ 0.047s] biomcp-cli entities::pharmacodb::tests::a_row_page_pages_the_matched_rows_and_keeps_the_whole_side_total biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::pharmacodb::tests::the_counts_payload_sums_the_recorded_molm13_datasets biomcp-0.9.3> PASS [ 0.028s] biomcp-cli entities::pharmacodb::tests::rows_sort_by_counterpart_name_then_dataset_then_experiment_id biomcp-0.9.3> PASS [ 0.026s] biomcp-cli entities::pharmacodb::tests::the_counts_line_names_every_dataset_in_name_order biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::protein::tests::complexportal_outcome_uses_registered_provider_label biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::pharmacodb::tests::the_license_agrees_across_the_attribution_line_and_both_registries biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::protein::tests::interpro_and_string_failure_state_matrix biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::protein::tests::paginate_structures_applies_offset_then_limit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::protein::tests::map_complexportal_complex_uses_explicit_curation_and_components biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::protein::tests::parse_sections_supports_all_and_reports_unknown_values biomcp-0.9.3> PASS [ 0.069s] biomcp-cli entities::pharmacodb::tests::a_venetoclax_page_reports_the_recorded_drug_side_counts biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::protein::tests::search_rejects_empty_query biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::protein::tests::species_and_review_filters_form_an_independent_matrix biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::protein::tests::uniprot_accession_validation_accepts_accessions_and_rejects_symbols biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::protein::tests::validate_structure_limit_enforces_bounds biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::section_outcome::tests::bounded_messages_cut_at_a_word_boundary biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::section_outcome::tests::deserialization_rejects_illegal_shapes_and_unsafe_messages biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::section_outcome::tests::deserialized_registry_rejects_entity_foreign_keys biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::section_outcome::tests::permanent_flag_serializes_and_validates biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::section_outcome::tests::registry_rejects_second_completion biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::section_outcome::tests::registry_rejects_unknown_keys biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::section_outcome::tests::registry_serializes_all_states_and_safe_messages biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::section_outcome::tests::successful_outcomes_require_a_source biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::source_state_registry::recovery_tests::every_source_state_row_has_one_callable_recovery_route biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::study::tests::co_occurrence_validates_gene_count biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::study::tests::cohort_round_trips_source_result biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::study::tests::compare_expression_values_returns_mutant_then_wildtype_groups biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::study::tests::compare_expression_round_trips_source_result biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::study::tests::compare_mutations_round_trips_source_result biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::study::tests::expression_pairs_by_sample_round_trips_source_result biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::study::tests::expression_values_returns_sorted_values biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::study::tests::filter_validates_empty_criteria biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::study::tests::filter_round_trips_source_result biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::study::tests::list_studies_returns_available_data biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::study::tests::missing_root::missing_study_root_is_an_empty_catalog biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::study::tests::missing_root::normalize_study_id_rejects_path_like_input biomcp-0.9.3> PASS [ 2.016s] biomcp-cli entities::drug::test_support::product_names::a_slow_discover_round_never_holds_the_refusal_hostage biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::study::tests::missing_root::query_with_a_missing_root_returns_not_in_local_cohorts biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::study::tests::mutation_counts_by_sample_round_trips_source_result biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::study::tests::mutation_outputs_include_caveat_when_structural_variants_exist biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::study::tests::query_study_missing_local_cohort_returns_coverage_signal biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::study::tests::query_study_structural_variants_round_trips_source_result biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::study::tests::query_study_mutations_round_trips_source_result biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::study::tests::query_type_from_flag_parses_supported_values biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::study::tests::query_study_unknown_study_returns_not_in_local_cohorts biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::study::tests::query_type_from_flag_rejects_unknown_type biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::study::tests::survival_endpoint_rejects_unknown_value biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::study::tests::survival_endpoint_from_flag_parses_supported_values biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::study::tests::survival_round_trips_source_result biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::age_tests::provider_age_grammar_is_exact_and_fail_open biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::study::tests::top_mutated_genes_reports_ranked_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::age_tests::public_age_serde_is_object_only_and_validated biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::documents::tests::eligibility_provenance_tracks_document_availability biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::documents::tests::constructs_fixed_percent_encoded_path biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::documents::tests::maps_manifest_metadata_handles_and_empty_state biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::documents::tests::omits_handles_for_unsafe_advertised_filenames biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::documents::tests::rejects_unsafe_document_filenames biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::documents::tests::rejects_off_origin_redirect_before_contacting_target biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::trial::documents::tests::reported_oversize_remains_listable_and_actual_small_body_is_retrievable biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::eligibility::strict_json::tests::depth_limit_is_inclusive_and_rejects_one_more_container biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::eligibility::strict_json::tests::rejects_duplicate_members_at_any_depth biomcp-0.9.3> PASS [ 0.084s] biomcp-cli entities::trial::eligibility::strict_json::tests::object_member_limit_is_inclusive_and_counts_duplicates biomcp-0.9.3> PASS [ 0.102s] biomcp-cli entities::trial::documents::tests::permits_exact_body_limit_and_rejects_one_extra_byte biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::trial::eligibility::tests::direct_eligibility_wire_preserves_every_value_and_explicit_empty_collection biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::trial::eligibility::tests::direct_eligibility_wire_rejects_bad_identity_text_codes_and_members biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::eligibility::tests::direct_eligibility_wire_rejects_duplicate_members biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::eligibility::tests::direct_eligibility_wire_rejects_malformed_age_and_any_other_no_limit_rule biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::eligibility::tests::trial_wire_distinguishes_a_missing_field_from_an_all_null_aggregate biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::get::tests::get_rejects_non_nct_id_with_format_hint biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::trial::get::tests::nci_arm_conversion_preserves_every_occurrence_and_assignment biomcp-0.9.3> PASS [ 0.145s] biomcp-cli entities::trial::eligibility::strict_json::tests::rejects_trailing_and_oversized_input biomcp-0.9.3> PASS [ 0.040s] biomcp-cli entities::trial::get::tests::nci_criterion_sorting_preserves_source_occurrence_identity_and_classification biomcp-0.9.3> PASS [ 0.048s] biomcp-cli entities::trial::get::tests::nci_eligibility_keeps_absence_and_an_explicit_empty_list_distinct biomcp-0.9.3> PASS [ 0.216s] biomcp-cli entities::trial::eligibility::strict_json::tests::string_scalar_limit_is_inclusive biomcp-0.9.3> PASS [ 0.128s] biomcp-cli entities::trial::get::tests::ctgov_eligibility_provenance_exists_only_for_explicit_text biomcp-0.9.3> PASS [ 0.045s] biomcp-cli entities::trial::get::tests::nci_not_found_status_wins_before_an_oversized_body_is_read biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::trial::get::tests::nci_request_state_table_requests_eligibility_exactly_when_selected biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::trial::get::tests::nci_product_conversion_checks_enrollment_and_preserves_source_presence biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::get::tests::normalize_nct_id_uppercases_prefix biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::get::tests::parse_sections_accepts_contacts_and_all_includes_contacts biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::get::tests::product_design_retains_a_relationship_failure_from_mismatched_sections biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::get::tests::product_references_maps_each_section_state biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::trial::get::tests::trial_design_contracts::deserialization_rejects_duplicate_and_dangling_relationships biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::get::tests::trial_design_contracts::flattened_design_keeps_assignment_member biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::missing_intervention_is_checked_against_the_supplied_collection biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::trial_design_distinguishes_section_presence_from_relationship_failures biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::trial_design_error_retains_sources_and_safe_public_projections biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::trial_design_preserves_all_relationship_failure_variants biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::trial_design_round_trips_shared_relationships biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::get::tests::trial_design_contracts::type_wire_rejects_missing_unknown_and_empty_members biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::trial::search::ctgov::abbreviation_note_tests::default_source_names_the_ambiguous_abbreviation_keyword_search biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::trial::search::ctgov::abbreviation_note_tests::default_source_skips_the_ambiguity_note_for_full_words biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::trial::search::ctgov::abbreviation_note_tests::default_source_notes_the_lowercase_abbreviation_like_the_uppercase biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::age_filter_total_returns_native_total_when_exhausted biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::alias_expansion_next_page_error_is_actionable biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::trial::search::ctgov::tests::age_filter_uses_native_total_semantics_across_limits biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::alias_union_count_returns_exact_unique_total_when_exhausted biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::alias_union_does_not_claim_missing_nct_ids_before_filtering biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::alias_union_provenance_uses_the_claimed_normalized_nct_id biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::alias_union_returns_the_traversal_limit_reason_at_its_cap biomcp-0.9.3> PASS [ 8.865s] biomcp-cli cli::article::tests::outage::rows_with_semantic_scholar_down_keep_exit_zero_complete_false biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::trial::search::ctgov::tests::an_over_age_unchecked_trial_never_marks_the_count_partial biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::build_ctgov_search_params_keeps_search_and_count_call_shapes_aligned biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::build_ctgov_search_params_maps_all_shared_fields biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::build_ctgov_search_params_preserves_none_values_without_defaults biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::build_ctgov_search_params_quotes_interventions_as_single_essie_literals biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::trial::search::ctgov::tests::count_all_keeps_an_omitted_provider_total_unknown biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::count_all_returns_approximate_for_age_only_filters biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::count_all_returns_exact_for_no_post_filters biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_cursor_preserves_next_page_token_after_offset_full_page_consumption biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_cursor_without_a_reported_total_keeps_the_provider_token biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_query_term_broadens_mutation_across_discovery_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_query_term_joins_multi_phase_filters_with_and biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_query_term_broadens_simple_mutation_across_discovery_fields biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_query_term_preserves_hyphenated_eligibility_phrases biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_worker_outcome_skips_only_expanded_parser_rejections biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_workers_do_not_label_literal_single_intervention biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_workers_keep_literal_condition_during_intervention_fanout biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::facility_geo_verification_leaves_the_provider_total_unreported biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::trial::search::ctgov::tests::expensive_single_query_returns_the_traversal_limit_reason_at_its_cap biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::literal_condition_search_still_reports_limit_one_total biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::no_alias_expand_builds_one_literal_requested_name_worker biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::search_path_rejects_next_page_when_alias_expansion_uses_multiple_queries biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::trial::search::ctgov::tests::recorded_provider_phase_output_round_trips_to_exact_ctgov_request biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::skipped_expanded_worker_makes_search_and_count_totals_unknown biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::trial_location_requires_a_positive_distance biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::trial_numeric_filters_are_validated_before_request_construction biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::trial_search_rejects_absurd_offset_before_provider_setup biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::verification_emptied_zero_reports_the_provider_total biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::keep_paths::a_study_without_an_nct_id_is_kept_and_reported_without_a_fetch biomcp-0.9.3> PASS [ 0.447s] biomcp-cli entities::trial::eligibility::strict_json::tests::collection_element_limit_is_inclusive biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::trial::search::eligibility::keep_paths::missing_eligibility_text_keeps_the_study_and_reports_it biomcp-0.9.3> PASS [ 0.025s] biomcp-cli entities::trial::search::eligibility::keep_paths::a_verified_keyword_match_stays_out_of_the_report biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::trial::search::eligibility::tests::collect_eligibility_keywords_includes_supported_filters biomcp-0.9.3> PASS [ 0.456s] biomcp-cli entities::trial::eligibility::strict_json::tests::normalized_event_limit_is_inclusive biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::tests::collect_eligibility_keywords_omits_blank_values biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::trial::search::eligibility::tests::collect_eligibility_keywords_skips_boolean_expressions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_hyphenated_token biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_does_not_match_without_plus_suffix biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_hyphenated_plus_token biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_word_token biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_plus_suffix_token biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_slash_separated_plus_tokens biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_rejects_hyphenated_token_without_plus_suffix biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_rejects_substring_word_match biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_discards_exclusion_only_match biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_discards_negated_inclusion_sentence biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_fails_open_when_keyword_missing biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_fails_open_without_exclusion_section biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_keeps_when_inclusion_matches biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_keeps_when_in_both_sections biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_rejects_mixed_context_without_exclusion_section biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_rejects_negated_without_exclusion_section biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::eligibility::tests::facility_geo_discards_mixed_site_false_positive biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_rejects_no_prior_without_exclusion_section biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::tests::facility_geo_keeps_same_site_match biomcp-0.9.3> PASS [ 0.346s] biomcp-cli entities::trial::get::tests::nci_get_eligibility_uses_receipted_trial_record_shape biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::trial::search::eligibility::tests::split_eligibility_sections_detects_exclusion_header biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::search::eligibility::tests::split_eligibility_sections_supports_key_exclusion_header biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::search::eligibility::tests::verify_age_eligibility_fails_open_for_noncomparable_and_malformed_bounds biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::search::eligibility::tests::split_eligibility_sections_without_exclusion_keeps_all_in_inclusion biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::tests::verify_age_eligibility_handles_sub_year_maximum_age biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::eligibility::tests::verify_age_eligibility_handles_sub_year_minimum_age biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::trial::search::essie::tests::essie_escape_boolean_expression_handles_and_not biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::trial::search::essie::tests::criteria_query_and_verification_share_case_sensitive_operator_rules biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::essie::tests::essie_escape_pins_the_escape_set_and_leaves_hyphens_literal biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::trial::search::essie::tests::essie_escape_boolean_expression_handles_leading_not biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::trial::search::essie::tests::essie_escape_boolean_expression_preserves_or_operators biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::essie::tests::line_of_therapy_patterns_accepts_supported_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::essie::tests::line_of_therapy_patterns_rejects_invalid_values biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_age_rejection_precedes_both_provider_requests biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_biomarker_like_fields_never_choose_or_duplicate_a_value biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_keyword_fallback_request_uses_keyword_not_concept_id biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::trial::search::nci::tests::nci_ambiguous_condition_refuses_instead_of_keyword_search biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::search::nci::tests::nci_mm_refusal_leads_with_the_reading_and_names_the_trial_retry biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::search::nci::tests::nci_phase_mapping_uses_i_ii_for_combined_phase biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_public_filter_table_is_explicit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_search_falls_back_to_keyword_when_grounding_is_unavailable biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_search_falls_back_to_keyword_when_best_hit_lacks_nci_xref biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_search_prefers_grounded_disease_concept_id biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_source_rejects_early_phase1 biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_source_rejects_status_lists biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_status_mapping_uses_documented_single_value_filters biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::recorded_provider_phase_output_round_trips_to_exact_nci_request biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::trial::search::normalization::tests::normalize_intervention_query_canonicalizes_confirmed_drug_code_pattern biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::trial::search::normalization::tests::normalize_intervention_query_preserves_generic_multiword_names biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_phase_accepts_aliases biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::normalization::tests::normalize_phase_rejects_invalid_value biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_sex_accepts_supported_values biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::search::normalization::tests::normalize_sex_rejects_invalid_value biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_sponsor_type_accepts_supported_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_sponsor_type_rejects_invalid_value biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_status_accepts_comma_separated_values biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::search::normalization::tests::normalize_status_accepts_ctgov_wording_and_aliases biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_status_rejects_comma_list_with_invalid_value biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_status_rejects_invalid_value biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::search::normalization::tests::normalized_phase_filter_preserves_blank_as_absent biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::status_priority_prefers_recruiting_over_completed biomcp-0.9.3> PASS [ 0.114s] biomcp-cli entities::trial::search::nci::tests::nci_keyword_degrade_note_reaches_the_search_page biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::search::normalization::tests::trial_sources_reject_ambiguous_active_status_with_replacements biomcp-0.9.3> PASS [ 0.116s] biomcp-cli entities::trial::search::nci::tests::nci_overlong_condition_truncates_instead_of_failing biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_reference_wire_accepts_every_shared_value_state biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_reference_wire_emits_exact_complete_shapes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_reference_wire_preserves_duplicates_for_strict_local_trial_rejection biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_reference_wire_preserves_section_states_order_and_unicode biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_stores_shared_references_directly biomcp-0.9.3> PASS [ 0.112s] biomcp-cli entities::trial::search::nci::tests::nci_ungroundable_condition_keeps_the_keyword_degrade biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::clinvar::tests::canonical_outcomes_and_provenance_match_selected_payload_source biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::clinvar::tests::day_shaped_gate_lives_in_utils_and_dates_it_prints_come_from_the_shared_rule biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::clinvar::tests::degraded_labels_name_the_failed_source_reason_and_fallback_age biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::variant::clinvar::tests::fallback_age_is_omitted_without_a_strict_day_shaped_date biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::variant::clinvar::tests::fallback_age_names_the_newest_of_several_dated_rows biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::clinvar::tests::missing_numeric_variation_id_is_source_free_inapplicable biomcp-0.9.3> PASS [ 5.827s] biomcp-cli entities::article::variant_search::tests::degraded_strict_leg_partials_mark_the_route_incomplete biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::clinvar::tests::provider_errors_classify_into_rate_limit_and_provider_buckets biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::erepo::tests::detail_identity_uses_path_and_reports_mismatches_as_internal biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::clinvar::tests::unavailable_labels_name_the_failed_source_and_reason biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::erepo::tests::gene_preview_omits_oversized_strings_without_cutting_them biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::variant::erepo::tests::detail_retrieval_consumes_the_summary_selected_plan biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::variant::erepo::tests::receipted_apc_detail_preserves_the_provider_at_id biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::variant::erepo::tests::receipted_guideline_pages_preserve_labels_and_parse_only_semver biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::erepo::tests::receipted_pten_gene_page_is_compact_bounded_and_truthfully_paged biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::variant::erepo::tests::selector_accepts_an_exact_historical_version biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::erepo::tests::selectors_require_detail biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::headline_shows_the_current_transcript_version_clinvar_carries biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::mane_annotation_names_change_reads_the_mane_stem_only biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::mane_numbering_refusal_names_the_residue_and_the_lookalike biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_absent_refusal_fires_mid_sequence biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_absent_refusal_without_a_mane_transcript_claims_only_the_headline biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_headlines_the_mane_transcript_of_the_query biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_keeps_a_single_matching_hit biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_keeps_the_named_brca1_change_over_a_clinvar_lookalike biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_keeps_the_named_change_over_a_clinvar_lookalike biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_a_many_row_record_past_the_protein_end biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_a_position_past_the_canonical_protein_end biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_a_proven_other_numbering_without_a_mane_transcript biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_h1883d_past_the_canonical_protein_end biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_the_numbering_when_the_hit_does_not_spell_the_request biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_unchecked_numbering_without_a_mane_transcript biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_unchecked_numbering_without_facts biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_pins_the_true_other_transcript_numbering_note biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_prefers_the_canonical_spelling_over_conflicting_records biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_prefers_the_clinvar_named_hit_over_first_match biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_a_clinvar_lookalike_without_the_named_change biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_a_hit_without_any_protein_change biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_a_long_isoform_spelling_of_a_mane_numbered_request biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_a_lookalike_without_facts biomcp-0.9.3> PASS [ 0.314s] biomcp-cli entities::variant::clinvar::tests::add_clinvar_admits_rate_limiting_when_a_sustained_429_outlives_the_deadline biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_conflicting_clinvar_records biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_an_isoform_spelling_of_a_mane_numbered_request biomcp-0.9.3> PASS [ 0.314s] biomcp-cli entities::variant::clinvar::tests::add_clinvar_labels_a_deadline_miss_when_the_direct_answer_never_arrives biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_when_no_clinvar_record_names_one biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_resolves_the_requested_numbering_without_a_marker biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_resolves_a_past_insert_change_on_mane_numbering biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_resolves_the_naming_annotation_without_a_marker biomcp-0.9.3> PASS [ 9.640s] biomcp-cli cli::article::tests::entities_disease_links::article_entities_disease_rows_link_the_named_disease_or_search biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_without_matching_hits_keeps_the_search_suggestion biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::get::protein_change_tests::requested_reference_residue_parses_compact_substitutions biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_returns_the_mane_named_candidate_of_two_alias_hits biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_skips_the_note_when_the_hit_spells_the_request biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::get::tests::cancerhotspots_checked_absence_is_empty_not_data biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::variant::get::tests::cancerhotspots_enrichment_uses_requested_change_not_resolved_hgvsp biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::get::tests::cancerhotspots_upstream_failure_omits_recurrence_and_preserves_cbioportal biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::tests::agreeing_record_level_classification_drops_the_cached_copy_note biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::tests::civic_molecular_profile_name_sends_the_one_letter_change biomcp-0.9.3> PASS [ 0.014s] biomcp-cli entities::variant::get::tests::coordinate_less_prediction_is_inapplicable_without_alphagenome_credit biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::variant::get::tests::declared_assembly_conflicting_with_the_prefix_refuses_naming_both_builds biomcp-0.9.3> PASS [ 0.029s] biomcp-cli entities::variant::get::tests::declared_assembly_agreeing_with_the_prefix_resolves_the_one_build_hit biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::variant::get::tests::default_section_stripping_preserves_cached_civic_but_removes_graphql_context biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::variant::get::tests::declared_assembly_hg38_on_a_grch37_only_coordinate_refuses_as_not_found biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::variant::get::tests::gwas_only_request_detection_matches_section_flags biomcp-0.9.3> PASS [ 2.371s] biomcp-cli entities::gene::gencc::tests::first_publication_crash_recovery_never_requires_an_incomplete_generation biomcp-0.9.3> PASS [ 0.035s] biomcp-cli entities::variant::get::tests::declared_assembly_hg19_on_the_grch37_only_coordinate_finds_braf biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::get::tests::exact_helper_candidate_selection_rejects_conflicts_and_missing_evidence biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::tests::gwas_only_request_returns_variant_when_gwas_is_unavailable biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::variant::get::tests::gwas_only_variant_stub_keeps_requested_rsid biomcp-0.9.3> PASS [ 1.966s] biomcp-cli entities::gene::gencc::tests::state_only_304_and_failure_crashes_select_one_whole_visible_record biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::get::tests::indirect_clinvar_fallback_preserves_accession_freshness_and_submitter_count biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::tests::headline_follows_record_level_germline_classification_and_names_ncbi biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::get::tests::known_build_not_found_names_the_build_and_upstream_status biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::get::tests::parse_sections_all_excludes_key_required_prediction biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::variant::get::tests::parse_sections_supports_new_variant_sections biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::get::tests::population_result_names_the_pinned_dataset_and_keeps_sources_separate biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::get::tests::population_status_json_keeps_explicit_null_exome_and_genome_results biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::get::tests::record_without_germline_classification_keeps_derived_value_labeled biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::get::tests::therapies_from_oncokb_truncation_shows_count biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::variant::get::tests::ticket_589_variant_preflights_are_inapplicable_without_provider_credit biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::variant::get::tests::transcript_hgvs_fallback_queries_clinvar_coding_identity biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::variant::get::tests::transcript_hgvs_get_and_normalize_share_normalized_genomic_identity biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::variant::get::tests::transcript_hgvs_normalization_failure_suggests_variant_normalize biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::get::tests::variant_detail_coordinate_serializes_with_its_answering_build biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::get::tests::variant_json_omits_legacy_name_when_absent biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::get::tests::workflow_signal_detects_clinvar_metadata_before_section_stripping biomcp-0.9.3> PASS [ 0.029s] biomcp-cli entities::variant::gwas::tests::a_retired_endpoint_degrades_the_rendered_gwas_section_with_no_retry biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::gwas::tests::collect_supporting_pmids_dedupes_case_insensitively biomcp-0.9.3> PASS [ 4.709s] biomcp-cli entities::disease::get::tests::stale_search_json_carries_the_cache_age_in_the_meta_notes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::gwas::tests::combined_gene_and_trait_rows_are_an_intersection_before_p_value_filtering biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::gwas::tests::disjoint_gene_and_trait_rows_return_no_union_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::gwas::tests::malformed_exact_p_value_parts_are_bounded_and_fall_back_truthfully biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::gwas::tests::scientific_comparison_is_safe_for_extreme_in_memory_exponents biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::gwas::tests::search_gwas_page_rejects_invalid_probability_before_client_construction biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::gwas::tests::the_retired_error_class_is_the_one_fact_of_retirement biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::gwas::tests::underflowed_exact_p_values_remain_truthful_and_filterable biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::variant::normalization::tests::accepts_first_slice_transcript_coding_hgvs biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::normalization::tests::batch_limit_is_rejected_before_any_request_is_constructed biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::normalization::tests::car_alias_metadata_describes_distinct_returned_aliases biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::normalization::tests::car_grammar_accepts_only_versioned_refseq_coding_or_genomic_hgvs biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::variant::normalization::tests::invalid_grammar_is_rejected_before_any_request_is_constructed biomcp-0.9.3> PASS [ 0.351s] biomcp-cli entities::variant::get::tests::civic_reports_the_accepted_evidence_the_one_letter_name_finds biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::variant::normalization::tests::rejects_non_transcript_guardrail_inputs biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::variant::resolution::tests::a_gene_name_alone_is_not_reported_as_an_invalid_amino_acid biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::classify_variant_input_detects_search_only_shorthand biomcp-0.9.3> PASS [ 0.333s] biomcp-cli entities::variant::get::tests::protein_change_get_checks_the_canonical_protein_before_answering biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::classify_variant_input_detects_transcript_coding_hgvs_before_rejecting biomcp-0.9.3> PASS [ 0.329s] biomcp-cli entities::variant::get::tests::transcript_hgvs_alias_refuses_hits_without_the_exact_coding_alias biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::variant::resolution::tests::classify_variant_input_normalizes_long_form_single_token_protein_change biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::resolution::tests::default_assembly_precedence_is_explicit_then_environment_then_grch38 biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::variant::resolution::tests::coordinate_normalizer_handles_aliases_and_alternate_spellings biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::clinvar_style_names_refuse_with_the_colon_working_form biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::resolution::tests::every_protein_spelling_refuses_invalid_residue_letters biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::resolution::tests::identity_comparison_accepts_identical_complex_protein_hgvs biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::resolution::tests::identity_comparison_is_indeterminate_for_missing_or_unlinked_annotation_evidence biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::resolution::tests::identity_comparison_preserves_provider_alias_and_checks_every_known_field biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_accepts_gene_protein_range_deletions biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_accepts_prefixed_short_gene_protein_change biomcp-0.9.3> PASS [ 0.019s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_accepts_long_form_gene_protein_change biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_accepts_genomic_indel_and_repeat_forms biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_egfr_l858r biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_normalizes_uppercase_rsid_prefix biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_kras_g12c biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_examples biomcp-0.9.3> PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_points_transcript_hgvs_to_normalize_when_direct_parse_is_used biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_points_long_form_single_token_to_search_variant biomcp-0.9.3> PASS [ 0.022s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_points_search_only_shorthand_to_search_variant biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_refuses_protein_change_with_invalid_residue_letter biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::resolution::tests::protein_normalization_preserves_identity_across_supported_spellings biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::variant::resolution::tests::protein_range_deletions_normalize_across_one_and_three_letter_spellings biomcp-0.9.3> PASS [ 0.015s] biomcp-cli entities::variant::resolution::tests::structured_article_identity_accepts_refseq_forms_and_preserves_chr_compatibility biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_suggests_search_for_complex_alteration_text biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::resolution::tests::structured_article_identity_requires_refseq_build_and_rejects_duplicate_components biomcp-0.9.3> PASS [ 0.431s] biomcp-cli entities::variant::get::tests::transcript_hgvs_alias_resolves_intronic_deletion_when_normalizers_refuse biomcp-0.9.3> PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::unsupported_variant_error_describes_supported_indel_forms biomcp-0.9.3> PASS [ 0.020s] biomcp-cli entities::variant::resolution::tests::uppercase_three_letter_residues_remain_valid biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::search::tests::absent_and_null_annotation_sets_are_exact_empty_complete biomcp-0.9.3> PASS [ 0.023s] biomcp-cli entities::variant::resolution::tests::variant_identity_inputs_refuse_transcript_anchor_half_parses biomcp-0.9.3> PASS [ 0.018s] biomcp-cli entities::variant::resolution::tests::versioned_refseq_rows_normalize_to_their_chromosome_and_build biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::search::tests::article_provider_aggregation_follows_precedence_and_refseq_fallback_states biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::search::tests::article_provider_aggregation_is_order_independent_and_selects_stable_alias biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::search::tests::article_provider_aggregation_marks_distinct_compatible_and_indeterminate_sets biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::search::tests::candidate_scan_exhaustion_requires_empty_page_or_reaching_provider_total biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::search::tests::every_snpeff_failure_bound_is_empty_false_across_exact_and_safe_for_broad_get biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::search::tests::exact_aggregation_marks_missing_identity_evidence_indeterminate biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::search::tests::exact_aggregation_filters_before_pagination_and_keeps_cap_truthful biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::search::tests::exact_aggregation_retains_identical_complex_protein_hgvs biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::variant::search::tests::filter_statuses_describe_evaluation_and_keep_canonical_order biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::search::tests::exact_projection_keeps_paired_snpeff_roles_separate_from_dbnsfp_match biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::search::tests::malformed_snpeff_isolated_from_exact_broad_and_get_siblings biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::search::tests::quality_score_prioritizes_significance_and_frequency biomcp-0.9.3> PASS [ 0.010s] biomcp-cli entities::variant::search::tests::resolution_status_follows_compatible_indeterminate_and_exhaustive_truth_table biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::search::tests::normalized_source_identity_key_deduplicates_alias_order_and_spelling biomcp-0.9.3> PASS [ 0.017s] biomcp-cli entities::variant::search::tests::matched_role_requires_one_complete_transcript_specific_tuple biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::search::tests::search_query_summary_includes_hgvsc_and_rsid biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::variant::search::tests::search_query_summary_includes_residue_alias_marker biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::search::tests::split_snpeff_fields_do_not_inherit_dbnsfp_match_role biomcp-0.9.3> PASS [ 0.013s] biomcp-cli entities::variant::search::tests::transcript_annotation_page_budget_is_all_or_nothing_at_256_kib biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::structure::tests::cancerhotspots_result_matrix_classifies_contact_and_applicability biomcp-0.9.3> PASS [ 0.009s] biomcp-cli entities::variant::structure::tests::domain_result_matrix_classifies_contact_and_applicability biomcp-0.9.3> PASS [ 0.007s] biomcp-cli entities::variant::structure::tests::hgvsp_position_extracts_three_letter_short_and_accession_prefixed_aliases biomcp-0.9.3> PASS [ 6.430s] biomcp-cli entities::article::variant_search::tests::fulltext_annotations_preserve_typed_identity_requirements biomcp-0.9.3> PASS [ 0.011s] biomcp-cli entities::variant::structure::tests::mismatched_reference_residue_leaves_no_placement_and_reports_every_alias_position biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::structure::tests::normalize_hgvsp_change_matches_accession_prefixed_aliases biomcp-0.9.3> PASS [ 0.008s] biomcp-cli entities::variant::structure::tests::reference_residue_check_verifies_mismatches_and_bounds biomcp-0.9.3> PASS [ 0.009s] biomcp-cli error::tests::api_key_rejected_display_includes_recovery_guidance biomcp-0.9.3> PASS [ 0.012s] biomcp-cli entities::variant::structure::tests::verified_reference_residue_keeps_the_exact_match_placement biomcp-0.9.3> PASS [ 0.010s] biomcp-cli error::tests::api_key_required_display_includes_env_var_and_docs biomcp-0.9.3> PASS [ 0.010s] biomcp-cli error::tests::article_search_deadline_projection_names_the_deadline biomcp-0.9.3> PASS [ 0.008s] biomcp-cli error::tests::citation_evidence_deadline_names_the_command_and_never_a_fake_source biomcp-0.9.3> PASS [ 0.008s] biomcp-cli error::tests::citation_evidence_refusals_name_their_providers_and_reasons biomcp-0.9.3> PASS [ 0.009s] biomcp-cli error::tests::clingen_provider_labels_and_legacy_aliases_remain_distinct biomcp-0.9.3> PASS [ 0.009s] biomcp-cli error::tests::ddinter_bundle_read_errors_render_with_their_file_detail biomcp-0.9.3> PASS [ 0.008s] biomcp-cli error::tests::ddinter_decode_failures_name_the_api biomcp-0.9.3> PASS [ 0.007s] biomcp-cli error::tests::ddinter_download_failures_keep_the_generic_line_and_leak_no_body biomcp-0.9.3> PASS [ 0.009s] biomcp-cli error::tests::ddinter_html_download_replies_name_the_download_not_the_bundle_read biomcp-0.9.3> PASS [ 0.010s] biomcp-cli error::tests::external_failure_message_bound_is_utf8_safe_at_and_after_512_bytes biomcp-0.9.3> PASS [ 0.008s] biomcp-cli error::tests::external_failure_projection_never_exposes_the_request_url biomcp-0.9.3> PASS [ 0.009s] biomcp-cli error::tests::external_failure_reports_local_io_kind_and_code_without_paths biomcp-0.9.3> PASS [ 0.009s] biomcp-cli error::tests::human_source_errors_share_safe_projection biomcp-0.9.3> PASS [ 0.009s] biomcp-cli error::tests::not_found_display_includes_suggestion biomcp-0.9.3> PASS [ 0.009s] biomcp-cli error::tests::source_policy_inventory_is_bounded_and_actionable biomcp-0.9.3> PASS [ 0.010s] biomcp-cli error::tests::source_wrapper_delegates_classifiers_for_every_wrappable_family biomcp-0.9.3> PASS [ 0.008s] biomcp-cli error::tests::source_wrapper_never_projects_raw_non_source_fields biomcp-0.9.3> PASS [ 0.010s] biomcp-cli error::tests::who_pq_download_failures_keep_the_generic_line_and_leak_no_body biomcp-0.9.3> PASS [ 0.009s] biomcp-cli error::tests::who_pq_header_mismatches_render_with_file_and_column_detail biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::body_exhaustion_and_stream_errors_have_distinct_statuses biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::explicit_http_policy_rejects_invalid_entries_before_listening biomcp-0.9.3> PASS [ 0.008s] biomcp-cli mcp::shell::http_server::tests::global_host_policy_matches_names_ports_case_and_ipv6 biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::index_handler_reports_streamable_http_surface biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::loopback_http_defaults_to_local_host_headers biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::non_loopback_http_requires_an_explicit_policy biomcp-0.9.3> PASS [ 0.009s] biomcp-cli mcp::shell::tests::a_conflicting_scalar_bound_panics_instead_of_first_value_wins biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::tests::a_one_sided_max_length_clash_panics_instead_of_narrowing biomcp-0.9.3> PASS [ 0.009s] biomcp-cli mcp::shell::tests::a_one_sided_unique_items_clash_panics_instead_of_narrowing biomcp-0.9.3> PASS [ 0.009s] biomcp-cli mcp::shell::tests::a_type_clash_between_branches_panics_instead_of_first_value_wins biomcp-0.9.3> PASS [ 0.009s] biomcp-cli mcp::shell::tests::an_enum_on_one_side_of_a_same_type_merge_panics biomcp-0.9.3> PASS [ 0.009s] biomcp-cli mcp::shell::tests::flat_pairs_keep_each_arms_constraints_without_panicking biomcp-0.9.3> PASS [ 0.011s] biomcp-cli mcp::shell::tests::cache_family_rejection_message_mentions_local_path_disclosure biomcp-0.9.3> PASS [ 0.018s] biomcp-cli mcp::shell::tests::binary_downloads_are_rejected_but_manifests_remain_allowed biomcp-0.9.3> PASS [ 0.014s] biomcp-cli mcp::shell::tests::generic_mcp_rejection_message_for_args_stays_read_only_for_mutating_commands biomcp-0.9.3> PASS [ 0.013s] biomcp-cli mcp::shell::tests::mcp_full_text_path_redaction_is_field_driven_for_text_and_json biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::tests::mcp_human_error_and_resource_boundaries_remove_terminal_controls biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::tests::raw_mcp_local_input_inventory_matches_the_cli_surface biomcp-0.9.3> PASS [ 0.025s] biomcp-cli mcp::shell::tests::raw_local_input_rejection_covers_every_spelling_and_variant_route biomcp-0.9.3> PASS [ 9.984s] biomcp-cli cli::stale_json_note_tests::no_cache_skips_the_cache_for_the_spawned_clingen_fetch biomcp-0.9.3> PASS [ 0.016s] biomcp-cli mcp::shell::tests::raw_mcp_rejects_unparseable_commands_before_execution biomcp-0.9.3> PASS [ 7.982s] biomcp-cli entities::article::search::tests::deadline::failed_primaries_still_return_answered_rows biomcp-0.9.3> PASS [ 0.012s] biomcp-cli mcp::shell::tests::typed_branches_stay_entity_specific biomcp-0.9.3> PASS [ 0.014s] biomcp-cli mcp::shell::tests::typed_gene_cspec_rejects_version_and_capture_together_before_network_access biomcp-0.9.3> PASS [ 0.017s] biomcp-cli mcp::shell::tests::ticket_1120::raw_biomcp_reports_reversed_search_before_the_generic_fallback biomcp-0.9.3> PASS [ 0.665s] biomcp-cli entities::variant::get::tests::population_request_requires_a_grch38_genomic_coordinate biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::tests::typed_gene_cspec_schema_exposes_bounded_capture_paging_without_raw_bytes biomcp-0.9.3> PASS [ 0.012s] biomcp-cli mcp::shell::tests::typed_search_maps_each_published_entity_and_rejects_schema_mismatches biomcp-0.9.3> PASS [ 0.012s] biomcp-cli mcp::shell::tests::typed_schemas_publish_flat_roots_and_reject_bad_input biomcp-0.9.3> PASS [ 0.011s] biomcp-cli mcp::shell::tests::typed_search_rejects_wrong_type_pagination_and_lists_valid_entities biomcp-0.9.3> PASS [ 0.009s] biomcp-cli mcp::shell::tests::typed_variant_articles_preserves_article_resolution_fields_and_nullability biomcp-0.9.3> PASS [ 0.014s] biomcp-cli mcp::shell::tests::typed_variant_articles_executes_in_memory_without_stdin_or_paths biomcp-0.9.3> PASS [ 0.009s] biomcp-cli mcp::shell::tests::typed_variant_articles_schema_is_bounded_and_has_structured_identity_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli mcp::shell::tests::typed_variant_car_schema_is_bounded biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::trial_phase::tests::schema_advertises_each_documented_phase_spelling biomcp-0.9.3> PASS [ 0.047s] biomcp-cli mcp::shell::tests::ticket_1120::raw_biomcp_tool_preserves_an_omitted_ctgov_total_as_null biomcp-0.9.3> PASS [ 0.012s] biomcp-cli mcp::shell::typed_get_tests::adverse_event_schema_and_mapper_deduplicate_sections_only_for_that_entity biomcp-0.9.3> PASS [ 0.012s] biomcp-cli mcp::shell::typed_get_tests::cli_catalog_gettable_inventory_matches_clap_get_subcommands biomcp-0.9.3> PASS [ 10.400s] biomcp-cli cli::article::tests::entities_disease_links::article_entities_skin_neoplasms_row_keeps_its_search_command biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::mcp_json_removes_every_path_shape_and_reserializes_on_presence biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::mcp_json_without_local_paths_preserves_cli_bytes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::shared_mcp_error_conversion_hides_trial_design_details biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::typed_article_prose_keyword_json_adds_only_the_output_flag biomcp-0.9.3> PASS [ 0.011s] biomcp-cli mcp::shell::typed_get_tests::typed_article_get_maps_the_pdf_option_to_the_cli_flag biomcp-0.9.3> PASS [ 0.120s] biomcp-cli mcp::shell::tests::mcp_allowlist_blocks_mutating_commands biomcp-0.9.3> PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::typed_variant_erepo_schema_prevents_selector_mixing_before_calls biomcp-0.9.3> PASS [ 0.013s] biomcp-cli mcp::shell::typed_get_tests::typed_get_schema_and_mapper_match_independent_cli_catalog_oracle biomcp-0.9.3> PASS [ 0.009s] biomcp-cli next_command::tests::renders_each_argument_as_its_own_shell_word biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::chart::tests::chart_text_removes_untrusted_controls_without_touching_unicode biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::chart::tests::bar_family_renderers_produce_svg biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::chart::tests::co_occurrence_heatmap_rejects_palette_override biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::chart::tests::co_occurrence_heatmap_renders_inline_svg biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::chart::tests::co_occurrence_heatmap_respects_custom_dimensions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::chart::tests::compare_chart_validation_lists_valid_types biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::chart::tests::display_mutation_class_maps_known_and_passes_through_unknown biomcp-0.9.3> PASS [ 0.012s] biomcp-cli render::chart::tests::expression_scatter_renders_inline_svg_and_rejects_empty_points biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::chart::tests::inline_svg_output_respects_custom_dimensions biomcp-0.9.3> PASS [ 0.012s] biomcp-cli render::chart::tests::heatmap_and_stacked_bar_svg_outputs_write_files biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::chart::tests::inline_svg_target_returns_svg_markup biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::chart::tests::mutation_and_cna_svg_output_use_human_readable_labels biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::chart::tests::mutation_compare_stacked_bar_renders_inline_svg biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::chart::tests::mutation_compare_stacked_bar_uses_integer_sample_ticks biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::chart::tests::mutation_compare_validation_lists_stacked_bar biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::chart::tests::mutation_waterfall_renders_inline_svg biomcp-0.9.3> PASS [ 0.088s] biomcp-cli mcp::shell::typed_get_tests::typed_and_raw_nci_trial_get_preserve_all_recorded_assignments biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::chart::tests::output_target_validation_rejects_incompatible_sizing_flags biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::chart::tests::query_chart_validation_lists_valid_types biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::chart::tests::render_survival_chart_returns_error_when_all_groups_have_empty_km_points biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::chart::tests::standalone_chart_validation_rejects_invalid_survival_chart biomcp-0.9.3> PASS [ 0.019s] biomcp-cli render::chart::tests::pie_histogram_density_and_distribution_renderers_produce_terminal_output biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::chart::tests::rendered_terminal_and_svg_charts_sanitize_dynamic_text_before_the_backend biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::chart::tests::structural_variant_chart_validation_reports_unsupported_surface biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::chart::tests::survival_svg_output_supports_kaplan_meier_curves biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::human::tests::applies_inline_and_document_control_policies biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::chart::tests::terminal_chart_respects_custom_cols_and_rows biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::human::tests::provider_sanitizer_collapses_maximal_ignorable_runs biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::human::tests::provider_sanitizer_control_fixtures_are_byte_exact biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::human::tests::is_idempotent_without_collapsing_authored_spaces biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::human::tests::provider_sanitizer_counts_a_replacement_as_retained_base biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::human::tests::provider_sanitizer_encodes_every_non_literal_ascii_graphic biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::human::tests::provider_sanitizer_inserts_dotted_circle_only_before_orphan_marks biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::human::tests::provider_sanitizer_matches_unicode_16_boundaries biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::human::tests::removes_bidi_controls_and_preserves_biomedical_unicode biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::json::json_error_tests::who_pq_sync_failure_json_recovery_carries_no_local_data_path biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::human::tests::sanitizes_terminal_sequence_families biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::json::tests::disease_unavailable_outcome_and_provenance_agree_without_source_credit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::json::tests::input_limit_error_exposes_only_its_stable_byte_budget biomcp-0.9.3> PASS [ 0.332s] biomcp-cli entities::variant::structure::tests::mutyh_g368d_on_q9uif7_never_reports_position_368_as_a_placement biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::json::tests::json_render_drug_entity_omits_family_fields_when_absent biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::json::tests::json_render_drug_entity biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::json::tests::json_render_gene_entity biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::json::tests::json_render_gene_entity_with_sparse_disgenet_omits_optional_fields biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::json::tests::source_errors_include_normalized_source_and_safe_recovery biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::json::tests::structured_error_messages_omit_external_and_local_details biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::json::tests::to_alias_suggestion_json_includes_alias_resolution_and_next_commands biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::json::tests::to_alias_suggestion_json_includes_ambiguous_resolution biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::json::tests::to_discover_json_adds_discover_meta_aliases biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::json::tests::to_discover_json_keeps_relational_redirect_commands_only_under_meta biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_adds_meta_and_flattens_entity biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_filters_blank_evidence_rows biomcp-0.9.3> PASS [ 0.165s] biomcp-cli mcp::shell::typed_get_tests::typed_and_raw_trial_get_return_exact_age_objects biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::json::tests::to_entity_json_filters_blank_section_source_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_value_adds_meta_and_flattens_entity biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::json::tests::to_entity_json_with_suggestions_keeps_empty_suggestions_array biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_with_suggestions_adds_suggestions_meta biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_with_workflow_adds_descriptor_without_losing_existing_meta biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::json::tests::to_pretty_lexically_escapes_terminal_controls_without_changing_values biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::json::tests::to_pretty_serializes_with_indentation biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::json::tests::typed_body_limit_preserves_legacy_api_error_code_and_message biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::json::tests::to_variant_guidance_json_includes_alias_resolution_and_next_commands biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_count_markdown_renders_bucket_rows biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_card_searches_unverified_report_drug_name biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_search_markdown_renders_contextual_empty_state biomcp-0.9.3> PASS [ 0.027s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_markdown_includes_openfda_sections biomcp-0.9.3> PASS [ 0.027s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_search_markdown_can_label_aggregate_summary biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_search_markdown_renders_trial_fallback_section biomcp-0.9.3> PASS [ 0.027s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_search_markdown_renders_summary_and_filters biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_summary_context_names_the_exact_divisor_and_is_backward_compatible biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::adverse_event::tests::vaers_only_markdown_renders_snake_case_status_labels biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_subset_markdown_keeps_identity_and_only_selected_bodies biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::adverse_event::tests::combined_adverse_event_search_markdown_skips_query_not_vaccine_status biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::adverse_event::tests::combined_adverse_event_search_markdown_appends_vaers_summary_for_unavailable_status biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::adverse_event::tests::device_event_renderers_include_openfda_content biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::article::tests::article_batch_markdown_renders_compact_rows biomcp-0.9.3> PASS [ 0.250s] biomcp-cli mcp::shell::typed_get_tests::cli_typed_and_raw_trial_get_return_exact_structured_references biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::adverse_event::tests::recall_search_markdown_renders_result_table biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::article::tests::article_graph_markdown_renders_expected_table_headers biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::markdown::article::tests::article_ranking_why_rescue_composes_with_lexical_reason biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::article::tests::article_ranking_why_hybrid_includes_score_and_lexical_context biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::article::tests::article_ranking_why_semantic_includes_score_and_lexical_context biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::article::tests::article_entities_markdown_uses_safe_gene_search_commands biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::article::tests::article_ranking_why_tier1_mixed_shows_title_plus_abstract biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::article::tests::article_recommendations_markdown_sanitizes_provider_fields biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::article::tests::article_markdown_renders_resolved_fulltext_source_label biomcp-0.9.3> PASS [ 0.034s] biomcp-cli render::markdown::article::tests::article_entities_markdown_prints_get_commands_for_accepted_identifiers biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::article::tests::article_markdown_renders_semantic_scholar_and_indexing_sections biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::article::tests::article_related_tables_render_typed_identifiers biomcp-0.9.3> PASS [ 0.020s] biomcp-cli render::markdown::article::tests::article_search_markdown_renders_each_typed_identifier biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::article::tests::article_search_markdown_prepends_debug_plan_block biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::article::tests::article_search_markdown_renders_date_sort_warning biomcp-0.9.3> PASS [ 0.028s] biomcp-cli render::markdown::article::tests::article_search_markdown_omits_index_footer_when_no_rows_have_it biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::article::tests::article_search_markdown_preserves_rank_order_and_shows_rationale biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::article::tests::article_search_markdown_renders_non_semantic_source_status biomcp-0.9.3> PASS [ 0.035s] biomcp-cli render::markdown::article::tests::article_search_markdown_includes_cross_entity_discover_hint_for_short_keyword_phrase biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::article::tests::format_newest_indexed_footer_clamps_future_dates_to_zero_days biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::article::tests::format_newest_indexed_footer_is_deterministic biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::author::full_page_tests::hostile_provider_values_cannot_inject_markdown_structure biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::author::full_page_tests::rich_markdown_pins_the_exact_template_for_a_complete_paper biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_detail_markdown_is_the_frozen_template biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::author::full_page_tests::rich_markdown_sentinels_and_two_blocks_with_continuation biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_detail_markdown_sanitizes_the_provider_display_name biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_papers_markdown_empty_page_has_no_work_block_or_see_also biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_papers_markdown_is_the_frozen_nonterminal_template biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::article::tests::ticket_377_article_renderer_envelope_contracts_markdown_status biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::author::tests::affiliation_preview_is_bounded_without_splitting_utf8 biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_papers_markdown_sanitizes_provider_text biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::author::tests::detail_markdown_and_json_present_the_same_follow_up_commands biomcp-0.9.3> PASS [ 0.036s] biomcp-cli render::markdown::article::tests::article_search_markdown_renders_related_block_before_pagination biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::cell_line::tests::a_cell_line_chembl_does_not_list_says_so_and_prints_no_row biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::cell_line::tests::search_markdown_shows_the_match_columns_and_the_attribution biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::cell_line::tests::a_full_window_note_is_printed_once biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::cell_line::tests::the_card_names_the_accession_the_rrid_and_the_species biomcp-0.9.3> PASS [ 0.533s] biomcp-cli entities::variant::structure::tests::braf_v600e_on_p15056_keeps_the_verified_position_600 biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::cell_line::tests::an_unavailable_chembl_section_renders_no_row biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::cell_line::tests::the_card_ends_with_the_attribution_line biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::cell_line::tests::the_card_offers_the_two_section_commands biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::cell_line::tests::the_chembl_section_prints_one_row_and_the_release_attribution biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::cell_line::tests::the_xrefs_section_prints_every_key_including_the_empty_ones biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_renders_regulatory_section_rows biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_keeps_regulatory_hidden_for_all_expansion biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_renders_regulatory_empty_state_when_requested biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_renders_requested_sections_and_truthful_empty_states biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_renders_who_summary_fields_and_supported_sections_only biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_rows_caps_genes_and_conditions_with_overflow_marker biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_rows_escapes_markdown_table_cells biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_reports_unavailable_regulatory_state_in_band biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_markdown_adds_escaped_disease_match_column_only_when_present biomcp-0.9.3> PASS [ 0.020s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_markdown_shows_source_column_and_detail_hint biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_markdown_does_not_render_recovery_for_high_offset_empty_page biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_markdown_renders_true_zero_result_recovery biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::discovery::tests::search_all_markdown_counts_only_keeps_links_without_row_headers biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::discovery::tests::render_discover_renders_grouped_concepts_and_plain_language biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::discovery::tests::ticket_377_discover_renderer_envelope_contracts biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::discovery::tests::search_all_markdown_renders_section_note biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::disease::tests::disease_markdown_all_keeps_opt_in_sections_hidden biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_clinical_features_empty_state_is_truthful biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::disease::tests::disease_markdown_disgenet_renders_sparse_optional_fields biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_funding_renders_truthful_notes_without_table biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_markdown_heading_and_provenance_credit_the_disgenet_seed biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::disease::tests::disease_markdown_heading_and_provenance_credit_the_fallback_source biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_phenotypes_section_renders_definition_hint_when_key_features_missing biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_markdown_links_source_cells_and_footer_evidence_urls biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_phenotypes_section_without_definition_only_shows_completeness_note biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::disease::tests::disease_markdown_phenotypes_section_renders_key_features biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_markdown_preserves_full_definition_text biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_clinical_features_section biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_opentargets_scores_in_summary_and_genes_table biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_diagnostics_note_then_shell_safe_search_command biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_ot_only_gene_association_table biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_survival_summary_and_note biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_reports_unavailable_source_state_in_band biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_top_variant_summary biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_markdown_section_only_shows_disgenet_section biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::markdown::drug::tests::drug_interaction_report_markdown_renders_not_in_coverage_signal biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_search_empty_state_includes_discover_hint biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::drug::tests::all_region_search_places_exact_continuation_under_the_matching_region biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::disease::tests::disease_search_empty_state_uses_raw_query_in_discover_hint biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_search_fallback_renders_provenance_columns biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::ticket_377_disease_renderer_envelope_contracts biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::drug_markdown_header_drops_empty_fields_instead_of_printing_fillers biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::drug::tests::drug_markdown_omits_target_family_for_mixed_targets biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::drug_markdown_shows_target_family_and_members_when_present biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::drug_markdown_renders_variant_targets_as_additive_line biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::drug::tests::drug_markdown_uses_label_interaction_text_before_public_unavailable_fallback biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::drug::tests::drug_markdown_uses_truthful_public_unavailable_interactions_message biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::drug::tests::drug_search_all_region_degraded_who_section_states_the_reason_instead_of_a_bare_negative biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_eu_all_suppresses_us_header_facts biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_all_keeps_us_and_eu_blocks_separate biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::markdown::drug::tests::drug_search_all_region_empty_state_calls_out_regulatory_absence biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::drug::tests::drug_search_all_region_empty_state_includes_discover_only_when_both_regions_are_empty biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::drug::tests::drug_search_all_region_markdown_includes_who_block biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::drug::tests::drug_search_empty_state_frames_zero_indication_miss_as_regulatory_signal biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::drug::tests::drug_search_eu_empty_state_includes_discover_hint biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::drug::tests::drug_search_who_vaccine_markdown_uses_vaccine_table_and_no_get_footer biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_eu_safety_shows_truthful_empty_subsections biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_who_renders_regulatory_block biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::drug::tests::eu_search_markdown_escapes_every_dynamic_match_component biomcp-0.9.3> PASS [ 0.027s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_who_names_the_gap_when_the_bundle_cannot_be_read biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::drug::tests::drug_search_standard_empty_state_includes_discover_hint biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::drug::tests::label_sections::label_pointer_prints_when_the_view_cut_a_section biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::label_sections::label_pointer_quotes_multi_word_drug_names biomcp-0.9.3> PASS [ 0.027s] biomcp-cli render::markdown::drug::tests::label_sections::a_card_without_label_content_prints_no_fda_label_heading biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::label_sections::label_pointer_stays_silent_when_nothing_was_cut biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::drug::tests::label_sections::missing_label_reason_prints_from_the_label_section_outcome biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::label_warnings::combined_label_and_safety_render_one_boxed_warning_heading biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::label_warnings::drug_markdown_renders_label_boxed_warning_ahead_of_other_label_sections biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::drug_regulatory::fda_orphan_tests::empty_and_unavailable_have_truthful_recovery biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::drug_regulatory::fda_orphan_tests::hostile_provider_text_cannot_create_markdown_structure biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::evidence::tests::disease_evidence_urls_include_record_links biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::label_warnings::drug_markdown_us_safety_block_renders_boxed_warning_first biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::evidence::tests::drug_evidence_urls_include_chembl biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::markdown::evidence::tests::drug_evidence_urls_include_faers_and_dailymed_when_sections_exist biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::evidence::tests::gene_evidence_urls_include_ensembl_and_omim biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::evidence::tests::variant_evidence_urls_include_dbsnp_and_cosmic biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::label_warnings::raw_label_and_safety_together_print_over_cap_warnings_once biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::drug::tests::label_warnings::raw_label_and_safety_together_print_the_ordinary_warnings_once biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::drug::tests::label_warnings::truncated_safety_warning_links_exact_dailymed_set_when_label_is_absent biomcp-0.9.3> PASS [ 0.015s] biomcp-cli render::markdown::evidence::tests::variant_evidence_urls_fall_back_to_hgvs_slug_for_population_data biomcp-0.9.3> PASS [ 0.015s] biomcp-cli render::markdown::evidence::tests::variant_evidence_urls_include_gnomad_for_population_data biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::gene::tests::gencc_markdown_escapes_provider_cells_and_angle_delimits_links biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_cell_lines_markdown_prints_the_rows_and_the_attribution_line biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_markdown_all_keeps_opt_in_sections_hidden biomcp-0.9.3> PASS [ 0.027s] biomcp-cli render::markdown::gene::tests::clingen_markdown_keeps_partial_evidence_and_distinguishes_missing_dosage biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_markdown_disgenet_renders_sparse_optional_fields biomcp-0.9.3> PASS [ 0.020s] biomcp-cli render::markdown::gene::tests::gene_markdown_funding_renders_linked_rows_and_currency biomcp-0.9.3> PASS [ 0.027s] biomcp-cli render::markdown::gene::tests::gene_cell_lines_markdown_shows_a_dash_for_an_unresolved_name_and_prints_notes biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::gene::tests::gene_markdown_includes_evidence_links biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::gene::tests::gene_markdown_omits_protein_alternative_names_when_absent biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::gene::tests::gene_markdown_pathways_show_source_labels biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_combined_dgidb_and_opentargets_druggability biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::gene::tests::gene_markdown_preserves_full_protein_function_text biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_dgidb_interaction_table_alongside_opentargets_data biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_hpa_section_details biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_protein_alternative_names biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_protein_isoforms_with_count_and_displayed_length biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::gene::tests::gene_markdown_section_only_shows_constraint_section biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_markdown_section_only_shows_new_gene_enrichment_sections biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_markdown_without_isoforms_keeps_protein_lines_contiguous biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::ticket_406_coordinate_outputs_carry_genome_build_context biomcp-0.9.3> PASS [ 0.027s] biomcp-cli render::markdown::gene::tests::gene_markdown_section_only_shows_disgenet_section biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::pathway::tests::pathway_markdown_hides_genes_section_when_genes_are_empty biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::pathway::tests::pathway_markdown_uses_source_and_source_specific_evidence_url biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::pathway::tests::pathway_search_markdown_shows_source_column biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::pgx::tests::pgx_markdown_includes_evidence_links biomcp-0.9.3> PASS [ 0.017s] biomcp-cli render::markdown::related::tests::article_search_related_results_do_not_derive_entity_get_from_keyword_tokens biomcp-0.9.3> PASS [ 0.015s] biomcp-cli render::markdown::related::tests::article_search_related_results_do_not_emit_braf_v600e_gene_get_without_exact_command biomcp-0.9.3> PASS [ 0.020s] biomcp-cli render::markdown::related::tests::article_search_next_commands_adds_list_for_exact_commands_without_result_rows biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::pgx::tests::recommendations_render_genotypes_and_page_drug_coverage biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::pgx::tests::recommendations_only_hides_interactions_and_advertises_its_offset biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::protein::tests::protein_markdown_renders_complexes_summary_and_detail_bullets biomcp-0.9.3> PASS [ 0.018s] biomcp-cli render::markdown::related::tests::article_search_related_results_include_exact_commands_without_result_rows biomcp-0.9.3> PASS [ 0.019s] biomcp-cli render::markdown::related::tests::article_search_related_results_include_primary_article_and_exact_commands biomcp-0.9.3> PASS [ 0.018s] biomcp-cli render::markdown::related::tests::article_search_related_results_omit_unsupported_provider_identifier biomcp-0.9.3> PASS [ 0.019s] biomcp-cli render::markdown::related::tests::article_search_related_results_include_year_refinement_hint_when_unbounded biomcp-0.9.3> PASS [ 0.018s] biomcp-cli render::markdown::related::tests::article_search_related_results_preserve_source_filter_in_year_refinement biomcp-0.9.3> PASS [ 0.019s] biomcp-cli render::markdown::related::tests::article_search_related_results_reject_non_exact_variant_keywords biomcp-0.9.3> PASS [ 0.015s] biomcp-cli render::markdown::related::tests::article_search_related_results_skip_year_refinement_without_visible_years biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::related::tests::article_search_related_results_skip_non_entity_keyword_hints biomcp-0.9.3> PASS [ 0.020s] biomcp-cli render::markdown::related::tests::article_search_related_results_skip_year_refinement_when_already_bounded biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::diagnostic_zero_result_recovery_commands_point_to_list_help biomcp-0.9.3> PASS [ 0.016s] biomcp-cli render::markdown::related::tests::article_search_related_results_use_supported_non_pmid_identifier biomcp-0.9.3> PASS [ 0.019s] biomcp-cli render::markdown::related::tests::article_search_related_results_suggest_exact_variant_route biomcp-0.9.3> PASS [ 0.017s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_do_not_emit_lung_cancer_immunotherapy_disease_get biomcp-0.9.3> PASS [ 0.018s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_include_discover_for_psoralen_vaccine_phrase biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_include_discover_but_not_heuristic_disease_get biomcp-0.9.3> PASS [ 0.019s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_include_discover_for_short_vaccine_phrase biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_article_uses_article_entities_helper_command biomcp-0.9.3> PASS [ 0.018s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_include_exact_disease_command_when_precomputed biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::markdown::related::tests::related_device_event_uses_supported_search_subcommands biomcp-0.9.3> PASS [ 0.012s] biomcp-cli render::markdown::related::tests::provider_trial_title_shell_syntax_stays_inert_in_results_search biomcp-0.9.3> PASS [ 0.018s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_skip_cross_entity_hints_for_long_phrase biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_diagnostic_only_points_back_to_list_help biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_disease_falls_back_to_unscored_top_gene_context biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::related::tests::related_disease_non_oncology_skips_study_hints biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::related::tests::related_disease_oncology_without_local_match_falls_back_to_download_list biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_disease_malformed_study_lookup_falls_back_to_download_list biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_disease_oncology_with_local_match_prefers_top_mutated biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_disease_oncology_matches_noncontiguous_carcinoma_study_labels biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_disease_promotes_top_gene_context_before_generic_pivots biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_disease_quotes_single_word_indication_search biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::markdown::related::tests::related_disease_uses_synonym_when_name_is_raw_id biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_disease_suggests_review_when_phenotypes_are_sparse biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::related::tests::related_gene_prioritizes_localization_deepening_when_supported biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_drug_includes_pgx_search biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_gene_promotes_clingen_trial_search_before_generic_pivots biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_drug_suggests_review_when_label_and_indications_are_sparse biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_pgx_uses_search_flags biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_protein_excludes_requested_sections biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_protein_includes_complexes_follow_up biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_trial_completed_promotes_results_search_before_condition_pivots biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_trial_keeps_recruiting_order_without_results_search biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_trial_results_search_without_intervention_keeps_seed_quoted biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_trial_searches_unverified_jag201_intervention biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_trial_promotes_results_search_for_completed_or_terminated_studies biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_trial_uses_the_first_alias_from_the_first_intervention_that_has_one biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_trial_without_aliases_uses_the_first_intervention_name biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_variant_vus_keyword_only_follow_up_keeps_description biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_variant_pathogenic_keeps_drug_target_without_vus_literature_pivot biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::related::tests::search_next_commands_diagnostic_prefers_top_accession_then_list biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_device_events_use_report_follow_up biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_variant_vus_promotes_literature_before_drug_target biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_eu_prefers_active_substance_match biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_diagnostic_quotes_who_product_code biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_regions_canonicalize_across_buckets biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_prefers_requested_us_name biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_regions_fall_back_without_requested_name biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_who_use_inn biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_who_vaccine_only_stays_list_only biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_recalls_are_list_only biomcp-0.9.3> PASS [ 0.012s] biomcp-cli render::markdown::root_tests::every_registry_source_status_row_survives_the_render_context biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::root_tests::pagination_footer_cursor_prefers_offset_guidance_without_placeholder biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::root_tests::pagination_footer_offset_keeps_more_when_additional_rows_exist biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::markdown::root_tests::pagination_footer_offset_suppresses_more_on_last_page biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::root_tests::proof_markdown_module_layout_uses_directory_module biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::root_tests::pagination_footer_offset_suppresses_more_when_complete_single_result biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::diagnostic_more_block_keeps_four_visible_section_commands biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_all_and_every_recovery_state biomcp-0.9.3> PASS [ 0.028s] biomcp-cli render::markdown::root_tests::a_fully_unavailable_disease_card_keeps_every_status_line biomcp-0.9.3> PASS [ 0.028s] biomcp-cli render::markdown::root_tests::markdown_detail_outputs_label_gene_drug_and_disease_sources biomcp-0.9.3> PASS [ 0.027s] biomcp-cli render::markdown::root_tests::markdown_detail_outputs_label_variant_protein_pgx_and_openfda_sources biomcp-0.9.3> PASS [ 0.030s] biomcp-cli render::markdown::root_tests::markdown_detail_outputs_label_article_trial_and_pathway_sources biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_every_explicit_single_section_projection biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_complete_region_projections_and_who_exclusions biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_sparse_branches_blank_identity_and_projection_deduplication biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_complete_9_10_and_over_10_candidate_arrays biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_matches_default_projection_order biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::format_sections_block_describes_guardrailed_drug_and_trial_sections biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::push_exact_capped_keeps_first_exact_bytes_before_the_ten_item_cap biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::format_sections_block_keeps_gene_ontology_in_top_more_entries biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_prioritizes_recovery_and_caps_exact_commands biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_respects_loaded_sections_regions_and_who_exclusions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::sections::tests::format_sections_block_renders_described_executable_commands biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::sections::tests::sections_diagnostic_for_who_only_offer_conditions_and_quote_accession biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::sections_gene_base_card_surfaces_diagnostics_as_fourth_command biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::sections::tests::sections_disease_base_card_surfaces_diagnostics_before_optional_sections biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::sections::tests::sections_diagnostic_omit_requested_section_from_more_block biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::sections_pathway_for_kegg_excludes_unsupported_sections biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::sections::tests::sections_pathway_for_reactome_keeps_full_supported_set biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_co_occurrence_markdown_marks_mutation_observed_fallback biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_co_occurrence_markdown_renders_pair_table biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_quotes_identity_and_recovery_is_rendered_once biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_cohort_markdown_renders_group_counts biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_compare_mutations_markdown_renders_rate_table biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_compare_expression_markdown_renders_distribution_table biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_download_catalog_markdown_renders_remote_ids biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_download_markdown_renders_result_table biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_filter_markdown_renders_empty_results_and_unknown_totals biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_filter_markdown_renders_tables_and_samples biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_filter_markdown_truncates_long_sample_lists biomcp-0.9.3> PASS [ 0.007s] biomcp-cli render::markdown::study::tests::study_list_markdown_renders_study_table biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_query_markdown_renders_cna_and_expression_shapes biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_query_markdown_renders_mutation_shape biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_query_markdown_renders_not_in_local_cohorts_signal biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_survival_markdown_renders_group_table biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::study::tests::study_top_mutated_markdown_renders_ranked_table biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::support::tests::discover_try_line_quotes_shell_sensitive_queries biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::support::tests::markdown_cells_keep_layout_rules_while_removing_terminal_controls biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::support::tests::quote_arg_wraps_whitespace_and_escapes_quotes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::support::tests::markdown_code_spans_follow_commonmark_padding_rules biomcp-0.9.3> PASS [ 1.879s] biomcp-cli entities::variant::clinvar::tests::add_clinvar_names_a_fast_429_refusal_as_rate_limited biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::bounded_trial_summary_is_utf8_safe_when_both_limits_omit_content biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::trial::tests::bounded_trial_summary_distinguishes_sentence_final_and_suffix_collisions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::trial::tests::arm_rendering_follows_assignment_ids_when_names_do_not_change biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::markdown::trial::tests::bounded_trial_summary_keeps_supported_mid_sentence_abbreviations biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::bounded_trial_summary_marks_sentence_omission_but_not_complete_input biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::eligibility_markdown_accepts_a_present_empty_aggregate_without_claims biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::eligibility_markdown_makes_source_sex_codes_readable_without_changing_json biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::eligibility_markdown_preserves_linear_transitions_and_bounds_all_content biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::trial::tests::generic_trial_markdown_omits_cap_disclosure_when_locations_fit biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::trial::tests::search_results_carry_the_partial_detail_verification_note biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::trial::tests::paginated_trial_markdown_does_not_apply_a_second_cap biomcp-0.9.3> PASS [ 0.026s] biomcp-cli render::markdown::trial::tests::generic_trial_markdown_caps_locations_discloses_and_aligns_contacts biomcp-0.9.3> PASS [ 0.029s] biomcp-cli render::markdown::trial::tests::generic_trial_continuation_maps_provider_markers_without_guessing biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::trial::tests::trial_markdown_keeps_the_post_abbreviation_clause_and_json_stays_full biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::trial::tests::trial_markdown_includes_source_labeled_sections biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::trial::tests::trial_markdown_renders_contacts_eligibility_and_json_fields biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::trial::tests::trial_markdown_uses_each_safe_reference_fallback biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::variant::tests::normalization_markdown_keeps_legacy_collection_labels biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_omits_matched_intervention_column_without_labels biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_shows_matched_intervention_column_when_present biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_with_footer_omits_zero_result_nickname_hint_without_flag biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_with_footer_shows_scoped_zero_result_nickname_hint biomcp-0.9.3> PASS [ 0.020s] biomcp-cli render::markdown::variant::tests::gwas_search_markdown_renders_result_row biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_with_footer_shows_filtered_zero_result_broadening_hints biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::variant::tests::a_variant_card_prints_no_blank_line_for_an_absent_numbering_note biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::markdown_render_variant_entity biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::markdown::variant::tests::ticket_406_coordinate_outputs_carry_genome_build_context biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::markdown::variant::tests::ticket_589_variant_structure_failures_do_not_render_as_checked_absence_or_source_credit biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::phenotype_search_markdown_renders_top_disease_follow_up biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::variant::tests::transcript_explanation_uses_trusted_template_slot_when_table_contains_footer_sentinel biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::transcript_explanation_sanitizes_controls_and_embedded_backticks biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::variant::tests::variant_clinvar_rows_print_the_submission_count_when_submitters_are_absent biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::variant::tests::variant_markdown_civic_section_renders_currency_caveat_and_cross_checks biomcp-0.9.3> PASS [ 0.030s] biomcp-cli render::markdown::variant::tests::rsid_indel_card_only_prints_variant_ids_accepted_by_the_parser biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::variant::tests::variant_markdown_default_card_renders_bare_civic_pointer_without_cached_evidence biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_markdown_default_card_renders_cached_civic_actionability_pointer biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::variant::tests::variant_markdown_names_the_competing_build_identity biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::markdown::variant::tests::variant_oncokb_markdown_shows_truncation_note biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_markdown_next_commands_quote_variant_ids_with_spaces biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::variant::tests::variant_markdown_offers_no_retry_for_a_retired_gwas_endpoint biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::variant::tests::variant_markdown_renders_gwas_unavailable_message biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_markdown_renders_cancerhotspots_recurrence_when_present biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_markdown_renders_the_gwas_gap_reason_once biomcp-0.9.3> PASS [ 0.023s] biomcp-cli render::markdown::variant::tests::variant_population_markdown_labels_residual_group_but_json_keeps_raw_id biomcp-0.9.3> PASS [ 0.031s] biomcp-cli render::markdown::variant::tests::variant_markdown_renders_compact_clinvar_and_population_fields biomcp-0.9.3> PASS [ 0.022s] biomcp-cli render::markdown::variant::tests::variant_population_maximum_keeps_zero_and_handles_null_nonfinite_and_partial_sides biomcp-0.9.3> PASS [ 0.028s] biomcp-cli render::markdown::variant::tests::variant_population_markdown_keeps_missing_status_compact biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::provenance::tests::article_section_sources_projects_unavailable_fulltext_without_sources biomcp-0.9.3> PASS [ 0.025s] biomcp-cli render::markdown::variant::tests::variant_population_maximum_is_order_independent_by_an_then_raw_id biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::provenance::tests::article_section_sources_uses_resolved_fulltext_and_indexing_providers biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::provenance::tests::diagnostic_unavailable_regulatory_outcome_has_no_source_credit biomcp-0.9.3> PASS [ 0.021s] biomcp-cli render::markdown::variant::tests::variant_search_explains_distinct_transcript_match_after_unchanged_table biomcp-0.9.3> PASS [ 0.020s] biomcp-cli render::markdown::variant::tests::variant_search_markdown_renders_related_commands_from_context biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::provenance::tests::disease_section_sources_include_clinical_features biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::provenance::tests::disease_section_sources_include_diagnostics_note_sources biomcp-0.9.3> PASS [ 0.012s] biomcp-cli render::provenance::tests::disease_section_sources_include_diagnostics_from_rows biomcp-0.9.3> PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_search_markdown_renders_legacy_name_column_and_fallback biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::provenance::tests::disease_section_sources_include_funding_when_note_present biomcp-0.9.3> PASS [ 0.008s] biomcp-cli render::provenance::tests::drug_interaction_note_covers_the_zero_rows_wordings biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::provenance::tests::disease_section_sources_include_survival_when_note_present biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::provenance::tests::drug_interaction_report_section_sources_include_drugbank_when_descriptions_present biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::provenance::tests::drug_provenance_adds_who_to_regulatory_sources biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::provenance::tests::drug_provenance_emits_variant_targets_when_present biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::provenance::tests::drug_section_sources_omit_interactions_when_no_interaction_data_is_present biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::provenance::tests::gene_section_sources_include_funding_when_present biomcp-0.9.3> PASS [ 0.011s] biomcp-cli render::provenance::tests::gene_section_sources_include_diagnostics_from_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::provenance::tests::pathway_section_sources_emits_wikipathways_not_reactome_for_wp_card biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::provenance::tests::gene_section_sources_marks_unavailable_diagnostics_without_source_credit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli render::provenance::tests::pathway_source_label_falls_back_to_reactome_for_empty biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::provenance::tests::pathway_source_label_passes_through_unknown_non_empty_source biomcp-0.9.3> PASS [ 0.010s] biomcp-cli render::provenance::tests::pathway_source_label_maps_known_sources biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::alphagenome::tests::construction::recommended_scorers_are_stable biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::alphagenome::tests::construction::make_interval_clamps_start_and_keeps_expected_width biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::alphagenome::tests::parsing::summarize_tensor_maps_best_gene_and_value biomcp-0.9.3> PASS [ 0.013s] biomcp-cli render::provenance::tests::variant_provenance_includes_gwas_when_requested_section_is_unavailable biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::alphagenome::tests::parsing::dtype_and_half_precision_helpers_work biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::alphagenome::tests::construction::score_variant_request_sets_interval_variant_and_scorers biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::archive_budget::tests::bounded_metadata_sets_one_effective_path_and_then_resets biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::archive_budget::tests::aggregate_and_entry_limits_accept_exact_boundaries_and_reject_max_plus_one biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::archive_budget::tests::metadata_limits_ambiguity_and_unsupported_entry_types_are_rejected biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::archive_budget::tests::entry_and_total_accounting_reject_checked_overflow biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::archive_budget::tests::pax_paths_are_accepted_but_size_sparse_and_duplicate_metadata_are_rejected biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::archive_budget::tests::regular_member_accepts_exact_limits_and_rejects_max_plus_one biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::ca_bundle::tests::non_utf8_configured_path_keeps_its_raw_os_bytes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::ca_bundle::tests::parse_error_is_indexed_and_does_not_echo_bundle_content biomcp-0.9.3> PASS [ 0.016s] biomcp-cli sources::ca_bundle::tests::bundle_is_parsed_once_across_builders_in_a_fresh_process biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cancerhotspots::tests::construction::by_gene_plans_match_captured_recurrence_routes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::construction::by_gene_plan_uses_encoded_path_and_no_body biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cancerhotspots::tests::construction::encode_path_segment_preserves_safe_characters_and_escapes_others biomcp-0.9.3> PASS [ 0.016s] biomcp-cli sources::ca_bundle::tests::the_real_constructors_parse_a_valid_bundle_once biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cancerhotspots::tests::parsing::decode_by_gene_maps_http_and_html_errors biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::parsing::parses_by_gene_fixture biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::cancerhotspots::tests::parsing::receipted_empty_response_is_checked_absence biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::parsing::receipted_recurrence_preserves_braf_and_myd88_landmarks biomcp-0.9.3> PASS [ 0.037s] biomcp-cli sources::alphagenome::tests::parsing::decompress_tensor_bytes_rejects_oversized_chunk biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cancerhotspots::tests::parsing::recurrence_checks_later_matching_residue_rows_for_exact_alt biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cancerhotspots::tests::parsing::recurrence_maps_counts_and_transcript_for_exact_alt biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::parsing::recurrence_serializes_checked_absence_with_nulls biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal::tests::construction::clinical_data_plan_posts_sample_filter_body biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::parsing::recurrence_treats_missing_exact_alt_as_checked_absence biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::cbioportal::tests::construction::gene_resolution_plan_rejects_empty_gene biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cbioportal::tests::construction::gene_resolution_plan_sets_keyword_query biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cbioportal::tests::construction::study_and_mutation_plans_set_paths_and_queries biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cbioportal::tests::parsing::decode_json_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal::tests::parsing::parses_gene_resolution_fixture biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal::tests::parsing::parses_study_mutation_and_clinical_fixtures biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_download::tests::construction::study_archive_plan_fetches_tarball_for_valid_study_id biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::construction::archive_relative_path_accepts_only_the_expected_top_level_study_dir biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::construction::study_archive_plan_rejects_path_like_study_ids biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::construction::study_list_plan_fetches_datahub_catalog biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::construction::validate_study_id_trims_and_requires_a_single_safe_segment biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cbioportal_download::tests::parsing::archive_status_maps_missing_archives_to_not_found_without_leaking_storage_body biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::download::archive_download_accounting_accepts_exact_limit_and_rejects_overflow biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::cbioportal_download::tests::download::archive_download_rejects_chunked_max_plus_one_and_removes_partial_file biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_download::tests::parsing::archive_status_maps_other_http_errors_with_excerpt biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::cbioportal_download::tests::download::archive_download_rejects_declared_oversize_before_creating_destination biomcp-0.9.3> PASS [ 0.052s] biomcp-cli sources::ca_bundle::tests::root_configuration_stays_additive biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_extracts_a_valid_local_archive biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_rejects_declared_oversized_member_without_leaving_files biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_rejects_entries_outside_expected_top_level_directory biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_skips_existing_valid_target biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_rejects_oversized_path_metadata_before_buffering_it biomcp-0.9.3> PASS [ 0.064s] biomcp-cli sources::ca_bundle::tests::loader_cases_run_in_fresh_processes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_download::tests::parsing::list_decode_accepts_json_content_type_with_parameters biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_download::tests::parsing::parses_study_list_fixture biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cbioportal_download::tests::parsing::study_list_decode_maps_http_and_content_type_errors biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::clinical_column_values_reads_trimmed_clinical_values biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::cna_distribution_supports_header_with_entrez_column biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::cna_values_by_sample_reads_matrix_rows_and_optional_entrez_column biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::co_occurrence_computes_pair_counts biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::cohort_by_mutation_classifies_patients_and_samples biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::co_occurrence_falls_back_to_mutation_observed_samples_without_clinical_file biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::cohort_commands_require_clinical_sample_file_instead_of_falling_back biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::compare_expression_by_mutation_summarizes_group_distributions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::dev2_contracts::list_studies_treats_a_missing_root_as_an_empty_catalog biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::cbioportal_study::tests::compare_mutations_by_mutation_counts_unique_samples_in_each_group biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::dev2_contracts::patient_survival_data_requires_canonical_columns_and_filters_invalid_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::expression_distribution_ignores_missing_and_non_finite_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::expression_pairs_by_sample_keeps_shared_numeric_samples_in_header_order biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::expression_pairs_by_sample_reports_first_missing_gene_in_argument_order biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::filter_samples_intersects_mutation_and_clinical_criteria biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::filter_samples_intersects_three_way_criteria biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::filter_samples_intersects_mutation_and_cna_criteria biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::filter_samples_propagates_missing_required_files_and_columns biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::filter_samples_treats_missing_gene_rows_as_empty_sets biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::filter_samples_reports_empty_intersection_and_single_criterion_results biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::fisher_exact_two_tailed_returns_one_for_zero_total_table biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::fisher_exact_two_tailed_matches_reference_tables biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::cbioportal_study::tests::kaplan_meier_estimate_uses_event_times_and_landmarks biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::log_rank_two_group_is_defined_when_only_one_group_has_events biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::kaplan_meier_estimate_without_events_returns_flat_curve biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::mann_whitney_u_test_returns_none_when_all_values_are_identical biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::list_studies_reads_meta_and_data_flags biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::list_study_lookup_rows_includes_clinical_cancer_labels biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::mann_whitney_u_test_handles_ties_and_smaller_u_statistic biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::missing_required_file_returns_source_unavailable biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::mutation_counts_by_sample_returns_sorted_counts biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::cbioportal_study::tests::mutation_frequency_counts_records_samples_and_top_buckets biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::cellosaurus::tests::a_missing_record_is_a_missing_record_and_not_a_failure biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::structural_variants_match_either_breakpoint_and_fill_optional_blanks biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::structural_variants_require_both_gene_columns biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::survival_by_mutation_returns_group_aggregates_for_analyzable_patients biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::top_mutated_genes_ranks_by_samples_then_events_then_gene biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cellosaurus::tests::a_record_splits_primary_and_secondary_accessions_and_names biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cellosaurus::tests::a_record_recorded_without_variants_carries_no_variation_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cellosaurus::tests::a_variation_source_yields_its_pubmed_id biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cellosaurus::tests::name_search_targets_the_identifier_and_synonym_field biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cellosaurus::tests::an_html_page_served_as_json_is_a_provider_error_naming_the_url biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cellosaurus::tests::solr_escaping_covers_the_quote_and_the_backslash biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::chembl::tests::construction::cell_line_plan_joins_on_the_cellosaurus_accession biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cellosaurus::tests::release_info_reads_the_version_and_the_date biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cellosaurus::tests::record_url_asks_for_the_card_projection_without_cross_references biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::chembl::tests::construction::assay_count_plan_asks_for_one_row_of_the_cell_line_assays biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::chembl::tests::construction::drug_targets_plan_requests_mechanism_endpoint biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::chembl::tests::construction::plans_reject_empty_identifiers biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::chembl::tests::construction::target_summary_plan_sets_target_path biomcp-0.9.3> PASS [ 1.617s] biomcp-cli entities::variant::gwas::tests::combined_gene_and_trait_queries_run_at_once_and_keep_the_sequential_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::chembl::tests::construction::status_plan_reads_the_release_endpoint biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::chembl::tests::parsing::cell_line_response_maps_the_molm13_record biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::chembl::tests::parsing::assay_page_reports_the_total_count biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::chembl::tests::parsing::an_html_body_served_with_http_200_names_the_url biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::chembl::tests::parsing::decode_json_response_maps_http_and_json_errors biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::chembl::tests::parsing::cell_line_response_maps_the_k562_record_whose_name_chembl_spells_differently biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::chembl::tests::parsing::an_accession_chembl_does_not_list_maps_to_no_record biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::chembl::tests::parsing::drug_targets_response_maps_targets_and_defaults biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::chembl::tests::parsing::status_reports_the_release_name_and_date biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::civic::tests::construction::therapy_and_disease_context_plans_set_their_variables biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::civic::tests::construction::required_query_value_rejects_empty biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::civic::tests::construction::molecular_profile_context_plan_sets_graphql_body_and_limit biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::civic::tests::parsing::context_response_accepts_a_genuine_empty_page biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::chembl::tests::parsing::target_summary_response_maps_pref_name_and_target_type biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::civic::tests::parsing::context_response_rejects_a_total_without_parsed_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::civic::tests::parsing::context_response_maps_evidence_and_assertions biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::civic::tests::parsing::context_response_rejects_a_missing_data_block biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::civic::tests::parsing::context_response_surfaces_graphql_errors biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::civic::tests::parsing::decode_json_response_maps_http_and_content_type_errors biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clingen::tests::parsing::clingen_plans_set_lookup_and_download_paths biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::clingen_parsers_handle_missing_gene_rows_cleanly biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clingen::tests::parsing::decode_text_and_json_map_http_errors biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::clingen::tests::parsing::family_status_serialization_is_closed_and_omits_healthy_messages biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::dosage_newest_row_preserves_a_literal_no_evidence_and_omits_missing_side biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clingen::tests::parsing::downloads_fail_closed_on_unrecognized_schema_html_and_invalid_encoding biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::dosage_sensitivity_parses_csv_and_picks_latest_row biomcp-0.9.3> PASS [ 0.016s] biomcp-cli sources::clingen::tests::operations_start_concurrently_and_share_one_lookup biomcp-0.9.3> PASS [ 0.019s] biomcp-cli sources::clingen::tests::failed_lookup_preserves_symbol_data_but_does_not_confirm_zero_match biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::gene_context_can_be_built_from_one_lookup_and_both_csv_payloads biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::gene_validity_parses_csv_with_metadata_rows biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::hgnc_lookup_allows_hgnc_only_validity_match biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clingen::tests::parsing::lookup_plan_rejects_invalid_gene_symbols biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clingen::tests::review_date_rejects_a_multibyte_boundary_without_panicking biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clingen::tests::parsing::validity_keeps_newest_five_with_deterministic_ties biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::lookup_accepts_json_with_html_content_type biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::clingen_allele_registry::tests::batch_plan_uses_post_and_preserves_input_order_and_duplicates biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clingen_allele_registry::tests::batch_cardinality_mismatch_is_incomplete biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clingen_allele_registry::tests::blank_node_with_malformed_projected_fact_is_indeterminate biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clingen_allele_registry::tests::decoder_does_not_accept_an_empty_caid biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clingen_allele_registry::tests::decoder_orders_aliases_and_rejects_schema_drift biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::clingen::tests::validity_failure_preserves_newest_dosage_row_and_public_message biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::clingen_allele_registry::tests::direct_plan_uses_only_the_projected_read_route biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::clingen_allele_registry::tests::external_ids_keep_full_source_metadata_before_per_source_caps biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clingen_allele_registry::tests::receipt_backed_car_capture_decodes_a_resolved_transcript_identity biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clingen_allele_registry::tests::received_batch_response_hashes_preserve_exact_body_bytes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clingen_allele_registry::tests::received_response_hashes_preserve_exact_body_bytes biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::clingen_cspec::tests::construction::cspec_execution_methods_consume_manifest_and_document_plans biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clingen_cspec::tests::construction::cspec_plans_keep_manifest_and_document_provider_paths biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clingen_cspec::tests::construction::cspec_production_timeouts_match_shared_provider_policy biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clingen_erepo::tests::construction::erepo_plans_use_exact_search_and_encoded_detail_segments biomcp-0.9.3> PASS [ 0.052s] biomcp-cli sources::clingen::tests::dosage_timeout_preserves_completed_validity biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clingen_erepo::tests::parsing::envelope_requires_the_contract_keys_and_success_code biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clingen_erepo::tests::construction::gene_plan_requests_one_extra_row_at_the_requested_offset biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clingen_ldh::tests::direct_body_budget_stops_at_the_aggregate_limit biomcp-0.9.3> PASS [ 0.036s] biomcp-cli sources::clingen::tests::valid_zero_match_is_empty_and_oversized_download_is_failed biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clingen_erepo::tests::parsing::exact_search_no_records_404_requires_the_provider_shape biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::clinicaltrials::tests::construction::default_get_fields_request_visible_status_context biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::construction::every_product_detail_route_has_one_exact_composed_request biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::construction::get_plan_builds_study_path_and_section_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::construction::every_unrelated_single_section_omits_all_eligibility_fields biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::construction::get_fields_contacts_preserve_site_context_and_eligibility_sex biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::construction::intervention_detail_fields_are_requested_once_with_or_without_arms biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::construction::local_detail_plan_uses_the_exact_shared_path_and_fields biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::construction::location_postal_code_is_requested_only_for_location_projections biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::clinicaltrials::tests::construction::search_plan_builds_expected_params biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::construction::search_plan_includes_geo_facility_agg_and_field_override biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::ctgov_age_wire_distinguishes_absent_null_and_blank biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::clinicaltrials::tests::parsing::arm_label_mutations_rebuild_or_reject_assignments_without_leaking_values biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::parsing::ctgov_age_wire_round_trips_only_provider_strings biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::clinicaltrials::tests::parsing::decode_json_classifies_only_intervention_parser_bad_requests biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::parsing::ctgov_eligibility_mutations_change_only_the_shared_values biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::parsing::decode_json_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::detail_response_checks_http_status_before_valid_json biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::detail_response_returns_shared_references biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::clinicaltrials::tests::parsing::get_response_maps_not_found_to_trial_not_found biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::detail_response_sanitizes_ambiguous_arm_labels biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::clinicaltrials::tests::parsing::legacy_capture_keeps_missing_null_and_empty_arm_arrays_distinct biomcp-0.9.3> PASS [ 0.014s] biomcp-cli sources::clinicaltrials::tests::parsing::detail_response_maps_every_stable_validation_code biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::parses_contacts_fixture_without_consuming_detail_eligibility biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::parsing::parses_large_document_module biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::parses_search_response_fixture biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::complexportal::tests::construction::complexes_plan_rejects_empty_accession_and_skips_zero_limit biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::complexportal::tests::construction::complexes_plan_sets_endpoint_filters_and_page_size biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::clinicaltrials::tests::parsing::product_arm_states_survive_dedicated_mixed_and_all_routes biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::clinicaltrials::tests::parsing::recorded_ctgov_eligibility_reaches_the_shared_projection_without_loss biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::complexportal::tests::parsing::map_complexes_filters_false_positives_and_shapes_participants biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::complexportal::tests::parsing::decode_json_response_maps_empty_results biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cpic::tests::construction::empty_gene_pair_plan_uses_the_normal_pair_route biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::cpic::tests::construction::plans_validate_gene_and_drug_inputs biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cpic::tests::construction::pair_plans_set_expected_filters_and_order biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::cpic::tests::parsing::decode_json_response_maps_http_content_type_and_json_errors biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cpic::tests::construction::recommendation_frequency_and_guideline_plans_set_expected_filters biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::cpic::tests::parsing::empty_pair_response_decodes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cpic::tests::parsing::drug_pair_page_response_decodes_rows biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cpic::tests::parsing::frequency_response_decodes_rows biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cpic::tests::parsing::pair_page_response_decodes_rows_and_total biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cvx::tests::construction::cvx_missing_files_tracks_required_contract biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cpic::tests::parsing::recommendation_and_guideline_responses_decode biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cvx::tests::construction::cvx_read_error_mentions_recovery_paths biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cvx::tests::construction::sync_intro_matches_missing_stale_and_force_modes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cvx::tests::construction::sync_state_marks_missing_fresh_stale_and_force biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::cvx::tests::parsing::ensure_csv_content_type_rejects_html_response_without_raw_tags biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cvx::tests::parsing::ema_search_aliases_require_trade_name_identity biomcp-0.9.3> PASS [ 0.097s] biomcp-cli sources::clingen::tests::timed_out_lookup_preserves_symbol_data_but_marks_zero_match_timed_out biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_joins_mvx_rows_when_present biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_matches_cvx_family_terms_for_antigen_queries biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_prefers_exact_product_before_family_prefix_and_dedupes biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_skips_non_vaccine_rows biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_supports_exact_and_family_prefix_matching biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::cvx::tests::parsing::lookup_vaccine_candidates_returns_cvx_codes_for_brand_matches biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::cvx::tests::parsing::parse_cvx_products_handles_trailing_blank_field biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::cvx::tests::parsing::parse_cvx_codes_parses_real_shape_and_non_vaccine_flag biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::cvx::tests::parsing::parse_mvx_rows_rejects_short_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::ddinter::tests::construction::basis_freshness_is_stale_without_a_basis_and_fresh_from_recent_files biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::ddinter::tests::construction::ddinter_identity_dedupes_alias_terms biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::ddinter::tests::construction::cached_index_freshness_follows_the_cached_basis_not_the_files biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ddinter::tests::construction::ddinter_missing_files_reports_incomplete_bundle biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::ddinter::tests::parsing::bundle_parse_errors_carry_the_read_marker biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::ddinter::tests::construction::cached_index_freshness_keeps_a_fresh_load_fresh_after_aging_the_files biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ddinter::tests::parsing::html_download_replies_are_download_failures_not_read_failures biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::ddinter::tests::parsing::client_lookup_matches_both_sides_without_duplicates biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::ddinter::tests::parsing::client_coverage_status_distinguishes_absent_drug_from_empty_matches biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ddinter::tests::parsing::identity_terms_match_ddinter_rows_through_synonyms biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ddinter::tests::parsing::normalize_name_key_collapses_spacing_and_case biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ddinter::tests::parsing::parse_csv_rows_rejects_incomplete_rows biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::dgidb::tests::construction::gene_interactions_plan_sets_graphql_body biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::ddinter::tests::parsing::parse_csv_rows_reads_expected_shape biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::dgidb::tests::construction::gene_interactions_plan_rejects_invalid_symbols biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::dgidb::tests::parsing::decode_json_response_maps_http_and_content_type_errors biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::ddinter::tests::parsing::parse_csv_rows_rejects_missing_required_columns biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::dgidb::tests::parsing::gene_interactions_response_aggregates_categories_and_interactions biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::dgidb::tests::parsing::gene_interactions_response_surfaces_graphql_errors biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::disable::tests::commercial_restricted_group_includes_specific_and_broad_restrictions biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::disable::tests::kegg_alias_keeps_its_historical_value_set biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::disable::tests::empty_tokens_are_skipped_so_blank_values_disable_nothing biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::disable::tests::non_commercial_group_covers_the_recorded_sources biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::disable::tests::license_required_group_covers_the_recorded_sources biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::disable::tests::parse_records_the_origin_in_each_reason biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::disable::tests::parse_splits_comma_and_pipe_and_trims_and_lowercases biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::disable::tests::unknown_token_error_lists_valid_sources_and_groups biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::disable::tests::registry_ids_match_the_embedded_inventory biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::disgenet::tests::construction::disease_associations_plan_uses_normalized_umls_cui biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::disgenet::tests::construction::disease_associations_plan_skips_limit_zero biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::disgenet::tests::construction::gene_associations_plan_falls_back_to_gene_symbol biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::disgenet::tests::construction::gene_associations_plan_sends_auth_header_and_gene_ncbi_id biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::disgenet::tests::construction::gene_associations_plan_rejects_missing_gene_id_and_symbol biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::disgenet::tests::construction::disease_resolution_plan_sets_free_text_query biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::disgenet::tests::construction::gene_associations_plan_skips_limit_zero biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::disgenet::tests::construction::missing_key_returns_api_key_required_error biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::associations_from_response_applies_limit biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::disgenet::tests::parsing::disease_resolution_returns_source_unavailable_when_resolution_fails biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::disgenet::tests::parsing::decode_summary_response_maps_association_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::disease_resolution_uses_synonym_match biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::disgenet::tests::parsing::empty_payload_returns_empty_vec biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::forbidden_response_reports_rejected_credential biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::disgenet::tests::parsing::rate_limit_error_includes_retry_after_seconds biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::non_ok_response_status_returns_api_error biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::disgenet::tests::parsing::http_500_returns_api_error biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::rejected_credential_recovery_points_to_configuration biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::disgenet::tests::parsing::unauthorized_response_reports_rejected_credential biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ema::tests::ema_feed_table_matches_required_file_contract biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ema::tests::ema_missing_files_tracks_required_file_contract_in_order biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::ema::tests::ema_sync_error_mentions_recovery_paths biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ema::tests::parsing::cvx_signatures_keep_distinctive_initialisms_and_ordered_constraints biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ema::tests::parsing::boundary_phrase_rejection_advances_across_multibyte_character biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ema::tests::parsing::cvx_ordered_signature_compacts_but_does_not_reverse_or_cross_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ema::tests::parsing::ema_truth_table_reports_every_typed_source_and_stable_ties biomcp-0.9.3> PASS [ 0.014s] biomcp-cli sources::ema::tests::parsing::search_classifies_deduplicates_and_paginates_after_stable_tiering biomcp-0.9.3> PASS [ 0.022s] biomcp-cli sources::ema::tests::parsing::regulatory_reads_live_schema_holder_key_and_cleaned_indication biomcp-0.9.3> PASS [ 0.022s] biomcp-cli sources::ema::tests::parsing::resolve_anchor_matches_brand_and_filters_non_human_rows biomcp-0.9.3> PASS [ 0.024s] biomcp-cli sources::ema::tests::parsing::recorded_cvx_descriptions_bridge_gardasil_prevnar_and_fluzone biomcp-0.9.3> PASS [ 0.021s] biomcp-cli sources::ema::tests::parsing::safety_ozempic_has_dhpcs_but_empty_referrals_and_psusas biomcp-0.9.3> PASS [ 0.030s] biomcp-cli sources::ema::tests::parsing::get_identity_keeps_legacy_period_boundaries_while_search_identity_cleans_them biomcp-0.9.3> PASS [ 0.021s] biomcp-cli sources::ema::tests::parsing::shortage_matches_resolved_human_medicine_anchor biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ema::tests::parsing::validate_feed_payload_rejects_bad_payloads_before_write biomcp-0.9.3> PASS [ 0.023s] biomcp-cli sources::ema::tests::parsing::search_medicines_matches_therapeutic_indication_queries biomcp-0.9.3> PASS [ 0.023s] biomcp-cli sources::ema::tests::parsing::search_medicines_matches_cvx_alias_tokens_on_active_substance biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ema::tests::sync_intro_matches_download_refresh_and_force_modes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ema::tests::sync_plan_marks_missing_and_stale_feeds biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::enrichr::tests::construction::add_list_body_trims_and_joins_genes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::enrichr::tests::construction::add_list_body_rejects_empty_gene_lists biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::enrichr::tests::construction::enrich_plan_sets_user_list_id_and_library biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::enrichr::tests::parsing::decode_add_list_response_parses_user_list_id biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::enrichr::tests::parsing::decode_enrich_response_gracefully_handles_bad_request biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::enrichr::tests::parsing::decode_enrich_response_parses_json_and_rejects_html biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::europepmc::tests::construction::full_text_xml_plan_builds_supported_pmc_endpoint biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::europepmc::tests::construction::search_query_plan_sets_citation_sort biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::europepmc::tests::construction::full_text_xml_plan_empty_source_or_id_returns_none biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::europepmc::tests::construction::legacy_request_plan_keeps_article_contract_shape biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::europepmc::tests::construction::search_query_plan_sets_keyword_shape_and_date_sort biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::europepmc::tests::construction::search_query_plan_validates_query_and_paging biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::europepmc::tests::parsing::decode_full_text_xml_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::europepmc::tests::construction::supplementary_files_plan_validates_and_normalizes_pmcid biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::europepmc::tests::parsing::decode_full_text_xml_rejects_invalid_utf8 biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::europepmc::tests::parsing::decode_full_text_xml_returns_body_on_success biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::europepmc::tests::parsing::decode_full_text_xml_returns_none_on_documented_or_empty_absence biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::europepmc::tests::parsing::decode_json_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::europepmc::tests::parsing::europepmc_result_deserializes_first_index_date biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::europepmc::tests::parsing::supplementary_status_distinguishes_absence_from_failure biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::europepmc::tests::parsing::parses_search_response_from_real_fixture biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::europepmc::tests::parsing::supplementary_response_treats_the_receipted_not_open_access_error_as_absent biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_keeps_zero_byte_members_for_upstream_classification biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_enforces_all_size_and_count_limits biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_rejects_empty_directory_only_and_malformed_archives biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::fda_orphan::tests::envelopes_pin_counts_truncation_and_degraded_without_rows biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_preserves_normalized_names_and_exact_bytes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::fda_orphan::tests::form_is_exact_and_ordered biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::fda_orphan::tests::merge_is_order_independent_and_discards_conflicts biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::fda_orphan::tests::json_schema_keeps_every_record_key_and_required_nulls biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_rejects_unsafe_and_duplicate_names biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::figshare::tests::construction::article_plan_uses_article_id_path biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::fda_orphan::tests::parser_keeps_exact_alias_and_truth_semantics biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::figshare::tests::construction::parses_aacr_public_article_url_with_file_id biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::figshare::tests::construction::parses_api_article_url biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::figshare::tests::construction::parses_versioned_public_article_url_with_file_path_id biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::figshare::tests::construction::parses_public_article_url_with_file_path_id biomcp-0.9.3> PASS [ 0.016s] biomcp-cli sources::fda_orphan::tests::parser_validates_only_exactly_admitted_generic_or_trade_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::figshare::tests::construction::production_download_url_validation_allows_figshare_https_hosts biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::figshare::tests::construction::production_download_url_validation_rejects_unsafe_targets biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::figshare::tests::construction::rejects_non_figshare_urls_and_unsafe_names biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::figshare::tests::construction::search_articles_plan_skips_empty_query biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::figshare::tests::parsing::article_error_sanitizes_html_body biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::figshare::tests::construction::search_articles_plan_uses_expected_post_body biomcp-0.9.3> PASS [ 0.217s] biomcp-cli sources::clingen_cspec::tests::construction::cspec_request_deadline_covers_headers_and_body_with_safe_attribution biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::figshare::tests::parsing::article_response_normalizes_files_and_license biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::figshare::tests::parsing::download_accepted_response_requests_retry_before_limit biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::figshare::tests::parsing::download_error_sanitizes_html_body biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::figshare::tests::parsing::download_errors_after_repeated_accepted_responses biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::figshare::tests::parsing::download_response_returns_bytes_for_success biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::figshare::tests::parsing::search_response_normalizes_rows biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::figshare::tests::parsing::download_response_rejects_oversized_file_bytes biomcp-0.9.3> PASS [ 5.164s] biomcp-cli entities::drug::test_support::label_fetch_failures_settle_as_unavailable_outcomes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gencc::store::errno_tests::a_regular_file_where_the_generation_belongs_classifies_invalid biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::gencc::store::errno_tests::an_unreadable_generation_directory_retains_like_a_wrong_owner_one biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gencc::store::errno_tests::deterministic_causes_and_unknown_errnos_map_to_invalid biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gencc::store::errno_tests::environment_errnos_map_to_unavailable biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gencc::store::errno_tests::permission_and_stale_handle_errnos_map_to_unavailable biomcp-0.9.3> PASS [ 0.015s] biomcp-cli sources::gencc::store::errno_tests::a_wrong_mode_directory_classifies_invalid_and_prunes biomcp-0.9.3> PASS [ 0.053s] biomcp-cli sources::fda_orphan::tests::parser_enforces_encoding_body_shape_and_header_contract biomcp-0.9.3> PASS [ 4.644s] biomcp-cli entities::gene::gencc::tests::crash_boundaries_preserve_one_complete_namespace_generation biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gencc::tests::current_version_selection_and_cancellation_fail_closed biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gencc::tests::endpoint_redirect_and_validator_policy_is_closed biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::gencc::tests::duplicate_comparison_uses_normalized_retained_tuple biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::gencc::tests::exact_header_and_all_classification_pairs_are_closed biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gencc::tests::freshness_and_retry_boundaries_include_rollback_rules biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::gencc::tests::malformed_classification_version_and_pmid_fail_closed biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::gencc::tests::numeric_date_url_and_pmid_boundaries_are_exact biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gencc::tests::parser_work_obeys_an_expired_refresh_deadline biomcp-0.9.3> PASS [ 0.015s] biomcp-cli sources::gencc::tests::raw_field_label_and_link_bounds_apply_before_optional_nulling biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gencc::tests::receipt_backed_odc1_rows_remain_separate_and_ordered biomcp-0.9.3> PASS [ 0.105s] biomcp-cli sources::gencc::tests::failed_initial_attempt_is_durably_suppressed_without_body_leakage biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gencc::tests::release_equivalent_fixture_override_requires_exact_signaled_loopback_origin biomcp-0.9.3> PASS [ 0.198s] biomcp-cli sources::fda_orphan::tests::parser_accepts_five_hundred_rows_and_rejects_the_next_during_iteration biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gnomad::tests::construction::gene_constraint_plan_posts_graphql_query_and_symbol biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gnomad::tests::construction::gene_constraint_plan_rejects_invalid_gene_symbols biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gnomad::tests::construction::variant_population_plan_pins_gnomad_v4_and_complete_fields biomcp-0.9.3> PASS [ 0.108s] biomcp-cli sources::gencc::tests::refresh_leader_removes_only_owned_abandoned_temporaries biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gnomad::tests::construction::variant_population_plan_rejects_blank_or_oversized_ids biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::decode_json_response_maps_http_and_content_type_errors biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::gene_constraint_maps_metrics_and_transcript biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gnomad::tests::parsing::gene_constraint_propagates_non_not_found_graphql_errors biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::gene_constraint_returns_none_for_gene_not_found biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::gene_constraint_returns_some_with_transcript_when_constraint_is_null biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::gnomad::tests::parsing::recorded_v4_population_has_grpmax_and_discordant_exome_genome_filters biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::variant_population_distinguishes_absence_and_provider_failure biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gnomad::tests::parsing::variant_population_keeps_exome_genome_faf_flags_and_numeric_frequencies_separate biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gprofiler::tests::construction::enrich_genes_plan_posts_query_and_limit biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gprofiler::tests::construction::enrich_genes_plan_rejects_empty_input_and_bad_limits biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gprofiler::tests::parsing::decode_response_and_map_terms_applies_limit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gprofiler::tests::parsing::map_enrich_response_preserves_all_failed_genes_without_terms biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gprofiler::tests::parsing::map_enrich_response_preserves_failed_genes_and_term_limit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gprofiler::tests::parsing::remap_gprofiler_error_maps_transient_statuses_to_source_unavailable biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::gprofiler::tests::parsing::transient_status_parser_recognizes_retryable_statuses biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gtex::tests::construction::gene_search_plan_rejects_invalid_ensembl_ids biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gtex::tests::construction::gene_search_plan_sets_gene_id_and_gencode_version biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gtex::tests::construction::median_expression_plan_sets_versioned_id_and_dataset biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gtex::tests::parsing::decode_json_response_maps_http_and_content_type_errors biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gtex::tests::parsing::median_expression_returns_empty_when_gene_search_has_no_match biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gtex::tests::parsing::median_expression_sorts_and_compacts_to_top_and_low_tissues biomcp-0.9.3> PASS [ 0.315s] biomcp-cli sources::gencc::cancelling_stalled_headers_and_streamed_body_drops_request_and_store_work biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gtex::tests::parsing::resolve_versioned_id_returns_first_non_empty_fallback biomcp-0.9.3> PASS [ 0.318s] biomcp-cli sources::gencc::explicit_sync_lock_deadline_preserves_state_with_and_without_generation biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gtex::tests::parsing::resolve_versioned_id_uses_gene_search_response biomcp-0.9.3> PASS [ 0.324s] biomcp-cli sources::gencc::cancelled_publication_settles_and_the_previous_generation_survives biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gtr::tests::construction::client_from_root_uses_supplied_root_without_env biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::gtr::tests::construction::gtr_missing_files_tracks_required_contract biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gtr::tests::construction::gtr_sync_error_mentions_recovery_paths biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gtr::tests::construction::sync_intro_matches_missing_stale_and_force_modes biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::gtr::tests::construction::sync_state_marks_missing_fresh_stale_and_force biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::gtr::tests::parsing::load_index_backfills_test_type_from_condition_gene_when_test_version_omits_it biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::gtr::tests::parsing::load_index_unions_linked_and_inline_genes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gtr::tests::parsing::merged_genes_deduplicates_symbol_colon_description_form biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gtr::tests::parsing::parse_condition_gene_joins_correctly biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::gtr::tests::parsing::parse_test_version_accepts_live_header_without_test_type biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gtr::tests::parsing::parse_test_version_filters_to_current_only biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::gtr::tests::parsing::validate_condition_gene_rejects_missing_header biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::gtr::tests::parsing::production_budgets_and_small_exact_boundaries_are_enforced biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gtr::tests::parsing::validate_test_version_rejects_missing_header biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gwas::tests::construction::associations_by_rsid_plan_sets_path_projection_and_limit biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::gtr::tests::parsing::write_validated_pair_preserves_existing_files_when_validation_fails biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::gwas::tests::construction::plans_reject_invalid_inputs biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::gwas::tests::construction::search_plans_set_expected_paths_and_queries biomcp-0.9.3> PASS [ 0.352s] biomcp-cli sources::gencc::tests::bootstrap_and_store_lock_waits_are_bounded_by_the_call_deadline biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::gwas::tests::day_cache::gwas_requests_carry_the_day_cache_mode_on_the_middleware_builder biomcp-0.9.3> PASS [ 0.069s] biomcp-cli sources::gtr::tests::parsing::write_validated_pair_rolls_back_first_file_when_second_write_fails biomcp-0.9.3> PASS [ 0.085s] biomcp-cli sources::gwas::tests::day_cache::a_repeat_gwas_search_inside_a_day_makes_no_request biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gwas::tests::parsing::associations_by_study_fallback_parse_path_can_read_fallback_response biomcp-0.9.3> PASS [ 0.078s] biomcp-cli sources::gwas::tests::day_cache::infinite_cache_mode_still_serves_the_aged_gwas_answer biomcp-0.9.3> PASS [ 11.816s] biomcp-cli cli::stale_json_note_tests::a_stale_clingen_prefetch_note_reaches_the_gene_card biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gwas::tests::parsing::associations_response_parses_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gwas::tests::parsing::de_opt_f64_accepts_string_numbers biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::gwas::tests::parsing::decode_json_optional_returns_none_on_not_found biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::gwas::tests::parsing::transient_http_failures_remap_to_source_unavailable biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::gwas::tests::parsing::decode_failures_remap_to_source_unavailable biomcp-0.9.3> PASS [ 1.877s] biomcp-cli mcp::shell::tests::mcp_who_region_search_error_carries_no_local_data_path biomcp-0.9.3> PASS [ 0.115s] biomcp-cli sources::gwas::tests::day_cache::cache_mode_off_never_serves_the_stored_gwas_answer biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::gwas::tests::parsing::v2_association_search_response_keeps_rows_and_provider_total biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::hpa::tests::construction::cell_line_rna_plan_rejects_an_unknown_group_and_lists_the_names biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::hpa::tests::construction::cell_line_rna_plan_targets_the_search_download_endpoint biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::gwas::tests::retired_endpoint::gone_by_rsid_endpoint_degrades_with_the_retirement_note biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::gwas::tests::retired_endpoint::not_found_by_rsid_endpoint_means_no_associations biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::hpa::tests::construction::protein_data_plan_normalizes_ensembl_id_before_request biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::hpa::tests::construction::protein_data_plan_rejects_invalid_ensembl_id biomcp-0.9.3> PASS [ 1.818s] biomcp-cli mcp::shell::typed_get_tests::clinvar_override_is_consistent_across_request_modes_and_mcp_surfaces biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::hpa::tests::parsing::decode_protein_data_xml_returns_none_for_not_found biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::hpa::tests::parsing::decode_protein_data_xml_accepts_xml_and_rejects_html biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::hpa::tests::parsing::parse_gene_hpa_handles_protein_atlas_wrapper_element biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::hpa::tests::parsing::parse_gene_hpa_rejects_a_nesting_bomb biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::hpa::tests::parsing::parse_gene_hpa_uses_only_top_level_canonical_blocks biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::hpo::tests::construction::search_term_ids_plan_builds_query_and_skips_empty_query biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::hpo::tests::construction::normalize_hpo_id_accepts_standard_forms biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::hpo::tests::construction::normalize_term_ids_dedupes_sorts_and_limits biomcp-0.9.3> PASS [ 0.477s] biomcp-cli sources::gencc::tests::generation_cleanup_prunes_a_wrong_mode_generation_directory biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::hpo::tests::construction::term_plan_builds_normalized_term_path biomcp-0.9.3> PASS [ 3.185s] biomcp-cli entities::trial::search::eligibility::keep_paths::a_failed_detail_fetch_keeps_the_study_and_reports_it biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::hpo::tests::construction::term_plan_rejects_invalid_id biomcp-0.9.3> PASS [ 0.152s] biomcp-cli sources::gwas::tests::day_cache::a_stored_body_that_fails_to_decode_is_replaced_by_a_fresh_fetch biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::hpo::tests::parsing::decode_json_response_maps_not_found_and_http_errors biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::hpo::tests::parsing::decode_json_response_maps_term_response biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::hpo::tests::parsing::decode_json_response_rejects_non_json_content_type biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::hpo::tests::parsing::decode_search_term_ids_maps_search_results biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::hpo::tests::parsing::decoded_search_rows_preserve_hpo_labels_and_provider_order biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::hpo::tests::parsing::search_envelope_requires_an_array_terms_field biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::interpro::tests::construction::domains_plan_rejects_empty_accession_and_clamps_limit biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::interpro::tests::construction::domains_plan_requests_expected_endpoint_and_page_size biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::interpro::tests::parsing::decode_domains_response_maps_rows_and_skips_blank_accessions biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::kegg::tests::construction::search_pathways_segments_build_find_pathway_request biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::kegg::tests::construction::get_pathway_segments_build_get_request_and_reject_empty_id biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::kegg::tests::construction::search_pathways_segments_rejects_empty_query biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::kegg::tests::parsing::parse_pathway_record_extracts_summary_and_genes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::kegg::tests::parsing::decode_text_response_maps_status_and_utf8_errors biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::kegg::tests::parsing::parse_search_response_dedupes_normalized_and_explicit_human_id biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::kegg::tests::parsing::parse_search_response_keeps_human_rows_only biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::kegg::tests::parsing::parse_search_response_normalizes_bare_reference_map_to_human biomcp-0.9.3> PASS [ 0.116s] biomcp-cli sources::gwas::tests::day_cache::no_cache_flag_never_serves_the_stored_gwas_answer biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::litsense2::tests::construction::legacy_request_plan_keeps_article_contract_shape biomcp-0.9.3> PASS [ 0.500s] biomcp-cli sources::gencc::tests::initial_fresh_and_conditional_304_lifecycle_uses_one_get biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::litsense2::tests::construction::pubmed_hydration_contract_still_builds_esummary_plan biomcp-0.9.3> PASS [ 0.178s] biomcp-cli sources::gwas::tests::day_cache::a_gwas_answer_a_day_old_is_refetched biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::litsense2::tests::construction::search_plan_sets_passage_path biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::litsense2::tests::construction::search_plan_rejects_bad_path biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::litsense2::tests::construction::search_plan_rejects_empty_query biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::litsense2::tests::construction::search_plan_sets_sentence_path_and_query biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::litsense2::tests::parsing::decode_json_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::litsense2::tests::parsing::decode_json_rejects_non_json_content_type biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::litvar::tests::construction::publications_plan_percent_encodes_the_variant_id biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::litsense2::tests::parsing::parses_sentence_response_from_real_fixture biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::litvar::tests::construction::publications_plan_encodes_the_non_rsid_variant_id_shape biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::litsense2::tests::parsing::paragraph_shape_tolerates_null_annotations_and_trimmed_optionals biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::litvar::tests::construction::autocomplete_plan_rejects_empty_and_oversized_queries biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::litvar::tests::construction::autocomplete_plan_sets_query_path_and_parameter biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::litvar::tests::construction::publications_plan_rejects_an_empty_variant_id biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::litvar::tests::parsing::an_empty_publications_reply_is_a_complete_answer biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::litvar::tests::parsing::an_entry_without_an_id_resolves_no_identity biomcp-0.9.3> PASS [ 0.014s] biomcp-cli sources::litvar::tests::parsing::a_coding_change_entry_keeps_its_change_out_of_the_protein_list biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::litvar::tests::parsing::parses_the_publications_captures biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::medlineplus::tests::construction::search_plan_returns_none_for_empty_query biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::medlineplus::tests::construction::search_plan_uses_expected_query_contract biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::medlineplus::tests::construction::search_plan_uses_retmax_parameter biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::litvar::tests::parsing::parses_the_rsid_autocomplete_capture biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::medlineplus::tests::construction::search_plan_accepts_max_retmax biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::medlineplus::tests::construction::search_plan_rejects_invalid_retmax_bounds biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::medlineplus::tests::parsing::decode_response_body_rejects_html_content_type biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::medlineplus::tests::parsing::decode_response_body_accepts_xml biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::medlineplus::tests::parsing::decode_response_body_rejects_invalid_utf8 biomcp-0.9.3> PASS [ 0.019s] biomcp-cli sources::litvar::tests::parsing::parses_the_cdkn2a_autocomplete_capture biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::medlineplus::tests::parsing::decode_response_body_reports_http_errors biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::medlineplus::tests::parsing::parse_topics_rejects_a_nesting_bomb biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::monarch::tests::construction::disease_models_plan_sets_object_genotype_category biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::monarch::tests::construction::direct_phenotype_support_plan_repeats_slice_and_term_ids_in_order biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::monarch::tests::construction::disease_phenotypes_plan_sets_subject_phenotype_category biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::monarch::tests::construction::disease_gene_associations_plan_sets_object_gene_category_and_limit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::monarch::tests::construction::phenotype_similarity_search_plan_normalizes_terms_and_sets_limit biomcp-0.9.3> PASS [ 0.014s] biomcp-cli sources::medlineplus::tests::parsing::parse_topics_decodes_inline_markup biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::monarch::tests::construction::plans_reject_invalid_disease_ids_and_empty_hpo_terms biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::decode_json_response_maps_5xx_to_source_unavailable biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::map_gene_associations_maps_rows_and_relationships biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::monarch::tests::parsing::direct_support_presence_and_completeness_fail_closed biomcp-0.9.3> PASS [ 0.545s] biomcp-cli sources::gencc::tests::expired_open_budget_completes_publish_and_deferred_cleanup biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::monarch::tests::parsing::map_phenotype_associations_keeps_hpo_rows_and_qualifiers biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::map_model_associations_maps_genotype_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::map_phenotype_matches_counts_raw_rows_and_keeps_first_disease_occurrence biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::monarch::tests::parsing::phenotype_decode_failures_remain_typed_errors biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::map_phenotype_matches_maps_scores biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::negated_or_filter_violating_rows_never_establish_support_or_absence biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_maps_html_response_to_service_error biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mutalyzer::tests::construction::normalize_request_plan_percent_encodes_path_segments biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mutalyzer::tests::construction::normalize_request_plan_encodes_transcript_path biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_maps_provider_invalid_input biomcp-0.9.3> PASS [ 0.547s] biomcp-cli sources::gencc::tests::generation_cleanup_retains_an_actively_leased_old_snapshot biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_maps_not_found_and_http_errors biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_empty_query biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_parses_success_and_warnings biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_maps_success_status_error_payload_to_invalid_input biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_offset_at_biothings_window biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_limit_out_of_range biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_offset_limit_window_overflow biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_overlong_query biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::decode_json_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mychem::tests::parsing::chebi_name_round_trips biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::decode_json_rejects_non_json_content_type biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_sets_path_and_core_query_params biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::mychem::tests::parsing::atc_classifications_support_string_and_list biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::drugbank_interactions_support_object_and_list biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mychem::tests::parsing::drugcentral_approval_supports_object_and_list biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::parses_query_response_from_real_fixture biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mychem::tests::parsing::pharm_class_supports_string_and_map biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::unii_supports_object_and_list biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mydisease::tests::construction::get_plan_rejects_path_query_separators_before_network biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::mydisease::tests::construction::get_plan_sets_path_and_fields biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mydisease::tests::construction::legacy_plan_helpers_keep_entity_tests_stable biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::mydisease::tests::construction::query_plan_retrieves_exact_synonym_leaf_fields_for_abbreviations biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::mydisease::tests::construction::query_plan_builds_id_lookup_shape biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mydisease::tests::construction::request_plans_preserve_validation_before_network biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mydisease::tests::construction::query_plan_sets_search_shape biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mydisease::tests::parsing::decode_get_hit_maps_not_found_status biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mydisease::tests::construction::xref_plan_builds_crosswalk_shapes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mydisease::tests::parsing::decode_json_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mydisease::tests::parsing::hpo_fields_deserialize_from_hit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mydisease::tests::parsing::parses_query_response_from_real_fixture biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::batch_symbols_plan_builds_post_form_preserving_input_order biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::mydisease::tests::parsing::parses_get_response_from_real_fixture biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mygene::tests::construction::batch_symbols_plan_rejects_empty_input biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::mygene::tests::construction::get_plan_rejects_empty_symbol biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::batch_symbols_plan_rejects_oversized_batch biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::get_plan_default_uses_minimal_fields_quoted_symbol_and_size_one biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::mygene::tests::construction::get_plan_rejects_invalid_symbol_characters biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::mygene::tests::construction::get_plan_rejects_overlong_symbol biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mygene::tests::construction::get_plan_with_transcripts_requests_transcript_and_protein_fields biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::search_plan_adds_chr_filter_only_when_non_empty biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mygene::tests::construction::search_plan_rejects_offset_plus_limit_overflow biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mygene::tests::construction::search_plan_sets_path_and_core_query_params biomcp-0.9.3> PASS [ 0.467s] biomcp-cli sources::gencc::tests::transient_cleanup_classification_retains_generations biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::search_plan_rejects_offset_at_or_above_window biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::decode_json_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::decode_json_rejects_non_json_content_type biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::dedupe_symbols_dedupes_repeated_ids_keeping_first_position biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::dedupe_symbols_maps_real_batch_in_input_order biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::mygene::tests::parsing::extract_uniprot_returns_none_for_empty_object biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::extract_uniprot_prefers_swiss_prot_over_trembl_synthetic biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::mygene::tests::parsing::extract_uniprot_prefers_swiss_prot_from_real_fixture biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mygene::tests::parsing::parses_get_response_fields_from_real_fixture biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mygene::tests::parsing::hgnc_wire_union_normalizes_and_rejects_malformed_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::consequence_filter_accepts_shorthand_and_aliases_and_rejects_unknown_and_empty biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::mygene::tests::parsing::parses_search_response_from_real_fixture biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::civic_pubmed_ids_accepts_only_complete_canonical_pubmed_citations biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::field_lists_request_snpeff_feature_type_in_get_and_search biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::get_plan_rejects_overlong_id biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::get_plan_serializes_explicit_genome_build biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::mygene::tests::parsing::symbol_map_parses_recorded_batch_and_drops_unrequested_keys biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::get_plan_builds_variant_path_with_get_fields biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::myvariant::tests::construction::impact_filter_uppercases_and_rejects_unknown_and_empty biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::get_plan_trims_and_rejects_empty_id biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::population_filter_lowercases_and_rejects_unknown_and_empty biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::query_plan_matches_captured_variant_identity_requests biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::query_plan_rejects_offset_at_window biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::query_plan_rejects_offset_plus_limit_overflow biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::query_plan_trims_query_and_rejects_empty biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_builds_exact_hgvsc_clause_and_prefixes_c biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::query_plan_sets_path_and_core_query_params biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_consequence_clause_uses_snpeff_effect_for_every_supported_term biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_gerp_min_clause biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::review_status_filter_maps_stars_and_aliases_and_rejects_unknown_and_empty biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_builds_gene_and_hgvsp_clauses_joined_with_and biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_builds_gene_residue_alias_clause biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_impact_clause_uppercases biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_keeps_already_prefixed_hgvsc biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_lof_has_missing_and_therapy_clauses_compose biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_maps_field_aliases_for_presence_and_absence biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_lowercases_rsid_clause biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_matches_captured_braf_filter_requests biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::myvariant::tests::construction::search_plan_max_frequency_without_population_uses_global_af biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_max_frequency_with_population_scopes_to_population_af biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_protein_alias_requires_gene biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_prefixes_hgvsp_with_p_when_missing biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_invalid_consequence biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_filters_that_require_a_missing_field biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_min_cadd_clause biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_invalid_gene_symbol_characters biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_invalid_presence_and_absence_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_negative_min_cadd biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_invalid_review_status biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_non_finite_min_cadd biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_non_finite_gerp_min biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_offset_at_window biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_out_of_range_max_frequency biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_when_no_filters_present biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_offset_plus_limit_overflow biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_out_of_range_revel_min biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::myvariant::tests::construction::search_plan_significance_clause_uses_canonical_value biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_review_status_clause_quotes_provider_phrase_for_every_alias biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_tumor_site_and_condition_clauses biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::significance_filter_accepts_aliases_and_rejects_unknown_and_empty biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_revel_min_clause biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_sets_path_size_from_and_fields biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_uses_bounded_gerp_projection biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::clinvar_rcv_deserializes_array biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::clinvar_rcv_defaults_to_empty_when_missing biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::clinvar_rcv_deserializes_single_object biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::gnomad_nested_fields_deserialize biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::float_or_vec_first_returns_single_or_head_of_list biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::decode_json_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::myvariant::tests::parsing::decode_json_rejects_html_content_type biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::parses_receipted_braf_filter_searches biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::parses_receipted_braf_get_hit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_value_passes_object_through biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_value_empty_array_is_not_found biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::parses_receipted_variant_identity_searches biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::parses_search_response_total_and_hits_from_real_fixture biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::myvariant::tests::parsing::parses_get_hit_nested_fields_from_real_fixture biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_value_takes_first_array_element biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_value_scalar_is_api_error biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_values_preserves_object_array_and_empty_shapes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::snpeff_annotation_projection_isolated_and_bounded biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::myvariant::tests::parsing::snpeff_interaction_rows_are_skipped_and_transcript_rows_kept biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::myvariant::tests::parsing::snpeff_interaction_rows_past_the_bound_drop_the_list biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::ncbi_efetch::clinvar::tests::hsd17b4_returns_current_two_submitter_aggregate_and_both_scvs biomcp-0.9.3> PASS [ 0.015s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_condition_boundary_is_accepted_and_plus_one_rejected biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::ncbi_efetch::clinvar::tests::parses_domains_current_noncontributing_rows_and_trait_mappings biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::ncbi_efetch::clinvar::tests::record_level_germline_classification_is_absent_when_the_record_has_none biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::clinvar::tests::rejects_hostile_invalid_and_mismatched_documents biomcp-0.9.3> PASS [ 0.026s] biomcp-cli sources::ncbi_efetch::clinvar::clinvar_render_tests::clinvar_markdown_keeps_vcv_rcv_and_scv_statuses_and_domains_distinct biomcp-0.9.3> PASS [ 0.027s] biomcp-cli sources::ncbi_efetch::clinvar::tests::cumulative_public_text_budget_accepts_exact_and_rejects_plus_one biomcp-0.9.3> PASS [ 0.025s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_text_and_list_boundaries_are_enforced_without_partial_records biomcp-0.9.3> PASS [ 0.017s] biomcp-cli sources::ncbi_efetch::clinvar::tests::parses_record_level_germline_classification_from_recorded_tp53_record biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::clinvar::tests::request_plan_uses_numeric_variation_identity_and_vcv_mode biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::clinvar::tests::response_requires_success_and_xml_content_type biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::clinvar::tests::too_many_requests_is_distinguishable_from_other_http_failures biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::construction::full_text_xml_plan_empty_input_returns_none biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::ncbi_efetch::tests::construction::full_text_xml_plan_adds_api_key_when_configured biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::ncbi_efetch::clinvar::tests::supplied_invalid_numeric_and_contribution_attributes_fail_closed biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::construction::full_text_xml_plan_uses_numeric_pmcid biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::construction::full_text_xml_plan_validates_pmcid_shape biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::parsing::decode_text_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::construction::normalize_pmcid_accepts_prefixed_and_numeric_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::parsing::decode_text_rejects_invalid_utf8 biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::parsing::normalize_article_xml_extracts_article_from_wrapped_fixture biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::parsing::decode_text_treats_documented_absence_statuses_as_empty biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::parsing::normalize_article_xml_keeps_original_malformed_and_entity_bearing_xml biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::parsing::normalize_article_xml_keeps_unwrapped_xml biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::ncbi_efetch::tests::parsing::normalize_article_xml_returns_none_for_blank_input biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::doi_to_pmcid_plan_builds_lookup_query biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::doi_to_pmcid_plan_validates_shape biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::pmid_to_pmcid_plan_builds_lookup_query biomcp-0.9.3> PASS [ 0.052s] biomcp-cli sources::ncbi_efetch::clinvar::tests::duplicate_assertion_ids_reject_trait_mapping_amplification biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ncbi_idconv::tests::construction::pmid_to_pmcid_plan_adds_api_key_when_configured biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::pmid_to_pmcid_plan_empty_input_returns_none biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::pmid_to_pmcid_plan_validates_numeric_input biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::parsing::decode_json_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::parsing::extract_first_pmcid_returns_none_for_missing_or_blank_value biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::get_plan_executes_the_exact_local_detail_plan_with_one_credential_header biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ncbi_idconv::tests::parsing::parses_lookup_response_from_real_fixture biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ncbi_idconv::tests::parsing::extract_first_pmcid_trims_non_empty_value biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_concept_id_disease_maps_to_concept_param biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_current_trial_status_variant biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_includes_interventions_and_biomarkers_when_present biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::nci_cts::tests::construction::search_plan_includes_sites_org_name biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::nci_cts::tests::construction::search_plan_keyword_disease_maps_to_keyword_param biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_sets_method_path_and_api_key_header biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_serializes_status_phase_and_geo_contract_params biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::nci_cts::tests::construction::search_plan_skips_blank_phases biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::nci_cts::tests::parsing::decode_json_maps_http_error_for_nci biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::nci_cts::tests::parsing::detail_response_checks_status_before_parsing_and_never_stores_the_body biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::nci_cts::tests::parsing::detail_response_maps_local_failures_without_source_values biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::nci_cts::tests::parsing::detail_response_maps_the_resource_limit_to_narrow_recovery biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::nci_cts::tests::parsing::hits_falls_back_to_trials_when_data_empty biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::parsing::hits_prefers_data_over_trials biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::nci_cts::tests::parsing::detail_response_rejects_identity_and_old_lenient_shapes biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::nih_reporter::tests::construction::exact_phrase_search_text_escapes_quotes_and_backslashes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::nci_cts::tests::parsing::total_accepts_total_count_alias biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::nih_reporter::tests::construction::funding_plan_builds_approved_post_body biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::nih_reporter::tests::parsing::decode_json_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::nih_reporter::tests::construction::funding_plan_rejects_empty_query biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::nih_reporter::tests::construction::recent_nih_fiscal_years_roll_over_on_october_boundary biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::nih_reporter::tests::parsing::decode_json_rejects_non_json_content_type biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::nih_reporter::tests::parsing::deduplicate_grants_truncates_to_top_ten_after_sorting biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::nih_reporter::tests::parsing::deduplicate_grants_groups_by_core_project_num_then_project_num biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::nih_reporter::tests::parsing::map_project_year_row_prefers_contact_pi_then_contact_investigator_then_first_pi biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ols4::tests::construction::search_request_plan_keeps_empty_query_as_no_request biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ols4::tests::parsing::decode_search_response_maps_docs biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::ols4::tests::construction::search_request_plan_exposes_canonical_query_contract biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::nih_reporter::tests::parsing::parses_funding_response_fixture_and_maps_section biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ols4::tests::parsing::decode_search_response_maps_http_and_content_type_errors biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::oncokb::tests::construction::annotate_plan_requires_api_key biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::oncokb::tests::construction::annotate_plan_requires_gene_and_alteration biomcp-0.9.3> PASS [ 12.116s] biomcp-cli cli::stale_json_note_tests::a_stale_article_search_json_states_the_cache_age_in_meta_notes biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::oncokb::tests::construction::protein_change_attempts_try_original_and_prefixed_forms_without_duplicates biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::oncokb::tests::construction::annotate_plan_sets_query_and_auth_header biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::oncokb::tests::parsing::decode_json_response_maps_http_errors_with_excerpt biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::oncokb::tests::parsing::decode_json_response_maps_invalid_json biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::oncokb::tests::parsing::parses_annotation_fixture biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::opencitations::tests::doi_normalization_matches_the_jats_reference_rules biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::opencitations::tests::oci_and_creation_validation_fails_closed biomcp-0.9.3> PASS [ 0.042s] biomcp-cli sources::nci_cts::tests::parsing::parses_real_search_response_total_and_hits biomcp-0.9.3> PASS [ 0.115s] biomcp-cli sources::myvariant::tests::parsing::snpeff_long_tail_is_drained_without_projecting_tail_objects_or_strings biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::faers_count_plans_try_exact_fallback biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::escape_query_value_escapes_lucene_special_chars biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::openfda::tests::construction::drug_and_device_plans_set_expected_paths biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::faers_search_plan_sets_query_limit_skip_and_key biomcp-0.9.3> PASS [ 0.116s] biomcp-cli sources::ncbi_efetch::clinvar::tests::empty_status_child_cannot_bypass_shared_attribute_budget biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::openfda::tests::construction::label_elements_search_plan_scopes_the_identity_field biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::openfda::tests::construction::label_generic_exact_search_plan_matches_the_plain_ingredient_field biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::plans_validate_limits_and_required_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::label_search_plan_escapes_drug_name_and_sorts biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::recall_shortage_and_device_event_plans_sort_latest_first biomcp-0.9.3> PASS [ 0.126s] biomcp-cli sources::ncbi_efetch::clinvar::tests::many_classification_children_fail_before_shared_text_is_cloned biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::openfda::tests::parsing::count_value_detects_keyword_field_retry biomcp-0.9.3> PASS [ 0.145s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_rcv_and_scv_boundaries_are_accepted_and_plus_one_rejected biomcp-0.9.3> PASS [ 0.049s] biomcp-cli sources::opencitations::tests::references_accept_an_empty_list_as_no_known_edge biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::openfda::tests::parsing::decode_json_optional_maps_404_http_and_json_errors biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::openfda::tests::parsing::device_responses_decode_510k_and_pma_rows biomcp-0.9.3> PASS [ 0.053s] biomcp-cli sources::opencitations::tests::references_request_uses_the_normalized_doi_path biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::openfda::tests::parsing::drugsfda_response_decodes_application_rows biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::openfda::tests::parsing::faers_and_count_responses_decode biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_associated_targets_degrades_when_associated_targets_missing biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_associated_targets_maps_efo_lookup_result biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::opentargets::tests::disease_associated_targets_egfr_lung biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::opentargets::tests::disease_associated_targets_maps_scores biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_genes_plan_builds_graphql_request biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_id_from_search_response_prefers_efo_hit biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_prevalence_maps_frequency_evidence biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_prevalence_plan_builds_graphql_request biomcp-0.9.3> PASS [ 0.068s] biomcp-cli sources::openfda::tests::day_cache::a_repeat_adverse_event_count_inside_a_day_makes_no_request biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::opentargets::tests::drug_sections_maps_osimertinib biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::opentargets::tests::drug_sections_degrades_when_indications_missing biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::opentargets::tests::drug_sections_maps_targets_and_indications biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::opentargets::tests::drug_sections_plan_builds_graphql_request biomcp-0.9.3> PASS [ 0.070s] biomcp-cli sources::openfda::tests::day_cache::a_repeat_label_search_inside_a_day_makes_no_request biomcp-0.9.3> PASS [ 0.068s] biomcp-cli sources::openfda::tests::day_cache::infinite_cache_mode_keeps_the_aged_label_warning_and_note biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::opentargets::tests::drug_sections_propagates_graphql_error_message biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::opentargets::tests::search_disease_plan_builds_graphql_request biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::opentargets::tests::normalize_disease_id_handles_known_forms biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::opentargets::tests::search_target_plan_builds_graphql_request biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::opentargets::tests::target_clinical_context_degrades_when_drug_candidates_missing biomcp-0.9.3> PASS [ 0.096s] biomcp-cli sources::opencitations::tests::references_reject_an_oversize_body biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::opentargets::tests::target_clinical_context_collects_diseases_and_drugs biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::opentargets::tests::target_clinical_context_plan_builds_graphql_request biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::opentargets::tests::target_druggability_context_plan_builds_graphql_request biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::opentargets::tests::target_druggability_context_returns_default_when_target_missing biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::opentargets::tests::target_druggability_context_groups_modalities_and_safety_summary biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::opentargets::tests::target_id_from_search_response_prefers_exact_symbol_match biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::orcid::tests::an_absent_group_key_fails_decoding biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::orcid::tests::closing::a_group_without_summaries_is_a_contract_error biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::orcid::tests::closing::a_present_year_outside_1000_9999_is_a_contract_error biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::orcid::tests::closing::a_declared_oversize_person_body_fails_the_pre_read_check_in_one_get biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::orcid::tests::closing::client_errors_are_never_retried biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::orcid::tests::closing::identifiers_from_excluded_locations_never_reach_the_selected_work biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::orcid::tests::closing::configured_person_read_records_the_bearer_header biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::orcid::tests::closing::not_found_is_a_sanitized_single_get biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::orcid::tests::closing::one_and_sixty_four_summaries_are_the_group_bound_edges biomcp-0.9.3> PASS [ 0.022s] biomcp-cli sources::orcid::tests::closing::a_streamed_oversize_person_body_fails_once_without_retry biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::orcid::tests::closing::representative_ties_prefer_the_lowest_put_code_then_original_order biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::orcid::tests::closing::rejected_credentials_fail_immediately_without_retry biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::orcid::tests::closing::tokenless_person_read_serves_the_recorded_reply_without_bearer_auth biomcp-0.9.3> PASS [ 0.112s] biomcp-cli sources::openfda::tests::day_cache::cache_mode_off_never_serves_the_stored_label_answer biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::orcid::tests::closing::works_visibility_accepts_both_spellings_of_public_and_filters_the_rest biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::orcid::tests::content_type_gate_accepts_only_the_two_orcid_media_types biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::orcid::tests::person_name_visibility_accepts_both_spellings_of_public_and_refuses_the_rest biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::orcid::tests::person_path_and_public_name_precedence biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::orcid::tests::request_plans_carry_exact_paths_headers_and_bearer_mode_only biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::orcid::tests::token_classification_matches_the_frozen_three_states biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::orcid::tests::works_root_path_mismatch_fails_the_contract biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::orcid::tests::works_validation_selects_representatives_and_rejects_bad_shapes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ordinary_url_policy::tests::confines_redirects_to_the_request_origin biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::ordinary_url_policy::tests::override_origin_requires_valid_http_without_credentials biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ordinary_url_policy::tests::recognizes_base_and_full_url_provider_overrides biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::pharmacodb::tests::construction::each_filter_sends_only_the_ids_it_names biomcp-0.9.3> PASS [ 0.040s] biomcp-cli sources::orcid::tests::closing::tokenless_works_read_serves_the_recorded_reply_without_bearer_auth biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::construction::a_blank_lookup_value_fails_before_any_request biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::ordinary_url_policy::tests::requires_public_https_unless_origin_is_explicitly_overridden biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::construction::every_plan_posts_to_the_one_graphql_path biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::construction::lookup_plans_carry_their_one_variable biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::construction::experiments_plans_send_all_true_with_an_id_argument_and_no_name_argument biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::construction::the_counts_projection_asks_for_the_id_and_the_dataset_name_only biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::construction::the_recorded_dataset_list_holds_the_ten_pharmacodb_datasets biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::pharmacodb::tests::construction::the_row_projection_leaves_out_dss2_and_dss3 biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::limits::the_cap_sits_above_every_measured_pharmacodb_body biomcp-0.9.3> PASS [ 0.157s] biomcp-cli sources::openfda::tests::day_cache::an_openfda_key_keeps_the_cache_bypassed biomcp-0.9.3> PASS [ 0.164s] biomcp-cli sources::openfda::tests::day_cache::a_label_answer_a_day_old_is_refetched biomcp-0.9.3> PASS [ 0.166s] biomcp-cli sources::openfda::tests::day_cache::an_adverse_event_count_a_day_old_is_refetched biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::parsing::an_html_body_served_with_http_200_is_a_provider_error biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::pharmacodb::tests::parsing::a_cell_line_pharmacodb_does_not_hold_is_a_miss_and_not_a_failure biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::pharmacodb::tests::parsing::a_compound_pharmacodb_does_not_hold_is_a_miss_and_not_a_failure biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::pharmacodb::tests::parsing::another_graphql_error_is_a_source_error_naming_the_url_and_the_operation biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::parsing::the_cell_line_name_fixture_reaches_hl60tb biomcp-0.9.3> PASS [ 0.030s] biomcp-cli sources::pharmacodb::tests::limits::a_body_over_the_cap_is_refused_while_it_streams biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::pharmacodb::tests::parsing::the_cell_line_counts_fixture_sums_per_dataset_in_name_order biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::parsing::the_cell_line_uid_fixture_carries_the_molm13_record biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::parsing::the_compound_fixture_carries_venetoclax biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::parsing::the_pair_fixture_carries_both_venetoclax_rows_for_molm13 biomcp-0.9.3> PASS [ 0.023s] biomcp-cli sources::pharmacodb::tests::parsing::the_cell_line_row_fixture_keeps_every_row_and_every_null_metric biomcp-0.9.3> PASS [ 0.016s] biomcp-cli sources::pharmacodb::tests::parsing::the_compound_counts_fixture_sums_the_venetoclax_datasets biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pharmgkb::tests::construction::annotation_plans_validate_inputs biomcp-0.9.3> PASS [ 0.112s] biomcp-cli sources::orcid::tests::closing::an_expired_deadline_admits_no_second_attempt_and_paces_the_first biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pharmgkb::tests::construction::clinpgx_default_and_annotation_queries_follow_the_live_contract biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pharmgkb::tests::construction::drug_annotation_plans_cover_three_annotation_kinds biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pharmgkb::tests::parsing::annotation_response_applies_the_local_page_after_mapping biomcp-0.9.3> PASS [ 0.053s] biomcp-cli sources::pharmacodb::tests::limits::a_body_at_the_cap_still_reads biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pharmgkb::tests::parsing::annotation_response_maps_ids_titles_levels_and_urls biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::pharmgkb::tests::construction::gene_annotation_plans_normalize_gene_and_properties biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::pharmgkb::tests::parsing::dedupe_and_limit_keeps_unique_annotation_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pharmgkb::tests::parsing::decode_json_optional_maps_404_http_content_type_and_json_errors biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pmc_article::tests::bot_challenge_markers_need_both_recorded_title_words biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pmc_article::tests::linked_http_statuses_fold_to_closed_coverage_outcomes biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::pmc_article::tests::pow_markers_are_case_insensitive biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::pmc_article::tests::exact_provider_routes_match_pmcid_and_preserve_signed_fetch_url biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::pmc_oa::tests::construction::oa_archive_manifest_plan_empty_input_returns_none biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::construction::oa_archive_manifest_plan_lists_versioned_s3_prefix biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::construction::oa_archive_manifest_plan_rejects_overlong_id biomcp-0.9.3> PASS [ 0.038s] biomcp-cli sources::pmc_article::tests::equal_identity_routes_continue_until_one_returns_bytes biomcp-0.9.3> PASS [ 0.042s] biomcp-cli sources::pmc_article::tests::declared_binary_html_is_not_returned_as_bytes biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pmc_oa::tests::parsing::decode_archive_bytes_preserves_success_bytes_and_maps_errors biomcp-0.9.3> PASS [ 0.042s] biomcp-cli sources::pmc_article::tests::recorded_pow_interstitial_is_not_returned_as_bytes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::pmc_oa::tests::parsing::decode_text_projects_http_errors_as_package_route_failures biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::direct_buffered_archive_limit_is_sanitized biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::empty_s3_version_listing_is_healthy_package_absence biomcp-0.9.3> PASS [ 0.032s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_rejects_single_metadata_record_over_limit biomcp-0.9.3> PASS [ 0.036s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_accepts_exact_member_count_limit biomcp-0.9.3> PASS [ 0.035s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_rejects_too_many_members biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::pmc_oa::tests::parsing::extract_first_nxml_reads_xml_entry biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::malformed_or_unexpected_manifest_is_failure_not_absence biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pmc_oa::tests::parsing::parse_archive_manifest_xml_rejects_a_nesting_bomb biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pmc_oa::tests::parsing::parses_receipted_s3_metadata_to_xml_object biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::parses_s3_version_listing_to_metadata_route biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::text_and_fulltext_archive_decoders_reject_invalid_utf8 biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::consumer_matrix_enumerates_valid_origins_and_shared_rejections biomcp-0.9.3> PASS [ 0.111s] biomcp-cli sources::pmc_article::tests::rejected_targets_are_precontact biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::provider_url_policy::tests::cspec_fixture_origin_requires_a_pathless_loopback_origin biomcp-0.9.3> PASS [ 0.174s] biomcp-cli sources::pharmacodb::tests::limits::the_k562_counts_case_parses_and_sums_to_every_row biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::dns_answer_set_is_rejected_if_any_answer_is_forbidden biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::provider_url_consumer_ownership_ratchet_names_every_fetch_site biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::provider_url_policy::tests::provider_vouched_pdf_policy_accepts_publisher_hosts_and_keeps_transport_guards biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_cgnat_range_without_blocking_adjacent_public_addresses biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_encoded_ipv4_literal_hosts_after_url_canonicalization biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_ipv4_compatible_ipv6_with_forbidden_embedded_address biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::provider_url_policy::tests::rejects_loopback_private_link_local_metadata_and_mapped_addresses biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_nat64_with_forbidden_embedded_address biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_scheme_credentials_port_and_ip_literals_without_echoing_url biomcp-0.9.3> PASS [ 0.142s] biomcp-cli sources::pmc_article::tests::unsafe_redirect_is_rejected_before_redirect_target_contact biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::provider_url_policy::tests::selected_fixture_origin_allows_only_exact_ip_loopback biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::citation_plan_rejects_non_numeric_pmid biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pubmed::tests::construction::citation_plan_sets_required_query_params_and_api_key biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::esearch_plan_applies_date_range_params biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::esearch_plan_sets_required_query_params_and_api_key biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::pubmed::tests::construction::esearch_plan_validates_term_and_retmax biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::esummary_plan_handles_empty_and_blank_ids biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::esummary_plan_sets_ids_and_api_key biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pubmed::tests::parsing::citation_decoder_accepts_xml_media_types_and_hides_bodies biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::citation_parser_rejects_misses_errors_and_invalid_required_shape biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pubmed::tests::parsing::citation_request_errors_are_payload_free_and_total biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::citation_without_mesh_is_available_empty biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::decode_json_maps_http_and_content_type_errors biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::esearch_handles_empty_idlist_and_rejects_bad_count biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pubmed::tests::parsing::esummary_strictly_validates_uids_and_entries biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::pubmed::tests::parsing::parses_a_real_pubmed_citation_capture biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::parses_citation_authors_affiliations_orcid_and_mesh biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::parses_esearch_fixture biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pubmed::tests::parsing::parses_esummary_fixture_in_requested_order biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::seven_variant_corpus_pubmed_requests_and_decoders_remain_production_exact biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubtator::tests::construction::autocomplete_plan_sets_query_and_validates_input biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubtator::tests::construction::export_biocjson_plan_sets_pmids_and_optional_api_key biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pubtator::tests::construction::legacy_request_plans_keep_article_contract_shape biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubtator::tests::construction::search_plan_sets_text_paging_sort_and_auth biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubtator::tests::construction::search_plan_validates_query_and_page_size biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubtator::tests::parsing::decode_json_maps_http_error_status_with_excerpt biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::pubtator::tests::parsing::db_id_rsid_reads_only_the_segment_before_the_marker biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubtator::tests::parsing::decode_json_rejects_non_json_content_type biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubtator::tests::parsing::parses_autocomplete_response_fixture biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::pubtator::tests::parsing::parses_30738221_capture_with_locations_and_variant_rsids biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::pubtator::tests::parsing::parses_real_export_capture_and_retains_disease_normalized_id biomcp-0.9.3> PASS [ 0.115s] biomcp-cli sources::provider_url_policy::tests::redirect_target_is_revalidated_before_target_contact biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::pubtator::tests::parsing::parses_search_response_fixture_and_stringifies_numeric_pmid biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::pubtator::tests::parsing::parses_rsid_autocomplete_capture_and_extracts_the_db_id_rsid biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::pubtator::tests::parsing::search_result_trims_empty_string_pmids_to_none biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::quickgo::tests::construction::annotations_plan_rejects_empty_gene_product_id biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::quickgo::tests::construction::annotations_plan_sets_expected_query_params biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::quickgo::tests::construction::terms_plan_sorts_dedupes_and_skips_empty_input biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::quickgo::tests::parsing::decode_annotations_response_maps_results biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::quickgo::tests::parsing::decode_terms_response_maps_term_metadata biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::article_source_urls_keep_their_live_pacing_policies biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::cellosaurus_urls_resolve_to_the_cellosaurus_policy biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::exact_unpaced_origin_skips_waiting_and_state_updates biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::rate_limit::tests::kegg_urls_resolve_to_kegg_policy biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::rate_limit::tests::litsense2_policy_uses_one_second_interval biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::litsense2_urls_resolve_to_litsense2_policy biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::rate_limit::tests::nih_reporter_policy_uses_one_second_interval biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::rate_limit::tests::nih_reporter_urls_resolve_to_nih_reporter_policy biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::pubmed_eutils_interval_uses_key_aware_values biomcp-0.9.3> PASS [ 0.190s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_skips_unsafe_and_empty_members_but_rejects_oversized_members biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::pubtator_interval_stays_at_three_per_second_with_or_without_the_key biomcp-0.9.3> PASS [ 0.114s] biomcp-cli sources::pubmed::tests::parsing::citation_parser_enforces_node_and_entity_limits biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::rate_limit::tests::rate_limit_keeps_same_host_prefixes_independent biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::rate_limit::tests::semantic_scholar_interval_uses_key_aware_values biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::rate_limit_uses_longest_matching_prefix biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::unpaced_origin_accepts_only_complete_ip_loopback_origins biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::rate_limit::tests::unpaced_origin_match_requires_exact_scheme_ip_and_effective_port biomcp-0.9.3> PASS [ 0.616s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_body_boundary_is_accepted_and_plus_one_rejected biomcp-0.9.3> PASS [ 0.399s] biomcp-cli sources::orcid::tests::closing::ten_thousand_groups_is_the_hard_bound biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::reactome::tests::construction::pathway_plans_build_expected_paths_and_reject_empty_ids biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::reactome::tests::construction::search_pathways_plan_preserves_limit_one_probe biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::reactome::tests::construction::search_pathways_plan_rejects_empty_query biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::reactome::tests::parsing::decode_json_response_maps_http_and_json_errors biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::reactome::tests::construction::search_pathways_plan_sets_query_species_and_page_size biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::reactome::tests::parsing::map_contained_events_maps_display_names biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::seer::tests::construction::site_catalog_plan_fetches_variable_formats biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::reactome::tests::parsing::map_search_response_extracts_entries_and_limits_results biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::reactome::tests::parsing::strip_html_removes_tags_and_extra_spaces biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::seer::tests::construction::survival_plan_sets_site_and_required_filters biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::seer::tests::parsing::body_limit_error_remains_source_unavailable biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::seer::tests::parsing::decode_double_encoded_survival_payload_and_filter_all_ages biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::seer::tests::parsing::decode_json_response_maps_bad_status_and_content_type_to_source_unavailable biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::seer::tests::parsing::rejects_response_when_requested_site_code_is_not_returned biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::seer::tests::parsing::resolve_site_prefers_exact_alias_and_rejects_ambiguous_matches biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::seer::tests::parsing::site_catalog_decodes_live_variable_formats biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::auth_mode_reports_keyed_or_shared_pool_without_exposing_key biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::semantic_scholar::tests::construction::author_detail_and_papers_plans_encode_ids_and_preserve_continuation biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_batch_plan_posts_ordered_ids_at_provider_ceiling biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::construction::author_id_dot_segments_are_rejected_before_request_construction biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::construction::author_papers_full_plan_uses_the_frozen_rich_field_list biomcp-0.9.3> PASS [ 0.016s] biomcp-cli sources::semantic_scholar::tests::construction::author_execution_methods_send_plans_and_decode_typed_responses biomcp-0.9.3> PASS [ 0.091s] biomcp-cli sources::rate_limit::tests::rate_limit_uses_default_policy_for_unknown_prefix biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_papers_page_validation_accepts_terminal_continuing_and_empty_pages biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_papers_page_validation_fails_closed_for_every_malformed_shape biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_plans_validate_required_input_and_endpoint_boundaries biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_search_plan_sets_query_fields_offset_limit_and_auth biomcp-0.9.3> PASS [ 0.090s] biomcp-cli sources::rate_limit::tests::unpaced_origin_keeps_other_ports_paced biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::credential_attachment_requires_canonical_or_explicit_unsafe_fixture_origin biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::citation_reference_and_recommendation_plans_set_paths biomcp-0.9.3> PASS [ 0.091s] biomcp-cli sources::rate_limit::tests::unsignaled_loopback_origin_remains_paced biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::semantic_scholar::tests::construction::legacy_search_request_plan_keeps_article_contract_shape biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::paper_batch_plan_posts_ids_and_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::paper_batch_plan_validates_id_count biomcp-0.9.3> PASS [ 0.121s] biomcp-cli sources::rate_limit::tests::provider_limit_covers_actual_downstream_http_work biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::construction::paper_search_bulk_plan_uses_the_strict_bulk_endpoint biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::paper_detail_plan_sets_encoded_id_fields_and_auth_header biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::construction::paper_search_plan_sets_query_limit_year_and_auth biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::paper_search_plan_validates_query_and_limit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::recommendations_plan_posts_positive_and_negative_ids biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::parsing::authenticated_http_error_keeps_status_and_sanitizes_payload biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::semantic_scholar::tests::construction::transport_failures_keep_legacy_api_code_with_source_context biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::author_response_types_keep_null_data_explicit_and_map_bad_responses biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::parsing::graph_pagination_distinguishes_required_offset_from_optional_next biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::graph_pagination_rejects_non_unsigned_wire_values biomcp-0.9.3> PASS [ 0.129s] biomcp-cli sources::rate_limit::tests::rate_limit_blocks_second_request_for_same_prefix biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_author_batch_fixture_with_positional_unavailable_row biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_author_detail_and_search_fixtures_without_inventing_identity biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_author_papers_identifiers_byline_and_continuation biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_batch_fixture_with_none_rows biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_graph_and_recommendation_fixtures biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_paper_detail_fixture biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_search_fixture_and_defaults_null_data biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::shared_pool_429_returns_dedicated_guidance biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::semantic_scholar::tests::parsing::receipted_20516115_graph_captures_keep_provider_identity_and_all_recommendations biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::string::tests::construction::interactions_plan_rejects_empty_identifiers biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::string::tests::construction::interactions_plan_sets_expected_query_params biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::string::tests::parsing::decode_interactions_response_maps_camel_case_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::string::tests::parsing::decode_interactions_response_maps_underscore_fields biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::tests::a_spawned_task_inherits_the_command_note_scope biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::tests::append_stale_serve_notes_to_text_adds_plain_cache_note_lines biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::append_stale_serve_notes_to_text_leaves_bodies_without_notes_alone biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::tests::clingen_runtime::car_outage_does_not_overwrite_erepo_healthy_empty_or_version biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::tests::clingen_runtime::cspec_and_ldh_transport_failures_are_source_labelled_and_do_not_erase_peer_results biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::tests::ensure_json_content_type_accepts_json biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::tests::clingen_runtime::receipt_backed_ldh_captures_reach_the_production_medium_and_direct_clients biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::tests::ensure_json_content_type_allows_non_json_compat_mode biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::ensure_json_content_type_rejects_html biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::tests::parse_cache_mode_returns_no_store_for_off biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::note_stale_cache_serve_ignores_absent_and_malformed_markers biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::tests::note_stale_cache_serve_records_the_age_and_strips_the_header biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::parse_cache_mode_returns_force_cache_for_infinite biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::parse_cache_mode_returns_none_for_default_or_unset biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::parse_cache_mode_returns_none_for_unknown_values biomcp-0.9.3> PASS [ 0.027s] biomcp-cli sources::tests::build_http_client_migrates_then_clears_pre_limit_legacy_cache biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::tests::parse_retry_after_header_parses_integer_seconds biomcp-0.9.3> PASS [ 0.032s] biomcp-cli sources::tests::build_http_client_does_not_restore_legacy_cache_after_epoch_and_clear biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::tests::provider_network::cache_security::build_http_client_bypasses_directory_symlink_inside_content_tree biomcp-0.9.3> PASS [ 0.015s] biomcp-cli sources::tests::provider_network::cache_security::build_http_client_repairs_unrelated_permissive_cache_state biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::tests::provider_network::fda_orphan_cache_modes_and_expiry_are_exact biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::tests::provider_network::contended_maintenance_deadline_publishes_no_partial_client_or_cache_tree biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::provider_network::expired_invocation_cannot_build_a_cache_fallback_client biomcp-0.9.3> PASS [ 0.035s] biomcp-cli sources::tests::provider_network::cache_security::concurrent_constructor_does_not_wait_for_an_existing_shared_operation biomcp-0.9.3> PASS [ 0.050s] biomcp-cli sources::tests::provider_network::fda_orphan_form_cache_is_independent_of_prior_candidate_set biomcp-0.9.3> PASS [ 0.040s] biomcp-cli sources::tests::provider_network::fda_orphan_missing_post_write_metadata_fails_closed biomcp-0.9.3> PASS [ 0.066s] biomcp-cli sources::tests::provider_network::fda_orphan_infinite_miss_stores_and_failed_http_does_not_cache biomcp-0.9.3> PASS [ 0.084s] biomcp-cli sources::tests::provider_network::fda_orphan_caps_forms_concurrency_and_off_bypasses_cache biomcp-0.9.3> PASS [ 0.035s] biomcp-cli sources::tests::provider_network::lazy_cache_initialization_settles_before_deadline_releases_its_locks biomcp-0.9.3> PASS [ 0.057s] biomcp-cli sources::tests::provider_network::fda_orphan_normal_cache_is_fresh_then_refreshes_when_expired biomcp-0.9.3> PASS [ 0.047s] biomcp-cli sources::tests::provider_network::legacy_cache_upgrade_waits_for_local_source_lease biomcp-0.9.3> PASS [ 0.140s] biomcp-cli sources::tests::provider_network::a_later_invocation_retries_cache_setup_after_a_failed_expired_invocation biomcp-0.9.3> PASS [ 0.140s] biomcp-cli sources::tests::provider_network::cached_client_fresh_hit_and_request_no_store_bypass_writes biomcp-0.9.3> PASS [ 0.044s] biomcp-cli sources::tests::provider_network::middleware_put_settles_after_publication_before_releasing_key_lock biomcp-0.9.3> PASS [ 0.035s] biomcp-cli sources::tests::provider_network::parallel_sources_share_one_cache_construction_and_epoch_acquisition biomcp-0.9.3> PASS [ 0.154s] biomcp-cli sources::tests::provider_network::fda_orphan_contended_key_lock_cancels_without_a_late_write biomcp-0.9.3> PASS [ 0.011s] biomcp-cli sources::tests::read_limited_source_body_classifies_chunk_failures_as_retryable biomcp-0.9.3> PASS [ 0.047s] biomcp-cli sources::tests::provider_network::provider_deadline_waits_for_post_publish_cache_finalization biomcp-0.9.3> PASS [ 0.023s] biomcp-cli sources::tests::provider_network::startup_cost::the_tree_secure_marker_walks_only_until_it_exists biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::tests::read_limited_source_body_with_limit_accepts_body_within_limit biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::tests::read_limited_source_body_with_limit_rejects_oversized_body biomcp-0.9.3> PASS [ 0.058s] biomcp-cli sources::tests::provider_network::startup_cost::cache_mode_off_touches_no_cache_file biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::tests::request_plan_transport::request_plan_failures_keep_safe_source_context biomcp-0.9.3> PASS [ 0.014s] biomcp-cli sources::tests::request_plan_transport::request_plan_preserves_each_supported_post_body biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::tests::request_plan_transport::request_plan_preserves_path_query_headers_and_success_bytes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::resolve_cache_mode_defaults_to_none biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::tests::resolve_cache_mode_prioritizes_auth_over_env biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::resolve_cache_mode_prioritizes_no_cache_over_env biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::tests::resolve_cache_mode_uses_env_when_no_overrides biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::response_body_is_html_detects_html_from_content_type biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::response_body_is_html_detects_html_from_doctype_without_header biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::tests::retry_send_with_sleep_retries_on_too_many_requests biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::tests::retry_sleep_can_be_cancelled biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::tests::retry_sleep_off_returns_no_sleep_for_every_attempt biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::tests::stale_serve_age_wording_uses_hours_only_past_an_hour biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::tests::stale_serve_notes_do_not_leak_between_scopes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::summarize_http_error_body_preserves_json_excerpt biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::summarize_http_error_body_sanitizes_html biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::tests::the_test_cache_mode_guard_applies_and_restores_the_mode biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::ticket_403_retry_after_extreme_values_are_capped biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::tests::ticket_403_retry_after_malformed_values_fall_back_to_backoff biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::ticket_403_retry_after_normal_floor_is_honored biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::tests::ticket_403_retry_send_uses_the_shared_retry_sleep_budget biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::validate_biothings_result_window_accepts_bounds biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::tests::validate_biothings_result_window_rejects_offset_at_window biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::tests::validate_biothings_result_window_rejects_window_overflow biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::trust_failure_tests::handle_returns_no_retry_for_a_trust_failure_error biomcp-0.9.3> PASS [ 0.021s] biomcp-cli sources::tests::variant_article_deadlines_are_task_local_and_do_not_leak biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::trust_failure_tests::plain_send_retry_stops_at_a_trust_failure biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::trust_failure_tests::trust_markers_at_any_depth_of_the_error_chain_count biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::umls::tests::construction::atoms_plan_sets_cui_auth_page_size_and_language biomcp-0.9.3> PASS [ 0.031s] biomcp-cli sources::tests::variant_article_provider_admission_is_capped_and_deadline_cancellable biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::umls::tests::construction::search_plan_sets_query_auth_and_page_size biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::umls::tests::construction::search_plan_skips_empty_query biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::umls::tests::parsing::decode_json_response_maps_http_and_content_type_errors biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::umls::tests::parsing::decode_search_response_filters_none_hits_and_concepts_keep_xrefs biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::get_record_plan_builds_accession_path_and_json_accept_header biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::umls::tests::parsing::map_atoms_keeps_english_xrefs_and_dedupes_source_id_pairs biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::get_record_plan_rejects_blank_accession biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::uniprot::tests::construction::normalize_next_page_token_accepts_cursor_url biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::search_plan_clamps_limit_and_uses_cursor_token_when_present biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::search_plan_rejects_blank_query_and_bad_next_page_tokens biomcp-0.9.3> PASS [ 0.807s] biomcp-cli sources::pharmacodb::tests::limits::the_largest_measured_row_body_parses_and_returns_its_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::search_plan_uses_absolute_next_page_url_without_rewriting_query biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::search_plan_sets_expected_query_params biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::uniprot::tests::parsing::alternative_protein_names_flatten_short_and_full_names_in_source_order biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::uniprot::tests::parsing::alternative_protein_names_return_empty_when_alternative_names_are_missing biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::uniprot::tests::parsing::alternative_protein_names_trim_deduplicate_and_skip_recommended_name biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::decode_json_response_accepts_gzip_payload biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::uniprot::tests::parsing::decode_json_response_maps_http_and_json_errors biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::decode_search_response_reads_results_total_and_next_page_link biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::uniprot::tests::parsing::protein_isoforms_fall_back_to_name_when_synonyms_are_missing biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::uniprot::tests::parsing::protein_isoforms_prefer_synonyms_and_track_displayed_status biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::expanded_payload_limit_reads_only_limit_plus_one biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::protein_isoforms_return_empty_when_alternative_products_comment_is_missing biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::uniprot::tests::parsing::record_mane_select_transcript_reads_the_committed_capture biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::uniprot::tests::parsing::record_helpers_extract_display_function_and_structures biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::record_mane_select_transcript_takes_only_the_refseq_nucleotide_id biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::vaers::tests::construction::build_request_xml_escapes_and_validates_vaccine_code biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::vaers::tests::construction::aggregate_request_plan_posts_form_encoded_reaction_xml biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::vaers::tests::construction::request_template_tracks_captured_fixture biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::vaers::tests::construction::build_request_xml_matches_serious_and_age_fixture_parameters biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::vaers::tests::construction::vaers_client_uses_cdc_wonder_compatible_user_agent_constant biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::vaers::tests::parsing::decode_aggregate_response_rejects_http_html_and_non_utf8_errors biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::vaers::tests::parsing::parse_aggregate_response_rejects_a_nesting_bomb biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::vaers::tests::parsing::parse_processing_error_returns_api_message biomcp-0.9.3> PASS [ 0.016s] biomcp-cli sources::vaers::tests::parsing::parse_age_response_extracts_buckets_and_skips_total_row biomcp-0.9.3> PASS [ 0.261s] biomcp-cli sources::tests::provider_network::ordinary_client_blocks_untrusted_local_destinations_before_contact biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::construction::normalize_request_plan_encodes_transcript_path_and_json_query biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::construction::normalize_request_plan_percent_encodes_path_segments biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::variantvalidator::tests::parsing::normalize_response_extracts_warnings_and_grch38_genomic_description biomcp-0.9.3> PASS [ 0.018s] biomcp-cli sources::vaers::tests::parsing::parse_serious_response_extracts_yes_and_no_rows biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::parsing::normalize_response_maps_html_response_to_service_error biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::variantvalidator::tests::parsing::normalize_response_maps_not_found_and_http_errors biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::parsing::result_from_value_maps_missing_transcript_to_service_error biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::parsing::result_from_value_maps_warning_without_transcript_to_invalid_input biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::who_ivd::tests::construction::file_is_stale_tracks_age_threshold biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::construction::sync_state_marks_missing_fresh_stale_and_force biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::who_ivd::tests::construction::sync_intro_matches_missing_stale_and_force_modes biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::construction::who_ivd_missing_files_tracks_required_contract biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::construction::who_ivd_sync_error_mentions_recovery_paths biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::parsing::ensure_csv_content_type_rejects_html_response biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::who_ivd::tests::parsing::parse_who_ivd_csv_deduplicates_first_product_code biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::who_ivd::tests::parsing::parse_who_ivd_csv_requires_expected_headers biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::who_ivd::tests::parsing::parse_who_ivd_csv_reads_fixture_rows biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::parsing::who_ivd_client_get_matches_exact_trimmed_product_code biomcp-0.9.3> PASS [ 0.064s] biomcp-cli sources::vaers::tests::parsing::decode_aggregate_response_accepts_wonder_html_content_type_with_xml_body biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::who_pq::tests::construction::file_is_stale_tracks_age_threshold biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::who_pq::tests::construction::sync_intro_matches_missing_stale_and_force_modes biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::who_pq::tests::construction::sync_state_marks_missing_fresh_stale_and_force biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::who_pq::tests::construction::who_pq_missing_files_tracks_required_file_contract biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::who_pq::tests::construction::who_pq_sync_error_carries_its_detail_and_recovery biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::boundary_phrase_rejection_advances_across_multibyte_character biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::derive_inn_removes_dosage_form_suffix_when_present biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::ensure_csv_content_type_rejects_html_response_without_raw_tags biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::medicines_captures_ship_title_case_headers_and_parse biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::who_pq::tests::parsing::normalize_dates_convert_to_iso biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::parse_who_api_csv_preserves_identifier_semantics biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::parse_who_pq_csv_deduplicates_by_reference_number biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::parse_who_vaccines_csv_preserves_blank_dose_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::parsers_require_expected_headers biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::who_pq::tests::parsing::pre_1304_cache_with_applicant_organization_column_still_parses biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::who_pq::tests::parsing::pre_1304_cache_with_alternative_listing_column_still_parses biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::product_type_filters_keep_expected_rows biomcp-0.9.3> PASS [ 0.458s] biomcp-cli sources::tests::provider_network::cached_client_post_write_failure_matrix_keeps_provider_answers biomcp-0.9.3> PASS [ 0.013s] biomcp-cli sources::who_pq::tests::parsing::read_rows_combines_finished_pharma_api_and_vaccine_rows biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::vaccine_dedupe_keeps_distinct_bevac_rows biomcp-0.9.3> PASS [ 0.017s] biomcp-cli sources::who_pq::tests::parsing::row_matching_falls_back_to_full_presentation_for_combo_rows biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::vaccine_fixture_carries_full_validation_anchor_counts biomcp-0.9.3> PASS [ 0.018s] biomcp-cli sources::who_pq::tests::parsing::row_matching_strips_salt_suffixes_from_match_key biomcp-0.9.3> PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::vaccines_capture_keeps_the_trailing_space_header_and_trims_to_match biomcp-0.9.3> PASS [ 0.010s] biomcp-cli sources::who_pq::tests::sync::summary_line_names_refreshed_and_failed_files biomcp-0.9.3> PASS [ 0.022s] biomcp-cli sources::who_pq::tests::parsing::vaccine_row_matching_uses_vaccine_type_and_brand_aliases biomcp-0.9.3> PASS [ 1.014s] biomcp-cli sources::orcid::tests::closing::transient_429_retries_once_under_the_pacing_gap_then_succeeds biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::construction::pathway_plans_build_expected_paths_and_validate_ids biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::wikipathways::tests::construction::search_pathways_plan_builds_search_endpoint_and_rejects_empty_query biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::construction::validates_wikipathways_id_shape biomcp-0.9.3> PASS [ 0.007s] biomcp-cli sources::wikipathways::tests::parsing::decode_json_response_rejects_html_content_type_before_json_parse biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::parsing::map_pathway_entrez_gene_ids_dedupes_and_filters_non_numeric_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli sources::wikipathways::tests::parsing::decode_json_response_sanitizes_404_html_error_body biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::parsing::map_pathway_record_parses_minimal_detail_payload biomcp-0.9.3> PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::parsing::map_search_hits_filters_non_human_invalid_and_duplicate_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli test_support::signaled_child_spawn_fails_when_the_child_never_signals biomcp-0.9.3> PASS [ 0.009s] biomcp-cli test_support::watchdog_defaults_to_one_and_stretches_by_the_factor biomcp-0.9.3> PASS [ 0.007s] biomcp-cli transform::adverse_event::tests::faers_report_filter_matches_suspect_drug_name biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::adverse_event::tests::normalize_drug_name_trims_and_lowercases biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::adverse_event::tests::outcomes_from_flags_maps_all_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::adverse_event::tests::patient_demographics_handles_missing_fields biomcp-0.9.3> PASS [ 0.013s] biomcp-cli transform::article::anchors::tests::normalize_article_search_text_compacts_compound_hyphens biomcp-0.9.3> PASS [ 0.014s] biomcp-cli transform::article::anchors::tests::truncate_title_strips_inline_html_and_entities biomcp-0.9.3> PASS [ 0.012s] biomcp-cli transform::article::anchors::tests::truncate_title_truncates_on_utf8_boundary biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::annotations::tests::extract_annotations_counts_mentions biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::article::annotations::tests::extract_annotations_ignores_placeholder_identifiers biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::annotations::tests::extract_annotations_falls_back_to_hgvs_without_rsid biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::annotations::tests::extract_annotations_preserves_first_seen_order_for_equal_counts biomcp-0.9.3> PASS [ 0.018s] biomcp-cli transform::article::annotations::tests::extract_annotations_reads_identifier_and_namespace biomcp-0.9.3> PASS [ 0.019s] biomcp-cli transform::article::annotations::tests::mutation_identity::gene_symbol_prefers_the_most_mentioned_gene_text biomcp-0.9.3> PASS [ 0.021s] biomcp-cli transform::article::annotations::tests::mutation_identity::gene_without_symbol_shaped_mention_uses_the_official_symbol biomcp-0.9.3> PASS [ 0.017s] biomcp-cli transform::article::annotations::tests::mutation_identity::multi_allele_rsid_with_coding_hgvs_keeps_the_coding_form biomcp-0.9.3> PASS [ 0.018s] biomcp-cli transform::article::annotations::tests::mutation_identity::multi_allele_rsid_without_gene_symbol_carries_no_identifier biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::annotations::tests::mutation_identity::official_symbol_lookups_target_only_mutation_linked_spelled_genes biomcp-0.9.3> PASS [ 0.018s] biomcp-cli transform::article::annotations::tests::mutation_identity::no_rsid_row_with_gene_and_change_gains_the_gene_qualified_form biomcp-0.9.3> PASS [ 0.017s] biomcp-cli transform::article::annotations::tests::mutation_identity::official_symbol_that_is_not_symbol_shaped_builds_no_form biomcp-0.9.3> PASS [ 0.020s] biomcp-cli transform::article::annotations::tests::mutation_identity::one_allele_written_two_ways_stays_one_rsid_change biomcp-0.9.3> PASS [ 0.019s] biomcp-cli transform::article::annotations::tests::mutation_identity::rows_with_gene_and_change_prefer_the_gene_qualified_form biomcp-0.9.3> PASS [ 0.018s] biomcp-cli transform::article::annotations::tests::mutation_identity::single_mention_allele_of_a_multi_allele_rsid_carries_the_gene_form biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::annotations::tests::positions_land_only_when_requested biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::article::annotations::tests::same_text_with_different_identifiers_stays_separate biomcp-0.9.3> PASS [ 1.538s] biomcp-cli sources::hpo::tests::parsing::phenotype_hpo_operation_uses_only_the_shared_four_attempts biomcp-0.9.3> PASS [ 0.007s] biomcp-cli transform::article::federation::tests::article_authorship_preserves_large_source_lists_and_empty_state biomcp-0.9.3> PASS [ 0.516s] biomcp-cli sources::tests::provider_network::ordinary_client_allows_exact_override_but_ignores_proxy_and_cross_origin_redirects biomcp-0.9.3> PASS [ 0.020s] biomcp-cli transform::article::annotations::tests::mutation_identity::spelled_gene_mentions_pick_the_most_mentioned_symbol_shaped_text biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::article::federation::tests::article_sections_maps_brca1_study biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::federation::tests::europepmc_metadata_merge_preserves_pubtator_authorship biomcp-0.9.3> PASS [ 0.013s] biomcp-cli transform::article::federation::tests::europepmc_authorship_has_no_ten_name_cap_and_reports_empty_state biomcp-0.9.3> PASS [ 0.013s] biomcp-cli transform::article::federation::tests::article_sections_maps_egfr_review biomcp-0.9.3> PASS [ 0.014s] biomcp-cli transform::article::federation::tests::detail_articles_keep_whole_abstracts_while_search_rows_keep_snippets biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::article::federation::tests::from_europepmc_search_result_carries_first_index_date biomcp-0.9.3> PASS [ 4.842s] biomcp-cli entities::trial::search::ctgov::tests::an_in_age_unchecked_trial_marks_the_count_partial biomcp-0.9.3> PASS [ 0.012s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_falls_back_to_lr_for_first_index_date biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_falls_back_to_source_journal biomcp-0.9.3> PASS [ 0.013s] biomcp-cli transform::article::federation::tests::from_europepmc_search_result_invalid_first_index_date_is_none biomcp-0.9.3> PASS [ 0.013s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_hydrates_all_fields biomcp-0.9.3> PASS [ 0.013s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_prefers_edat_over_lr biomcp-0.9.3> PASS [ 0.012s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_returns_none_for_blank_title biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::federation::tests::parse_pubdate_extracts_full_date biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_uses_edat_for_first_index_date biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::federation::tests::parse_pubdate_extracts_year biomcp-0.9.3> PASS [ 0.013s] biomcp-cli transform::article::federation::tests::from_pubtator_search_result_maps_source_and_score biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::federation::tests::parse_pubdate_extracts_year_month biomcp-0.9.3> PASS [ 0.007s] biomcp-cli transform::article::federation::tests::parse_sortpubdate_extracts_ymd biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::article::federation::tests::publication_type_detection_reads_pub_type_list_for_retractions biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::supplements::tests::extracts_nested_and_standalone_supplement_media_with_typed_facts biomcp-0.9.3> PASS [ 0.022s] biomcp-cli transform::article::html::tests::extract_text_from_html_keeps_article_signals_across_fixture_family biomcp-0.9.3> PASS [ 0.022s] biomcp-cli transform::article::html::tests::fixture_family_titles_are_kept_exactly_once biomcp-0.9.3> PASS [ 0.021s] biomcp-cli transform::article::html::tests::html_classification_uses_article_structure_without_size_thresholds biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_allows_identical_normalized_duplicates_inside_one_ref biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_anchors_truncation_on_the_marker_not_an_earlier_equal_string biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_caps_passages_at_three_in_document_order biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_excludes_paragraphs_in_table_figure_and_caption_scopes biomcp-0.9.3> PASS [ 0.007s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_excludes_paragraphs_inside_boxed_text biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_closed_on_two_distinct_dois_in_one_ref biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_closed_on_two_matching_refs biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_closed_when_selected_id_duplicates_across_ref_lists biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_closed_when_selected_ref_lacks_a_nonblank_id biomcp-0.9.3> PASS [ 0.007s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_on_malformed_xml biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_ignores_an_empty_marker_on_both_sides_of_the_clamp biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_ignores_grouped_markers_and_requires_exact_case_rid biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_keeps_document_order_dedupes_paragraphs_but_not_equal_text biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_links_adjacent_separate_markers_in_one_paragraph_once biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_matches_pmid_by_decimal_value_with_prefix_and_zeros biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_matches_pmcid_case_insensitively_with_canonical_value biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_passes_through_paragraphs_at_or_below_the_limit biomcp-0.9.3> PASS [ 0.255s] biomcp-cli sources::who_pq::tests::sync::sync_attempts_every_file_and_names_the_failing_file_when_required_files_are_missing biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_pins_the_exact_passage_scalar_boundaries biomcp-0.9.3> PASS [ 0.257s] biomcp-cli sources::who_pq::tests::sync::sync_partial_run_keeps_older_data_and_reports_the_failure_reason_per_file biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_rejects_doi_without_ten_prefix_or_slash biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_prefers_doi_over_pmid_when_both_match biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_rejects_lower_priority_match_with_conflicting_higher_identifier biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_reports_nested_section_paths_and_paragraph_ordinals biomcp-0.9.3> PASS [ 0.265s] biomcp-cli sources::who_pq::tests::sync::sync_names_the_failing_file_and_column_in_its_final_error biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_resolves_doi_with_prefix_and_case_normalization biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_returns_marker_unlinked_when_no_marker_reaches_a_paragraph biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_returns_parsed_unusable_for_non_article_or_bodyless_documents biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_treats_hostile_identifier_text_as_closed_not_matched biomcp-0.9.3> PASS [ 0.263s] biomcp-cli sources::who_pq::tests::sync::sync_replays_the_recorded_captures_and_reports_every_file_refreshed biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_skips_empty_marker_text_before_truncation biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_truncates_long_paragraphs_around_first_marker_scalar biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::entity_bearing_jats_is_not_rendered_through_fallback biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_keeps_words_wrapped_in_word_joining_elements_whole biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_merges_multiple_ref_lists biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_preserves_complex_table_cells_and_spans biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_labels_mixed_citation_pub_ids_as_separate_values biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_reference_fallback_omits_duplicate_label biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_preserves_structure_and_renders_references biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_element_citation_fields_and_ids biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_floats_group_after_body_before_references biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_mixed_citation_doi_links biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_ragged_tables_as_raw_rows biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_supplementary_material_metadata biomcp-0.9.3> PASS [ 0.007s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_suppresses_source_parenthesized_xref_and_preserves_boundary_spacing biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_separates_words_only_at_unmarked_boundaries biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_wraps_unparenthesized_figure_xrefs biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::jats::tests::jats_classification_requires_meaningful_direct_body_content biomcp-0.9.3> PASS [ 0.007s] biomcp-cli transform::article::pdf::tests::extract_text_from_pdf_rejects_zero_page_limit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::csv_extract_locates_a_record_row biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::article::supplement_text::tests::docx_extract_locates_a_paragraph biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::article::supplement_text::tests::format_dispatch_reads_file_extensions_case_insensitively biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::supplement_text::tests::extraction_limits_cover_nested_archives_and_document_packages biomcp-0.9.3> PASS [ 0.106s] biomcp-cli transform::article::html::tests::supplement_links_ignore_page_links_in_stored_pmc_html biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::only_one_nested_archive_is_searched biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::unreadable_bytes_report_format_and_reason biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::workbook_package_limits_follow_bytes_when_extension_is_xls biomcp-0.9.3> PASS [ 0.014s] biomcp-cli transform::article::supplement_text::tests::pdf_extract_locates_a_page biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::supplement_text::tests::xls_extract_reads_the_legacy_binary_workbook biomcp-0.9.3> PASS [ 0.015s] biomcp-cli transform::article::supplement_text::tests::pdf_page_budget_marks_truncation biomcp-0.9.3> PASS [ 0.015s] biomcp-cli transform::article::supplement_text::tests::xlsx_extract_locates_a_named_worksheet_row biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::article::supplement_text::tests::zip_extract_locates_a_member_and_reports_its_siblings biomcp-0.9.3> PASS [ 0.036s] biomcp-cli transform::article::jats::tests::real_pmc6172658_capture_separates_names_and_reference_identifiers biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::tests::root_module_reexports_stable_article_transform_api biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::disease::tests::clean_definition_strips_wrapping_quotes_and_refs biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::zip_member_budget_reports_the_size_limit biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::disease::tests::collect_xrefs_retains_orphanet_and_omim_identifiers biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::disease::tests::disease_sections_maps_cml biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::disease::tests::disease_sections_maps_lung_adenocarcinoma biomcp-0.9.3> PASS [ 0.007s] biomcp-cli transform::disease::tests::frequency_rank_prioritizes_high_signal_qualifiers_only biomcp-0.9.3> PASS [ 0.016s] biomcp-cli transform::disease::tests::derive_key_features_supplements_definition_with_high_frequency_phenotypes biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::disease::tests::from_mydisease_hit_collects_hpo_phenotypes biomcp-0.9.3> PASS [ 0.017s] biomcp-cli transform::disease::tests::extract_definition_key_features_association_clause biomcp-0.9.3> PASS [ 0.017s] biomcp-cli transform::disease::tests::extract_definition_key_features_characterized_by_clause biomcp-0.9.3> PASS [ 0.053s] biomcp-cli transform::article::jats::tests::real_pmc6329583_capture_preserves_all_six_complex_tables biomcp-0.9.3> PASS [ 0.016s] biomcp-cli transform::disease::tests::extract_definition_key_features_handles_colon_after_cue biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::disease::tests::from_mydisease_hit_seeds_gene_associations_with_the_disgenet_source biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::disease::tests::name_from_mydisease_hit_falls_back_to_the_mondo_label biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::disease::tests::from_mydisease_hit_without_disgenet_data_seeds_no_rows biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::disease::tests::synonyms_preview_formats_expected biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::a_canonical_name_equal_to_the_brand_never_yields_to_a_naked_row biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::drug::name_resolution_tests::amivantamab_keeps_resolving_through_its_exact_drugbank_record biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::drug::name_resolution_tests::edetate_disodium_prefers_the_exact_record_and_never_the_urea_cream biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::ferric_oxide_selects_the_ferric_oxide_record_not_calamine biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::keytruda_keeps_the_pembrolizumab_card_name biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::mannitol_names_the_card_mannitol_not_the_first_ndc_product biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::lonsurf_says_trifluridine_and_tipiracil_again biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::merge_mychem_hits_keeps_the_imatinib_mesylate_established_name biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::niraparib_names_the_plain_ingredient_card biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::rybrevant_keeps_the_identity_records_name_over_the_naked_product_row biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::terfenadine_selects_only_terfenadine_and_never_fexofenadine biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::drug::name_resolution_tests::tagrisso_resolves_through_the_brand_fields_on_osimertinibs_record biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::zejula_names_the_card_for_the_drug_its_own_row_pairs biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::drug::name_resolution_tests::tagrisso_still_selects_its_record_through_drugcentral_synonyms_alone biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::drug::shared_name_tests::a_foreign_synonym_never_satisfies_the_leading_name_tier biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::drug::shared_name_tests::agreeing_pairings_still_merge_one_product biomcp-0.9.3> PASS [ 0.060s] biomcp-cli transform::article::supplement_text::tests::xlsx_extract_locates_a_row_on_sheet1 biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::drug::tests::approval_date_display_formats_month_name biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::tests::approval_date_rejects_multibyte_input_with_matching_byte_length biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::drug::shared_name_tests::pain_relief_refuses_instead_of_fusing_unrelated_drugs biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::shared_name_tests::sleep_aid_refuses_instead_of_merging_diphenhydramine_with_doxylamine biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::tests::drug_sections_maps_imatinib biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::tests::drug_sections_maps_osimertinib biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::drug::tests::from_mychem_search_hit_uses_openfda_names_when_other_sources_are_missing biomcp-0.9.3> PASS [ 0.090s] biomcp-cli transform::article::pdf::tests::extract_text_from_pdf_renders_fixture_family_text biomcp-0.9.3> PASS [ 0.007s] biomcp-cli transform::drug::tests::merge_mychem_hits_collects_drug_interactions biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::drug::tests::merge_mychem_hits_collects_deduped_mechanisms biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::drug::tests::merge_mychem_hits_keeps_synonyms_off_the_brand_list biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::drug::tests::merge_mychem_hits_does_not_pool_synonyms_across_hits biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::drug::tests::merge_mychem_hits_prefers_canonical_name_from_brand_hit biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::drug::tests::merge_mychem_hits_keeps_the_matching_canonical_name_over_the_first_ndc_row biomcp-0.9.3> PASS [ 0.012s] biomcp-cli transform::drug::tests::search_mechanism_prefers_chembl_over_ranked_moa_fallback biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::tests::select_hits_for_name_matches_openfda_brand_name biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::drug::tests::search_mechanism_ranking_prefers_kinase_moa_and_rejects_metabolism_only biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::gene::tests::carried_kegg_pathways_survive_when_kegg_is_not_disabled biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::drug::tests::select_hits_for_name_prefers_exact_hits_and_admits_salt_forms_only_when_alone biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::gene::tests::extract_kegg_pathways_handles_array biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::gene::tests::gene_sections_maps_tp53_fields biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::gene::tests::gene_sections_maps_egfr_fields biomcp-0.9.3> PASS [ 0.012s] biomcp-cli transform::gene::tests::gene_sections_maps_brca1_fields biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::gene::tests::normalize_aliases_drops_lowercase_and_trailing_number_hyphen biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::gene::tests::normalize_summary_keeps_summary biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::gene::tests::normalize_summary_preserves_utf8_without_ellipsis biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::gene::tests::string_or_vec_into_vec biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::pathway::tests::from_kegg_hit_maps_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_kegg_record_maps_fields biomcp-0.9.3> PASS [ 1.627s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_node_boundary_is_accepted_and_plus_one_rejected biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_reactome_hit_maps_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_reactome_record_maps_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_reactome_record_handles_missing_summary biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_wikipathways_hit_maps_fields biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::pathway::tests::pathway_sections_maps_cell_cycle biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::pathway::tests::from_wikipathways_record_maps_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::protein::tests::from_uniprot_record_base_handles_missing_sequence biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::protein::tests::from_uniprot_record_base_maps_fields biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::protein::tests::from_uniprot_search_record_handles_missing_organism biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::protein::tests::from_uniprot_search_record_maps_fields biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::protein::tests::protein_sections_maps_egfr biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::protein::tests::protein_sections_maps_tp53 biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::trial::tests::ctgov_case_13_preserves_every_site_contact_in_provider_order biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::trial::tests::ctgov_location_aliases_stay_bound_to_literal_first_source_contact biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::trial::tests::from_ctgov_study_extracts_age_and_locations_sorted biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::trial::tests::from_ctgov_study_preserves_contacts_and_structured_eligibility biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::trial::tests::from_ctgov_study_preserves_provider_type_fields_in_json biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::trial::tests::receipted_ctgov_intervention_descriptions_keep_their_associations_in_json biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::trial::tests::ticket_1107::unreadable_nci_disease_is_an_error biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1107::recorded_nci_hit_reports_its_disease_names biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::trial::tests::ticket_1111::condition_cell_preserves_short_lists_without_a_marker biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::trial::tests::ticket_1111::condition_cell_reserves_complete_suffix_when_byte_bound_abridges_multibyte_text biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::trial::tests::ticket_1111::condition_cell_reserves_complete_suffix_when_item_bound_abridges biomcp-0.9.3> PASS [ 0.024s] biomcp-cli transform::trial::tests::ctgov_meaningful_sites_keep_partial_identity_and_safe_markdown biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1111::recorded_ctgov_condition_vector_matches_in_detail_and_search biomcp-0.9.3> PASS [ 0.020s] biomcp-cli transform::trial::tests::receipted_ctgov_two_arm_trial_keeps_independent_typed_assignments biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1111::recorded_nci_condition_vector_matches_in_search biomcp-0.9.3> PASS [ 0.020s] biomcp-cli transform::trial::tests::stopped_ctgov_trials_explain_their_status_in_json_and_markdown biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1114::ctgov_postal_codes_are_trimmed_and_blank_values_are_omitted biomcp-0.9.3> PASS [ 0.023s] biomcp-cli transform::trial::tests::stopped_ctgov_trial_without_reason_reports_checked_absence biomcp-0.9.3> PASS [ 0.027s] biomcp-cli transform::trial::tests::receipted_ctgov_partial_sites_preserve_all_locations biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1115::recorded_ctgov_summary_reaches_the_model_and_json_in_full biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1115::summary_normalization_keeps_trimmed_text_and_rejects_blanks biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::trial::tests::trial_location_nested_contacts_are_additive_serde_compatibility biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::trial::tests::trial_status_normalization_variants biomcp-0.9.3> PASS [ 0.007s] biomcp-cli transform::variant::tests::clinvar_review_stars_known_statuses biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::variant::tests::aggregate_clinvar_conditions_counts_reports biomcp-0.9.3> PASS [ 7.486s] biomcp-cli entities::drug::test_support::label_fallback_fetch_error_stays_an_error biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::variant::tests::derive_legacy_name_normalizes_missense_alias_variants biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::variant::tests::derive_legacy_name_normalizes_stop_alias_variants biomcp-0.9.3> PASS [ 0.022s] biomcp-cli transform::trial::tests::ticket_1114::receipted_ctgov_location_preserves_postal_code_in_json_and_markdown biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::variant::tests::extracts_expanded_variant_sections biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::variant::tests::normalize_gene_uppercases biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::variant::tests::newest_rcv_evaluation_date_skips_non_day_shaped_and_unshown_records biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::variant::tests::from_myvariant_hit_leaves_legacy_name_empty_without_clinvar biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::variant::tests::from_myvariant_hit_sets_top_disease_from_sorted_clinvar_rows biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::variant::tests::normalize_polyphen_codes biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::variant::tests::newest_rcv_evaluation_date_belongs_to_the_shown_classification biomcp-0.9.3> PASS [ 0.012s] biomcp-cli transform::variant::tests::extracts_bayesdel_flavors_from_recorded_myvariant_payload biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::variant::tests::pick_review_status_prefers_highest_star_rating biomcp-0.9.3> PASS [ 0.008s] biomcp-cli transform::variant::tests::pick_significance_handles_empty_and_partial_rcvs biomcp-0.9.3> PASS [ 0.009s] biomcp-cli transform::variant::tests::pick_significance_with_kras_rcvs biomcp-0.9.3> PASS [ 0.008s] biomcp-cli utils::date::tests::expands_year_only biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::variant::tests::pick_significance_with_brca1_rcvs biomcp-0.9.3> PASS [ 0.009s] biomcp-cli utils::date::tests::accepts_leap_day_only_in_leap_years biomcp-0.9.3> PASS [ 0.010s] biomcp-cli transform::variant::tests::significance_rank_prefers_pathogenic_over_benign biomcp-0.9.3> PASS [ 0.008s] biomcp-cli utils::date::tests::expands_year_month biomcp-0.9.3> PASS [ 0.009s] biomcp-cli utils::date::tests::is_day_shaped_accepts_real_days_only biomcp-0.9.3> PASS [ 0.011s] biomcp-cli transform::variant::tests::transcript_annotation_never_zips_independent_dbnsfp_arrays biomcp-0.9.3> PASS [ 0.013s] biomcp-cli transform::variant::tests::real_braf_receipt_prefers_the_transcript_associated_v600_annotation biomcp-0.9.3> PASS [ 0.009s] biomcp-cli utils::date::tests::is_day_shaped_rejects_provider_spellings_and_impossible_days biomcp-0.9.3> PASS [ 4.758s] biomcp-cli entities::variant::clinvar::tests::add_clinvar_names_a_non_429_provider_failure_distinctly biomcp-0.9.3> PASS [ 0.010s] biomcp-cli utils::date::tests::keeps_full_date biomcp-0.9.3> PASS [ 0.010s] biomcp-cli utils::date::tests::rejects_invalid_day_for_month biomcp-0.9.3> PASS [ 0.009s] biomcp-cli utils::date::tests::trims_outer_whitespace biomcp-0.9.3> PASS [ 0.010s] biomcp-cli utils::date::tests::rejects_malformed_dates biomcp-0.9.3> PASS [ 0.008s] biomcp-cli utils::download::tests::download_path_for_config_keeps_relative_cache_roots_relative biomcp-0.9.3> PASS [ 0.010s] biomcp-cli utils::date::tests::rejects_invalid_month biomcp-0.9.3> PASS [ 0.009s] biomcp-cli utils::download::tests::bundle_fingerprint_is_none_for_a_missing_root biomcp-0.9.3> PASS [ 0.008s] biomcp-cli utils::download::tests::download_path_for_config_resolves_to_cache_root_downloads biomcp-0.9.3> PASS [ 0.010s] biomcp-cli utils::download::tests::bundle_fingerprint_is_stable_until_a_file_changes biomcp-0.9.3> PASS [ 0.011s] biomcp-cli utils::download::tests::save_atomic_to_path_errors_when_target_path_is_directory biomcp-0.9.3> PASS [ 0.010s] biomcp-cli utils::download::tests::saved_download_rejects_symlinks_and_hard_links biomcp-0.9.3> PASS [ 0.007s] biomcp-cli utils::query::tests::escapes_lucene_special_characters biomcp-0.9.3> PASS [ 0.009s] biomcp-cli utils::panic_payload_tests::any_other_payload_falls_back_to_the_generic_line biomcp-0.9.3> PASS [ 0.009s] biomcp-cli utils::panic_payload_tests::string_and_str_payloads_keep_their_message biomcp-0.9.3> PASS [ 0.008s] biomcp-cli utils::sync::tests::every_reconstructible_lock_uses_the_shared_helper biomcp-0.9.3> PASS [ 0.009s] biomcp-cli utils::serde::tests::string_or_vec_helpers_cover_all_shapes biomcp-0.9.3> PASS [ 0.017s] biomcp-cli utils::download::tests::downloads_are_private_and_existing_files_are_repaired biomcp-0.9.3> PASS [ 0.008s] biomcp-cli workflow_ladders::tests::every_workflow_ladder_loads_and_validates biomcp-0.9.3> PASS [ 0.009s] biomcp-cli utils::sync::tests::poisoned_lock_returns_the_guarded_value biomcp-0.9.3> PASS [ 0.009s] biomcp-cli workflow_ladders::tests::workflow_meta_discards_sidecar_only_fields biomcp-0.9.3> PASS [ 0.021s] biomcp-cli utils::download::tests::save_atomic_to_path_writes_download_target biomcp-0.9.3> PASS [ 0.008s] biomcp-cli xml::tests::accepts_entity_token_text_in_comments_and_cdata biomcp-0.9.3> PASS [ 0.008s] biomcp-cli xml::tests::comments_cdata_and_self_closing_tags_do_not_move_the_depth biomcp-0.9.3> PASS [ 0.008s] biomcp-cli xml::tests::accepts_nesting_well_under_the_cap biomcp-0.9.3> PASS [ 0.009s] biomcp-cli xml::tests::enforces_exact_node_limit biomcp-0.9.3> PASS [ 0.008s] biomcp-cli xml::tests::maps_malformed_xml_to_parse_error biomcp-0.9.3> PASS [ 0.009s] biomcp-cli xml::tests::parses_ordinary_declared_and_external_doctype_xml biomcp-0.9.3> PASS [ 0.009s] biomcp-cli xml::tests::rejects_a_nesting_bomb_with_an_error biomcp-0.9.3> PASS [ 0.024s] biomcp-cli utils::download::tests::write_atomic_bytes_replaces_existing_file_contents biomcp-0.9.3> PASS [ 0.025s] biomcp-cli utils::download::tests::user_output_does_not_restrict_parent_directory biomcp-0.9.3> PASS [ 0.008s] biomcp-cli xml::tests::rejects_entity_declaration_variants_before_parsing biomcp-0.9.3> PASS [ 0.026s] biomcp-cli utils::download::tests::write_atomic_bytes_errors_for_non_file_destination biomcp-0.9.3> PASS [ 0.373s] biomcp-cli transform::article::html::tests::stored_pmc_pages_keep_title_and_byline_and_drop_page_furniture biomcp-0.9.3> PASS [ 0.949s] biomcp-cli sources::tests::shared_body_limit_rejects_before_cache_materialization biomcp-0.9.3> PASS [ 1.130s] biomcp-cli sources::tests::provider_network::startup_cost::start_up_touches_no_more_cache_files_as_the_cache_grows biomcp-0.9.3> PASS [ 1.959s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_rejects_aggregate_expansion biomcp-0.9.3> PASS [ 3.018s] biomcp-cli sources::orcid::tests::closing::persistent_server_errors_stop_at_four_physical_gets_with_a_sanitized_error biomcp-0.9.3> PASS [ 3.727s] biomcp-cli sources::opencitations::tests::references_reject_malformed_bodies_and_statuses biomcp-0.9.3> PASS [ 11.168s] biomcp-cli entities::disease::get::tests::a_stale_mcp_call_tells_the_clinician_the_cache_age_on_both_channels biomcp-0.9.3> PASS [ 3.597s] biomcp-cli sources::pmc_article::tests::proof_of_work_is_retained_when_a_later_linked_target_fails biomcp-0.9.3> PASS [ 12.271s] biomcp-cli entities::disease::get::tests::a_stale_disease_card_tells_the_clinician_the_cache_age biomcp-0.9.3> PASS [ 8.821s] biomcp-cli sources::gencc::tests::cross_process_first_use_elects_one_leader_and_settles_followers biomcp-0.9.3> PASS [ 11.756s] biomcp-cli entities::variant::get::tests::protein_change_get_notes_unchecked_numbering_when_uniprot_is_unreachable biomcp-0.9.3> PASS [ 25.366s] biomcp-cli entities::article::variant_search::tests::unsupported_fulltext_evidence_does_not_confirm_a_paper biomcp-0.9.3> ──────────── biomcp-0.9.3> Summary [ 29.954s] 4212 tests run: 4212 passed, 29 skipped biomcp-0.9.3> Finished cargoNextestHook biomcp-0.9.3> checkPhase completed in 3 minutes 16 seconds biomcp-0.9.3> Running phase: installPhase biomcp-0.9.3> Executing cargoInstallHook biomcp-0.9.3> Finished cargoInstallHook biomcp-0.9.3> Running phase: fixupPhase biomcp-0.9.3> shrinking RPATHs of ELF executables and libraries in /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3 biomcp-0.9.3> shrinking /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3/bin/biomcp biomcp-0.9.3> checking for references to /build/ in /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3... biomcp-0.9.3> patching script interpreter paths in /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3 biomcp-0.9.3> stripping (with command strip and flags -S -p) in /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3/bin biomcp-0.9.3> Running phase: installCheckPhase biomcp-0.9.3> biomcp 0.9.3 upload niks3: ok