tribuchet: building on psi structuredAttrs is enabled Running phase: unpackPhase unpacking source archive /nix/store/5n991b4z901g4fbd9wp50x9fxw9ajbqx-source source root is source Executing cargoSetupPostUnpackHook Finished cargoSetupPostUnpackHook Running phase: patchPhase Executing cargoSetupPostPatchHook Validating consistency between /build/source/Cargo.lock and /build/biomcp-0.9.3-vendor/Cargo.lock Finished cargoSetupPostPatchHook Running phase: updateAutotoolsGnuConfigScriptsPhase Running phase: configurePhase Running phase: buildPhase Executing cargoBuildHook cargoBuildHook flags: -j 24 --target x86_64-unknown-linux-gnu --offline --profile release Compiling proc-macro2 v1.0.106 Compiling unicode-ident v1.0.24 Compiling quote v1.0.45 Compiling libc v0.2.190 Compiling cfg-if v1.0.4 Compiling serde_core v1.0.228 Compiling memchr v2.8.0 Compiling serde v1.0.228 Compiling itoa v1.0.17 Compiling smallvec v1.15.1 Compiling bytes v1.11.1 Compiling pin-project-lite v0.2.17 Compiling version_check v0.9.5 Compiling typenum v1.19.0 Compiling futures-core v0.3.32 Compiling once_cell v1.21.3 Compiling log v0.4.34 Compiling futures-sink v0.3.32 Compiling stable_deref_trait v1.2.1 Compiling siphasher v1.0.2 Compiling fastrand v2.3.0 Compiling slab v0.4.12 Compiling equivalent v1.0.2 Compiling find-msvc-tools v0.1.9 Compiling shlex v1.3.0 Compiling futures-task v0.3.32 Compiling futures-io v0.3.32 Compiling scopeguard v1.2.0 Compiling bitflags v2.11.0 Compiling hashbrown v0.16.1 Compiling futures-channel v0.3.32 Compiling crc32fast v1.5.2 Compiling simd-adler32 v0.3.10 Compiling phf_shared v0.13.1 Compiling zmij v1.0.21 Compiling adler2 v2.0.1 Compiling parking_lot_core v0.9.12 Compiling new_debug_unreachable v1.0.6 Compiling tracing-core v0.1.36 Compiling tower-service v0.3.3 Compiling zlib-rs v0.6.8 Compiling lock_api v0.4.14 Compiling autocfg v1.5.0 Compiling zeroize v1.8.2 Compiling generic-array v0.14.7 Compiling percent-encoding v2.3.2 Compiling miniz_oxide v0.8.9 Compiling precomputed-hash v0.1.1 Compiling writeable v0.6.2 Compiling httparse v1.10.1 Compiling litemap v0.8.1 Compiling phf_generator v0.13.1 Compiling rustls-pki-types v1.14.0 Compiling serde_json v1.0.149 Compiling utf-8 v0.7.6 Compiling icu_normalizer_data v2.1.1 Compiling fnv v1.0.7 Compiling phf_codegen v0.13.1 Compiling icu_properties_data v2.1.2 Compiling cpufeatures v0.2.17 Compiling atomic-waker v1.1.2 Compiling httpdate v1.0.3 Compiling try-lock v0.2.5 Compiling tendril v0.5.0 Compiling pin-utils v0.1.0 Compiling base64 v0.22.1 Compiling want v0.3.1 Compiling anyhow v1.0.103 Compiling untrusted v0.9.0 Compiling tower-layer v0.3.3 Compiling http v1.4.0 Compiling ipnet v2.12.0 Compiling rustix v1.1.4 Compiling thiserror v1.0.69 Compiling zerocopy v0.8.40 Compiling rustversion v1.0.22 Compiling rustls v0.23.46 Compiling getrandom v0.4.2 Compiling indexmap v2.13.0 Compiling rand_core v0.10.0 Compiling sync_wrapper v1.0.2 Compiling crossbeam-utils v0.8.21 Compiling linux-raw-sys v0.12.1 Compiling subtle v2.6.1 Compiling num-traits v0.2.19 Compiling form_urlencoded v1.2.2 Compiling ryu v1.0.23 Compiling unicase v2.9.0 Compiling syn v2.0.117 Compiling string_cache_codegen v0.6.1 Compiling mime v0.3.17 Compiling utf8_iter v1.0.4 Compiling compression-core v0.4.31 Compiling same-file v1.0.6 Compiling mime_guess v2.0.5 Compiling pkg-config v0.3.32 Compiling crossbeam-epoch v0.9.20 Compiling libm v0.2.16 Compiling hybrid-array v0.4.10 Compiling dtoa v1.0.11 Compiling dtoa-short v0.3.5 Compiling walkdir v2.5.0 Compiling web_atoms v0.2.4 Compiling webpki-roots v1.0.6 Compiling selectors v0.38.0 Compiling aho-corasick v1.1.4 Compiling thiserror v2.0.18 Compiling ident_case v1.0.1 Compiling iana-time-zone v0.1.65 Compiling jobserver v0.1.34 Compiling errno v0.3.14 Compiling socket2 v0.6.2 Compiling mio v1.1.1 Compiling getrandom v0.2.17 Compiling http-body v1.0.1 Compiling signal-hook-registry v1.4.8 Compiling cc v1.2.56 Compiling http-body-util v0.1.3 Compiling rand_core v0.6.4 Compiling encoding_rs v0.8.42 Compiling either v1.15.0 Compiling parking_lot v0.12.5 Compiling powerfmt v0.2.0 Compiling crypto-common v0.1.7 Compiling block-buffer v0.10.4 Compiling block-padding v0.3.3 Compiling iri-string v0.7.10 Compiling strsim v0.11.1 Compiling digest v0.10.7 Compiling regex-syntax v0.8.10 Compiling unicode-width v0.1.14 Compiling deranged v0.5.8 Compiling inout v0.1.4 Compiling sha2 v0.10.9 Compiling sha-1 v0.10.1 Compiling indexmap v1.9.3 Compiling servo_arc v0.4.3 Compiling rayon-core v1.13.0 Compiling xxhash-rust v0.8.15 Compiling num_threads v0.1.7 Compiling core_detect v1.0.0 Compiling rustc-hash v2.1.1 Compiling simdutf8 v0.1.5 Compiling ref-cast v1.0.25 Compiling num-conv v0.2.0 Compiling hex v0.4.3 Compiling base64 v0.21.7 Compiling time-core v0.1.8 Compiling utf8parse v0.2.2 Compiling multiversion_no_op v1.0.0 Compiling anstyle-parse v0.2.7 Compiling itertools v0.14.0 Compiling crossbeam-deque v0.8.6 Compiling sha1 v0.10.6 Compiling cipher v0.4.4 Compiling block-buffer v0.12.0 Compiling inout v0.2.2 Compiling crypto-common v0.2.1 Compiling memmap2 v0.5.10 Compiling is_terminal_polyfill v1.70.2 Compiling foldhash v0.1.5 Compiling bumpalo v3.20.3 Compiling cpufeatures v0.3.0 Compiling allocator-api2 v0.2.21 Compiling bit-vec v0.8.0 Compiling colorchoice v1.0.4 Compiling hashbrown v0.12.3 Compiling anstyle v1.0.13 Compiling flate2 v1.1.9 Compiling typed-path v0.12.3 Compiling anstyle-query v1.1.5 Compiling zstd-safe v7.2.4 Compiling tinyvec_macros v0.1.1 Compiling tinyvec v1.10.0 Compiling anstream v0.6.21 Compiling core_maths v0.1.1 Compiling ttf-parser v0.25.1 Compiling tempfile v3.26.0 Compiling reflink-copy v0.1.29 Compiling ring v0.17.14 Compiling zstd-sys v2.0.16+zstd.1.5.7 Compiling compression-codecs v0.4.37 Compiling time v0.3.47 Compiling hashbrown v0.15.5 Compiling zopfli v0.8.4 Compiling cipher v0.5.1 Compiling bit-set v0.8.0 Compiling chacha20 v0.10.2 Compiling rust-embed-utils v8.11.0 Compiling nom v8.0.0 Compiling fdeflate v0.3.7 Compiling openssl-probe v0.2.1 Compiling dyn-clone v1.0.20 Compiling foldhash v0.2.0 Compiling lazy_static v1.5.0 Compiling option-ext v0.2.0 Compiling regex-automata v0.4.14 Compiling rmcp v1.7.0 Compiling kuva v0.5.0 Compiling toml_write v0.1.2 Compiling unpdf v0.4.5 Compiling heck v0.5.0 Compiling clap_lex v1.0.0 Compiling debug_unsafe v0.1.4 Compiling winnow v0.7.15 Compiling atoi_simd v0.18.1 Compiling rayon v1.12.0 Compiling clap_builder v4.5.60 Compiling zip v8.6.0 Compiling png v0.18.1 Compiling sharded-slab v0.1.7 Compiling dirs-sys v0.4.1 Compiling rustls-native-certs v0.8.3 Compiling rand v0.10.1 Compiling fontdue v0.9.4 Compiling synstructure v0.13.2 Compiling darling_core v0.23.0 Compiling serde_derive_internals v0.29.1 Compiling quick-xml v0.41.0 Compiling ppv-lite86 v0.2.21 Compiling codepage v0.1.3 Compiling rc4 v0.2.0 Compiling unicode-normalization v0.1.25 Compiling xattr v1.6.1 Compiling serde_path_to_error v0.1.20 Compiling aes v0.8.4 Compiling cbc v0.1.2 Compiling md-5 v0.10.6 Compiling rand_chacha v0.3.1 Compiling axum-core v0.5.6 Compiling uuid v1.22.0 Compiling crossbeam-channel v0.5.15 Compiling filetime v0.2.27 Compiling rustls-pemfile v2.2.0 Compiling rand v0.8.6 Compiling tracing-log v0.2.0 Compiling csv-core v0.1.13 Compiling thread_local v1.1.9 Compiling ego-tree v0.11.0 Compiling html-escape v0.2.15 Compiling colorous v1.0.16 Compiling nu-ansi-term v0.50.3 Compiling unicode-segmentation v1.13.3 Compiling gjson v0.8.1 Compiling pastey v0.2.1 Compiling flagset v0.4.7 Compiling matchit v0.8.4 Compiling unicode-bidi v0.3.18 Compiling byteorder v1.5.0 Compiling fast-float2 v0.2.4 Compiling csv v1.4.0 Compiling tar v0.4.46 Compiling dirs v5.0.1 Compiling serde_derive v1.0.228 Compiling tokio-macros v2.6.1 Compiling zerofrom-derive v0.1.6 Compiling futures-macro v0.3.32 Compiling yoke-derive v0.8.1 Compiling zerovec-derive v0.11.2 Compiling tracing-attributes v0.1.31 Compiling displaydoc v0.2.5 Compiling phf_macros v0.13.1 Compiling thiserror-impl v1.0.69 Compiling async-trait v0.1.89 Compiling derive_more-impl v2.1.1 Compiling miette-derive v5.10.0 Compiling cssparser-macros v0.7.1 Compiling tokio v1.50.0 Compiling thiserror-impl v2.0.18 Compiling futures-util v0.3.32 Compiling ref-cast-impl v1.0.25 Compiling pin-project-internal v1.1.11 Compiling prost-derive v0.13.5 Compiling phf v0.13.1 Compiling schemars_derive v1.2.1 Compiling darling_macro v0.23.0 Compiling regex v1.12.3 Compiling cssparser v0.37.0 Compiling matchers v0.2.0 Compiling zerofrom v0.1.6 Compiling retry-policies v0.4.0 Compiling yoke v0.8.1 Compiling derive_more v2.1.1 Compiling rust-embed-impl v8.11.0 Compiling clap_derive v4.5.55 Compiling zip v9.0.4 Compiling tracing v0.1.44 Compiling humantime v2.3.0 Compiling md5 v0.7.0 Compiling zerovec v0.11.5 Compiling zerotrie v0.2.3 Compiling darling v0.23.0 Compiling roxmltree v0.20.0 Compiling miette v5.10.0 Compiling rmcp-macros v1.7.0 Compiling tracing-subscriber v0.3.22 Compiling semver v1.0.27 Compiling bytesize v1.3.3 Compiling pin-project v1.1.11 Compiling rust-embed v8.11.0 Compiling tinystr v0.8.2 Compiling potential_utf v0.1.4 Compiling icu_collections v2.1.1 Compiling icu_locale_core v2.1.1 Compiling prost v0.13.5 Compiling clap v4.5.60 Compiling icu_provider v2.1.1 Compiling string_cache v0.9.0 Compiling chrono v0.4.44 Compiling serde_urlencoded v0.7.1 Compiling ssri v9.2.0 Compiling http-serde v2.1.1 Compiling icu_normalizer v2.1.1 Compiling icu_properties v2.1.2 Compiling http-cache-semantics v2.1.1 Compiling bincode v1.3.3 Compiling futures-executor v0.3.32 Compiling toml_datetime v0.6.11 Compiling serde_spanned v0.6.9 Compiling futures v0.3.32 Compiling sse-stream v0.2.1 Compiling toml_edit v0.22.27 Compiling minijinja v2.17.1 Compiling calamine v0.36.1 Compiling markup5ever v0.38.0 Compiling markup5ever v0.39.0 Compiling html5ever v0.39.0 Compiling xml5ever v0.38.0 Compiling idna_adapter v1.2.1 Compiling html5ever v0.38.0 Compiling schemars v1.2.1 Compiling idna v1.1.0 Compiling rustls-webpki v0.103.15 Compiling url v2.5.8 Compiling dom_query v0.28.0 Compiling scraper v0.27.0 Compiling markup5ever_rcdom v0.38.0+unofficial Compiling tokio-util v0.7.18 Compiling tower v0.5.3 Compiling async-compression v0.4.41 Compiling tokio-stream v0.1.18 Compiling htmd v0.5.4 Compiling toml v0.8.23 Compiling h2 v0.4.16 Compiling tower-http v0.6.8 Compiling cacache v13.1.0 Compiling tower v0.4.13 Compiling dom_smoothie v0.18.2 Compiling http-cache v0.20.1 Compiling hyper v1.8.1 Compiling tokio-rustls v0.26.4 Compiling hyper-util v0.1.20 Compiling zstd v0.13.3 Compiling hyper-rustls v0.27.7 Compiling hyper-timeout v0.5.2 Compiling axum v0.8.8 Compiling tonic v0.12.3 Compiling reqwest v0.12.28 Compiling reqwest-middleware v0.4.2 Compiling http-cache-reqwest v0.15.1 Compiling reqwest-retry v0.7.0 Compiling biomcp-cli v0.9.3 (/build/source) warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency --> src/entities/article/variant_search.rs:377:64 | 377 | let _ = self.allocation.identity_verification_reserved.fetch_update( | ^^^^^^^^^^^^ | = note: `#[warn(deprecated)]` on by default help: replace the use of the deprecated method | 377 - let _ = self.allocation.identity_verification_reserved.fetch_update( 377 + let _ = self.allocation.identity_verification_reserved.try_update( | warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency --> src/entities/article/variant_search.rs:496:22 | 496 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { | ^^^^^^^^^^^^ | help: replace the use of the deprecated method | 496 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { 496 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { | warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency --> src/entities/article/variant_search.rs:521:18 | 521 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { | ^^^^^^^^^^^^ | help: replace the use of the deprecated method | 521 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { 521 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { | warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency --> src/entities/article/variant_search.rs:541:18 | 541 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { | ^^^^^^^^^^^^ | help: replace the use of the deprecated method | 541 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { 541 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { | warning: `biomcp-cli` (lib) generated 4 warnings (run `cargo fix --lib -p biomcp-cli` to apply 4 suggestions) Finished `release` profile [optimized] target(s) in 10m 11s Executing cargoInstallPostBuildHook Finished cargoInstallPostBuildHook Finished cargoBuildHook buildPhase completed in 10 minutes 12 seconds Running phase: checkPhase Executing cargoNextestHook cargoNextestHook flags: --target x86_64-unknown-linux-gnu --offline --show-progress=none -j 24 --lib -- Compiling proc-macro2 v1.0.106 Compiling quote v1.0.45 Compiling unicode-ident v1.0.24 Compiling cfg-if v1.0.4 Compiling libc v0.2.190 Compiling serde_core v1.0.228 Compiling memchr v2.8.0 Compiling serde v1.0.228 Compiling itoa v1.0.17 Compiling smallvec v1.15.1 Compiling pin-project-lite v0.2.17 Compiling bytes v1.11.1 Compiling futures-core v0.3.32 Compiling version_check v0.9.5 Compiling once_cell v1.21.3 Compiling log v0.4.34 Compiling typenum v1.19.0 Compiling futures-sink v0.3.32 Compiling stable_deref_trait v1.2.1 Compiling slab v0.4.12 Compiling bitflags v2.11.0 Compiling equivalent v1.0.2 Compiling siphasher v1.0.2 Compiling futures-task v0.3.32 Compiling futures-io v0.3.32 Compiling shlex v1.3.0 Compiling fastrand v2.3.0 Compiling find-msvc-tools v0.1.9 Compiling hashbrown v0.16.1 Compiling crc32fast v1.5.2 Compiling simd-adler32 v0.3.10 Compiling zmij v1.0.21 Compiling scopeguard v1.2.0 Compiling adler2 v2.0.1 Compiling zlib-rs v0.6.8 Compiling parking_lot_core v0.9.12 Compiling tower-service v0.3.3 Compiling percent-encoding v2.3.2 Compiling zeroize v1.8.2 Compiling httparse v1.10.1 Compiling writeable v0.6.2 Compiling litemap v0.8.1 Compiling icu_normalizer_data v2.1.1 Compiling new_debug_unreachable v1.0.6 Compiling autocfg v1.5.0 Compiling try-lock v0.2.5 Compiling futures-channel v0.3.32 Compiling atomic-waker v1.1.2 Compiling fnv v1.0.7 Compiling base64 v0.22.1 Compiling serde_json v1.0.149 Compiling httpdate v1.0.3 Compiling icu_properties_data v2.1.2 Compiling lock_api v0.4.14 Compiling pin-utils v0.1.0 Compiling precomputed-hash v0.1.1 Compiling tower-layer v0.3.3 Compiling ipnet v2.12.0 Compiling miniz_oxide v0.8.9 Compiling want v0.3.1 Compiling untrusted v0.9.0 Compiling tracing-core v0.1.36 Compiling sync_wrapper v1.0.2 Compiling phf_shared v0.13.1 Compiling utf-8 v0.7.6 Compiling rustix v1.1.4 Compiling getrandom v0.4.2 Compiling anyhow v1.0.103 Compiling rand_core v0.10.0 Compiling cpufeatures v0.2.17 Compiling form_urlencoded v1.2.2 Compiling utf8_iter v1.0.4 Compiling linux-raw-sys v0.12.1 Compiling compression-core v0.4.31 Compiling rustls-pki-types v1.14.0 Compiling rustls v0.23.46 Compiling thiserror v1.0.69 Compiling rustversion v1.0.22 Compiling subtle v2.6.1 Compiling zerocopy v0.8.40 Compiling ryu v1.0.23 Compiling crossbeam-utils v0.8.21 Compiling mime v0.3.17 Compiling unicase v2.9.0 Compiling iri-string v0.7.10 Compiling generic-array v0.14.7 Compiling tendril v0.5.0 Compiling cfg_aliases v0.2.1 Compiling powerfmt v0.2.0 Compiling thiserror v2.0.18 Compiling libm v0.2.16 Compiling num_threads v0.1.7 Compiling time-core v0.1.8 Compiling nix v0.31.3 Compiling ident_case v1.0.1 Compiling regex-syntax v0.8.10 Compiling phf_generator v0.13.1 Compiling mime_guess v2.0.5 Compiling pkg-config v0.3.32 Compiling num-conv v0.2.0 Compiling dtoa v1.0.11 Compiling crossbeam-epoch v0.9.20 Compiling iana-time-zone v0.1.65 Compiling num-traits v0.2.19 Compiling deranged v0.5.8 Compiling same-file v1.0.6 Compiling phf_codegen v0.13.1 Compiling strsim v0.11.1 Compiling ref-cast v1.0.25 Compiling unicode-width v0.1.14 Compiling dtoa-short v0.3.5 Compiling walkdir v2.5.0 Compiling either v1.15.0 Compiling aho-corasick v1.1.4 Compiling indexmap v1.9.3 Compiling http v1.4.0 Compiling selectors v0.38.0 Compiling servo_arc v0.4.3 Compiling rustc-hash v2.1.1 Compiling webpki-roots v1.0.6 Compiling multiversion_no_op v1.0.0 Compiling rayon-core v1.13.0 Compiling xxhash-rust v0.8.15 Compiling core_detect v1.0.0 Compiling hex v0.4.3 Compiling simdutf8 v0.1.5 Compiling base64 v0.21.7 Compiling cpufeatures v0.3.0 Compiling indexmap v2.13.0 Compiling utf8parse v0.2.2 Compiling anstyle-query v1.1.5 Compiling allocator-api2 v0.2.21 Compiling is_terminal_polyfill v1.70.2 Compiling bumpalo v3.20.3 Compiling chacha20 v0.10.2 Compiling hashbrown v0.12.3 Compiling dyn-clone v1.0.20 Compiling itertools v0.14.0 Compiling anstyle-parse v0.2.7 Compiling bit-vec v0.8.0 Compiling rmcp v1.7.0 Compiling colorchoice v1.0.4 Compiling zstd-safe v7.2.4 Compiling typed-path v0.12.3 Compiling foldhash v0.1.5 Compiling tinyvec_macros v0.1.1 Compiling anstyle v1.0.13 Compiling nom v8.0.0 Compiling fdeflate v0.3.7 Compiling foldhash v0.2.0 Compiling toml_write v0.1.2 Compiling pastey v0.2.1 Compiling openssl-probe v0.2.1 Compiling tinyvec v1.10.0 Compiling option-ext v0.2.0 Compiling lazy_static v1.5.0 Compiling debug_unsafe v0.1.4 Compiling heck v0.5.0 Compiling zopfli v0.8.4 Compiling kuva v0.5.0 Compiling winnow v0.7.15 Compiling bit-set v0.8.0 Compiling clap_lex v1.0.0 Compiling unpdf v0.4.5 Compiling sharded-slab v0.1.7 Compiling anstream v0.6.21 Compiling crossbeam-channel v0.5.15 Compiling rustls-native-certs v0.8.3 Compiling rustls-pemfile v2.2.0 Compiling syn v2.0.117 Compiling string_cache_codegen v0.6.1 Compiling hashbrown v0.15.5 Compiling tracing-log v0.2.0 Compiling csv-core v0.1.13 Compiling pem v3.0.6 Compiling thread_local v1.1.9 Compiling comma v1.0.0 Compiling ego-tree v0.11.0 Compiling html-escape v0.2.15 Compiling byteorder v1.5.0 Compiling encoding_rs v0.8.42 Compiling clap_builder v4.5.60 Compiling atoi_simd v0.18.1 Compiling unicode-bidi v0.3.18 Compiling crossbeam-deque v0.8.6 Compiling fast-float2 v0.2.4 Compiling unicode-segmentation v1.13.3 Compiling flagset v0.4.7 Compiling unicode-normalization v0.1.25 Compiling gjson v0.8.1 Compiling nu-ansi-term v0.50.3 Compiling colorous v1.0.16 Compiling matchit v0.8.4 Compiling hybrid-array v0.4.10 Compiling bytesize v1.3.3 Compiling roxmltree v0.20.0 Compiling http-body v1.0.1 Compiling semver v1.0.27 Compiling humantime v2.3.0 Compiling md5 v0.7.0 Compiling http-body-util v0.1.3 Compiling web_atoms v0.2.4 Compiling axum-core v0.5.6 Compiling core_maths v0.1.1 Compiling ttf-parser v0.25.1 Compiling rayon v1.12.0 Compiling jobserver v0.1.34 Compiling crypto-common v0.2.1 Compiling block-buffer v0.12.0 Compiling inout v0.2.2 Compiling crypto-common v0.1.7 Compiling block-buffer v0.10.4 Compiling block-padding v0.3.3 Compiling cc v1.2.56 Compiling digest v0.10.7 Compiling inout v0.1.4 Compiling cipher v0.4.4 Compiling sha2 v0.10.9 Compiling sha-1 v0.10.1 Compiling sha1 v0.10.6 Compiling md-5 v0.10.6 Compiling errno v0.3.14 Compiling socket2 v0.6.2 Compiling mio v1.1.1 Compiling getrandom v0.2.17 Compiling time v0.3.47 Compiling memmap2 v0.5.10 Compiling dirs-sys v0.4.1 Compiling filetime v0.2.27 Compiling cbc v0.1.2 Compiling aes v0.8.4 Compiling signal-hook-registry v1.4.8 Compiling rust-embed-utils v8.11.0 Compiling reflink-copy v0.1.29 Compiling xattr v1.6.1 Compiling rand_core v0.6.4 Compiling dirs v5.0.1 Compiling regex-automata v0.4.14 Compiling tempfile v3.26.0 Compiling uuid v1.22.0 Compiling rand v0.10.1 Compiling codepage v0.1.3 Compiling quick-xml v0.41.0 Compiling parking_lot v0.12.5 Compiling tar v0.4.46 Compiling cipher v0.5.1 Compiling rc4 v0.2.0 Compiling ring v0.17.14 Compiling zstd-sys v2.0.16+zstd.1.5.7 Compiling serde_path_to_error v0.1.20 Compiling csv v1.4.0 Compiling fontdue v0.9.4 Compiling yasna v0.5.2 Compiling flate2 v1.1.9 Compiling compression-codecs v0.4.37 Compiling png v0.18.1 Compiling zip v8.6.0 Compiling zip v9.0.4 Compiling ppv-lite86 v0.2.21 Compiling rand_chacha v0.3.1 Compiling synstructure v0.13.2 Compiling darling_core v0.23.0 Compiling serde_derive_internals v0.29.1 Compiling rand v0.8.6 Compiling regex v1.12.3 Compiling matchers v0.2.0 Compiling serde_derive v1.0.228 Compiling tokio-macros v2.6.1 Compiling futures-macro v0.3.32 Compiling zerofrom-derive v0.1.6 Compiling yoke-derive v0.8.1 Compiling zerovec-derive v0.11.2 Compiling tracing-attributes v0.1.31 Compiling displaydoc v0.2.5 Compiling phf_macros v0.13.1 Compiling thiserror-impl v1.0.69 Compiling async-trait v0.1.89 Compiling thiserror-impl v2.0.18 Compiling miette-derive v5.10.0 Compiling cssparser-macros v0.7.1 Compiling derive_more-impl v2.1.1 Compiling ref-cast-impl v1.0.25 Compiling pin-project-internal v1.1.11 Compiling prost-derive v0.13.5 Compiling serial_test_derive v3.5.0 Compiling clap_derive v4.5.55 Compiling rust-embed-impl v8.11.0 Compiling schemars_derive v1.2.1 Compiling rustls-webpki v0.103.15 Compiling rcgen v0.13.2 Compiling retry-policies v0.4.0 Compiling zstd v0.13.3 Compiling rust-embed v8.11.0 Compiling futures-util v0.3.32 Compiling tokio v1.50.0 Compiling phf v0.13.1 Compiling cssparser v0.37.0 Compiling zerofrom v0.1.6 Compiling yoke v0.8.1 Compiling derive_more v2.1.1 Compiling pin-project v1.1.11 Compiling tracing v0.1.44 Compiling zerovec v0.11.5 Compiling zerotrie v0.2.3 Compiling miette v5.10.0 Compiling tracing-subscriber v0.3.22 Compiling rexpect v0.7.0 Compiling prost v0.13.5 Compiling darling_macro v0.23.0 Compiling clap v4.5.60 Compiling tinystr v0.8.2 Compiling potential_utf v0.1.4 Compiling icu_collections v2.1.1 Compiling icu_locale_core v2.1.1 Compiling darling v0.23.0 Compiling rmcp-macros v1.7.0 Compiling icu_provider v2.1.1 Compiling icu_properties v2.1.2 Compiling icu_normalizer v2.1.1 Compiling string_cache v0.9.0 Compiling chrono v0.4.44 Compiling serde_urlencoded v0.7.1 Compiling http-serde v2.1.1 Compiling ssri v9.2.0 Compiling bincode v1.3.3 Compiling toml_datetime v0.6.11 Compiling serde_spanned v0.6.9 Compiling minijinja v2.17.1 Compiling calamine v0.36.1 Compiling http-cache-semantics v2.1.1 Compiling toml_edit v0.22.27 Compiling futures-executor v0.3.32 Compiling sse-stream v0.2.1 Compiling futures v0.3.32 Compiling serial_test v3.5.0 Compiling markup5ever v0.39.0 Compiling markup5ever v0.38.0 Compiling idna_adapter v1.2.1 Compiling idna v1.1.0 Compiling html5ever v0.39.0 Compiling xml5ever v0.38.0 Compiling html5ever v0.38.0 Compiling schemars v1.2.1 Compiling url v2.5.8 Compiling dom_query v0.28.0 Compiling scraper v0.27.0 Compiling markup5ever_rcdom v0.38.0+unofficial Compiling htmd v0.5.4 Compiling toml v0.8.23 Compiling tokio-util v0.7.18 Compiling tower v0.5.3 Compiling async-compression v0.4.41 Compiling tokio-rustls v0.26.4 Compiling tokio-stream v0.1.18 Compiling process-wrap v9.1.0 Compiling dom_smoothie v0.18.2 Compiling cacache v13.1.0 Compiling h2 v0.4.16 Compiling tower-http v0.6.8 Compiling tower v0.4.13 Compiling http-cache v0.20.1 Compiling hyper v1.8.1 Compiling hyper-util v0.1.20 Compiling hyper-rustls v0.27.7 Compiling reqwest v0.13.4 Compiling hyper-timeout v0.5.2 Compiling axum v0.8.8 Compiling tonic v0.12.3 Compiling reqwest v0.12.28 Compiling reqwest-middleware v0.4.2 Compiling reqwest-retry v0.7.0 Compiling http-cache-reqwest v0.15.1 Compiling biomcp-mcp-contract-client v0.1.0 (/build/source/crates/biomcp-mcp-contract-client) Compiling biomcp-cli v0.9.3 (/build/source) warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency --> src/entities/article/variant_search.rs:377:64 | 377 | let _ = self.allocation.identity_verification_reserved.fetch_update( | ^^^^^^^^^^^^ | = note: `#[warn(deprecated)]` on by default help: replace the use of the deprecated method | 377 - let _ = self.allocation.identity_verification_reserved.fetch_update( 377 + let _ = self.allocation.identity_verification_reserved.try_update( | warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency --> src/entities/article/variant_search.rs:496:22 | 496 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { | ^^^^^^^^^^^^ | help: replace the use of the deprecated method | 496 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { 496 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { | warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency --> src/entities/article/variant_search.rs:521:18 | 521 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { | ^^^^^^^^^^^^ | help: replace the use of the deprecated method | 521 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { 521 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { | warning: use of deprecated method `std::sync::atomic::Atomic::::fetch_update`: renamed to `try_update` for consistency --> src/entities/article/variant_search.rs:541:18 | 541 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { | ^^^^^^^^^^^^ | help: replace the use of the deprecated method | 541 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { 541 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| { | warning: `biomcp-cli` (lib test) generated 4 warnings (run `cargo fix --lib -p biomcp-cli --tests` to apply 4 suggestions) Finished `test` profile [unoptimized + debuginfo] target(s) in 2m 45s ──────────── Nextest run ID 657772ba-925e-44c8-99ea-1a50b6b324d1 with nextest profile: default Starting 4212 tests across 1 binary (29 tests skipped) PASS [ 0.015s] biomcp-cli cache::config::tests::disk_free_threshold_methods_cover_percent_bytes_and_display PASS [ 0.017s] biomcp-cli cache::config::tests::defaults_when_no_env_or_file_uses_default_cache_config PASS [ 0.017s] biomcp-cli cache::config::tests::env_max_age_overrides_file_and_default PASS [ 0.018s] biomcp-cli cache::config::tests::a_test_builds_default_cache_root_never_reads_the_machine_cache PASS [ 0.019s] biomcp-cli cache::config::tests::default_min_disk_free_is_10_percent_with_default_origin PASS [ 0.019s] biomcp-cli cache::clean::tests::cache_clean_blob_not_found_is_benign_drift PASS [ 0.019s] biomcp-cli cache::clean::tests::cache_clean_age_cleanup_removes_only_old_entries PASS [ 0.019s] biomcp-cli cache::clean::tests::deadline_expiry_between_key_removals_leaves_the_next_key_untouched PASS [ 0.019s] biomcp-cli cache::config::tests::env_cache_dir_overrides_file_and_default PASS [ 0.019s] biomcp-cli cache::clean::tests::cache_clean_snapshot_failure_returns_io_error PASS [ 0.020s] biomcp-cli cache::config::tests::blank_env_values_are_treated_as_unset PASS [ 0.020s] biomcp-cli cache::clean::tests::cache_clean_shared_integrity_blob_waits_for_all_keys PASS [ 0.020s] biomcp-cli cache::config::tests::blank_env_max_age_falls_through PASS [ 0.020s] biomcp-cli cache::config::tests::default_origins_are_reported_when_values_fall_through PASS [ 0.020s] biomcp-cli cache::config::tests::blank_toml_dir_returns_error PASS [ 0.020s] biomcp-cli augment_genes_with_opentargets_merges_sources_without_duplicates PASS [ 0.021s] biomcp-cli augment_genes_with_opentargets_respects_twenty_gene_cap PASS [ 0.021s] biomcp-cli cache::config::tests::env_min_disk_free_overrides_file_and_tracks_env_origin PASS [ 0.021s] biomcp-cli cache::clean::tests::cache_clean_dry_run_reports_orphan_plan_without_deleting PASS [ 0.021s] biomcp-cli cache::config::tests::env_max_size_overrides_file_and_default PASS [ 0.022s] biomcp-cli cache::clean::tests::cache_clean_destructive_removes_orphan_blobs PASS [ 0.023s] biomcp-cli cache::clean::tests::cache_clean_default_origin_enforces_retention_without_size_eviction PASS [ 0.023s] biomcp-cli cache::clean::tests::cache_clean_size_cleanup_uses_explicit_config_without_flag PASS [ 0.024s] biomcp-cli cache::clean::tests::cache_clean_dry_run_matches_destructive_on_equivalent_seed PASS [ 0.013s] biomcp-cli cache::config::tests::invalid_env_max_age_returns_error PASS [ 0.013s] biomcp-cli cache::config::tests::toml_zero_max_age_returns_error PASS [ 0.014s] biomcp-cli cache::config::tests::toml_min_disk_free_parses_absolute_bytes_and_tracks_file_origin PASS [ 0.013s] biomcp-cli cache::config::tests::toml_zero_max_size_returns_error PASS [ 0.017s] biomcp-cli cache::config::tests::invalid_env_min_disk_free_returns_error PASS [ 0.016s] biomcp-cli cache::config::tests::toml_without_cache_section_uses_defaults PASS [ 0.018s] biomcp-cli cache::config::tests::invalid_env_size_returns_error PASS [ 0.016s] biomcp-cli cache::config::tests::zero_env_max_age_returns_error PASS [ 0.017s] biomcp-cli cache::config::tests::resolve_cache_config_reports_path_on_read_failure PASS [ 0.017s] biomcp-cli cache::config::tests::toml_dir_overrides_default PASS [ 0.020s] biomcp-cli cache::config::tests::invalid_env_min_disk_free_over_100_percent_returns_error PASS [ 0.018s] biomcp-cli cache::config::tests::invalid_toml_syntax_returns_error PASS [ 0.018s] biomcp-cli cache::config::tests::origins_track_mixed_precedence_without_max_age_env_override PASS [ 0.017s] biomcp-cli cache::config::tests::toml_max_size_overrides_default PASS [ 0.018s] biomcp-cli cache::config::tests::resolve_cache_config_uses_defaults_when_no_env_or_file PASS [ 0.019s] biomcp-cli cache::config::tests::resolve_cache_config_env_overrides_file PASS [ 0.015s] biomcp-cli cache::layout_tests::derived_index_bucket_is_the_file_cacache_writes PASS [ 0.017s] biomcp-cli cache::config::tests::zero_env_size_returns_error PASS [ 0.020s] biomcp-cli cache::config::tests::resolve_cache_config_reports_path_on_failure PASS [ 0.022s] biomcp-cli cache::config::tests::resolve_cache_config_reads_cache_toml_from_xdg_config_home PASS [ 0.021s] biomcp-cli cache::config::tests::toml_max_age_overrides_default PASS [ 0.021s] biomcp-cli cache::config::tests::unknown_toml_field_returns_error PASS [ 0.017s] biomcp-cli cache::limits::tests::evaluate_cache_limits_converts_disk_deficit_into_effective_max_size PASS [ 0.019s] biomcp-cli cache::limits::tests::evaluate_cache_limits_can_drive_effective_max_size_to_zero PASS [ 0.015s] biomcp-cli cache::limits::tests::summarize_cache_usage_distinguishes_referenced_and_orphan_blob_bytes PASS [ 0.014s] biomcp-cli cache::maintenance::operation_lock_tests::constructor_repairs_and_independent_key_operations_do_not_serialize_globally PASS [ 0.012s] biomcp-cli cache::maintenance::tests::clear_missing_path_returns_zero_report PASS [ 0.014s] biomcp-cli cache::maintenance::tests::clear_preserves_sibling_downloads_directory PASS [ 0.014s] biomcp-cli cache::maintenance::tests::clear_nested_symlink_unlinks_entry_and_sets_bytes_to_none PASS [ 0.018s] biomcp-cli cache::maintenance::operation_lock_tests::cancelled_pending_shared_lock_releases_its_provisional_lease PASS [ 0.015s] biomcp-cli cache::maintenance::tests::clear_removes_directory_tree_and_root_http_dir PASS [ 0.021s] biomcp-cli cache::maintenance::operation_lock_tests::colliding_http_cache_keys_wait_for_the_local_writer PASS [ 0.018s] biomcp-cli cache::maintenance::tests::clear_rejects_special_file_before_mutation PASS [ 0.019s] biomcp-cli cache::maintenance::tests::clear_rejects_root_regular_file_before_mutation PASS [ 0.018s] biomcp-cli cache::maintenance::tests::clear_root_symlink_is_unlinked_without_traversing_target PASS [ 0.014s] biomcp-cli cache::manager::tests::run_eviction_cycle_propagates_snapshot_error PASS [ 0.022s] biomcp-cli cache::maintenance::operation_lock_tests::same_process_readers_never_block_on_an_exclusive_upgrade PASS [ 0.025s] biomcp-cli cache::maintenance::operation_lock_tests::local_shared_lease_delays_maintenance_until_release_within_deadline PASS [ 0.012s] biomcp-cli cache::manager::tests::startup_clean_tests::cache_mode_off_skips_the_startup_clean PASS [ 0.028s] biomcp-cli cache::manager::tests::put_schedules_eviction_when_disk_floor_is_violated PASS [ 0.009s] biomcp-cli cache::manager::tests::write_security_tests::cacache_atomic_temporary_file_is_born_private PASS [ 0.034s] biomcp-cli cache::maintenance::operation_lock_tests::local_shared_lease_maintenance_wait_expires_without_retaining_locks PASS [ 0.036s] biomcp-cli cache::manager::tests::new_manager_seeds_approximate_bytes_from_fast_estimate PASS [ 0.041s] biomcp-cli cache::maintenance::operation_lock_tests::local_key_wait_honors_expiry_and_cancellation_without_retaining_the_shard PASS [ 0.035s] biomcp-cli cache::manager::tests::run_eviction_cycle_logs_successful_cleanup_still_under_floor_at_debug PASS [ 0.036s] biomcp-cli cache::manager::tests::run_eviction_cycle_false_positive_resyncs_without_cleaning PASS [ 0.038s] biomcp-cli cache::manager::tests::put_schedules_eviction_for_preexisting_oversized_cache_with_ample_disk PASS [ 0.022s] biomcp-cli cache::manager::tests::startup_totals_tests::cache_mode_off_seeds_zero_without_reading_the_cache PASS [ 0.039s] biomcp-cli cache::manager::tests::run_eviction_cycle_uses_effective_max_size_for_disk_pressure PASS [ 0.032s] biomcp-cli cache::manager::tests::startup_clean_tests::a_marker_older_than_a_day_runs_the_clean_and_rewrites_the_marker PASS [ 0.032s] biomcp-cli cache::manager::tests::startup_clean_tests::a_fresh_startup_clean_marker_skips_the_clean PASS [ 0.037s] biomcp-cli cache::manager::tests::run_eviction_cycle_uses_exact_snapshot_state_for_size_eviction PASS [ 0.049s] biomcp-cli cache::manager::tests::opening_manager_physically_removes_expired_entries_below_size_limit PASS [ 0.047s] biomcp-cli cache::manager::tests::run_eviction_cycle_logs_cleanup_errors_at_warn PASS [ 0.033s] biomcp-cli cache::manager::tests::startup_clean_tests::a_missing_startup_clean_marker_runs_the_clean_and_writes_the_marker PASS [ 0.013s] biomcp-cli cache::manager::tests::write_security_tests::put_rejects_a_multiply_linked_index_bucket PASS [ 0.038s] biomcp-cli cache::manager::tests::startup_totals_tests::the_daily_clean_rewrites_the_totals_marker_with_an_exact_total PASS [ 0.009s] biomcp-cli cache::migration::tests::async_io_crossing_expiry_settles_without_admitting_a_mutation PASS [ 0.015s] biomcp-cli cache::manager::tests::write_security_tests::put_rejects_linked_index_bucket_and_each_linked_ancestor PASS [ 0.062s] biomcp-cli cache::manager::tests::put_debounces_duplicate_eviction_scheduling PASS [ 0.032s] biomcp-cli cache::manager::tests::write_security_tests::estimate_cache_bytes_fast_reads_a_missing_cache_as_zero PASS [ 0.037s] biomcp-cli cache::manager::tests::write_security_tests::estimate_cache_bytes_fast_totals_once_then_reads_the_kept_marker PASS [ 0.009s] biomcp-cli cache::migration::tests::body_limit_epoch_rejects_linked_control_files_without_touching_targets PASS [ 0.055s] biomcp-cli cache::manager::tests::startup_totals_tests::updating_the_total_replaces_the_record_without_truncating_its_old_inode PASS [ 0.065s] biomcp-cli cache::manager::tests::stale_marker_tests::a_stale_serve_carries_the_marker_with_its_policy_age PASS [ 0.065s] biomcp-cli cache::manager::tests::stale_marker_tests::put_clears_the_marker_so_revalidation_cannot_carry_it PASS [ 0.071s] biomcp-cli cache::manager::tests::stale_marker_tests::a_fresh_serve_carries_no_marker PASS [ 0.009s] biomcp-cli cache::migration::tests::errors_when_legacy_path_is_a_dangling_symlink PASS [ 0.010s] biomcp-cli cache::migration::tests::epoch_cleanup_stops_mutating_after_a_mid_traversal_deadline PASS [ 0.038s] biomcp-cli cache::manager::tests::write_security_tests::put_secures_only_its_exact_paths_under_a_permissive_umask PASS [ 0.009s] biomcp-cli cache::migration::tests::errors_when_legacy_path_is_not_a_directory PASS [ 0.036s] biomcp-cli cache::migration::tests::body_limit_epoch_cleans_its_staging_file_after_an_ordinary_error PASS [ 0.036s] biomcp-cli cache::migration::tests::body_limit_epoch_clears_legacy_entries_once PASS [ 0.040s] biomcp-cli cache::manager::tests::write_security_tests::successful_put_with_metadata_read_error_fails_closed_with_stable_context PASS [ 0.009s] biomcp-cli cache::migration::tests::errors_when_runtime_http_target_is_not_a_directory PASS [ 0.041s] biomcp-cli cache::manager::tests::write_security_tests::successful_put_with_missing_metadata_fails_closed_with_stable_context PASS [ 0.011s] biomcp-cli cache::migration::tests::errors_when_runtime_http_target_is_a_dangling_symlink PASS [ 0.036s] biomcp-cli cache::migration::tests::body_limit_epoch_ignores_crash_orphans_and_later_succeeds PASS [ 0.011s] biomcp-cli cache::migration::tests::maintenance_contention_expires_without_partial_migration_and_releases_for_retry PASS [ 0.032s] biomcp-cli cache::migration::tests::body_limit_epoch_lock_contention_obeys_variant_article_deadline PASS [ 0.011s] biomcp-cli cache::migration::tests::renames_legacy_http_cache_directory_when_only_legacy_dir_exists PASS [ 0.035s] biomcp-cli cache::migration::tests::body_limit_epoch_is_concurrent_and_idempotent PASS [ 0.011s] biomcp-cli cache::migration::tests::skips_when_legacy_http_cache_directory_is_missing PASS [ 0.010s] biomcp-cli cache::migration::tests::skips_when_runtime_http_directory_already_exists PASS [ 0.010s] biomcp-cli cache::planner::tests::composite_cleanup_plans_age_then_size_on_one_snapshot PASS [ 0.065s] biomcp-cli cache::manager::tests::write_security_tests::contended_constructor_defers_cleanup_until_a_later_uncontended_constructor PASS [ 0.010s] biomcp-cli cache::planner::tests::planner_walk_errors_when_content_root_is_not_a_directory PASS [ 0.035s] biomcp-cli cache::migration::tests::body_limit_epoch_observes_a_private_temp_and_removes_it_after_publication PASS [ 0.045s] biomcp-cli cache::migration::tests::body_limit_epoch_files_are_private_and_existing_modes_are_repaired PASS [ 0.069s] biomcp-cli cache::manager::tests::write_security_tests::cold_cache_different_shard_puts_tolerate_common_directory_creation_races PASS [ 0.012s] biomcp-cli cache::planner::tests::plan_orphan_gc_selects_only_zero_refcount_blobs PASS [ 0.012s] biomcp-cli cache::planner::tests::planner_walk_skips_symlinked_content_entries PASS [ 0.013s] biomcp-cli cache::planner::tests::planner_walk_skips_malformed_blob_leaves PASS [ 0.013s] biomcp-cli cache::planner::tests::shared_integrity_age_cleanup_only_removes_blob_after_last_reference PASS [ 0.012s] biomcp-cli cache::planner::tests::snapshot_cache_errors_when_cache_root_is_not_a_directory PASS [ 0.014s] biomcp-cli cache::planner::tests::shared_integrity_size_lru_uses_projected_refcounts_and_oldest_first_tiebreak PASS [ 0.014s] biomcp-cli cache::planner::tests::size_lru_ignores_orphan_bytes PASS [ 0.069s] biomcp-cli cache::manager::tests::write_security_tests::put_atomically_replaces_a_hostile_content_destination PASS [ 0.011s] biomcp-cli cache::planner::tests::snapshot_cache_returns_empty_snapshot_for_uninitialized_cache_root PASS [ 0.014s] biomcp-cli cache::planner::tests::size_lru_missing_blob_entries_do_not_displace_live_entries PASS [ 0.013s] biomcp-cli cache::planner::tests::snapshot_cache_returns_empty_snapshot_for_missing_cache_root PASS [ 0.011s] biomcp-cli cache::private::unix_tests::directory_create_race_revalidates_a_hostile_winner PASS [ 0.011s] biomcp-cli cache::private::unix_tests::explicit_whole_tree_maintenance_repairs_an_unrelated_sentinel PASS [ 0.016s] biomcp-cli cache::planner::tests::snapshot_cache_includes_orphan_blobs_without_synthesizing_missing_referenced_blobs PASS [ 0.011s] biomcp-cli cache::private::unix_tests::unrelated_nested_content_v2_directory_symlink_keeps_skip_behavior PASS [ 0.015s] biomcp-cli cache::planner::tests::snapshot_cache_reports_seeded_entries_and_blobs_deterministically PASS [ 0.013s] biomcp-cli cache::private::unix_tests::cache_root_basename_never_changes_managed_content_semantics PASS [ 0.012s] biomcp-cli cache::private::unix_tests::whole_tree_maintenance_skips_unrelated_links_but_rejects_content_directory_links PASS [ 0.011s] biomcp-cli cache::provider_capture::tests::capacity_planner_covers_exact_plus_one_and_stable_ties PASS [ 0.012s] biomcp-cli cache::provider_capture::tests::refuses_to_publish_through_a_symlinked_staging_directory PASS [ 0.011s] biomcp-cli cli::adverse_event::tests::resolved_device_report_rejects_every_named_section_including_all PASS [ 0.011s] biomcp-cli cache::provider_capture::unsupported::tests::absent_capture_store_is_the_only_supported_empty_state PASS [ 0.012s] biomcp-cli cache::provider_capture::tests::rejects_symlinked_capture_shards PASS [ 0.013s] biomcp-cli cli::adverse_event::tests::get_adverse_event_parses_sections PASS [ 0.014s] biomcp-cli cli::adverse_event::tests::search_adverse_event_device_rejects_positional_drug_alias PASS [ 0.042s] biomcp-cli cache::migration::tests::synchronous_staging_window_is_deadline_raced_responsive_and_orphan_free PASS [ 0.011s] biomcp-cli cli::adverse_event::tests::search_adverse_event_parses_serious_default_and_limit PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_adverse_event_parses_source_filter PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_plan_count_without_source_uses_faers PASS [ 0.013s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_count_for_vaers_source PASS [ 0.017s] biomcp-cli cli::adverse_event::tests::search_plan_accepts_each_route_specific_contract PASS [ 0.034s] biomcp-cli cache::provider_capture::tests::refuses_a_blob_shard_swapped_after_validation_without_writing_outside PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_nondefault_source_for_device PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_nondefault_source_for_recall PASS [ 0.008s] biomcp-cli cli::article::assets::tests::asset_pages_are_stable_and_emit_exact_continuations PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_positional_drug_alias_for_device PASS [ 0.008s] biomcp-cli cli::article::assets::tests::asset_requires_exactly_one_key_and_no_assets_section PASS [ 0.021s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_every_inapplicable_route_filter PASS [ 0.009s] biomcp-cli cli::article::assets::tests::assets_is_standalone_json_only_route PASS [ 0.009s] biomcp-cli cli::article::assets::tests::exact_duplicate_manifest_rows_are_removed_in_order PASS [ 0.007s] biomcp-cli cli::article::fulltext_view::tests::a_single_oversized_line_is_rejected PASS [ 0.009s] biomcp-cli cli::article::dispatch::workflow_tests::article_follow_up_requires_pmid_and_annotations PASS [ 0.011s] biomcp-cli cli::article::fulltext_view::tests::fulltext_views_reject_a_symlink_instead_of_reading_its_target PASS [ 0.011s] biomcp-cli cli::article::fulltext_view::tests::an_open_managed_handle_is_not_redirected_by_path_replacement PASS [ 0.009s] biomcp-cli cli::article::fulltext_view::tests::heading_titles_are_truncated_on_utf8_boundaries PASS [ 0.008s] biomcp-cli cli::article::fulltext_view::tests::line_output_stops_only_at_complete_utf8_lines PASS [ 0.009s] biomcp-cli cli::article::fulltext_view::tests::line_ranges_are_one_based_ordered_and_bounded PASS [ 0.009s] biomcp-cli cli::article::fulltext_view::tests::outline_preserves_duplicate_headings_and_reports_the_cap PASS [ 0.008s] biomcp-cli cli::article::session::tests::capacity_pruning_covers_exact_and_plus_one_limits PASS [ 0.007s] biomcp-cli cli::article::session::tests::capacity_pruning_resolves_ties_stably_in_memory PASS [ 0.007s] biomcp-cli cli::article::session::tests::normalization_removes_search_filler_words_and_deduplicates_terms PASS [ 0.008s] biomcp-cli cli::article::session::tests::overlap_threshold_boundaries PASS [ 0.008s] biomcp-cli cli::article::session::tests::token_validation_accepts_safe_local_labels_and_rejects_unsafe_input PASS [ 0.059s] biomcp-cli cli::adverse_event::tests::search_plan_covers_the_complete_rejected_filter_matrix PASS [ 0.008s] biomcp-cli cli::article::tests::citation_evidence::citation_evidence_markdown_pins_the_unresolved_and_unlinked_states PASS [ 0.010s] biomcp-cli cli::article::tests::diagnostics::article_search_diagnostics_render_only_in_full_detail PASS [ 0.093s] biomcp-cli cache::provider_capture::tests::rejects_a_directory_in_place_of_capture_metadata PASS [ 0.091s] biomcp-cli cache::provider_capture::tests::retained_bytes_counts_every_owned_regular_file PASS [ 0.094s] biomcp-cli cache::provider_capture::tests::rejects_corrupt_bytes_and_removes_unpublished_orphans PASS [ 0.044s] biomcp-cli cli::article::session::tests::malformed_store_recovers_as_empty_and_writes_valid_json PASS [ 0.050s] biomcp-cli cli::article::session::tests::lock_contention_fails_open_without_rewriting_existing_baseline PASS [ 0.108s] biomcp-cli cache::provider_capture::tests::captures_survive_store_restart_then_detect_corruption PASS [ 0.010s] biomcp-cli cli::article::tests::exact_lookup::article_entity_suggestion_uses_alias_reason_and_valid_sections PASS [ 0.014s] biomcp-cli cli::article::tests::exact_lookup::article_search_json_fails_open_when_exact_entity_lookup_returns_none PASS [ 0.010s] biomcp-cli cli::article::tests::exact_lookup::exact_article_keyword_lookup_eligibility_is_keyword_only_and_short PASS [ 0.014s] biomcp-cli cli::article::tests::exact_lookup::article_search_request_typed_filter_skips_exact_lookup PASS [ 0.009s] biomcp-cli cli::article::tests::exact_lookup::graph_markdown_is_exact_for_every_page_shape_and_direction PASS [ 0.009s] biomcp-cli cli::article::tests::exact_lookup::graph_markdown_uses_a_safe_code_span_for_the_shared_command PASS [ 0.008s] biomcp-cli cli::article::tests::filters::article_query_and_debug_filters_include_effective_ranking_context PASS [ 0.013s] biomcp-cli cli::article::tests::exact_lookup::handle_command_rejects_zero_limit_before_backend_lookup PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_query_and_debug_filters_render_default_and_disabled_max_per_source_modes PASS [ 0.017s] biomcp-cli cli::article::tests::exact_lookup::graph_offset_accepts_u64_boundaries_and_rejects_out_of_range_values PASS [ 0.130s] biomcp-cli cache::provider_capture::tests::rejects_oversize_and_invalid_handles PASS [ 0.010s] biomcp-cli cli::article::tests::filters::article_search_request_accepts_semantic_scholar_source PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_search_request_records_author_capable_plan PASS [ 0.008s] biomcp-cli cli::article::tests::filters::article_search_request_records_normalized_cli_intent_and_backend_plan PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_search_request_records_exact_keyword_lookup_intent PASS [ 0.039s] biomcp-cli cli::article::tests::exact_lookup::degraded_article_sources_share_safe_direct_retries_across_zero_row_surfaces PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_search_request_rejects_reserved_keyword_aliases_and_multiword_gene PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_search_request_rejects_native_keyword_field_syntax PASS [ 0.008s] biomcp-cli cli::article::tests::filters::article_search_request_trims_valid_gene_before_planning PASS [ 0.232s] biomcp-cli cache::manager::tests::startup_totals_tests::start_up_seeds_kept_totals_without_walking_the_tree_again PASS [ 0.084s] biomcp-cli cli::article::session::tests::session_store_records_first_search_then_emits_ordered_loop_suggestions PASS [ 0.010s] biomcp-cli cli::article::tests::filters::build_article_debug_plan_includes_article_type_limitation_note PASS [ 0.010s] biomcp-cli cli::article::tests::filters::partial_keyword_warning_includes_zero_hits_and_explicit_semantic_mode PASS [ 0.011s] biomcp-cli cli::article::tests::filters::partial_keyword_coverage_warns_in_compact_and_full_json PASS [ 0.009s] biomcp-cli cli::article::tests::filters::partial_keyword_warning_uses_exact_coverage_after_public_counts_saturate PASS [ 0.009s] biomcp-cli cli::article::tests::filters::related_article_filters_default_to_relevance_and_safety_flags PASS [ 0.009s] biomcp-cli cli::article::tests::filters::ticket_400_request_command_article_fields_drive_execution_boundaries PASS [ 0.015s] biomcp-cli cli::article::tests::filters::partial_keyword_warning_obeys_non_trigger_boundaries PASS [ 0.009s] biomcp-cli cli::article::tests::filters::truncate_article_annotations_applies_limit_per_bucket PASS [ 0.088s] biomcp-cli cli::article::session::tests::unavailable_loop_ladder_rungs_are_omitted PASS [ 0.012s] biomcp-cli cli::article::tests::help::article_get_pdf_modifier_parses_before_fulltext PASS [ 0.012s] biomcp-cli cli::article::tests::help::article_get_pdf_modifier_parses_after_fulltext PASS [ 0.015s] biomcp-cli cli::article::tests::help::article_asset_paging_modifiers_parse_after_assets PASS [ 0.015s] biomcp-cli cli::article::tests::help::article_full_flag_parses_and_help_explains_compact_default PASS [ 0.236s] biomcp-cli cache::manager::tests::write_security_tests::eviction_waits_for_an_active_cache_operation PASS [ 0.013s] biomcp-cli cli::article::tests::help::article_year_flags_parse_and_expand_to_date_bounds PASS [ 0.015s] biomcp-cli cli::article::tests::help::article_session_flag_parses_and_help_documents_json_loop_breaker PASS [ 0.032s] biomcp-cli cli::article::tests::filters::partial_keyword_coverage_warning_precedes_markdown_table PASS [ 0.014s] biomcp-cli cli::article::tests::help::article_year_flags_conflict_with_explicit_dates PASS [ 0.012s] biomcp-cli cli::article::tests::help::article_year_flags_reject_non_yyyy_values PASS [ 0.011s] biomcp-cli cli::article::tests::json::article_search_json_allows_loop_suggestions_without_sections PASS [ 0.011s] biomcp-cli cli::article::tests::json::article_search_json_includes_query_and_ranking_context PASS [ 0.128s] biomcp-cli cli::article::session::tests::empty_normalized_keyword_resets_baseline_without_loop_suggestions PASS [ 0.013s] biomcp-cli cli::article::tests::help::article_year_max_conflicts_with_date_to PASS [ 0.178s] biomcp-cli cache::provider_capture::tests::refuses_noncanonical_metadata_without_damaging_a_valid_capture PASS [ 0.179s] biomcp-cli cache::provider_capture::tests::cspec_capture_is_unavailable_through_other_clingen_provider_prefixes PASS [ 0.010s] biomcp-cli cli::article::tests::json::compact_article_search_rows_preserve_triage_fields_and_date_warnings PASS [ 0.009s] biomcp-cli cli::article::tests::json::ticket_377_article_renderer_envelope_contracts_json_meta PASS [ 0.010s] biomcp-cli cli::article::tests::json::date_warning_alone_retains_article_search_metadata PASS [ 0.258s] biomcp-cli cache::manager::tests::write_security_tests::concurrent_same_key_puts_keep_metadata_attributable_until_hardening_finishes PASS [ 0.019s] biomcp-cli cli::article::tests::json::article_search_json_emits_structured_exact_entity_suggestions PASS [ 0.135s] biomcp-cli cli::article::session::tests::expired_or_disjoint_session_state_does_not_emit_loop_suggestions PASS [ 0.132s] biomcp-cli cli::article::session::tests::maintenance_physically_removes_only_expired_sessions PASS [ 0.010s] biomcp-cli cli::cache::tests::build_cache_stats_report_counts_orphans_and_includes_all_blob_bytes PASS [ 0.022s] biomcp-cli cli::article::tests::json::article_search_json_next_commands_preserve_source_filter PASS [ 0.010s] biomcp-cli cli::cache::tests::cache_stats_report_json_serializes_env_and_file_origins_lowercase PASS [ 0.011s] biomcp-cli cli::cache::tests::build_cache_stats_report_uses_index_entry_timestamps_only_for_age_range PASS [ 0.010s] biomcp-cli cli::cache::tests::cache_stats_report_markdown_is_heading_free_and_stable PASS [ 0.012s] biomcp-cli cli::cache::tests::build_cache_stats_report_empty_snapshot_has_zero_counts_null_age_and_default_origins PASS [ 0.014s] biomcp-cli cli::author::tests::author_papers_accepts_the_full_flag_with_limit_and_offset PASS [ 0.017s] biomcp-cli cli::author::tests::author_grammar_requires_named_query_and_omits_affiliation PASS [ 0.020s] biomcp-cli cli::article::tests::next_commands::article_search_json_keeps_exact_variant_follow_up_on_empty_page PASS [ 0.011s] biomcp-cli cli::cache::tests::collect_cache_stats_report_calls_snapshot_once_for_resolved_http_path PASS [ 0.197s] biomcp-cli cache::provider_capture::tests::expires_captures_and_republishes_received_bytes PASS [ 0.010s] biomcp-cli cli::cache::tests::render_path_for_config_appends_http_to_resolved_cache_root PASS [ 0.009s] biomcp-cli cli::cache::tests::render_path_for_config_does_not_create_or_migrate_directories PASS [ 0.009s] biomcp-cli cli::cache::tests::render_path_for_config_keeps_relative_cache_roots_relative PASS [ 0.012s] biomcp-cli cli::cache::tests::managed_clear_removes_the_citation_evidence_sidecar_and_sums_its_bytes PASS [ 0.010s] biomcp-cli cli::chart::github_287_tests::a_missing_chart_exits_nonzero PASS [ 0.012s] biomcp-cli cli::chart::tests::chart_help_lists_descriptions_for_all_chart_topics PASS [ 0.013s] biomcp-cli cli::chart::tests::chart_subcommand_parses_heatmap_topic PASS [ 0.029s] biomcp-cli cli::article::tests::outage::zero_rows_with_every_source_answered_keeps_exit_zero_complete_true PASS [ 0.009s] biomcp-cli cli::chart::tests::show_returns_heatmap_doc PASS [ 0.012s] biomcp-cli cli::chart::tests::chart_subcommand_parses_stacked_bar_topic PASS [ 0.011s] biomcp-cli cli::chart::tests::chart_subcommand_parses_survival_topic PASS [ 0.014s] biomcp-cli cli::chart::tests::chart_subcommand_parses_scatter_topic PASS [ 0.008s] biomcp-cli cli::chart::tests::show_returns_stacked_bar_doc PASS [ 0.010s] biomcp-cli cli::chart::tests::show_returns_scatter_doc PASS [ 0.011s] biomcp-cli cli::chart::tests::chart_subcommand_parses_waterfall_topic PASS [ 0.012s] biomcp-cli cli::chart::tests::chart_subcommand_parses_violin_topic PASS [ 0.009s] biomcp-cli cli::chart::tests::show_returns_waterfall_doc PASS [ 0.010s] biomcp-cli cli::diagnostic::tests::diagnostic_json_compacts_nested_lists_and_full_restores_them PASS [ 0.014s] biomcp-cli cli::diagnostic::tests::get_diagnostic_help_mentions_supported_sections PASS [ 0.013s] biomcp-cli cli::diagnostic::tests::handle_get_honors_trailing_json_flag_after_sections PASS [ 0.011s] biomcp-cli cli::diagnostic::tests::search_args_reject_zero_limit_before_gtr_lookup PASS [ 0.013s] biomcp-cli cli::diagnostic::tests::handle_search_json_omits_suggestions_for_high_offset_empty_page PASS [ 0.012s] biomcp-cli cli::diagnostic::tests::search_diagnostic_help_mentions_source_aware_examples PASS [ 0.013s] biomcp-cli cli::diagnostic::tests::handle_search_json_includes_suggestions_for_true_zero_result PASS [ 0.227s] biomcp-cli cache::provider_capture::tests::captures_and_reads_exact_bytes_with_content_addressed_dedupe PASS [ 0.013s] biomcp-cli cli::diagnostic::tests::search_diagnostic_parses_filter_only_flags PASS [ 0.017s] biomcp-cli cli::discover::tests::discover_search_with_resolved_concepts_is_unchanged PASS [ 0.008s] biomcp-cli cli::disease::dispatch::workflow_tests::disease_trials_limit_one_avoids_ctgov_total_count PASS [ 0.020s] biomcp-cli cli::discover::tests::discover_inline_search_matches_the_suggested_command_requests PASS [ 0.010s] biomcp-cli cli::disease::tests::disease_search_json_includes_fallback_meta_and_provenance PASS [ 0.010s] biomcp-cli cli::disease::tests::disease_search_json_includes_next_commands_for_direct_hits PASS [ 0.010s] biomcp-cli cli::disease::tests::disease_search_json_preserves_fallback_with_workflow_meta PASS [ 0.012s] biomcp-cli cli::disease::tests::disease_trials_parses_source_and_limit PASS [ 0.012s] biomcp-cli cli::disease::tests::get_disease_accepts_explicit_multi_word_name PASS [ 0.013s] biomcp-cli cli::disease::tests::disease_trials_limit_rejects_too_big_before_lookup PASS [ 0.024s] biomcp-cli cli::discover::tests::discover_search_without_concepts_runs_the_suggested_article_search PASS [ 0.018s] biomcp-cli cli::discover::tests::discover_without_search_keeps_the_note_only_response PASS [ 0.012s] biomcp-cli cli::disease::tests::get_disease_help_includes_when_to_use_guidance PASS [ 0.014s] biomcp-cli cli::disease::tests::related_limit_rejects_zero_before_lookup PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_adverse_events_parses_advertised_faers_filters PASS [ 0.074s] biomcp-cli cli::article::tests::json::article_session_suggestions_flow_into_search_json_after_overlap PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_bare_name_parses_as_external_subcommand PASS [ 0.011s] biomcp-cli cli::drug::tests::drug_interactions_help_mentions_ddinter_bundle_and_truthful_empty_state PASS [ 0.015s] biomcp-cli cli::drug::tests::drug_adverse_events_help_lists_count_and_filter_parity PASS [ 0.016s] biomcp-cli cli::drug::alias_alignment_tests::public_region_aliases_are_aligned_across_parser_help_list_and_docs PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_trials_help_mentions_alias_expansion_and_opt_out PASS [ 0.013s] biomcp-cli cli::drug::tests::drug_interactions_parse_anchor_name PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_trials_parse_no_alias_expand PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_trials_reject_no_alias_expand_for_nci_source PASS [ 0.012s] biomcp-cli cli::drug::tests::get_drug_accepts_explicit_multi_word_name PASS [ 0.068s] biomcp-cli cli::cache::tests::cache_stats_report_separates_provider_capture_namespace_bytes PASS [ 0.012s] biomcp-cli cli::drug::tests::get_drug_parses_ema_region_alias_as_eu PASS [ 0.013s] biomcp-cli cli::drug::tests::get_drug_help_mentions_raw_label_mode PASS [ 0.009s] biomcp-cli cli::drug::tests::get_drug_region_respects_explicit_region PASS [ 0.010s] biomcp-cli cli::drug::tests::get_drug_region_keeps_non_regulatory_no_flag_shapes_on_us_default PASS [ 0.047s] biomcp-cli cli::discover::tests::discover_article_section_matches_the_direct_render_apart_from_the_header PASS [ 0.014s] biomcp-cli cli::drug::tests::get_drug_help_lists_region_flag_and_examples PASS [ 0.012s] biomcp-cli cli::drug::tests::get_drug_region_defaults_to_all_for_regulatory_only_queries PASS [ 0.010s] biomcp-cli cli::drug::tests::json::drug_search_json_all_region_carries_the_who_degrade_note PASS [ 0.014s] biomcp-cli cli::drug::tests::get_drug_parses_region_split_form PASS [ 0.016s] biomcp-cli cli::drug::tests::get_drug_raw_rejects_non_label_sections PASS [ 0.011s] biomcp-cli cli::drug::tests::json::drug_search_json_all_region_uses_unified_regions_envelope PASS [ 0.012s] biomcp-cli cli::drug::tests::json::drug_search_json_all_region_keeps_empty_buckets PASS [ 0.267s] biomcp-cli cache::provider_capture::tests::concurrent_same_content_captures_publish_one_complete_record PASS [ 0.011s] biomcp-cli cli::drug::tests::json::drug_search_json_preserves_region_envelope_with_workflow_meta PASS [ 0.011s] biomcp-cli cli::drug::tests::json::drug_search_json_single_region_keeps_api_identifier_when_present PASS [ 0.014s] biomcp-cli cli::drug::tests::json::drug_search_json_orders_match_tiers_stably_within_one_region PASS [ 0.010s] biomcp-cli cli::drug::tests::search_drug_region_defaults_to_us_for_structured_queries PASS [ 0.011s] biomcp-cli cli::drug::tests::search_drug_region_allows_explicit_who_for_structured_queries PASS [ 0.011s] biomcp-cli cli::drug::tests::search_drug_region_defaults_to_all_for_name_only_queries PASS [ 0.012s] biomcp-cli cli::drug::tests::json::drug_search_json_single_region_keeps_selected_bucket_and_who_fields PASS [ 0.013s] biomcp-cli cli::drug::tests::json::drug_search_json_single_region_keeps_empty_selected_bucket_and_omits_meta PASS [ 0.013s] biomcp-cli cli::drug::tests::json::drug_search_json_single_region_omits_get_follow_up_for_vaccine_results PASS [ 0.015s] biomcp-cli cli::drug::tests::search_drug_help_mentions_default_all_and_structured_filter_note PASS [ 0.015s] biomcp-cli cli::drug::tests::search_drug_parses_who_product_type_filter PASS [ 0.012s] biomcp-cli cli::drug::tests::search_drug_region_rejects_explicit_non_us_for_structured_queries PASS [ 0.013s] biomcp-cli cli::drug::tests::search_plan_rejects_non_us_structured_region PASS [ 0.010s] biomcp-cli cli::gene::related::tests::gene_trials_use_literal_biomarker_and_avoid_limit_one_count PASS [ 0.014s] biomcp-cli cli::drug::tests::search_plan_rejects_product_type_without_explicit_who_region PASS [ 0.014s] biomcp-cli cli::drug::tests::search_plan_rejects_structured_who_vaccine_requests PASS [ 0.013s] biomcp-cli cli::gene::tests::gene_bare_symbol_parses_as_external_subcommand PASS [ 0.011s] biomcp-cli cli::gene::tests::handle_get_gene_alias_fallback_returns_markdown_suggestion PASS [ 0.013s] biomcp-cli cli::gene::tests::gene_cspec_document_parses_as_nested_raw_subcommand PASS [ 0.011s] biomcp-cli cli::gwas::dispatch::tests::gwas_pagination_human_guidance_distinguishes_all_three_states PASS [ 0.014s] biomcp-cli cli::gene::tests::gene_get_alias_parses_as_definition_subcommand PASS [ 0.010s] biomcp-cli cli::gwas::dispatch::tests::gwas_pagination_json_has_only_the_followable_contract PASS [ 0.010s] biomcp-cli cli::gwas::tests::search_args_reject_windows_beyond_the_provider_budget_without_panicking PASS [ 0.014s] biomcp-cli cli::gene::tests::get_gene_help_includes_when_to_use_guidance PASS [ 0.014s] biomcp-cli cli::gene::tests::gene_pathways_parses_limit_and_offset PASS [ 0.018s] biomcp-cli cli::gene::tests::gene_cspec_files_is_a_flag_on_version_or_capture_selection PASS [ 0.014s] biomcp-cli cli::gwas::tests::region_is_not_an_advertised_or_accepted_gwas_filter PASS [ 0.009s] biomcp-cli cli::health::http::probe_override_tests::a_non_loopback_base_with_a_loopback_signal_is_rejected PASS [ 0.013s] biomcp-cli cli::gwas::tests::search_args_reject_zero_limit_before_backend_lookup PASS [ 0.012s] biomcp-cli cli::gwas::tests::search_gwas_parses_positional_query PASS [ 0.009s] biomcp-cli cli::health::http::probe_override_tests::an_allowed_base_keeps_the_path_and_query PASS [ 0.010s] biomcp-cli cli::health::http::probe_override_tests::a_non_loopback_probe_base_is_never_allowed PASS [ 0.009s] biomcp-cli cli::health::http::probe_override_tests::the_exact_loopback_origin_the_signal_names_is_allowed PASS [ 0.010s] biomcp-cli cli::health::http::probe_override_tests::an_unparseable_base_leaves_the_catalog_url_unchanged PASS [ 0.010s] biomcp-cli cli::health::tests::catalog::gencc_health_uses_dedicated_head_contract PASS [ 0.010s] biomcp-cli cli::health::tests::catalog::fda_orphan_health_has_dedicated_form_probe PASS [ 0.010s] biomcp-cli cli::health::tests::catalog::health_inventory_includes_all_expected_sources PASS [ 0.011s] biomcp-cli cli::health::tests::catalog::markdown_shows_new_affects_mappings PASS [ 0.009s] biomcp-cli cli::health::tests::catalog::nci_health_probe_uses_keyword_query PASS [ 0.012s] biomcp-cli cli::health::tests::catalog::clingen_health_descriptors_and_affects_remain_distinct PASS [ 0.009s] biomcp-cli cli::health::tests::catalog::pharmgkb_health_row_probes_and_explains_the_clinpgx_move PASS [ 0.021s] biomcp-cli cli::gwas::tests::search_args_validate_probability_threshold_before_backend_lookup PASS [ 0.009s] biomcp-cli cli::health::tests::http::key_gated_source_is_excluded_when_env_missing PASS [ 0.010s] biomcp-cli cli::health::tests::health_json_exposes_automation_exit_policy PASS [ 0.010s] biomcp-cli cli::health::tests::http::empty_key_is_treated_as_missing PASS [ 0.010s] biomcp-cli cli::health::tests::http::excluded_key_gated_row_serializes_key_configured_false PASS [ 0.011s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_authed_semantic_scholar_as_configured PASS [ 0.010s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_authenticated_429_as_error PASS [ 0.015s] biomcp-cli cli::health::tests::fda::fda_orphan_redirect_answer_names_the_block_in_the_row PASS [ 0.010s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_unauthenticated_429_as_unavailable PASS [ 0.011s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_unauthed_semantic_scholar_as_healthy PASS [ 0.010s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_unauthenticated_non_429_as_error PASS [ 0.011s] biomcp-cli cli::health::tests::http::orcid_row::a_configured_token_probes_the_public_person_endpoint PASS [ 0.019s] biomcp-cli cli::health::tests::fda::fda_orphan_fixture_probe_reconciles_rows_counts_and_fail_policy PASS [ 0.010s] biomcp-cli cli::health::tests::http::vaers_query_error_reports_error_row_with_affects PASS [ 0.012s] biomcp-cli cli::health::tests::http::orcid_row::an_invalid_nonblank_token_is_an_error_row_without_any_request PASS [ 0.009s] biomcp-cli cli::health::tests::local::check_cache_dir_config_error_matches_pinned_contract PASS [ 0.014s] biomcp-cli cli::health::tests::http::orcid_row::a_missing_token_probes_the_public_person_endpoint_unauthenticated PASS [ 0.010s] biomcp-cli cli::health::tests::http::vaers_query_success_reports_healthy_row PASS [ 0.010s] biomcp-cli cli::health::tests::local::check_cache_limits_warns_when_disk_floor_is_violated PASS [ 0.013s] biomcp-cli cli::health::tests::local::check_cache_dir_success_row_uses_resolved_path_and_ok_contract PASS [ 0.014s] biomcp-cli cli::health::tests::local::check_cache_limits_reports_snapshot_errors_as_error_rows PASS [ 0.010s] biomcp-cli cli::health::tests::local::check_cache_limits_within_limits_returns_healthy_row PASS [ 0.010s] biomcp-cli cli::health::tests::local::cvx_local_data_not_configured_when_default_root_is_empty PASS [ 0.011s] biomcp-cli cli::health::tests::local::check_cache_limits_warns_when_referenced_bytes_exceed_max_size PASS [ 0.011s] biomcp-cli cli::health::tests::local::cvx_local_data_errors_when_default_root_is_partial PASS [ 0.010s] biomcp-cli cli::health::tests::local::cvx_local_data_reports_configured_stale_when_env_root_is_complete_but_old PASS [ 0.012s] biomcp-cli cli::health::tests::local::cvx_local_data_reports_available_when_default_root_is_complete PASS [ 0.010s] biomcp-cli cli::health::tests::local::ema_local_data_errors_when_default_root_is_partial PASS [ 0.011s] biomcp-cli cli::health::tests::local::ddinter_local_data_reports_available_when_default_root_is_complete PASS [ 0.010s] biomcp-cli cli::health::tests::local::ema_local_data_json_reports_error_row_with_affects PASS [ 0.011s] biomcp-cli cli::health::tests::local::ema_local_data_errors_when_env_root_is_missing_files PASS [ 0.010s] biomcp-cli cli::health::tests::local::ema_local_data_not_configured_when_default_root_is_empty PASS [ 0.011s] biomcp-cli cli::health::tests::local::ema_local_data_json_reports_healthy_row_without_affects PASS [ 0.011s] biomcp-cli cli::health::tests::local::ema_local_data_reports_available_when_default_root_is_complete PASS [ 0.012s] biomcp-cli cli::health::tests::local::ema_local_data_reports_configured_when_env_root_is_complete PASS [ 0.010s] biomcp-cli cli::health::tests::local::gtr_local_data_reports_available_when_default_root_is_complete PASS [ 0.011s] biomcp-cli cli::health::tests::local::gtr_local_data_errors_when_default_root_is_partial PASS [ 0.011s] biomcp-cli cli::health::tests::local::gtr_local_data_not_configured_when_default_root_is_empty PASS [ 0.010s] biomcp-cli cli::health::tests::local::mcp_local_rows_serialize_and_render_without_local_paths PASS [ 0.012s] biomcp-cli cli::health::tests::local::gtr_local_data_reports_configured_stale_when_env_root_is_complete_but_old PASS [ 0.010s] biomcp-cli cli::health::tests::local::probe_cache_dir_failure_preserves_error_contract PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_ivd_local_data_errors_when_env_root_is_missing_file PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_ivd_local_data_not_configured_when_default_root_is_empty PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_ivd_local_data_reports_available_when_default_root_is_complete PASS [ 0.014s] biomcp-cli cli::health::tests::local::mcp_cache_dir_row_names_the_cache_without_its_path PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_ivd_local_data_reports_configured_stale_when_env_root_is_complete_but_old PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_ivd_local_data_reports_configured_when_env_root_is_complete PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_local_data_errors_when_env_root_is_missing_file PASS [ 0.009s] biomcp-cli cli::health::tests::local::who_local_data_errors_when_only_api_file_is_missing PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_local_data_errors_when_only_vaccine_file_is_missing PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_local_data_reports_configured_stale_when_env_root_is_complete_but_old PASS [ 0.009s] biomcp-cli cli::health::tests::local::who_local_data_reports_default_path_stale_when_complete_but_old PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_local_data_not_configured_when_default_root_is_empty PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_local_data_reports_available_when_default_root_is_complete PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_local_data_reports_configured_when_env_root_is_complete PASS [ 0.009s] biomcp-cli cli::health::tests::runner::all_healthy_includes_warning_and_excluded_rows PASS [ 0.009s] biomcp-cli cli::health::tests::requested_health_sources_are_exact_case_insensitive_and_deduplicated PASS [ 0.010s] biomcp-cli cli::health::tests::runner::empty_report_counts_reconcile PASS [ 0.010s] biomcp-cli cli::health::tests::runner::keyed_row_serializes_raw_status_with_key_configured_true PASS [ 0.009s] biomcp-cli cli::health::tests::runner::markdown_omits_affects_column_when_all_healthy PASS [ 0.008s] biomcp-cli cli::health::tests::runner::markdown_shows_affects_column_when_present PASS [ 0.011s] biomcp-cli cli::health::tests::runner::markdown_decorates_keyed_error_rows_without_changing_status PASS [ 0.011s] biomcp-cli cli::health::tests::runner::markdown_decorates_keyed_success_rows_without_changing_status PASS [ 0.009s] biomcp-cli cli::health::tests::runner::public_row_omits_key_configured_in_json PASS [ 0.010s] biomcp-cli cli::health::tests::runner::report_counts_use_probe_class_not_status_prefixes PASS [ 0.010s] biomcp-cli cli::health::tests::runner::not_built_row_serializes_fact_and_preserves_markdown PASS [ 0.011s] biomcp-cli cli::health::tests::runner::markdown_summary_reports_ok_error_excluded_and_warning_counts PASS [ 0.011s] biomcp-cli cli::health::tests::unknown_health_source_returns_bounded_canonical_suggestions PASS [ 0.011s] biomcp-cli cli::health::tests::runner::timed_out_probe_returns_error_row_with_timeout_latency PASS [ 0.011s] biomcp-cli cli::install::tests::missing_malformed_mismatched_and_symlink_receipts_fail_closed PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_article_page_documents_exact_author_filtering PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_batch_and_enrich_pages_exist PASS [ 0.011s] biomcp-cli cli::list::tests::pages::list_adverse_event_documents_source_free_count_invocation PASS [ 0.011s] biomcp-cli cli::list::tests::pages::list_article_page_mentions_entity_aware_followups PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_discover_page_exists PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_diagnostic_page_exists PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_discover_page_mentions_gene_topic_article_followup PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_discover_page_mentions_empty_and_low_confidence_article_fallbacks PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_discover_page_stays_terminal_friendly PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_discover_page_mentions_relational_redirect_and_supported_exceptions PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_discover_page_states_exact_paging_and_output_bounds PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_disease_mentions_phenotype_search_supports_symptom_phrases PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_disease_mentions_opt_in_sections PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_drug_describes_omitted_region_behavior PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_drug_documents_raw_label_mode PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_entity_pages_drop_stale_skill_sections PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_pathway_describes_source_aware_sections PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_root_entity_verbs_match_public_grammar PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_gene_mentions_new_gene_sections PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_root_includes_routing_table_and_quickstart PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_root_primary_discovery_lines_stay_terminal_friendly PASS [ 0.030s] biomcp-cli cli::install::tests::checksum_mismatch_and_package_manager_paths_fail_with_safe_guidance PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_search_all_page_mentions_counts_only_json_contract PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_search_pages_document_search_json_next_commands PASS [ 0.014s] biomcp-cli cli::list::tests::pages::list_root_json_includes_gettable_and_search_only_entities PASS [ 0.016s] biomcp-cli cli::list::tests::pages::list_json_is_a_typed_catalog_instead_of_rendered_markdown_fragments PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_study_page_exists PASS [ 0.033s] biomcp-cli cli::install::tests::symlinked_executable_or_receipt_never_grants_ownership PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_suggest_page_is_not_valid PASS [ 0.007s] biomcp-cli cli::list::tests::pages::list_variant_explains_alphagenome_availability_for_this_build PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_trial_and_article_include_missing_flags PASS [ 0.014s] biomcp-cli cli::list::tests::pages::list_skill_json_contains_real_commands_without_duplicates PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_variant_json_keeps_helper_commands_discoverable PASS [ 0.009s] biomcp-cli cli::list::tests::pages::phenotype_list_mentions_hpo_ids_and_symptom_phrases PASS [ 0.010s] biomcp-cli cli::list::tests::pages::phenotype_and_gwas_include_workflow_tips PASS [ 0.010s] biomcp-cli cli::list::tests::router::list_skill_alias_routes_to_skill_listing PASS [ 0.009s] biomcp-cli cli::list::tests::router::unknown_entity_lists_new_valid_entities PASS [ 0.009s] biomcp-cli cli::mcp_config::tests::absolute_path_command_stays_valid_json PASS [ 0.010s] biomcp-cli cli::mcp_config::tests::codex_absolute_path_is_shell_safe PASS [ 0.009s] biomcp-cli cli::mcp_config::tests::no_client_output_lists_clients_and_examples PASS [ 0.010s] biomcp-cli cli::mcp_config::tests::vscode_uses_the_servers_key_it_actually_reads PASS [ 0.011s] biomcp-cli cli::mcp_config::tests::codex_uses_default_biomcp_serve_invocation PASS [ 0.011s] biomcp-cli cli::mcp_config::tests::json_clients_use_biomcp_serve_by_default PASS [ 0.011s] biomcp-cli cli::outcome::probe_tests::runtime_split::a_one_shot_drop_does_not_wait_for_background_blocking_work PASS [ 0.008s] biomcp-cli cli::outcome::tests::variant_article_disposition_survives_the_raw_mcp_execution_seam PASS [ 0.010s] biomcp-cli cli::outcome::tests::mcp_keeps_text_from_a_nonzero_structured_outcome PASS [ 0.012s] biomcp-cli cli::outcome::probe_tests::the_dispatch_future_stays_under_the_size_ceiling PASS [ 0.010s] biomcp-cli cli::outcome::tests::non_utf8_binary_outcome_is_never_converted_to_mcp_text PASS [ 0.013s] biomcp-cli cli::outcome::probe_tests::runtime_split::the_mcp_path_builds_no_one_shot_runtime PASS [ 0.008s] biomcp-cli cli::pathway::tests::pathway_trial_fallback_allows_no_match_on_first_page PASS [ 0.009s] biomcp-cli cli::pathway::tests::pathway_trial_fallback_skips_offset_or_known_matches PASS [ 0.014s] biomcp-cli cli::outcome::probe_tests::the_run_fallthrough_future_stays_under_the_size_ceiling PASS [ 0.013s] biomcp-cli cli::pathway::tests::pathway_help_describes_source_aware_section_contract PASS [ 0.012s] biomcp-cli cli::pathway::tests::pathway_trials_parse_source_and_limit PASS [ 0.065s] biomcp-cli cli::health::tests::runner::health_probes_respect_concurrency_limit_and_source_order PASS [ 0.012s] biomcp-cli cli::pathway::tests::search_pathway_help_describes_conditional_query_contract PASS [ 0.012s] biomcp-cli cli::pathway::tests::related_limit_rejects_zero_before_lookup PASS [ 0.010s] biomcp-cli cli::phenotype::tests::pagination_footer_can_offer_local_continuation_and_warn_about_provider_ceiling PASS [ 0.010s] biomcp-cli cli::phenotype::tests::pagination_footer_keeps_ceiling_warning_on_final_local_page PASS [ 0.011s] biomcp-cli cli::pgx::tests::search_pgx_parses_positional_query PASS [ 0.014s] biomcp-cli cli::pathway::tests::search_pathway_limit_rejects_too_big_with_range PASS [ 0.013s] biomcp-cli cli::pgx::tests::search_args_reject_zero_limit_before_backend_lookup PASS [ 0.012s] biomcp-cli cli::phenotype::tests::search_args_reject_a_window_beyond_the_provider_budget PASS [ 0.213s] biomcp-cli cli::cache::tests::explicit_cache_maintenance_waits_for_an_active_cache_operation PASS [ 0.399s] biomcp-cli cache::provider_capture::tests::enforces_namespace_capacity_with_deterministic_lru_eviction PASS [ 0.016s] biomcp-cli cli::pathway::tests::search_pathway_requires_query_unless_top_level PASS [ 0.013s] biomcp-cli cli::phenotype::tests::search_args_reject_zero_limit_before_backend_lookup PASS [ 0.064s] biomcp-cli cli::install::tests::valid_receipt_proves_ownership_and_pending_new_state_recovers PASS [ 0.013s] biomcp-cli cli::phenotype::tests::search_phenotype_help_mentions_hpo_ids_and_symptom_phrases PASS [ 0.012s] biomcp-cli cli::protein::tests::protein_structures_parses_offset_flag PASS [ 0.013s] biomcp-cli cli::protein::tests::search_args_reject_too_large_limit PASS [ 0.013s] biomcp-cli cli::protein::tests::search_protein_help_shows_limit_range PASS [ 0.015s] biomcp-cli cli::protein::tests::search_args_reject_next_page_with_offset PASS [ 0.011s] biomcp-cli cli::response_contract::tests::structured_error_finalizer_adds_paths_without_overwriting_values PASS [ 0.011s] biomcp-cli cli::response_contract::tests::structured_error_finalizer_leaves_unowned_shapes_unchanged PASS [ 0.017s] biomcp-cli cli::protein::tests::review_flags_are_explicit_and_conflicting_spellings_fail PASS [ 0.012s] biomcp-cli cli::response_contract::tests::variant_article_batch_errors_keep_the_stable_envelope PASS [ 0.011s] biomcp-cli cli::response_contract::tests::variant_article_item_failures_preserve_aggregate_state_and_followups PASS [ 0.011s] biomcp-cli cli::search_all::tests::dispatch::merge_trial_backfill_rows_respects_limit_with_preferred_only PASS [ 0.011s] biomcp-cli cli::search_all::tests::dispatch::merge_trial_backfill_rows_preserves_preferred_order_and_dedupes PASS [ 0.010s] biomcp-cli cli::search_all::tests::dispatch::section_timeout_uses_article_specific_budget PASS [ 0.011s] biomcp-cli cli::search_all::tests::dispatch::section_fetch_limit_reduces_only_safe_counts_only_sections PASS [ 0.010s] biomcp-cli cli::search_all::tests::dispatch::trial_recruiting_filter_note_names_the_failure_and_the_widening PASS [ 0.010s] biomcp-cli cli::search_all::tests::format::counts_only_json_projection_preserves_debug_plan PASS [ 0.010s] biomcp-cli cli::search_all::tests::format::counts_only_json_projection_reports_truthful_exact_counts PASS [ 0.008s] biomcp-cli cli::search_all::tests::format::dedupe_gwas_rows_keeps_lowest_p_value PASS [ 0.010s] biomcp-cli cli::search_all::tests::format::counts_only_json_uses_a_lower_bound_when_no_exact_total_exists PASS [ 0.009s] biomcp-cli cli::search_all::tests::format::format_search_all_p_value_removes_float_artifacts PASS [ 0.009s] biomcp-cli cli::search_all::tests::format::refine_drug_results_filters_metabolites_when_parent_like_match_exists PASS [ 0.009s] biomcp-cli cli::search_all::tests::format::refine_drug_results_keeps_metabolites_when_no_parent_like_match PASS [ 0.010s] biomcp-cli cli::search_all::tests::format::variant_significance_rank_matches_clinical_priority PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::canonical_article_command_dedupes_shared_disease_keyword_token PASS [ 0.011s] biomcp-cli cli::search_all::tests::format::to_json_array_preserves_article_source_and_ranking_metadata PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::canonical_article_command_keeps_distinct_disease_and_keyword_filters PASS [ 0.009s] biomcp-cli cli::search_all::tests::links::canonical_article_command_quotes_apostrophe_keyword_for_shell_safety PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::canonical_article_command_keeps_keyword_only_search PASS [ 0.024s] biomcp-cli cli::search_all::tests::dispatch::a_degraded_trial_section_renders_the_note_and_drops_count_exact PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::canonical_drug_command_stays_typed_only_with_gene_anchor PASS [ 0.008s] biomcp-cli cli::search_all::tests::links::top_get_command_prefers_parent_like_salt_name_over_metabolites PASS [ 0.008s] biomcp-cli cli::search_all::tests::links::top_get_command_skips_civic_variant_ids PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::top_get_command_prefers_parent_drug_name PASS [ 0.026s] biomcp-cli cli::search_all::tests::dispatch::search_all_pathway_section_surfaces_sanitized_wikipathways_error PASS [ 0.032s] biomcp-cli cli::response_contract::tests::argument_dependent_and_keyless_contract_inventory PASS [ 0.011s] biomcp-cli cli::search_all::tests::links::canonical_variant_command_preserves_unparsed_anchor PASS [ 0.013s] biomcp-cli cli::search_all::tests::links::canonical_trial_command_stays_typed_only_with_distinct_keyword PASS [ 0.011s] biomcp-cli cli::search_all::tests::plan::article_filters_follow_keyword_dependent_ranking_defaults PASS [ 0.011s] biomcp-cli cli::search_all::tests::plan::build_dispatch_plan_keyword_only_routes_to_article PASS [ 0.012s] biomcp-cli cli::search_all::tests::plan::build_dispatch_plan_gene_only_matches_contract PASS [ 0.011s] biomcp-cli cli::search_all::tests::plan::build_result_plan_keyword_article_leg_excludes_litsense2_default_source PASS [ 0.011s] biomcp-cli cli::search_all::tests::plan::build_result_plan_marks_shared_disease_keyword_orientation_fallback PASS [ 0.010s] biomcp-cli cli::search_all::tests::plan::build_result_plan_marks_ungrounded_disease_fallback_on_article_leg PASS [ 0.012s] biomcp-cli cli::search_all::tests::plan::build_result_plan_includes_fallback_and_article_matched_sources PASS [ 0.010s] biomcp-cli cli::search_all::tests::plan::preparation_keeps_literal_colons_and_valid_gene_tokens PASS [ 0.010s] biomcp-cli cli::search_all::tests::plan::preparation_rejects_article_owned_keyword_and_gene_shapes_before_fanout PASS [ 0.013s] biomcp-cli cli::search_all::tests::plan::build_result_plan_skips_ungrounded_marker_when_disease_leg_errors PASS [ 0.012s] biomcp-cli cli::search_all::tests::plan::prepared_input_rejects_empty_typed_slots PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::a_missing_skill_exits_nonzero_github_287 PASS [ 0.014s] biomcp-cli cli::search_all_command::tests::search_all_parses_positional_keyword PASS [ 0.013s] biomcp-cli cli::search_all_command::tests::search_all_without_typed_slots_still_parses_for_runtime_validation PASS [ 0.011s] biomcp-cli cli::skill::tests::catalog::an_empty_skill_catalog_fails_loudly_github_287 PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::canonical_prompt_body_matches_overview_and_normalizes_newlines PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::chart_asset_misses_exit_nonzero_github_287 PASS [ 0.009s] biomcp-cli cli::skill::tests::catalog::debug_builds_embed_the_skill_and_chart_assets_github_287 PASS [ 0.021s] biomcp-cli cli::search_all::tests::plan::build_dispatch_plan_variant_with_gene_fanout PASS [ 0.015s] biomcp-cli cli::search_all_command::tests::search_all_parses_slot_flags PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::embedded_skill_overview_is_routing_first_and_points_to_worked_examples PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::embedded_use_case_catalog_lists_expected_worked_examples PASS [ 0.011s] biomcp-cli cli::skill::tests::catalog::refreshed_search_examples_are_non_empty PASS [ 0.011s] biomcp-cli cli::skill::tests::catalog::missing_skill_suggests_skill_catalog PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::the_healthy_catalog_still_lists_github_287 PASS [ 0.011s] biomcp-cli cli::skill::tests::catalog::validate_skills_target_uses_project_free_uv_dev_environment PASS [ 0.010s] biomcp-cli cli::skill::tests::install::find_best_target_defaults_to_home_agents_when_nothing_exists PASS [ 0.054s] biomcp-cli cli::response_contract::tests::command_collection_contract_inventory PASS [ 0.010s] biomcp-cli cli::skill::tests::install::find_best_target_preserves_pi_agent_skills_path PASS [ 0.012s] biomcp-cli cli::skill::tests::install::find_best_target_falls_back_to_agents_root_then_claude_root PASS [ 0.011s] biomcp-cli cli::skill::tests::install::find_best_target_prefers_agents_populated_skills_dir PASS [ 0.013s] biomcp-cli cli::skill::tests::install::find_best_target_ignores_non_skill_files_in_skills_dir PASS [ 0.012s] biomcp-cli cli::skill::tests::install::find_existing_install_ignores_skill_md_directory PASS [ 0.012s] biomcp-cli cli::skill::tests::install::find_existing_install_prefers_agents_and_reports_others PASS [ 0.012s] biomcp-cli cli::skill::tests::install::find_existing_install_detects_claude PASS [ 0.010s] biomcp-cli cli::skill::tests::install::fresh_atomic_rename_refuses_a_racing_target PASS [ 0.008s] biomcp-cli cli::stale_json_note_tests::search_all_json_body_carries_notes_only_when_present PASS [ 0.012s] biomcp-cli cli::study::tests::charts::chart_auxiliary_flags_require_chart PASS [ 0.012s] biomcp-cli cli::study::tests::charts::handle_command_rejects_invalid_expression_chart PASS [ 0.023s] biomcp-cli cli::skill::tests::install::install_to_dir_writes_canonical_skill_md_and_assets PASS [ 0.012s] biomcp-cli cli::study::tests::charts::png_pixel_budget_is_rejected_before_study_lookup PASS [ 0.012s] biomcp-cli cli::study::tests::charts::short_help_hides_chart_flags_but_long_help_shows_them PASS [ 0.014s] biomcp-cli cli::study::tests::charts::study_co_occurrence_invalid_chart_lists_heatmap PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_co_occurrence_parses_heatmap_chart_flag PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_compare_expression_parses_scatter_chart_with_file_dimensions PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_compare_mutations_invalid_chart_lists_stacked_bar PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_compare_mutations_parses_stacked_bar_chart_flag PASS [ 0.013s] biomcp-cli cli::study::tests::charts::study_query_mutations_invalid_chart_lists_waterfall PASS [ 0.011s] biomcp-cli cli::study::tests::charts::study_query_parses_chart_flags PASS [ 0.062s] biomcp-cli cli::skill::tests::install::failed_atomic_exchange_leaves_existing_target_unchanged PASS [ 0.013s] biomcp-cli cli::study::tests::charts::study_query_parses_waterfall_chart_flag PASS [ 0.071s] biomcp-cli cli::skill::tests::catalog::embedded_use_case_anchor_commands_parse PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_survival_parses_survival_chart_flag PASS [ 0.011s] biomcp-cli cli::study::tests::help::study_co_occurrence_help_describes_gene_list_contract PASS [ 0.065s] biomcp-cli cli::skill::tests::install::force_rejects_a_directory_at_a_manifest_recorded_file_path PASS [ 0.011s] biomcp-cli cli::study::tests::help::study_cohort_help_describes_gene_split PASS [ 0.012s] biomcp-cli cli::study::tests::help::study_compare_help_describes_type_and_target PASS [ 0.011s] biomcp-cli cli::study::tests::help::study_download_help_describes_list_and_study_id PASS [ 0.013s] biomcp-cli cli::study::tests::help::study_filter_help_describes_each_filter_flag PASS [ 0.012s] biomcp-cli cli::study::tests::help::study_help_lists_descriptions_for_all_subcommands PASS [ 0.013s] biomcp-cli cli::study::tests::help::study_query_help_describes_key_flags_and_aliases PASS [ 0.070s] biomcp-cli cli::skill::tests::install::managed_status_distinguishes_current_unmanaged_stale_and_modified PASS [ 0.011s] biomcp-cli cli::study::tests::help::study_top_mutated_help_describes_limit PASS [ 0.012s] biomcp-cli cli::study::tests::help::study_survival_help_describes_endpoint_values_and_aliases PASS [ 0.079s] biomcp-cli cli::skill::tests::install::force_preserves_unrelated_symlinks_without_following_them PASS [ 0.014s] biomcp-cli cli::study::tests::parsing::study_co_occurrence_parses_gene_list PASS [ 0.084s] biomcp-cli cli::skill::tests::install::install_result_reports_installed_unchanged_and_repaired_truthfully PASS [ 0.012s] biomcp-cli cli::study::tests::parsing::study_download_parses_list_flag PASS [ 0.013s] biomcp-cli cli::study::tests::parsing::study_compare_parses_type_and_target PASS [ 0.016s] biomcp-cli cli::study::tests::parsing::study_cohort_parses_required_flags PASS [ 0.012s] biomcp-cli cli::study::tests::parsing::study_list_parses_subcommand PASS [ 0.013s] biomcp-cli cli::study::tests::parsing::study_download_parses_positional_study_id PASS [ 0.013s] biomcp-cli cli::study::tests::parsing::study_filter_parses_all_flags_and_repeated_values PASS [ 0.011s] biomcp-cli cli::study::tests::parsing::study_survival_parses_endpoint_flag PASS [ 0.013s] biomcp-cli cli::study::tests::parsing::study_query_parses_required_flags PASS [ 0.086s] biomcp-cli cli::skill::tests::install::malformed_manifest_cannot_authorize_removing_unrelated_files PASS [ 0.088s] biomcp-cli cli::skill::tests::install::plain_install_preserves_edits_and_force_repairs_managed_files PASS [ 0.012s] biomcp-cli cli::study::tests::parsing::study_top_mutated_parses_limit_flag PASS [ 0.010s] biomcp-cli cli::study::tests::validation::study_filter_accepts_finite_f64_threshold_boundaries PASS [ 0.013s] biomcp-cli cli::study::tests::validation::study_co_occurrence_requires_2_to_10_genes PASS [ 0.013s] biomcp-cli cli::study::tests::validation::study_compare_rejects_unknown_type PASS [ 0.009s] biomcp-cli cli::system::batch::tests::dropping_settlement_cancels_active_and_queued_work PASS [ 0.014s] biomcp-cli cli::study::tests::validation::study_filter_rejects_malformed_expression_threshold PASS [ 0.014s] biomcp-cli cli::study::tests::validation::study_filter_requires_at_least_one_criterion PASS [ 0.018s] biomcp-cli cli::study::tests::validation::study_filter_cli_and_mcp_paths_share_non_finite_invalid_argument PASS [ 0.015s] biomcp-cli cli::study::tests::validation::study_survival_rejects_unknown_endpoint PASS [ 0.016s] biomcp-cli cli::system::batch::tests::article_batch_preflight_pins_modes_sections_counts_and_id_bytes PASS [ 0.010s] biomcp-cli cli::system::batch::tests::settlement_caps_live_work_preserves_order_and_settles_after_failure PASS [ 0.018s] biomcp-cli cli::system::batch::tests::batch_command_parses_sections_source_and_closed_article_modes PASS [ 0.013s] biomcp-cli cli::system::tests::batch_help_includes_examples_and_limits PASS [ 0.012s] biomcp-cli cli::system::tests::clap_version_includes_the_build_version PASS [ 0.012s] biomcp-cli cli::system::tests::cvx_sync_help_describes_bundle_refresh PASS [ 0.013s] biomcp-cli cli::system::tests::cvx_help_mentions_sync_example PASS [ 0.011s] biomcp-cli cli::system::tests::ddinter_help_mentions_sync_example PASS [ 0.017s] biomcp-cli cli::system::dispatch::batch_settlement_tests::mixed_batch_preserves_input_order_and_emits_every_result PASS [ 0.013s] biomcp-cli cli::system::tests::cvx_sync_parses_subcommand PASS [ 0.028s] biomcp-cli cli::study::tests::validation::study_filter_rejects_non_finite_expression_thresholds_before_study_lookup PASS [ 0.012s] biomcp-cli cli::system::tests::ddinter_sync_help_describes_eight_csv_refresh PASS [ 0.011s] biomcp-cli cli::system::tests::ddinter_sync_parses_subcommand PASS [ 0.017s] biomcp-cli cli::system::tests::dev2_contracts::batch_source_is_optional_and_trial_only PASS [ 0.009s] biomcp-cli cli::system::tests::enrich_json_always_serializes_unresolved_genes PASS [ 0.033s] biomcp-cli cli::system::batch::tests::dropping_settlement_cancels_cacheable_article_provider_retry_and_admission PASS [ 0.012s] biomcp-cli cli::system::tests::enrich_command_parses_limit PASS [ 0.013s] biomcp-cli cli::system::tests::discover_top_level_command_parses_query PASS [ 0.014s] biomcp-cli cli::system::tests::dev2_contracts::serve_http_rejects_port_zero PASS [ 0.014s] biomcp-cli cli::system::tests::discover_help_includes_when_to_use_guidance PASS [ 0.013s] biomcp-cli cli::system::tests::ema_sync_parses_subcommand PASS [ 0.015s] biomcp-cli cli::system::tests::ema_help_mentions_sync_example PASS [ 0.010s] biomcp-cli cli::system::tests::enrich_markdown_reports_unresolved_genes_before_empty_result PASS [ 0.019s] biomcp-cli cli::system::tests::discover_and_batch_json_keep_executable_templates_without_human_option_prose PASS [ 0.009s] biomcp-cli cli::system::tests::enrich_markdown_reports_unresolved_genes_before_results PASS [ 0.011s] biomcp-cli cli::system::tests::gtr_help_mentions_sync_example PASS [ 0.011s] biomcp-cli cli::system::tests::gtr_sync_help_describes_diagnostic_bundle_refresh PASS [ 0.011s] biomcp-cli cli::system::tests::gtr_sync_parses_subcommand PASS [ 0.015s] biomcp-cli cli::system::tests::enrich_rejects_limit_above_max_before_api_call PASS [ 0.013s] biomcp-cli cli::system::tests::handle_enrich_rejects_zero_limit_before_api_call PASS [ 0.012s] biomcp-cli cli::system::tests::health_command_parses_apis_only PASS [ 0.014s] biomcp-cli cli::system::tests::enrich_rejects_zero_limit_before_api_call PASS [ 0.011s] biomcp-cli cli::system::tests::list_command_parses_entity_name PASS [ 0.012s] biomcp-cli cli::system::tests::rendered_list_help_names_exactly_the_production_catalog_entities PASS [ 0.012s] biomcp-cli cli::system::tests::serve_http_help_describes_streamable_http PASS [ 0.010s] biomcp-cli cli::system::tests::sync_json_reports_the_actual_change_flag PASS [ 0.009s] biomcp-cli cli::system::tests::sync_text_output_reports_its_message_not_a_change_flag PASS [ 0.040s] biomcp-cli cli::system::tests::dev2_contracts::dropping_canonical_compact_command_cancels_provider_retry PASS [ 0.013s] biomcp-cli cli::system::tests::skill_uninstall_is_rejected_before_skill_lookup PASS [ 0.014s] biomcp-cli cli::system::tests::serve_http_host_safety_flags_conflict PASS [ 0.011s] biomcp-cli cli::system::tests::version_json_contract_has_identity_fields PASS [ 0.012s] biomcp-cli cli::system::tests::version_command_parses_verbose_flag PASS [ 0.012s] biomcp-cli cli::system::tests::who_help_mentions_sync_example PASS [ 0.042s] biomcp-cli cli::system::tests::dev2_contracts::ten_batch_items_start_together_and_each_owns_its_deadline PASS [ 0.012s] biomcp-cli cli::system::tests::who_ivd_help_mentions_sync_example PASS [ 0.011s] biomcp-cli cli::system::tests::who_ivd_sync_help_describes_diagnostic_csv_refresh PASS [ 0.009s] biomcp-cli cli::system::tests::who_sync::who_sync_clean_json_keeps_synchronized_status_and_zero_exit PASS [ 0.010s] biomcp-cli cli::system::tests::who_sync::who_sync_partial_json_says_partial_with_per_file_outcomes_and_exits_nonzero PASS [ 0.009s] biomcp-cli cli::system::tests::who_sync::who_sync_partial_run_says_partial_names_each_file_and_exits_nonzero PASS [ 0.012s] biomcp-cli cli::system::tests::who_ivd_sync_parses_subcommand PASS [ 0.010s] biomcp-cli cli::system::tests::who_sync::who_sync_reports_refreshed_and_failed_files_instead_of_a_bare_success_claim PASS [ 0.011s] biomcp-cli cli::system::tests::who_sync_help_describes_dual_export_refresh PASS [ 0.013s] biomcp-cli cli::system::tests::who_sync_parses_subcommand PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_clean_command_parses_with_flags PASS [ 0.013s] biomcp-cli cli::tests::facade::cache::cache_clean_help_mentions_dry_run_json_and_limits PASS [ 0.028s] biomcp-cli cli::system::tests::uninstall_removes_exactly_the_owned_binary_and_receipt PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_clear_help_mentions_yes_tty_and_destructive_scope PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_clear_command_parses PASS [ 0.014s] biomcp-cli cli::tests::facade::cache::cache_clear_command_parses_with_yes_flag PASS [ 0.011s] biomcp-cli cli::tests::facade::cache::cache_help_lists_clear_subcommand PASS [ 0.011s] biomcp-cli cli::tests::facade::cache::cache_path_command_parses PASS [ 0.011s] biomcp-cli cli::tests::facade::cache::cache_path_help_describes_plain_and_typed_json_output PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_stats_command_parses PASS [ 0.017s] biomcp-cli cli::tests::facade::cache::cache_help_keeps_json_but_hides_no_cache_everywhere PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_stats_help_mentions_json_and_cli_only PASS [ 0.011s] biomcp-cli cli::tests::facade::cache::json_cache_path_parses_as_plain_path_command PASS [ 0.010s] biomcp-cli cli::tests::facade::cache::no_cache_is_rejected_by_public_run_before_cache_dispatch PASS [ 0.010s] biomcp-cli cli::tests::facade::chart::chart_args_default_to_no_chart PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::json_cache_stats_parses_as_stats_command PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::no_cache_is_rejected_by_public_run_outcome_as_json_usage_error PASS [ 0.012s] biomcp-cli cli::tests::facade::help::discover_help_mentions_article_search_fallback_for_non_canonical_queries PASS [ 0.015s] biomcp-cli cli::tests::facade::help::runtime_commands_still_parse_hidden_global_flags PASS [ 0.012s] biomcp-cli cli::tests::facade::help::search_all_help_mentions_counts_only_json_contract PASS [ 0.011s] biomcp-cli cli::tests::facade::help::skill_help_examples_match_installed_surface PASS [ 0.013s] biomcp-cli cli::tests::facade::help::runtime_help_hides_query_only_global_flags PASS [ 0.011s] biomcp-cli cli::tests::facade::help::top_level_help_lists_cache_command PASS [ 0.013s] biomcp-cli cli::tests::facade::help::top_level_help_has_no_cache_path_json_exception PASS [ 0.021s] biomcp-cli cli::tests::facade::chart::chart_dimension_flags_enforce_practical_bounds PASS [ 0.012s] biomcp-cli cli::tests::facade::help::top_level_help_omits_suggest_command PASS [ 0.014s] biomcp-cli cli::tests::facade::help::top_level_help_describes_cache_family_not_path_only PASS [ 0.013s] biomcp-cli cli::tests::facade::help::top_level_help_uses_count_free_source_phrase PASS [ 0.010s] biomcp-cli cli::tests::facade::reversed_search_rejects_non_utf8_before_candidate_parsing PASS [ 0.009s] biomcp-cli cli::tests::facade::shared_pagination_and_section_provenance_regressions PASS [ 0.015s] biomcp-cli cli::tests::facade::reversed_search_catchall_non_utf8_uses_safe_fallback PASS [ 0.013s] biomcp-cli cli::tests::facade::search_all_requires_at_least_one_typed_slot PASS [ 0.014s] biomcp-cli cli::tests::facade::reversed_search_preserves_globals_delimiters_and_hostile_data PASS [ 0.039s] biomcp-cli cli::tests::facade::chart::chart_json_uses_the_canonical_name_for_every_topic PASS [ 0.024s] biomcp-cli cli::tests::facade::reversed_search_detector_preserves_baseline_boundaries PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_next_commands_keep_four_visible_gtr_sections PASS [ 0.011s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_includes_regulatory_field_and_provenance_when_requested PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_omits_regulatory_field_when_unrequested PASS [ 0.012s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_next_commands_quote_who_follow_up PASS [ 0.030s] biomcp-cli cli::tests::facade::reversed_search_complete_sentence_cap_is_inclusive PASS [ 0.016s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_next_commands_parse PASS [ 0.031s] biomcp-cli cli::tests::facade::reversed_search_catchalls_fall_back_without_echo_when_correction_is_suppressed PASS [ 0.010s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::disease_json_next_commands_omit_requested_section_follow_up PASS [ 0.014s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_search_json_next_commands_parse PASS [ 0.010s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::disease_json_suggestions_match_see_also_without_more_hints PASS [ 0.013s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::pgx_json_next_commands_parse PASS [ 0.010s] biomcp-cli cli::tests::next_commands_json_property::gene_article::gene_json_next_commands_omit_requested_section_follow_up PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::gene_article::gene_json_suggestions_match_see_also_without_section_hints PASS [ 0.021s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::disease_json_next_commands_parse PASS [ 0.023s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::disease_json_next_commands_include_top_gene_context PASS [ 0.018s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::trial_json_next_commands_parse PASS [ 0.020s] biomcp-cli cli::tests::next_commands_json_property::gene_article::article_json_next_commands_parse PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::batch_adverse_event_json_uses_variant_specific_meta PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::batch_protein_json_omits_requested_section_from_next_commands PASS [ 0.008s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::faers_subset_json_filters_data_commands_and_provenance_together PASS [ 0.024s] biomcp-cli cli::tests::next_commands_json_property::gene_article::gene_json_next_commands_include_clingen_trial_search PASS [ 0.055s] biomcp-cli cli::tests::facade::reversed_search_global_delimiter_and_display_precedence_matrix PASS [ 0.013s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::faers_json_next_commands_parse PASS [ 0.023s] biomcp-cli cli::tests::next_commands_json_property::gene_article::gene_json_next_commands_parse PASS [ 0.014s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::device_event_json_next_commands_parse PASS [ 0.012s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::pathway_json_next_commands_parse PASS [ 0.059s] biomcp-cli cli::tests::facade::reversed_search_names_report_copyable_canonical_commands PASS [ 0.013s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::protein_json_next_commands_parse PASS [ 0.068s] biomcp-cli cli::tests::facade::reversed_search_candidate_errors_and_byte_caps_preserve_baseline PASS [ 0.013s] biomcp-cli cli::tests::next_commands_json_property::protein_phenotype::phenotype_search_json_next_commands_parse PASS [ 0.012s] biomcp-cli cli::tests::next_commands_json_property::protein_phenotype::protein_search_json_next_commands_parse PASS [ 0.014s] biomcp-cli cli::tests::next_commands_json_property::variant_drug::drug_interaction_report_json_next_commands_include_helper_follow_ups PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::adverse_event_next_commands_parse PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::adverse_event_search_json_next_commands_parse PASS [ 0.014s] biomcp-cli cli::tests::next_commands_validity::article_and_discover_next_commands_parse PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::author_papers_rich_continuation_parses_with_original_arguments PASS [ 0.018s] biomcp-cli cli::tests::next_commands_json_property::variant_drug::variant_json_next_commands_parse PASS [ 0.019s] biomcp-cli cli::tests::next_commands_json_property::variant_drug::variant_json_next_commands_include_vus_literature_route PASS [ 0.016s] biomcp-cli cli::tests::next_commands_validity::article_loop_suggestion_commands_parse PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::device_event_next_commands_parse PASS [ 0.023s] biomcp-cli cli::tests::next_commands_json_property::variant_drug::drug_json_next_commands_parse PASS [ 0.019s] biomcp-cli cli::tests::next_commands_validity::article_search_json_next_commands_parse PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::diagnostic_search_json_next_commands_parse PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::disease_search_json_next_commands_parse PASS [ 0.020s] biomcp-cli cli::tests::next_commands_validity::diagnostic_next_commands_parse PASS [ 0.025s] biomcp-cli cli::tests::next_commands_validity::article_next_commands_parse PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::gene_search_json_next_commands_parse PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::drug_search_json_next_commands_parse PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::gwas_search_json_next_commands_parse PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::hostile_quoted_article_follow_up_parses_to_one_argument PASS [ 0.019s] biomcp-cli cli::tests::next_commands_validity::drug_next_commands_parse PASS [ 0.011s] biomcp-cli cli::tests::next_commands_validity::pathway_next_commands_parse PASS [ 0.022s] biomcp-cli cli::tests::next_commands_validity::disease_next_commands_parse PASS [ 0.021s] biomcp-cli cli::tests::next_commands_validity::gene_next_commands_parse PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::pathway_search_json_next_commands_parse PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::pgx_next_commands_parse PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::pgx_search_json_next_commands_parse PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::trial_search_json_next_commands_parse PASS [ 0.014s] biomcp-cli cli::tests::next_commands_validity::protein_next_commands_parse PASS [ 0.009s] biomcp-cli cli::tests::outcome::alias_fallback_ols_failure_preserves_original_not_found PASS [ 0.009s] biomcp-cli cli::tests::outcome::ambiguous_gene_miss_points_to_discover PASS [ 0.035s] biomcp-cli cli::tests::next_commands_validity::discover_next_commands_parse PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::variant_search_json_next_commands_parse PASS [ 0.018s] biomcp-cli cli::tests::next_commands_validity::trial_next_commands_parse PASS [ 0.009s] biomcp-cli cli::tests::outcome::batch_gene_json_includes_meta_per_item PASS [ 0.009s] biomcp-cli cli::tests::outcome::drug_alias_fallback_json_writes_stdout_and_exit_1 PASS [ 0.008s] biomcp-cli cli::tests::outcome::drug_alias_fallback_returns_exit_1_markdown_suggestion PASS [ 0.009s] biomcp-cli cli::tests::outcome::extract_json_from_sections_detects_trailing_long_flag PASS [ 0.009s] biomcp-cli cli::tests::outcome::extract_json_from_sections_detects_trailing_short_flag PASS [ 0.021s] biomcp-cli cli::tests::next_commands_validity::variant_next_commands_parse PASS [ 0.008s] biomcp-cli cli::tests::outcome::gene_alias_fallback_json_writes_stdout_and_exit_1 PASS [ 0.015s] biomcp-cli cli::tests::outcome::clap_diagnostics_remove_terminal_controls_from_rejected_arguments PASS [ 0.015s] biomcp-cli cli::tests::outcome::clap_diagnostics_sanitize_layout_controls_in_non_utf8_arguments PASS [ 0.009s] biomcp-cli cli::tests::outcome::extract_json_from_sections_keeps_regular_sections PASS [ 0.009s] biomcp-cli cli::tests::outcome::gene_alias_fallback_returns_exit_1_markdown_suggestion PASS [ 0.008s] biomcp-cli cli::tests::outcome::mcp_alias_suggestion_json_stays_structured PASS [ 0.009s] biomcp-cli cli::tests::outcome::long_running_server_json_rejection_is_structured_and_nonzero PASS [ 0.008s] biomcp-cli cli::tests::outcome::phenotype_search_json_contract_unchanged PASS [ 0.008s] biomcp-cli cli::tests::outcome::resolve_query_input_accepts_flag_or_positional PASS [ 0.009s] biomcp-cli cli::tests::outcome::resolve_query_input_rejects_dual_values PASS [ 0.008s] biomcp-cli cli::tests::outcome::search_json_with_meta_includes_next_commands PASS [ 0.009s] biomcp-cli cli::tests::outcome::search_json_with_meta_and_suggestions_includes_zero_result_suggestions PASS [ 0.009s] biomcp-cli cli::tests::outcome::search_json_with_meta_omits_meta_when_empty PASS [ 0.009s] biomcp-cli cli::tests::outcome::search_meta_trims_empty_commands PASS [ 0.008s] biomcp-cli cli::tests::outcome::search_meta_with_suggestions_keeps_empty_suggestions_array PASS [ 0.014s] biomcp-cli cli::tests::outcome::reflected_study_identifier_is_sanitized_at_the_human_diagnostic_boundary PASS [ 0.009s] biomcp-cli cli::tests::outcome::search_meta_with_workflow_keeps_meta_without_next_commands PASS [ 0.025s] biomcp-cli cli::tests::outcome::formerly_plain_finite_commands_emit_one_json_document PASS [ 0.038s] biomcp-cli cli::tests::next_commands_validity::workflow_ladder_sidecar_commands_parse PASS [ 0.009s] biomcp-cli cli::trial::count_tests::json_and_text_mark_a_partial_count_with_its_reason PASS [ 0.010s] biomcp-cli cli::tests::surface_agreement::drug_command_discovery_has_one_renderer_owner_per_surface PASS [ 0.008s] biomcp-cli cli::trial::count_tests::search_json_carries_the_partial_note_in_meta_notes PASS [ 0.010s] biomcp-cli cli::trial::count_tests::json_preserves_precision_and_omits_unknown_approximation PASS [ 0.013s] biomcp-cli cli::tests::printed_card_commands::detail_card_contract_rejects_malformed_command PASS [ 0.009s] biomcp-cli cli::trial::count_tests::search_json_omits_meta_notes_when_the_page_is_fully_verified PASS [ 0.008s] biomcp-cli cli::trial::documents::tests::document_routes_require_standalone_arity PASS [ 0.010s] biomcp-cli cli::trial::count_tests::text_explains_each_unknown_reason_truthfully PASS [ 0.008s] biomcp-cli cli::trial::documents::tests::manifest_is_json_only_and_document_forms_are_ctgov_only PASS [ 0.011s] biomcp-cli cli::trial::tests::get_trial_parses_location_paging_before_sections PASS [ 0.012s] biomcp-cli cli::trial::tests::get_trial_parses_source_before_sections PASS [ 0.012s] biomcp-cli cli::trial::tests::handle_search_rejects_next_page_with_offset PASS [ 0.012s] biomcp-cli cli::trial::tests::handle_search_rejects_no_alias_expand_for_nci_source PASS [ 0.012s] biomcp-cli cli::trial::tests::handle_search_rejects_no_alias_expand_without_intervention PASS [ 0.011s] biomcp-cli cli::trial::tests::nci_repeated_biomarker_like_values_fail_before_dispatch PASS [ 0.027s] biomcp-cli cli::tests::surface_agreement::every_detail_card_markdown_and_json_commands_agree PASS [ 0.011s] biomcp-cli cli::trial::tests::search_trial_parses_multi_word_positional_query PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_new_filter_flags PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_next_page_with_intervention PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_no_alias_expand PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_positional_query PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_positional_query_with_status_flag PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_unquoted_multi_token_mutation PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_rejects_non_numeric_age PASS [ 0.012s] biomcp-cli cli::trial::tests::trial_age_help_explains_age_only_count_is_approximate PASS [ 0.012s] biomcp-cli cli::trial::tests::trial_facility_help_names_text_search_and_geo_verify_modes PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_help_clarifies_mutation_vs_biomarker PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_help_documents_alias_expansion_controls PASS [ 0.009s] biomcp-cli cli::trial::tests::verification_emptied_hint_names_the_upstream_count PASS [ 0.009s] biomcp-cli cli::trial::tests::verification_emptied_zero_adds_the_criteria_relaxation_command PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_help_documents_nci_source_specific_notes PASS [ 0.009s] biomcp-cli cli::trial::tests::zero_result_trial_broadening_hints_name_filter_relaxations PASS [ 0.012s] biomcp-cli cli::trial::tests::trial_phase_help_explains_combined_phase_label PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_phase_help_explains_canonical_numeric_forms_and_aliases PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_sex_help_explains_all_means_no_restriction PASS [ 0.009s] biomcp-cli cli::trial::tests::zero_result_trial_next_commands_offer_filtered_broadening PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::explicit_location_pages_carry_exact_nonterminal_continuation PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::handle_get_rejects_declared_limit_zero PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::handle_get_rejects_duplicate_declared_and_legacy_paging PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::handle_get_rejects_declared_paging_without_locations PASS [ 0.008s] biomcp-cli cli::trial::tests_locations::paginate_trial_locations_empty_page_keeps_non_site_contacts_and_normalizes_empty PASS [ 0.010s] biomcp-cli cli::trial::tests_locations::paginate_trial_locations_aligns_site_contacts_to_the_page PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::paginate_trial_locations_handles_missing_locations PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::parse_trial_location_paging_extracts_offset_limit_flags PASS [ 0.010s] biomcp-cli cli::trial::tests_locations::paginate_trial_locations_uses_counted_exact_membership_and_legacy_boundaries PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::parse_trial_location_paging_rejects_legacy_limit_zero PASS [ 0.008s] biomcp-cli cli::trial::tests_locations::terminal_location_page_omits_continuation_key_and_markdown_command PASS [ 0.007s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_includes_alias_opt_out_marker PASS [ 0.008s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_can_show_canonical_intervention PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::trial_locations_json_preserves_location_pagination_and_section_sources PASS [ 0.008s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_includes_geo_filters PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_includes_nci_source_marker PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_omits_alias_opt_out_marker_when_not_applicable PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::trial_zero_result_nickname_hint_requires_positional_ctgov_query_with_zero_results PASS [ 0.009s] biomcp-cli cli::update::tests::enforce_checksum_policy_missing_sidecar_without_override_fails_closed PASS [ 0.010s] biomcp-cli cli::update::tests::enforce_checksum_policy_verified_succeeds PASS [ 0.009s] biomcp-cli cli::update::tests::extract_binary_from_targz_rejects_empty_binary PASS [ 0.009s] biomcp-cli cli::update::tests::extract_binary_from_targz_reports_missing_binary_as_not_found PASS [ 0.009s] biomcp-cli cli::update::tests::extract_binary_from_zip_returns_matching_binary_bytes PASS [ 0.080s] biomcp-cli cli::tests::printed_card_commands::recovery_commands_round_trip_to_their_registered_routes PASS [ 0.010s] biomcp-cli cli::update::tests::extract_binary_from_targz_returns_matching_binary_bytes PASS [ 0.007s] biomcp-cli cli::update::tests::install_binary_after_checksum_policy_missing_sidecar_without_override_does_not_replace PASS [ 0.007s] biomcp-cli cli::update::tests::production_archive_ceiling_is_exactly_256_mib PASS [ 0.008s] biomcp-cli cli::update::tests::verify_archive_against_checksum_rejects_invalid_format PASS [ 0.009s] biomcp-cli cli::update::tests::verify_archive_against_checksum_accepts_matching_sha256 PASS [ 0.008s] biomcp-cli cli::update::tests::verify_archive_against_checksum_rejects_mismatch PASS [ 0.010s] biomcp-cli cli::variant::car::tests::input_reader_rejects_a_file_larger_than_its_supported_size PASS [ 0.009s] biomcp-cli cli::variant::dispatch::tests::explicit_filter_flags_skip_unset_and_blank_values PASS [ 0.008s] biomcp-cli cli::variant::dispatch::tests::explicit_filter_flags_state_every_flag_in_command_spelling PASS [ 0.008s] biomcp-cli cli::variant::erepo::tests::empty_markdown_labels_germline_scope_and_routes_somatic_questions_to_civic PASS [ 0.010s] biomcp-cli cli::variant::erepo::tests::input_reader_accepts_exact_limit_and_rejects_one_extra_byte PASS [ 0.008s] biomcp-cli cli::variant::erepo::tests::markdown_reports_source_facts_without_json PASS [ 0.010s] biomcp-cli cli::variant::normalization_json::tests::render_deduplicates_aggregate_results PASS [ 0.009s] biomcp-cli cli::variant::tests::apply_gene_first_routing_keeps_every_explicit_filter_in_both_hints PASS [ 0.112s] biomcp-cli cli::tests::printed_card_commands::detail_card_commands_parse PASS [ 0.009s] biomcp-cli cli::variant::tests::apply_gene_first_routing_keeps_explicit_filters_on_both_paths PASS [ 0.040s] biomcp-cli cli::update::tests::failed_staged_version_smoke_preserves_binary_and_receipt PASS [ 0.008s] biomcp-cli cli::variant::tests::apply_gene_first_routing_routes_confirmed_symbols_and_refuses_the_rest PASS [ 0.036s] biomcp-cli cli::update::tests::release_metadata_endpoint_is_injectable PASS [ 0.010s] biomcp-cli cli::variant::tests::apply_gene_first_routing_moves_a_leading_protein_change_to_hgvsp PASS [ 0.014s] biomcp-cli cli::variant::tests::articles::preserves_positional_syntax_and_accepts_structured_input PASS [ 0.010s] biomcp-cli cli::variant::tests::gene_first_working_form_quotes_multi_word_conditions PASS [ 0.010s] biomcp-cli cli::variant::tests::gene_routing_preference_off_skips_the_mygene_request PASS [ 0.018s] biomcp-cli cli::variant::tests::articles::rejects_assembly_for_transcript_hgvs PASS [ 0.014s] biomcp-cli cli::variant::tests::articles::rejects_positional_input_combination_with_the_batch_error_envelope PASS [ 0.013s] biomcp-cli cli::variant::tests::erepo_help_labels_germline_scope_and_civic_destination PASS [ 0.019s] biomcp-cli cli::variant::tests::erepo_gene_mode_is_bounded_and_mutually_exclusive PASS [ 0.013s] biomcp-cli cli::variant::tests::parsing::search_variant_parses_multi_token_positional_query_and_flag PASS [ 0.012s] biomcp-cli cli::variant::tests::parsing::search_variant_parses_single_token_positional_query PASS [ 0.013s] biomcp-cli cli::variant::tests::parsing::search_variant_parses_quoted_gene_change_positional_query PASS [ 0.019s] biomcp-cli cli::variant::tests::handle_get_returns_guidance_json_for_shorthand_variant PASS [ 0.009s] biomcp-cli cli::variant::tests::refused_zero_row_hint_keeps_the_explicit_hgvsp_and_consequence_flags PASS [ 0.019s] biomcp-cli cli::variant::tests::parse_simple_gene_change_rejects_non_simple_forms PASS [ 0.020s] biomcp-cli cli::variant::tests::parse_simple_gene_change_detects_supported_forms PASS [ 0.078s] biomcp-cli cli::update::tests::owned_update_smokes_and_atomically_replaces_with_agreeing_receipt PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_keeps_explicit_gene_flag_routing PASS [ 0.016s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_exon_deletion_phrase_to_gene_and_consequence PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_keeps_non_gene_phrases_as_conditions PASS [ 0.019s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_gene_flag_residue_alias_to_residue_alias_search PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_gene_hgvsc_text_to_gene_and_hgvsc PASS [ 0.009s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_rsid_to_rsid_filter PASS [ 0.016s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_long_form_positional_gene_change_to_gene_and_hgvsp PASS [ 0.021s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_gene_residue_alias_to_residue_alias_search PASS [ 0.008s] biomcp-cli cli::variant::tests::resolve_variant_query_normalizes_long_form_hgvsp_flag PASS [ 0.016s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_simple_gene_change_to_gene_and_hgvsp PASS [ 0.042s] biomcp-cli cli::variant::tests::refused_zero_row_json_next_command_keeps_both_caller_flags_end_to_end PASS [ 0.008s] biomcp-cli cli::variant::tests::resolve_variant_query_preserves_complex_exact_protein_identity PASS [ 0.007s] biomcp-cli cli::variant::tests::resolve_variant_query_preserves_empty_consequence_for_source_validation PASS [ 0.009s] biomcp-cli cli::variant::tests::resolve_variant_query_preserves_stop_x_for_hgvsp_flag PASS [ 0.011s] biomcp-cli cli::variant::tests::resolve_variant_query_preserves_conjunctive_rsid_and_protein_identity PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_single_token_to_gene PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_offers_gene_first_candidate_for_free_text_phrases PASS [ 0.136s] biomcp-cli cli::update::tests::archive_transport_accepts_exact_limit_for_declared_and_chunked_bodies PASS [ 0.062s] biomcp-cli cli::variant::tests::refused_zero_row_search_hint_keeps_the_callers_flags_end_to_end PASS [ 0.140s] biomcp-cli cli::update::tests::archive_transport_rejects_limit_plus_one_for_declared_and_chunked_bodies PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_rejects_conflicts_with_positional_mapping PASS [ 1.036s] biomcp-cli cache::manager::tests::write_security_tests::put_does_not_wait_past_request_deadline_for_eviction PASS [ 0.068s] biomcp-cli cli::variant::tests::refused_zero_row_markdown_hint_keeps_the_consequence_flag_end_to_end PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_returns_guidance_for_standalone_protein_change PASS [ 0.021s] biomcp-cli cli::variant::tests::resolve_variant_query_returns_guidance_for_long_form_single_token_change PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_splits_a_protein_change_after_the_gene PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_still_rejects_condition_flag_with_positional_phrase PASS [ 0.010s] biomcp-cli cli::variant::tests::split_gene_first_candidate_accepts_symbol_shaped_first_tokens PASS [ 0.013s] biomcp-cli cli::variant::tests::search_variant_help_distinguishes_exact_identity_from_broad_discovery PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_uses_gene_context_for_long_form_single_token_change PASS [ 0.012s] biomcp-cli cli::variant::tests::split_leading_protein_change_takes_only_a_leading_change PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_uses_gene_context_for_standalone_protein_change PASS [ 0.009s] biomcp-cli cli::variant::tests::variant_query_gene_routing_preference_defaults_to_mygene PASS [ 0.012s] biomcp-cli cli::variant::tests::variant_bare_id_parses_as_external_subcommand PASS [ 0.010s] biomcp-cli enrich_sparse_disease_identity_prefers_exact_ols4_match PASS [ 0.009s] biomcp-cli entities::adverse_event::sections::tests::typed_subset_is_bounded_and_keeps_selected_empty_arrays PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::build_device_query_preserves_typed_seriousness PASS [ 0.012s] biomcp-cli cli::variant::tests::variant_trials_parses_source_flag PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::build_device_query_requires_any_device_filter PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::build_device_query_supports_manufacturer_and_product_code_filters PASS [ 0.023s] biomcp-cli cli::variant::tests::variant_filter_evaluation_renderers_keep_mixed_states_and_order PASS [ 0.025s] biomcp-cli cli::variant::tests::ticket_377_variant_renderer_envelope_contracts PASS [ 0.023s] biomcp-cli cli::variant::tests::variant_get_shorthand_json_returns_variant_guidance_metadata PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::build_enforcement_query_has_default_when_filters_empty PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::device_query_summary_names_all_seriousness_meanings PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::build_openfda_query_encodes_outcome_and_since PASS [ 0.024s] biomcp-cli cli::variant::tests::variant_search_shorthand_json_returns_variant_guidance_metadata PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::count_field_catalog_accepts_and_canonicalizes_every_supported_value PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::build_openfda_query_requires_drug_name PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::normalize_classification_accepts_common_forms PASS [ 0.011s] biomcp-cli entities::adverse_event::tests::cvx_vaers_failure_state_matrix PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::optional_faers_status_degrades_provider_failures PASS [ 0.025s] biomcp-cli disease_markdown_renders_ot_only_gene_association_table PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::optional_faers_status_preserves_invalid_arguments PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::query_type_rejects_unknown_flag PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::search_with_source_vaers_rejects_offset PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::search_count_rejects_empty_count_field PASS [ 0.011s] biomcp-cli entities::adverse_event::tests::search_with_source_all_skips_vaers_for_unsupported_filters PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::search_with_source_vaers_rejects_unsupported_filters PASS [ 0.011s] biomcp-cli entities::adverse_event::tests::search_with_source_all_treats_offset_as_a_visible_vaers_skip PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::source_filter_rejects_unknown_flag PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::search_with_status_preserves_openfda_empty_results PASS [ 0.013s] biomcp-cli entities::adverse_event::tests::search_with_source_all_non_vaccine_uses_local_only_vaers_result PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::search_with_status_preserves_openfda_not_found PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::successful_vaers_outcomes_credit_identity_and_evidence_sources PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::summarize_search_results_computes_top_reactions PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::trial_adverse_events_count_each_term_once_per_study PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::trial_adverse_events_prefers_alias_copy_with_counted_terms PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::trial_adverse_events_dedupe_studies_across_aliases PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::validate_count_field_rejects_total_affordances PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::validate_count_field_rejects_unknown_plausible_field PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::validate_count_field_rejects_non_field_syntax PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::vaers_limit_bounds_top_reactions PASS [ 0.011s] biomcp-cli entities::adverse_event::tests::vaers_resolver_matches_influenza_family_queries PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::vaers_summary_payload_maps_mmr_tables PASS [ 0.012s] biomcp-cli entities::adverse_event::tests::vaers_resolver_returns_query_not_vaccine_without_upstream_call PASS [ 0.009s] biomcp-cli entities::article::assets::tests::a_bare_name_with_several_refused_routes_names_the_strongest_reason PASS [ 0.009s] biomcp-cli entities::article::assets::tests::a_lone_zero_byte_route_keeps_the_filename_key_it_advertised PASS [ 0.008s] biomcp-cli entities::article::assets::tests::append_matching_figshare_ids_dedupes_sorts_and_caps PASS [ 0.010s] biomcp-cli entities::article::assets::tests::asset_bytes_match_filename_pins_the_committed_leading_bytes PASS [ 0.009s] biomcp-cli entities::article::assets::tests::figshare_same_paper_matches_doi_or_normalized_exact_title PASS [ 0.009s] biomcp-cli entities::article::assets::tests::collision_keys_are_stable_while_unique_names_keep_legacy_handles PASS [ 0.009s] biomcp-cli entities::article::assets::tests::final_source_classification_distinguishes_absence_from_failure PASS [ 0.010s] biomcp-cli entities::article::assets::tests::europe_pmc_manifest_retains_pmc_license_source_and_exact_member_facts PASS [ 0.011s] biomcp-cli entities::article::assets::tests::build_manifest_hashes_binary_bytes_and_quotes_retrieval_commands PASS [ 0.011s] biomcp-cli entities::article::assets::tests::hash_dedup_preserves_coverage_for_distinct_provider_filenames PASS [ 0.008s] biomcp-cli entities::article::assets::tests::linked_budgets_are_deterministic_at_the_exact_boundaries PASS [ 0.009s] biomcp-cli entities::article::assets::tests::identity_then_hash_merge_keeps_primary_bytes_and_all_routes PASS [ 0.010s] biomcp-cli entities::article::assets::tests::malformed_jats_is_a_source_failure_instead_of_silent_absence PASS [ 0.010s] biomcp-cli entities::article::assets::tests::zero_byte_routes_keep_stable_collision_keys_and_refuse_with_empty_response PASS [ 0.011s] biomcp-cli entities::article::assets::tests::source_attempt_budget_reports_timeout_without_collapsing_other_outcomes PASS [ 0.011s] biomcp-cli entities::article::assets::tests::wrong_type_bytes_keep_stable_collision_keys_and_refuse_with_unusable_asset PASS [ 0.011s] biomcp-cli entities::article::assets::tests::source_attempt_outcomes_are_stable_json PASS [ 0.012s] biomcp-cli entities::article::backends::tests::litsense2_candidates_apply_hydrated_journal_and_date_filters PASS [ 0.012s] biomcp-cli entities::article::backends::tests::litsense2_candidates_deduplicate_and_hydrate_pubmed_metadata PASS [ 0.008s] biomcp-cli entities::article::backends::tests::search_pubmed_page_cleans_question_keyword_before_esearch PASS [ 0.010s] biomcp-cli entities::article::backends::tests::search_pubmed_page_applies_offset_after_filtering PASS [ 0.011s] biomcp-cli entities::article::backends::tests::repeated_backend_requests_stop_before_the_fifty_first_future_runs PASS [ 0.012s] biomcp-cli entities::article::backends::tests::search_pubmed_page_hard_fails_on_blank_title PASS [ 0.026s] biomcp-cli entities::article::backends::tests::expired_car_admission_records_each_planned_identity_once PASS [ 0.008s] biomcp-cli entities::article::backends::tests::search_pubmed_page_rejects_no_preprints PASS [ 0.011s] biomcp-cli entities::article::backends::tests::search_pubmed_page_refills_across_batches_after_filtering PASS [ 0.009s] biomcp-cli entities::article::backends::tests::search_pubmed_page_rejects_open_access PASS [ 0.010s] biomcp-cli entities::article::backends::tests::search_pubmed_page_sends_standalone_not_retraction_term PASS [ 0.037s] biomcp-cli entities::article::assets::tests::pow_capture_projects_named_pmc_gate_coverage_without_an_asset PASS [ 0.011s] biomcp-cli entities::article::backends::tests::semantic_scholar_candidates_keep_unknown_retraction_rows PASS [ 0.009s] biomcp-cli entities::article::backends::tests::ticket_376_article_source_status_contracts_semantic_scholar_unavailable_status_without_key PASS [ 0.010s] biomcp-cli entities::article::backends::tests::semantic_scholar_candidates_send_effective_year_filter PASS [ 0.009s] biomcp-cli entities::article::backends::tests::semantic_scholar_year_filter_uses_normalized_date_bounds PASS [ 0.008s] biomcp-cli entities::article::batch::tests::article_batch_item_projection_keeps_requested_id_year_and_top_entities PASS [ 0.009s] biomcp-cli entities::article::batch::tests::article_batch_rejects_more_than_max_ids_before_network PASS [ 0.008s] biomcp-cli entities::article::batch::tests::batch_semantic_scholar_merge_fills_fields_and_skips_none_rows_and_pmcid_only PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::article_source_pubmed_priority PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::article_source_litsense2_priority PASS [ 0.009s] biomcp-cli entities::article::batch::tests::post_construction_semantic_scholar_failure_emits_one_normalized_warning PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_default_cap_ignores_empty_pmid_rows PASS [ 0.012s] biomcp-cli entities::article::candidates::tests::federated_relevance_uses_source_local_position_not_merge_order PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_default_cap_limits_three_source_pool PASS [ 0.051s] biomcp-cli entities::article::backends::tests::europepmc_cursor_walk_stops_on_an_absent_cursor_after_a_page_with_rows PASS [ 0.008s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_explicit_cap_uses_primary_source_native_position PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_default_cap_skips_two_source_pools PASS [ 0.056s] biomcp-cli entities::article::assets::tests::manifest_cache_reuses_fresh_entries_and_discards_expired_or_corrupt_entries PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_explicit_cap_equal_limit_disables_capping PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_explicit_cap_applies_on_two_source_pools PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_preserves_source_local_position PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::merge_article_candidates_dedups_transitively_across_identifiers PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::merge_article_candidates_keeps_min_source_local_position PASS [ 0.008s] biomcp-cli entities::article::candidates::tests::pubmed_led_rescue_preserves_per_source_positions_through_merge PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::merge_preserves_semantic_scholar_identifiers PASS [ 0.011s] biomcp-cli entities::article::candidates::tests::pubmed_unique_row_survives_first_page_in_mixed_federation PASS [ 0.009s] biomcp-cli entities::article::detail::tests::get_rejects_pdf_without_fulltext_section PASS [ 0.012s] biomcp-cli entities::article::detail::tests::europepmc_fallback_keeps_authorship_provenance_and_flag PASS [ 0.008s] biomcp-cli entities::article::detail::tests::is_doi_basic PASS [ 0.059s] biomcp-cli entities::article::backends::tests::pubtator_search_commits_transformed_page_before_one_terminal_event PASS [ 0.009s] biomcp-cli entities::article::detail::tests::maps_pubmed_citation_to_available_indexing_without_flattening PASS [ 0.010s] biomcp-cli entities::article::detail::tests::parse_article_id_basic PASS [ 0.014s] biomcp-cli entities::article::detail::tests::indexing_timeout_and_missing_pmid_become_unavailable PASS [ 0.009s] biomcp-cli entities::article::detail::tests::parse_article_id_publisher_pii_is_invalid PASS [ 0.009s] biomcp-cli entities::article::detail::tests::parse_pmcid_basic PASS [ 0.007s] biomcp-cli entities::article::detail::tests::parse_sections_supports_tldr_indexing_and_all PASS [ 0.009s] biomcp-cli entities::article::detail::tests::parse_pmid_accepts_all_digit_identifiers_past_u32 PASS [ 0.009s] biomcp-cli entities::article::detail::tests::parse_pmid_basic PASS [ 0.009s] biomcp-cli entities::article::detail::tests::pubtator_lag_error_is_400_or_404_only PASS [ 0.009s] biomcp-cli entities::article::detail::tests::unavailable_indexing_maps_every_cause_to_a_static_failure PASS [ 0.011s] biomcp-cli entities::article::enrichment::tests::empty_enrichment_plan_makes_no_provider_requests PASS [ 0.008s] biomcp-cli entities::article::enrichment::tests::semantic_scholar_merge_treats_zero_citation_as_missing PASS [ 0.012s] biomcp-cli entities::article::enrichment::tests::article_base_merge_fills_abstract_when_semantic_scholar_has_none PASS [ 0.008s] biomcp-cli entities::article::filters::tests::article_gene_accepts_one_trimmed_whitespace_free_token PASS [ 0.011s] biomcp-cli entities::article::enrichment::tests::semantic_scholar_merge_preserves_existing_nonempty_primary_metadata PASS [ 0.009s] biomcp-cli entities::article::filters::tests::article_gene_rejects_empty_or_unicode_whitespace_with_fixed_guidance PASS [ 0.014s] biomcp-cli entities::article::enrichment::tests::semantic_scholar_merge_fills_missing_citation_and_abstract_metadata PASS [ 0.009s] biomcp-cli entities::article::filters::tests::exclude_retracted_keeps_unknown_retraction_status PASS [ 0.009s] biomcp-cli entities::article::filters::tests::literal_colons_false_prefixes_and_quote_bytes_remain_keywords PASS [ 0.007s] biomcp-cli entities::article::filters::tests::native_keyword_fields_are_rejected_with_typed_guidance PASS [ 0.009s] biomcp-cli entities::article::filters::tests::exclude_retracted_only_filters_confirmed_retractions PASS [ 0.009s] biomcp-cli entities::article::filters::tests::normalize_article_type_accepts_aliases PASS [ 0.008s] biomcp-cli entities::article::filters::tests::normalized_date_bounds_normalizes_partial_dates PASS [ 0.009s] biomcp-cli entities::article::filters::tests::normalized_date_bounds_rejects_bad_date_to_with_flag_name PASS [ 0.008s] biomcp-cli entities::article::filters::tests::normalized_date_bounds_rejects_bad_month PASS [ 0.008s] biomcp-cli entities::article::filters::tests::normalized_date_bounds_rejects_inverted_range PASS [ 0.008s] biomcp-cli entities::article::filters::tests::partial_date_normalization_and_filtering_are_consistent PASS [ 0.009s] biomcp-cli entities::article::filters::tests::ordinary_bracket_and_colon_keywords_remain_valid PASS [ 0.008s] biomcp-cli entities::article::filters::tests::reserved_article_keyword_fields_have_precise_boundaries_and_guidance PASS [ 0.009s] biomcp-cli entities::article::filters::tests::reserved_article_keyword_quote_escape_is_per_label_and_field_ordered PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::abstract_merge_preserves_nonblank_base_and_fills_missing_or_blank_values PASS [ 0.055s] biomcp-cli entities::article::detail::tests::all_digit_pmid_past_u32_reports_not_found_with_the_full_identifier PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::fulltext_cache_key_is_kind_aware_and_versioned PASS [ 0.010s] biomcp-cli entities::article::fulltext::tests::attempt_state_orders_and_deduplicates_healthy_sources_without_erasing_failure PASS [ 0.008s] biomcp-cli entities::article::fulltext::tests::only_documented_absence_statuses_are_healthy_empty PASS [ 0.008s] biomcp-cli entities::article::fulltext::tests::partial_coverage_and_source_health_fold_independently_in_any_order PASS [ 0.008s] biomcp-cli entities::article::fulltext::tests::pdf_discovery_preserves_ineligible_empty_data_and_failure PASS [ 0.007s] biomcp-cli entities::article::fulltext::tests::semantic_scholar_pdf_policy_rejects_unsafe_urls_without_echoing_them PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::semantic_scholar_pdf_policy_accepts_publisher_hosts_before_contact PASS [ 0.007s] biomcp-cli entities::article::fulltext::tests::typed_timeout_failure_survives_later_healthy_miss_in_final_fold PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::xml_conversion_rejects_malformed_unsupported_and_accepts_usable_text PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::xml_fulltext_attempts_try_pmc_sources_before_med_fallback PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::xml_fulltext_attempts_use_med_when_only_pmid_is_available PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::xml_source_metadata_is_truthful PASS [ 0.054s] biomcp-cli entities::article::fulltext::tests::abstract_only_xml_continues_to_a_later_body_winner PASS [ 0.060s] biomcp-cli entities::article::fulltext::tests::earlier_fulltext_winner_overrides_failed_pdf_discovery PASS [ 0.074s] biomcp-cli entities::article::fulltext::tests::resolver_continues_after_bad_xml_and_later_data_overrides_failures PASS [ 0.079s] biomcp-cli entities::article::fulltext::tests::stale_v3_partial_artifact_cannot_become_the_current_winner PASS [ 0.070s] biomcp-cli entities::article::graph::tests::cache::a_bypassed_cache_reads_and_writes_nothing PASS [ 0.129s] biomcp-cli entities::article::fulltext::tests::pmc_bot_challenge_page_names_its_reason_and_keeps_the_pdf_ladder_running PASS [ 0.139s] biomcp-cli entities::article::graph::tests::admission::citation_evidence_bounds_a_panicking_jats_worker_and_releases_the_permit PASS [ 0.133s] biomcp-cli entities::article::graph::tests::cache::a_forced_call_serves_a_stored_fulltext_entry PASS [ 0.170s] biomcp-cli entities::article::graph::tests::cache::a_corrupt_record_is_a_miss_and_is_replaced PASS [ 0.095s] biomcp-cli entities::article::graph::tests::cache::a_non_evidence_status_is_never_cached PASS [ 0.087s] biomcp-cli entities::article::graph::tests::cache::a_write_failure_leaves_the_outcome_unchanged PASS [ 0.190s] biomcp-cli entities::article::graph::tests::cache::a_forced_call_ignores_a_stored_provider_context_entry PASS [ 0.182s] biomcp-cli entities::article::graph::tests::cache::a_future_schema_version_is_a_miss PASS [ 0.122s] biomcp-cli entities::article::graph::tests::cache::an_off_mode_guard_does_not_latch_the_bypass_for_later_reads PASS [ 0.120s] biomcp-cli entities::article::graph::tests::cache::cross_spelling_call_is_served_for_the_same_resolved_pair PASS [ 0.110s] biomcp-cli entities::article::graph::tests::cache::repeat_call_serves_the_stored_edge_without_graph_or_fulltext_requests PASS [ 0.160s] biomcp-cli entities::article::graph::tests::cache::an_expired_entry_refetches PASS [ 0.127s] biomcp-cli entities::article::graph::tests::cache::infinite_mode_serves_an_expired_entry PASS [ 0.099s] biomcp-cli entities::article::graph::tests::citation_evidence_answers_from_opencitations_when_the_seed_hop_is_refused PASS [ 0.098s] biomcp-cli entities::article::graph::tests::citation_evidence_compares_paper_ids_case_insensitively PASS [ 0.107s] biomcp-cli entities::article::graph::tests::citation_evidence_bounds_the_traversal_at_three_pages PASS [ 0.074s] biomcp-cli entities::article::graph::tests::citation_evidence_exhausted_pages_return_the_directed_not_found PASS [ 0.095s] biomcp-cli entities::article::graph::tests::citation_evidence_deduplicates_duplicate_edges_and_contexts PASS [ 0.134s] biomcp-cli entities::article::graph::tests::citation_evidence_confirms_the_edge_the_index_holds PASS [ 0.109s] biomcp-cli entities::article::graph::tests::citation_evidence_fails_closed_on_a_matching_row_with_a_hostile_oci PASS [ 0.103s] biomcp-cli entities::article::graph::tests::citation_evidence_follows_the_advertised_next_offset PASS [ 0.096s] biomcp-cli entities::article::graph::tests::citation_evidence_keeps_the_dead_end_when_no_row_matches PASS [ 0.080s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_for_a_resolved_reference PASS [ 0.078s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_for_an_unlinked_marker PASS [ 0.084s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_with_provider_context PASS [ 0.114s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_for_linked_fulltext PASS [ 0.095s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_without_a_normalizable_doi PASS [ 0.089s] biomcp-cli entities::article::graph::tests::citation_evidence_names_a_malformed_identifier_when_the_matched_row_fails_the_shape PASS [ 0.082s] biomcp-cli entities::article::graph::tests::citation_evidence_names_both_providers_when_the_answered_index_lacks_the_edge PASS [ 0.787s] biomcp-cli entities::article::fulltext::tests::html_and_pdf_attempts_classify_transport_and_conversion_failures PASS [ 2.014s] biomcp-cli cache::manager::tests::write_security_tests::put_deadline_transition_is_exactly_at_writer_commit PASS [ 0.056s] biomcp-cli entities::article::graph::tests::citation_evidence_rejects_a_mismatched_page_offset PASS [ 0.106s] biomcp-cli entities::article::graph::tests::citation_evidence_nulls_a_creation_outside_the_shape_and_never_echoes_provider_text PASS [ 0.085s] biomcp-cli entities::article::graph::tests::citation_evidence_provider_context_needs_no_fulltext_request PASS [ 0.064s] biomcp-cli entities::article::graph::tests::citation_evidence_rejects_a_page_with_more_rows_than_the_page_size PASS [ 0.917s] biomcp-cli entities::article::enrichment::tests::metadata_fallback_warns_only_when_no_source_covers_the_row PASS [ 0.046s] biomcp-cli entities::article::graph::tests::citation_evidence_reports_an_unaddressable_index_when_inputs_have_no_doi PASS [ 0.036s] biomcp-cli entities::article::graph::tests::citation_evidence_returns_the_bounded_error_when_the_graph_deadline_expires PASS [ 0.011s] biomcp-cli entities::article::graph::tests::citations_map_semantic_scholar_edges PASS [ 0.009s] biomcp-cli entities::article::graph::tests::empty_pages_follow_provider_next_for_both_directions PASS [ 0.011s] biomcp-cli entities::article::graph::tests::graph_continuation_quotes_the_trimmed_caller_id PASS [ 0.010s] biomcp-cli entities::article::graph::tests::graph_edge_evidence_meta_orders_arguments_per_direction PASS [ 0.070s] biomcp-cli entities::article::graph::tests::citation_evidence_reuses_the_resolved_citing_seed_when_the_cited_seed_is_refused PASS [ 0.010s] biomcp-cli entities::article::graph::tests::graph_page_validation_fails_closed_for_bad_offsets_and_next_values PASS [ 0.010s] biomcp-cli entities::article::graph::tests::graph_pages_preserve_provider_order_and_duplicate_edges PASS [ 0.072s] biomcp-cli entities::article::graph::tests::citation_evidence_stops_after_the_matching_page PASS [ 0.010s] biomcp-cli entities::article::graph::tests::jats_extraction_seam_controls_the_blocking_parse_outcome PASS [ 0.010s] biomcp-cli entities::article::graph::tests::recommendations_map_semantic_scholar_papers PASS [ 0.013s] biomcp-cli entities::article::graph::tests::receipted_provider_only_citation_survives_article_graph_mapping PASS [ 0.010s] biomcp-cli entities::article::graph::tests::references_map_semantic_scholar_edges PASS [ 1.670s] biomcp-cli cli::stale_json_note_tests::a_day_cached_gwas_search_inside_the_day_window_has_no_cache_note PASS [ 0.009s] biomcp-cli entities::article::graph::tests::semantic_scholar_lookup_id_supports_arxiv_and_paper_ids PASS [ 0.011s] biomcp-cli entities::article::identity_verification::tests::canonical_response_subset_ignores_arbitrary_relation_payloads PASS [ 0.010s] biomcp-cli entities::article::identity_verification::tests::empty_identity_anomaly_changes_the_response_digest PASS [ 0.021s] biomcp-cli entities::article::identity_verification::tests::arbitrary_relation_membership_cannot_confirm_typed_pubtator_linkage PASS [ 0.022s] biomcp-cli entities::article::identity_verification::tests::exact_allele_linked_to_another_gene_is_contradictory PASS [ 0.019s] biomcp-cli entities::article::identity_verification::tests::fulltext_export_keys_the_document_by_pmcid_and_confirms PASS [ 0.019s] biomcp-cli entities::article::identity_verification::tests::fulltext_pmcid_key_without_an_agreeing_pmid_is_an_anomaly PASS [ 0.018s] biomcp-cli entities::article::identity_verification::tests::inconsistent_typed_gene_ids_cannot_confirm PASS [ 0.013s] biomcp-cli entities::article::identity_verification::tests::intronic_coordinates_are_not_collapsed_into_a_contradiction PASS [ 0.013s] biomcp-cli entities::article::identity_verification::tests::ldh_confirms_an_annotation_in_the_live_response_shape PASS [ 0.018s] biomcp-cli entities::article::identity_verification::tests::ldh_explicit_requested_caid_wrong_gene_is_contradictory PASS [ 0.015s] biomcp-cli entities::article::identity_verification::tests::ldh_ignores_a_selector_quoted_from_a_supplementary_file PASS [ 0.019s] biomcp-cli entities::article::identity_verification::tests::ldh_unrequested_caid_in_a_multi_caid_annotation_is_ignored PASS [ 0.018s] biomcp-cli entities::article::identity_verification::tests::ldh_wrong_pmcid_is_incomplete_without_a_contradiction PASS [ 0.020s] biomcp-cli entities::article::identity_verification::tests::numeric_pmid_must_agree_with_returned_document_id PASS [ 0.021s] biomcp-cli entities::article::identity_verification::tests::overlong_linkage_fields_are_incomplete_and_ineligible PASS [ 0.015s] biomcp-cli entities::article::identity_verification::tests::receipt_backed_ldh_malformed_capture_is_incomplete_without_a_linkage PASS [ 0.018s] biomcp-cli entities::article::identity_verification::tests::receipt_backed_ldh_direct_capture_confirms_an_article_page_linkage PASS [ 0.013s] biomcp-cli entities::article::identity_verification::tests::requested_coding_or_protein_alias_can_confirm PASS [ 0.022s] biomcp-cli entities::article::identity_verification::tests::repeated_gene_annotations_collapse_into_one_observation PASS [ 0.019s] biomcp-cli entities::article::identity_verification::tests::string_normalized_gene_id_cannot_confirm_typed_linkage PASS [ 0.023s] biomcp-cli entities::article::identity_verification::tests::typed_corresponding_gene_confirms_and_deduplicates PASS [ 0.020s] biomcp-cli entities::article::identity_verification::tests::typed_corresponding_gene_requires_the_returned_pmid PASS [ 0.010s] biomcp-cli entities::article::planner::tests::article_type_limitation_note_tracks_compatible_source_sets PASS [ 0.020s] biomcp-cli entities::article::identity_verification::tests::unavailable_verification_is_incomplete_and_unverified PASS [ 0.021s] biomcp-cli entities::article::identity_verification::tests::typed_linkage_can_span_document_passages PASS [ 0.009s] biomcp-cli entities::article::planner::tests::explicit_article_sources_have_no_cross_provider_enrichment PASS [ 0.009s] biomcp-cli entities::article::planner::tests::litsense2_search_enabled_only_for_explicit_litsense2_source PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_rejects_litsense2_open_access_filter PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_rejects_author_on_incapable_explicit_sources PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_rejects_litsense2_type_filter PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_rejects_litsense2_without_keyword PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_rejects_pubtator_open_access_without_suggesting_pubmed PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_rejects_pubtator_type_and_no_preprints_without_suggesting_pubmed PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_rejects_pubtator_type_with_pubmed_compatible_filters_and_suggests_supported_routes PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_rejects_semantic_scholar_open_access_filter PASS [ 0.007s] biomcp-cli entities::article::planner::tests::planner_rejects_semantic_scholar_type_filter PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_routes_all_to_europepmc_for_strict_filters PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_routes_all_with_author_and_no_preprints_to_europe_only PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_routes_all_with_author_to_author_capable_backends PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_routes_all_with_type_and_no_preprints_to_europe_only PASS [ 0.009s] biomcp-cli entities::article::planner::tests::planner_routes_all_with_type_to_type_capable PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_routes_litsense2_to_litsense2_only PASS [ 0.007s] biomcp-cli entities::article::planner::tests::planner_routes_pubmed_to_pubmed_only PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_routes_semantic_scholar_to_semantic_scholar_only PASS [ 0.008s] biomcp-cli entities::article::planner::tests::semantic_scholar_search_is_disabled_for_author_filter PASS [ 0.006s] biomcp-cli entities::article::planner::tests::semantic_scholar_search_is_enabled_for_explicit_semantic_scholar_source PASS [ 0.007s] biomcp-cli entities::article::planner::tests::semantic_scholar_search_is_enabled_for_federated_queries PASS [ 0.009s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_explicit_litsense2_remains_selectable PASS [ 0.007s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_explicit_pubtator_emits_pubtator_only PASS [ 0.009s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_explicit_semantic_scholar_remains_selectable PASS [ 0.009s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_keyword_all_excludes_litsense2 PASS [ 0.009s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_no_preprints_omits_pubmed PASS [ 0.009s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_reports_federated_sources_and_matches PASS [ 0.008s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_reports_only_author_capable_sources PASS [ 0.009s] biomcp-cli entities::article::planner::tests::summarize_debug_plan_strict_filter_emits_europe_only_strict PASS [ 0.010s] biomcp-cli entities::article::query::tests::build_free_text_article_query_preserves_mixed_semantic_anchors PASS [ 0.010s] biomcp-cli entities::article::query::tests::build_pubmed_esearch_params_allows_federated_windows_above_user_limit PASS [ 0.009s] biomcp-cli entities::article::query::tests::build_pubmed_esearch_params_rejects_federated_window_overflow PASS [ 0.008s] biomcp-cli entities::article::query::tests::build_pubmed_esearch_params_rejects_no_preprints PASS [ 0.007s] biomcp-cli entities::article::query::tests::build_pubmed_esearch_params_rejects_open_access PASS [ 0.008s] biomcp-cli entities::article::query::tests::build_pubmed_search_term_cleans_unfielded_clauses_only PASS [ 0.010s] biomcp-cli entities::article::query::tests::build_pubmed_esearch_params_reuses_article_type_aliases PASS [ 0.008s] biomcp-cli entities::article::query::tests::build_pubmed_search_term_falls_back_for_all_stopword_unfielded_clause PASS [ 0.009s] biomcp-cli entities::article::query::tests::build_pubmed_search_term_keeps_quoted_author_input_inside_author_field PASS [ 0.008s] biomcp-cli entities::article::query::tests::build_search_query_combines_keyword_and_since PASS [ 0.009s] biomcp-cli entities::article::query::tests::build_pubmed_search_term_uses_standalone_not_for_retraction_filter PASS [ 0.009s] biomcp-cli entities::article::query::tests::build_search_query_excludes_retracted_when_requested PASS [ 0.009s] biomcp-cli entities::article::query::tests::build_search_query_keeps_phrase_quoting_for_entity_filters PASS [ 0.008s] biomcp-cli entities::article::query::tests::build_search_query_rejects_unknown_article_type PASS [ 0.010s] biomcp-cli entities::article::query::tests::build_search_query_uses_gene_anchor_field_when_requested PASS [ 0.009s] biomcp-cli entities::article::query::tests::europepmc_keyword_does_not_quote_whitespace PASS [ 0.009s] biomcp-cli entities::article::query::tests::native_query_builders_keep_unrecognized_keyword_punctuation_literal PASS [ 0.013s] biomcp-cli entities::article::query::tests::gene_change_request_matches_the_pubtator_entity_from_its_id PASS [ 0.009s] biomcp-cli entities::article::query::tests::native_query_builders_share_keyword_field_validation PASS [ 0.008s] biomcp-cli entities::article::query::tests::pubtator_sort_sends_param_for_date PASS [ 0.010s] biomcp-cli entities::article::query::tests::pubtator_sort_omits_param_for_relevance PASS [ 0.021s] biomcp-cli entities::article::query::tests::gene_plus_change_matching_survives_a_db_id_rsid PASS [ 0.008s] biomcp-cli entities::article::query::tests::strict_variant_templates_quote_and_escape_provider_inputs PASS [ 0.011s] biomcp-cli entities::article::query::tests::rsid_request_matches_the_pubtator_entity_from_its_db_id PASS [ 0.020s] biomcp-cli entities::article::query::tests::pubtator_variant_candidate_requires_source_proof_for_gene_and_protein PASS [ 0.013s] biomcp-cli entities::article::query::tests::rsid_match_keeps_the_entity_display_name_out_of_the_comparison PASS [ 0.009s] biomcp-cli entities::article::query::tests::strip_pubmed_stopwords_cleans_question_patterns PASS [ 0.009s] biomcp-cli entities::article::query::tests::ticket_406_myd88_exact_protein_alias_article_precision PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_coverage_counts_title_and_abstract_duplicate_once PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_custom_weights_shift_ordering PASS [ 0.019s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_coverage_uses_full_counts_before_public_counters_saturate PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_default_weights_orders_example_one PASS [ 0.403s] biomcp-cli entities::article::graph::tests::citation_evidence_rejects_equal_and_decreasing_next_values PASS [ 0.014s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_entity_only_falls_back_without_nan PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_exact_composite_tie_uses_stable_identifier_order PASS [ 0.014s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_lexical_coverage_beats_a_high_citation_one_anchor_match PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_makes_exactly_one_calculator_call_per_candidate PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_scoring_is_zero_safe PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_uses_litsense2_signal_for_semantic_score PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::hybrid_zero_anchor_lexical_score_is_finite_zero PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::lexical_mode_matches_current_ordering PASS [ 0.011s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::semantic_mode_ignores_non_litsense2_raw_scores PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::hybrid::semantic_mode_prefers_score_before_lexical_fallback PASS [ 0.014s] biomcp-cli entities::article::ranking::tests::calibration::rescue::anchor_count_pubmed_rescue_surfaces_above_higher_title_hit_competitor PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::rescue::exactly_one_anchor_hit_pubmed_unique_position_zero_is_rescued PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::calibration::rescue::mesh_synonym_zero_overlap_pubmed_row_does_not_rescue_above_literal_competitor PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::rescue::pubmed_led_row_rescues_when_pubmed_position_is_strictly_best PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::calibration::rescue::pubmed_nonfirst_position_does_not_rescue PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::calibration::rescue::rescued_rows_still_use_lexical_and_citation_tiebreaks PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::calibration::rescue::shared_source_row_with_better_non_pubmed_position_does_not_rescue PASS [ 0.015s] biomcp-cli entities::article::ranking::tests::calibration::rescue::rescue_metadata_records_kind_and_position PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::calibration::rescue::shared_source_tie_does_not_count_as_pubmed_led PASS [ 0.441s] biomcp-cli entities::article::graph::tests::citation_evidence_returns_the_bounded_error_when_the_bridge_stalls PASS [ 0.014s] biomcp-cli entities::article::ranking::tests::calibration::rescue::zero_overlap_pubmed_unique_position_zero_is_not_rescued PASS [ 0.011s] biomcp-cli entities::article::ranking::tests::directness::directness_ranking_uses_full_title_and_token_boundaries PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::directness::directness_ranking_prefers_cue_then_citation_then_source_local_position PASS [ 0.014s] biomcp-cli entities::article::ranking::tests::keyword::compound_name_variants_match_symmetrically_in_ranking PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::keyword::keyword_tokenization_decomposes_multi_word_into_separate_anchors PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::keyword::keyword_tokenization_dedups_structured_filter_overlap PASS [ 0.008s] biomcp-cli entities::article::ranking::tests::policy::article_relevance_ranking_policy_formats_modes PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::keyword::multi_concept_keyword_all_tokens_in_title_scores_tier3 PASS [ 0.008s] biomcp-cli entities::article::ranking::tests::policy::search_article_ranking_flags_validate_cleanly PASS [ 0.008s] biomcp-cli entities::article::ranking::tests::policy::default_ranking_mode_depends_on_keyword_presence PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::keyword::multi_concept_keyword_partial_match_scores_nonzero PASS [ 0.009s] biomcp-cli entities::article::search::deadline::tests::deadline_budget_reads_the_injected_clock PASS [ 0.008s] biomcp-cli entities::article::search::deadline::tests::federated_leg_timeout_reads_the_injected_clock PASS [ 0.008s] biomcp-cli entities::article::search::tests::deadline::both_primaries_failing_prefers_a_deadline_error_over_the_fast_failure PASS [ 0.010s] biomcp-cli entities::article::search::tests::deadline::deadline_recognition_covers_the_io_cancellation_shape PASS [ 0.008s] biomcp-cli entities::article::search::tests::deadline::deep_offset_is_refused_on_every_sort_before_any_request PASS [ 0.017s] biomcp-cli entities::article::search::tests::deadline::construction_under_a_held_epoch_lock_honors_the_deadline PASS [ 0.011s] biomcp-cli entities::article::search::tests::deadline::held_fixture_replies_self_release_at_their_own_bound PASS [ 0.142s] biomcp-cli entities::article::search::tests::deadline::healthy_federated_search_keeps_output_shape_and_records_timings PASS [ 0.010s] biomcp-cli entities::article::search::tests::finalizer::federated_collection_keeps_available_rows_when_semantic_scholar_is_unavailable PASS [ 0.010s] biomcp-cli entities::article::search::tests::finalizer::pubmed_only_rows_use_common_finalizer_for_sorting PASS [ 0.009s] biomcp-cli entities::article::search::tests::finalizer::semantic_scholar_status_tracker_keeps_batch_failure_non_fatal PASS [ 0.011s] biomcp-cli entities::article::search::tests::integration::federated_merge_includes_pubmed_rows_in_matched_sources PASS [ 0.013s] biomcp-cli entities::article::search::tests::integration::federated_merge_keeps_non_europepmc_matches_under_default_retraction_filter PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::federated_offset_applied_after_merge_not_per_leg PASS [ 0.009s] biomcp-cli entities::article::search::tests::merge::federated_sort_orders_merged_results_for_citations_and_date PASS [ 0.009s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_dedups_with_pubtator_priority PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_preserves_known_retraction_status_from_later_duplicate PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_records_litsense2_in_matched_sources PASS [ 0.009s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_returns_first_error_when_both_fail PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_returns_surviving_europe_leg PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_returns_surviving_pubtator_leg PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_sorts_surviving_leg_before_offset PASS [ 0.009s] biomcp-cli entities::article::search::tests::raw_federated_acquisition_marks_known_and_unknown_route_caps PASS [ 0.010s] biomcp-cli entities::article::search::tests::raw_federated_acquisition_retains_auxiliary_rows_when_primary_sources_fail PASS [ 0.122s] biomcp-cli entities::article::search::tests::relevance_paging::europepmc_relevance_offset_page_lines_up_with_cursor_page PASS [ 0.011s] biomcp-cli entities::article::search::tests::type_capable::both_available_sources_survive_in_source_order_without_degradation PASS [ 0.010s] biomcp-cli entities::article::search::tests::type_capable::dual_failure_preserves_europe_pmc_error PASS [ 0.009s] biomcp-cli entities::article::search::tests::type_capable::dual_timeout_returns_deterministic_source_unavailable_error PASS [ 0.009s] biomcp-cli entities::article::search::tests::type_capable::europe_pmc_rows_and_total_survive_pubmed_failure PASS [ 0.009s] biomcp-cli entities::article::search::tests::type_capable::pubmed_error_is_used_when_europe_pmc_timed_out PASS [ 0.010s] biomcp-cli entities::article::search::tests::type_capable::pubmed_rows_and_total_survive_europe_pmc_failure PASS [ 0.009s] biomcp-cli entities::article::search::tests::validate_search_page_request_rejects_invalid_inputs_before_backend_io PASS [ 0.009s] biomcp-cli entities::article::supplement_search::tests::an_empty_archive_is_reported_as_a_read_file PASS [ 0.263s] biomcp-cli entities::article::supplement_search::tests::extraction_timeout_kills_and_reaps_the_worker PASS [ 0.009s] biomcp-cli entities::article::supplement_search::tests::unicode_search_context_fits_the_byte_limit PASS [ 0.009s] biomcp-cli entities::article::tests::article_error_copy_and_warn_threshold_match_contract PASS [ 0.010s] biomcp-cli entities::article::tests::article_ranking_mode_parses_supported_values PASS [ 0.009s] biomcp-cli entities::article::tests::article_search_result_serializes_unknown_retraction_as_null PASS [ 0.010s] biomcp-cli entities::article::tests::article_section_names_include_tldr PASS [ 0.009s] biomcp-cli entities::article::tests::article_section_outcomes_default_to_keyed_not_requested_and_reject_foreign_keys PASS [ 0.009s] biomcp-cli entities::article::tests::article_sort_default_is_relevance PASS [ 0.009s] biomcp-cli entities::article::tests::article_sort_parses_supported_values PASS [ 0.009s] biomcp-cli entities::article::tests::article_source_filter_parses_supported_values PASS [ 0.008s] biomcp-cli entities::article::tests::article_source_litsense2_display_name PASS [ 1.551s] biomcp-cli entities::article::graph::tests::citation_evidence_marks_the_index_unavailable_when_the_deadline_leaves_no_room PASS [ 0.009s] biomcp-cli entities::article::tests::article_source_pubmed_display_name PASS [ 0.010s] biomcp-cli entities::article::tests::empty_filters_default_sort_is_relevance PASS [ 0.009s] biomcp-cli entities::article::tests::graph_and_recommendation_nonempty_shapes_remain_compatible PASS [ 0.009s] biomcp-cli entities::article::tests::graph_and_recommendation_primary_collections_serialize_when_empty PASS [ 0.009s] biomcp-cli entities::article::tests::invalid_article_id_error_names_supported_types_and_publisher_limit PASS [ 0.010s] biomcp-cli entities::article::tests::requested_fulltext_coverage_is_additive_and_uses_closed_values PASS [ 0.008s] biomcp-cli entities::article::tests::search_page_rejects_max_per_source_above_limit_before_backend_planning PASS [ 0.008s] biomcp-cli entities::article::tests::search_page_rejects_unknown_article_type_before_backend_planning PASS [ 0.020s] biomcp-cli entities::article::variant_search::tests::ambiguous_fallback_uses_only_request_compatible_shared_source_aliases PASS [ 0.022s] biomcp-cli entities::article::variant_search::tests::annotation_pre_call_stop_is_attributed_to_pubtator PASS [ 0.013s] biomcp-cli entities::article::variant_search::tests::article_search_refuses_a_bare_clinvar_variation_id PASS [ 0.021s] biomcp-cli entities::article::variant_search::tests::authoritative_refseq_strict_plans_include_only_known_supplied_proteins PASS [ 0.021s] biomcp-cli entities::article::variant_search::tests::candidate_trace_is_capped_and_serializes_only_stage_facts PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::canonical_equivalence_aggregation_uses_set_based_state_precedence PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::canonical_aliases_fill_only_unused_strict_alias_slots PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::canonical_equivalence_queries_require_explicit_versioned_refseq_inputs PASS [ 0.018s] biomcp-cli entities::article::variant_search::tests::citation_pre_call_stop_is_attributed_to_myvariant PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::compact_projection_omits_verbose_fields_and_preserves_unknown_retraction PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::confirmed_car_genomic_aliases_travel_with_the_gene_symbol PASS [ 0.021s] biomcp-cli entities::article::variant_search::tests::debug_plan_reports_strict_route_for_resolved_and_ambiguous_union_requests PASS [ 1.214s] biomcp-cli entities::article::search::tests::deadline::deadline_expiry_without_rows_names_the_deadline_error PASS [ 1.213s] biomcp-cli entities::article::search::tests::deadline::fast_pubtator_failure_does_not_hide_the_deadline_error PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::debug_plan_work_allocation_reconciles_parent_budgets_and_recorded_routes PASS [ 0.022s] biomcp-cli entities::article::variant_search::tests::empty_debug_plan_has_complete_candidate_trace PASS [ 3.034s] biomcp-cli cli::update::tests::archive_larger_than_shared_default_reaches_verification_and_extraction PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::exact_and_identity_request_allowances_are_shared_and_bounded PASS [ 2.264s] biomcp-cli entities::article::graph::tests::citation_evidence_keeps_the_dead_end_when_the_index_fails PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::exact_lexical_allowance_survives_strict_budget_exhaustion PASS [ 0.187s] biomcp-cli entities::article::variant_search::tests::empty_search_where_every_source_answered_stays_an_ok_result PASS [ 1.515s] biomcp-cli entities::article::search::tests::deadline::single_backend_deadline_keeps_fetched_rows_and_names_the_source PASS [ 0.110s] biomcp-cli entities::article::variant_search::tests::gene_change_search_keeps_the_pubtator_entity_and_searches_by_its_id PASS [ 0.013s] biomcp-cli entities::article::variant_search::tests::generated_and_explicit_request_ids_share_duplicate_check PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::identity_verification_allowance_survives_strict_budget_exhaustion PASS [ 0.014s] biomcp-cli entities::article::variant_search::tests::invalid_items_are_retained_without_provider_execution PASS [ 0.017s] biomcp-cli entities::article::variant_search::tests::invocation_deadline_stops_new_provider_work_and_reports_one_scope PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::item_and_request_work_budgets_stop_at_fifty_and_five_hundred PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::item_errors_preserve_runtime_error_classification PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::ldh_direct_annotation_fetches_stop_after_ten_per_item PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::ldh_medium_lookup_is_one_per_item_and_survives_an_exhausted_item_budget PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::lexical_alias_budget_preserves_the_requested_identity_and_reports_truncation PASS [ 0.226s] biomcp-cli entities::article::variant_search::tests::exact_mode_sends_one_phrase_quoted_query_per_source_without_resolution PASS [ 3.381s] biomcp-cli cli::tests::printed_card_commands::braf_v600e_card_prints_follow_ups_on_the_headline_coordinate PASS [ 0.113s] biomcp-cli entities::article::variant_search::tests::litvar_drops_a_non_matching_autocomplete_entry PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::missing_confirmed_record_during_citation_hydration_is_unavailable PASS [ 0.022s] biomcp-cli entities::article::variant_search::tests::mixed_usable_and_terminal_hard_batch_preserves_items_and_succeeds PASS [ 0.706s] biomcp-cli entities::article::variant_search::tests::debug_plan_reports_yield_per_alias_per_source_with_cut_lists PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::non_object_batch_item_is_rejected PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::ordered_executor_never_runs_more_than_two_items PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::provider_plan_reports_mixed_outcomes_and_unknown_cache_truthfully PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::ranking_counts_only_the_best_alias_position_per_route_and_provider PASS [ 0.148s] biomcp-cli entities::article::variant_search::tests::mid_route_expiry_preserves_materialized_units_across_strategy_identity_matrix PASS [ 3.112s] biomcp-cli entities::article::graph::tests::admission::citation_evidence_deadline_bounds_late_jats_workers_under_one_permit PASS [ 0.011s] biomcp-cli entities::article::variant_search::tests::recorded_provider_calls_drive_public_and_debug_terminal_statuses PASS [ 0.011s] biomcp-cli entities::article::variant_search::tests::refseq_exact_aliases_are_only_caller_literal_forms PASS [ 0.017s] biomcp-cli entities::article::variant_search::tests::resolved_exact_aliases_include_validated_source_forms_once PASS [ 0.130s] biomcp-cli entities::article::variant_search::tests::no_entity_annotation_run_names_the_miss_instead_of_complete_empty PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::source_work_precedence_distinguishes_timeout_partial_and_unstarted PASS [ 0.024s] biomcp-cli entities::article::variant_search::tests::strict_provider_queries_keep_coding_collisions_distinct PASS [ 0.016s] biomcp-cli entities::article::variant_search::tests::structured_genomic_identity_is_the_resolution_lookup_key PASS [ 0.020s] biomcp-cli entities::article::variant_search::tests::structured_identity_accepts_only_documented_anchors PASS [ 0.012s] biomcp-cli entities::article::variant_search::tests::structured_input_enforces_byte_count_item_count_and_duplicate_ids PASS [ 0.114s] biomcp-cli entities::article::variant_search::tests::rsid_search_keeps_the_pubtator_entity_and_searches_by_its_id PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::terminal_reconciliation_reports_residual_materialized_work_as_logical_cap PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::terminal_state_does_not_invent_an_internal_stop_for_a_provider_outage PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::terminal_state_is_complete_and_untruncated_after_an_auxiliary_budget_stop PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::terminal_state_is_complete_when_pagination_withholds_candidates PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::terminal_state_is_incomplete_and_truncated_when_requested_work_is_unperformed PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::transitive_merge_retains_associated_variant_provenance PASS [ 4.251s] biomcp-cli cli::discover::tests::discover_inline_search_failure_propagates PASS [ 0.209s] biomcp-cli entities::article::variant_search::tests::real_car_and_ldh_captures_confirm_tp53_article_identity PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::usable_partial_degradation_stays_nonterminal PASS [ 0.019s] biomcp-cli entities::article::variant_search::tests::visible_candidate_trace_retains_returned_pmid_when_prefix_is_full PASS [ 0.009s] biomcp-cli entities::author::detail_tests::detail_requires_matching_decimal_id_and_nonblank_name PASS [ 0.018s] biomcp-cli entities::article::variant_search::tests::zero_deadline_ledger_uses_independent_strategy_and_identity_oracles PASS [ 0.011s] biomcp-cli entities::author::detail_tests::provider_failure_does_not_expose_response_body PASS [ 0.011s] biomcp-cli entities::author::detail_tests::detail_serialization_is_allowlisted_and_has_required_metadata_arrays PASS [ 0.011s] biomcp-cli entities::author::papers::full_tests::admission_is_shared_between_compact_and_rich_views PASS [ 0.010s] biomcp-cli entities::author::papers::full_tests::evidence_url_encoder_matches_the_frozen_url_contract PASS [ 0.010s] biomcp-cli entities::author::papers::full_tests::frozen_rich_object_has_exactly_the_contract_keys_and_values PASS [ 0.011s] biomcp-cli entities::author::papers::full_tests::nullability_matrix_preserves_empty_false_zero_and_list_distinctions PASS [ 0.010s] biomcp-cli entities::author::papers::full_tests::opaque_ids_get_urls_but_never_article_follow_ups PASS [ 0.010s] biomcp-cli entities::author::papers::full_tests::rich_follow_ups_prefer_pmid_doi_arxiv_then_hex_paper_id PASS [ 0.011s] biomcp-cli entities::author::papers::full_tests::wrong_typed_external_ids_fail_the_complete_command PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::canonical_identifier_normalizes_every_recognized_kind PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::an_orcid_offset_above_ten_thousand_is_a_static_rejection PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::cross_group_dedupe_drops_only_on_recognized_identity PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::excluded_location_identifiers_never_reach_the_projected_paper PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::full_mode_on_an_orcid_id_is_rejected_with_zero_requests PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::lexical_first_normalized_value_wins_the_flattened_slot PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::orcid_page_bounds_pin_first_middle_terminal_and_beyond_total PASS [ 0.011s] biomcp-cli entities::author::papers::orcid_works_tests::identifier_lists_preserve_unrecognized_types_in_first_occurrence_order PASS [ 0.009s] biomcp-cli entities::author::papers::wire_tests::command_deadline_is_thirty_five_seconds PASS [ 0.011s] biomcp-cli entities::author::papers::tests::provider_article_ids_are_shell_quoted_in_next_commands PASS [ 0.011s] biomcp-cli entities::author::papers::orcid_works_tests::orcid_paper_projects_the_frozen_shape_with_row_command_priority PASS [ 2.746s] biomcp-cli entities::article::graph::tests::citation_evidence_names_both_providers_and_reasons_when_both_refuse PASS [ 0.047s] biomcp-cli entities::author::papers::wire_tests::stalled_request_future_fails_at_the_absolute_deadline_without_late_output PASS [ 0.011s] biomcp-cli entities::author::search::tests::mapping_distinguishes_healthy_empty_and_unavailable PASS [ 0.009s] biomcp-cli entities::author::search::tests::mapping_retains_valid_rows_and_degrades_malformed_rows PASS [ 0.010s] biomcp-cli entities::author::tests::orcid_ids_accept_exact_checksummed_forms_and_round_trip PASS [ 0.010s] biomcp-cli entities::author::tests::orcid_ids_reject_every_malformed_category_with_one_static_message PASS [ 0.009s] biomcp-cli entities::author::tests::provider_ids_are_strict_and_round_trip PASS [ 0.010s] biomcp-cli entities::author::tests::public_serialization_is_allowlisted PASS [ 0.118s] biomcp-cli entities::author::papers::wire_tests::compact_and_rich_request_exactly_one_page_and_never_prefetch_next PASS [ 0.012s] biomcp-cli entities::cell_line::chembl::tests::a_failed_lookup_completes_the_section_as_unavailable PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::a_failed_status_call_falls_back_to_the_retrieval_time PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::a_record_completes_the_section_as_data PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::an_accession_chembl_does_not_list_makes_no_assay_request PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::one_record_asks_for_exactly_one_assay_count PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::the_all_selector_leaves_the_chembl_section_out PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::the_k562_record_answers_through_the_accession_not_the_name PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::the_molm13_record_carries_its_ids_and_assay_count PASS [ 0.009s] biomcp-cli entities::cell_line::chembl::tests::the_section_list_names_chembl PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::the_release_fixture_sets_data_as_of_and_its_kind PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::a_body_over_the_cap_is_unavailable_with_the_size_message PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::a_cell_line_pharmacodb_does_not_hold_completes_the_section_as_empty PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::an_accession_mismatch_is_unavailable_and_renders_no_payload PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::an_unknown_section_lists_drug_response_for_cell_lines PASS [ 0.029s] biomcp-cli entities::cell_line::pharmacodb::tests::an_empty_section_says_so_and_prints_no_counts_line PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::counts_attach_as_data_and_carry_no_rows PASS [ 0.009s] biomcp-cli entities::cell_line::pharmacodb::tests::the_section_is_asked_for_by_name_and_all_leaves_it_out PASS [ 0.029s] biomcp-cli entities::cell_line::pharmacodb::tests::the_all_card_is_byte_identical_with_and_without_the_payload PASS [ 0.024s] biomcp-cli entities::cell_line::pharmacodb::tests::the_section_prints_the_heading_the_counts_and_the_next_command PASS [ 0.009s] biomcp-cli entities::cell_line::tests::a_failed_release_read_names_the_retrieval_time_and_no_release PASS [ 0.011s] biomcp-cli entities::cell_line::tests::a_hybrid_record_keeps_every_species_it_lists PASS [ 0.011s] biomcp-cli entities::cell_line::tests::a_hyphenated_query_merges_both_windows_into_one_row_per_accession PASS [ 0.027s] biomcp-cli entities::cell_line::tests::a_full_window_reports_an_unknown_total_and_one_note PASS [ 0.009s] biomcp-cli entities::cell_line::tests::a_query_that_names_an_accession_is_recognized_as_one PASS [ 0.012s] biomcp-cli entities::cell_line::tests::a_line_without_a_link_prints_the_key_as_an_empty_list PASS [ 0.013s] biomcp-cli entities::cell_line::tests::a_record_recorded_without_variants_completes_the_section_as_empty PASS [ 0.012s] biomcp-cli entities::cell_line::tests::a_record_with_variants_completes_the_section_as_data PASS [ 0.010s] biomcp-cli entities::cell_line::tests::a_short_window_reports_its_row_count_and_no_note PASS [ 0.010s] biomcp-cli entities::cell_line::tests::a_source_id_that_names_two_lines_asks_for_one_accession PASS [ 0.007s] biomcp-cli entities::cell_line::tests::all_turns_on_every_section PASS [ 0.009s] biomcp-cli entities::cell_line::tests::an_unknown_accession_is_not_found_and_names_the_search PASS [ 0.756s] biomcp-cli entities::article::variant_search::tests::litvar_papers_merge_into_the_union_with_attribution PASS [ 0.010s] biomcp-cli entities::cell_line::tests::an_unknown_section_fails_before_any_request PASS [ 0.008s] biomcp-cli entities::cell_line::tests::an_unmatched_source_id_is_not_found_and_names_the_search PASS [ 0.009s] biomcp-cli entities::cell_line::tests::different_lines_do_not_normalize_together PASS [ 0.322s] biomcp-cli entities::author::papers::wire_tests::malformed_pages_fail_the_complete_command_with_no_partial_output PASS [ 0.011s] biomcp-cli entities::cell_line::tests::each_recorded_source_id_resolves_to_the_same_accession PASS [ 0.010s] biomcp-cli entities::cell_line::tests::each_spelling_puts_its_line_first_as_an_exact_match PASS [ 0.011s] biomcp-cli entities::cell_line::tests::every_common_spelling_of_one_line_normalizes_to_the_same_string PASS [ 0.011s] biomcp-cli entities::cell_line::tests::kg1_returns_all_three_exact_lines_with_the_human_identifier_first PASS [ 0.008s] biomcp-cli entities::cell_line::tests::kg_1_merges_its_two_windows_with_no_duplicate_rows PASS [ 0.007s] biomcp-cli entities::cell_line::tests::the_attribution_line_names_the_release_the_licence_and_the_citation PASS [ 0.013s] biomcp-cli entities::cell_line::tests::mv4_11_lists_its_depmap_cosmic_and_chembl_links PASS [ 0.010s] biomcp-cli entities::cell_line::tests::nb4_puts_the_identifier_match_before_the_synonym_match PASS [ 0.011s] biomcp-cli entities::cell_line::tests::the_card_reads_identity_species_disease_category_and_sex PASS [ 0.012s] biomcp-cli entities::cell_line::tests::the_xrefs_section_lists_the_join_keys_and_leaves_the_sample_rows_out PASS [ 0.013s] biomcp-cli entities::cell_line::tests::the_release_fixture_reports_the_measured_release PASS [ 0.013s] biomcp-cli entities::cell_line::tests::the_variants_section_lists_the_curated_rows_as_published PASS [ 0.010s] biomcp-cli entities::diagnostic::search::tests::cross_condition_match_priority_drives_sort_before_paging PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::disease_match_prefers_requested_then_canonical_then_synonym PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::disease_match_uses_term_priority_across_all_conditions PASS [ 0.010s] biomcp-cli entities::diagnostic::search::tests::disease_filter_validation_rejects_controls_and_oversize_before_normalization PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::disease_phrase_matches_accepts_word_and_phrase_boundaries PASS [ 0.006s] biomcp-cli entities::diagnostic::search::tests::disease_phrase_matches_rejects_partial_words_and_keeps_scanning PASS [ 0.008s] biomcp-cli entities::diagnostic::search::tests::disease_phrase_matches_handles_utf8_boundaries_without_panicking PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::disease_sort_ranks_who_requested_then_canonical_then_provider_synonym_order PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::normalized_filters_reject_short_disease_filter PASS [ 0.009s] biomcp-cli entities::diagnostic::tests::diagnostic_source_filter_from_flag_accepts_expected_values PASS [ 0.014s] biomcp-cli entities::diagnostic::tests::get_diagnostic_genes_returns_full_deduped_broad_panel_list PASS [ 0.013s] biomcp-cli entities::diagnostic::tests::get_who_ivd_keeps_summary_and_resolves_supported_sections PASS [ 0.017s] biomcp-cli entities::diagnostic::tests::get_keeps_summary_by_default_and_requested_sections_as_options PASS [ 0.013s] biomcp-cli entities::diagnostic::tests::get_who_ivd_rejects_unsupported_sections_with_recovery_hint PASS [ 0.012s] biomcp-cli entities::diagnostic::tests::regulatory_overlay_bounds_unavailable_work_and_preserves_data PASS [ 0.010s] biomcp-cli entities::diagnostic::tests::regulatory_rows_dedupe_pma_supplements_and_keep_latest_decision PASS [ 0.015s] biomcp-cli entities::diagnostic::tests::search_page_all_source_uses_unknown_total_when_both_sources_match PASS [ 0.014s] biomcp-cli entities::diagnostic::tests::search_page_applies_conjunctive_filters_and_stable_ordering PASS [ 0.009s] biomcp-cli entities::diagnostic::tests::search_page_rejects_explicit_who_gene_filter PASS [ 0.016s] biomcp-cli entities::diagnostic::tests::search_page_disease_filter_requires_word_boundary PASS [ 0.010s] biomcp-cli entities::diagnostic::tests::search_page_rejects_short_disease_filter PASS [ 0.010s] biomcp-cli entities::diagnostic::tests::search_page_requires_at_least_one_filter PASS [ 0.011s] biomcp-cli entities::diagnostic::tests::search_page_returns_who_rows_for_disease_filter PASS [ 0.009s] biomcp-cli entities::diagnostic::tests::search_query_summary_uses_documented_filter_order PASS [ 0.009s] biomcp-cli entities::diagnostic::tests::who_ivd_regulatory_overlay_returns_empty_vec_on_no_match PASS [ 0.010s] biomcp-cli entities::discover::tests::a_gene_shaped_query_never_types_a_drug_label_as_a_gene PASS [ 0.010s] biomcp-cli entities::discover::tests::alias_fallback_classifier_returns_canonical_for_exact_gene_alias PASS [ 0.009s] biomcp-cli entities::discover::tests::alias_fallback_classifier_returns_none_without_discovery_signal PASS [ 0.010s] biomcp-cli entities::discover::tests::alias_fallback_memo_keys_carry_the_source_address PASS [ 0.019s] biomcp-cli entities::discover::tests::alias_fallback_classifier_returns_ambiguous_for_type_mismatch PASS [ 0.007s] biomcp-cli entities::discover::tests::compact_previews_bound_multibyte_labels_and_oversized_values PASS [ 0.013s] biomcp-cli entities::discover::tests::alias_fallback_memo_stays_bounded PASS [ 0.012s] biomcp-cli entities::discover::tests::discover_gene_function_with_topic_preserves_meaningful_keyword PASS [ 0.012s] biomcp-cli entities::discover::tests::discover_gene_function_without_topic_keeps_gene_only_article_search PASS [ 0.012s] biomcp-cli entities::discover::tests::discover_general_gene_topic_adds_filtered_article_search PASS [ 0.010s] biomcp-cli entities::discover::tests::discover_request_records_alias_fallback_no_cache_intent PASS [ 3.920s] biomcp-cli entities::article::detail::tests::completed_pubtator_enrichment_survives_later_europepmc_failure PASS [ 0.012s] biomcp-cli entities::discover::tests::discover_request_records_command_intent_before_clients PASS [ 0.011s] biomcp-cli entities::discover::tests::discover_request_rejects_oversized_query_before_clients PASS [ 0.012s] biomcp-cli entities::discover::tests::drug_safety_queries_beat_treatment_language PASS [ 0.012s] biomcp-cli entities::discover::tests::empty_results_add_review_article_fallback_note_and_command PASS [ 0.011s] biomcp-cli entities::discover::tests::exact_article_keyword_resolver_accepts_gene_drug_and_disease_docs PASS [ 0.016s] biomcp-cli entities::discover::tests::empty_discover_result_quotes_shell_metacharacters_in_json_next_command PASS [ 0.010s] biomcp-cli entities::discover::tests::exact_article_keyword_resolver_canonicalizes_ols_aliases PASS [ 0.010s] biomcp-cli entities::discover::tests::exact_article_keyword_resolver_rejects_prefix_unsupported_and_ambiguous_matches PASS [ 0.010s] biomcp-cli entities::discover::tests::exact_article_keyword_resolver_reports_alias_to_canonical_match PASS [ 0.010s] biomcp-cli entities::discover::tests::exact_gene_query_promotes_hgnc_result PASS [ 0.012s] biomcp-cli entities::discover::tests::gene_disease_queries_prefer_search_all_orientation PASS [ 0.011s] biomcp-cli entities::discover::tests::gene_function_queries_prefer_get_gene PASS [ 0.011s] biomcp-cli entities::discover::tests::hpo_backed_symptom_concepts_route_to_phenotype_search_first PASS [ 0.010s] biomcp-cli entities::discover::tests::low_confidence_noncanonical_paths_append_article_search_once_when_missing PASS [ 0.008s] biomcp-cli entities::discover::tests::malformed_candidates_do_not_consume_the_requested_offset PASS [ 0.009s] biomcp-cli entities::discover::tests::normalize_primary_id_accepts_ols4_underscore_short_forms PASS [ 0.011s] biomcp-cli entities::discover::tests::merge_prefers_shared_xrefs PASS [ 0.010s] biomcp-cli entities::discover::tests::ols4_timeout_absorbs_slow_primary_discover_blips PASS [ 0.009s] biomcp-cli entities::discover::tests::ols_doc_identifier_falls_back_to_short_form_when_obo_id_is_empty PASS [ 0.021s] biomcp-cli entities::discover::tests::low_confidence_variant_adds_note_without_duplicate_article_fallback PASS [ 0.008s] biomcp-cli entities::discover::tests::ols_hpo_identifier_overrides_non_hp_prefix_to_symptom PASS [ 0.012s] biomcp-cli entities::discover::tests::page_past_returned_concepts_does_not_retain_hidden_guidance PASS [ 0.012s] biomcp-cli entities::discover::tests::relational_mef2_query_redirects_when_only_weak_general_hits_remain PASS [ 0.012s] biomcp-cli entities::discover::tests::single_entity_disease_queries_stay_stable_after_general_filtering PASS [ 0.012s] biomcp-cli entities::discover::tests::relational_warfarin_query_redirects_instead_of_returning_collocation_noise PASS [ 0.011s] biomcp-cli entities::discover::tests::single_entity_gene_alias_queries_stay_stable_after_general_filtering PASS [ 0.011s] biomcp-cli entities::discover::tests::symptom_disease_lookup_query_strips_intent_prefixes PASS [ 0.012s] biomcp-cli entities::discover::tests::symptom_queries_about_disease_prefer_phenotype_section PASS [ 0.009s] biomcp-cli entities::discover::tests::symptom_search_with_hpo_ids_suggests_capped_phenotype_bridge_first PASS [ 0.010s] biomcp-cli entities::discover::tests::symptom_queries_keep_search_suggestions_and_plain_language PASS [ 0.010s] biomcp-cli entities::discover::tests::ticket_400_request_command_discover_fields_drive_resolve_boundaries PASS [ 0.011s] biomcp-cli entities::discover::tests::treatment_queries_prefer_structured_indication_search PASS [ 0.010s] biomcp-cli entities::discover::tests::trial_intent_prefers_a_mentioned_disease_over_a_gene PASS [ 0.009s] biomcp-cli entities::discover::tests::trial_intent_uses_a_mentioned_symptom_after_unmentioned_disease_noise PASS [ 0.010s] biomcp-cli entities::discover::tests::trial_intent_uses_gene_when_other_resolved_labels_are_unmentioned PASS [ 0.012s] biomcp-cli entities::discover::tests::trial_intent_suppresses_plain_language PASS [ 0.011s] biomcp-cli entities::discover::tests::typed_alias_identity_leads_when_ontology_omits_hgnc PASS [ 0.009s] biomcp-cli entities::disease::article_links::tests::a_title_that_shares_words_without_all_concept_words_still_links PASS [ 0.009s] biomcp-cli entities::disease::article_links::tests::an_exact_or_broader_card_title_is_not_narrower PASS [ 0.012s] biomcp-cli entities::discover::tests::weak_umls_gene_label_never_becomes_an_exact_lookup PASS [ 0.013s] biomcp-cli entities::discover::tests::umbrella_disease_queries_stay_ambiguous_and_search_oriented PASS [ 0.011s] biomcp-cli entities::disease::article_links::tests::skin_neoplasms_refuses_the_benign_card_because_its_title_narrows PASS [ 0.009s] biomcp-cli entities::disease::associations::tests::civic_gene_symbol_extraction_ignores_protein_change_tokens PASS [ 0.011s] biomcp-cli entities::disease::associations::tests::augment_genes_with_opentargets_respects_twenty_gene_cap PASS [ 0.012s] biomcp-cli entities::disease::associations::tests::augment_genes_with_opentargets_merges_sources_without_duplicates PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::apply_requested_sections_clears_clinical_features_when_not_requested PASS [ 0.009s] biomcp-cli entities::disease::enrichment::tests::apply_requested_sections_clears_funding_when_not_requested PASS [ 0.009s] biomcp-cli entities::disease::enrichment::tests::disease_diagnostics_unavailable_sets_note PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::funding_query_prefers_free_text_lookup PASS [ 0.012s] biomcp-cli entities::disease::enrichment::tests::disease_diagnostics_section_populates_from_rows PASS [ 0.011s] biomcp-cli entities::disease::enrichment::tests::enrich_sparse_disease_identity_prefers_exact_ols4_match PASS [ 4.944s] biomcp-cli cli::article::tests::outage::zero_rows_with_semantic_scholar_down_exits_one_with_source_unavailable PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::funding_query_uses_canonical_name_for_identifier_lookups PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::survival_catalog_resolution_sets_unavailable_note_when_catalog_fails PASS [ 0.012s] biomcp-cli entities::disease::enrichment::tests::survival_catalog_resolution_sets_truthful_note_for_unmapped_disease PASS [ 0.011s] biomcp-cli entities::disease::enrichment::tests::ticket_589_id_only_disease_enrichments_are_inapplicable_without_credit PASS [ 0.009s] biomcp-cli entities::disease::enrichment::tests::top_genes_label_joins_both_fallback_sources PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::top_genes_label_joins_the_disgenet_seed_with_other_fallbacks PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::top_genes_label_names_the_disgenet_seed_from_the_mydisease_hit PASS [ 0.009s] biomcp-cli entities::disease::enrichment::tests::top_genes_label_names_the_fallback_when_open_targets_did_not_produce_them PASS [ 0.008s] biomcp-cli entities::disease::fallback::tests::arnold_synonym_rescue_resolves_mesh_crosswalk_through_fixture_plan PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::canonical_fallback_row_ignores_not_found_and_maps_hits PASS [ 1.712s] biomcp-cli entities::article::variant_search::tests::cdkn2a_a57v_articles_tie_the_genomic_alias_to_the_gene PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::contains_all_query_tokens_ignores_generic_suffix_terms PASS [ 0.007s] biomcp-cli entities::disease::fallback::tests::disease_fallback_request_records_alias_queries_and_doid_preference PASS [ 0.029s] biomcp-cli entities::disease::enrichment::tests::ticket_589_disease_base_enrichment_failures_are_unavailable_without_credit PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::disease_fallback_request_records_mesh_skip_before_discover PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::fallback_candidate_source_ids_prefer_primary_then_ranked_xrefs PASS [ 0.008s] biomcp-cli entities::disease::fallback::tests::fallback_rows_dedupe_by_resolved_disease_id PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::fallback_candidates_rank_specific_crosswalkable_disease_ahead_of_generic_rows PASS [ 0.010s] biomcp-cli entities::disease::fallback::tests::fallback_search_page_applies_offset_and_limit_after_dedupe PASS [ 0.010s] biomcp-cli entities::disease::fallback::tests::fallback_search_page_swallows_discover_errors PASS [ 0.010s] biomcp-cli entities::disease::fallback::tests::ticket_400_request_command_disease_fallback_fields_drive_discover_and_crosswalk_boundaries PASS [ 0.010s] biomcp-cli entities::disease::get::tests::disease_parse_sections_accepts_diagnostics PASS [ 0.009s] biomcp-cli entities::disease::get::tests::disease_parse_sections_all_keeps_diagnostics_opt_in PASS [ 0.017s] biomcp-cli entities::disease::get::tests::get_disease_cad_refuses_naming_every_exact_holder PASS [ 0.018s] biomcp-cli entities::disease::get::tests::get_disease_lowercase_mf_refuses_like_uppercase PASS [ 0.018s] biomcp-cli entities::disease::get::tests::get_disease_mds_refuses_naming_both_holders PASS [ 0.017s] biomcp-cli entities::disease::get::tests::get_disease_mf_refuses_instead_of_mixing_two_diseases PASS [ 0.010s] biomcp-cli entities::disease::get::tests::get_disease_preserves_canonical_mondo_lookup_path PASS [ 0.017s] biomcp-cli entities::disease::get::tests::get_disease_mm_refusal_leads_with_the_oncology_reading PASS [ 0.010s] biomcp-cli entities::disease::get::tests::get_disease_resolves_mesh_and_omim_crosswalk_ids_before_fetch PASS [ 0.010s] biomcp-cli entities::disease::get::tests::get_disease_returns_not_found_for_unresolved_crosswalk_without_name_fallback PASS [ 0.009s] biomcp-cli entities::disease::get::tests::parse_sections_accepts_clinical_features PASS [ 0.009s] biomcp-cli entities::disease::get::tests::parse_sections_all_keeps_optional_sections_opt_in PASS [ 0.007s] biomcp-cli entities::disease::get::tests::parse_sections_supports_new_disease_sections PASS [ 0.009s] biomcp-cli entities::disease::get::tests::parse_sections_unknown_section_lists_clinical_features PASS [ 0.011s] biomcp-cli entities::disease::get::tests::parse_sections_unknown_value_suggests_name_flag_for_multi_word_diseases PASS [ 0.232s] biomcp-cli entities::disease::get::tests::disease_card_keeps_the_resolving_term_when_detail_label_is_missing PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::a_leading_reading_is_not_repeated_as_a_holder PASS [ 0.015s] biomcp-cli entities::disease::resolution::tests::abbreviated_ambiguity_exposes_the_refusal_data_for_the_trial_note PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::abbreviation_holders_count_name_and_synonym_holds PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::default_reading_leads_the_candidates_and_additions_stay_pointers PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::detail_terms_bounds_and_deduplicates_provider_synonyms PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::detail_terms_rejects_id_disagreement_and_malformed_synonyms PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::disease_candidate_score_prefers_canonical_colorectal_match_over_subtype PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::disease_exact_rank_prefers_exact_then_prefix_then_contains PASS [ 0.014s] biomcp-cli entities::disease::resolution::tests::exact_resolution_direct_mondo_and_doid_ids_each_use_one_request PASS [ 0.013s] biomcp-cli entities::disease::resolution::tests::exact_resolution_maps_selected_detail_inconsistency_to_safe_source_error PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::exact_resolution_matches_only_primary_names_and_declared_synonyms PASS [ 0.014s] biomcp-cli entities::disease::resolution::tests::exact_resolution_one_identity_fetches_consistent_detail_once PASS [ 0.013s] biomcp-cli entities::disease::resolution::tests::exact_resolution_refuses_ambiguous_abbreviation_held_by_two_diseases PASS [ 0.012s] biomcp-cli entities::disease::resolution::tests::exact_resolution_rejects_incomplete_query_without_fetching_detail PASS [ 1.239s] biomcp-cli entities::article::variant_search::tests::samhd1_i448t_articles_tie_the_genomic_alias_to_the_gene PASS [ 0.014s] biomcp-cli entities::disease::resolution::tests::exact_resolution_zero_and_multiple_identities_each_stop_after_query PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::full_word_holders_count_only_exact_name_holds PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::holder_candidate_lines_fill_the_mondo_label PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::holder_counting_leaves_nonhuman_records_out PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::mf_refusal_names_the_myelofibrosis_reading PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::normalize_disease_id_basic PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::parse_disease_lookup_input_distinguishes_canonical_crosswalk_and_text PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::preferred_crosswalk_hit_prefers_mondo_then_doid_then_lexicographic_id PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::rerank_disease_search_hits_keeps_every_exact_abbreviation_holder_above_loose_matches PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::rerank_disease_search_hits_prefers_canonical_exact_candidate_across_query_variants PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::rerank_disease_search_hits_ranks_exact_abbreviation_holder_first PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::resolve_disease_hit_by_name_direct_rejects_weak_contains_only_match PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::resolver_queries_adds_carcinoma_fallback_for_cancer_terms PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::resolver_queries_adds_cml_fallback_variant PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::resolver_queries_adds_hodgkin_alias_variants PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::scored_best_candidate_breaks_ties_on_provider_names_like_rerank PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::scored_best_candidate_for_queries_prefers_hodgkin_alias_over_non_hodgkin_contains_match PASS [ 0.010s] biomcp-cli entities::disease::search::tests::disease_filter_normalizers_accept_supported_values PASS [ 0.010s] biomcp-cli entities::disease::search::tests::disease_filter_normalizers_handle_case_whitespace_and_unknown_values PASS [ 0.009s] biomcp-cli entities::disease::search::tests::disease_search_request_preserves_limit_and_query_validation PASS [ 0.010s] biomcp-cli entities::disease::search::tests::disease_search_request_records_normalized_filters_and_fetch_plan PASS [ 0.010s] biomcp-cli entities::disease::search::tests::parse_hpo_query_terms_requires_valid_ids PASS [ 0.010s] biomcp-cli entities::disease::search::tests::phenotype_continuation_shrinks_to_the_remaining_provider_window PASS [ 0.011s] biomcp-cli entities::disease::search::tests::phenotype_pages_slice_one_provider_ordered_deduplicated_window PASS [ 0.009s] biomcp-cli entities::disease::search::tests::phenotype_phrase_rows_flatten_in_phrase_and_provider_order_without_truncating_the_eleventh PASS [ 0.011s] biomcp-cli entities::disease::search::tests::phenotype_resolution_runs_all_ten_operations_with_at_most_four_in_flight PASS [ 0.010s] biomcp-cli entities::disease::search::tests::phenotype_shared_resolution_deadline_cancels_every_in_flight_operation_at_eight_seconds PASS [ 0.010s] biomcp-cli entities::disease::search::tests::phenotype_terms_and_result_window_are_bounded PASS [ 0.011s] biomcp-cli entities::disease::search::tests::phenotype_support_transport_status_content_body_and_decode_failures_all_degrade PASS [ 0.010s] biomcp-cli entities::disease::search::tests::resolve_phenotype_query_terms_empty_input_mentions_hpo_ids_and_symptom_phrases PASS [ 0.011s] biomcp-cli entities::disease::search::tests::phenotype_whole_command_and_support_deadlines_have_distinct_observable_outcomes PASS [ 0.009s] biomcp-cli entities::disease::search::tests::split_phenotype_queries_preserves_single_phrase_and_splits_commas PASS [ 0.011s] biomcp-cli entities::disease::search::tests::ticket_400_request_command_disease_search_fields_drive_source_query_and_pagination PASS [ 0.009s] biomcp-cli entities::disease::search::tests::unavailable_support_is_applied_pairwise_without_changing_similarity_order PASS [ 0.010s] biomcp-cli entities::disease::tests::disease_clinical_features_empty_serializes_as_absent PASS [ 0.010s] biomcp-cli entities::disease::tests::disease_clinical_features_missing_json_deserializes_empty PASS [ 0.009s] biomcp-cli entities::disease::tests::disease_clinical_features_nonempty_serializes_rows PASS [ 0.013s] biomcp-cli entities::drug::cell_lines::tests::a_body_over_the_cap_is_unavailable_with_the_size_message PASS [ 0.011s] biomcp-cli entities::drug::cell_lines::tests::a_compound_pharmacodb_does_not_hold_completes_the_section_as_empty PASS [ 0.009s] biomcp-cli entities::drug::cell_lines::tests::a_listing_with_no_filter_fails_and_names_the_counts_command PASS [ 0.010s] biomcp-cli entities::drug::cell_lines::tests::one_filter_is_accepted_and_two_are_refused PASS [ 0.010s] biomcp-cli entities::drug::cell_lines::tests::the_section_attaches_the_recorded_venetoclax_counts_as_data PASS [ 0.008s] biomcp-cli entities::drug::cell_lines::tests::the_section_name_is_listed_for_drugs PASS [ 0.030s] biomcp-cli entities::drug::cell_lines::tests::the_all_card_is_byte_identical_with_and_without_the_payload PASS [ 0.009s] biomcp-cli entities::drug::get::tests::a_disagreeing_label_page_refuses_the_name_as_ambiguous PASS [ 0.028s] biomcp-cli entities::drug::cell_lines::tests::the_section_prints_the_heading_the_counts_and_the_next_commands PASS [ 0.010s] biomcp-cli entities::drug::get::tests::ambiguous_candidates_come_from_the_records_that_own_the_name PASS [ 0.009s] biomcp-cli entities::drug::get::tests::ambiguous_candidates_rank_by_record_count_then_name_and_cap_at_ten PASS [ 0.010s] biomcp-cli entities::drug::get::tests::cached_trial_alias_resolution_refreshes_worker_zero_label PASS [ 0.018s] biomcp-cli entities::drug::get::tests::build_trial_aliases_preserves_authorities_then_source_order_and_cap PASS [ 0.018s] biomcp-cli entities::drug::get::tests::drugbank_trial_alias_policy_keeps_codes_and_simple_names PASS [ 0.017s] biomcp-cli entities::drug::get::tests::drugbank_trial_alias_policy_rejects_systematic_and_descriptor_names PASS [ 0.013s] biomcp-cli entities::drug::get::tests::drugsfda_failure_state_matrix PASS [ 0.014s] biomcp-cli entities::drug::get::tests::get_drug_pain_relief_refuses_as_ambiguous_with_the_recorded_candidates PASS [ 4.367s] biomcp-cli entities::article::graph::tests::citation_evidence_degrades_to_the_index_when_the_reference_walk_is_refused PASS [ 0.013s] biomcp-cli entities::drug::get::tests::interaction_additive_source_state_matrix_is_truthful PASS [ 0.012s] biomcp-cli entities::drug::get::tests::interaction_failure_preserves_only_surviving_label_evidence_without_leaking_errors PASS [ 0.009s] biomcp-cli entities::drug::get::tests::interaction_requests_always_permit_typed_partial_settlement PASS [ 0.010s] biomcp-cli entities::drug::get::tests::orphan_aliases_do_not_trust_anchorless_hits PASS [ 0.010s] biomcp-cli entities::drug::get::tests::orphan_aliases_reject_a_multi_unii_hit_with_any_conflict PASS [ 0.011s] biomcp-cli entities::drug::get::tests::orphan_aliases_require_matching_nonconflicting_anchor PASS [ 0.010s] biomcp-cli entities::drug::get::tests::orphan_aliases_treat_an_absent_identifier_as_neutral PASS [ 0.009s] biomcp-cli entities::drug::get::tests::parse_sections_all_with_explicit_label_keeps_label PASS [ 0.009s] biomcp-cli entities::drug::get::tests::parse_sections_default_card_includes_targets_enrichment PASS [ 0.010s] biomcp-cli entities::drug::get::tests::parse_sections_supports_all_and_rejects_unknown PASS [ 0.010s] biomcp-cli entities::drug::get::tests::parse_sections_unknown_value_suggests_name_flag_for_multi_word_drugs PASS [ 0.010s] biomcp-cli entities::drug::get::tests::trial_alias_cache_key_normalizes_requested_name PASS [ 0.010s] biomcp-cli entities::drug::get::tests::trial_alias_candidates_keep_untruncated_source_provenance PASS [ 0.009s] biomcp-cli entities::drug::get::tests::trial_alias_resolution_keeps_generic_requests_canonical PASS [ 0.018s] biomcp-cli entities::drug::get::tests::trial_alias_resolution_does_not_cache_transient_lookup_failure PASS [ 0.008s] biomcp-cli entities::drug::get::tests::validate_raw_usage_allows_raw_with_label_section PASS [ 0.009s] biomcp-cli entities::drug::get::tests::validate_raw_usage_rejects_raw_without_label_section PASS [ 0.023s] biomcp-cli entities::drug::get::tests::unreadable_who_bundle_degrades_the_card_section_without_a_local_path PASS [ 0.009s] biomcp-cli entities::drug::get::tests::validate_region_usage_allows_who_all_requests PASS [ 0.010s] biomcp-cli entities::drug::get::tests::validate_region_usage_rejects_approvals_with_explicit_region PASS [ 0.010s] biomcp-cli entities::drug::get::tests::validate_region_usage_rejects_explicit_region_without_regional_sections PASS [ 0.009s] biomcp-cli entities::drug::get::tests::validate_region_usage_rejects_who_safety_only_requests PASS [ 0.009s] biomcp-cli entities::drug::get::tests::validate_region_usage_rejects_who_shortage_only_requests PASS [ 0.011s] biomcp-cli entities::drug::interactions::tests::aggregation_keeps_a_row_whose_partner_is_not_an_anchor_term PASS [ 0.011s] biomcp-cli entities::drug::interactions::tests::ddinter_identity_for_anchor_passes_brands_and_synonyms_on PASS [ 0.009s] biomcp-cli entities::drug::interactions::tests::interaction_description_uses_legacy_partner_narrative PASS [ 0.010s] biomcp-cli entities::drug::interactions::tests::interaction_next_command_quotes_multi_word_anchor PASS [ 0.010s] biomcp-cli entities::drug::interactions::tests::interaction_pages_reconstruct_the_sorted_rows PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_boxed_only_still_returns_a_label PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_falls_back_to_legacy_warnings_field PASS [ 0.016s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_carries_whole_sections_past_the_markdown_cap PASS [ 0.016s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_raw_mode_preserves_whole_raw_subsections PASS [ 0.015s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_raw_mode_reads_boxed_warning_alongside_modern_warnings PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_interaction_text_from_label_returns_none_when_missing PASS [ 0.016s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_summary_mode_keeps_boxed_warning PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_interaction_text_from_label_uses_openfda_drug_interactions PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_label_boxed_warning_is_truncated PASS [ 0.009s] biomcp-cli entities::drug::label::tests::extraction::extract_label_boxed_warning_reads_all_strings_from_the_first_result PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_label_set_id_falls_back_to_spl_set_id PASS [ 0.009s] biomcp-cli entities::drug::label::tests::extraction::extract_label_set_id_prefers_top_level_set_id PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_label_warnings_prefers_warnings_and_cautions_over_legacy_warnings PASS [ 0.011s] biomcp-cli entities::drug::label::tests::extraction::extract_label_warnings_truncates_with_exact_dailymed_link PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::a_two_drug_combination_never_splits_to_one_ingredient PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::an_exact_brand_label_with_an_unrelated_generic_never_wins_the_brand_tier PASS [ 0.012s] biomcp-cli entities::drug::label::tests::identity::filter_keeps_only_identity_matching_results_and_rewrites_the_total PASS [ 0.012s] biomcp-cli entities::drug::label::tests::identity::filter_keeps_the_withdrawn_exkivity_record_from_the_mobocertinib_capture PASS [ 0.011s] biomcp-cli entities::drug::label::tests::identity::identity_guard_accepts_the_sparse_multistrength_tagrisso_record PASS [ 0.011s] biomcp-cli entities::drug::label::tests::identity::identity_guard_accepts_the_sparse_propulsid_record PASS [ 0.008s] biomcp-cli entities::drug::label::tests::identity::identity_guard_matches_active_ingredients_as_word_sequences PASS [ 0.009s] biomcp-cli entities::drug::label::tests::identity::identity_guard_reads_the_name_runs_of_each_element_entry PASS [ 0.015s] biomcp-cli entities::drug::label::tests::identity::identity_guard_rejects_inactive_ingredients_that_repeat_across_strengths PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::identity_guard_rejects_labels_that_only_mention_the_drug PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::identity_guard_rejects_token_sequences_joined_across_fields PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::pairing_split_derives_the_plain_ingredient_from_the_records_own_list PASS [ 0.015s] biomcp-cli entities::drug::label::tests::summary::extract_inline_label_summary_mode_preserves_subtype_wording PASS [ 0.016s] biomcp-cli entities::drug::label::tests::summary::extract_inline_label_summary_mode_falls_back_to_raw_indications_when_no_rows PASS [ 0.015s] biomcp-cli entities::drug::label::tests::summary::extract_inline_label_summary_mode_trims_patient_eligibility_qualifiers PASS [ 0.016s] biomcp-cli entities::drug::label::tests::summary::extract_inline_label_summary_mode_uses_numbered_subsection_titles PASS [ 0.010s] biomcp-cli entities::drug::metadata::tests::apply_openfda_metadata_keeps_a_resolved_typed_brand_listed PASS [ 0.011s] biomcp-cli entities::drug::metadata::tests::apply_openfda_metadata_lists_only_the_cards_own_label_products PASS [ 0.007s] biomcp-cli entities::drug::metadata::tests::extract_top_adverse_events_ranks_by_frequency PASS [ 0.011s] biomcp-cli entities::drug::metadata::tests::brand_lists_remove_generic_names_before_applying_the_cap PASS [ 0.010s] biomcp-cli entities::drug::metadata::tests::map_drugsfda_approvals_extracts_key_fields PASS [ 0.010s] biomcp-cli entities::drug::outcome_tests::omitted_drug_outcomes_initialize_every_registry_key PASS [ 0.009s] biomcp-cli entities::drug::query::tests::build_mychem_query_escapes_free_text_query PASS [ 0.010s] biomcp-cli entities::drug::query::tests::build_mychem_query_expands_purine_to_atc_codes PASS [ 1.045s] biomcp-cli entities::disease::get::tests::get_disease_single_holder_abbreviation_still_resolves_one_record PASS [ 0.010s] biomcp-cli entities::drug::query::tests::build_mychem_query_includes_mechanism_of_action_field PASS [ 0.010s] biomcp-cli entities::drug::query::tests::build_mychem_query_includes_target_and_mechanism_filters PASS [ 0.009s] biomcp-cli entities::drug::query::tests::build_mychem_query_keeps_atc_filter_exact PASS [ 0.010s] biomcp-cli entities::drug::query::tests::build_mychem_query_rejects_public_interaction_filter PASS [ 0.009s] biomcp-cli entities::drug::query::tests::build_mychem_query_requires_at_least_one_filter PASS [ 0.009s] biomcp-cli entities::drug::query::tests::drug_search_filters_detect_structured_filters PASS [ 0.009s] biomcp-cli entities::drug::query::tests::mechanism_atc_expansions_returns_purine_mapping PASS [ 0.010s] biomcp-cli entities::drug::search::tests::complete_candidate_ranking_moves_a_later_exact_match_before_broad_rows PASS [ 0.010s] biomcp-cli entities::drug::search::tests::ema_identity_admits_only_hits_with_exact_allowed_fields_and_preserves_field_order PASS [ 0.010s] biomcp-cli entities::drug::search::tests::ema_identity_has_no_all_hits_or_excluded_field_fallback PASS [ 0.010s] biomcp-cli entities::drug::search::tests::every_allowed_ema_field_independently_admits_a_hit PASS [ 0.009s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_fallback_is_first_page_only PASS [ 0.010s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_generic_names_keep_disagreeing_owners_apart PASS [ 0.010s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_generic_names_prefer_the_rows_that_own_the_brand PASS [ 0.009s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_generic_names_read_a_disagreeing_page_with_no_owner PASS [ 0.008s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_generic_names_take_a_lone_pairing_label PASS [ 0.009s] biomcp-cli entities::drug::search::tests::fallback::search_results_from_openfda_label_response_prefers_exact_brand_match PASS [ 0.010s] biomcp-cli entities::drug::search::tests::fallback::search_results_from_openfda_label_response_respects_limit PASS [ 0.009s] biomcp-cli entities::drug::search::tests::fallback::search_results_from_openfda_label_response_returns_remaining_unique_generics PASS [ 0.009s] biomcp-cli entities::drug::search::tests::mechanism::hit_mentions_mechanism_matches_atc_purine_hits PASS [ 0.010s] biomcp-cli entities::drug::search::tests::mechanism::hit_mentions_mechanism_matches_mechanism_of_action_text PASS [ 0.010s] biomcp-cli entities::drug::search::tests::mechanism::mechanism_match_uses_mechanism_fields_not_drug_name PASS [ 0.010s] biomcp-cli entities::drug::search::tests::who::all_region_search_degrades_when_who_pq_data_is_absent_but_explicit_who_fails PASS [ 0.009s] biomcp-cli entities::drug::search::tests::who::explicit_who_vaccine_search_skips_drug_identity_resolution PASS [ 0.010s] biomcp-cli entities::drug::search::tests::who::structured_who_search_reports_exact_total_when_mychem_is_exhausted PASS [ 0.010s] biomcp-cli entities::drug::search::tests::who::structured_who_search_stops_after_one_extra_match_and_reports_unknown_total PASS [ 0.007s] biomcp-cli entities::drug::search::tests::who::structured_who_search_with_api_filter_keeps_only_api_rows PASS [ 0.011s] biomcp-cli entities::drug::search::tests::who::structured_who_search_with_finished_filter_keeps_only_finished_rows PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::civic::extract_variant_targets_from_civic_deduplicates_and_filters_by_generic_target PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::civic::normalize_variant_target_label_keeps_spaced_protein_change PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::civic::normalize_variant_target_label_normalizes_egfr_roman_suffix PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::civic::normalize_variant_target_label_rejects_exact_gene_match PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::family::derive_target_family_name_handles_non_ascii_without_panicking PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::derive_target_family_name_requires_complete_member_names PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::derive_target_family_name_trims_numeric_member_suffix PASS [ 0.011s] biomcp-cli entities::drug::targets::tests::family::family_target_chembl_id_accepts_mechanism_only_family_row PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::family_target_chembl_id_rejects_missing_matching_target_id PASS [ 1.248s] biomcp-cli entities::disease::get::tests::get_disease_full_word_resolves_past_nonhuman_and_synonym_holders PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::family::family_target_chembl_id_rejects_multiple_matching_target_ids PASS [ 0.011s] biomcp-cli entities::drug::targets::tests::family::family_target_chembl_id_requires_single_matching_target_id PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::strict_target_family_label_accepts_numeric_suffix_family PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::family::strict_target_family_label_handles_embedded_digits PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::strict_target_family_label_rejects_mixed_targets PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::strict_target_family_label_rejects_single_target PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::indications::format_opentargets_clinical_stage_falls_back_for_future_values PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::indications::format_opentargets_clinical_stage_maps_known_stages PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::indications::format_opentargets_clinical_stage_suppresses_unknown_and_blank PASS [ 0.119s] biomcp-cli entities::drug::search::tests::unresolved_mychem_paths_each_request_once_and_preserve_positive_cvx_fallback PASS [ 0.020s] biomcp-cli entities::drug::test_support::a_brand_query_resolves_through_the_mychem_record_itself PASS [ 0.022s] biomcp-cli entities::drug::test_support::a_refusal_runs_the_discover_resolution_once_for_both_callers PASS [ 0.015s] biomcp-cli entities::drug::test_support::a_text_only_match_refuses_and_names_what_matched PASS [ 0.020s] biomcp-cli entities::drug::test_support::brand_resolution::a_brand_two_exact_drugs_answer_refuses_instead_of_picking_one PASS [ 0.019s] biomcp-cli entities::drug::test_support::brand_resolution::niraparib_names_the_plain_card_and_takes_its_own_label PASS [ 4.015s] biomcp-cli entities::article::search::tests::deadline::overall_deadline_returns_partial_rows_and_names_the_held_source PASS [ 0.016s] biomcp-cli entities::drug::test_support::brand_resolution::pain_relief_refuses_without_naming_products_that_do_not_own_the_name PASS [ 0.016s] biomcp-cli entities::drug::test_support::brand_resolution::sleep_aid_refuses_when_openfdas_own_brands_disagree PASS [ 0.026s] biomcp-cli entities::drug::test_support::brand_resolution::tarceva_lists_the_typed_brand_and_no_chemical_synonym PASS [ 0.018s] biomcp-cli entities::drug::test_support::brand_resolution::trastuzumab_lists_only_brands_whose_labels_name_trastuzumab PASS [ 0.030s] biomcp-cli entities::drug::test_support::brand_resolution::tarceva_resolves_erlotinib_through_the_guarded_discover_rescue PASS [ 0.017s] biomcp-cli entities::drug::test_support::brand_resolution::zejula_returns_niraparib_with_the_zejula_label PASS [ 0.011s] biomcp-cli entities::drug::test_support::ingredient_resolution::a_combination_card_carries_no_single_ingredient_identifier PASS [ 0.021s] biomcp-cli entities::drug::test_support::ingredient_resolution::acetaminophen_takes_the_plain_ingredient_card_and_label PASS [ 0.017s] biomcp-cli entities::drug::test_support::ingredient_resolution::cold_and_flu_still_refuses_across_distinct_combination_products PASS [ 2.486s] biomcp-cli entities::article::variant_search::tests::litvar_failure_degrades_only_its_source PASS [ 0.020s] biomcp-cli entities::drug::test_support::ingredient_resolution::aspirin_card_names_the_ingredient_not_a_product_rows_strength PASS [ 0.019s] biomcp-cli entities::drug::test_support::ingredient_resolution::fluorouracil_synonym_takes_the_plain_ingredient_card_and_label PASS [ 0.020s] biomcp-cli entities::drug::test_support::ingredient_resolution::motrin_resolves_to_the_ingredient_its_labels_mostly_name PASS [ 0.020s] biomcp-cli entities::drug::test_support::ingredient_resolution::tylenol_resolves_to_the_plain_ingredient_its_labels_mostly_name PASS [ 0.022s] biomcp-cli entities::drug::test_support::ingredient_resolution::keytruda_qlex_pairing_derives_the_plain_ingredient_from_the_records_own_list PASS [ 0.020s] biomcp-cli entities::drug::test_support::label_choice::a_contains_tier_ols_match_never_adopts_a_card PASS [ 0.018s] biomcp-cli entities::drug::test_support::label_choice::a_non_hyaluronidase_combination_never_becomes_another_products_card PASS [ 0.020s] biomcp-cli entities::drug::test_support::label_choice::amivantamab_takes_the_plain_rybrevant_label_not_faspro PASS [ 0.021s] biomcp-cli entities::drug::test_support::label_choice::avastin_takes_avastins_own_label PASS [ 0.018s] biomcp-cli entities::drug::test_support::label_choice::bevacizumab_escalates_past_the_biosimilar_page_to_avastin PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_choice::daratumumab_takes_the_plain_darzalex_label_not_faspro PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_choice::gleevec_keeps_its_own_label_against_the_generic_ingredient_twin PASS [ 0.022s] biomcp-cli entities::drug::test_support::label_choice::darzalex_takes_the_plain_darzalex_label_not_faspro PASS [ 0.022s] biomcp-cli entities::drug::test_support::label_choice::herceptin_takes_herceptins_own_label_not_the_biosimilar PASS [ 0.022s] biomcp-cli entities::drug::test_support::label_choice::keytruda_takes_keytrudas_own_label_not_the_qlex_pairing PASS [ 0.020s] biomcp-cli entities::drug::test_support::label_choice::pembrolizumab_takes_the_plain_keytruda_label PASS [ 0.026s] biomcp-cli entities::drug::test_support::label_choice::phesgo_resolves_its_own_label_and_safety_line PASS [ 0.020s] biomcp-cli entities::drug::test_support::label_choice::rybrevant_takes_the_plain_rybrevant_label_not_faspro PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_choice::trastuzumab_takes_the_plain_herceptin_label_not_the_biosimilar PASS [ 0.026s] biomcp-cli entities::drug::test_support::label_choice::the_rescue_adopts_a_candidate_only_through_its_own_record PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_elements_fallback_no_match_settles_as_the_honest_empty PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_elements_fallback_returns_the_own_record_not_an_empty PASS [ 0.026s] biomcp-cli entities::drug::test_support::label_elements_oversize_response_settles_as_unavailable_with_reason PASS [ 0.020s] biomcp-cli entities::drug::test_support::product_names::advil_names_the_ingredient_it_pairs_not_the_merged_pm_row PASS [ 0.021s] biomcp-cli entities::drug::test_support::product_names::headache_relief_names_the_product_it_pairs_not_a_merged_row PASS [ 0.023s] biomcp-cli entities::drug::test_support::product_names::herceptin_hylecta_keeps_its_multi_word_brand_and_own_label PASS [ 0.021s] biomcp-cli entities::drug::test_support::product_names::nighttime_sleep_aid_names_the_record_not_another_products_row PASS [ 0.023s] biomcp-cli entities::drug::test_support::product_names::rituxan_hycela_keeps_its_multi_word_brand_and_own_label PASS [ 0.023s] biomcp-cli entities::drug::test_support::product_names::tecentriq_hybreza_keeps_its_multi_word_brand_and_own_label PASS [ 0.019s] biomcp-cli entities::drug::test_support::terfenadine_returns_terfenadines_card_with_an_honest_empty_label PASS [ 0.010s] biomcp-cli entities::gene::cell_lines::tests::a_cellosaurus_failure_leaves_the_rows_with_no_accession_and_one_note PASS [ 0.021s] biomcp-cli entities::gene::cell_lines::tests::a_name_no_window_claims_gets_no_accession_and_the_note PASS [ 0.010s] biomcp-cli entities::gene::cell_lines::tests::an_empty_window_gives_no_accession_and_no_failure_note PASS [ 1.045s] biomcp-cli entities::drug::get::tests::drug_card_sources_run_at_once_and_keep_the_undelayed_output PASS [ 0.009s] biomcp-cli entities::gene::cell_lines::tests::an_html_body_with_http_200_is_a_provider_error_naming_the_url PASS [ 0.097s] biomcp-cli entities::gene::cell_lines::tests::every_leukemia_name_resolves_to_one_human_accession PASS [ 0.094s] biomcp-cli entities::gene::cell_lines::tests::limit_and_offset_page_the_rows_and_keep_the_total PASS [ 0.010s] biomcp-cli entities::gene::cell_lines::tests::parser_ignores_an_object_for_another_gene_and_answers_empty_when_none_matches PASS [ 0.009s] biomcp-cli entities::gene::cell_lines::tests::parser_keeps_a_non_numeric_value_as_null PASS [ 0.010s] biomcp-cli entities::gene::cell_lines::tests::parser_keeps_the_requested_gene_and_the_recorded_group_order PASS [ 6.534s] biomcp-cli cli::stale_json_note_tests::a_stale_search_all_json_states_the_cache_age_in_meta_notes PASS [ 0.009s] biomcp-cli entities::gene::cell_lines::tests::the_attribution_line_names_the_recorded_file_date_and_the_confirmed_license PASS [ 0.009s] biomcp-cli entities::gene::cell_lines::tests::the_group_list_is_the_thirty_the_data_access_page_publishes PASS [ 0.013s] biomcp-cli entities::gene::cell_lines::tests::the_license_agrees_across_the_attribution_line_and_both_registries PASS [ 0.010s] biomcp-cli entities::gene::clingen::tests::canceling_during_settle_aborts_its_clingen_prefetch_task PASS [ 0.008s] biomcp-cli entities::gene::clingen::tests::canceling_parent_aborts_its_clingen_prefetch_task PASS [ 0.010s] biomcp-cli entities::gene::clingen::tests::client_construction_failure_marks_both_families_before_requests PASS [ 0.010s] biomcp-cli entities::gene::clingen::tests::family_statuses_define_the_exact_aggregate_truth_table PASS [ 0.009s] biomcp-cli entities::gene::cspec::tests::ambiguous_short_version_lists_available_versions PASS [ 0.010s] biomcp-cli entities::gene::cspec::tests::bounded_preserves_utf8_when_the_limit_splits_a_character PASS [ 0.010s] biomcp-cli entities::gene::cspec::tests::post_fetch_paging_failure_is_not_projected_as_a_clingen_provider_failure PASS [ 0.011s] biomcp-cli entities::gene::cspec::tests::receipted_atm_document_without_data_iri_pages_from_manifest_binding PASS [ 0.099s] biomcp-cli entities::gene::cell_lines::tests::the_group_is_resolved_in_five_batches_and_no_sixth PASS [ 0.033s] biomcp-cli entities::gene::cspec::tests::receipted_pten_files_and_normal_count_use_the_production_parser PASS [ 0.009s] biomcp-cli entities::gene::cspec::tests::recorded_atm_document_deduplicates_citations_in_provider_order PASS [ 0.009s] biomcp-cli entities::gene::cspec::tests::selected_document_must_match_the_manifest_specification_id PASS [ 0.010s] biomcp-cli entities::gene::cspec::tests::selection_accepts_a_literal_iri_or_unique_short_version PASS [ 0.020s] biomcp-cli entities::gene::gencc::tests::assertion_cap_is_separate_from_the_total PASS [ 0.012s] biomcp-cli entities::gene::gencc::tests::canonical_symbol_and_hgnc_return_three_submission_rows PASS [ 0.085s] biomcp-cli entities::gene::gencc::tests::bootstrap_parent_fsync_failures_fail_closed_before_any_store_is_returned PASS [ 0.066s] biomcp-cli entities::gene::gencc::tests::cleanup_faults_retain_unowned_or_unfinished_entries_for_a_later_pass PASS [ 0.225s] biomcp-cli entities::gene::cspec::tests::attachment_count_and_field_boundaries_fail_without_partial_rows PASS [ 0.123s] biomcp-cli entities::gene::gencc::tests::descriptor_bootstrap_rejects_unsafe_or_substituted_anchors_and_reuses_inode PASS [ 0.213s] biomcp-cli entities::gene::gencc::tests::default_and_override_subprocesses_reuse_the_external_anchor_inode_after_root_recreation PASS [ 3.057s] biomcp-cli entities::author::papers::wire_tests::sanitized_errors_do_not_leak_provider_bodies_urls_or_credentials PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::gene_section_names_include_new_enrichment_sections PASS [ 0.014s] biomcp-cli entities::gene::gencc::tests::hgnc_precedence_matrix_covers_every_queryable_lifecycle_and_root_failure PASS [ 0.321s] biomcp-cli entities::gene::gencc::tests::expired_refresh_budget_still_projects_authoritative_stale_data PASS [ 2.536s] biomcp-cli entities::disease::get::tests::get_disease_alias_lookup_does_not_feed_the_abbreviation_to_open_targets PASS [ 0.011s] biomcp-cli entities::gene::gencc::tests::missing_hgnc_uses_unique_symbol_identity PASS [ 0.013s] biomcp-cli entities::gene::gencc::tests::one_sided_identity_match_is_inconclusive PASS [ 0.007s] biomcp-cli entities::gene::gencc::tests::overflow_uid_never_inherits_system_owner_trust PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::outcome_inventory_matches_parser_visible_sections PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::parse_sections_accepts_new_enrichment_sections PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::parse_sections_accepts_diagnostics PASS [ 0.008s] biomcp-cli entities::gene::gencc::tests::parse_sections_all_keeps_optional_diagnostics_opt_in PASS [ 0.009s] biomcp-cli entities::gene::gencc::tests::parse_sections_all_keeps_optional_sections_opt_in PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::pre_index_identity_failure_precedes_store_creation PASS [ 0.011s] biomcp-cli entities::gene::gencc::tests::projection_deadline_cancels_and_joins_the_actual_gencc_worker PASS [ 0.062s] biomcp-cli entities::gene::gencc::tests::publication_rejects_a_substituted_generations_component_without_writing_through_it PASS [ 0.013s] biomcp-cli entities::gene::gencc::tests::stale_positive_and_zero_outcomes_preserve_the_lifecycle_message PASS [ 0.286s] biomcp-cli entities::gene::gencc::tests::injected_state_rename_failures_report_the_visible_namespace PASS [ 0.350s] biomcp-cli entities::gene::gencc::tests::post_rename_200_and_304_deadlines_return_committed_public_rows PASS [ 0.182s] biomcp-cli entities::gene::gencc::tests::subprocess_lease_child_exits_on_parent_end_of_input PASS [ 0.010s] biomcp-cli entities::gene::tests::canonical_alias_identity_keeps_the_entrez_identifier PASS [ 0.009s] biomcp-cli entities::gene::tests::canonical_alias_matches_cover_common_gene_aliases PASS [ 0.010s] biomcp-cli entities::gene::tests::canonical_alias_matches_keep_ambiguous_aliases_ambiguous PASS [ 0.010s] biomcp-cli entities::gene::tests::exact_gene_query_candidate_requires_symbol_safe_ascii_with_a_letter PASS [ 0.011s] biomcp-cli entities::gene::tests::exact_gene_results_keep_distinct_ids_and_missing_identity_rows PASS [ 0.010s] biomcp-cli entities::gene::tests::exact_gene_results_promote_then_dedupe_first_wins PASS [ 0.009s] biomcp-cli entities::gene::tests::exact_search_followup_boundary_covers_fifty_and_fifty_one PASS [ 0.009s] biomcp-cli entities::gene::tests::gene_diagnostics_section_populates_from_rows PASS [ 0.010s] biomcp-cli entities::gene::tests::gene_diagnostics_unavailable_sets_note PASS [ 0.011s] biomcp-cli entities::gene::tests::gene_section_result_application_is_strategy_order_invariant PASS [ 0.010s] biomcp-cli entities::gene::tests::gnomad_constraint_without_metrics_is_healthy_empty PASS [ 0.009s] biomcp-cli entities::gene::tests::merge_druggability_keeps_successful_source_data_when_other_source_fails PASS [ 0.010s] biomcp-cli entities::gene::tests::merge_pathways_keeps_kegg_then_appends_reactome_without_duplicates PASS [ 0.009s] biomcp-cli entities::gene::tests::mygene_query_term_escapes_free_text_special_chars PASS [ 0.009s] biomcp-cli entities::gene::tests::mygene_query_term_searches_aliases_for_symbol_like_input PASS [ 0.009s] biomcp-cli entities::gene::tests::normalize_gene_chromosome_accepts_chr_prefix_and_special_values PASS [ 0.009s] biomcp-cli entities::gene::tests::normalize_gene_chromosome_rejects_invalid_values PASS [ 0.009s] biomcp-cli entities::gene::tests::normalize_gene_type_accepts_supported_aliases PASS [ 0.008s] biomcp-cli entities::gene::tests::normalize_gene_type_rejects_invalid_value PASS [ 0.010s] biomcp-cli entities::gene::tests::normalize_go_id_accepts_canonical_and_lowercase_prefix PASS [ 0.009s] biomcp-cli entities::gene::tests::normalize_go_id_rejects_free_text PASS [ 0.010s] biomcp-cli entities::gene::tests::official_symbol_identity_keeps_the_entrez_identifier PASS [ 0.010s] biomcp-cli entities::gene::tests::official_symbol_matches_refuse_aliases PASS [ 0.010s] biomcp-cli entities::gene::tests::parse_sections_redirects_variants_to_variant_search PASS [ 0.010s] biomcp-cli entities::gene::tests::pathway_outcome_credits_merged_sources_and_only_retained_sources_on_failure PASS [ 0.010s] biomcp-cli entities::gene::tests::quickgo_and_string_failure_state_matrix PASS [ 0.009s] biomcp-cli entities::gene::tests::search_query_summary_includes_new_filters PASS [ 0.009s] biomcp-cli entities::pathway::tests::ensembl_redirect_matcher_rejects_malformed_version_suffix PASS [ 7.350s] biomcp-cli entities::article::assets::tests::manifest_and_bytes_preserve_induced_archive_failure_after_figshare_miss PASS [ 0.011s] biomcp-cli entities::pathway::tests::finalize_pathway_search_results_keeps_wikipathways_when_kegg_is_disabled PASS [ 0.018s] biomcp-cli entities::pathway::tests::extract_gene_symbols_dedupes_and_filters_non_gene_tokens PASS [ 0.009s] biomcp-cli entities::pathway::tests::finalize_pathway_search_results_surfaces_partial_source_failure PASS [ 0.010s] biomcp-cli entities::pathway::tests::kegg_all_expands_to_supported_sections_only PASS [ 0.009s] biomcp-cli entities::pathway::tests::kegg_disabled_error_names_the_disable_reason_and_an_alternative PASS [ 0.008s] biomcp-cli entities::pathway::tests::kegg_explicit_enrichment_section_is_rejected PASS [ 0.010s] biomcp-cli entities::pathway::tests::kegg_explicit_events_section_is_rejected PASS [ 0.014s] biomcp-cli entities::pathway::tests::looks_like_gene_symbol_rejects_mutation_notation PASS [ 0.009s] biomcp-cli entities::pathway::tests::normalize_pathway_query_maps_confirmed_mapk_aliases PASS [ 0.009s] biomcp-cli entities::pathway::tests::parse_sections_supports_all_and_rejects_unknown_values PASS [ 0.010s] biomcp-cli entities::pathway::tests::pathway_json_compatibility_defaults_missing_outcomes_and_rejects_foreign_keys PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_gene_redirect_for_ensembl_gene_id PASS [ 0.011s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_gene_redirect_for_ensembl_transcript_id PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_gene_redirect_for_gene_symbol PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_gene_redirect_for_versioned_ensembl_id PASS [ 2.021s] biomcp-cli entities::drug::test_support::a_stalled_drug_refusal_costs_one_discover_budget PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_protein_redirect_for_uniprot_accession PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_variant_redirect_for_rsid PASS [ 0.010s] biomcp-cli entities::pathway::tests::pathway_title_match_tier_prefers_exact_then_prefix_then_contains PASS [ 0.014s] biomcp-cli entities::pathway::tests::pathway_lookup_error_preserves_redirect_without_duplicate_source_recovery PASS [ 0.010s] biomcp-cli entities::pathway::tests::rerank_pathway_search_results_drops_rows_unrelated_to_query PASS [ 0.009s] biomcp-cli entities::pathway::tests::rerank_pathway_search_results_uses_upstream_position_for_same_tier PASS [ 0.411s] biomcp-cli entities::gene::gencc::tests::subprocess_lease_defers_old_generation_cleanup_until_reader_exits PASS [ 0.010s] biomcp-cli entities::pathway::tests::search_requires_query_with_quoted_example PASS [ 0.009s] biomcp-cli entities::pathway::tests::wikipathways_all_expands_to_supported_sections_only PASS [ 0.010s] biomcp-cli entities::pathway::tests::wikipathways_explicit_enrichment_section_is_rejected PASS [ 0.010s] biomcp-cli entities::pathway::tests::wikipathways_explicit_events_section_is_rejected PASS [ 0.010s] biomcp-cli entities::pathway::tests::wikipathways_gene_outcome_credits_symbol_resolution_provider PASS [ 0.009s] biomcp-cli entities::pgx::recommendation_mapping_tests::recommendation_mapping_does_not_override_the_section_limit PASS [ 0.010s] biomcp-cli entities::pgx::recommendation_mapping_tests::recommendations_keep_complete_deterministic_genotypes PASS [ 0.010s] biomcp-cli entities::pgx::recommendation_mapping_tests::recommendations_render_every_available_gene_without_hashmap_fallbacks PASS [ 0.009s] biomcp-cli entities::pgx::tests::distinct_actionable_cpic_gene_count_counts_unique_genes_to_threshold PASS [ 0.016s] biomcp-cli entities::pgx::recommendation_mapping_tests::recommendations_fetch_bounded_gene_drug_coverage PASS [ 0.009s] biomcp-cli entities::pgx::tests::likely_gene_uses_input_case_and_rejects_multi_word_queries PASS [ 0.010s] biomcp-cli entities::pgx::tests::normalize_cpic_level_accepts_supported_values PASS [ 0.013s] biomcp-cli entities::pgx::tests::get_options_reject_invalid_paging_before_client_construction PASS [ 0.009s] biomcp-cli entities::pgx::tests::normalize_cpic_level_rejects_invalid_value PASS [ 0.009s] biomcp-cli entities::pgx::tests::normalize_pgx_testing_accepts_supported_values PASS [ 0.009s] biomcp-cli entities::pgx::tests::normalize_pgx_testing_rejects_blank_and_unknown_values PASS [ 0.009s] biomcp-cli entities::pgx::tests::parse_sections_supports_all PASS [ 0.009s] biomcp-cli entities::pgx::tests::search_summary_formats_filters PASS [ 0.008s] biomcp-cli entities::pgx::tests::section_pagination_uses_exact_total_or_limit_plus_one PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::a_body_over_the_cap_is_an_unavailable_section_naming_the_size PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::a_cell_line_row_names_its_compound_and_a_drug_row_names_its_cell_line PASS [ 0.009s] biomcp-cli entities::pharmacodb::tests::a_compound_name_matches_ignoring_ascii_case_only PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::a_known_dataset_normalizes_to_the_name_pharmacodb_publishes PASS [ 0.009s] biomcp-cli entities::pharmacodb::tests::a_record_that_claims_another_accession_is_a_mismatch PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::a_null_metric_stays_null_in_json_and_prints_as_a_dash PASS [ 2.119s] biomcp-cli entities::drug::test_support::a_slow_alias_fallback_round_gives_up_within_the_refusal_budget PASS [ 0.008s] biomcp-cli entities::pharmacodb::tests::a_record_that_claims_the_requested_accession_is_accepted PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::an_unknown_dataset_lists_the_ten_dataset_names PASS [ 0.031s] biomcp-cli entities::pharmacodb::tests::a_dataset_filter_keeps_only_that_dataset_and_ignores_case PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::another_failure_is_unavailable_without_the_size_message PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::json_keeps_the_published_value_without_rounding PASS [ 0.029s] biomcp-cli entities::pharmacodb::tests::a_repeated_compound_and_dataset_pair_keeps_every_row_with_its_own_id PASS [ 0.007s] biomcp-cli entities::pharmacodb::tests::markdown_prints_a_metric_with_up_to_four_significant_digits PASS [ 0.007s] biomcp-cli entities::pharmacodb::tests::no_record_at_all_is_missing_and_not_a_mismatch PASS [ 0.007s] biomcp-cli entities::pharmacodb::tests::the_attribution_line_names_the_terms_the_version_the_units_and_the_limits PASS [ 0.047s] biomcp-cli entities::pharmacodb::tests::a_row_page_pages_the_matched_rows_and_keeps_the_whole_side_total PASS [ 0.011s] biomcp-cli entities::pharmacodb::tests::the_counts_payload_sums_the_recorded_molm13_datasets PASS [ 0.028s] biomcp-cli entities::pharmacodb::tests::rows_sort_by_counterpart_name_then_dataset_then_experiment_id PASS [ 0.026s] biomcp-cli entities::pharmacodb::tests::the_counts_line_names_every_dataset_in_name_order PASS [ 0.009s] biomcp-cli entities::protein::tests::complexportal_outcome_uses_registered_provider_label PASS [ 0.013s] biomcp-cli entities::pharmacodb::tests::the_license_agrees_across_the_attribution_line_and_both_registries PASS [ 0.010s] biomcp-cli entities::protein::tests::interpro_and_string_failure_state_matrix PASS [ 0.008s] biomcp-cli entities::protein::tests::paginate_structures_applies_offset_then_limit PASS [ 0.009s] biomcp-cli entities::protein::tests::map_complexportal_complex_uses_explicit_curation_and_components PASS [ 0.009s] biomcp-cli entities::protein::tests::parse_sections_supports_all_and_reports_unknown_values PASS [ 0.069s] biomcp-cli entities::pharmacodb::tests::a_venetoclax_page_reports_the_recorded_drug_side_counts PASS [ 0.009s] biomcp-cli entities::protein::tests::search_rejects_empty_query PASS [ 0.009s] biomcp-cli entities::protein::tests::species_and_review_filters_form_an_independent_matrix PASS [ 0.010s] biomcp-cli entities::protein::tests::uniprot_accession_validation_accepts_accessions_and_rejects_symbols PASS [ 0.009s] biomcp-cli entities::protein::tests::validate_structure_limit_enforces_bounds PASS [ 0.009s] biomcp-cli entities::section_outcome::tests::bounded_messages_cut_at_a_word_boundary PASS [ 0.009s] biomcp-cli entities::section_outcome::tests::deserialization_rejects_illegal_shapes_and_unsafe_messages PASS [ 0.010s] biomcp-cli entities::section_outcome::tests::deserialized_registry_rejects_entity_foreign_keys PASS [ 0.010s] biomcp-cli entities::section_outcome::tests::permanent_flag_serializes_and_validates PASS [ 0.011s] biomcp-cli entities::section_outcome::tests::registry_rejects_second_completion PASS [ 0.010s] biomcp-cli entities::section_outcome::tests::registry_rejects_unknown_keys PASS [ 0.010s] biomcp-cli entities::section_outcome::tests::registry_serializes_all_states_and_safe_messages PASS [ 0.007s] biomcp-cli entities::section_outcome::tests::successful_outcomes_require_a_source PASS [ 0.009s] biomcp-cli entities::source_state_registry::recovery_tests::every_source_state_row_has_one_callable_recovery_route PASS [ 0.011s] biomcp-cli entities::study::tests::co_occurrence_validates_gene_count PASS [ 0.012s] biomcp-cli entities::study::tests::cohort_round_trips_source_result PASS [ 0.011s] biomcp-cli entities::study::tests::compare_expression_values_returns_mutant_then_wildtype_groups PASS [ 0.012s] biomcp-cli entities::study::tests::compare_expression_round_trips_source_result PASS [ 0.009s] biomcp-cli entities::study::tests::compare_mutations_round_trips_source_result PASS [ 0.011s] biomcp-cli entities::study::tests::expression_pairs_by_sample_round_trips_source_result PASS [ 0.011s] biomcp-cli entities::study::tests::expression_values_returns_sorted_values PASS [ 0.010s] biomcp-cli entities::study::tests::filter_validates_empty_criteria PASS [ 0.011s] biomcp-cli entities::study::tests::filter_round_trips_source_result PASS [ 0.011s] biomcp-cli entities::study::tests::list_studies_returns_available_data PASS [ 0.010s] biomcp-cli entities::study::tests::missing_root::missing_study_root_is_an_empty_catalog PASS [ 0.009s] biomcp-cli entities::study::tests::missing_root::normalize_study_id_rejects_path_like_input PASS [ 2.016s] biomcp-cli entities::drug::test_support::product_names::a_slow_discover_round_never_holds_the_refusal_hostage PASS [ 0.011s] biomcp-cli entities::study::tests::missing_root::query_with_a_missing_root_returns_not_in_local_cohorts PASS [ 0.012s] biomcp-cli entities::study::tests::mutation_counts_by_sample_round_trips_source_result PASS [ 0.013s] biomcp-cli entities::study::tests::mutation_outputs_include_caveat_when_structural_variants_exist PASS [ 0.012s] biomcp-cli entities::study::tests::query_study_missing_local_cohort_returns_coverage_signal PASS [ 0.011s] biomcp-cli entities::study::tests::query_study_structural_variants_round_trips_source_result PASS [ 0.011s] biomcp-cli entities::study::tests::query_study_mutations_round_trips_source_result PASS [ 0.010s] biomcp-cli entities::study::tests::query_type_from_flag_parses_supported_values PASS [ 0.012s] biomcp-cli entities::study::tests::query_study_unknown_study_returns_not_in_local_cohorts PASS [ 0.008s] biomcp-cli entities::study::tests::query_type_from_flag_rejects_unknown_type PASS [ 0.009s] biomcp-cli entities::study::tests::survival_endpoint_rejects_unknown_value PASS [ 0.009s] biomcp-cli entities::study::tests::survival_endpoint_from_flag_parses_supported_values PASS [ 0.013s] biomcp-cli entities::study::tests::survival_round_trips_source_result PASS [ 0.009s] biomcp-cli entities::trial::age_tests::provider_age_grammar_is_exact_and_fail_open PASS [ 0.010s] biomcp-cli entities::study::tests::top_mutated_genes_reports_ranked_rows PASS [ 0.010s] biomcp-cli entities::trial::age_tests::public_age_serde_is_object_only_and_validated PASS [ 0.009s] biomcp-cli entities::trial::documents::tests::eligibility_provenance_tracks_document_availability PASS [ 0.009s] biomcp-cli entities::trial::documents::tests::constructs_fixed_percent_encoded_path PASS [ 0.009s] biomcp-cli entities::trial::documents::tests::maps_manifest_metadata_handles_and_empty_state PASS [ 0.010s] biomcp-cli entities::trial::documents::tests::omits_handles_for_unsafe_advertised_filenames PASS [ 0.009s] biomcp-cli entities::trial::documents::tests::rejects_unsafe_document_filenames PASS [ 0.012s] biomcp-cli entities::trial::documents::tests::rejects_off_origin_redirect_before_contacting_target PASS [ 0.013s] biomcp-cli entities::trial::documents::tests::reported_oversize_remains_listable_and_actual_small_body_is_retrievable PASS [ 0.010s] biomcp-cli entities::trial::eligibility::strict_json::tests::depth_limit_is_inclusive_and_rejects_one_more_container PASS [ 0.010s] biomcp-cli entities::trial::eligibility::strict_json::tests::rejects_duplicate_members_at_any_depth PASS [ 0.084s] biomcp-cli entities::trial::eligibility::strict_json::tests::object_member_limit_is_inclusive_and_counts_duplicates PASS [ 0.102s] biomcp-cli entities::trial::documents::tests::permits_exact_body_limit_and_rejects_one_extra_byte PASS [ 0.011s] biomcp-cli entities::trial::eligibility::tests::direct_eligibility_wire_preserves_every_value_and_explicit_empty_collection PASS [ 0.013s] biomcp-cli entities::trial::eligibility::tests::direct_eligibility_wire_rejects_bad_identity_text_codes_and_members PASS [ 0.010s] biomcp-cli entities::trial::eligibility::tests::direct_eligibility_wire_rejects_duplicate_members PASS [ 0.012s] biomcp-cli entities::trial::eligibility::tests::direct_eligibility_wire_rejects_malformed_age_and_any_other_no_limit_rule PASS [ 0.010s] biomcp-cli entities::trial::eligibility::tests::trial_wire_distinguishes_a_missing_field_from_an_all_null_aggregate PASS [ 0.010s] biomcp-cli entities::trial::get::tests::get_rejects_non_nct_id_with_format_hint PASS [ 0.018s] biomcp-cli entities::trial::get::tests::nci_arm_conversion_preserves_every_occurrence_and_assignment PASS [ 0.145s] biomcp-cli entities::trial::eligibility::strict_json::tests::rejects_trailing_and_oversized_input PASS [ 0.040s] biomcp-cli entities::trial::get::tests::nci_criterion_sorting_preserves_source_occurrence_identity_and_classification PASS [ 0.048s] biomcp-cli entities::trial::get::tests::nci_eligibility_keeps_absence_and_an_explicit_empty_list_distinct PASS [ 0.216s] biomcp-cli entities::trial::eligibility::strict_json::tests::string_scalar_limit_is_inclusive PASS [ 0.128s] biomcp-cli entities::trial::get::tests::ctgov_eligibility_provenance_exists_only_for_explicit_text PASS [ 0.045s] biomcp-cli entities::trial::get::tests::nci_not_found_status_wins_before_an_oversized_body_is_read PASS [ 0.011s] biomcp-cli entities::trial::get::tests::nci_request_state_table_requests_eligibility_exactly_when_selected PASS [ 0.021s] biomcp-cli entities::trial::get::tests::nci_product_conversion_checks_enrollment_and_preserves_source_presence PASS [ 0.009s] biomcp-cli entities::trial::get::tests::normalize_nct_id_uppercases_prefix PASS [ 0.008s] biomcp-cli entities::trial::get::tests::parse_sections_accepts_contacts_and_all_includes_contacts PASS [ 0.008s] biomcp-cli entities::trial::get::tests::product_design_retains_a_relationship_failure_from_mismatched_sections PASS [ 0.009s] biomcp-cli entities::trial::get::tests::product_references_maps_each_section_state PASS [ 0.007s] biomcp-cli entities::trial::get::tests::trial_design_contracts::deserialization_rejects_duplicate_and_dangling_relationships PASS [ 0.008s] biomcp-cli entities::trial::get::tests::trial_design_contracts::flattened_design_keeps_assignment_member PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::missing_intervention_is_checked_against_the_supplied_collection PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::trial_design_distinguishes_section_presence_from_relationship_failures PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::trial_design_error_retains_sources_and_safe_public_projections PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::trial_design_preserves_all_relationship_failure_variants PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::trial_design_round_trips_shared_relationships PASS [ 0.008s] biomcp-cli entities::trial::get::tests::trial_design_contracts::type_wire_rejects_missing_unknown_and_empty_members PASS [ 0.013s] biomcp-cli entities::trial::search::ctgov::abbreviation_note_tests::default_source_names_the_ambiguous_abbreviation_keyword_search PASS [ 0.013s] biomcp-cli entities::trial::search::ctgov::abbreviation_note_tests::default_source_skips_the_ambiguity_note_for_full_words PASS [ 0.014s] biomcp-cli entities::trial::search::ctgov::abbreviation_note_tests::default_source_notes_the_lowercase_abbreviation_like_the_uppercase PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::age_filter_total_returns_native_total_when_exhausted PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::alias_expansion_next_page_error_is_actionable PASS [ 0.014s] biomcp-cli entities::trial::search::ctgov::tests::age_filter_uses_native_total_semantics_across_limits PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::alias_union_count_returns_exact_unique_total_when_exhausted PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::alias_union_does_not_claim_missing_nct_ids_before_filtering PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::alias_union_provenance_uses_the_claimed_normalized_nct_id PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::alias_union_returns_the_traversal_limit_reason_at_its_cap PASS [ 8.865s] biomcp-cli cli::article::tests::outage::rows_with_semantic_scholar_down_keep_exit_zero_complete_false PASS [ 0.015s] biomcp-cli entities::trial::search::ctgov::tests::an_over_age_unchecked_trial_never_marks_the_count_partial PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::build_ctgov_search_params_keeps_search_and_count_call_shapes_aligned PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::build_ctgov_search_params_maps_all_shared_fields PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::build_ctgov_search_params_preserves_none_values_without_defaults PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::build_ctgov_search_params_quotes_interventions_as_single_essie_literals PASS [ 0.013s] biomcp-cli entities::trial::search::ctgov::tests::count_all_keeps_an_omitted_provider_total_unknown PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::count_all_returns_approximate_for_age_only_filters PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::count_all_returns_exact_for_no_post_filters PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_cursor_preserves_next_page_token_after_offset_full_page_consumption PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_cursor_without_a_reported_total_keeps_the_provider_token PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_query_term_broadens_mutation_across_discovery_fields PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_query_term_joins_multi_phase_filters_with_and PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_query_term_broadens_simple_mutation_across_discovery_fields PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_query_term_preserves_hyphenated_eligibility_phrases PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_worker_outcome_skips_only_expanded_parser_rejections PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_workers_do_not_label_literal_single_intervention PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_workers_keep_literal_condition_during_intervention_fanout PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::facility_geo_verification_leaves_the_provider_total_unreported PASS [ 0.014s] biomcp-cli entities::trial::search::ctgov::tests::expensive_single_query_returns_the_traversal_limit_reason_at_its_cap PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::literal_condition_search_still_reports_limit_one_total PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::no_alias_expand_builds_one_literal_requested_name_worker PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::search_path_rejects_next_page_when_alias_expansion_uses_multiple_queries PASS [ 0.011s] biomcp-cli entities::trial::search::ctgov::tests::recorded_provider_phase_output_round_trips_to_exact_ctgov_request PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::skipped_expanded_worker_makes_search_and_count_totals_unknown PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::trial_location_requires_a_positive_distance PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::trial_numeric_filters_are_validated_before_request_construction PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::trial_search_rejects_absurd_offset_before_provider_setup PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::verification_emptied_zero_reports_the_provider_total PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::keep_paths::a_study_without_an_nct_id_is_kept_and_reported_without_a_fetch PASS [ 0.447s] biomcp-cli entities::trial::eligibility::strict_json::tests::collection_element_limit_is_inclusive PASS [ 0.014s] biomcp-cli entities::trial::search::eligibility::keep_paths::missing_eligibility_text_keeps_the_study_and_reports_it PASS [ 0.025s] biomcp-cli entities::trial::search::eligibility::keep_paths::a_verified_keyword_match_stays_out_of_the_report PASS [ 0.013s] biomcp-cli entities::trial::search::eligibility::tests::collect_eligibility_keywords_includes_supported_filters PASS [ 0.456s] biomcp-cli entities::trial::eligibility::strict_json::tests::normalized_event_limit_is_inclusive PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::tests::collect_eligibility_keywords_omits_blank_values PASS [ 0.013s] biomcp-cli entities::trial::search::eligibility::tests::collect_eligibility_keywords_skips_boolean_expressions PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_hyphenated_token PASS [ 0.016s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_does_not_match_without_plus_suffix PASS [ 0.017s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_hyphenated_plus_token PASS [ 0.011s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_word_token PASS [ 0.019s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_plus_suffix_token PASS [ 0.019s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_slash_separated_plus_tokens PASS [ 0.017s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_rejects_hyphenated_token_without_plus_suffix PASS [ 0.012s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_rejects_substring_word_match PASS [ 0.014s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_discards_exclusion_only_match PASS [ 0.015s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_discards_negated_inclusion_sentence PASS [ 0.014s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_fails_open_when_keyword_missing PASS [ 0.013s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_fails_open_without_exclusion_section PASS [ 0.013s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_keeps_when_inclusion_matches PASS [ 0.015s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_keeps_when_in_both_sections PASS [ 0.015s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_rejects_mixed_context_without_exclusion_section PASS [ 0.014s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_rejects_negated_without_exclusion_section PASS [ 0.009s] biomcp-cli entities::trial::search::eligibility::tests::facility_geo_discards_mixed_site_false_positive PASS [ 0.015s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_rejects_no_prior_without_exclusion_section PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::tests::facility_geo_keeps_same_site_match PASS [ 0.346s] biomcp-cli entities::trial::get::tests::nci_get_eligibility_uses_receipted_trial_record_shape PASS [ 0.011s] biomcp-cli entities::trial::search::eligibility::tests::split_eligibility_sections_detects_exclusion_header PASS [ 0.012s] biomcp-cli entities::trial::search::eligibility::tests::split_eligibility_sections_supports_key_exclusion_header PASS [ 0.008s] biomcp-cli entities::trial::search::eligibility::tests::verify_age_eligibility_fails_open_for_noncomparable_and_malformed_bounds PASS [ 0.012s] biomcp-cli entities::trial::search::eligibility::tests::split_eligibility_sections_without_exclusion_keeps_all_in_inclusion PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::tests::verify_age_eligibility_handles_sub_year_maximum_age PASS [ 0.009s] biomcp-cli entities::trial::search::eligibility::tests::verify_age_eligibility_handles_sub_year_minimum_age PASS [ 0.011s] biomcp-cli entities::trial::search::essie::tests::essie_escape_boolean_expression_handles_and_not PASS [ 0.013s] biomcp-cli entities::trial::search::essie::tests::criteria_query_and_verification_share_case_sensitive_operator_rules PASS [ 0.009s] biomcp-cli entities::trial::search::essie::tests::essie_escape_pins_the_escape_set_and_leaves_hyphens_literal PASS [ 0.011s] biomcp-cli entities::trial::search::essie::tests::essie_escape_boolean_expression_handles_leading_not PASS [ 0.011s] biomcp-cli entities::trial::search::essie::tests::essie_escape_boolean_expression_preserves_or_operators PASS [ 0.009s] biomcp-cli entities::trial::search::essie::tests::line_of_therapy_patterns_accepts_supported_values PASS [ 0.009s] biomcp-cli entities::trial::search::essie::tests::line_of_therapy_patterns_rejects_invalid_values PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_age_rejection_precedes_both_provider_requests PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_biomarker_like_fields_never_choose_or_duplicate_a_value PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_keyword_fallback_request_uses_keyword_not_concept_id PASS [ 0.015s] biomcp-cli entities::trial::search::nci::tests::nci_ambiguous_condition_refuses_instead_of_keyword_search PASS [ 0.012s] biomcp-cli entities::trial::search::nci::tests::nci_mm_refusal_leads_with_the_reading_and_names_the_trial_retry PASS [ 0.008s] biomcp-cli entities::trial::search::nci::tests::nci_phase_mapping_uses_i_ii_for_combined_phase PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_public_filter_table_is_explicit PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_search_falls_back_to_keyword_when_grounding_is_unavailable PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_search_falls_back_to_keyword_when_best_hit_lacks_nci_xref PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_search_prefers_grounded_disease_concept_id PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_source_rejects_early_phase1 PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_source_rejects_status_lists PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_status_mapping_uses_documented_single_value_filters PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::recorded_provider_phase_output_round_trips_to_exact_nci_request PASS [ 0.012s] biomcp-cli entities::trial::search::normalization::tests::normalize_intervention_query_canonicalizes_confirmed_drug_code_pattern PASS [ 0.011s] biomcp-cli entities::trial::search::normalization::tests::normalize_intervention_query_preserves_generic_multiword_names PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_phase_accepts_aliases PASS [ 0.010s] biomcp-cli entities::trial::search::normalization::tests::normalize_phase_rejects_invalid_value PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_sex_accepts_supported_values PASS [ 0.008s] biomcp-cli entities::trial::search::normalization::tests::normalize_sex_rejects_invalid_value PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_sponsor_type_accepts_supported_values PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_sponsor_type_rejects_invalid_value PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_status_accepts_comma_separated_values PASS [ 0.008s] biomcp-cli entities::trial::search::normalization::tests::normalize_status_accepts_ctgov_wording_and_aliases PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_status_rejects_comma_list_with_invalid_value PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_status_rejects_invalid_value PASS [ 0.008s] biomcp-cli entities::trial::search::normalization::tests::normalized_phase_filter_preserves_blank_as_absent PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::status_priority_prefers_recruiting_over_completed PASS [ 0.114s] biomcp-cli entities::trial::search::nci::tests::nci_keyword_degrade_note_reaches_the_search_page PASS [ 0.010s] biomcp-cli entities::trial::search::normalization::tests::trial_sources_reject_ambiguous_active_status_with_replacements PASS [ 0.116s] biomcp-cli entities::trial::search::nci::tests::nci_overlong_condition_truncates_instead_of_failing PASS [ 0.010s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_reference_wire_accepts_every_shared_value_state PASS [ 0.010s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_reference_wire_emits_exact_complete_shapes PASS [ 0.010s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_reference_wire_preserves_duplicates_for_strict_local_trial_rejection PASS [ 0.008s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_reference_wire_preserves_section_states_order_and_unicode PASS [ 0.009s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_stores_shared_references_directly PASS [ 0.112s] biomcp-cli entities::trial::search::nci::tests::nci_ungroundable_condition_keeps_the_keyword_degrade PASS [ 0.012s] biomcp-cli entities::variant::clinvar::tests::canonical_outcomes_and_provenance_match_selected_payload_source PASS [ 0.013s] biomcp-cli entities::variant::clinvar::tests::day_shaped_gate_lives_in_utils_and_dates_it_prints_come_from_the_shared_rule PASS [ 0.012s] biomcp-cli entities::variant::clinvar::tests::degraded_labels_name_the_failed_source_reason_and_fallback_age PASS [ 0.011s] biomcp-cli entities::variant::clinvar::tests::fallback_age_is_omitted_without_a_strict_day_shaped_date PASS [ 0.011s] biomcp-cli entities::variant::clinvar::tests::fallback_age_names_the_newest_of_several_dated_rows PASS [ 0.013s] biomcp-cli entities::variant::clinvar::tests::missing_numeric_variation_id_is_source_free_inapplicable PASS [ 5.827s] biomcp-cli entities::article::variant_search::tests::degraded_strict_leg_partials_mark_the_route_incomplete PASS [ 0.009s] biomcp-cli entities::variant::clinvar::tests::provider_errors_classify_into_rate_limit_and_provider_buckets PASS [ 0.010s] biomcp-cli entities::variant::erepo::tests::detail_identity_uses_path_and_reports_mismatches_as_internal PASS [ 0.012s] biomcp-cli entities::variant::clinvar::tests::unavailable_labels_name_the_failed_source_and_reason PASS [ 0.010s] biomcp-cli entities::variant::erepo::tests::gene_preview_omits_oversized_strings_without_cutting_them PASS [ 0.020s] biomcp-cli entities::variant::erepo::tests::detail_retrieval_consumes_the_summary_selected_plan PASS [ 0.015s] biomcp-cli entities::variant::erepo::tests::receipted_apc_detail_preserves_the_provider_at_id PASS [ 0.011s] biomcp-cli entities::variant::erepo::tests::receipted_guideline_pages_preserve_labels_and_parse_only_semver PASS [ 0.013s] biomcp-cli entities::variant::erepo::tests::receipted_pten_gene_page_is_compact_bounded_and_truthfully_paged PASS [ 0.011s] biomcp-cli entities::variant::erepo::tests::selector_accepts_an_exact_historical_version PASS [ 0.009s] biomcp-cli entities::variant::erepo::tests::selectors_require_detail PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::headline_shows_the_current_transcript_version_clinvar_carries PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::mane_annotation_names_change_reads_the_mane_stem_only PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::mane_numbering_refusal_names_the_residue_and_the_lookalike PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_absent_refusal_fires_mid_sequence PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_absent_refusal_without_a_mane_transcript_claims_only_the_headline PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_headlines_the_mane_transcript_of_the_query PASS [ 0.010s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_keeps_a_single_matching_hit PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_keeps_the_named_brca1_change_over_a_clinvar_lookalike PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_keeps_the_named_change_over_a_clinvar_lookalike PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_a_many_row_record_past_the_protein_end PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_a_position_past_the_canonical_protein_end PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_a_proven_other_numbering_without_a_mane_transcript PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_h1883d_past_the_canonical_protein_end 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 PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_unchecked_numbering_without_a_mane_transcript PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_unchecked_numbering_without_facts PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_pins_the_true_other_transcript_numbering_note PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_prefers_the_canonical_spelling_over_conflicting_records PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_prefers_the_clinvar_named_hit_over_first_match PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_a_clinvar_lookalike_without_the_named_change PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_a_hit_without_any_protein_change PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_a_long_isoform_spelling_of_a_mane_numbered_request PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_a_lookalike_without_facts PASS [ 0.314s] biomcp-cli entities::variant::clinvar::tests::add_clinvar_admits_rate_limiting_when_a_sustained_429_outlives_the_deadline PASS [ 0.010s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_conflicting_clinvar_records PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_an_isoform_spelling_of_a_mane_numbered_request PASS [ 0.314s] biomcp-cli entities::variant::clinvar::tests::add_clinvar_labels_a_deadline_miss_when_the_direct_answer_never_arrives PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_when_no_clinvar_record_names_one PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_resolves_the_requested_numbering_without_a_marker PASS [ 0.014s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_resolves_a_past_insert_change_on_mane_numbering PASS [ 0.014s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_resolves_the_naming_annotation_without_a_marker PASS [ 9.640s] biomcp-cli cli::article::tests::entities_disease_links::article_entities_disease_rows_link_the_named_disease_or_search PASS [ 0.010s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_without_matching_hits_keeps_the_search_suggestion PASS [ 0.010s] biomcp-cli entities::variant::get::protein_change_tests::requested_reference_residue_parses_compact_substitutions PASS [ 0.014s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_returns_the_mane_named_candidate_of_two_alias_hits PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_skips_the_note_when_the_hit_spells_the_request PASS [ 0.010s] biomcp-cli entities::variant::get::tests::cancerhotspots_checked_absence_is_empty_not_data PASS [ 0.011s] biomcp-cli entities::variant::get::tests::cancerhotspots_enrichment_uses_requested_change_not_resolved_hgvsp PASS [ 0.009s] biomcp-cli entities::variant::get::tests::cancerhotspots_upstream_failure_omits_recurrence_and_preserves_cbioportal PASS [ 0.013s] biomcp-cli entities::variant::get::tests::agreeing_record_level_classification_drops_the_cached_copy_note PASS [ 0.012s] biomcp-cli entities::variant::get::tests::civic_molecular_profile_name_sends_the_one_letter_change PASS [ 0.014s] biomcp-cli entities::variant::get::tests::coordinate_less_prediction_is_inapplicable_without_alphagenome_credit PASS [ 0.023s] biomcp-cli entities::variant::get::tests::declared_assembly_conflicting_with_the_prefix_refuses_naming_both_builds PASS [ 0.029s] biomcp-cli entities::variant::get::tests::declared_assembly_agreeing_with_the_prefix_resolves_the_one_build_hit PASS [ 0.007s] biomcp-cli entities::variant::get::tests::default_section_stripping_preserves_cached_civic_but_removes_graphql_context PASS [ 0.017s] biomcp-cli entities::variant::get::tests::declared_assembly_hg38_on_a_grch37_only_coordinate_refuses_as_not_found PASS [ 0.008s] biomcp-cli entities::variant::get::tests::gwas_only_request_detection_matches_section_flags PASS [ 2.371s] biomcp-cli entities::gene::gencc::tests::first_publication_crash_recovery_never_requires_an_incomplete_generation PASS [ 0.035s] biomcp-cli entities::variant::get::tests::declared_assembly_hg19_on_the_grch37_only_coordinate_finds_braf PASS [ 0.013s] biomcp-cli entities::variant::get::tests::exact_helper_candidate_selection_rejects_conflicts_and_missing_evidence PASS [ 0.012s] biomcp-cli entities::variant::get::tests::gwas_only_request_returns_variant_when_gwas_is_unavailable PASS [ 0.007s] biomcp-cli entities::variant::get::tests::gwas_only_variant_stub_keeps_requested_rsid PASS [ 1.966s] biomcp-cli entities::gene::gencc::tests::state_only_304_and_failure_crashes_select_one_whole_visible_record PASS [ 0.009s] biomcp-cli entities::variant::get::tests::indirect_clinvar_fallback_preserves_accession_freshness_and_submitter_count PASS [ 0.012s] biomcp-cli entities::variant::get::tests::headline_follows_record_level_germline_classification_and_names_ncbi PASS [ 0.010s] biomcp-cli entities::variant::get::tests::known_build_not_found_names_the_build_and_upstream_status PASS [ 0.009s] biomcp-cli entities::variant::get::tests::parse_sections_all_excludes_key_required_prediction PASS [ 0.008s] biomcp-cli entities::variant::get::tests::parse_sections_supports_new_variant_sections PASS [ 0.009s] biomcp-cli entities::variant::get::tests::population_result_names_the_pinned_dataset_and_keeps_sources_separate PASS [ 0.010s] biomcp-cli entities::variant::get::tests::population_status_json_keeps_explicit_null_exome_and_genome_results PASS [ 0.012s] biomcp-cli entities::variant::get::tests::record_without_germline_classification_keeps_derived_value_labeled PASS [ 0.010s] biomcp-cli entities::variant::get::tests::therapies_from_oncokb_truncation_shows_count PASS [ 0.018s] biomcp-cli entities::variant::get::tests::ticket_589_variant_preflights_are_inapplicable_without_provider_credit PASS [ 0.008s] biomcp-cli entities::variant::get::tests::transcript_hgvs_fallback_queries_clinvar_coding_identity PASS [ 0.019s] biomcp-cli entities::variant::get::tests::transcript_hgvs_get_and_normalize_share_normalized_genomic_identity PASS [ 0.008s] biomcp-cli entities::variant::get::tests::transcript_hgvs_normalization_failure_suggests_variant_normalize PASS [ 0.009s] biomcp-cli entities::variant::get::tests::variant_detail_coordinate_serializes_with_its_answering_build PASS [ 0.009s] biomcp-cli entities::variant::get::tests::variant_json_omits_legacy_name_when_absent PASS [ 0.010s] biomcp-cli entities::variant::get::tests::workflow_signal_detects_clinvar_metadata_before_section_stripping PASS [ 0.029s] biomcp-cli entities::variant::gwas::tests::a_retired_endpoint_degrades_the_rendered_gwas_section_with_no_retry PASS [ 0.009s] biomcp-cli entities::variant::gwas::tests::collect_supporting_pmids_dedupes_case_insensitively PASS [ 4.709s] biomcp-cli entities::disease::get::tests::stale_search_json_carries_the_cache_age_in_the_meta_notes PASS [ 0.010s] biomcp-cli entities::variant::gwas::tests::combined_gene_and_trait_rows_are_an_intersection_before_p_value_filtering PASS [ 0.010s] biomcp-cli entities::variant::gwas::tests::disjoint_gene_and_trait_rows_return_no_union_rows PASS [ 0.009s] biomcp-cli entities::variant::gwas::tests::malformed_exact_p_value_parts_are_bounded_and_fall_back_truthfully PASS [ 0.010s] biomcp-cli entities::variant::gwas::tests::scientific_comparison_is_safe_for_extreme_in_memory_exponents PASS [ 0.009s] biomcp-cli entities::variant::gwas::tests::search_gwas_page_rejects_invalid_probability_before_client_construction PASS [ 0.009s] biomcp-cli entities::variant::gwas::tests::the_retired_error_class_is_the_one_fact_of_retirement PASS [ 0.010s] biomcp-cli entities::variant::gwas::tests::underflowed_exact_p_values_remain_truthful_and_filterable PASS [ 0.011s] biomcp-cli entities::variant::normalization::tests::accepts_first_slice_transcript_coding_hgvs PASS [ 0.009s] biomcp-cli entities::variant::normalization::tests::batch_limit_is_rejected_before_any_request_is_constructed PASS [ 0.009s] biomcp-cli entities::variant::normalization::tests::car_alias_metadata_describes_distinct_returned_aliases PASS [ 0.012s] biomcp-cli entities::variant::normalization::tests::car_grammar_accepts_only_versioned_refseq_coding_or_genomic_hgvs PASS [ 0.011s] biomcp-cli entities::variant::normalization::tests::invalid_grammar_is_rejected_before_any_request_is_constructed PASS [ 0.351s] biomcp-cli entities::variant::get::tests::civic_reports_the_accepted_evidence_the_one_letter_name_finds PASS [ 0.011s] biomcp-cli entities::variant::normalization::tests::rejects_non_transcript_guardrail_inputs PASS [ 0.020s] biomcp-cli entities::variant::resolution::tests::a_gene_name_alone_is_not_reported_as_an_invalid_amino_acid PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::classify_variant_input_detects_search_only_shorthand PASS [ 0.333s] biomcp-cli entities::variant::get::tests::protein_change_get_checks_the_canonical_protein_before_answering PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::classify_variant_input_detects_transcript_coding_hgvs_before_rejecting PASS [ 0.329s] biomcp-cli entities::variant::get::tests::transcript_hgvs_alias_refuses_hits_without_the_exact_coding_alias PASS [ 0.019s] biomcp-cli entities::variant::resolution::tests::classify_variant_input_normalizes_long_form_single_token_protein_change PASS [ 0.010s] biomcp-cli entities::variant::resolution::tests::default_assembly_precedence_is_explicit_then_environment_then_grch38 PASS [ 0.019s] biomcp-cli entities::variant::resolution::tests::coordinate_normalizer_handles_aliases_and_alternate_spellings PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::clinvar_style_names_refuse_with_the_colon_working_form PASS [ 0.010s] biomcp-cli entities::variant::resolution::tests::every_protein_spelling_refuses_invalid_residue_letters PASS [ 0.012s] biomcp-cli entities::variant::resolution::tests::identity_comparison_accepts_identical_complex_protein_hgvs PASS [ 0.012s] biomcp-cli entities::variant::resolution::tests::identity_comparison_is_indeterminate_for_missing_or_unlinked_annotation_evidence PASS [ 0.013s] biomcp-cli entities::variant::resolution::tests::identity_comparison_preserves_provider_alias_and_checks_every_known_field PASS [ 0.022s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_accepts_gene_protein_range_deletions PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_accepts_prefixed_short_gene_protein_change PASS [ 0.019s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_accepts_long_form_gene_protein_change PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_accepts_genomic_indel_and_repeat_forms PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_egfr_l858r PASS [ 0.011s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_normalizes_uppercase_rsid_prefix PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_kras_g12c PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_examples PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_points_transcript_hgvs_to_normalize_when_direct_parse_is_used PASS [ 0.022s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_points_long_form_single_token_to_search_variant PASS [ 0.022s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_points_search_only_shorthand_to_search_variant PASS [ 0.015s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_refuses_protein_change_with_invalid_residue_letter PASS [ 0.012s] biomcp-cli entities::variant::resolution::tests::protein_normalization_preserves_identity_across_supported_spellings PASS [ 0.011s] biomcp-cli entities::variant::resolution::tests::protein_range_deletions_normalize_across_one_and_three_letter_spellings PASS [ 0.015s] biomcp-cli entities::variant::resolution::tests::structured_article_identity_accepts_refseq_forms_and_preserves_chr_compatibility PASS [ 0.020s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_suggests_search_for_complex_alteration_text PASS [ 0.013s] biomcp-cli entities::variant::resolution::tests::structured_article_identity_requires_refseq_build_and_rejects_duplicate_components PASS [ 0.431s] biomcp-cli entities::variant::get::tests::transcript_hgvs_alias_resolves_intronic_deletion_when_normalizers_refuse PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::unsupported_variant_error_describes_supported_indel_forms PASS [ 0.020s] biomcp-cli entities::variant::resolution::tests::uppercase_three_letter_residues_remain_valid PASS [ 0.012s] biomcp-cli entities::variant::search::tests::absent_and_null_annotation_sets_are_exact_empty_complete PASS [ 0.023s] biomcp-cli entities::variant::resolution::tests::variant_identity_inputs_refuse_transcript_anchor_half_parses PASS [ 0.018s] biomcp-cli entities::variant::resolution::tests::versioned_refseq_rows_normalize_to_their_chromosome_and_build PASS [ 0.013s] biomcp-cli entities::variant::search::tests::article_provider_aggregation_follows_precedence_and_refseq_fallback_states PASS [ 0.009s] biomcp-cli entities::variant::search::tests::article_provider_aggregation_is_order_independent_and_selects_stable_alias PASS [ 0.010s] biomcp-cli entities::variant::search::tests::article_provider_aggregation_marks_distinct_compatible_and_indeterminate_sets PASS [ 0.009s] biomcp-cli entities::variant::search::tests::candidate_scan_exhaustion_requires_empty_page_or_reaching_provider_total PASS [ 0.012s] biomcp-cli entities::variant::search::tests::every_snpeff_failure_bound_is_empty_false_across_exact_and_safe_for_broad_get PASS [ 0.010s] biomcp-cli entities::variant::search::tests::exact_aggregation_marks_missing_identity_evidence_indeterminate PASS [ 0.012s] biomcp-cli entities::variant::search::tests::exact_aggregation_filters_before_pagination_and_keeps_cap_truthful PASS [ 0.012s] biomcp-cli entities::variant::search::tests::exact_aggregation_retains_identical_complex_protein_hgvs PASS [ 0.007s] biomcp-cli entities::variant::search::tests::filter_statuses_describe_evaluation_and_keep_canonical_order PASS [ 0.013s] biomcp-cli entities::variant::search::tests::exact_projection_keeps_paired_snpeff_roles_separate_from_dbnsfp_match PASS [ 0.013s] biomcp-cli entities::variant::search::tests::malformed_snpeff_isolated_from_exact_broad_and_get_siblings PASS [ 0.009s] biomcp-cli entities::variant::search::tests::quality_score_prioritizes_significance_and_frequency PASS [ 0.010s] biomcp-cli entities::variant::search::tests::resolution_status_follows_compatible_indeterminate_and_exhaustive_truth_table PASS [ 0.012s] biomcp-cli entities::variant::search::tests::normalized_source_identity_key_deduplicates_alias_order_and_spelling PASS [ 0.017s] biomcp-cli entities::variant::search::tests::matched_role_requires_one_complete_transcript_specific_tuple PASS [ 0.009s] biomcp-cli entities::variant::search::tests::search_query_summary_includes_hgvsc_and_rsid PASS [ 0.008s] biomcp-cli entities::variant::search::tests::search_query_summary_includes_residue_alias_marker PASS [ 0.012s] biomcp-cli entities::variant::search::tests::split_snpeff_fields_do_not_inherit_dbnsfp_match_role PASS [ 0.013s] biomcp-cli entities::variant::search::tests::transcript_annotation_page_budget_is_all_or_nothing_at_256_kib PASS [ 0.009s] biomcp-cli entities::variant::structure::tests::cancerhotspots_result_matrix_classifies_contact_and_applicability PASS [ 0.009s] biomcp-cli entities::variant::structure::tests::domain_result_matrix_classifies_contact_and_applicability PASS [ 0.007s] biomcp-cli entities::variant::structure::tests::hgvsp_position_extracts_three_letter_short_and_accession_prefixed_aliases PASS [ 6.430s] biomcp-cli entities::article::variant_search::tests::fulltext_annotations_preserve_typed_identity_requirements PASS [ 0.011s] biomcp-cli entities::variant::structure::tests::mismatched_reference_residue_leaves_no_placement_and_reports_every_alias_position PASS [ 0.012s] biomcp-cli entities::variant::structure::tests::normalize_hgvsp_change_matches_accession_prefixed_aliases PASS [ 0.008s] biomcp-cli entities::variant::structure::tests::reference_residue_check_verifies_mismatches_and_bounds PASS [ 0.009s] biomcp-cli error::tests::api_key_rejected_display_includes_recovery_guidance PASS [ 0.012s] biomcp-cli entities::variant::structure::tests::verified_reference_residue_keeps_the_exact_match_placement PASS [ 0.010s] biomcp-cli error::tests::api_key_required_display_includes_env_var_and_docs PASS [ 0.010s] biomcp-cli error::tests::article_search_deadline_projection_names_the_deadline PASS [ 0.008s] biomcp-cli error::tests::citation_evidence_deadline_names_the_command_and_never_a_fake_source PASS [ 0.008s] biomcp-cli error::tests::citation_evidence_refusals_name_their_providers_and_reasons PASS [ 0.009s] biomcp-cli error::tests::clingen_provider_labels_and_legacy_aliases_remain_distinct PASS [ 0.009s] biomcp-cli error::tests::ddinter_bundle_read_errors_render_with_their_file_detail PASS [ 0.008s] biomcp-cli error::tests::ddinter_decode_failures_name_the_api PASS [ 0.007s] biomcp-cli error::tests::ddinter_download_failures_keep_the_generic_line_and_leak_no_body PASS [ 0.009s] biomcp-cli error::tests::ddinter_html_download_replies_name_the_download_not_the_bundle_read PASS [ 0.010s] biomcp-cli error::tests::external_failure_message_bound_is_utf8_safe_at_and_after_512_bytes PASS [ 0.008s] biomcp-cli error::tests::external_failure_projection_never_exposes_the_request_url PASS [ 0.009s] biomcp-cli error::tests::external_failure_reports_local_io_kind_and_code_without_paths PASS [ 0.009s] biomcp-cli error::tests::human_source_errors_share_safe_projection PASS [ 0.009s] biomcp-cli error::tests::not_found_display_includes_suggestion PASS [ 0.009s] biomcp-cli error::tests::source_policy_inventory_is_bounded_and_actionable PASS [ 0.010s] biomcp-cli error::tests::source_wrapper_delegates_classifiers_for_every_wrappable_family PASS [ 0.008s] biomcp-cli error::tests::source_wrapper_never_projects_raw_non_source_fields PASS [ 0.010s] biomcp-cli error::tests::who_pq_download_failures_keep_the_generic_line_and_leak_no_body PASS [ 0.009s] biomcp-cli error::tests::who_pq_header_mismatches_render_with_file_and_column_detail PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::body_exhaustion_and_stream_errors_have_distinct_statuses PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::explicit_http_policy_rejects_invalid_entries_before_listening PASS [ 0.008s] biomcp-cli mcp::shell::http_server::tests::global_host_policy_matches_names_ports_case_and_ipv6 PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::index_handler_reports_streamable_http_surface PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::loopback_http_defaults_to_local_host_headers PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::non_loopback_http_requires_an_explicit_policy PASS [ 0.009s] biomcp-cli mcp::shell::tests::a_conflicting_scalar_bound_panics_instead_of_first_value_wins PASS [ 0.010s] biomcp-cli mcp::shell::tests::a_one_sided_max_length_clash_panics_instead_of_narrowing PASS [ 0.009s] biomcp-cli mcp::shell::tests::a_one_sided_unique_items_clash_panics_instead_of_narrowing PASS [ 0.009s] biomcp-cli mcp::shell::tests::a_type_clash_between_branches_panics_instead_of_first_value_wins PASS [ 0.009s] biomcp-cli mcp::shell::tests::an_enum_on_one_side_of_a_same_type_merge_panics PASS [ 0.009s] biomcp-cli mcp::shell::tests::flat_pairs_keep_each_arms_constraints_without_panicking PASS [ 0.011s] biomcp-cli mcp::shell::tests::cache_family_rejection_message_mentions_local_path_disclosure PASS [ 0.018s] biomcp-cli mcp::shell::tests::binary_downloads_are_rejected_but_manifests_remain_allowed PASS [ 0.014s] biomcp-cli mcp::shell::tests::generic_mcp_rejection_message_for_args_stays_read_only_for_mutating_commands PASS [ 0.013s] biomcp-cli mcp::shell::tests::mcp_full_text_path_redaction_is_field_driven_for_text_and_json PASS [ 0.010s] biomcp-cli mcp::shell::tests::mcp_human_error_and_resource_boundaries_remove_terminal_controls PASS [ 0.010s] biomcp-cli mcp::shell::tests::raw_mcp_local_input_inventory_matches_the_cli_surface PASS [ 0.025s] biomcp-cli mcp::shell::tests::raw_local_input_rejection_covers_every_spelling_and_variant_route PASS [ 9.984s] biomcp-cli cli::stale_json_note_tests::no_cache_skips_the_cache_for_the_spawned_clingen_fetch PASS [ 0.016s] biomcp-cli mcp::shell::tests::raw_mcp_rejects_unparseable_commands_before_execution PASS [ 7.982s] biomcp-cli entities::article::search::tests::deadline::failed_primaries_still_return_answered_rows PASS [ 0.012s] biomcp-cli mcp::shell::tests::typed_branches_stay_entity_specific PASS [ 0.014s] biomcp-cli mcp::shell::tests::typed_gene_cspec_rejects_version_and_capture_together_before_network_access PASS [ 0.017s] biomcp-cli mcp::shell::tests::ticket_1120::raw_biomcp_reports_reversed_search_before_the_generic_fallback PASS [ 0.665s] biomcp-cli entities::variant::get::tests::population_request_requires_a_grch38_genomic_coordinate PASS [ 0.010s] biomcp-cli mcp::shell::tests::typed_gene_cspec_schema_exposes_bounded_capture_paging_without_raw_bytes PASS [ 0.012s] biomcp-cli mcp::shell::tests::typed_search_maps_each_published_entity_and_rejects_schema_mismatches PASS [ 0.012s] biomcp-cli mcp::shell::tests::typed_schemas_publish_flat_roots_and_reject_bad_input PASS [ 0.011s] biomcp-cli mcp::shell::tests::typed_search_rejects_wrong_type_pagination_and_lists_valid_entities PASS [ 0.009s] biomcp-cli mcp::shell::tests::typed_variant_articles_preserves_article_resolution_fields_and_nullability PASS [ 0.014s] biomcp-cli mcp::shell::tests::typed_variant_articles_executes_in_memory_without_stdin_or_paths PASS [ 0.009s] biomcp-cli mcp::shell::tests::typed_variant_articles_schema_is_bounded_and_has_structured_identity_fields PASS [ 0.009s] biomcp-cli mcp::shell::tests::typed_variant_car_schema_is_bounded PASS [ 0.010s] biomcp-cli mcp::shell::trial_phase::tests::schema_advertises_each_documented_phase_spelling PASS [ 0.047s] biomcp-cli mcp::shell::tests::ticket_1120::raw_biomcp_tool_preserves_an_omitted_ctgov_total_as_null PASS [ 0.012s] biomcp-cli mcp::shell::typed_get_tests::adverse_event_schema_and_mapper_deduplicate_sections_only_for_that_entity PASS [ 0.012s] biomcp-cli mcp::shell::typed_get_tests::cli_catalog_gettable_inventory_matches_clap_get_subcommands PASS [ 10.400s] biomcp-cli cli::article::tests::entities_disease_links::article_entities_skin_neoplasms_row_keeps_its_search_command PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::mcp_json_removes_every_path_shape_and_reserializes_on_presence PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::mcp_json_without_local_paths_preserves_cli_bytes PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::shared_mcp_error_conversion_hides_trial_design_details PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::typed_article_prose_keyword_json_adds_only_the_output_flag PASS [ 0.011s] biomcp-cli mcp::shell::typed_get_tests::typed_article_get_maps_the_pdf_option_to_the_cli_flag PASS [ 0.120s] biomcp-cli mcp::shell::tests::mcp_allowlist_blocks_mutating_commands PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::typed_variant_erepo_schema_prevents_selector_mixing_before_calls PASS [ 0.013s] biomcp-cli mcp::shell::typed_get_tests::typed_get_schema_and_mapper_match_independent_cli_catalog_oracle PASS [ 0.009s] biomcp-cli next_command::tests::renders_each_argument_as_its_own_shell_word PASS [ 0.007s] biomcp-cli render::chart::tests::chart_text_removes_untrusted_controls_without_touching_unicode PASS [ 0.011s] biomcp-cli render::chart::tests::bar_family_renderers_produce_svg PASS [ 0.009s] biomcp-cli render::chart::tests::co_occurrence_heatmap_rejects_palette_override PASS [ 0.008s] biomcp-cli render::chart::tests::co_occurrence_heatmap_renders_inline_svg PASS [ 0.011s] biomcp-cli render::chart::tests::co_occurrence_heatmap_respects_custom_dimensions PASS [ 0.010s] biomcp-cli render::chart::tests::compare_chart_validation_lists_valid_types PASS [ 0.009s] biomcp-cli render::chart::tests::display_mutation_class_maps_known_and_passes_through_unknown PASS [ 0.012s] biomcp-cli render::chart::tests::expression_scatter_renders_inline_svg_and_rejects_empty_points PASS [ 0.011s] biomcp-cli render::chart::tests::inline_svg_output_respects_custom_dimensions PASS [ 0.012s] biomcp-cli render::chart::tests::heatmap_and_stacked_bar_svg_outputs_write_files PASS [ 0.011s] biomcp-cli render::chart::tests::inline_svg_target_returns_svg_markup PASS [ 0.010s] biomcp-cli render::chart::tests::mutation_and_cna_svg_output_use_human_readable_labels PASS [ 0.010s] biomcp-cli render::chart::tests::mutation_compare_stacked_bar_renders_inline_svg PASS [ 0.011s] biomcp-cli render::chart::tests::mutation_compare_stacked_bar_uses_integer_sample_ticks PASS [ 0.009s] biomcp-cli render::chart::tests::mutation_compare_validation_lists_stacked_bar PASS [ 0.010s] biomcp-cli render::chart::tests::mutation_waterfall_renders_inline_svg PASS [ 0.088s] biomcp-cli mcp::shell::typed_get_tests::typed_and_raw_nci_trial_get_preserve_all_recorded_assignments PASS [ 0.010s] biomcp-cli render::chart::tests::output_target_validation_rejects_incompatible_sizing_flags PASS [ 0.009s] biomcp-cli render::chart::tests::query_chart_validation_lists_valid_types PASS [ 0.010s] biomcp-cli render::chart::tests::render_survival_chart_returns_error_when_all_groups_have_empty_km_points PASS [ 0.008s] biomcp-cli render::chart::tests::standalone_chart_validation_rejects_invalid_survival_chart PASS [ 0.019s] biomcp-cli render::chart::tests::pie_histogram_density_and_distribution_renderers_produce_terminal_output PASS [ 0.011s] biomcp-cli render::chart::tests::rendered_terminal_and_svg_charts_sanitize_dynamic_text_before_the_backend PASS [ 0.010s] biomcp-cli render::chart::tests::structural_variant_chart_validation_reports_unsupported_surface PASS [ 0.009s] biomcp-cli render::chart::tests::survival_svg_output_supports_kaplan_meier_curves PASS [ 0.008s] biomcp-cli render::human::tests::applies_inline_and_document_control_policies PASS [ 0.008s] biomcp-cli render::chart::tests::terminal_chart_respects_custom_cols_and_rows PASS [ 0.007s] biomcp-cli render::human::tests::provider_sanitizer_collapses_maximal_ignorable_runs PASS [ 0.008s] biomcp-cli render::human::tests::provider_sanitizer_control_fixtures_are_byte_exact PASS [ 0.009s] biomcp-cli render::human::tests::is_idempotent_without_collapsing_authored_spaces PASS [ 0.009s] biomcp-cli render::human::tests::provider_sanitizer_counts_a_replacement_as_retained_base PASS [ 0.008s] biomcp-cli render::human::tests::provider_sanitizer_encodes_every_non_literal_ascii_graphic PASS [ 0.009s] biomcp-cli render::human::tests::provider_sanitizer_inserts_dotted_circle_only_before_orphan_marks PASS [ 0.009s] biomcp-cli render::human::tests::provider_sanitizer_matches_unicode_16_boundaries PASS [ 0.010s] biomcp-cli render::human::tests::removes_bidi_controls_and_preserves_biomedical_unicode PASS [ 0.008s] biomcp-cli render::json::json_error_tests::who_pq_sync_failure_json_recovery_carries_no_local_data_path PASS [ 0.010s] biomcp-cli render::human::tests::sanitizes_terminal_sequence_families PASS [ 0.010s] biomcp-cli render::json::tests::disease_unavailable_outcome_and_provenance_agree_without_source_credit PASS [ 0.009s] biomcp-cli render::json::tests::input_limit_error_exposes_only_its_stable_byte_budget PASS [ 0.332s] biomcp-cli entities::variant::structure::tests::mutyh_g368d_on_q9uif7_never_reports_position_368_as_a_placement PASS [ 0.009s] biomcp-cli render::json::tests::json_render_drug_entity_omits_family_fields_when_absent PASS [ 0.011s] biomcp-cli render::json::tests::json_render_drug_entity PASS [ 0.010s] biomcp-cli render::json::tests::json_render_gene_entity PASS [ 0.010s] biomcp-cli render::json::tests::json_render_gene_entity_with_sparse_disgenet_omits_optional_fields PASS [ 0.011s] biomcp-cli render::json::tests::source_errors_include_normalized_source_and_safe_recovery PASS [ 0.009s] biomcp-cli render::json::tests::structured_error_messages_omit_external_and_local_details PASS [ 0.009s] biomcp-cli render::json::tests::to_alias_suggestion_json_includes_alias_resolution_and_next_commands PASS [ 0.010s] biomcp-cli render::json::tests::to_alias_suggestion_json_includes_ambiguous_resolution PASS [ 0.011s] biomcp-cli render::json::tests::to_discover_json_adds_discover_meta_aliases PASS [ 0.011s] biomcp-cli render::json::tests::to_discover_json_keeps_relational_redirect_commands_only_under_meta PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_adds_meta_and_flattens_entity PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_filters_blank_evidence_rows PASS [ 0.165s] biomcp-cli mcp::shell::typed_get_tests::typed_and_raw_trial_get_return_exact_age_objects PASS [ 0.011s] biomcp-cli render::json::tests::to_entity_json_filters_blank_section_source_rows PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_value_adds_meta_and_flattens_entity PASS [ 0.008s] biomcp-cli render::json::tests::to_entity_json_with_suggestions_keeps_empty_suggestions_array PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_with_suggestions_adds_suggestions_meta PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_with_workflow_adds_descriptor_without_losing_existing_meta PASS [ 0.010s] biomcp-cli render::json::tests::to_pretty_lexically_escapes_terminal_controls_without_changing_values PASS [ 0.010s] biomcp-cli render::json::tests::to_pretty_serializes_with_indentation PASS [ 0.007s] biomcp-cli render::json::tests::typed_body_limit_preserves_legacy_api_error_code_and_message PASS [ 0.010s] biomcp-cli render::json::tests::to_variant_guidance_json_includes_alias_resolution_and_next_commands PASS [ 0.009s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_count_markdown_renders_bucket_rows PASS [ 0.025s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_card_searches_unverified_report_drug_name PASS [ 0.025s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_search_markdown_renders_contextual_empty_state PASS [ 0.027s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_markdown_includes_openfda_sections PASS [ 0.027s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_search_markdown_can_label_aggregate_summary PASS [ 0.022s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_search_markdown_renders_trial_fallback_section PASS [ 0.027s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_search_markdown_renders_summary_and_filters PASS [ 0.009s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_summary_context_names_the_exact_divisor_and_is_backward_compatible PASS [ 0.009s] biomcp-cli render::markdown::adverse_event::tests::vaers_only_markdown_renders_snake_case_status_labels PASS [ 0.023s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_subset_markdown_keeps_identity_and_only_selected_bodies PASS [ 0.021s] biomcp-cli render::markdown::adverse_event::tests::combined_adverse_event_search_markdown_skips_query_not_vaccine_status PASS [ 0.025s] biomcp-cli render::markdown::adverse_event::tests::combined_adverse_event_search_markdown_appends_vaers_summary_for_unavailable_status PASS [ 0.023s] biomcp-cli render::markdown::adverse_event::tests::device_event_renderers_include_openfda_content PASS [ 0.011s] biomcp-cli render::markdown::article::tests::article_batch_markdown_renders_compact_rows PASS [ 0.250s] biomcp-cli mcp::shell::typed_get_tests::cli_typed_and_raw_trial_get_return_exact_structured_references PASS [ 0.025s] biomcp-cli render::markdown::adverse_event::tests::recall_search_markdown_renders_result_table PASS [ 0.009s] biomcp-cli render::markdown::article::tests::article_graph_markdown_renders_expected_table_headers PASS [ 0.007s] biomcp-cli render::markdown::article::tests::article_ranking_why_rescue_composes_with_lexical_reason PASS [ 0.009s] biomcp-cli render::markdown::article::tests::article_ranking_why_hybrid_includes_score_and_lexical_context PASS [ 0.010s] biomcp-cli render::markdown::article::tests::article_ranking_why_semantic_includes_score_and_lexical_context PASS [ 0.023s] biomcp-cli render::markdown::article::tests::article_entities_markdown_uses_safe_gene_search_commands PASS [ 0.009s] biomcp-cli render::markdown::article::tests::article_ranking_why_tier1_mixed_shows_title_plus_abstract PASS [ 0.009s] biomcp-cli render::markdown::article::tests::article_recommendations_markdown_sanitizes_provider_fields PASS [ 0.024s] biomcp-cli render::markdown::article::tests::article_markdown_renders_resolved_fulltext_source_label PASS [ 0.034s] biomcp-cli render::markdown::article::tests::article_entities_markdown_prints_get_commands_for_accepted_identifiers PASS [ 0.023s] biomcp-cli render::markdown::article::tests::article_markdown_renders_semantic_scholar_and_indexing_sections PASS [ 0.010s] biomcp-cli render::markdown::article::tests::article_related_tables_render_typed_identifiers PASS [ 0.020s] biomcp-cli render::markdown::article::tests::article_search_markdown_renders_each_typed_identifier PASS [ 0.026s] biomcp-cli render::markdown::article::tests::article_search_markdown_prepends_debug_plan_block PASS [ 0.022s] biomcp-cli render::markdown::article::tests::article_search_markdown_renders_date_sort_warning PASS [ 0.028s] biomcp-cli render::markdown::article::tests::article_search_markdown_omits_index_footer_when_no_rows_have_it PASS [ 0.026s] biomcp-cli render::markdown::article::tests::article_search_markdown_preserves_rank_order_and_shows_rationale PASS [ 0.025s] biomcp-cli render::markdown::article::tests::article_search_markdown_renders_non_semantic_source_status PASS [ 0.035s] biomcp-cli render::markdown::article::tests::article_search_markdown_includes_cross_entity_discover_hint_for_short_keyword_phrase PASS [ 0.009s] biomcp-cli render::markdown::article::tests::format_newest_indexed_footer_clamps_future_dates_to_zero_days PASS [ 0.010s] biomcp-cli render::markdown::article::tests::format_newest_indexed_footer_is_deterministic PASS [ 0.008s] biomcp-cli render::markdown::author::full_page_tests::hostile_provider_values_cannot_inject_markdown_structure PASS [ 0.009s] biomcp-cli render::markdown::author::full_page_tests::rich_markdown_pins_the_exact_template_for_a_complete_paper PASS [ 0.010s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_detail_markdown_is_the_frozen_template PASS [ 0.011s] biomcp-cli render::markdown::author::full_page_tests::rich_markdown_sentinels_and_two_blocks_with_continuation PASS [ 0.008s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_detail_markdown_sanitizes_the_provider_display_name PASS [ 0.010s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_papers_markdown_empty_page_has_no_work_block_or_see_also PASS [ 0.009s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_papers_markdown_is_the_frozen_nonterminal_template PASS [ 0.026s] biomcp-cli render::markdown::article::tests::ticket_377_article_renderer_envelope_contracts_markdown_status PASS [ 0.010s] biomcp-cli render::markdown::author::tests::affiliation_preview_is_bounded_without_splitting_utf8 PASS [ 0.010s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_papers_markdown_sanitizes_provider_text PASS [ 0.010s] biomcp-cli render::markdown::author::tests::detail_markdown_and_json_present_the_same_follow_up_commands PASS [ 0.036s] biomcp-cli render::markdown::article::tests::article_search_markdown_renders_related_block_before_pagination PASS [ 0.022s] biomcp-cli render::markdown::cell_line::tests::a_cell_line_chembl_does_not_list_says_so_and_prints_no_row PASS [ 0.021s] biomcp-cli render::markdown::cell_line::tests::search_markdown_shows_the_match_columns_and_the_attribution PASS [ 0.024s] biomcp-cli render::markdown::cell_line::tests::a_full_window_note_is_printed_once PASS [ 0.023s] biomcp-cli render::markdown::cell_line::tests::the_card_names_the_accession_the_rrid_and_the_species PASS [ 0.533s] biomcp-cli entities::variant::structure::tests::braf_v600e_on_p15056_keeps_the_verified_position_600 PASS [ 0.025s] biomcp-cli render::markdown::cell_line::tests::an_unavailable_chembl_section_renders_no_row PASS [ 0.026s] biomcp-cli render::markdown::cell_line::tests::the_card_ends_with_the_attribution_line PASS [ 0.025s] biomcp-cli render::markdown::cell_line::tests::the_card_offers_the_two_section_commands PASS [ 0.023s] biomcp-cli render::markdown::cell_line::tests::the_chembl_section_prints_one_row_and_the_release_attribution PASS [ 0.025s] biomcp-cli render::markdown::cell_line::tests::the_xrefs_section_prints_every_key_including_the_empty_ones PASS [ 0.021s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_renders_regulatory_section_rows PASS [ 0.026s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_keeps_regulatory_hidden_for_all_expansion PASS [ 0.023s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_renders_regulatory_empty_state_when_requested PASS [ 0.024s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_renders_requested_sections_and_truthful_empty_states PASS [ 0.026s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_renders_who_summary_fields_and_supported_sections_only PASS [ 0.007s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_rows_caps_genes_and_conditions_with_overflow_marker PASS [ 0.009s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_rows_escapes_markdown_table_cells PASS [ 0.026s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_reports_unavailable_regulatory_state_in_band PASS [ 0.021s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_markdown_adds_escaped_disease_match_column_only_when_present PASS [ 0.020s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_markdown_shows_source_column_and_detail_hint PASS [ 0.023s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_markdown_does_not_render_recovery_for_high_offset_empty_page PASS [ 0.024s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_markdown_renders_true_zero_result_recovery PASS [ 0.021s] biomcp-cli render::markdown::discovery::tests::search_all_markdown_counts_only_keeps_links_without_row_headers PASS [ 0.024s] biomcp-cli render::markdown::discovery::tests::render_discover_renders_grouped_concepts_and_plain_language PASS [ 0.023s] biomcp-cli render::markdown::discovery::tests::ticket_377_discover_renderer_envelope_contracts PASS [ 0.024s] biomcp-cli render::markdown::discovery::tests::search_all_markdown_renders_section_note PASS [ 0.025s] biomcp-cli render::markdown::disease::tests::disease_markdown_all_keeps_opt_in_sections_hidden PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_clinical_features_empty_state_is_truthful PASS [ 0.022s] biomcp-cli render::markdown::disease::tests::disease_markdown_disgenet_renders_sparse_optional_fields PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_funding_renders_truthful_notes_without_table PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_markdown_heading_and_provenance_credit_the_disgenet_seed PASS [ 0.025s] biomcp-cli render::markdown::disease::tests::disease_markdown_heading_and_provenance_credit_the_fallback_source PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_phenotypes_section_renders_definition_hint_when_key_features_missing PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_markdown_links_source_cells_and_footer_evidence_urls PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_phenotypes_section_without_definition_only_shows_completeness_note PASS [ 0.025s] biomcp-cli render::markdown::disease::tests::disease_markdown_phenotypes_section_renders_key_features PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_markdown_preserves_full_definition_text PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_clinical_features_section PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_opentargets_scores_in_summary_and_genes_table PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_diagnostics_note_then_shell_safe_search_command PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_ot_only_gene_association_table PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_survival_summary_and_note PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_reports_unavailable_source_state_in_band PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_top_variant_summary PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_markdown_section_only_shows_disgenet_section PASS [ 0.007s] biomcp-cli render::markdown::drug::tests::drug_interaction_report_markdown_renders_not_in_coverage_signal PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_search_empty_state_includes_discover_hint PASS [ 0.011s] biomcp-cli render::markdown::drug::tests::all_region_search_places_exact_continuation_under_the_matching_region PASS [ 0.022s] biomcp-cli render::markdown::disease::tests::disease_search_empty_state_uses_raw_query_in_discover_hint PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_search_fallback_renders_provenance_columns PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::ticket_377_disease_renderer_envelope_contracts PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::drug_markdown_header_drops_empty_fields_instead_of_printing_fillers PASS [ 0.024s] biomcp-cli render::markdown::drug::tests::drug_markdown_omits_target_family_for_mixed_targets PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::drug_markdown_shows_target_family_and_members_when_present PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::drug_markdown_renders_variant_targets_as_additive_line PASS [ 0.026s] biomcp-cli render::markdown::drug::tests::drug_markdown_uses_label_interaction_text_before_public_unavailable_fallback PASS [ 0.021s] biomcp-cli render::markdown::drug::tests::drug_markdown_uses_truthful_public_unavailable_interactions_message PASS [ 0.008s] biomcp-cli render::markdown::drug::tests::drug_search_all_region_degraded_who_section_states_the_reason_instead_of_a_bare_negative PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_eu_all_suppresses_us_header_facts PASS [ 0.026s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_all_keeps_us_and_eu_blocks_separate PASS [ 0.007s] biomcp-cli render::markdown::drug::tests::drug_search_all_region_empty_state_calls_out_regulatory_absence PASS [ 0.008s] biomcp-cli render::markdown::drug::tests::drug_search_all_region_empty_state_includes_discover_only_when_both_regions_are_empty PASS [ 0.008s] biomcp-cli render::markdown::drug::tests::drug_search_all_region_markdown_includes_who_block PASS [ 0.009s] biomcp-cli render::markdown::drug::tests::drug_search_empty_state_frames_zero_indication_miss_as_regulatory_signal PASS [ 0.009s] biomcp-cli render::markdown::drug::tests::drug_search_eu_empty_state_includes_discover_hint PASS [ 0.008s] biomcp-cli render::markdown::drug::tests::drug_search_who_vaccine_markdown_uses_vaccine_table_and_no_get_footer PASS [ 0.026s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_eu_safety_shows_truthful_empty_subsections PASS [ 0.021s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_who_renders_regulatory_block PASS [ 0.009s] biomcp-cli render::markdown::drug::tests::eu_search_markdown_escapes_every_dynamic_match_component PASS [ 0.027s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_who_names_the_gap_when_the_bundle_cannot_be_read PASS [ 0.021s] biomcp-cli render::markdown::drug::tests::drug_search_standard_empty_state_includes_discover_hint PASS [ 0.022s] biomcp-cli render::markdown::drug::tests::label_sections::label_pointer_prints_when_the_view_cut_a_section PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::label_sections::label_pointer_quotes_multi_word_drug_names PASS [ 0.027s] biomcp-cli render::markdown::drug::tests::label_sections::a_card_without_label_content_prints_no_fda_label_heading PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::label_sections::label_pointer_stays_silent_when_nothing_was_cut PASS [ 0.026s] biomcp-cli render::markdown::drug::tests::label_sections::missing_label_reason_prints_from_the_label_section_outcome PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::label_warnings::combined_label_and_safety_render_one_boxed_warning_heading PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::label_warnings::drug_markdown_renders_label_boxed_warning_ahead_of_other_label_sections PASS [ 0.009s] biomcp-cli render::markdown::drug_regulatory::fda_orphan_tests::empty_and_unavailable_have_truthful_recovery PASS [ 0.009s] biomcp-cli render::markdown::drug_regulatory::fda_orphan_tests::hostile_provider_text_cannot_create_markdown_structure PASS [ 0.009s] biomcp-cli render::markdown::evidence::tests::disease_evidence_urls_include_record_links PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::label_warnings::drug_markdown_us_safety_block_renders_boxed_warning_first PASS [ 0.008s] biomcp-cli render::markdown::evidence::tests::drug_evidence_urls_include_chembl PASS [ 0.007s] biomcp-cli render::markdown::evidence::tests::drug_evidence_urls_include_faers_and_dailymed_when_sections_exist PASS [ 0.008s] biomcp-cli render::markdown::evidence::tests::gene_evidence_urls_include_ensembl_and_omim PASS [ 0.008s] biomcp-cli render::markdown::evidence::tests::variant_evidence_urls_include_dbsnp_and_cosmic PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::label_warnings::raw_label_and_safety_together_print_over_cap_warnings_once PASS [ 0.022s] biomcp-cli render::markdown::drug::tests::label_warnings::raw_label_and_safety_together_print_the_ordinary_warnings_once PASS [ 0.021s] biomcp-cli render::markdown::drug::tests::label_warnings::truncated_safety_warning_links_exact_dailymed_set_when_label_is_absent PASS [ 0.015s] biomcp-cli render::markdown::evidence::tests::variant_evidence_urls_fall_back_to_hgvs_slug_for_population_data PASS [ 0.015s] biomcp-cli render::markdown::evidence::tests::variant_evidence_urls_include_gnomad_for_population_data PASS [ 0.021s] biomcp-cli render::markdown::gene::tests::gencc_markdown_escapes_provider_cells_and_angle_delimits_links PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_cell_lines_markdown_prints_the_rows_and_the_attribution_line PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_markdown_all_keeps_opt_in_sections_hidden PASS [ 0.027s] biomcp-cli render::markdown::gene::tests::clingen_markdown_keeps_partial_evidence_and_distinguishes_missing_dosage PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_markdown_disgenet_renders_sparse_optional_fields PASS [ 0.020s] biomcp-cli render::markdown::gene::tests::gene_markdown_funding_renders_linked_rows_and_currency PASS [ 0.027s] biomcp-cli render::markdown::gene::tests::gene_cell_lines_markdown_shows_a_dash_for_an_unresolved_name_and_prints_notes PASS [ 0.024s] biomcp-cli render::markdown::gene::tests::gene_markdown_includes_evidence_links PASS [ 0.021s] biomcp-cli render::markdown::gene::tests::gene_markdown_omits_protein_alternative_names_when_absent PASS [ 0.024s] biomcp-cli render::markdown::gene::tests::gene_markdown_pathways_show_source_labels PASS [ 0.025s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_combined_dgidb_and_opentargets_druggability PASS [ 0.026s] biomcp-cli render::markdown::gene::tests::gene_markdown_preserves_full_protein_function_text PASS [ 0.025s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_dgidb_interaction_table_alongside_opentargets_data PASS [ 0.024s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_hpa_section_details PASS [ 0.026s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_protein_alternative_names PASS [ 0.022s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_protein_isoforms_with_count_and_displayed_length PASS [ 0.024s] biomcp-cli render::markdown::gene::tests::gene_markdown_section_only_shows_constraint_section PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_markdown_section_only_shows_new_gene_enrichment_sections PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_markdown_without_isoforms_keeps_protein_lines_contiguous PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::ticket_406_coordinate_outputs_carry_genome_build_context PASS [ 0.027s] biomcp-cli render::markdown::gene::tests::gene_markdown_section_only_shows_disgenet_section PASS [ 0.024s] biomcp-cli render::markdown::pathway::tests::pathway_markdown_hides_genes_section_when_genes_are_empty PASS [ 0.023s] biomcp-cli render::markdown::pathway::tests::pathway_markdown_uses_source_and_source_specific_evidence_url PASS [ 0.025s] biomcp-cli render::markdown::pathway::tests::pathway_search_markdown_shows_source_column PASS [ 0.025s] biomcp-cli render::markdown::pgx::tests::pgx_markdown_includes_evidence_links PASS [ 0.017s] biomcp-cli render::markdown::related::tests::article_search_related_results_do_not_derive_entity_get_from_keyword_tokens PASS [ 0.015s] biomcp-cli render::markdown::related::tests::article_search_related_results_do_not_emit_braf_v600e_gene_get_without_exact_command PASS [ 0.020s] biomcp-cli render::markdown::related::tests::article_search_next_commands_adds_list_for_exact_commands_without_result_rows PASS [ 0.021s] biomcp-cli render::markdown::pgx::tests::recommendations_render_genotypes_and_page_drug_coverage PASS [ 0.024s] biomcp-cli render::markdown::pgx::tests::recommendations_only_hides_interactions_and_advertises_its_offset PASS [ 0.025s] biomcp-cli render::markdown::protein::tests::protein_markdown_renders_complexes_summary_and_detail_bullets PASS [ 0.018s] biomcp-cli render::markdown::related::tests::article_search_related_results_include_exact_commands_without_result_rows PASS [ 0.019s] biomcp-cli render::markdown::related::tests::article_search_related_results_include_primary_article_and_exact_commands PASS [ 0.018s] biomcp-cli render::markdown::related::tests::article_search_related_results_omit_unsupported_provider_identifier PASS [ 0.019s] biomcp-cli render::markdown::related::tests::article_search_related_results_include_year_refinement_hint_when_unbounded PASS [ 0.018s] biomcp-cli render::markdown::related::tests::article_search_related_results_preserve_source_filter_in_year_refinement PASS [ 0.019s] biomcp-cli render::markdown::related::tests::article_search_related_results_reject_non_exact_variant_keywords PASS [ 0.015s] biomcp-cli render::markdown::related::tests::article_search_related_results_skip_year_refinement_without_visible_years PASS [ 0.021s] biomcp-cli render::markdown::related::tests::article_search_related_results_skip_non_entity_keyword_hints PASS [ 0.020s] biomcp-cli render::markdown::related::tests::article_search_related_results_skip_year_refinement_when_already_bounded PASS [ 0.010s] biomcp-cli render::markdown::related::tests::diagnostic_zero_result_recovery_commands_point_to_list_help PASS [ 0.016s] biomcp-cli render::markdown::related::tests::article_search_related_results_use_supported_non_pmid_identifier PASS [ 0.019s] biomcp-cli render::markdown::related::tests::article_search_related_results_suggest_exact_variant_route PASS [ 0.017s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_do_not_emit_lung_cancer_immunotherapy_disease_get PASS [ 0.018s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_include_discover_for_psoralen_vaccine_phrase PASS [ 0.021s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_include_discover_but_not_heuristic_disease_get PASS [ 0.019s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_include_discover_for_short_vaccine_phrase PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_article_uses_article_entities_helper_command PASS [ 0.018s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_include_exact_disease_command_when_precomputed PASS [ 0.007s] biomcp-cli render::markdown::related::tests::related_device_event_uses_supported_search_subcommands PASS [ 0.012s] biomcp-cli render::markdown::related::tests::provider_trial_title_shell_syntax_stays_inert_in_results_search PASS [ 0.018s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_skip_cross_entity_hints_for_long_phrase PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_diagnostic_only_points_back_to_list_help PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_disease_falls_back_to_unscored_top_gene_context PASS [ 0.008s] biomcp-cli render::markdown::related::tests::related_disease_non_oncology_skips_study_hints PASS [ 0.008s] biomcp-cli render::markdown::related::tests::related_disease_oncology_without_local_match_falls_back_to_download_list PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_disease_malformed_study_lookup_falls_back_to_download_list PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_disease_oncology_with_local_match_prefers_top_mutated PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_disease_oncology_matches_noncontiguous_carcinoma_study_labels PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_disease_promotes_top_gene_context_before_generic_pivots PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_disease_quotes_single_word_indication_search PASS [ 0.007s] biomcp-cli render::markdown::related::tests::related_disease_uses_synonym_when_name_is_raw_id PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_disease_suggests_review_when_phenotypes_are_sparse PASS [ 0.008s] biomcp-cli render::markdown::related::tests::related_gene_prioritizes_localization_deepening_when_supported PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_drug_includes_pgx_search PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_gene_promotes_clingen_trial_search_before_generic_pivots PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_drug_suggests_review_when_label_and_indications_are_sparse PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_pgx_uses_search_flags PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_protein_excludes_requested_sections PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_protein_includes_complexes_follow_up PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_trial_completed_promotes_results_search_before_condition_pivots PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_trial_keeps_recruiting_order_without_results_search PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_trial_results_search_without_intervention_keeps_seed_quoted PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_trial_searches_unverified_jag201_intervention PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_trial_promotes_results_search_for_completed_or_terminated_studies PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_trial_uses_the_first_alias_from_the_first_intervention_that_has_one PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_trial_without_aliases_uses_the_first_intervention_name PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_variant_vus_keyword_only_follow_up_keeps_description PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_variant_pathogenic_keeps_drug_target_without_vus_literature_pivot PASS [ 0.008s] biomcp-cli render::markdown::related::tests::search_next_commands_diagnostic_prefers_top_accession_then_list PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_device_events_use_report_follow_up PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_variant_vus_promotes_literature_before_drug_target PASS [ 0.008s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_eu_prefers_active_substance_match PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_diagnostic_quotes_who_product_code PASS [ 0.007s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_regions_canonicalize_across_buckets PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_prefers_requested_us_name PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_regions_fall_back_without_requested_name PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_who_use_inn PASS [ 0.008s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_who_vaccine_only_stays_list_only PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_recalls_are_list_only PASS [ 0.012s] biomcp-cli render::markdown::root_tests::every_registry_source_status_row_survives_the_render_context PASS [ 0.008s] biomcp-cli render::markdown::root_tests::pagination_footer_cursor_prefers_offset_guidance_without_placeholder PASS [ 0.009s] biomcp-cli render::markdown::root_tests::pagination_footer_offset_keeps_more_when_additional_rows_exist PASS [ 0.007s] biomcp-cli render::markdown::root_tests::pagination_footer_offset_suppresses_more_on_last_page PASS [ 0.008s] biomcp-cli render::markdown::root_tests::proof_markdown_module_layout_uses_directory_module PASS [ 0.011s] biomcp-cli render::markdown::root_tests::pagination_footer_offset_suppresses_more_when_complete_single_result PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::diagnostic_more_block_keeps_four_visible_section_commands PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_all_and_every_recovery_state PASS [ 0.028s] biomcp-cli render::markdown::root_tests::a_fully_unavailable_disease_card_keeps_every_status_line PASS [ 0.028s] biomcp-cli render::markdown::root_tests::markdown_detail_outputs_label_gene_drug_and_disease_sources PASS [ 0.027s] biomcp-cli render::markdown::root_tests::markdown_detail_outputs_label_variant_protein_pgx_and_openfda_sources PASS [ 0.030s] biomcp-cli render::markdown::root_tests::markdown_detail_outputs_label_article_trial_and_pathway_sources PASS [ 0.010s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_every_explicit_single_section_projection PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_complete_region_projections_and_who_exclusions PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_sparse_branches_blank_identity_and_projection_deduplication PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_complete_9_10_and_over_10_candidate_arrays PASS [ 0.009s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_matches_default_projection_order PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::format_sections_block_describes_guardrailed_drug_and_trial_sections PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::push_exact_capped_keeps_first_exact_bytes_before_the_ten_item_cap PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::format_sections_block_keeps_gene_ontology_in_top_more_entries PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_prioritizes_recovery_and_caps_exact_commands PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_respects_loaded_sections_regions_and_who_exclusions PASS [ 0.010s] biomcp-cli render::markdown::sections::tests::format_sections_block_renders_described_executable_commands PASS [ 0.010s] biomcp-cli render::markdown::sections::tests::sections_diagnostic_for_who_only_offer_conditions_and_quote_accession PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::sections_gene_base_card_surfaces_diagnostics_as_fourth_command PASS [ 0.009s] biomcp-cli render::markdown::sections::tests::sections_disease_base_card_surfaces_diagnostics_before_optional_sections PASS [ 0.009s] biomcp-cli render::markdown::sections::tests::sections_diagnostic_omit_requested_section_from_more_block PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::sections_pathway_for_kegg_excludes_unsupported_sections PASS [ 0.009s] biomcp-cli render::markdown::sections::tests::sections_pathway_for_reactome_keeps_full_supported_set PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_co_occurrence_markdown_marks_mutation_observed_fallback PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_co_occurrence_markdown_renders_pair_table PASS [ 0.025s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_quotes_identity_and_recovery_is_rendered_once PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_cohort_markdown_renders_group_counts PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_compare_mutations_markdown_renders_rate_table PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_compare_expression_markdown_renders_distribution_table PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_download_catalog_markdown_renders_remote_ids PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_download_markdown_renders_result_table PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_filter_markdown_renders_empty_results_and_unknown_totals PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_filter_markdown_renders_tables_and_samples PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_filter_markdown_truncates_long_sample_lists PASS [ 0.007s] biomcp-cli render::markdown::study::tests::study_list_markdown_renders_study_table PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_query_markdown_renders_cna_and_expression_shapes PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_query_markdown_renders_mutation_shape PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_query_markdown_renders_not_in_local_cohorts_signal PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_survival_markdown_renders_group_table PASS [ 0.010s] biomcp-cli render::markdown::study::tests::study_top_mutated_markdown_renders_ranked_table PASS [ 0.008s] biomcp-cli render::markdown::support::tests::discover_try_line_quotes_shell_sensitive_queries PASS [ 0.008s] biomcp-cli render::markdown::support::tests::markdown_cells_keep_layout_rules_while_removing_terminal_controls PASS [ 0.008s] biomcp-cli render::markdown::support::tests::quote_arg_wraps_whitespace_and_escapes_quotes PASS [ 0.009s] biomcp-cli render::markdown::support::tests::markdown_code_spans_follow_commonmark_padding_rules PASS [ 1.879s] biomcp-cli entities::variant::clinvar::tests::add_clinvar_names_a_fast_429_refusal_as_rate_limited PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::bounded_trial_summary_is_utf8_safe_when_both_limits_omit_content PASS [ 0.010s] biomcp-cli render::markdown::trial::tests::bounded_trial_summary_distinguishes_sentence_final_and_suffix_collisions PASS [ 0.010s] biomcp-cli render::markdown::trial::tests::arm_rendering_follows_assignment_ids_when_names_do_not_change PASS [ 0.010s] biomcp-cli render::markdown::trial::tests::bounded_trial_summary_keeps_supported_mid_sentence_abbreviations PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::bounded_trial_summary_marks_sentence_omission_but_not_complete_input PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::eligibility_markdown_accepts_a_present_empty_aggregate_without_claims PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::eligibility_markdown_makes_source_sex_codes_readable_without_changing_json PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::eligibility_markdown_preserves_linear_transitions_and_bounds_all_content PASS [ 0.024s] biomcp-cli render::markdown::trial::tests::generic_trial_markdown_omits_cap_disclosure_when_locations_fit PASS [ 0.022s] biomcp-cli render::markdown::trial::tests::search_results_carry_the_partial_detail_verification_note PASS [ 0.025s] biomcp-cli render::markdown::trial::tests::paginated_trial_markdown_does_not_apply_a_second_cap PASS [ 0.026s] biomcp-cli render::markdown::trial::tests::generic_trial_markdown_caps_locations_discloses_and_aligns_contacts PASS [ 0.029s] biomcp-cli render::markdown::trial::tests::generic_trial_continuation_maps_provider_markers_without_guessing PASS [ 0.023s] biomcp-cli render::markdown::trial::tests::trial_markdown_keeps_the_post_abbreviation_clause_and_json_stays_full PASS [ 0.025s] biomcp-cli render::markdown::trial::tests::trial_markdown_includes_source_labeled_sections PASS [ 0.024s] biomcp-cli render::markdown::trial::tests::trial_markdown_renders_contacts_eligibility_and_json_fields PASS [ 0.023s] biomcp-cli render::markdown::trial::tests::trial_markdown_uses_each_safe_reference_fallback PASS [ 0.009s] biomcp-cli render::markdown::variant::tests::normalization_markdown_keeps_legacy_collection_labels PASS [ 0.023s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_omits_matched_intervention_column_without_labels PASS [ 0.023s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_shows_matched_intervention_column_when_present PASS [ 0.024s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_with_footer_omits_zero_result_nickname_hint_without_flag PASS [ 0.022s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_with_footer_shows_scoped_zero_result_nickname_hint PASS [ 0.020s] biomcp-cli render::markdown::variant::tests::gwas_search_markdown_renders_result_row PASS [ 0.025s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_with_footer_shows_filtered_zero_result_broadening_hints PASS [ 0.023s] biomcp-cli render::markdown::variant::tests::a_variant_card_prints_no_blank_line_for_an_absent_numbering_note PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::markdown_render_variant_entity PASS [ 0.009s] biomcp-cli render::markdown::variant::tests::ticket_406_coordinate_outputs_carry_genome_build_context PASS [ 0.011s] biomcp-cli render::markdown::variant::tests::ticket_589_variant_structure_failures_do_not_render_as_checked_absence_or_source_credit PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::phenotype_search_markdown_renders_top_disease_follow_up PASS [ 0.021s] biomcp-cli render::markdown::variant::tests::transcript_explanation_uses_trusted_template_slot_when_table_contains_footer_sentinel PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::transcript_explanation_sanitizes_controls_and_embedded_backticks PASS [ 0.023s] biomcp-cli render::markdown::variant::tests::variant_clinvar_rows_print_the_submission_count_when_submitters_are_absent PASS [ 0.023s] biomcp-cli render::markdown::variant::tests::variant_markdown_civic_section_renders_currency_caveat_and_cross_checks PASS [ 0.030s] biomcp-cli render::markdown::variant::tests::rsid_indel_card_only_prints_variant_ids_accepted_by_the_parser PASS [ 0.025s] biomcp-cli render::markdown::variant::tests::variant_markdown_default_card_renders_bare_civic_pointer_without_cached_evidence PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_markdown_default_card_renders_cached_civic_actionability_pointer PASS [ 0.022s] biomcp-cli render::markdown::variant::tests::variant_markdown_names_the_competing_build_identity PASS [ 0.008s] biomcp-cli render::markdown::variant::tests::variant_oncokb_markdown_shows_truncation_note PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_markdown_next_commands_quote_variant_ids_with_spaces PASS [ 0.025s] biomcp-cli render::markdown::variant::tests::variant_markdown_offers_no_retry_for_a_retired_gwas_endpoint PASS [ 0.022s] biomcp-cli render::markdown::variant::tests::variant_markdown_renders_gwas_unavailable_message PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_markdown_renders_cancerhotspots_recurrence_when_present PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_markdown_renders_the_gwas_gap_reason_once PASS [ 0.023s] biomcp-cli render::markdown::variant::tests::variant_population_markdown_labels_residual_group_but_json_keeps_raw_id PASS [ 0.031s] biomcp-cli render::markdown::variant::tests::variant_markdown_renders_compact_clinvar_and_population_fields PASS [ 0.022s] biomcp-cli render::markdown::variant::tests::variant_population_maximum_keeps_zero_and_handles_null_nonfinite_and_partial_sides PASS [ 0.028s] biomcp-cli render::markdown::variant::tests::variant_population_markdown_keeps_missing_status_compact PASS [ 0.009s] biomcp-cli render::provenance::tests::article_section_sources_projects_unavailable_fulltext_without_sources PASS [ 0.025s] biomcp-cli render::markdown::variant::tests::variant_population_maximum_is_order_independent_by_an_then_raw_id PASS [ 0.008s] biomcp-cli render::provenance::tests::article_section_sources_uses_resolved_fulltext_and_indexing_providers PASS [ 0.009s] biomcp-cli render::provenance::tests::diagnostic_unavailable_regulatory_outcome_has_no_source_credit PASS [ 0.021s] biomcp-cli render::markdown::variant::tests::variant_search_explains_distinct_transcript_match_after_unchanged_table PASS [ 0.020s] biomcp-cli render::markdown::variant::tests::variant_search_markdown_renders_related_commands_from_context PASS [ 0.009s] biomcp-cli render::provenance::tests::disease_section_sources_include_clinical_features PASS [ 0.010s] biomcp-cli render::provenance::tests::disease_section_sources_include_diagnostics_note_sources PASS [ 0.012s] biomcp-cli render::provenance::tests::disease_section_sources_include_diagnostics_from_rows PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_search_markdown_renders_legacy_name_column_and_fallback PASS [ 0.010s] biomcp-cli render::provenance::tests::disease_section_sources_include_funding_when_note_present PASS [ 0.008s] biomcp-cli render::provenance::tests::drug_interaction_note_covers_the_zero_rows_wordings PASS [ 0.010s] biomcp-cli render::provenance::tests::disease_section_sources_include_survival_when_note_present PASS [ 0.009s] biomcp-cli render::provenance::tests::drug_interaction_report_section_sources_include_drugbank_when_descriptions_present PASS [ 0.009s] biomcp-cli render::provenance::tests::drug_provenance_adds_who_to_regulatory_sources PASS [ 0.009s] biomcp-cli render::provenance::tests::drug_provenance_emits_variant_targets_when_present PASS [ 0.009s] biomcp-cli render::provenance::tests::drug_section_sources_omit_interactions_when_no_interaction_data_is_present PASS [ 0.009s] biomcp-cli render::provenance::tests::gene_section_sources_include_funding_when_present PASS [ 0.011s] biomcp-cli render::provenance::tests::gene_section_sources_include_diagnostics_from_rows PASS [ 0.010s] biomcp-cli render::provenance::tests::pathway_section_sources_emits_wikipathways_not_reactome_for_wp_card PASS [ 0.010s] biomcp-cli render::provenance::tests::gene_section_sources_marks_unavailable_diagnostics_without_source_credit PASS [ 0.009s] biomcp-cli render::provenance::tests::pathway_source_label_falls_back_to_reactome_for_empty PASS [ 0.010s] biomcp-cli render::provenance::tests::pathway_source_label_passes_through_unknown_non_empty_source PASS [ 0.010s] biomcp-cli render::provenance::tests::pathway_source_label_maps_known_sources PASS [ 0.008s] biomcp-cli sources::alphagenome::tests::construction::recommended_scorers_are_stable PASS [ 0.008s] biomcp-cli sources::alphagenome::tests::construction::make_interval_clamps_start_and_keeps_expected_width PASS [ 0.008s] biomcp-cli sources::alphagenome::tests::parsing::summarize_tensor_maps_best_gene_and_value PASS [ 0.013s] biomcp-cli render::provenance::tests::variant_provenance_includes_gwas_when_requested_section_is_unavailable PASS [ 0.008s] biomcp-cli sources::alphagenome::tests::parsing::dtype_and_half_precision_helpers_work PASS [ 0.010s] biomcp-cli sources::alphagenome::tests::construction::score_variant_request_sets_interval_variant_and_scorers PASS [ 0.009s] biomcp-cli sources::archive_budget::tests::bounded_metadata_sets_one_effective_path_and_then_resets PASS [ 0.009s] biomcp-cli sources::archive_budget::tests::aggregate_and_entry_limits_accept_exact_boundaries_and_reject_max_plus_one PASS [ 0.008s] biomcp-cli sources::archive_budget::tests::metadata_limits_ambiguity_and_unsupported_entry_types_are_rejected PASS [ 0.008s] biomcp-cli sources::archive_budget::tests::entry_and_total_accounting_reject_checked_overflow PASS [ 0.010s] biomcp-cli sources::archive_budget::tests::pax_paths_are_accepted_but_size_sparse_and_duplicate_metadata_are_rejected PASS [ 0.010s] biomcp-cli sources::archive_budget::tests::regular_member_accepts_exact_limits_and_rejects_max_plus_one PASS [ 0.007s] biomcp-cli sources::ca_bundle::tests::non_utf8_configured_path_keeps_its_raw_os_bytes PASS [ 0.010s] biomcp-cli sources::ca_bundle::tests::parse_error_is_indexed_and_does_not_echo_bundle_content PASS [ 0.016s] biomcp-cli sources::ca_bundle::tests::bundle_is_parsed_once_across_builders_in_a_fresh_process PASS [ 0.008s] biomcp-cli sources::cancerhotspots::tests::construction::by_gene_plans_match_captured_recurrence_routes PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::construction::by_gene_plan_uses_encoded_path_and_no_body PASS [ 0.008s] biomcp-cli sources::cancerhotspots::tests::construction::encode_path_segment_preserves_safe_characters_and_escapes_others PASS [ 0.016s] biomcp-cli sources::ca_bundle::tests::the_real_constructors_parse_a_valid_bundle_once PASS [ 0.010s] biomcp-cli sources::cancerhotspots::tests::parsing::decode_by_gene_maps_http_and_html_errors PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::parsing::parses_by_gene_fixture PASS [ 0.007s] biomcp-cli sources::cancerhotspots::tests::parsing::receipted_empty_response_is_checked_absence PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::parsing::receipted_recurrence_preserves_braf_and_myd88_landmarks PASS [ 0.037s] biomcp-cli sources::alphagenome::tests::parsing::decompress_tensor_bytes_rejects_oversized_chunk PASS [ 0.010s] biomcp-cli sources::cancerhotspots::tests::parsing::recurrence_checks_later_matching_residue_rows_for_exact_alt PASS [ 0.008s] biomcp-cli sources::cancerhotspots::tests::parsing::recurrence_maps_counts_and_transcript_for_exact_alt PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::parsing::recurrence_serializes_checked_absence_with_nulls PASS [ 0.009s] biomcp-cli sources::cbioportal::tests::construction::clinical_data_plan_posts_sample_filter_body PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::parsing::recurrence_treats_missing_exact_alt_as_checked_absence PASS [ 0.007s] biomcp-cli sources::cbioportal::tests::construction::gene_resolution_plan_rejects_empty_gene PASS [ 0.008s] biomcp-cli sources::cbioportal::tests::construction::gene_resolution_plan_sets_keyword_query PASS [ 0.008s] biomcp-cli sources::cbioportal::tests::construction::study_and_mutation_plans_set_paths_and_queries PASS [ 0.008s] biomcp-cli sources::cbioportal::tests::parsing::decode_json_maps_http_error_status_with_excerpt PASS [ 0.010s] biomcp-cli sources::cbioportal::tests::parsing::parses_gene_resolution_fixture PASS [ 0.009s] biomcp-cli sources::cbioportal::tests::parsing::parses_study_mutation_and_clinical_fixtures PASS [ 0.009s] biomcp-cli sources::cbioportal_download::tests::construction::study_archive_plan_fetches_tarball_for_valid_study_id PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::construction::archive_relative_path_accepts_only_the_expected_top_level_study_dir PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::construction::study_archive_plan_rejects_path_like_study_ids PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::construction::study_list_plan_fetches_datahub_catalog PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::construction::validate_study_id_trims_and_requires_a_single_safe_segment PASS [ 0.008s] biomcp-cli sources::cbioportal_download::tests::parsing::archive_status_maps_missing_archives_to_not_found_without_leaking_storage_body PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::download::archive_download_accounting_accepts_exact_limit_and_rejects_overflow PASS [ 0.011s] biomcp-cli sources::cbioportal_download::tests::download::archive_download_rejects_chunked_max_plus_one_and_removes_partial_file PASS [ 0.009s] biomcp-cli sources::cbioportal_download::tests::parsing::archive_status_maps_other_http_errors_with_excerpt PASS [ 0.013s] biomcp-cli sources::cbioportal_download::tests::download::archive_download_rejects_declared_oversize_before_creating_destination PASS [ 0.052s] biomcp-cli sources::ca_bundle::tests::root_configuration_stays_additive PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_extracts_a_valid_local_archive PASS [ 0.011s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_rejects_declared_oversized_member_without_leaving_files PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_rejects_entries_outside_expected_top_level_directory PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_skips_existing_valid_target PASS [ 0.012s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_rejects_oversized_path_metadata_before_buffering_it PASS [ 0.064s] biomcp-cli sources::ca_bundle::tests::loader_cases_run_in_fresh_processes PASS [ 0.009s] biomcp-cli sources::cbioportal_download::tests::parsing::list_decode_accepts_json_content_type_with_parameters PASS [ 0.009s] biomcp-cli sources::cbioportal_download::tests::parsing::parses_study_list_fixture PASS [ 0.008s] biomcp-cli sources::cbioportal_download::tests::parsing::study_list_decode_maps_http_and_content_type_errors PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::clinical_column_values_reads_trimmed_clinical_values PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::cna_distribution_supports_header_with_entrez_column PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::cna_values_by_sample_reads_matrix_rows_and_optional_entrez_column PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::co_occurrence_computes_pair_counts PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::cohort_by_mutation_classifies_patients_and_samples PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::co_occurrence_falls_back_to_mutation_observed_samples_without_clinical_file PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::cohort_commands_require_clinical_sample_file_instead_of_falling_back PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::compare_expression_by_mutation_summarizes_group_distributions PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::dev2_contracts::list_studies_treats_a_missing_root_as_an_empty_catalog PASS [ 0.011s] biomcp-cli sources::cbioportal_study::tests::compare_mutations_by_mutation_counts_unique_samples_in_each_group PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::dev2_contracts::patient_survival_data_requires_canonical_columns_and_filters_invalid_rows PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::expression_distribution_ignores_missing_and_non_finite_values PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::expression_pairs_by_sample_keeps_shared_numeric_samples_in_header_order PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::expression_pairs_by_sample_reports_first_missing_gene_in_argument_order PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::filter_samples_intersects_mutation_and_clinical_criteria PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::filter_samples_intersects_three_way_criteria PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::filter_samples_intersects_mutation_and_cna_criteria PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::filter_samples_propagates_missing_required_files_and_columns PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::filter_samples_treats_missing_gene_rows_as_empty_sets PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::filter_samples_reports_empty_intersection_and_single_criterion_results PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::fisher_exact_two_tailed_returns_one_for_zero_total_table PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::fisher_exact_two_tailed_matches_reference_tables PASS [ 0.007s] biomcp-cli sources::cbioportal_study::tests::kaplan_meier_estimate_uses_event_times_and_landmarks PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::log_rank_two_group_is_defined_when_only_one_group_has_events PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::kaplan_meier_estimate_without_events_returns_flat_curve PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::mann_whitney_u_test_returns_none_when_all_values_are_identical PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::list_studies_reads_meta_and_data_flags PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::list_study_lookup_rows_includes_clinical_cancer_labels PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::mann_whitney_u_test_handles_ties_and_smaller_u_statistic PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::missing_required_file_returns_source_unavailable PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::mutation_counts_by_sample_returns_sorted_counts PASS [ 0.011s] biomcp-cli sources::cbioportal_study::tests::mutation_frequency_counts_records_samples_and_top_buckets PASS [ 0.007s] biomcp-cli sources::cellosaurus::tests::a_missing_record_is_a_missing_record_and_not_a_failure PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::structural_variants_match_either_breakpoint_and_fill_optional_blanks PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::structural_variants_require_both_gene_columns PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::survival_by_mutation_returns_group_aggregates_for_analyzable_patients PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::top_mutated_genes_ranks_by_samples_then_events_then_gene PASS [ 0.008s] biomcp-cli sources::cellosaurus::tests::a_record_splits_primary_and_secondary_accessions_and_names PASS [ 0.010s] biomcp-cli sources::cellosaurus::tests::a_record_recorded_without_variants_carries_no_variation_rows PASS [ 0.009s] biomcp-cli sources::cellosaurus::tests::a_variation_source_yields_its_pubmed_id PASS [ 0.008s] biomcp-cli sources::cellosaurus::tests::name_search_targets_the_identifier_and_synonym_field PASS [ 0.010s] biomcp-cli sources::cellosaurus::tests::an_html_page_served_as_json_is_a_provider_error_naming_the_url PASS [ 0.009s] biomcp-cli sources::cellosaurus::tests::solr_escaping_covers_the_quote_and_the_backslash PASS [ 0.007s] biomcp-cli sources::chembl::tests::construction::cell_line_plan_joins_on_the_cellosaurus_accession PASS [ 0.009s] biomcp-cli sources::cellosaurus::tests::release_info_reads_the_version_and_the_date PASS [ 0.010s] biomcp-cli sources::cellosaurus::tests::record_url_asks_for_the_card_projection_without_cross_references PASS [ 0.008s] biomcp-cli sources::chembl::tests::construction::assay_count_plan_asks_for_one_row_of_the_cell_line_assays PASS [ 0.009s] biomcp-cli sources::chembl::tests::construction::drug_targets_plan_requests_mechanism_endpoint PASS [ 0.008s] biomcp-cli sources::chembl::tests::construction::plans_reject_empty_identifiers PASS [ 0.008s] biomcp-cli sources::chembl::tests::construction::target_summary_plan_sets_target_path PASS [ 1.617s] biomcp-cli entities::variant::gwas::tests::combined_gene_and_trait_queries_run_at_once_and_keep_the_sequential_rows PASS [ 0.010s] biomcp-cli sources::chembl::tests::construction::status_plan_reads_the_release_endpoint PASS [ 0.007s] biomcp-cli sources::chembl::tests::parsing::cell_line_response_maps_the_molm13_record PASS [ 0.008s] biomcp-cli sources::chembl::tests::parsing::assay_page_reports_the_total_count PASS [ 0.009s] biomcp-cli sources::chembl::tests::parsing::an_html_body_served_with_http_200_names_the_url PASS [ 0.008s] biomcp-cli sources::chembl::tests::parsing::decode_json_response_maps_http_and_json_errors PASS [ 0.010s] biomcp-cli sources::chembl::tests::parsing::cell_line_response_maps_the_k562_record_whose_name_chembl_spells_differently PASS [ 0.011s] biomcp-cli sources::chembl::tests::parsing::an_accession_chembl_does_not_list_maps_to_no_record PASS [ 0.009s] biomcp-cli sources::chembl::tests::parsing::drug_targets_response_maps_targets_and_defaults PASS [ 0.009s] biomcp-cli sources::chembl::tests::parsing::status_reports_the_release_name_and_date PASS [ 0.007s] biomcp-cli sources::civic::tests::construction::therapy_and_disease_context_plans_set_their_variables PASS [ 0.008s] biomcp-cli sources::civic::tests::construction::required_query_value_rejects_empty PASS [ 0.009s] biomcp-cli sources::civic::tests::construction::molecular_profile_context_plan_sets_graphql_body_and_limit PASS [ 0.007s] biomcp-cli sources::civic::tests::parsing::context_response_accepts_a_genuine_empty_page PASS [ 0.010s] biomcp-cli sources::chembl::tests::parsing::target_summary_response_maps_pref_name_and_target_type PASS [ 0.008s] biomcp-cli sources::civic::tests::parsing::context_response_rejects_a_total_without_parsed_rows PASS [ 0.009s] biomcp-cli sources::civic::tests::parsing::context_response_maps_evidence_and_assertions PASS [ 0.009s] biomcp-cli sources::civic::tests::parsing::context_response_rejects_a_missing_data_block PASS [ 0.009s] biomcp-cli sources::civic::tests::parsing::context_response_surfaces_graphql_errors PASS [ 0.008s] biomcp-cli sources::civic::tests::parsing::decode_json_response_maps_http_and_content_type_errors PASS [ 0.010s] biomcp-cli sources::clingen::tests::parsing::clingen_plans_set_lookup_and_download_paths PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::clingen_parsers_handle_missing_gene_rows_cleanly PASS [ 0.009s] biomcp-cli sources::clingen::tests::parsing::decode_text_and_json_map_http_errors PASS [ 0.007s] biomcp-cli sources::clingen::tests::parsing::family_status_serialization_is_closed_and_omits_healthy_messages PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::dosage_newest_row_preserves_a_literal_no_evidence_and_omits_missing_side PASS [ 0.010s] biomcp-cli sources::clingen::tests::parsing::downloads_fail_closed_on_unrecognized_schema_html_and_invalid_encoding PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::dosage_sensitivity_parses_csv_and_picks_latest_row PASS [ 0.016s] biomcp-cli sources::clingen::tests::operations_start_concurrently_and_share_one_lookup PASS [ 0.019s] biomcp-cli sources::clingen::tests::failed_lookup_preserves_symbol_data_but_does_not_confirm_zero_match PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::gene_context_can_be_built_from_one_lookup_and_both_csv_payloads PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::gene_validity_parses_csv_with_metadata_rows PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::hgnc_lookup_allows_hgnc_only_validity_match PASS [ 0.009s] biomcp-cli sources::clingen::tests::parsing::lookup_plan_rejects_invalid_gene_symbols PASS [ 0.009s] biomcp-cli sources::clingen::tests::review_date_rejects_a_multibyte_boundary_without_panicking PASS [ 0.010s] biomcp-cli sources::clingen::tests::parsing::validity_keeps_newest_five_with_deterministic_ties PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::lookup_accepts_json_with_html_content_type PASS [ 0.008s] biomcp-cli sources::clingen_allele_registry::tests::batch_plan_uses_post_and_preserves_input_order_and_duplicates PASS [ 0.010s] biomcp-cli sources::clingen_allele_registry::tests::batch_cardinality_mismatch_is_incomplete PASS [ 0.009s] biomcp-cli sources::clingen_allele_registry::tests::blank_node_with_malformed_projected_fact_is_indeterminate PASS [ 0.009s] biomcp-cli sources::clingen_allele_registry::tests::decoder_does_not_accept_an_empty_caid PASS [ 0.009s] biomcp-cli sources::clingen_allele_registry::tests::decoder_orders_aliases_and_rejects_schema_drift PASS [ 0.013s] biomcp-cli sources::clingen::tests::validity_failure_preserves_newest_dosage_row_and_public_message PASS [ 0.013s] biomcp-cli sources::clingen_allele_registry::tests::direct_plan_uses_only_the_projected_read_route PASS [ 0.008s] biomcp-cli sources::clingen_allele_registry::tests::external_ids_keep_full_source_metadata_before_per_source_caps PASS [ 0.009s] biomcp-cli sources::clingen_allele_registry::tests::receipt_backed_car_capture_decodes_a_resolved_transcript_identity PASS [ 0.010s] biomcp-cli sources::clingen_allele_registry::tests::received_batch_response_hashes_preserve_exact_body_bytes PASS [ 0.010s] biomcp-cli sources::clingen_allele_registry::tests::received_response_hashes_preserve_exact_body_bytes PASS [ 0.011s] biomcp-cli sources::clingen_cspec::tests::construction::cspec_execution_methods_consume_manifest_and_document_plans PASS [ 0.010s] biomcp-cli sources::clingen_cspec::tests::construction::cspec_plans_keep_manifest_and_document_provider_paths PASS [ 0.010s] biomcp-cli sources::clingen_cspec::tests::construction::cspec_production_timeouts_match_shared_provider_policy PASS [ 0.009s] biomcp-cli sources::clingen_erepo::tests::construction::erepo_plans_use_exact_search_and_encoded_detail_segments PASS [ 0.052s] biomcp-cli sources::clingen::tests::dosage_timeout_preserves_completed_validity PASS [ 0.010s] biomcp-cli sources::clingen_erepo::tests::parsing::envelope_requires_the_contract_keys_and_success_code PASS [ 0.010s] biomcp-cli sources::clingen_erepo::tests::construction::gene_plan_requests_one_extra_row_at_the_requested_offset PASS [ 0.009s] biomcp-cli sources::clingen_ldh::tests::direct_body_budget_stops_at_the_aggregate_limit PASS [ 0.036s] biomcp-cli sources::clingen::tests::valid_zero_match_is_empty_and_oversized_download_is_failed PASS [ 0.010s] biomcp-cli sources::clingen_erepo::tests::parsing::exact_search_no_records_404_requires_the_provider_shape PASS [ 0.011s] biomcp-cli sources::clinicaltrials::tests::construction::default_get_fields_request_visible_status_context PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::construction::every_product_detail_route_has_one_exact_composed_request PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::construction::get_plan_builds_study_path_and_section_fields PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::construction::every_unrelated_single_section_omits_all_eligibility_fields PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::construction::get_fields_contacts_preserve_site_context_and_eligibility_sex PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::construction::intervention_detail_fields_are_requested_once_with_or_without_arms PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::construction::local_detail_plan_uses_the_exact_shared_path_and_fields PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::construction::location_postal_code_is_requested_only_for_location_projections PASS [ 0.008s] biomcp-cli sources::clinicaltrials::tests::construction::search_plan_builds_expected_params PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::construction::search_plan_includes_geo_facility_agg_and_field_override PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::ctgov_age_wire_distinguishes_absent_null_and_blank PASS [ 0.011s] biomcp-cli sources::clinicaltrials::tests::parsing::arm_label_mutations_rebuild_or_reject_assignments_without_leaking_values PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::parsing::ctgov_age_wire_round_trips_only_provider_strings PASS [ 0.008s] biomcp-cli sources::clinicaltrials::tests::parsing::decode_json_classifies_only_intervention_parser_bad_requests PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::parsing::ctgov_eligibility_mutations_change_only_the_shared_values PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::parsing::decode_json_maps_http_error_status_with_excerpt PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::detail_response_checks_http_status_before_valid_json PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::detail_response_returns_shared_references PASS [ 0.007s] biomcp-cli sources::clinicaltrials::tests::parsing::get_response_maps_not_found_to_trial_not_found PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::detail_response_sanitizes_ambiguous_arm_labels PASS [ 0.008s] biomcp-cli sources::clinicaltrials::tests::parsing::legacy_capture_keeps_missing_null_and_empty_arm_arrays_distinct PASS [ 0.014s] biomcp-cli sources::clinicaltrials::tests::parsing::detail_response_maps_every_stable_validation_code PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::parses_contacts_fixture_without_consuming_detail_eligibility PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::parsing::parses_large_document_module PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::parses_search_response_fixture PASS [ 0.007s] biomcp-cli sources::complexportal::tests::construction::complexes_plan_rejects_empty_accession_and_skips_zero_limit PASS [ 0.008s] biomcp-cli sources::complexportal::tests::construction::complexes_plan_sets_endpoint_filters_and_page_size PASS [ 0.011s] biomcp-cli sources::clinicaltrials::tests::parsing::product_arm_states_survive_dedicated_mixed_and_all_routes PASS [ 0.012s] biomcp-cli sources::clinicaltrials::tests::parsing::recorded_ctgov_eligibility_reaches_the_shared_projection_without_loss PASS [ 0.009s] biomcp-cli sources::complexportal::tests::parsing::map_complexes_filters_false_positives_and_shapes_participants PASS [ 0.010s] biomcp-cli sources::complexportal::tests::parsing::decode_json_response_maps_empty_results PASS [ 0.010s] biomcp-cli sources::cpic::tests::construction::empty_gene_pair_plan_uses_the_normal_pair_route PASS [ 0.007s] biomcp-cli sources::cpic::tests::construction::plans_validate_gene_and_drug_inputs PASS [ 0.010s] biomcp-cli sources::cpic::tests::construction::pair_plans_set_expected_filters_and_order PASS [ 0.007s] biomcp-cli sources::cpic::tests::parsing::decode_json_response_maps_http_content_type_and_json_errors PASS [ 0.009s] biomcp-cli sources::cpic::tests::construction::recommendation_frequency_and_guideline_plans_set_expected_filters PASS [ 0.007s] biomcp-cli sources::cpic::tests::parsing::empty_pair_response_decodes PASS [ 0.009s] biomcp-cli sources::cpic::tests::parsing::drug_pair_page_response_decodes_rows PASS [ 0.008s] biomcp-cli sources::cpic::tests::parsing::frequency_response_decodes_rows PASS [ 0.008s] biomcp-cli sources::cpic::tests::parsing::pair_page_response_decodes_rows_and_total PASS [ 0.009s] biomcp-cli sources::cvx::tests::construction::cvx_missing_files_tracks_required_contract PASS [ 0.010s] biomcp-cli sources::cpic::tests::parsing::recommendation_and_guideline_responses_decode PASS [ 0.009s] biomcp-cli sources::cvx::tests::construction::cvx_read_error_mentions_recovery_paths PASS [ 0.008s] biomcp-cli sources::cvx::tests::construction::sync_intro_matches_missing_stale_and_force_modes PASS [ 0.009s] biomcp-cli sources::cvx::tests::construction::sync_state_marks_missing_fresh_stale_and_force PASS [ 0.008s] biomcp-cli sources::cvx::tests::parsing::ensure_csv_content_type_rejects_html_response_without_raw_tags PASS [ 0.010s] biomcp-cli sources::cvx::tests::parsing::ema_search_aliases_require_trade_name_identity PASS [ 0.097s] biomcp-cli sources::clingen::tests::timed_out_lookup_preserves_symbol_data_but_marks_zero_match_timed_out PASS [ 0.011s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_joins_mvx_rows_when_present PASS [ 0.011s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_matches_cvx_family_terms_for_antigen_queries PASS [ 0.012s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_prefers_exact_product_before_family_prefix_and_dedupes PASS [ 0.012s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_skips_non_vaccine_rows PASS [ 0.013s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_supports_exact_and_family_prefix_matching PASS [ 0.011s] biomcp-cli sources::cvx::tests::parsing::lookup_vaccine_candidates_returns_cvx_codes_for_brand_matches PASS [ 0.010s] biomcp-cli sources::cvx::tests::parsing::parse_cvx_products_handles_trailing_blank_field PASS [ 0.012s] biomcp-cli sources::cvx::tests::parsing::parse_cvx_codes_parses_real_shape_and_non_vaccine_flag PASS [ 0.009s] biomcp-cli sources::cvx::tests::parsing::parse_mvx_rows_rejects_short_rows PASS [ 0.010s] biomcp-cli sources::ddinter::tests::construction::basis_freshness_is_stale_without_a_basis_and_fresh_from_recent_files PASS [ 0.010s] biomcp-cli sources::ddinter::tests::construction::ddinter_identity_dedupes_alias_terms PASS [ 0.013s] biomcp-cli sources::ddinter::tests::construction::cached_index_freshness_follows_the_cached_basis_not_the_files PASS [ 0.009s] biomcp-cli sources::ddinter::tests::construction::ddinter_missing_files_reports_incomplete_bundle PASS [ 0.010s] biomcp-cli sources::ddinter::tests::parsing::bundle_parse_errors_carry_the_read_marker PASS [ 0.013s] biomcp-cli sources::ddinter::tests::construction::cached_index_freshness_keeps_a_fresh_load_fresh_after_aging_the_files PASS [ 0.008s] biomcp-cli sources::ddinter::tests::parsing::html_download_replies_are_download_failures_not_read_failures PASS [ 0.010s] biomcp-cli sources::ddinter::tests::parsing::client_lookup_matches_both_sides_without_duplicates PASS [ 0.011s] biomcp-cli sources::ddinter::tests::parsing::client_coverage_status_distinguishes_absent_drug_from_empty_matches PASS [ 0.009s] biomcp-cli sources::ddinter::tests::parsing::identity_terms_match_ddinter_rows_through_synonyms PASS [ 0.009s] biomcp-cli sources::ddinter::tests::parsing::normalize_name_key_collapses_spacing_and_case PASS [ 0.009s] biomcp-cli sources::ddinter::tests::parsing::parse_csv_rows_rejects_incomplete_rows PASS [ 0.008s] biomcp-cli sources::dgidb::tests::construction::gene_interactions_plan_sets_graphql_body PASS [ 0.011s] biomcp-cli sources::ddinter::tests::parsing::parse_csv_rows_reads_expected_shape PASS [ 0.009s] biomcp-cli sources::dgidb::tests::construction::gene_interactions_plan_rejects_invalid_symbols PASS [ 0.009s] biomcp-cli sources::dgidb::tests::parsing::decode_json_response_maps_http_and_content_type_errors PASS [ 0.010s] biomcp-cli sources::ddinter::tests::parsing::parse_csv_rows_rejects_missing_required_columns PASS [ 0.009s] biomcp-cli sources::dgidb::tests::parsing::gene_interactions_response_aggregates_categories_and_interactions PASS [ 0.009s] biomcp-cli sources::dgidb::tests::parsing::gene_interactions_response_surfaces_graphql_errors PASS [ 0.010s] biomcp-cli sources::disable::tests::commercial_restricted_group_includes_specific_and_broad_restrictions PASS [ 0.009s] biomcp-cli sources::disable::tests::kegg_alias_keeps_its_historical_value_set PASS [ 0.011s] biomcp-cli sources::disable::tests::empty_tokens_are_skipped_so_blank_values_disable_nothing PASS [ 0.010s] biomcp-cli sources::disable::tests::non_commercial_group_covers_the_recorded_sources PASS [ 0.010s] biomcp-cli sources::disable::tests::license_required_group_covers_the_recorded_sources PASS [ 0.011s] biomcp-cli sources::disable::tests::parse_records_the_origin_in_each_reason PASS [ 0.011s] biomcp-cli sources::disable::tests::parse_splits_comma_and_pipe_and_trims_and_lowercases PASS [ 0.010s] biomcp-cli sources::disable::tests::unknown_token_error_lists_valid_sources_and_groups PASS [ 0.010s] biomcp-cli sources::disable::tests::registry_ids_match_the_embedded_inventory PASS [ 0.008s] biomcp-cli sources::disgenet::tests::construction::disease_associations_plan_uses_normalized_umls_cui PASS [ 0.009s] biomcp-cli sources::disgenet::tests::construction::disease_associations_plan_skips_limit_zero PASS [ 0.008s] biomcp-cli sources::disgenet::tests::construction::gene_associations_plan_falls_back_to_gene_symbol PASS [ 0.009s] biomcp-cli sources::disgenet::tests::construction::gene_associations_plan_sends_auth_header_and_gene_ncbi_id PASS [ 0.010s] biomcp-cli sources::disgenet::tests::construction::gene_associations_plan_rejects_missing_gene_id_and_symbol PASS [ 0.011s] biomcp-cli sources::disgenet::tests::construction::disease_resolution_plan_sets_free_text_query PASS [ 0.009s] biomcp-cli sources::disgenet::tests::construction::gene_associations_plan_skips_limit_zero PASS [ 0.009s] biomcp-cli sources::disgenet::tests::construction::missing_key_returns_api_key_required_error PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::associations_from_response_applies_limit PASS [ 0.008s] biomcp-cli sources::disgenet::tests::parsing::disease_resolution_returns_source_unavailable_when_resolution_fails PASS [ 0.010s] biomcp-cli sources::disgenet::tests::parsing::decode_summary_response_maps_association_rows PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::disease_resolution_uses_synonym_match PASS [ 0.007s] biomcp-cli sources::disgenet::tests::parsing::empty_payload_returns_empty_vec PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::forbidden_response_reports_rejected_credential PASS [ 0.008s] biomcp-cli sources::disgenet::tests::parsing::rate_limit_error_includes_retry_after_seconds PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::non_ok_response_status_returns_api_error PASS [ 0.010s] biomcp-cli sources::disgenet::tests::parsing::http_500_returns_api_error PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::rejected_credential_recovery_points_to_configuration PASS [ 0.008s] biomcp-cli sources::disgenet::tests::parsing::unauthorized_response_reports_rejected_credential PASS [ 0.009s] biomcp-cli sources::ema::tests::ema_feed_table_matches_required_file_contract PASS [ 0.009s] biomcp-cli sources::ema::tests::ema_missing_files_tracks_required_file_contract_in_order PASS [ 0.010s] biomcp-cli sources::ema::tests::ema_sync_error_mentions_recovery_paths PASS [ 0.008s] biomcp-cli sources::ema::tests::parsing::cvx_signatures_keep_distinctive_initialisms_and_ordered_constraints PASS [ 0.009s] biomcp-cli sources::ema::tests::parsing::boundary_phrase_rejection_advances_across_multibyte_character PASS [ 0.009s] biomcp-cli sources::ema::tests::parsing::cvx_ordered_signature_compacts_but_does_not_reverse_or_cross_fields PASS [ 0.009s] biomcp-cli sources::ema::tests::parsing::ema_truth_table_reports_every_typed_source_and_stable_ties PASS [ 0.014s] biomcp-cli sources::ema::tests::parsing::search_classifies_deduplicates_and_paginates_after_stable_tiering PASS [ 0.022s] biomcp-cli sources::ema::tests::parsing::regulatory_reads_live_schema_holder_key_and_cleaned_indication PASS [ 0.022s] biomcp-cli sources::ema::tests::parsing::resolve_anchor_matches_brand_and_filters_non_human_rows PASS [ 0.024s] biomcp-cli sources::ema::tests::parsing::recorded_cvx_descriptions_bridge_gardasil_prevnar_and_fluzone PASS [ 0.021s] biomcp-cli sources::ema::tests::parsing::safety_ozempic_has_dhpcs_but_empty_referrals_and_psusas PASS [ 0.030s] biomcp-cli sources::ema::tests::parsing::get_identity_keeps_legacy_period_boundaries_while_search_identity_cleans_them PASS [ 0.021s] biomcp-cli sources::ema::tests::parsing::shortage_matches_resolved_human_medicine_anchor PASS [ 0.009s] biomcp-cli sources::ema::tests::parsing::validate_feed_payload_rejects_bad_payloads_before_write PASS [ 0.023s] biomcp-cli sources::ema::tests::parsing::search_medicines_matches_therapeutic_indication_queries PASS [ 0.023s] biomcp-cli sources::ema::tests::parsing::search_medicines_matches_cvx_alias_tokens_on_active_substance PASS [ 0.008s] biomcp-cli sources::ema::tests::sync_intro_matches_download_refresh_and_force_modes PASS [ 0.009s] biomcp-cli sources::ema::tests::sync_plan_marks_missing_and_stale_feeds PASS [ 0.008s] biomcp-cli sources::enrichr::tests::construction::add_list_body_trims_and_joins_genes PASS [ 0.010s] biomcp-cli sources::enrichr::tests::construction::add_list_body_rejects_empty_gene_lists PASS [ 0.008s] biomcp-cli sources::enrichr::tests::construction::enrich_plan_sets_user_list_id_and_library PASS [ 0.008s] biomcp-cli sources::enrichr::tests::parsing::decode_add_list_response_parses_user_list_id PASS [ 0.008s] biomcp-cli sources::enrichr::tests::parsing::decode_enrich_response_gracefully_handles_bad_request PASS [ 0.009s] biomcp-cli sources::enrichr::tests::parsing::decode_enrich_response_parses_json_and_rejects_html PASS [ 0.009s] biomcp-cli sources::europepmc::tests::construction::full_text_xml_plan_builds_supported_pmc_endpoint PASS [ 0.008s] biomcp-cli sources::europepmc::tests::construction::search_query_plan_sets_citation_sort PASS [ 0.010s] biomcp-cli sources::europepmc::tests::construction::full_text_xml_plan_empty_source_or_id_returns_none PASS [ 0.009s] biomcp-cli sources::europepmc::tests::construction::legacy_request_plan_keeps_article_contract_shape PASS [ 0.009s] biomcp-cli sources::europepmc::tests::construction::search_query_plan_sets_keyword_shape_and_date_sort PASS [ 0.009s] biomcp-cli sources::europepmc::tests::construction::search_query_plan_validates_query_and_paging PASS [ 0.009s] biomcp-cli sources::europepmc::tests::parsing::decode_full_text_xml_maps_http_error_status_with_excerpt PASS [ 0.010s] biomcp-cli sources::europepmc::tests::construction::supplementary_files_plan_validates_and_normalizes_pmcid PASS [ 0.008s] biomcp-cli sources::europepmc::tests::parsing::decode_full_text_xml_rejects_invalid_utf8 PASS [ 0.010s] biomcp-cli sources::europepmc::tests::parsing::decode_full_text_xml_returns_body_on_success PASS [ 0.008s] biomcp-cli sources::europepmc::tests::parsing::decode_full_text_xml_returns_none_on_documented_or_empty_absence PASS [ 0.009s] biomcp-cli sources::europepmc::tests::parsing::decode_json_maps_http_error_status_with_excerpt PASS [ 0.008s] biomcp-cli sources::europepmc::tests::parsing::europepmc_result_deserializes_first_index_date PASS [ 0.007s] biomcp-cli sources::europepmc::tests::parsing::supplementary_status_distinguishes_absence_from_failure PASS [ 0.010s] biomcp-cli sources::europepmc::tests::parsing::parses_search_response_from_real_fixture PASS [ 0.009s] biomcp-cli sources::europepmc::tests::parsing::supplementary_response_treats_the_receipted_not_open_access_error_as_absent PASS [ 0.010s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_keeps_zero_byte_members_for_upstream_classification PASS [ 0.011s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_enforces_all_size_and_count_limits PASS [ 0.009s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_rejects_empty_directory_only_and_malformed_archives PASS [ 0.008s] biomcp-cli sources::fda_orphan::tests::envelopes_pin_counts_truncation_and_degraded_without_rows PASS [ 0.011s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_preserves_normalized_names_and_exact_bytes PASS [ 0.009s] biomcp-cli sources::fda_orphan::tests::form_is_exact_and_ordered PASS [ 0.008s] biomcp-cli sources::fda_orphan::tests::merge_is_order_independent_and_discards_conflicts PASS [ 0.010s] biomcp-cli sources::fda_orphan::tests::json_schema_keeps_every_record_key_and_required_nulls PASS [ 0.013s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_rejects_unsafe_and_duplicate_names PASS [ 0.008s] biomcp-cli sources::figshare::tests::construction::article_plan_uses_article_id_path PASS [ 0.011s] biomcp-cli sources::fda_orphan::tests::parser_keeps_exact_alias_and_truth_semantics PASS [ 0.009s] biomcp-cli sources::figshare::tests::construction::parses_aacr_public_article_url_with_file_id PASS [ 0.010s] biomcp-cli sources::figshare::tests::construction::parses_api_article_url PASS [ 0.008s] biomcp-cli sources::figshare::tests::construction::parses_versioned_public_article_url_with_file_path_id PASS [ 0.009s] biomcp-cli sources::figshare::tests::construction::parses_public_article_url_with_file_path_id PASS [ 0.016s] biomcp-cli sources::fda_orphan::tests::parser_validates_only_exactly_admitted_generic_or_trade_rows PASS [ 0.009s] biomcp-cli sources::figshare::tests::construction::production_download_url_validation_allows_figshare_https_hosts PASS [ 0.010s] biomcp-cli sources::figshare::tests::construction::production_download_url_validation_rejects_unsafe_targets PASS [ 0.010s] biomcp-cli sources::figshare::tests::construction::rejects_non_figshare_urls_and_unsafe_names PASS [ 0.009s] biomcp-cli sources::figshare::tests::construction::search_articles_plan_skips_empty_query PASS [ 0.009s] biomcp-cli sources::figshare::tests::parsing::article_error_sanitizes_html_body PASS [ 0.010s] biomcp-cli sources::figshare::tests::construction::search_articles_plan_uses_expected_post_body PASS [ 0.217s] biomcp-cli sources::clingen_cspec::tests::construction::cspec_request_deadline_covers_headers_and_body_with_safe_attribution PASS [ 0.009s] biomcp-cli sources::figshare::tests::parsing::article_response_normalizes_files_and_license PASS [ 0.008s] biomcp-cli sources::figshare::tests::parsing::download_accepted_response_requests_retry_before_limit PASS [ 0.008s] biomcp-cli sources::figshare::tests::parsing::download_error_sanitizes_html_body PASS [ 0.008s] biomcp-cli sources::figshare::tests::parsing::download_errors_after_repeated_accepted_responses PASS [ 0.008s] biomcp-cli sources::figshare::tests::parsing::download_response_returns_bytes_for_success PASS [ 0.010s] biomcp-cli sources::figshare::tests::parsing::search_response_normalizes_rows PASS [ 0.013s] biomcp-cli sources::figshare::tests::parsing::download_response_rejects_oversized_file_bytes PASS [ 5.164s] biomcp-cli entities::drug::test_support::label_fetch_failures_settle_as_unavailable_outcomes PASS [ 0.009s] biomcp-cli sources::gencc::store::errno_tests::a_regular_file_where_the_generation_belongs_classifies_invalid PASS [ 0.008s] biomcp-cli sources::gencc::store::errno_tests::an_unreadable_generation_directory_retains_like_a_wrong_owner_one PASS [ 0.010s] biomcp-cli sources::gencc::store::errno_tests::deterministic_causes_and_unknown_errnos_map_to_invalid PASS [ 0.009s] biomcp-cli sources::gencc::store::errno_tests::environment_errnos_map_to_unavailable PASS [ 0.009s] biomcp-cli sources::gencc::store::errno_tests::permission_and_stale_handle_errnos_map_to_unavailable PASS [ 0.015s] biomcp-cli sources::gencc::store::errno_tests::a_wrong_mode_directory_classifies_invalid_and_prunes PASS [ 0.053s] biomcp-cli sources::fda_orphan::tests::parser_enforces_encoding_body_shape_and_header_contract PASS [ 4.644s] biomcp-cli entities::gene::gencc::tests::crash_boundaries_preserve_one_complete_namespace_generation PASS [ 0.010s] biomcp-cli sources::gencc::tests::current_version_selection_and_cancellation_fail_closed PASS [ 0.010s] biomcp-cli sources::gencc::tests::endpoint_redirect_and_validator_policy_is_closed PASS [ 0.012s] biomcp-cli sources::gencc::tests::duplicate_comparison_uses_normalized_retained_tuple PASS [ 0.012s] biomcp-cli sources::gencc::tests::exact_header_and_all_classification_pairs_are_closed PASS [ 0.009s] biomcp-cli sources::gencc::tests::freshness_and_retry_boundaries_include_rollback_rules PASS [ 0.013s] biomcp-cli sources::gencc::tests::malformed_classification_version_and_pmid_fail_closed PASS [ 0.011s] biomcp-cli sources::gencc::tests::numeric_date_url_and_pmid_boundaries_are_exact PASS [ 0.010s] biomcp-cli sources::gencc::tests::parser_work_obeys_an_expired_refresh_deadline PASS [ 0.015s] biomcp-cli sources::gencc::tests::raw_field_label_and_link_bounds_apply_before_optional_nulling PASS [ 0.010s] biomcp-cli sources::gencc::tests::receipt_backed_odc1_rows_remain_separate_and_ordered PASS [ 0.105s] biomcp-cli sources::gencc::tests::failed_initial_attempt_is_durably_suppressed_without_body_leakage PASS [ 0.010s] biomcp-cli sources::gencc::tests::release_equivalent_fixture_override_requires_exact_signaled_loopback_origin PASS [ 0.198s] biomcp-cli sources::fda_orphan::tests::parser_accepts_five_hundred_rows_and_rejects_the_next_during_iteration PASS [ 0.009s] biomcp-cli sources::gnomad::tests::construction::gene_constraint_plan_posts_graphql_query_and_symbol PASS [ 0.010s] biomcp-cli sources::gnomad::tests::construction::gene_constraint_plan_rejects_invalid_gene_symbols PASS [ 0.009s] biomcp-cli sources::gnomad::tests::construction::variant_population_plan_pins_gnomad_v4_and_complete_fields PASS [ 0.108s] biomcp-cli sources::gencc::tests::refresh_leader_removes_only_owned_abandoned_temporaries PASS [ 0.009s] biomcp-cli sources::gnomad::tests::construction::variant_population_plan_rejects_blank_or_oversized_ids PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::decode_json_response_maps_http_and_content_type_errors PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::gene_constraint_maps_metrics_and_transcript PASS [ 0.009s] biomcp-cli sources::gnomad::tests::parsing::gene_constraint_propagates_non_not_found_graphql_errors PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::gene_constraint_returns_none_for_gene_not_found PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::gene_constraint_returns_some_with_transcript_when_constraint_is_null PASS [ 0.011s] biomcp-cli sources::gnomad::tests::parsing::recorded_v4_population_has_grpmax_and_discordant_exome_genome_filters PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::variant_population_distinguishes_absence_and_provider_failure PASS [ 0.009s] biomcp-cli sources::gnomad::tests::parsing::variant_population_keeps_exome_genome_faf_flags_and_numeric_frequencies_separate PASS [ 0.010s] biomcp-cli sources::gprofiler::tests::construction::enrich_genes_plan_posts_query_and_limit PASS [ 0.010s] biomcp-cli sources::gprofiler::tests::construction::enrich_genes_plan_rejects_empty_input_and_bad_limits PASS [ 0.009s] biomcp-cli sources::gprofiler::tests::parsing::decode_response_and_map_terms_applies_limit PASS [ 0.009s] biomcp-cli sources::gprofiler::tests::parsing::map_enrich_response_preserves_all_failed_genes_without_terms PASS [ 0.009s] biomcp-cli sources::gprofiler::tests::parsing::map_enrich_response_preserves_failed_genes_and_term_limit PASS [ 0.009s] biomcp-cli sources::gprofiler::tests::parsing::remap_gprofiler_error_maps_transient_statuses_to_source_unavailable PASS [ 0.011s] biomcp-cli sources::gprofiler::tests::parsing::transient_status_parser_recognizes_retryable_statuses PASS [ 0.010s] biomcp-cli sources::gtex::tests::construction::gene_search_plan_rejects_invalid_ensembl_ids PASS [ 0.010s] biomcp-cli sources::gtex::tests::construction::gene_search_plan_sets_gene_id_and_gencode_version PASS [ 0.010s] biomcp-cli sources::gtex::tests::construction::median_expression_plan_sets_versioned_id_and_dataset PASS [ 0.009s] biomcp-cli sources::gtex::tests::parsing::decode_json_response_maps_http_and_content_type_errors PASS [ 0.009s] biomcp-cli sources::gtex::tests::parsing::median_expression_returns_empty_when_gene_search_has_no_match PASS [ 0.010s] biomcp-cli sources::gtex::tests::parsing::median_expression_sorts_and_compacts_to_top_and_low_tissues PASS [ 0.315s] biomcp-cli sources::gencc::cancelling_stalled_headers_and_streamed_body_drops_request_and_store_work PASS [ 0.010s] biomcp-cli sources::gtex::tests::parsing::resolve_versioned_id_returns_first_non_empty_fallback PASS [ 0.318s] biomcp-cli sources::gencc::explicit_sync_lock_deadline_preserves_state_with_and_without_generation PASS [ 0.009s] biomcp-cli sources::gtex::tests::parsing::resolve_versioned_id_uses_gene_search_response PASS [ 0.324s] biomcp-cli sources::gencc::cancelled_publication_settles_and_the_previous_generation_survives PASS [ 0.010s] biomcp-cli sources::gtr::tests::construction::client_from_root_uses_supplied_root_without_env PASS [ 0.012s] biomcp-cli sources::gtr::tests::construction::gtr_missing_files_tracks_required_contract PASS [ 0.010s] biomcp-cli sources::gtr::tests::construction::gtr_sync_error_mentions_recovery_paths PASS [ 0.010s] biomcp-cli sources::gtr::tests::construction::sync_intro_matches_missing_stale_and_force_modes PASS [ 0.011s] biomcp-cli sources::gtr::tests::construction::sync_state_marks_missing_fresh_stale_and_force PASS [ 0.012s] biomcp-cli sources::gtr::tests::parsing::load_index_backfills_test_type_from_condition_gene_when_test_version_omits_it PASS [ 0.012s] biomcp-cli sources::gtr::tests::parsing::load_index_unions_linked_and_inline_genes PASS [ 0.010s] biomcp-cli sources::gtr::tests::parsing::merged_genes_deduplicates_symbol_colon_description_form PASS [ 0.010s] biomcp-cli sources::gtr::tests::parsing::parse_condition_gene_joins_correctly PASS [ 0.012s] biomcp-cli sources::gtr::tests::parsing::parse_test_version_accepts_live_header_without_test_type PASS [ 0.010s] biomcp-cli sources::gtr::tests::parsing::parse_test_version_filters_to_current_only PASS [ 0.008s] biomcp-cli sources::gtr::tests::parsing::validate_condition_gene_rejects_missing_header PASS [ 0.013s] biomcp-cli sources::gtr::tests::parsing::production_budgets_and_small_exact_boundaries_are_enforced PASS [ 0.010s] biomcp-cli sources::gtr::tests::parsing::validate_test_version_rejects_missing_header PASS [ 0.010s] biomcp-cli sources::gwas::tests::construction::associations_by_rsid_plan_sets_path_projection_and_limit PASS [ 0.012s] biomcp-cli sources::gtr::tests::parsing::write_validated_pair_preserves_existing_files_when_validation_fails PASS [ 0.008s] biomcp-cli sources::gwas::tests::construction::plans_reject_invalid_inputs PASS [ 0.009s] biomcp-cli sources::gwas::tests::construction::search_plans_set_expected_paths_and_queries PASS [ 0.352s] biomcp-cli sources::gencc::tests::bootstrap_and_store_lock_waits_are_bounded_by_the_call_deadline PASS [ 0.011s] biomcp-cli sources::gwas::tests::day_cache::gwas_requests_carry_the_day_cache_mode_on_the_middleware_builder PASS [ 0.069s] biomcp-cli sources::gtr::tests::parsing::write_validated_pair_rolls_back_first_file_when_second_write_fails PASS [ 0.085s] biomcp-cli sources::gwas::tests::day_cache::a_repeat_gwas_search_inside_a_day_makes_no_request PASS [ 0.010s] biomcp-cli sources::gwas::tests::parsing::associations_by_study_fallback_parse_path_can_read_fallback_response PASS [ 0.078s] biomcp-cli sources::gwas::tests::day_cache::infinite_cache_mode_still_serves_the_aged_gwas_answer PASS [ 11.816s] biomcp-cli cli::stale_json_note_tests::a_stale_clingen_prefetch_note_reaches_the_gene_card PASS [ 0.010s] biomcp-cli sources::gwas::tests::parsing::associations_response_parses_rows PASS [ 0.010s] biomcp-cli sources::gwas::tests::parsing::de_opt_f64_accepts_string_numbers PASS [ 0.011s] biomcp-cli sources::gwas::tests::parsing::decode_json_optional_returns_none_on_not_found PASS [ 0.010s] biomcp-cli sources::gwas::tests::parsing::transient_http_failures_remap_to_source_unavailable PASS [ 0.012s] biomcp-cli sources::gwas::tests::parsing::decode_failures_remap_to_source_unavailable PASS [ 1.877s] biomcp-cli mcp::shell::tests::mcp_who_region_search_error_carries_no_local_data_path PASS [ 0.115s] biomcp-cli sources::gwas::tests::day_cache::cache_mode_off_never_serves_the_stored_gwas_answer PASS [ 0.011s] biomcp-cli sources::gwas::tests::parsing::v2_association_search_response_keeps_rows_and_provider_total PASS [ 0.010s] biomcp-cli sources::hpa::tests::construction::cell_line_rna_plan_rejects_an_unknown_group_and_lists_the_names PASS [ 0.009s] biomcp-cli sources::hpa::tests::construction::cell_line_rna_plan_targets_the_search_download_endpoint PASS [ 0.013s] biomcp-cli sources::gwas::tests::retired_endpoint::gone_by_rsid_endpoint_degrades_with_the_retirement_note PASS [ 0.013s] biomcp-cli sources::gwas::tests::retired_endpoint::not_found_by_rsid_endpoint_means_no_associations PASS [ 0.008s] biomcp-cli sources::hpa::tests::construction::protein_data_plan_normalizes_ensembl_id_before_request PASS [ 0.010s] biomcp-cli sources::hpa::tests::construction::protein_data_plan_rejects_invalid_ensembl_id PASS [ 1.818s] biomcp-cli mcp::shell::typed_get_tests::clinvar_override_is_consistent_across_request_modes_and_mcp_surfaces PASS [ 0.009s] biomcp-cli sources::hpa::tests::parsing::decode_protein_data_xml_returns_none_for_not_found PASS [ 0.010s] biomcp-cli sources::hpa::tests::parsing::decode_protein_data_xml_accepts_xml_and_rejects_html PASS [ 0.011s] biomcp-cli sources::hpa::tests::parsing::parse_gene_hpa_handles_protein_atlas_wrapper_element PASS [ 0.009s] biomcp-cli sources::hpa::tests::parsing::parse_gene_hpa_rejects_a_nesting_bomb PASS [ 0.008s] biomcp-cli sources::hpa::tests::parsing::parse_gene_hpa_uses_only_top_level_canonical_blocks PASS [ 0.009s] biomcp-cli sources::hpo::tests::construction::search_term_ids_plan_builds_query_and_skips_empty_query PASS [ 0.009s] biomcp-cli sources::hpo::tests::construction::normalize_hpo_id_accepts_standard_forms PASS [ 0.010s] biomcp-cli sources::hpo::tests::construction::normalize_term_ids_dedupes_sorts_and_limits PASS [ 0.477s] biomcp-cli sources::gencc::tests::generation_cleanup_prunes_a_wrong_mode_generation_directory PASS [ 0.009s] biomcp-cli sources::hpo::tests::construction::term_plan_builds_normalized_term_path PASS [ 3.185s] biomcp-cli entities::trial::search::eligibility::keep_paths::a_failed_detail_fetch_keeps_the_study_and_reports_it PASS [ 0.009s] biomcp-cli sources::hpo::tests::construction::term_plan_rejects_invalid_id PASS [ 0.152s] biomcp-cli sources::gwas::tests::day_cache::a_stored_body_that_fails_to_decode_is_replaced_by_a_fresh_fetch PASS [ 0.011s] biomcp-cli sources::hpo::tests::parsing::decode_json_response_maps_not_found_and_http_errors PASS [ 0.010s] biomcp-cli sources::hpo::tests::parsing::decode_json_response_maps_term_response PASS [ 0.009s] biomcp-cli sources::hpo::tests::parsing::decode_json_response_rejects_non_json_content_type PASS [ 0.010s] biomcp-cli sources::hpo::tests::parsing::decode_search_term_ids_maps_search_results PASS [ 0.010s] biomcp-cli sources::hpo::tests::parsing::decoded_search_rows_preserve_hpo_labels_and_provider_order PASS [ 0.010s] biomcp-cli sources::hpo::tests::parsing::search_envelope_requires_an_array_terms_field PASS [ 0.010s] biomcp-cli sources::interpro::tests::construction::domains_plan_rejects_empty_accession_and_clamps_limit PASS [ 0.010s] biomcp-cli sources::interpro::tests::construction::domains_plan_requests_expected_endpoint_and_page_size PASS [ 0.008s] biomcp-cli sources::interpro::tests::parsing::decode_domains_response_maps_rows_and_skips_blank_accessions PASS [ 0.008s] biomcp-cli sources::kegg::tests::construction::search_pathways_segments_build_find_pathway_request PASS [ 0.009s] biomcp-cli sources::kegg::tests::construction::get_pathway_segments_build_get_request_and_reject_empty_id PASS [ 0.010s] biomcp-cli sources::kegg::tests::construction::search_pathways_segments_rejects_empty_query PASS [ 0.009s] biomcp-cli sources::kegg::tests::parsing::parse_pathway_record_extracts_summary_and_genes PASS [ 0.010s] biomcp-cli sources::kegg::tests::parsing::decode_text_response_maps_status_and_utf8_errors PASS [ 0.009s] biomcp-cli sources::kegg::tests::parsing::parse_search_response_dedupes_normalized_and_explicit_human_id PASS [ 0.010s] biomcp-cli sources::kegg::tests::parsing::parse_search_response_keeps_human_rows_only PASS [ 0.010s] biomcp-cli sources::kegg::tests::parsing::parse_search_response_normalizes_bare_reference_map_to_human PASS [ 0.116s] biomcp-cli sources::gwas::tests::day_cache::no_cache_flag_never_serves_the_stored_gwas_answer PASS [ 0.010s] biomcp-cli sources::litsense2::tests::construction::legacy_request_plan_keeps_article_contract_shape PASS [ 0.500s] biomcp-cli sources::gencc::tests::initial_fresh_and_conditional_304_lifecycle_uses_one_get PASS [ 0.010s] biomcp-cli sources::litsense2::tests::construction::pubmed_hydration_contract_still_builds_esummary_plan PASS [ 0.178s] biomcp-cli sources::gwas::tests::day_cache::a_gwas_answer_a_day_old_is_refetched PASS [ 0.008s] biomcp-cli sources::litsense2::tests::construction::search_plan_sets_passage_path PASS [ 0.011s] biomcp-cli sources::litsense2::tests::construction::search_plan_rejects_bad_path PASS [ 0.010s] biomcp-cli sources::litsense2::tests::construction::search_plan_rejects_empty_query PASS [ 0.009s] biomcp-cli sources::litsense2::tests::construction::search_plan_sets_sentence_path_and_query PASS [ 0.010s] biomcp-cli sources::litsense2::tests::parsing::decode_json_maps_http_error_status_with_excerpt PASS [ 0.010s] biomcp-cli sources::litsense2::tests::parsing::decode_json_rejects_non_json_content_type PASS [ 0.008s] biomcp-cli sources::litvar::tests::construction::publications_plan_percent_encodes_the_variant_id PASS [ 0.011s] biomcp-cli sources::litsense2::tests::parsing::parses_sentence_response_from_real_fixture PASS [ 0.010s] biomcp-cli sources::litvar::tests::construction::publications_plan_encodes_the_non_rsid_variant_id_shape PASS [ 0.013s] biomcp-cli sources::litsense2::tests::parsing::paragraph_shape_tolerates_null_annotations_and_trimmed_optionals PASS [ 0.012s] biomcp-cli sources::litvar::tests::construction::autocomplete_plan_rejects_empty_and_oversized_queries PASS [ 0.011s] biomcp-cli sources::litvar::tests::construction::autocomplete_plan_sets_query_path_and_parameter PASS [ 0.008s] biomcp-cli sources::litvar::tests::construction::publications_plan_rejects_an_empty_variant_id PASS [ 0.010s] biomcp-cli sources::litvar::tests::parsing::an_empty_publications_reply_is_a_complete_answer PASS [ 0.008s] biomcp-cli sources::litvar::tests::parsing::an_entry_without_an_id_resolves_no_identity PASS [ 0.014s] biomcp-cli sources::litvar::tests::parsing::a_coding_change_entry_keeps_its_change_out_of_the_protein_list PASS [ 0.009s] biomcp-cli sources::litvar::tests::parsing::parses_the_publications_captures PASS [ 0.008s] biomcp-cli sources::medlineplus::tests::construction::search_plan_returns_none_for_empty_query PASS [ 0.010s] biomcp-cli sources::medlineplus::tests::construction::search_plan_uses_expected_query_contract PASS [ 0.010s] biomcp-cli sources::medlineplus::tests::construction::search_plan_uses_retmax_parameter PASS [ 0.013s] biomcp-cli sources::litvar::tests::parsing::parses_the_rsid_autocomplete_capture PASS [ 0.011s] biomcp-cli sources::medlineplus::tests::construction::search_plan_accepts_max_retmax PASS [ 0.011s] biomcp-cli sources::medlineplus::tests::construction::search_plan_rejects_invalid_retmax_bounds PASS [ 0.009s] biomcp-cli sources::medlineplus::tests::parsing::decode_response_body_rejects_html_content_type PASS [ 0.012s] biomcp-cli sources::medlineplus::tests::parsing::decode_response_body_accepts_xml PASS [ 0.009s] biomcp-cli sources::medlineplus::tests::parsing::decode_response_body_rejects_invalid_utf8 PASS [ 0.019s] biomcp-cli sources::litvar::tests::parsing::parses_the_cdkn2a_autocomplete_capture PASS [ 0.009s] biomcp-cli sources::medlineplus::tests::parsing::decode_response_body_reports_http_errors PASS [ 0.008s] biomcp-cli sources::medlineplus::tests::parsing::parse_topics_rejects_a_nesting_bomb PASS [ 0.008s] biomcp-cli sources::monarch::tests::construction::disease_models_plan_sets_object_genotype_category PASS [ 0.009s] biomcp-cli sources::monarch::tests::construction::direct_phenotype_support_plan_repeats_slice_and_term_ids_in_order PASS [ 0.009s] biomcp-cli sources::monarch::tests::construction::disease_phenotypes_plan_sets_subject_phenotype_category PASS [ 0.010s] biomcp-cli sources::monarch::tests::construction::disease_gene_associations_plan_sets_object_gene_category_and_limit PASS [ 0.009s] biomcp-cli sources::monarch::tests::construction::phenotype_similarity_search_plan_normalizes_terms_and_sets_limit PASS [ 0.014s] biomcp-cli sources::medlineplus::tests::parsing::parse_topics_decodes_inline_markup PASS [ 0.008s] biomcp-cli sources::monarch::tests::construction::plans_reject_invalid_disease_ids_and_empty_hpo_terms PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::decode_json_response_maps_5xx_to_source_unavailable PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::map_gene_associations_maps_rows_and_relationships PASS [ 0.010s] biomcp-cli sources::monarch::tests::parsing::direct_support_presence_and_completeness_fail_closed PASS [ 0.545s] biomcp-cli sources::gencc::tests::expired_open_budget_completes_publish_and_deferred_cleanup PASS [ 0.008s] biomcp-cli sources::monarch::tests::parsing::map_phenotype_associations_keeps_hpo_rows_and_qualifiers PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::map_model_associations_maps_genotype_rows PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::map_phenotype_matches_counts_raw_rows_and_keeps_first_disease_occurrence PASS [ 0.008s] biomcp-cli sources::monarch::tests::parsing::phenotype_decode_failures_remain_typed_errors PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::map_phenotype_matches_maps_scores PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::negated_or_filter_violating_rows_never_establish_support_or_absence PASS [ 0.008s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_maps_html_response_to_service_error PASS [ 0.009s] biomcp-cli sources::mutalyzer::tests::construction::normalize_request_plan_percent_encodes_path_segments PASS [ 0.010s] biomcp-cli sources::mutalyzer::tests::construction::normalize_request_plan_encodes_transcript_path PASS [ 0.008s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_maps_provider_invalid_input PASS [ 0.547s] biomcp-cli sources::gencc::tests::generation_cleanup_retains_an_actively_leased_old_snapshot PASS [ 0.010s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_maps_not_found_and_http_errors PASS [ 0.008s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_empty_query PASS [ 0.008s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_parses_success_and_warnings PASS [ 0.010s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_maps_success_status_error_payload_to_invalid_input PASS [ 0.008s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_offset_at_biothings_window PASS [ 0.009s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_limit_out_of_range PASS [ 0.010s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_offset_limit_window_overflow PASS [ 0.010s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_overlong_query PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::decode_json_maps_http_error_status_with_excerpt PASS [ 0.010s] biomcp-cli sources::mychem::tests::parsing::chebi_name_round_trips PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::decode_json_rejects_non_json_content_type PASS [ 0.011s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_sets_path_and_core_query_params PASS [ 0.011s] biomcp-cli sources::mychem::tests::parsing::atc_classifications_support_string_and_list PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::drugbank_interactions_support_object_and_list PASS [ 0.010s] biomcp-cli sources::mychem::tests::parsing::drugcentral_approval_supports_object_and_list PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::parses_query_response_from_real_fixture PASS [ 0.010s] biomcp-cli sources::mychem::tests::parsing::pharm_class_supports_string_and_map PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::unii_supports_object_and_list PASS [ 0.009s] biomcp-cli sources::mydisease::tests::construction::get_plan_rejects_path_query_separators_before_network PASS [ 0.008s] biomcp-cli sources::mydisease::tests::construction::get_plan_sets_path_and_fields PASS [ 0.010s] biomcp-cli sources::mydisease::tests::construction::legacy_plan_helpers_keep_entity_tests_stable PASS [ 0.008s] biomcp-cli sources::mydisease::tests::construction::query_plan_retrieves_exact_synonym_leaf_fields_for_abbreviations PASS [ 0.008s] biomcp-cli sources::mydisease::tests::construction::query_plan_builds_id_lookup_shape PASS [ 0.010s] biomcp-cli sources::mydisease::tests::construction::request_plans_preserve_validation_before_network PASS [ 0.010s] biomcp-cli sources::mydisease::tests::construction::query_plan_sets_search_shape PASS [ 0.009s] biomcp-cli sources::mydisease::tests::parsing::decode_get_hit_maps_not_found_status PASS [ 0.010s] biomcp-cli sources::mydisease::tests::construction::xref_plan_builds_crosswalk_shapes PASS [ 0.010s] biomcp-cli sources::mydisease::tests::parsing::decode_json_maps_http_error_status_with_excerpt PASS [ 0.010s] biomcp-cli sources::mydisease::tests::parsing::hpo_fields_deserialize_from_hit PASS [ 0.009s] biomcp-cli sources::mydisease::tests::parsing::parses_query_response_from_real_fixture PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::batch_symbols_plan_builds_post_form_preserving_input_order PASS [ 0.011s] biomcp-cli sources::mydisease::tests::parsing::parses_get_response_from_real_fixture PASS [ 0.009s] biomcp-cli sources::mygene::tests::construction::batch_symbols_plan_rejects_empty_input PASS [ 0.008s] biomcp-cli sources::mygene::tests::construction::get_plan_rejects_empty_symbol PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::batch_symbols_plan_rejects_oversized_batch PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::get_plan_default_uses_minimal_fields_quoted_symbol_and_size_one PASS [ 0.007s] biomcp-cli sources::mygene::tests::construction::get_plan_rejects_invalid_symbol_characters PASS [ 0.008s] biomcp-cli sources::mygene::tests::construction::get_plan_rejects_overlong_symbol PASS [ 0.009s] biomcp-cli sources::mygene::tests::construction::get_plan_with_transcripts_requests_transcript_and_protein_fields PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::search_plan_adds_chr_filter_only_when_non_empty PASS [ 0.009s] biomcp-cli sources::mygene::tests::construction::search_plan_rejects_offset_plus_limit_overflow PASS [ 0.009s] biomcp-cli sources::mygene::tests::construction::search_plan_sets_path_and_core_query_params PASS [ 0.467s] biomcp-cli sources::gencc::tests::transient_cleanup_classification_retains_generations PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::search_plan_rejects_offset_at_or_above_window PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::decode_json_maps_http_error_status_with_excerpt PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::decode_json_rejects_non_json_content_type PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::dedupe_symbols_dedupes_repeated_ids_keeping_first_position PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::dedupe_symbols_maps_real_batch_in_input_order PASS [ 0.008s] biomcp-cli sources::mygene::tests::parsing::extract_uniprot_returns_none_for_empty_object PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::extract_uniprot_prefers_swiss_prot_over_trembl_synthetic PASS [ 0.011s] biomcp-cli sources::mygene::tests::parsing::extract_uniprot_prefers_swiss_prot_from_real_fixture PASS [ 0.010s] biomcp-cli sources::mygene::tests::parsing::parses_get_response_fields_from_real_fixture PASS [ 0.010s] biomcp-cli sources::mygene::tests::parsing::hgnc_wire_union_normalizes_and_rejects_malformed_values PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::consequence_filter_accepts_shorthand_and_aliases_and_rejects_unknown_and_empty PASS [ 0.010s] biomcp-cli sources::mygene::tests::parsing::parses_search_response_from_real_fixture PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::civic_pubmed_ids_accepts_only_complete_canonical_pubmed_citations PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::field_lists_request_snpeff_feature_type_in_get_and_search PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::get_plan_rejects_overlong_id PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::get_plan_serializes_explicit_genome_build PASS [ 0.012s] biomcp-cli sources::mygene::tests::parsing::symbol_map_parses_recorded_batch_and_drops_unrequested_keys PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::get_plan_builds_variant_path_with_get_fields PASS [ 0.008s] biomcp-cli sources::myvariant::tests::construction::impact_filter_uppercases_and_rejects_unknown_and_empty PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::get_plan_trims_and_rejects_empty_id PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::population_filter_lowercases_and_rejects_unknown_and_empty PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::query_plan_matches_captured_variant_identity_requests PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::query_plan_rejects_offset_at_window PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::query_plan_rejects_offset_plus_limit_overflow PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::query_plan_trims_query_and_rejects_empty PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_builds_exact_hgvsc_clause_and_prefixes_c PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::query_plan_sets_path_and_core_query_params PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_consequence_clause_uses_snpeff_effect_for_every_supported_term PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_gerp_min_clause PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::review_status_filter_maps_stars_and_aliases_and_rejects_unknown_and_empty PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_builds_gene_and_hgvsp_clauses_joined_with_and PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_builds_gene_residue_alias_clause PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_impact_clause_uppercases PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_keeps_already_prefixed_hgvsc PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_lof_has_missing_and_therapy_clauses_compose PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_maps_field_aliases_for_presence_and_absence PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_lowercases_rsid_clause PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_matches_captured_braf_filter_requests PASS [ 0.008s] biomcp-cli sources::myvariant::tests::construction::search_plan_max_frequency_without_population_uses_global_af PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_max_frequency_with_population_scopes_to_population_af PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_protein_alias_requires_gene PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_prefixes_hgvsp_with_p_when_missing PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_invalid_consequence PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_filters_that_require_a_missing_field PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_min_cadd_clause PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_invalid_gene_symbol_characters PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_invalid_presence_and_absence_fields PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_negative_min_cadd PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_invalid_review_status PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_non_finite_min_cadd PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_non_finite_gerp_min PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_offset_at_window PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_out_of_range_max_frequency PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_when_no_filters_present PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_offset_plus_limit_overflow PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_out_of_range_revel_min PASS [ 0.008s] biomcp-cli sources::myvariant::tests::construction::search_plan_significance_clause_uses_canonical_value PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_review_status_clause_quotes_provider_phrase_for_every_alias PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_tumor_site_and_condition_clauses PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::significance_filter_accepts_aliases_and_rejects_unknown_and_empty PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_revel_min_clause PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_sets_path_size_from_and_fields PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_uses_bounded_gerp_projection PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::clinvar_rcv_deserializes_array PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::clinvar_rcv_defaults_to_empty_when_missing PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::clinvar_rcv_deserializes_single_object PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::gnomad_nested_fields_deserialize PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::float_or_vec_first_returns_single_or_head_of_list PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::decode_json_maps_http_error_status_with_excerpt PASS [ 0.011s] biomcp-cli sources::myvariant::tests::parsing::decode_json_rejects_html_content_type PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::parses_receipted_braf_filter_searches PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::parses_receipted_braf_get_hit PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_value_passes_object_through PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_value_empty_array_is_not_found PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::parses_receipted_variant_identity_searches PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::parses_search_response_total_and_hits_from_real_fixture PASS [ 0.013s] biomcp-cli sources::myvariant::tests::parsing::parses_get_hit_nested_fields_from_real_fixture PASS [ 0.008s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_value_takes_first_array_element PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_value_scalar_is_api_error PASS [ 0.008s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_values_preserves_object_array_and_empty_shapes PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::snpeff_annotation_projection_isolated_and_bounded PASS [ 0.013s] biomcp-cli sources::myvariant::tests::parsing::snpeff_interaction_rows_are_skipped_and_transcript_rows_kept PASS [ 0.013s] biomcp-cli sources::myvariant::tests::parsing::snpeff_interaction_rows_past_the_bound_drop_the_list PASS [ 0.010s] biomcp-cli sources::ncbi_efetch::clinvar::tests::hsd17b4_returns_current_two_submitter_aggregate_and_both_scvs PASS [ 0.015s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_condition_boundary_is_accepted_and_plus_one_rejected PASS [ 0.010s] biomcp-cli sources::ncbi_efetch::clinvar::tests::parses_domains_current_noncontributing_rows_and_trait_mappings PASS [ 0.010s] biomcp-cli sources::ncbi_efetch::clinvar::tests::record_level_germline_classification_is_absent_when_the_record_has_none PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::clinvar::tests::rejects_hostile_invalid_and_mismatched_documents PASS [ 0.026s] biomcp-cli sources::ncbi_efetch::clinvar::clinvar_render_tests::clinvar_markdown_keeps_vcv_rcv_and_scv_statuses_and_domains_distinct PASS [ 0.027s] biomcp-cli sources::ncbi_efetch::clinvar::tests::cumulative_public_text_budget_accepts_exact_and_rejects_plus_one PASS [ 0.025s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_text_and_list_boundaries_are_enforced_without_partial_records PASS [ 0.017s] biomcp-cli sources::ncbi_efetch::clinvar::tests::parses_record_level_germline_classification_from_recorded_tp53_record PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::clinvar::tests::request_plan_uses_numeric_variation_identity_and_vcv_mode PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::clinvar::tests::response_requires_success_and_xml_content_type PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::clinvar::tests::too_many_requests_is_distinguishable_from_other_http_failures PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::construction::full_text_xml_plan_empty_input_returns_none PASS [ 0.010s] biomcp-cli sources::ncbi_efetch::tests::construction::full_text_xml_plan_adds_api_key_when_configured PASS [ 0.011s] biomcp-cli sources::ncbi_efetch::clinvar::tests::supplied_invalid_numeric_and_contribution_attributes_fail_closed PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::construction::full_text_xml_plan_uses_numeric_pmcid PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::construction::full_text_xml_plan_validates_pmcid_shape PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::parsing::decode_text_maps_http_error_status_with_excerpt PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::construction::normalize_pmcid_accepts_prefixed_and_numeric_values PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::parsing::decode_text_rejects_invalid_utf8 PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::parsing::normalize_article_xml_extracts_article_from_wrapped_fixture PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::parsing::decode_text_treats_documented_absence_statuses_as_empty PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::parsing::normalize_article_xml_keeps_original_malformed_and_entity_bearing_xml PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::parsing::normalize_article_xml_keeps_unwrapped_xml PASS [ 0.007s] biomcp-cli sources::ncbi_efetch::tests::parsing::normalize_article_xml_returns_none_for_blank_input PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::doi_to_pmcid_plan_builds_lookup_query PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::doi_to_pmcid_plan_validates_shape PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::pmid_to_pmcid_plan_builds_lookup_query PASS [ 0.052s] biomcp-cli sources::ncbi_efetch::clinvar::tests::duplicate_assertion_ids_reject_trait_mapping_amplification PASS [ 0.009s] biomcp-cli sources::ncbi_idconv::tests::construction::pmid_to_pmcid_plan_adds_api_key_when_configured PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::pmid_to_pmcid_plan_empty_input_returns_none PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::pmid_to_pmcid_plan_validates_numeric_input PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::parsing::decode_json_maps_http_error_status_with_excerpt PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::parsing::extract_first_pmcid_returns_none_for_missing_or_blank_value PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::get_plan_executes_the_exact_local_detail_plan_with_one_credential_header PASS [ 0.009s] biomcp-cli sources::ncbi_idconv::tests::parsing::parses_lookup_response_from_real_fixture PASS [ 0.009s] biomcp-cli sources::ncbi_idconv::tests::parsing::extract_first_pmcid_trims_non_empty_value PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_concept_id_disease_maps_to_concept_param PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_current_trial_status_variant PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_includes_interventions_and_biomarkers_when_present PASS [ 0.007s] biomcp-cli sources::nci_cts::tests::construction::search_plan_includes_sites_org_name PASS [ 0.009s] biomcp-cli sources::nci_cts::tests::construction::search_plan_keyword_disease_maps_to_keyword_param PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_sets_method_path_and_api_key_header PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_serializes_status_phase_and_geo_contract_params PASS [ 0.009s] biomcp-cli sources::nci_cts::tests::construction::search_plan_skips_blank_phases PASS [ 0.010s] biomcp-cli sources::nci_cts::tests::parsing::decode_json_maps_http_error_for_nci PASS [ 0.010s] biomcp-cli sources::nci_cts::tests::parsing::detail_response_checks_status_before_parsing_and_never_stores_the_body PASS [ 0.009s] biomcp-cli sources::nci_cts::tests::parsing::detail_response_maps_local_failures_without_source_values PASS [ 0.011s] biomcp-cli sources::nci_cts::tests::parsing::detail_response_maps_the_resource_limit_to_narrow_recovery PASS [ 0.007s] biomcp-cli sources::nci_cts::tests::parsing::hits_falls_back_to_trials_when_data_empty PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::parsing::hits_prefers_data_over_trials PASS [ 0.010s] biomcp-cli sources::nci_cts::tests::parsing::detail_response_rejects_identity_and_old_lenient_shapes PASS [ 0.008s] biomcp-cli sources::nih_reporter::tests::construction::exact_phrase_search_text_escapes_quotes_and_backslashes PASS [ 0.009s] biomcp-cli sources::nci_cts::tests::parsing::total_accepts_total_count_alias PASS [ 0.009s] biomcp-cli sources::nih_reporter::tests::construction::funding_plan_builds_approved_post_body PASS [ 0.007s] biomcp-cli sources::nih_reporter::tests::parsing::decode_json_maps_http_error_status_with_excerpt PASS [ 0.009s] biomcp-cli sources::nih_reporter::tests::construction::funding_plan_rejects_empty_query PASS [ 0.009s] biomcp-cli sources::nih_reporter::tests::construction::recent_nih_fiscal_years_roll_over_on_october_boundary PASS [ 0.008s] biomcp-cli sources::nih_reporter::tests::parsing::decode_json_rejects_non_json_content_type PASS [ 0.007s] biomcp-cli sources::nih_reporter::tests::parsing::deduplicate_grants_truncates_to_top_ten_after_sorting PASS [ 0.008s] biomcp-cli sources::nih_reporter::tests::parsing::deduplicate_grants_groups_by_core_project_num_then_project_num PASS [ 0.009s] biomcp-cli sources::nih_reporter::tests::parsing::map_project_year_row_prefers_contact_pi_then_contact_investigator_then_first_pi PASS [ 0.009s] biomcp-cli sources::ols4::tests::construction::search_request_plan_keeps_empty_query_as_no_request PASS [ 0.008s] biomcp-cli sources::ols4::tests::parsing::decode_search_response_maps_docs PASS [ 0.010s] biomcp-cli sources::ols4::tests::construction::search_request_plan_exposes_canonical_query_contract PASS [ 0.010s] biomcp-cli sources::nih_reporter::tests::parsing::parses_funding_response_fixture_and_maps_section PASS [ 0.008s] biomcp-cli sources::ols4::tests::parsing::decode_search_response_maps_http_and_content_type_errors PASS [ 0.008s] biomcp-cli sources::oncokb::tests::construction::annotate_plan_requires_api_key PASS [ 0.008s] biomcp-cli sources::oncokb::tests::construction::annotate_plan_requires_gene_and_alteration PASS [ 12.116s] biomcp-cli cli::stale_json_note_tests::a_stale_article_search_json_states_the_cache_age_in_meta_notes PASS [ 0.008s] biomcp-cli sources::oncokb::tests::construction::protein_change_attempts_try_original_and_prefixed_forms_without_duplicates PASS [ 0.009s] biomcp-cli sources::oncokb::tests::construction::annotate_plan_sets_query_and_auth_header PASS [ 0.009s] biomcp-cli sources::oncokb::tests::parsing::decode_json_response_maps_http_errors_with_excerpt PASS [ 0.009s] biomcp-cli sources::oncokb::tests::parsing::decode_json_response_maps_invalid_json PASS [ 0.009s] biomcp-cli sources::oncokb::tests::parsing::parses_annotation_fixture PASS [ 0.008s] biomcp-cli sources::opencitations::tests::doi_normalization_matches_the_jats_reference_rules PASS [ 0.009s] biomcp-cli sources::opencitations::tests::oci_and_creation_validation_fails_closed PASS [ 0.042s] biomcp-cli sources::nci_cts::tests::parsing::parses_real_search_response_total_and_hits PASS [ 0.115s] biomcp-cli sources::myvariant::tests::parsing::snpeff_long_tail_is_drained_without_projecting_tail_objects_or_strings PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::faers_count_plans_try_exact_fallback PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::escape_query_value_escapes_lucene_special_chars PASS [ 0.010s] biomcp-cli sources::openfda::tests::construction::drug_and_device_plans_set_expected_paths PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::faers_search_plan_sets_query_limit_skip_and_key PASS [ 0.116s] biomcp-cli sources::ncbi_efetch::clinvar::tests::empty_status_child_cannot_bypass_shared_attribute_budget PASS [ 0.008s] biomcp-cli sources::openfda::tests::construction::label_elements_search_plan_scopes_the_identity_field PASS [ 0.008s] biomcp-cli sources::openfda::tests::construction::label_generic_exact_search_plan_matches_the_plain_ingredient_field PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::plans_validate_limits_and_required_values PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::label_search_plan_escapes_drug_name_and_sorts PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::recall_shortage_and_device_event_plans_sort_latest_first PASS [ 0.126s] biomcp-cli sources::ncbi_efetch::clinvar::tests::many_classification_children_fail_before_shared_text_is_cloned PASS [ 0.009s] biomcp-cli sources::openfda::tests::parsing::count_value_detects_keyword_field_retry PASS [ 0.145s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_rcv_and_scv_boundaries_are_accepted_and_plus_one_rejected PASS [ 0.049s] biomcp-cli sources::opencitations::tests::references_accept_an_empty_list_as_no_known_edge PASS [ 0.009s] biomcp-cli sources::openfda::tests::parsing::decode_json_optional_maps_404_http_and_json_errors PASS [ 0.009s] biomcp-cli sources::openfda::tests::parsing::device_responses_decode_510k_and_pma_rows PASS [ 0.053s] biomcp-cli sources::opencitations::tests::references_request_uses_the_normalized_doi_path PASS [ 0.010s] biomcp-cli sources::openfda::tests::parsing::drugsfda_response_decodes_application_rows PASS [ 0.010s] biomcp-cli sources::openfda::tests::parsing::faers_and_count_responses_decode PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_associated_targets_degrades_when_associated_targets_missing PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_associated_targets_maps_efo_lookup_result PASS [ 0.011s] biomcp-cli sources::opentargets::tests::disease_associated_targets_egfr_lung PASS [ 0.009s] biomcp-cli sources::opentargets::tests::disease_associated_targets_maps_scores PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_genes_plan_builds_graphql_request PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_id_from_search_response_prefers_efo_hit PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_prevalence_maps_frequency_evidence PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_prevalence_plan_builds_graphql_request PASS [ 0.068s] biomcp-cli sources::openfda::tests::day_cache::a_repeat_adverse_event_count_inside_a_day_makes_no_request PASS [ 0.008s] biomcp-cli sources::opentargets::tests::drug_sections_maps_osimertinib PASS [ 0.010s] biomcp-cli sources::opentargets::tests::drug_sections_degrades_when_indications_missing PASS [ 0.009s] biomcp-cli sources::opentargets::tests::drug_sections_maps_targets_and_indications PASS [ 0.009s] biomcp-cli sources::opentargets::tests::drug_sections_plan_builds_graphql_request PASS [ 0.070s] biomcp-cli sources::openfda::tests::day_cache::a_repeat_label_search_inside_a_day_makes_no_request PASS [ 0.068s] biomcp-cli sources::openfda::tests::day_cache::infinite_cache_mode_keeps_the_aged_label_warning_and_note PASS [ 0.010s] biomcp-cli sources::opentargets::tests::drug_sections_propagates_graphql_error_message PASS [ 0.011s] biomcp-cli sources::opentargets::tests::search_disease_plan_builds_graphql_request PASS [ 0.011s] biomcp-cli sources::opentargets::tests::normalize_disease_id_handles_known_forms PASS [ 0.010s] biomcp-cli sources::opentargets::tests::search_target_plan_builds_graphql_request PASS [ 0.008s] biomcp-cli sources::opentargets::tests::target_clinical_context_degrades_when_drug_candidates_missing PASS [ 0.096s] biomcp-cli sources::opencitations::tests::references_reject_an_oversize_body PASS [ 0.010s] biomcp-cli sources::opentargets::tests::target_clinical_context_collects_diseases_and_drugs PASS [ 0.009s] biomcp-cli sources::opentargets::tests::target_clinical_context_plan_builds_graphql_request PASS [ 0.008s] biomcp-cli sources::opentargets::tests::target_druggability_context_plan_builds_graphql_request PASS [ 0.008s] biomcp-cli sources::opentargets::tests::target_druggability_context_returns_default_when_target_missing PASS [ 0.009s] biomcp-cli sources::opentargets::tests::target_druggability_context_groups_modalities_and_safety_summary PASS [ 0.009s] biomcp-cli sources::opentargets::tests::target_id_from_search_response_prefers_exact_symbol_match PASS [ 0.010s] biomcp-cli sources::orcid::tests::an_absent_group_key_fails_decoding PASS [ 0.009s] biomcp-cli sources::orcid::tests::closing::a_group_without_summaries_is_a_contract_error PASS [ 0.008s] biomcp-cli sources::orcid::tests::closing::a_present_year_outside_1000_9999_is_a_contract_error PASS [ 0.012s] biomcp-cli sources::orcid::tests::closing::a_declared_oversize_person_body_fails_the_pre_read_check_in_one_get PASS [ 0.012s] biomcp-cli sources::orcid::tests::closing::client_errors_are_never_retried PASS [ 0.010s] biomcp-cli sources::orcid::tests::closing::identifiers_from_excluded_locations_never_reach_the_selected_work PASS [ 0.011s] biomcp-cli sources::orcid::tests::closing::configured_person_read_records_the_bearer_header PASS [ 0.012s] biomcp-cli sources::orcid::tests::closing::not_found_is_a_sanitized_single_get PASS [ 0.013s] biomcp-cli sources::orcid::tests::closing::one_and_sixty_four_summaries_are_the_group_bound_edges PASS [ 0.022s] biomcp-cli sources::orcid::tests::closing::a_streamed_oversize_person_body_fails_once_without_retry PASS [ 0.011s] biomcp-cli sources::orcid::tests::closing::representative_ties_prefer_the_lowest_put_code_then_original_order PASS [ 0.012s] biomcp-cli sources::orcid::tests::closing::rejected_credentials_fail_immediately_without_retry PASS [ 0.011s] biomcp-cli sources::orcid::tests::closing::tokenless_person_read_serves_the_recorded_reply_without_bearer_auth PASS [ 0.112s] biomcp-cli sources::openfda::tests::day_cache::cache_mode_off_never_serves_the_stored_label_answer PASS [ 0.009s] biomcp-cli sources::orcid::tests::closing::works_visibility_accepts_both_spellings_of_public_and_filters_the_rest PASS [ 0.008s] biomcp-cli sources::orcid::tests::content_type_gate_accepts_only_the_two_orcid_media_types PASS [ 0.008s] biomcp-cli sources::orcid::tests::person_name_visibility_accepts_both_spellings_of_public_and_refuses_the_rest PASS [ 0.009s] biomcp-cli sources::orcid::tests::person_path_and_public_name_precedence PASS [ 0.007s] biomcp-cli sources::orcid::tests::request_plans_carry_exact_paths_headers_and_bearer_mode_only PASS [ 0.008s] biomcp-cli sources::orcid::tests::token_classification_matches_the_frozen_three_states PASS [ 0.010s] biomcp-cli sources::orcid::tests::works_root_path_mismatch_fails_the_contract PASS [ 0.010s] biomcp-cli sources::orcid::tests::works_validation_selects_representatives_and_rejects_bad_shapes PASS [ 0.009s] biomcp-cli sources::ordinary_url_policy::tests::confines_redirects_to_the_request_origin PASS [ 0.008s] biomcp-cli sources::ordinary_url_policy::tests::override_origin_requires_valid_http_without_credentials PASS [ 0.009s] biomcp-cli sources::ordinary_url_policy::tests::recognizes_base_and_full_url_provider_overrides PASS [ 0.007s] biomcp-cli sources::pharmacodb::tests::construction::each_filter_sends_only_the_ids_it_names PASS [ 0.040s] biomcp-cli sources::orcid::tests::closing::tokenless_works_read_serves_the_recorded_reply_without_bearer_auth PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::construction::a_blank_lookup_value_fails_before_any_request PASS [ 0.009s] biomcp-cli sources::ordinary_url_policy::tests::requires_public_https_unless_origin_is_explicitly_overridden PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::construction::every_plan_posts_to_the_one_graphql_path PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::construction::lookup_plans_carry_their_one_variable PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::construction::experiments_plans_send_all_true_with_an_id_argument_and_no_name_argument PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::construction::the_counts_projection_asks_for_the_id_and_the_dataset_name_only PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::construction::the_recorded_dataset_list_holds_the_ten_pharmacodb_datasets PASS [ 0.007s] biomcp-cli sources::pharmacodb::tests::construction::the_row_projection_leaves_out_dss2_and_dss3 PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::limits::the_cap_sits_above_every_measured_pharmacodb_body PASS [ 0.157s] biomcp-cli sources::openfda::tests::day_cache::an_openfda_key_keeps_the_cache_bypassed PASS [ 0.164s] biomcp-cli sources::openfda::tests::day_cache::a_label_answer_a_day_old_is_refetched PASS [ 0.166s] biomcp-cli sources::openfda::tests::day_cache::an_adverse_event_count_a_day_old_is_refetched PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::parsing::an_html_body_served_with_http_200_is_a_provider_error PASS [ 0.010s] biomcp-cli sources::pharmacodb::tests::parsing::a_cell_line_pharmacodb_does_not_hold_is_a_miss_and_not_a_failure PASS [ 0.010s] biomcp-cli sources::pharmacodb::tests::parsing::a_compound_pharmacodb_does_not_hold_is_a_miss_and_not_a_failure PASS [ 0.010s] biomcp-cli sources::pharmacodb::tests::parsing::another_graphql_error_is_a_source_error_naming_the_url_and_the_operation PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::parsing::the_cell_line_name_fixture_reaches_hl60tb PASS [ 0.030s] biomcp-cli sources::pharmacodb::tests::limits::a_body_over_the_cap_is_refused_while_it_streams PASS [ 0.013s] biomcp-cli sources::pharmacodb::tests::parsing::the_cell_line_counts_fixture_sums_per_dataset_in_name_order PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::parsing::the_cell_line_uid_fixture_carries_the_molm13_record PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::parsing::the_compound_fixture_carries_venetoclax PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::parsing::the_pair_fixture_carries_both_venetoclax_rows_for_molm13 PASS [ 0.023s] biomcp-cli sources::pharmacodb::tests::parsing::the_cell_line_row_fixture_keeps_every_row_and_every_null_metric PASS [ 0.016s] biomcp-cli sources::pharmacodb::tests::parsing::the_compound_counts_fixture_sums_the_venetoclax_datasets PASS [ 0.008s] biomcp-cli sources::pharmgkb::tests::construction::annotation_plans_validate_inputs PASS [ 0.112s] biomcp-cli sources::orcid::tests::closing::an_expired_deadline_admits_no_second_attempt_and_paces_the_first PASS [ 0.009s] biomcp-cli sources::pharmgkb::tests::construction::clinpgx_default_and_annotation_queries_follow_the_live_contract PASS [ 0.009s] biomcp-cli sources::pharmgkb::tests::construction::drug_annotation_plans_cover_three_annotation_kinds PASS [ 0.009s] biomcp-cli sources::pharmgkb::tests::parsing::annotation_response_applies_the_local_page_after_mapping PASS [ 0.053s] biomcp-cli sources::pharmacodb::tests::limits::a_body_at_the_cap_still_reads PASS [ 0.008s] biomcp-cli sources::pharmgkb::tests::parsing::annotation_response_maps_ids_titles_levels_and_urls PASS [ 0.010s] biomcp-cli sources::pharmgkb::tests::construction::gene_annotation_plans_normalize_gene_and_properties PASS [ 0.007s] biomcp-cli sources::pharmgkb::tests::parsing::dedupe_and_limit_keeps_unique_annotation_rows PASS [ 0.009s] biomcp-cli sources::pharmgkb::tests::parsing::decode_json_optional_maps_404_http_content_type_and_json_errors PASS [ 0.009s] biomcp-cli sources::pmc_article::tests::bot_challenge_markers_need_both_recorded_title_words PASS [ 0.008s] biomcp-cli sources::pmc_article::tests::linked_http_statuses_fold_to_closed_coverage_outcomes PASS [ 0.007s] biomcp-cli sources::pmc_article::tests::pow_markers_are_case_insensitive PASS [ 0.010s] biomcp-cli sources::pmc_article::tests::exact_provider_routes_match_pmcid_and_preserve_signed_fetch_url PASS [ 0.007s] biomcp-cli sources::pmc_oa::tests::construction::oa_archive_manifest_plan_empty_input_returns_none PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::construction::oa_archive_manifest_plan_lists_versioned_s3_prefix PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::construction::oa_archive_manifest_plan_rejects_overlong_id PASS [ 0.038s] biomcp-cli sources::pmc_article::tests::equal_identity_routes_continue_until_one_returns_bytes PASS [ 0.042s] biomcp-cli sources::pmc_article::tests::declared_binary_html_is_not_returned_as_bytes PASS [ 0.008s] biomcp-cli sources::pmc_oa::tests::parsing::decode_archive_bytes_preserves_success_bytes_and_maps_errors PASS [ 0.042s] biomcp-cli sources::pmc_article::tests::recorded_pow_interstitial_is_not_returned_as_bytes PASS [ 0.010s] biomcp-cli sources::pmc_oa::tests::parsing::decode_text_projects_http_errors_as_package_route_failures PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::direct_buffered_archive_limit_is_sanitized PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::empty_s3_version_listing_is_healthy_package_absence PASS [ 0.032s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_rejects_single_metadata_record_over_limit PASS [ 0.036s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_accepts_exact_member_count_limit PASS [ 0.035s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_rejects_too_many_members PASS [ 0.010s] biomcp-cli sources::pmc_oa::tests::parsing::extract_first_nxml_reads_xml_entry PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::malformed_or_unexpected_manifest_is_failure_not_absence PASS [ 0.008s] biomcp-cli sources::pmc_oa::tests::parsing::parse_archive_manifest_xml_rejects_a_nesting_bomb PASS [ 0.008s] biomcp-cli sources::pmc_oa::tests::parsing::parses_receipted_s3_metadata_to_xml_object PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::parses_s3_version_listing_to_metadata_route PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::text_and_fulltext_archive_decoders_reject_invalid_utf8 PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::consumer_matrix_enumerates_valid_origins_and_shared_rejections PASS [ 0.111s] biomcp-cli sources::pmc_article::tests::rejected_targets_are_precontact PASS [ 0.008s] biomcp-cli sources::provider_url_policy::tests::cspec_fixture_origin_requires_a_pathless_loopback_origin PASS [ 0.174s] biomcp-cli sources::pharmacodb::tests::limits::the_k562_counts_case_parses_and_sums_to_every_row PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::dns_answer_set_is_rejected_if_any_answer_is_forbidden PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::provider_url_consumer_ownership_ratchet_names_every_fetch_site PASS [ 0.008s] biomcp-cli sources::provider_url_policy::tests::provider_vouched_pdf_policy_accepts_publisher_hosts_and_keeps_transport_guards PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_cgnat_range_without_blocking_adjacent_public_addresses PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_encoded_ipv4_literal_hosts_after_url_canonicalization PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_ipv4_compatible_ipv6_with_forbidden_embedded_address PASS [ 0.008s] biomcp-cli sources::provider_url_policy::tests::rejects_loopback_private_link_local_metadata_and_mapped_addresses PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_nat64_with_forbidden_embedded_address PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_scheme_credentials_port_and_ip_literals_without_echoing_url PASS [ 0.142s] biomcp-cli sources::pmc_article::tests::unsafe_redirect_is_rejected_before_redirect_target_contact PASS [ 0.008s] biomcp-cli sources::provider_url_policy::tests::selected_fixture_origin_allows_only_exact_ip_loopback PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::citation_plan_rejects_non_numeric_pmid PASS [ 0.009s] biomcp-cli sources::pubmed::tests::construction::citation_plan_sets_required_query_params_and_api_key PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::esearch_plan_applies_date_range_params PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::esearch_plan_sets_required_query_params_and_api_key PASS [ 0.007s] biomcp-cli sources::pubmed::tests::construction::esearch_plan_validates_term_and_retmax PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::esummary_plan_handles_empty_and_blank_ids PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::esummary_plan_sets_ids_and_api_key PASS [ 0.009s] biomcp-cli sources::pubmed::tests::parsing::citation_decoder_accepts_xml_media_types_and_hides_bodies PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::citation_parser_rejects_misses_errors_and_invalid_required_shape PASS [ 0.009s] biomcp-cli sources::pubmed::tests::parsing::citation_request_errors_are_payload_free_and_total PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::citation_without_mesh_is_available_empty PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::decode_json_maps_http_and_content_type_errors PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::esearch_handles_empty_idlist_and_rejects_bad_count PASS [ 0.009s] biomcp-cli sources::pubmed::tests::parsing::esummary_strictly_validates_uids_and_entries PASS [ 0.011s] biomcp-cli sources::pubmed::tests::parsing::parses_a_real_pubmed_citation_capture PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::parses_citation_authors_affiliations_orcid_and_mesh PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::parses_esearch_fixture PASS [ 0.009s] biomcp-cli sources::pubmed::tests::parsing::parses_esummary_fixture_in_requested_order PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::seven_variant_corpus_pubmed_requests_and_decoders_remain_production_exact PASS [ 0.008s] biomcp-cli sources::pubtator::tests::construction::autocomplete_plan_sets_query_and_validates_input PASS [ 0.008s] biomcp-cli sources::pubtator::tests::construction::export_biocjson_plan_sets_pmids_and_optional_api_key PASS [ 0.009s] biomcp-cli sources::pubtator::tests::construction::legacy_request_plans_keep_article_contract_shape PASS [ 0.008s] biomcp-cli sources::pubtator::tests::construction::search_plan_sets_text_paging_sort_and_auth PASS [ 0.008s] biomcp-cli sources::pubtator::tests::construction::search_plan_validates_query_and_page_size PASS [ 0.008s] biomcp-cli sources::pubtator::tests::parsing::decode_json_maps_http_error_status_with_excerpt PASS [ 0.010s] biomcp-cli sources::pubtator::tests::parsing::db_id_rsid_reads_only_the_segment_before_the_marker PASS [ 0.008s] biomcp-cli sources::pubtator::tests::parsing::decode_json_rejects_non_json_content_type PASS [ 0.008s] biomcp-cli sources::pubtator::tests::parsing::parses_autocomplete_response_fixture PASS [ 0.010s] biomcp-cli sources::pubtator::tests::parsing::parses_30738221_capture_with_locations_and_variant_rsids PASS [ 0.011s] biomcp-cli sources::pubtator::tests::parsing::parses_real_export_capture_and_retains_disease_normalized_id PASS [ 0.115s] biomcp-cli sources::provider_url_policy::tests::redirect_target_is_revalidated_before_target_contact PASS [ 0.008s] biomcp-cli sources::pubtator::tests::parsing::parses_search_response_fixture_and_stringifies_numeric_pmid PASS [ 0.010s] biomcp-cli sources::pubtator::tests::parsing::parses_rsid_autocomplete_capture_and_extracts_the_db_id_rsid PASS [ 0.009s] biomcp-cli sources::pubtator::tests::parsing::search_result_trims_empty_string_pmids_to_none PASS [ 0.009s] biomcp-cli sources::quickgo::tests::construction::annotations_plan_rejects_empty_gene_product_id PASS [ 0.008s] biomcp-cli sources::quickgo::tests::construction::annotations_plan_sets_expected_query_params PASS [ 0.008s] biomcp-cli sources::quickgo::tests::construction::terms_plan_sorts_dedupes_and_skips_empty_input PASS [ 0.008s] biomcp-cli sources::quickgo::tests::parsing::decode_annotations_response_maps_results PASS [ 0.008s] biomcp-cli sources::quickgo::tests::parsing::decode_terms_response_maps_term_metadata PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::article_source_urls_keep_their_live_pacing_policies PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::cellosaurus_urls_resolve_to_the_cellosaurus_policy PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::exact_unpaced_origin_skips_waiting_and_state_updates PASS [ 0.009s] biomcp-cli sources::rate_limit::tests::kegg_urls_resolve_to_kegg_policy PASS [ 0.007s] biomcp-cli sources::rate_limit::tests::litsense2_policy_uses_one_second_interval PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::litsense2_urls_resolve_to_litsense2_policy PASS [ 0.007s] biomcp-cli sources::rate_limit::tests::nih_reporter_policy_uses_one_second_interval PASS [ 0.007s] biomcp-cli sources::rate_limit::tests::nih_reporter_urls_resolve_to_nih_reporter_policy PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::pubmed_eutils_interval_uses_key_aware_values PASS [ 0.190s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_skips_unsafe_and_empty_members_but_rejects_oversized_members PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::pubtator_interval_stays_at_three_per_second_with_or_without_the_key PASS [ 0.114s] biomcp-cli sources::pubmed::tests::parsing::citation_parser_enforces_node_and_entity_limits PASS [ 0.009s] biomcp-cli sources::rate_limit::tests::rate_limit_keeps_same_host_prefixes_independent PASS [ 0.007s] biomcp-cli sources::rate_limit::tests::semantic_scholar_interval_uses_key_aware_values PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::rate_limit_uses_longest_matching_prefix PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::unpaced_origin_accepts_only_complete_ip_loopback_origins PASS [ 0.009s] biomcp-cli sources::rate_limit::tests::unpaced_origin_match_requires_exact_scheme_ip_and_effective_port PASS [ 0.616s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_body_boundary_is_accepted_and_plus_one_rejected PASS [ 0.399s] biomcp-cli sources::orcid::tests::closing::ten_thousand_groups_is_the_hard_bound PASS [ 0.008s] biomcp-cli sources::reactome::tests::construction::pathway_plans_build_expected_paths_and_reject_empty_ids PASS [ 0.007s] biomcp-cli sources::reactome::tests::construction::search_pathways_plan_preserves_limit_one_probe PASS [ 0.007s] biomcp-cli sources::reactome::tests::construction::search_pathways_plan_rejects_empty_query PASS [ 0.008s] biomcp-cli sources::reactome::tests::parsing::decode_json_response_maps_http_and_json_errors PASS [ 0.009s] biomcp-cli sources::reactome::tests::construction::search_pathways_plan_sets_query_species_and_page_size PASS [ 0.009s] biomcp-cli sources::reactome::tests::parsing::map_contained_events_maps_display_names PASS [ 0.007s] biomcp-cli sources::seer::tests::construction::site_catalog_plan_fetches_variable_formats PASS [ 0.009s] biomcp-cli sources::reactome::tests::parsing::map_search_response_extracts_entries_and_limits_results PASS [ 0.009s] biomcp-cli sources::reactome::tests::parsing::strip_html_removes_tags_and_extra_spaces PASS [ 0.008s] biomcp-cli sources::seer::tests::construction::survival_plan_sets_site_and_required_filters PASS [ 0.007s] biomcp-cli sources::seer::tests::parsing::body_limit_error_remains_source_unavailable PASS [ 0.011s] biomcp-cli sources::seer::tests::parsing::decode_double_encoded_survival_payload_and_filter_all_ages PASS [ 0.008s] biomcp-cli sources::seer::tests::parsing::decode_json_response_maps_bad_status_and_content_type_to_source_unavailable PASS [ 0.010s] biomcp-cli sources::seer::tests::parsing::rejects_response_when_requested_site_code_is_not_returned PASS [ 0.010s] biomcp-cli sources::seer::tests::parsing::resolve_site_prefers_exact_alias_and_rejects_ambiguous_matches PASS [ 0.009s] biomcp-cli sources::seer::tests::parsing::site_catalog_decodes_live_variable_formats PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::auth_mode_reports_keyed_or_shared_pool_without_exposing_key PASS [ 0.007s] biomcp-cli sources::semantic_scholar::tests::construction::author_detail_and_papers_plans_encode_ids_and_preserve_continuation PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_batch_plan_posts_ordered_ids_at_provider_ceiling PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::construction::author_id_dot_segments_are_rejected_before_request_construction PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::construction::author_papers_full_plan_uses_the_frozen_rich_field_list PASS [ 0.016s] biomcp-cli sources::semantic_scholar::tests::construction::author_execution_methods_send_plans_and_decode_typed_responses PASS [ 0.091s] biomcp-cli sources::rate_limit::tests::rate_limit_uses_default_policy_for_unknown_prefix PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_papers_page_validation_accepts_terminal_continuing_and_empty_pages PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_papers_page_validation_fails_closed_for_every_malformed_shape PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_plans_validate_required_input_and_endpoint_boundaries PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_search_plan_sets_query_fields_offset_limit_and_auth PASS [ 0.090s] biomcp-cli sources::rate_limit::tests::unpaced_origin_keeps_other_ports_paced PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::credential_attachment_requires_canonical_or_explicit_unsafe_fixture_origin PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::citation_reference_and_recommendation_plans_set_paths PASS [ 0.091s] biomcp-cli sources::rate_limit::tests::unsignaled_loopback_origin_remains_paced PASS [ 0.011s] biomcp-cli sources::semantic_scholar::tests::construction::legacy_search_request_plan_keeps_article_contract_shape PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::paper_batch_plan_posts_ids_and_fields PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::paper_batch_plan_validates_id_count PASS [ 0.121s] biomcp-cli sources::rate_limit::tests::provider_limit_covers_actual_downstream_http_work PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::construction::paper_search_bulk_plan_uses_the_strict_bulk_endpoint PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::paper_detail_plan_sets_encoded_id_fields_and_auth_header PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::construction::paper_search_plan_sets_query_limit_year_and_auth PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::paper_search_plan_validates_query_and_limit PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::recommendations_plan_posts_positive_and_negative_ids PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::parsing::authenticated_http_error_keeps_status_and_sanitizes_payload PASS [ 0.011s] biomcp-cli sources::semantic_scholar::tests::construction::transport_failures_keep_legacy_api_code_with_source_context PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::author_response_types_keep_null_data_explicit_and_map_bad_responses PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::parsing::graph_pagination_distinguishes_required_offset_from_optional_next PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::graph_pagination_rejects_non_unsigned_wire_values PASS [ 0.129s] biomcp-cli sources::rate_limit::tests::rate_limit_blocks_second_request_for_same_prefix PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_author_batch_fixture_with_positional_unavailable_row PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_author_detail_and_search_fixtures_without_inventing_identity PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_author_papers_identifiers_byline_and_continuation PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_batch_fixture_with_none_rows PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_graph_and_recommendation_fixtures PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_paper_detail_fixture PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_search_fixture_and_defaults_null_data PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::shared_pool_429_returns_dedicated_guidance PASS [ 0.011s] biomcp-cli sources::semantic_scholar::tests::parsing::receipted_20516115_graph_captures_keep_provider_identity_and_all_recommendations PASS [ 0.009s] biomcp-cli sources::string::tests::construction::interactions_plan_rejects_empty_identifiers PASS [ 0.009s] biomcp-cli sources::string::tests::construction::interactions_plan_sets_expected_query_params PASS [ 0.008s] biomcp-cli sources::string::tests::parsing::decode_interactions_response_maps_camel_case_fields PASS [ 0.009s] biomcp-cli sources::string::tests::parsing::decode_interactions_response_maps_underscore_fields PASS [ 0.010s] biomcp-cli sources::tests::a_spawned_task_inherits_the_command_note_scope PASS [ 0.010s] biomcp-cli sources::tests::append_stale_serve_notes_to_text_adds_plain_cache_note_lines PASS [ 0.009s] biomcp-cli sources::tests::append_stale_serve_notes_to_text_leaves_bodies_without_notes_alone PASS [ 0.011s] biomcp-cli sources::tests::clingen_runtime::car_outage_does_not_overwrite_erepo_healthy_empty_or_version PASS [ 0.010s] biomcp-cli sources::tests::clingen_runtime::cspec_and_ldh_transport_failures_are_source_labelled_and_do_not_erase_peer_results PASS [ 0.008s] biomcp-cli sources::tests::ensure_json_content_type_accepts_json PASS [ 0.012s] biomcp-cli sources::tests::clingen_runtime::receipt_backed_ldh_captures_reach_the_production_medium_and_direct_clients PASS [ 0.008s] biomcp-cli sources::tests::ensure_json_content_type_allows_non_json_compat_mode PASS [ 0.009s] biomcp-cli sources::tests::ensure_json_content_type_rejects_html PASS [ 0.007s] biomcp-cli sources::tests::parse_cache_mode_returns_no_store_for_off PASS [ 0.009s] biomcp-cli sources::tests::note_stale_cache_serve_ignores_absent_and_malformed_markers PASS [ 0.010s] biomcp-cli sources::tests::note_stale_cache_serve_records_the_age_and_strips_the_header PASS [ 0.009s] biomcp-cli sources::tests::parse_cache_mode_returns_force_cache_for_infinite PASS [ 0.009s] biomcp-cli sources::tests::parse_cache_mode_returns_none_for_default_or_unset PASS [ 0.009s] biomcp-cli sources::tests::parse_cache_mode_returns_none_for_unknown_values PASS [ 0.027s] biomcp-cli sources::tests::build_http_client_migrates_then_clears_pre_limit_legacy_cache PASS [ 0.008s] biomcp-cli sources::tests::parse_retry_after_header_parses_integer_seconds PASS [ 0.032s] biomcp-cli sources::tests::build_http_client_does_not_restore_legacy_cache_after_epoch_and_clear PASS [ 0.010s] biomcp-cli sources::tests::provider_network::cache_security::build_http_client_bypasses_directory_symlink_inside_content_tree PASS [ 0.015s] biomcp-cli sources::tests::provider_network::cache_security::build_http_client_repairs_unrelated_permissive_cache_state PASS [ 0.007s] biomcp-cli sources::tests::provider_network::fda_orphan_cache_modes_and_expiry_are_exact PASS [ 0.011s] biomcp-cli sources::tests::provider_network::contended_maintenance_deadline_publishes_no_partial_client_or_cache_tree PASS [ 0.009s] biomcp-cli sources::tests::provider_network::expired_invocation_cannot_build_a_cache_fallback_client PASS [ 0.035s] biomcp-cli sources::tests::provider_network::cache_security::concurrent_constructor_does_not_wait_for_an_existing_shared_operation PASS [ 0.050s] biomcp-cli sources::tests::provider_network::fda_orphan_form_cache_is_independent_of_prior_candidate_set PASS [ 0.040s] biomcp-cli sources::tests::provider_network::fda_orphan_missing_post_write_metadata_fails_closed PASS [ 0.066s] biomcp-cli sources::tests::provider_network::fda_orphan_infinite_miss_stores_and_failed_http_does_not_cache PASS [ 0.084s] biomcp-cli sources::tests::provider_network::fda_orphan_caps_forms_concurrency_and_off_bypasses_cache PASS [ 0.035s] biomcp-cli sources::tests::provider_network::lazy_cache_initialization_settles_before_deadline_releases_its_locks PASS [ 0.057s] biomcp-cli sources::tests::provider_network::fda_orphan_normal_cache_is_fresh_then_refreshes_when_expired PASS [ 0.047s] biomcp-cli sources::tests::provider_network::legacy_cache_upgrade_waits_for_local_source_lease PASS [ 0.140s] biomcp-cli sources::tests::provider_network::a_later_invocation_retries_cache_setup_after_a_failed_expired_invocation PASS [ 0.140s] biomcp-cli sources::tests::provider_network::cached_client_fresh_hit_and_request_no_store_bypass_writes PASS [ 0.044s] biomcp-cli sources::tests::provider_network::middleware_put_settles_after_publication_before_releasing_key_lock PASS [ 0.035s] biomcp-cli sources::tests::provider_network::parallel_sources_share_one_cache_construction_and_epoch_acquisition PASS [ 0.154s] biomcp-cli sources::tests::provider_network::fda_orphan_contended_key_lock_cancels_without_a_late_write PASS [ 0.011s] biomcp-cli sources::tests::read_limited_source_body_classifies_chunk_failures_as_retryable PASS [ 0.047s] biomcp-cli sources::tests::provider_network::provider_deadline_waits_for_post_publish_cache_finalization PASS [ 0.023s] biomcp-cli sources::tests::provider_network::startup_cost::the_tree_secure_marker_walks_only_until_it_exists PASS [ 0.010s] biomcp-cli sources::tests::read_limited_source_body_with_limit_accepts_body_within_limit PASS [ 0.010s] biomcp-cli sources::tests::read_limited_source_body_with_limit_rejects_oversized_body PASS [ 0.058s] biomcp-cli sources::tests::provider_network::startup_cost::cache_mode_off_touches_no_cache_file PASS [ 0.013s] biomcp-cli sources::tests::request_plan_transport::request_plan_failures_keep_safe_source_context PASS [ 0.014s] biomcp-cli sources::tests::request_plan_transport::request_plan_preserves_each_supported_post_body PASS [ 0.012s] biomcp-cli sources::tests::request_plan_transport::request_plan_preserves_path_query_headers_and_success_bytes PASS [ 0.009s] biomcp-cli sources::tests::resolve_cache_mode_defaults_to_none PASS [ 0.010s] biomcp-cli sources::tests::resolve_cache_mode_prioritizes_auth_over_env PASS [ 0.009s] biomcp-cli sources::tests::resolve_cache_mode_prioritizes_no_cache_over_env PASS [ 0.008s] biomcp-cli sources::tests::resolve_cache_mode_uses_env_when_no_overrides PASS [ 0.009s] biomcp-cli sources::tests::response_body_is_html_detects_html_from_content_type PASS [ 0.009s] biomcp-cli sources::tests::response_body_is_html_detects_html_from_doctype_without_header PASS [ 0.008s] biomcp-cli sources::tests::retry_send_with_sleep_retries_on_too_many_requests PASS [ 0.012s] biomcp-cli sources::tests::retry_sleep_can_be_cancelled PASS [ 0.008s] biomcp-cli sources::tests::retry_sleep_off_returns_no_sleep_for_every_attempt PASS [ 0.008s] biomcp-cli sources::tests::stale_serve_age_wording_uses_hours_only_past_an_hour PASS [ 0.010s] biomcp-cli sources::tests::stale_serve_notes_do_not_leak_between_scopes PASS [ 0.009s] biomcp-cli sources::tests::summarize_http_error_body_preserves_json_excerpt PASS [ 0.009s] biomcp-cli sources::tests::summarize_http_error_body_sanitizes_html PASS [ 0.008s] biomcp-cli sources::tests::the_test_cache_mode_guard_applies_and_restores_the_mode PASS [ 0.009s] biomcp-cli sources::tests::ticket_403_retry_after_extreme_values_are_capped PASS [ 0.008s] biomcp-cli sources::tests::ticket_403_retry_after_malformed_values_fall_back_to_backoff PASS [ 0.009s] biomcp-cli sources::tests::ticket_403_retry_after_normal_floor_is_honored PASS [ 0.010s] biomcp-cli sources::tests::ticket_403_retry_send_uses_the_shared_retry_sleep_budget PASS [ 0.009s] biomcp-cli sources::tests::validate_biothings_result_window_accepts_bounds PASS [ 0.009s] biomcp-cli sources::tests::validate_biothings_result_window_rejects_offset_at_window PASS [ 0.010s] biomcp-cli sources::tests::validate_biothings_result_window_rejects_window_overflow PASS [ 0.009s] biomcp-cli sources::trust_failure_tests::handle_returns_no_retry_for_a_trust_failure_error PASS [ 0.021s] biomcp-cli sources::tests::variant_article_deadlines_are_task_local_and_do_not_leak PASS [ 0.009s] biomcp-cli sources::trust_failure_tests::plain_send_retry_stops_at_a_trust_failure PASS [ 0.009s] biomcp-cli sources::trust_failure_tests::trust_markers_at_any_depth_of_the_error_chain_count PASS [ 0.008s] biomcp-cli sources::umls::tests::construction::atoms_plan_sets_cui_auth_page_size_and_language PASS [ 0.031s] biomcp-cli sources::tests::variant_article_provider_admission_is_capped_and_deadline_cancellable PASS [ 0.009s] biomcp-cli sources::umls::tests::construction::search_plan_sets_query_auth_and_page_size PASS [ 0.008s] biomcp-cli sources::umls::tests::construction::search_plan_skips_empty_query PASS [ 0.007s] biomcp-cli sources::umls::tests::parsing::decode_json_response_maps_http_and_content_type_errors PASS [ 0.009s] biomcp-cli sources::umls::tests::parsing::decode_search_response_filters_none_hits_and_concepts_keep_xrefs PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::get_record_plan_builds_accession_path_and_json_accept_header PASS [ 0.009s] biomcp-cli sources::umls::tests::parsing::map_atoms_keeps_english_xrefs_and_dedupes_source_id_pairs PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::get_record_plan_rejects_blank_accession PASS [ 0.010s] biomcp-cli sources::uniprot::tests::construction::normalize_next_page_token_accepts_cursor_url PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::search_plan_clamps_limit_and_uses_cursor_token_when_present PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::search_plan_rejects_blank_query_and_bad_next_page_tokens PASS [ 0.807s] biomcp-cli sources::pharmacodb::tests::limits::the_largest_measured_row_body_parses_and_returns_its_rows PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::search_plan_uses_absolute_next_page_url_without_rewriting_query PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::search_plan_sets_expected_query_params PASS [ 0.007s] biomcp-cli sources::uniprot::tests::parsing::alternative_protein_names_flatten_short_and_full_names_in_source_order PASS [ 0.007s] biomcp-cli sources::uniprot::tests::parsing::alternative_protein_names_return_empty_when_alternative_names_are_missing PASS [ 0.009s] biomcp-cli sources::uniprot::tests::parsing::alternative_protein_names_trim_deduplicate_and_skip_recommended_name PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::decode_json_response_accepts_gzip_payload PASS [ 0.009s] biomcp-cli sources::uniprot::tests::parsing::decode_json_response_maps_http_and_json_errors PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::decode_search_response_reads_results_total_and_next_page_link PASS [ 0.009s] biomcp-cli sources::uniprot::tests::parsing::protein_isoforms_fall_back_to_name_when_synonyms_are_missing PASS [ 0.009s] biomcp-cli sources::uniprot::tests::parsing::protein_isoforms_prefer_synonyms_and_track_displayed_status PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::expanded_payload_limit_reads_only_limit_plus_one PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::protein_isoforms_return_empty_when_alternative_products_comment_is_missing PASS [ 0.007s] biomcp-cli sources::uniprot::tests::parsing::record_mane_select_transcript_reads_the_committed_capture PASS [ 0.008s] biomcp-cli sources::uniprot::tests::parsing::record_helpers_extract_display_function_and_structures PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::record_mane_select_transcript_takes_only_the_refseq_nucleotide_id PASS [ 0.008s] biomcp-cli sources::vaers::tests::construction::build_request_xml_escapes_and_validates_vaccine_code PASS [ 0.012s] biomcp-cli sources::vaers::tests::construction::aggregate_request_plan_posts_form_encoded_reaction_xml PASS [ 0.009s] biomcp-cli sources::vaers::tests::construction::request_template_tracks_captured_fixture PASS [ 0.013s] biomcp-cli sources::vaers::tests::construction::build_request_xml_matches_serious_and_age_fixture_parameters PASS [ 0.008s] biomcp-cli sources::vaers::tests::construction::vaers_client_uses_cdc_wonder_compatible_user_agent_constant PASS [ 0.008s] biomcp-cli sources::vaers::tests::parsing::decode_aggregate_response_rejects_http_html_and_non_utf8_errors PASS [ 0.009s] biomcp-cli sources::vaers::tests::parsing::parse_aggregate_response_rejects_a_nesting_bomb PASS [ 0.009s] biomcp-cli sources::vaers::tests::parsing::parse_processing_error_returns_api_message PASS [ 0.016s] biomcp-cli sources::vaers::tests::parsing::parse_age_response_extracts_buckets_and_skips_total_row PASS [ 0.261s] biomcp-cli sources::tests::provider_network::ordinary_client_blocks_untrusted_local_destinations_before_contact PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::construction::normalize_request_plan_encodes_transcript_path_and_json_query PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::construction::normalize_request_plan_percent_encodes_path_segments PASS [ 0.010s] biomcp-cli sources::variantvalidator::tests::parsing::normalize_response_extracts_warnings_and_grch38_genomic_description PASS [ 0.018s] biomcp-cli sources::vaers::tests::parsing::parse_serious_response_extracts_yes_and_no_rows PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::parsing::normalize_response_maps_html_response_to_service_error PASS [ 0.009s] biomcp-cli sources::variantvalidator::tests::parsing::normalize_response_maps_not_found_and_http_errors PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::parsing::result_from_value_maps_missing_transcript_to_service_error PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::parsing::result_from_value_maps_warning_without_transcript_to_invalid_input PASS [ 0.007s] biomcp-cli sources::who_ivd::tests::construction::file_is_stale_tracks_age_threshold PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::construction::sync_state_marks_missing_fresh_stale_and_force PASS [ 0.009s] biomcp-cli sources::who_ivd::tests::construction::sync_intro_matches_missing_stale_and_force_modes PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::construction::who_ivd_missing_files_tracks_required_contract PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::construction::who_ivd_sync_error_mentions_recovery_paths PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::parsing::ensure_csv_content_type_rejects_html_response PASS [ 0.010s] biomcp-cli sources::who_ivd::tests::parsing::parse_who_ivd_csv_deduplicates_first_product_code PASS [ 0.009s] biomcp-cli sources::who_ivd::tests::parsing::parse_who_ivd_csv_requires_expected_headers PASS [ 0.010s] biomcp-cli sources::who_ivd::tests::parsing::parse_who_ivd_csv_reads_fixture_rows PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::parsing::who_ivd_client_get_matches_exact_trimmed_product_code PASS [ 0.064s] biomcp-cli sources::vaers::tests::parsing::decode_aggregate_response_accepts_wonder_html_content_type_with_xml_body PASS [ 0.009s] biomcp-cli sources::who_pq::tests::construction::file_is_stale_tracks_age_threshold PASS [ 0.008s] biomcp-cli sources::who_pq::tests::construction::sync_intro_matches_missing_stale_and_force_modes PASS [ 0.008s] biomcp-cli sources::who_pq::tests::construction::sync_state_marks_missing_fresh_stale_and_force PASS [ 0.009s] biomcp-cli sources::who_pq::tests::construction::who_pq_missing_files_tracks_required_file_contract PASS [ 0.008s] biomcp-cli sources::who_pq::tests::construction::who_pq_sync_error_carries_its_detail_and_recovery PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::boundary_phrase_rejection_advances_across_multibyte_character PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::derive_inn_removes_dosage_form_suffix_when_present PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::ensure_csv_content_type_rejects_html_response_without_raw_tags PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::medicines_captures_ship_title_case_headers_and_parse PASS [ 0.010s] biomcp-cli sources::who_pq::tests::parsing::normalize_dates_convert_to_iso PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::parse_who_api_csv_preserves_identifier_semantics PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::parse_who_pq_csv_deduplicates_by_reference_number PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::parse_who_vaccines_csv_preserves_blank_dose_rows PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::parsers_require_expected_headers PASS [ 0.008s] biomcp-cli sources::who_pq::tests::parsing::pre_1304_cache_with_applicant_organization_column_still_parses PASS [ 0.010s] biomcp-cli sources::who_pq::tests::parsing::pre_1304_cache_with_alternative_listing_column_still_parses PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::product_type_filters_keep_expected_rows PASS [ 0.458s] biomcp-cli sources::tests::provider_network::cached_client_post_write_failure_matrix_keeps_provider_answers PASS [ 0.013s] biomcp-cli sources::who_pq::tests::parsing::read_rows_combines_finished_pharma_api_and_vaccine_rows PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::vaccine_dedupe_keeps_distinct_bevac_rows PASS [ 0.017s] biomcp-cli sources::who_pq::tests::parsing::row_matching_falls_back_to_full_presentation_for_combo_rows PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::vaccine_fixture_carries_full_validation_anchor_counts PASS [ 0.018s] biomcp-cli sources::who_pq::tests::parsing::row_matching_strips_salt_suffixes_from_match_key PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::vaccines_capture_keeps_the_trailing_space_header_and_trims_to_match PASS [ 0.010s] biomcp-cli sources::who_pq::tests::sync::summary_line_names_refreshed_and_failed_files PASS [ 0.022s] biomcp-cli sources::who_pq::tests::parsing::vaccine_row_matching_uses_vaccine_type_and_brand_aliases PASS [ 1.014s] biomcp-cli sources::orcid::tests::closing::transient_429_retries_once_under_the_pacing_gap_then_succeeds PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::construction::pathway_plans_build_expected_paths_and_validate_ids PASS [ 0.009s] biomcp-cli sources::wikipathways::tests::construction::search_pathways_plan_builds_search_endpoint_and_rejects_empty_query PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::construction::validates_wikipathways_id_shape PASS [ 0.007s] biomcp-cli sources::wikipathways::tests::parsing::decode_json_response_rejects_html_content_type_before_json_parse PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::parsing::map_pathway_entrez_gene_ids_dedupes_and_filters_non_numeric_rows PASS [ 0.009s] biomcp-cli sources::wikipathways::tests::parsing::decode_json_response_sanitizes_404_html_error_body PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::parsing::map_pathway_record_parses_minimal_detail_payload PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::parsing::map_search_hits_filters_non_human_invalid_and_duplicate_rows PASS [ 0.009s] biomcp-cli test_support::signaled_child_spawn_fails_when_the_child_never_signals PASS [ 0.009s] biomcp-cli test_support::watchdog_defaults_to_one_and_stretches_by_the_factor PASS [ 0.007s] biomcp-cli transform::adverse_event::tests::faers_report_filter_matches_suspect_drug_name PASS [ 0.008s] biomcp-cli transform::adverse_event::tests::normalize_drug_name_trims_and_lowercases PASS [ 0.009s] biomcp-cli transform::adverse_event::tests::outcomes_from_flags_maps_all_fields PASS [ 0.009s] biomcp-cli transform::adverse_event::tests::patient_demographics_handles_missing_fields PASS [ 0.013s] biomcp-cli transform::article::anchors::tests::normalize_article_search_text_compacts_compound_hyphens PASS [ 0.014s] biomcp-cli transform::article::anchors::tests::truncate_title_strips_inline_html_and_entities PASS [ 0.012s] biomcp-cli transform::article::anchors::tests::truncate_title_truncates_on_utf8_boundary PASS [ 0.010s] biomcp-cli transform::article::annotations::tests::extract_annotations_counts_mentions PASS [ 0.008s] biomcp-cli transform::article::annotations::tests::extract_annotations_ignores_placeholder_identifiers PASS [ 0.010s] biomcp-cli transform::article::annotations::tests::extract_annotations_falls_back_to_hgvs_without_rsid PASS [ 0.009s] biomcp-cli transform::article::annotations::tests::extract_annotations_preserves_first_seen_order_for_equal_counts PASS [ 0.018s] biomcp-cli transform::article::annotations::tests::extract_annotations_reads_identifier_and_namespace PASS [ 0.019s] biomcp-cli transform::article::annotations::tests::mutation_identity::gene_symbol_prefers_the_most_mentioned_gene_text PASS [ 0.021s] biomcp-cli transform::article::annotations::tests::mutation_identity::gene_without_symbol_shaped_mention_uses_the_official_symbol PASS [ 0.017s] biomcp-cli transform::article::annotations::tests::mutation_identity::multi_allele_rsid_with_coding_hgvs_keeps_the_coding_form PASS [ 0.018s] biomcp-cli transform::article::annotations::tests::mutation_identity::multi_allele_rsid_without_gene_symbol_carries_no_identifier PASS [ 0.009s] biomcp-cli transform::article::annotations::tests::mutation_identity::official_symbol_lookups_target_only_mutation_linked_spelled_genes PASS [ 0.018s] biomcp-cli transform::article::annotations::tests::mutation_identity::no_rsid_row_with_gene_and_change_gains_the_gene_qualified_form PASS [ 0.017s] biomcp-cli transform::article::annotations::tests::mutation_identity::official_symbol_that_is_not_symbol_shaped_builds_no_form PASS [ 0.020s] biomcp-cli transform::article::annotations::tests::mutation_identity::one_allele_written_two_ways_stays_one_rsid_change PASS [ 0.019s] biomcp-cli transform::article::annotations::tests::mutation_identity::rows_with_gene_and_change_prefer_the_gene_qualified_form PASS [ 0.018s] biomcp-cli transform::article::annotations::tests::mutation_identity::single_mention_allele_of_a_multi_allele_rsid_carries_the_gene_form PASS [ 0.010s] biomcp-cli transform::article::annotations::tests::positions_land_only_when_requested PASS [ 0.008s] biomcp-cli transform::article::annotations::tests::same_text_with_different_identifiers_stays_separate PASS [ 1.538s] biomcp-cli sources::hpo::tests::parsing::phenotype_hpo_operation_uses_only_the_shared_four_attempts PASS [ 0.007s] biomcp-cli transform::article::federation::tests::article_authorship_preserves_large_source_lists_and_empty_state PASS [ 0.516s] biomcp-cli sources::tests::provider_network::ordinary_client_allows_exact_override_but_ignores_proxy_and_cross_origin_redirects PASS [ 0.020s] biomcp-cli transform::article::annotations::tests::mutation_identity::spelled_gene_mentions_pick_the_most_mentioned_symbol_shaped_text PASS [ 0.008s] biomcp-cli transform::article::federation::tests::article_sections_maps_brca1_study PASS [ 0.009s] biomcp-cli transform::article::federation::tests::europepmc_metadata_merge_preserves_pubtator_authorship PASS [ 0.013s] biomcp-cli transform::article::federation::tests::europepmc_authorship_has_no_ten_name_cap_and_reports_empty_state PASS [ 0.013s] biomcp-cli transform::article::federation::tests::article_sections_maps_egfr_review PASS [ 0.014s] biomcp-cli transform::article::federation::tests::detail_articles_keep_whole_abstracts_while_search_rows_keep_snippets PASS [ 0.011s] biomcp-cli transform::article::federation::tests::from_europepmc_search_result_carries_first_index_date PASS [ 4.842s] biomcp-cli entities::trial::search::ctgov::tests::an_in_age_unchecked_trial_marks_the_count_partial PASS [ 0.012s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_falls_back_to_lr_for_first_index_date PASS [ 0.011s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_falls_back_to_source_journal PASS [ 0.013s] biomcp-cli transform::article::federation::tests::from_europepmc_search_result_invalid_first_index_date_is_none PASS [ 0.013s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_hydrates_all_fields PASS [ 0.013s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_prefers_edat_over_lr PASS [ 0.012s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_returns_none_for_blank_title PASS [ 0.009s] biomcp-cli transform::article::federation::tests::parse_pubdate_extracts_full_date PASS [ 0.010s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_uses_edat_for_first_index_date PASS [ 0.009s] biomcp-cli transform::article::federation::tests::parse_pubdate_extracts_year PASS [ 0.013s] biomcp-cli transform::article::federation::tests::from_pubtator_search_result_maps_source_and_score PASS [ 0.009s] biomcp-cli transform::article::federation::tests::parse_pubdate_extracts_year_month PASS [ 0.007s] biomcp-cli transform::article::federation::tests::parse_sortpubdate_extracts_ymd PASS [ 0.011s] biomcp-cli transform::article::federation::tests::publication_type_detection_reads_pub_type_list_for_retractions PASS [ 0.009s] biomcp-cli transform::article::jats::supplements::tests::extracts_nested_and_standalone_supplement_media_with_typed_facts PASS [ 0.022s] biomcp-cli transform::article::html::tests::extract_text_from_html_keeps_article_signals_across_fixture_family PASS [ 0.022s] biomcp-cli transform::article::html::tests::fixture_family_titles_are_kept_exactly_once PASS [ 0.021s] biomcp-cli transform::article::html::tests::html_classification_uses_article_structure_without_size_thresholds PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_allows_identical_normalized_duplicates_inside_one_ref PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_anchors_truncation_on_the_marker_not_an_earlier_equal_string PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_caps_passages_at_three_in_document_order PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_excludes_paragraphs_in_table_figure_and_caption_scopes PASS [ 0.007s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_excludes_paragraphs_inside_boxed_text PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_closed_on_two_distinct_dois_in_one_ref PASS [ 0.008s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_closed_on_two_matching_refs PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_closed_when_selected_id_duplicates_across_ref_lists PASS [ 0.008s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_closed_when_selected_ref_lacks_a_nonblank_id PASS [ 0.007s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_on_malformed_xml PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_ignores_an_empty_marker_on_both_sides_of_the_clamp PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_ignores_grouped_markers_and_requires_exact_case_rid PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_keeps_document_order_dedupes_paragraphs_but_not_equal_text PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_links_adjacent_separate_markers_in_one_paragraph_once PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_matches_pmid_by_decimal_value_with_prefix_and_zeros PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_matches_pmcid_case_insensitively_with_canonical_value PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_passes_through_paragraphs_at_or_below_the_limit PASS [ 0.255s] biomcp-cli sources::who_pq::tests::sync::sync_attempts_every_file_and_names_the_failing_file_when_required_files_are_missing PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_pins_the_exact_passage_scalar_boundaries PASS [ 0.257s] biomcp-cli sources::who_pq::tests::sync::sync_partial_run_keeps_older_data_and_reports_the_failure_reason_per_file PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_rejects_doi_without_ten_prefix_or_slash PASS [ 0.011s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_prefers_doi_over_pmid_when_both_match PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_rejects_lower_priority_match_with_conflicting_higher_identifier PASS [ 0.008s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_reports_nested_section_paths_and_paragraph_ordinals PASS [ 0.265s] biomcp-cli sources::who_pq::tests::sync::sync_names_the_failing_file_and_column_in_its_final_error PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_resolves_doi_with_prefix_and_case_normalization PASS [ 0.011s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_returns_marker_unlinked_when_no_marker_reaches_a_paragraph PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_returns_parsed_unusable_for_non_article_or_bodyless_documents PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_treats_hostile_identifier_text_as_closed_not_matched PASS [ 0.263s] biomcp-cli sources::who_pq::tests::sync::sync_replays_the_recorded_captures_and_reports_every_file_refreshed PASS [ 0.011s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_skips_empty_marker_text_before_truncation PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_truncates_long_paragraphs_around_first_marker_scalar PASS [ 0.009s] biomcp-cli transform::article::jats::tests::entity_bearing_jats_is_not_rendered_through_fallback PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_keeps_words_wrapped_in_word_joining_elements_whole PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_merges_multiple_ref_lists PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_preserves_complex_table_cells_and_spans PASS [ 0.010s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_labels_mixed_citation_pub_ids_as_separate_values PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_reference_fallback_omits_duplicate_label PASS [ 0.010s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_preserves_structure_and_renders_references PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_element_citation_fields_and_ids PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_floats_group_after_body_before_references PASS [ 0.010s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_mixed_citation_doi_links PASS [ 0.008s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_ragged_tables_as_raw_rows PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_supplementary_material_metadata PASS [ 0.007s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_suppresses_source_parenthesized_xref_and_preserves_boundary_spacing PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_separates_words_only_at_unmarked_boundaries PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_wraps_unparenthesized_figure_xrefs PASS [ 0.009s] biomcp-cli transform::article::jats::tests::jats_classification_requires_meaningful_direct_body_content PASS [ 0.007s] biomcp-cli transform::article::pdf::tests::extract_text_from_pdf_rejects_zero_page_limit PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::csv_extract_locates_a_record_row PASS [ 0.008s] biomcp-cli transform::article::supplement_text::tests::docx_extract_locates_a_paragraph PASS [ 0.008s] biomcp-cli transform::article::supplement_text::tests::format_dispatch_reads_file_extensions_case_insensitively PASS [ 0.010s] biomcp-cli transform::article::supplement_text::tests::extraction_limits_cover_nested_archives_and_document_packages PASS [ 0.106s] biomcp-cli transform::article::html::tests::supplement_links_ignore_page_links_in_stored_pmc_html PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::only_one_nested_archive_is_searched PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::unreadable_bytes_report_format_and_reason PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::workbook_package_limits_follow_bytes_when_extension_is_xls PASS [ 0.014s] biomcp-cli transform::article::supplement_text::tests::pdf_extract_locates_a_page PASS [ 0.010s] biomcp-cli transform::article::supplement_text::tests::xls_extract_reads_the_legacy_binary_workbook PASS [ 0.015s] biomcp-cli transform::article::supplement_text::tests::pdf_page_budget_marks_truncation PASS [ 0.015s] biomcp-cli transform::article::supplement_text::tests::xlsx_extract_locates_a_named_worksheet_row PASS [ 0.010s] biomcp-cli transform::article::supplement_text::tests::zip_extract_locates_a_member_and_reports_its_siblings PASS [ 0.036s] biomcp-cli transform::article::jats::tests::real_pmc6172658_capture_separates_names_and_reference_identifiers PASS [ 0.009s] biomcp-cli transform::article::tests::root_module_reexports_stable_article_transform_api PASS [ 0.008s] biomcp-cli transform::disease::tests::clean_definition_strips_wrapping_quotes_and_refs PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::zip_member_budget_reports_the_size_limit PASS [ 0.009s] biomcp-cli transform::disease::tests::collect_xrefs_retains_orphanet_and_omim_identifiers PASS [ 0.008s] biomcp-cli transform::disease::tests::disease_sections_maps_cml PASS [ 0.008s] biomcp-cli transform::disease::tests::disease_sections_maps_lung_adenocarcinoma PASS [ 0.007s] biomcp-cli transform::disease::tests::frequency_rank_prioritizes_high_signal_qualifiers_only PASS [ 0.016s] biomcp-cli transform::disease::tests::derive_key_features_supplements_definition_with_high_frequency_phenotypes PASS [ 0.009s] biomcp-cli transform::disease::tests::from_mydisease_hit_collects_hpo_phenotypes PASS [ 0.017s] biomcp-cli transform::disease::tests::extract_definition_key_features_association_clause PASS [ 0.017s] biomcp-cli transform::disease::tests::extract_definition_key_features_characterized_by_clause PASS [ 0.053s] biomcp-cli transform::article::jats::tests::real_pmc6329583_capture_preserves_all_six_complex_tables PASS [ 0.016s] biomcp-cli transform::disease::tests::extract_definition_key_features_handles_colon_after_cue PASS [ 0.009s] biomcp-cli transform::disease::tests::from_mydisease_hit_seeds_gene_associations_with_the_disgenet_source PASS [ 0.008s] biomcp-cli transform::disease::tests::name_from_mydisease_hit_falls_back_to_the_mondo_label PASS [ 0.009s] biomcp-cli transform::disease::tests::from_mydisease_hit_without_disgenet_data_seeds_no_rows PASS [ 0.008s] biomcp-cli transform::disease::tests::synonyms_preview_formats_expected PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::a_canonical_name_equal_to_the_brand_never_yields_to_a_naked_row PASS [ 0.010s] biomcp-cli transform::drug::name_resolution_tests::amivantamab_keeps_resolving_through_its_exact_drugbank_record PASS [ 0.010s] biomcp-cli transform::drug::name_resolution_tests::edetate_disodium_prefers_the_exact_record_and_never_the_urea_cream PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::ferric_oxide_selects_the_ferric_oxide_record_not_calamine PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::keytruda_keeps_the_pembrolizumab_card_name PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::mannitol_names_the_card_mannitol_not_the_first_ndc_product PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::lonsurf_says_trifluridine_and_tipiracil_again PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::merge_mychem_hits_keeps_the_imatinib_mesylate_established_name PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::niraparib_names_the_plain_ingredient_card PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::rybrevant_keeps_the_identity_records_name_over_the_naked_product_row PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::terfenadine_selects_only_terfenadine_and_never_fexofenadine PASS [ 0.010s] biomcp-cli transform::drug::name_resolution_tests::tagrisso_resolves_through_the_brand_fields_on_osimertinibs_record PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::zejula_names_the_card_for_the_drug_its_own_row_pairs PASS [ 0.010s] biomcp-cli transform::drug::name_resolution_tests::tagrisso_still_selects_its_record_through_drugcentral_synonyms_alone PASS [ 0.008s] biomcp-cli transform::drug::shared_name_tests::a_foreign_synonym_never_satisfies_the_leading_name_tier PASS [ 0.010s] biomcp-cli transform::drug::shared_name_tests::agreeing_pairings_still_merge_one_product PASS [ 0.060s] biomcp-cli transform::article::supplement_text::tests::xlsx_extract_locates_a_row_on_sheet1 PASS [ 0.008s] biomcp-cli transform::drug::tests::approval_date_display_formats_month_name PASS [ 0.009s] biomcp-cli transform::drug::tests::approval_date_rejects_multibyte_input_with_matching_byte_length PASS [ 0.010s] biomcp-cli transform::drug::shared_name_tests::pain_relief_refuses_instead_of_fusing_unrelated_drugs PASS [ 0.009s] biomcp-cli transform::drug::shared_name_tests::sleep_aid_refuses_instead_of_merging_diphenhydramine_with_doxylamine PASS [ 0.009s] biomcp-cli transform::drug::tests::drug_sections_maps_imatinib PASS [ 0.009s] biomcp-cli transform::drug::tests::drug_sections_maps_osimertinib PASS [ 0.008s] biomcp-cli transform::drug::tests::from_mychem_search_hit_uses_openfda_names_when_other_sources_are_missing PASS [ 0.090s] biomcp-cli transform::article::pdf::tests::extract_text_from_pdf_renders_fixture_family_text PASS [ 0.007s] biomcp-cli transform::drug::tests::merge_mychem_hits_collects_drug_interactions PASS [ 0.010s] biomcp-cli transform::drug::tests::merge_mychem_hits_collects_deduped_mechanisms PASS [ 0.010s] biomcp-cli transform::drug::tests::merge_mychem_hits_keeps_synonyms_off_the_brand_list PASS [ 0.011s] biomcp-cli transform::drug::tests::merge_mychem_hits_does_not_pool_synonyms_across_hits PASS [ 0.011s] biomcp-cli transform::drug::tests::merge_mychem_hits_prefers_canonical_name_from_brand_hit PASS [ 0.011s] biomcp-cli transform::drug::tests::merge_mychem_hits_keeps_the_matching_canonical_name_over_the_first_ndc_row PASS [ 0.012s] biomcp-cli transform::drug::tests::search_mechanism_prefers_chembl_over_ranked_moa_fallback PASS [ 0.009s] biomcp-cli transform::drug::tests::select_hits_for_name_matches_openfda_brand_name PASS [ 0.010s] biomcp-cli transform::drug::tests::search_mechanism_ranking_prefers_kinase_moa_and_rejects_metabolism_only PASS [ 0.008s] biomcp-cli transform::gene::tests::carried_kegg_pathways_survive_when_kegg_is_not_disabled PASS [ 0.009s] biomcp-cli transform::drug::tests::select_hits_for_name_prefers_exact_hits_and_admits_salt_forms_only_when_alone PASS [ 0.009s] biomcp-cli transform::gene::tests::extract_kegg_pathways_handles_array PASS [ 0.011s] biomcp-cli transform::gene::tests::gene_sections_maps_tp53_fields PASS [ 0.011s] biomcp-cli transform::gene::tests::gene_sections_maps_egfr_fields PASS [ 0.012s] biomcp-cli transform::gene::tests::gene_sections_maps_brca1_fields PASS [ 0.011s] biomcp-cli transform::gene::tests::normalize_aliases_drops_lowercase_and_trailing_number_hyphen PASS [ 0.009s] biomcp-cli transform::gene::tests::normalize_summary_keeps_summary PASS [ 0.008s] biomcp-cli transform::gene::tests::normalize_summary_preserves_utf8_without_ellipsis PASS [ 0.009s] biomcp-cli transform::gene::tests::string_or_vec_into_vec PASS [ 0.010s] biomcp-cli transform::pathway::tests::from_kegg_hit_maps_fields PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_kegg_record_maps_fields PASS [ 1.627s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_node_boundary_is_accepted_and_plus_one_rejected PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_reactome_hit_maps_fields PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_reactome_record_maps_fields PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_reactome_record_handles_missing_summary PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_wikipathways_hit_maps_fields PASS [ 0.010s] biomcp-cli transform::pathway::tests::pathway_sections_maps_cell_cycle PASS [ 0.010s] biomcp-cli transform::pathway::tests::from_wikipathways_record_maps_fields PASS [ 0.009s] biomcp-cli transform::protein::tests::from_uniprot_record_base_handles_missing_sequence PASS [ 0.009s] biomcp-cli transform::protein::tests::from_uniprot_record_base_maps_fields PASS [ 0.009s] biomcp-cli transform::protein::tests::from_uniprot_search_record_handles_missing_organism PASS [ 0.009s] biomcp-cli transform::protein::tests::from_uniprot_search_record_maps_fields PASS [ 0.008s] biomcp-cli transform::protein::tests::protein_sections_maps_egfr PASS [ 0.009s] biomcp-cli transform::protein::tests::protein_sections_maps_tp53 PASS [ 0.009s] biomcp-cli transform::trial::tests::ctgov_case_13_preserves_every_site_contact_in_provider_order PASS [ 0.009s] biomcp-cli transform::trial::tests::ctgov_location_aliases_stay_bound_to_literal_first_source_contact PASS [ 0.008s] biomcp-cli transform::trial::tests::from_ctgov_study_extracts_age_and_locations_sorted PASS [ 0.009s] biomcp-cli transform::trial::tests::from_ctgov_study_preserves_contacts_and_structured_eligibility PASS [ 0.009s] biomcp-cli transform::trial::tests::from_ctgov_study_preserves_provider_type_fields_in_json PASS [ 0.011s] biomcp-cli transform::trial::tests::receipted_ctgov_intervention_descriptions_keep_their_associations_in_json PASS [ 0.008s] biomcp-cli transform::trial::tests::ticket_1107::unreadable_nci_disease_is_an_error PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1107::recorded_nci_hit_reports_its_disease_names PASS [ 0.008s] biomcp-cli transform::trial::tests::ticket_1111::condition_cell_preserves_short_lists_without_a_marker PASS [ 0.008s] biomcp-cli transform::trial::tests::ticket_1111::condition_cell_reserves_complete_suffix_when_byte_bound_abridges_multibyte_text PASS [ 0.008s] biomcp-cli transform::trial::tests::ticket_1111::condition_cell_reserves_complete_suffix_when_item_bound_abridges PASS [ 0.024s] biomcp-cli transform::trial::tests::ctgov_meaningful_sites_keep_partial_identity_and_safe_markdown PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1111::recorded_ctgov_condition_vector_matches_in_detail_and_search PASS [ 0.020s] biomcp-cli transform::trial::tests::receipted_ctgov_two_arm_trial_keeps_independent_typed_assignments PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1111::recorded_nci_condition_vector_matches_in_search PASS [ 0.020s] biomcp-cli transform::trial::tests::stopped_ctgov_trials_explain_their_status_in_json_and_markdown PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1114::ctgov_postal_codes_are_trimmed_and_blank_values_are_omitted PASS [ 0.023s] biomcp-cli transform::trial::tests::stopped_ctgov_trial_without_reason_reports_checked_absence PASS [ 0.027s] biomcp-cli transform::trial::tests::receipted_ctgov_partial_sites_preserve_all_locations PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1115::recorded_ctgov_summary_reaches_the_model_and_json_in_full PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1115::summary_normalization_keeps_trimmed_text_and_rejects_blanks PASS [ 0.008s] biomcp-cli transform::trial::tests::trial_location_nested_contacts_are_additive_serde_compatibility PASS [ 0.009s] biomcp-cli transform::trial::tests::trial_status_normalization_variants PASS [ 0.007s] biomcp-cli transform::variant::tests::clinvar_review_stars_known_statuses PASS [ 0.009s] biomcp-cli transform::variant::tests::aggregate_clinvar_conditions_counts_reports PASS [ 7.486s] biomcp-cli entities::drug::test_support::label_fallback_fetch_error_stays_an_error PASS [ 0.011s] biomcp-cli transform::variant::tests::derive_legacy_name_normalizes_missense_alias_variants PASS [ 0.011s] biomcp-cli transform::variant::tests::derive_legacy_name_normalizes_stop_alias_variants PASS [ 0.022s] biomcp-cli transform::trial::tests::ticket_1114::receipted_ctgov_location_preserves_postal_code_in_json_and_markdown PASS [ 0.010s] biomcp-cli transform::variant::tests::extracts_expanded_variant_sections PASS [ 0.008s] biomcp-cli transform::variant::tests::normalize_gene_uppercases PASS [ 0.008s] biomcp-cli transform::variant::tests::newest_rcv_evaluation_date_skips_non_day_shaped_and_unshown_records PASS [ 0.010s] biomcp-cli transform::variant::tests::from_myvariant_hit_leaves_legacy_name_empty_without_clinvar PASS [ 0.010s] biomcp-cli transform::variant::tests::from_myvariant_hit_sets_top_disease_from_sorted_clinvar_rows PASS [ 0.008s] biomcp-cli transform::variant::tests::normalize_polyphen_codes PASS [ 0.010s] biomcp-cli transform::variant::tests::newest_rcv_evaluation_date_belongs_to_the_shown_classification PASS [ 0.012s] biomcp-cli transform::variant::tests::extracts_bayesdel_flavors_from_recorded_myvariant_payload PASS [ 0.009s] biomcp-cli transform::variant::tests::pick_review_status_prefers_highest_star_rating PASS [ 0.008s] biomcp-cli transform::variant::tests::pick_significance_handles_empty_and_partial_rcvs PASS [ 0.009s] biomcp-cli transform::variant::tests::pick_significance_with_kras_rcvs PASS [ 0.008s] biomcp-cli utils::date::tests::expands_year_only PASS [ 0.010s] biomcp-cli transform::variant::tests::pick_significance_with_brca1_rcvs PASS [ 0.009s] biomcp-cli utils::date::tests::accepts_leap_day_only_in_leap_years PASS [ 0.010s] biomcp-cli transform::variant::tests::significance_rank_prefers_pathogenic_over_benign PASS [ 0.008s] biomcp-cli utils::date::tests::expands_year_month PASS [ 0.009s] biomcp-cli utils::date::tests::is_day_shaped_accepts_real_days_only PASS [ 0.011s] biomcp-cli transform::variant::tests::transcript_annotation_never_zips_independent_dbnsfp_arrays PASS [ 0.013s] biomcp-cli transform::variant::tests::real_braf_receipt_prefers_the_transcript_associated_v600_annotation PASS [ 0.009s] biomcp-cli utils::date::tests::is_day_shaped_rejects_provider_spellings_and_impossible_days PASS [ 4.758s] biomcp-cli entities::variant::clinvar::tests::add_clinvar_names_a_non_429_provider_failure_distinctly PASS [ 0.010s] biomcp-cli utils::date::tests::keeps_full_date PASS [ 0.010s] biomcp-cli utils::date::tests::rejects_invalid_day_for_month PASS [ 0.009s] biomcp-cli utils::date::tests::trims_outer_whitespace PASS [ 0.010s] biomcp-cli utils::date::tests::rejects_malformed_dates PASS [ 0.008s] biomcp-cli utils::download::tests::download_path_for_config_keeps_relative_cache_roots_relative PASS [ 0.010s] biomcp-cli utils::date::tests::rejects_invalid_month PASS [ 0.009s] biomcp-cli utils::download::tests::bundle_fingerprint_is_none_for_a_missing_root PASS [ 0.008s] biomcp-cli utils::download::tests::download_path_for_config_resolves_to_cache_root_downloads PASS [ 0.010s] biomcp-cli utils::download::tests::bundle_fingerprint_is_stable_until_a_file_changes PASS [ 0.011s] biomcp-cli utils::download::tests::save_atomic_to_path_errors_when_target_path_is_directory PASS [ 0.010s] biomcp-cli utils::download::tests::saved_download_rejects_symlinks_and_hard_links PASS [ 0.007s] biomcp-cli utils::query::tests::escapes_lucene_special_characters PASS [ 0.009s] biomcp-cli utils::panic_payload_tests::any_other_payload_falls_back_to_the_generic_line PASS [ 0.009s] biomcp-cli utils::panic_payload_tests::string_and_str_payloads_keep_their_message PASS [ 0.008s] biomcp-cli utils::sync::tests::every_reconstructible_lock_uses_the_shared_helper PASS [ 0.009s] biomcp-cli utils::serde::tests::string_or_vec_helpers_cover_all_shapes PASS [ 0.017s] biomcp-cli utils::download::tests::downloads_are_private_and_existing_files_are_repaired PASS [ 0.008s] biomcp-cli workflow_ladders::tests::every_workflow_ladder_loads_and_validates PASS [ 0.009s] biomcp-cli utils::sync::tests::poisoned_lock_returns_the_guarded_value PASS [ 0.009s] biomcp-cli workflow_ladders::tests::workflow_meta_discards_sidecar_only_fields PASS [ 0.021s] biomcp-cli utils::download::tests::save_atomic_to_path_writes_download_target PASS [ 0.008s] biomcp-cli xml::tests::accepts_entity_token_text_in_comments_and_cdata PASS [ 0.008s] biomcp-cli xml::tests::comments_cdata_and_self_closing_tags_do_not_move_the_depth PASS [ 0.008s] biomcp-cli xml::tests::accepts_nesting_well_under_the_cap PASS [ 0.009s] biomcp-cli xml::tests::enforces_exact_node_limit PASS [ 0.008s] biomcp-cli xml::tests::maps_malformed_xml_to_parse_error PASS [ 0.009s] biomcp-cli xml::tests::parses_ordinary_declared_and_external_doctype_xml PASS [ 0.009s] biomcp-cli xml::tests::rejects_a_nesting_bomb_with_an_error PASS [ 0.024s] biomcp-cli utils::download::tests::write_atomic_bytes_replaces_existing_file_contents PASS [ 0.025s] biomcp-cli utils::download::tests::user_output_does_not_restrict_parent_directory PASS [ 0.008s] biomcp-cli xml::tests::rejects_entity_declaration_variants_before_parsing PASS [ 0.026s] biomcp-cli utils::download::tests::write_atomic_bytes_errors_for_non_file_destination PASS [ 0.373s] biomcp-cli transform::article::html::tests::stored_pmc_pages_keep_title_and_byline_and_drop_page_furniture PASS [ 0.949s] biomcp-cli sources::tests::shared_body_limit_rejects_before_cache_materialization PASS [ 1.130s] biomcp-cli sources::tests::provider_network::startup_cost::start_up_touches_no_more_cache_files_as_the_cache_grows PASS [ 1.959s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_rejects_aggregate_expansion PASS [ 3.018s] biomcp-cli sources::orcid::tests::closing::persistent_server_errors_stop_at_four_physical_gets_with_a_sanitized_error PASS [ 3.727s] biomcp-cli sources::opencitations::tests::references_reject_malformed_bodies_and_statuses PASS [ 11.168s] biomcp-cli entities::disease::get::tests::a_stale_mcp_call_tells_the_clinician_the_cache_age_on_both_channels PASS [ 3.597s] biomcp-cli sources::pmc_article::tests::proof_of_work_is_retained_when_a_later_linked_target_fails PASS [ 12.271s] biomcp-cli entities::disease::get::tests::a_stale_disease_card_tells_the_clinician_the_cache_age PASS [ 8.821s] biomcp-cli sources::gencc::tests::cross_process_first_use_elects_one_leader_and_settles_followers PASS [ 11.756s] biomcp-cli entities::variant::get::tests::protein_change_get_notes_unchecked_numbering_when_uniprot_is_unreachable PASS [ 25.366s] biomcp-cli entities::article::variant_search::tests::unsupported_fulltext_evidence_does_not_confirm_a_paper ──────────── Summary [ 29.954s] 4212 tests run: 4212 passed, 29 skipped Finished cargoNextestHook checkPhase completed in 3 minutes 16 seconds Running phase: installPhase Executing cargoInstallHook Finished cargoInstallHook Running phase: fixupPhase shrinking RPATHs of ELF executables and libraries in /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3 shrinking /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3/bin/biomcp checking for references to /build/ in /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3... patching script interpreter paths in /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3 stripping (with command strip and flags -S -p) in /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3/bin Running phase: installCheckPhase biomcp 0.9.3