biomcp-0.9.3
checks.x86_64-linux.package-biomcp
· build #1
· raw
1tribuchet: building on psi2structuredAttrs is enabled
unpackPhase
3unpacking source archive /nix/store/5n991b4z901g4fbd9wp50x9fxw9ajbqx-source4source root is source5Executing cargoSetupPostUnpackHook6Finished cargoSetupPostUnpackHookpatchPhase
7Executing cargoSetupPostPatchHook8Validating consistency between /build/source/Cargo.lock and /build/biomcp-0.9.3-vendor/Cargo.lock9Finished cargoSetupPostPatchHookbuildPhase
10Executing cargoBuildHook11cargoBuildHook flags: -j 24 --target x86_64-unknown-linux-gnu --offline --profile release12 Compiling proc-macro2 v1.0.10613 Compiling unicode-ident v1.0.2414 Compiling quote v1.0.4515 Compiling libc v0.2.19016 Compiling cfg-if v1.0.417 Compiling serde_core v1.0.22818 Compiling memchr v2.8.019 Compiling serde v1.0.22820 Compiling itoa v1.0.1721 Compiling smallvec v1.15.122 Compiling bytes v1.11.123 Compiling pin-project-lite v0.2.1724 Compiling version_check v0.9.525 Compiling typenum v1.19.026 Compiling futures-core v0.3.3227 Compiling once_cell v1.21.328 Compiling log v0.4.3429 Compiling futures-sink v0.3.3230 Compiling stable_deref_trait v1.2.131 Compiling siphasher v1.0.232 Compiling fastrand v2.3.033 Compiling slab v0.4.1234 Compiling equivalent v1.0.235 Compiling find-msvc-tools v0.1.936 Compiling shlex v1.3.037 Compiling futures-task v0.3.3238 Compiling futures-io v0.3.3239 Compiling scopeguard v1.2.040 Compiling bitflags v2.11.041 Compiling hashbrown v0.16.142 Compiling futures-channel v0.3.3243 Compiling crc32fast v1.5.244 Compiling simd-adler32 v0.3.1045 Compiling phf_shared v0.13.146 Compiling zmij v1.0.2147 Compiling adler2 v2.0.148 Compiling parking_lot_core v0.9.1249 Compiling new_debug_unreachable v1.0.650 Compiling tracing-core v0.1.3651 Compiling tower-service v0.3.352 Compiling zlib-rs v0.6.853 Compiling lock_api v0.4.1454 Compiling autocfg v1.5.055 Compiling zeroize v1.8.256 Compiling generic-array v0.14.757 Compiling percent-encoding v2.3.258 Compiling miniz_oxide v0.8.959 Compiling precomputed-hash v0.1.160 Compiling writeable v0.6.261 Compiling httparse v1.10.162 Compiling litemap v0.8.163 Compiling phf_generator v0.13.164 Compiling rustls-pki-types v1.14.065 Compiling serde_json v1.0.14966 Compiling utf-8 v0.7.667 Compiling icu_normalizer_data v2.1.168 Compiling fnv v1.0.769 Compiling phf_codegen v0.13.170 Compiling icu_properties_data v2.1.271 Compiling cpufeatures v0.2.1772 Compiling atomic-waker v1.1.273 Compiling httpdate v1.0.374 Compiling try-lock v0.2.575 Compiling tendril v0.5.076 Compiling pin-utils v0.1.077 Compiling base64 v0.22.178 Compiling want v0.3.179 Compiling anyhow v1.0.10380 Compiling untrusted v0.9.081 Compiling tower-layer v0.3.382 Compiling http v1.4.083 Compiling ipnet v2.12.084 Compiling rustix v1.1.485 Compiling thiserror v1.0.6986 Compiling zerocopy v0.8.4087 Compiling rustversion v1.0.2288 Compiling rustls v0.23.4689 Compiling getrandom v0.4.290 Compiling indexmap v2.13.091 Compiling rand_core v0.10.092 Compiling sync_wrapper v1.0.293 Compiling crossbeam-utils v0.8.2194 Compiling linux-raw-sys v0.12.195 Compiling subtle v2.6.196 Compiling num-traits v0.2.1997 Compiling form_urlencoded v1.2.298 Compiling ryu v1.0.2399 Compiling unicase v2.9.0100 Compiling syn v2.0.117101 Compiling string_cache_codegen v0.6.1102 Compiling mime v0.3.17103 Compiling utf8_iter v1.0.4104 Compiling compression-core v0.4.31105 Compiling same-file v1.0.6106 Compiling mime_guess v2.0.5107 Compiling pkg-config v0.3.32108 Compiling crossbeam-epoch v0.9.20109 Compiling libm v0.2.16110 Compiling hybrid-array v0.4.10111 Compiling dtoa v1.0.11112 Compiling dtoa-short v0.3.5113 Compiling walkdir v2.5.0114 Compiling web_atoms v0.2.4115 Compiling webpki-roots v1.0.6116 Compiling selectors v0.38.0117 Compiling aho-corasick v1.1.4118 Compiling thiserror v2.0.18119 Compiling ident_case v1.0.1120 Compiling iana-time-zone v0.1.65121 Compiling jobserver v0.1.34122 Compiling errno v0.3.14123 Compiling socket2 v0.6.2124 Compiling mio v1.1.1125 Compiling getrandom v0.2.17126 Compiling http-body v1.0.1127 Compiling signal-hook-registry v1.4.8128 Compiling cc v1.2.56129 Compiling http-body-util v0.1.3130 Compiling rand_core v0.6.4131 Compiling encoding_rs v0.8.42132 Compiling either v1.15.0133 Compiling parking_lot v0.12.5134 Compiling powerfmt v0.2.0135 Compiling crypto-common v0.1.7136 Compiling block-buffer v0.10.4137 Compiling block-padding v0.3.3138 Compiling iri-string v0.7.10139 Compiling strsim v0.11.1140 Compiling digest v0.10.7141 Compiling regex-syntax v0.8.10142 Compiling unicode-width v0.1.14143 Compiling deranged v0.5.8144 Compiling inout v0.1.4145 Compiling sha2 v0.10.9146 Compiling sha-1 v0.10.1147 Compiling indexmap v1.9.3148 Compiling servo_arc v0.4.3149 Compiling rayon-core v1.13.0150 Compiling xxhash-rust v0.8.15151 Compiling num_threads v0.1.7152 Compiling core_detect v1.0.0153 Compiling rustc-hash v2.1.1154 Compiling simdutf8 v0.1.5155 Compiling ref-cast v1.0.25156 Compiling num-conv v0.2.0157 Compiling hex v0.4.3158 Compiling base64 v0.21.7159 Compiling time-core v0.1.8160 Compiling utf8parse v0.2.2161 Compiling multiversion_no_op v1.0.0162 Compiling anstyle-parse v0.2.7163 Compiling itertools v0.14.0164 Compiling crossbeam-deque v0.8.6165 Compiling sha1 v0.10.6166 Compiling cipher v0.4.4167 Compiling block-buffer v0.12.0168 Compiling inout v0.2.2169 Compiling crypto-common v0.2.1170 Compiling memmap2 v0.5.10171 Compiling is_terminal_polyfill v1.70.2172 Compiling foldhash v0.1.5173 Compiling bumpalo v3.20.3174 Compiling cpufeatures v0.3.0175 Compiling allocator-api2 v0.2.21176 Compiling bit-vec v0.8.0177 Compiling colorchoice v1.0.4178 Compiling hashbrown v0.12.3179 Compiling anstyle v1.0.13180 Compiling flate2 v1.1.9181 Compiling typed-path v0.12.3182 Compiling anstyle-query v1.1.5183 Compiling zstd-safe v7.2.4184 Compiling tinyvec_macros v0.1.1185 Compiling tinyvec v1.10.0186 Compiling anstream v0.6.21187 Compiling core_maths v0.1.1188 Compiling ttf-parser v0.25.1189 Compiling tempfile v3.26.0190 Compiling reflink-copy v0.1.29191 Compiling ring v0.17.14192 Compiling zstd-sys v2.0.16+zstd.1.5.7193 Compiling compression-codecs v0.4.37194 Compiling time v0.3.47195 Compiling hashbrown v0.15.5196 Compiling zopfli v0.8.4197 Compiling cipher v0.5.1198 Compiling bit-set v0.8.0199 Compiling chacha20 v0.10.2200 Compiling rust-embed-utils v8.11.0201 Compiling nom v8.0.0202 Compiling fdeflate v0.3.7203 Compiling openssl-probe v0.2.1204 Compiling dyn-clone v1.0.20205 Compiling foldhash v0.2.0206 Compiling lazy_static v1.5.0207 Compiling option-ext v0.2.0208 Compiling regex-automata v0.4.14209 Compiling rmcp v1.7.0210 Compiling kuva v0.5.0211 Compiling toml_write v0.1.2212 Compiling unpdf v0.4.5213 Compiling heck v0.5.0214 Compiling clap_lex v1.0.0215 Compiling debug_unsafe v0.1.4216 Compiling winnow v0.7.15217 Compiling atoi_simd v0.18.1218 Compiling rayon v1.12.0219 Compiling clap_builder v4.5.60220 Compiling zip v8.6.0221 Compiling png v0.18.1222 Compiling sharded-slab v0.1.7223 Compiling dirs-sys v0.4.1224 Compiling rustls-native-certs v0.8.3225 Compiling rand v0.10.1226 Compiling fontdue v0.9.4227 Compiling synstructure v0.13.2228 Compiling darling_core v0.23.0229 Compiling serde_derive_internals v0.29.1230 Compiling quick-xml v0.41.0231 Compiling ppv-lite86 v0.2.21232 Compiling codepage v0.1.3233 Compiling rc4 v0.2.0234 Compiling unicode-normalization v0.1.25235 Compiling xattr v1.6.1236 Compiling serde_path_to_error v0.1.20237 Compiling aes v0.8.4238 Compiling cbc v0.1.2239 Compiling md-5 v0.10.6240 Compiling rand_chacha v0.3.1241 Compiling axum-core v0.5.6242 Compiling uuid v1.22.0243 Compiling crossbeam-channel v0.5.15244 Compiling filetime v0.2.27245 Compiling rustls-pemfile v2.2.0246 Compiling rand v0.8.6247 Compiling tracing-log v0.2.0248 Compiling csv-core v0.1.13249 Compiling thread_local v1.1.9250 Compiling ego-tree v0.11.0251 Compiling html-escape v0.2.15252 Compiling colorous v1.0.16253 Compiling nu-ansi-term v0.50.3254 Compiling unicode-segmentation v1.13.3255 Compiling gjson v0.8.1256 Compiling pastey v0.2.1257 Compiling flagset v0.4.7258 Compiling matchit v0.8.4259 Compiling unicode-bidi v0.3.18260 Compiling byteorder v1.5.0261 Compiling fast-float2 v0.2.4262 Compiling csv v1.4.0263 Compiling tar v0.4.46264 Compiling dirs v5.0.1265 Compiling serde_derive v1.0.228266 Compiling tokio-macros v2.6.1267 Compiling zerofrom-derive v0.1.6268 Compiling futures-macro v0.3.32269 Compiling yoke-derive v0.8.1270 Compiling zerovec-derive v0.11.2271 Compiling tracing-attributes v0.1.31272 Compiling displaydoc v0.2.5273 Compiling phf_macros v0.13.1274 Compiling thiserror-impl v1.0.69275 Compiling async-trait v0.1.89276 Compiling derive_more-impl v2.1.1277 Compiling miette-derive v5.10.0278 Compiling cssparser-macros v0.7.1279 Compiling tokio v1.50.0280 Compiling thiserror-impl v2.0.18281 Compiling futures-util v0.3.32282 Compiling ref-cast-impl v1.0.25283 Compiling pin-project-internal v1.1.11284 Compiling prost-derive v0.13.5285 Compiling phf v0.13.1286 Compiling schemars_derive v1.2.1287 Compiling darling_macro v0.23.0288 Compiling regex v1.12.3289 Compiling cssparser v0.37.0290 Compiling matchers v0.2.0291 Compiling zerofrom v0.1.6292 Compiling retry-policies v0.4.0293 Compiling yoke v0.8.1294 Compiling derive_more v2.1.1295 Compiling rust-embed-impl v8.11.0296 Compiling clap_derive v4.5.55297 Compiling zip v9.0.4298 Compiling tracing v0.1.44299 Compiling humantime v2.3.0300 Compiling md5 v0.7.0301 Compiling zerovec v0.11.5302 Compiling zerotrie v0.2.3303 Compiling darling v0.23.0304 Compiling roxmltree v0.20.0305 Compiling miette v5.10.0306 Compiling rmcp-macros v1.7.0307 Compiling tracing-subscriber v0.3.22308 Compiling semver v1.0.27309 Compiling bytesize v1.3.3310 Compiling pin-project v1.1.11311 Compiling rust-embed v8.11.0312 Compiling tinystr v0.8.2313 Compiling potential_utf v0.1.4314 Compiling icu_collections v2.1.1315 Compiling icu_locale_core v2.1.1316 Compiling prost v0.13.5317 Compiling clap v4.5.60318 Compiling icu_provider v2.1.1319 Compiling string_cache v0.9.0320 Compiling chrono v0.4.44321 Compiling serde_urlencoded v0.7.1322 Compiling ssri v9.2.0323 Compiling http-serde v2.1.1324 Compiling icu_normalizer v2.1.1325 Compiling icu_properties v2.1.2326 Compiling http-cache-semantics v2.1.1327 Compiling bincode v1.3.3328 Compiling futures-executor v0.3.32329 Compiling toml_datetime v0.6.11330 Compiling serde_spanned v0.6.9331 Compiling futures v0.3.32332 Compiling sse-stream v0.2.1333 Compiling toml_edit v0.22.27334 Compiling minijinja v2.17.1335 Compiling calamine v0.36.1336 Compiling markup5ever v0.38.0337 Compiling markup5ever v0.39.0338 Compiling html5ever v0.39.0339 Compiling xml5ever v0.38.0340 Compiling idna_adapter v1.2.1341 Compiling html5ever v0.38.0342 Compiling schemars v1.2.1343 Compiling idna v1.1.0344 Compiling rustls-webpki v0.103.15345 Compiling url v2.5.8346 Compiling dom_query v0.28.0347 Compiling scraper v0.27.0348 Compiling markup5ever_rcdom v0.38.0+unofficial349 Compiling tokio-util v0.7.18350 Compiling tower v0.5.3351 Compiling async-compression v0.4.41352 Compiling tokio-stream v0.1.18353 Compiling htmd v0.5.4354 Compiling toml v0.8.23355 Compiling h2 v0.4.16356 Compiling tower-http v0.6.8357 Compiling cacache v13.1.0358 Compiling tower v0.4.13359 Compiling dom_smoothie v0.18.2360 Compiling http-cache v0.20.1361 Compiling hyper v1.8.1362 Compiling tokio-rustls v0.26.4363 Compiling hyper-util v0.1.20364 Compiling zstd v0.13.3365 Compiling hyper-rustls v0.27.7366 Compiling hyper-timeout v0.5.2367 Compiling axum v0.8.8368 Compiling tonic v0.12.3369 Compiling reqwest v0.12.28370 Compiling reqwest-middleware v0.4.2371 Compiling http-cache-reqwest v0.15.1372 Compiling reqwest-retry v0.7.0373 Compiling biomcp-cli v0.9.3 (/build/source)374warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency375 --> src/entities/article/variant_search.rs:377:64376 |377377 | let _ = self.allocation.identity_verification_reserved.fetch_update(378 | ^^^^^^^^^^^^379 |380 = note: `#[warn(deprecated)]` on by default381help: replace the use of the deprecated method382 |383377 - let _ = self.allocation.identity_verification_reserved.fetch_update(384377 + let _ = self.allocation.identity_verification_reserved.try_update(385 |386387warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency388 --> src/entities/article/variant_search.rs:496:22389 |390496 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {391 | ^^^^^^^^^^^^392 |393help: replace the use of the deprecated method394 |395496 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {396496 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {397 |398399warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency400 --> src/entities/article/variant_search.rs:521:18401 |402521 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {403 | ^^^^^^^^^^^^404 |405help: replace the use of the deprecated method406 |407521 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {408521 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {409 |410411warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency412 --> src/entities/article/variant_search.rs:541:18413 |414541 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {415 | ^^^^^^^^^^^^416 |417help: replace the use of the deprecated method418 |419541 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {420541 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {421 |422423warning: `biomcp-cli` (lib) generated 4 warnings (run `cargo fix --lib -p biomcp-cli` to apply 4 suggestions)424 Finished `release` profile [optimized] target(s) in 10m 11s425Executing cargoInstallPostBuildHook426Finished cargoInstallPostBuildHook427Finished cargoBuildHook428buildPhase completed in 10 minutes 12 secondscheckPhase
429Executing cargoNextestHook430cargoNextestHook flags: --target x86_64-unknown-linux-gnu --offline --show-progress=none -j 24 --lib --431 Compiling proc-macro2 v1.0.106432 Compiling quote v1.0.45433 Compiling unicode-ident v1.0.24434 Compiling cfg-if v1.0.4435 Compiling libc v0.2.190436 Compiling serde_core v1.0.228437 Compiling memchr v2.8.0438 Compiling serde v1.0.228439 Compiling itoa v1.0.17440 Compiling smallvec v1.15.1441 Compiling pin-project-lite v0.2.17442 Compiling bytes v1.11.1443 Compiling futures-core v0.3.32444 Compiling version_check v0.9.5445 Compiling once_cell v1.21.3446 Compiling log v0.4.34447 Compiling typenum v1.19.0448 Compiling futures-sink v0.3.32449 Compiling stable_deref_trait v1.2.1450 Compiling slab v0.4.12451 Compiling bitflags v2.11.0452 Compiling equivalent v1.0.2453 Compiling siphasher v1.0.2454 Compiling futures-task v0.3.32455 Compiling futures-io v0.3.32456 Compiling shlex v1.3.0457 Compiling fastrand v2.3.0458 Compiling find-msvc-tools v0.1.9459 Compiling hashbrown v0.16.1460 Compiling crc32fast v1.5.2461 Compiling simd-adler32 v0.3.10462 Compiling zmij v1.0.21463 Compiling scopeguard v1.2.0464 Compiling adler2 v2.0.1465 Compiling zlib-rs v0.6.8466 Compiling parking_lot_core v0.9.12467 Compiling tower-service v0.3.3468 Compiling percent-encoding v2.3.2469 Compiling zeroize v1.8.2470 Compiling httparse v1.10.1471 Compiling writeable v0.6.2472 Compiling litemap v0.8.1473 Compiling icu_normalizer_data v2.1.1474 Compiling new_debug_unreachable v1.0.6475 Compiling autocfg v1.5.0476 Compiling try-lock v0.2.5477 Compiling futures-channel v0.3.32478 Compiling atomic-waker v1.1.2479 Compiling fnv v1.0.7480 Compiling base64 v0.22.1481 Compiling serde_json v1.0.149482 Compiling httpdate v1.0.3483 Compiling icu_properties_data v2.1.2484 Compiling lock_api v0.4.14485 Compiling pin-utils v0.1.0486 Compiling precomputed-hash v0.1.1487 Compiling tower-layer v0.3.3488 Compiling ipnet v2.12.0489 Compiling miniz_oxide v0.8.9490 Compiling want v0.3.1491 Compiling untrusted v0.9.0492 Compiling tracing-core v0.1.36493 Compiling sync_wrapper v1.0.2494 Compiling phf_shared v0.13.1495 Compiling utf-8 v0.7.6496 Compiling rustix v1.1.4497 Compiling getrandom v0.4.2498 Compiling anyhow v1.0.103499 Compiling rand_core v0.10.0500 Compiling cpufeatures v0.2.17501 Compiling form_urlencoded v1.2.2502 Compiling utf8_iter v1.0.4503 Compiling linux-raw-sys v0.12.1504 Compiling compression-core v0.4.31505 Compiling rustls-pki-types v1.14.0506 Compiling rustls v0.23.46507 Compiling thiserror v1.0.69508 Compiling rustversion v1.0.22509 Compiling subtle v2.6.1510 Compiling zerocopy v0.8.40511 Compiling ryu v1.0.23512 Compiling crossbeam-utils v0.8.21513 Compiling mime v0.3.17514 Compiling unicase v2.9.0515 Compiling iri-string v0.7.10516 Compiling generic-array v0.14.7517 Compiling tendril v0.5.0518 Compiling cfg_aliases v0.2.1519 Compiling powerfmt v0.2.0520 Compiling thiserror v2.0.18521 Compiling libm v0.2.16522 Compiling num_threads v0.1.7523 Compiling time-core v0.1.8524 Compiling nix v0.31.3525 Compiling ident_case v1.0.1526 Compiling regex-syntax v0.8.10527 Compiling phf_generator v0.13.1528 Compiling mime_guess v2.0.5529 Compiling pkg-config v0.3.32530 Compiling num-conv v0.2.0531 Compiling dtoa v1.0.11532 Compiling crossbeam-epoch v0.9.20533 Compiling iana-time-zone v0.1.65534 Compiling num-traits v0.2.19535 Compiling deranged v0.5.8536 Compiling same-file v1.0.6537 Compiling phf_codegen v0.13.1538 Compiling strsim v0.11.1539 Compiling ref-cast v1.0.25540 Compiling unicode-width v0.1.14541 Compiling dtoa-short v0.3.5542 Compiling walkdir v2.5.0543 Compiling either v1.15.0544 Compiling aho-corasick v1.1.4545 Compiling indexmap v1.9.3546 Compiling http v1.4.0547 Compiling selectors v0.38.0548 Compiling servo_arc v0.4.3549 Compiling rustc-hash v2.1.1550 Compiling webpki-roots v1.0.6551 Compiling multiversion_no_op v1.0.0552 Compiling rayon-core v1.13.0553 Compiling xxhash-rust v0.8.15554 Compiling core_detect v1.0.0555 Compiling hex v0.4.3556 Compiling simdutf8 v0.1.5557 Compiling base64 v0.21.7558 Compiling cpufeatures v0.3.0559 Compiling indexmap v2.13.0560 Compiling utf8parse v0.2.2561 Compiling anstyle-query v1.1.5562 Compiling allocator-api2 v0.2.21563 Compiling is_terminal_polyfill v1.70.2564 Compiling bumpalo v3.20.3565 Compiling chacha20 v0.10.2566 Compiling hashbrown v0.12.3567 Compiling dyn-clone v1.0.20568 Compiling itertools v0.14.0569 Compiling anstyle-parse v0.2.7570 Compiling bit-vec v0.8.0571 Compiling rmcp v1.7.0572 Compiling colorchoice v1.0.4573 Compiling zstd-safe v7.2.4574 Compiling typed-path v0.12.3575 Compiling foldhash v0.1.5576 Compiling tinyvec_macros v0.1.1577 Compiling anstyle v1.0.13578 Compiling nom v8.0.0579 Compiling fdeflate v0.3.7580 Compiling foldhash v0.2.0581 Compiling toml_write v0.1.2582 Compiling pastey v0.2.1583 Compiling openssl-probe v0.2.1584 Compiling tinyvec v1.10.0585 Compiling option-ext v0.2.0586 Compiling lazy_static v1.5.0587 Compiling debug_unsafe v0.1.4588 Compiling heck v0.5.0589 Compiling zopfli v0.8.4590 Compiling kuva v0.5.0591 Compiling winnow v0.7.15592 Compiling bit-set v0.8.0593 Compiling clap_lex v1.0.0594 Compiling unpdf v0.4.5595 Compiling sharded-slab v0.1.7596 Compiling anstream v0.6.21597 Compiling crossbeam-channel v0.5.15598 Compiling rustls-native-certs v0.8.3599 Compiling rustls-pemfile v2.2.0600 Compiling syn v2.0.117601 Compiling string_cache_codegen v0.6.1602 Compiling hashbrown v0.15.5603 Compiling tracing-log v0.2.0604 Compiling csv-core v0.1.13605 Compiling pem v3.0.6606 Compiling thread_local v1.1.9607 Compiling comma v1.0.0608 Compiling ego-tree v0.11.0609 Compiling html-escape v0.2.15610 Compiling byteorder v1.5.0611 Compiling encoding_rs v0.8.42612 Compiling clap_builder v4.5.60613 Compiling atoi_simd v0.18.1614 Compiling unicode-bidi v0.3.18615 Compiling crossbeam-deque v0.8.6616 Compiling fast-float2 v0.2.4617 Compiling unicode-segmentation v1.13.3618 Compiling flagset v0.4.7619 Compiling unicode-normalization v0.1.25620 Compiling gjson v0.8.1621 Compiling nu-ansi-term v0.50.3622 Compiling colorous v1.0.16623 Compiling matchit v0.8.4624 Compiling hybrid-array v0.4.10625 Compiling bytesize v1.3.3626 Compiling roxmltree v0.20.0627 Compiling http-body v1.0.1628 Compiling semver v1.0.27629 Compiling humantime v2.3.0630 Compiling md5 v0.7.0631 Compiling http-body-util v0.1.3632 Compiling web_atoms v0.2.4633 Compiling axum-core v0.5.6634 Compiling core_maths v0.1.1635 Compiling ttf-parser v0.25.1636 Compiling rayon v1.12.0637 Compiling jobserver v0.1.34638 Compiling crypto-common v0.2.1639 Compiling block-buffer v0.12.0640 Compiling inout v0.2.2641 Compiling crypto-common v0.1.7642 Compiling block-buffer v0.10.4643 Compiling block-padding v0.3.3644 Compiling cc v1.2.56645 Compiling digest v0.10.7646 Compiling inout v0.1.4647 Compiling cipher v0.4.4648 Compiling sha2 v0.10.9649 Compiling sha-1 v0.10.1650 Compiling sha1 v0.10.6651 Compiling md-5 v0.10.6652 Compiling errno v0.3.14653 Compiling socket2 v0.6.2654 Compiling mio v1.1.1655 Compiling getrandom v0.2.17656 Compiling time v0.3.47657 Compiling memmap2 v0.5.10658 Compiling dirs-sys v0.4.1659 Compiling filetime v0.2.27660 Compiling cbc v0.1.2661 Compiling aes v0.8.4662 Compiling signal-hook-registry v1.4.8663 Compiling rust-embed-utils v8.11.0664 Compiling reflink-copy v0.1.29665 Compiling xattr v1.6.1666 Compiling rand_core v0.6.4667 Compiling dirs v5.0.1668 Compiling regex-automata v0.4.14669 Compiling tempfile v3.26.0670 Compiling uuid v1.22.0671 Compiling rand v0.10.1672 Compiling codepage v0.1.3673 Compiling quick-xml v0.41.0674 Compiling parking_lot v0.12.5675 Compiling tar v0.4.46676 Compiling cipher v0.5.1677 Compiling rc4 v0.2.0678 Compiling ring v0.17.14679 Compiling zstd-sys v2.0.16+zstd.1.5.7680 Compiling serde_path_to_error v0.1.20681 Compiling csv v1.4.0682 Compiling fontdue v0.9.4683 Compiling yasna v0.5.2684 Compiling flate2 v1.1.9685 Compiling compression-codecs v0.4.37686 Compiling png v0.18.1687 Compiling zip v8.6.0688 Compiling zip v9.0.4689 Compiling ppv-lite86 v0.2.21690 Compiling rand_chacha v0.3.1691 Compiling synstructure v0.13.2692 Compiling darling_core v0.23.0693 Compiling serde_derive_internals v0.29.1694 Compiling rand v0.8.6695 Compiling regex v1.12.3696 Compiling matchers v0.2.0697 Compiling serde_derive v1.0.228698 Compiling tokio-macros v2.6.1699 Compiling futures-macro v0.3.32700 Compiling zerofrom-derive v0.1.6701 Compiling yoke-derive v0.8.1702 Compiling zerovec-derive v0.11.2703 Compiling tracing-attributes v0.1.31704 Compiling displaydoc v0.2.5705 Compiling phf_macros v0.13.1706 Compiling thiserror-impl v1.0.69707 Compiling async-trait v0.1.89708 Compiling thiserror-impl v2.0.18709 Compiling miette-derive v5.10.0710 Compiling cssparser-macros v0.7.1711 Compiling derive_more-impl v2.1.1712 Compiling ref-cast-impl v1.0.25713 Compiling pin-project-internal v1.1.11714 Compiling prost-derive v0.13.5715 Compiling serial_test_derive v3.5.0716 Compiling clap_derive v4.5.55717 Compiling rust-embed-impl v8.11.0718 Compiling schemars_derive v1.2.1719 Compiling rustls-webpki v0.103.15720 Compiling rcgen v0.13.2721 Compiling retry-policies v0.4.0722 Compiling zstd v0.13.3723 Compiling rust-embed v8.11.0724 Compiling futures-util v0.3.32725 Compiling tokio v1.50.0726 Compiling phf v0.13.1727 Compiling cssparser v0.37.0728 Compiling zerofrom v0.1.6729 Compiling yoke v0.8.1730 Compiling derive_more v2.1.1731 Compiling pin-project v1.1.11732 Compiling tracing v0.1.44733 Compiling zerovec v0.11.5734 Compiling zerotrie v0.2.3735 Compiling miette v5.10.0736 Compiling tracing-subscriber v0.3.22737 Compiling rexpect v0.7.0738 Compiling prost v0.13.5739 Compiling darling_macro v0.23.0740 Compiling clap v4.5.60741 Compiling tinystr v0.8.2742 Compiling potential_utf v0.1.4743 Compiling icu_collections v2.1.1744 Compiling icu_locale_core v2.1.1745 Compiling darling v0.23.0746 Compiling rmcp-macros v1.7.0747 Compiling icu_provider v2.1.1748 Compiling icu_properties v2.1.2749 Compiling icu_normalizer v2.1.1750 Compiling string_cache v0.9.0751 Compiling chrono v0.4.44752 Compiling serde_urlencoded v0.7.1753 Compiling http-serde v2.1.1754 Compiling ssri v9.2.0755 Compiling bincode v1.3.3756 Compiling toml_datetime v0.6.11757 Compiling serde_spanned v0.6.9758 Compiling minijinja v2.17.1759 Compiling calamine v0.36.1760 Compiling http-cache-semantics v2.1.1761 Compiling toml_edit v0.22.27762 Compiling futures-executor v0.3.32763 Compiling sse-stream v0.2.1764 Compiling futures v0.3.32765 Compiling serial_test v3.5.0766 Compiling markup5ever v0.39.0767 Compiling markup5ever v0.38.0768 Compiling idna_adapter v1.2.1769 Compiling idna v1.1.0770 Compiling html5ever v0.39.0771 Compiling xml5ever v0.38.0772 Compiling html5ever v0.38.0773 Compiling schemars v1.2.1774 Compiling url v2.5.8775 Compiling dom_query v0.28.0776 Compiling scraper v0.27.0777 Compiling markup5ever_rcdom v0.38.0+unofficial778 Compiling htmd v0.5.4779 Compiling toml v0.8.23780 Compiling tokio-util v0.7.18781 Compiling tower v0.5.3782 Compiling async-compression v0.4.41783 Compiling tokio-rustls v0.26.4784 Compiling tokio-stream v0.1.18785 Compiling process-wrap v9.1.0786 Compiling dom_smoothie v0.18.2787 Compiling cacache v13.1.0788 Compiling h2 v0.4.16789 Compiling tower-http v0.6.8790 Compiling tower v0.4.13791 Compiling http-cache v0.20.1792 Compiling hyper v1.8.1793 Compiling hyper-util v0.1.20794 Compiling hyper-rustls v0.27.7795 Compiling reqwest v0.13.4796 Compiling hyper-timeout v0.5.2797 Compiling axum v0.8.8798 Compiling tonic v0.12.3799 Compiling reqwest v0.12.28800 Compiling reqwest-middleware v0.4.2801 Compiling reqwest-retry v0.7.0802 Compiling http-cache-reqwest v0.15.1803 Compiling biomcp-mcp-contract-client v0.1.0 (/build/source/crates/biomcp-mcp-contract-client)804 Compiling biomcp-cli v0.9.3 (/build/source)805warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency806 --> src/entities/article/variant_search.rs:377:64807 |808377 | let _ = self.allocation.identity_verification_reserved.fetch_update(809 | ^^^^^^^^^^^^810 |811 = note: `#[warn(deprecated)]` on by default812help: replace the use of the deprecated method813 |814377 - let _ = self.allocation.identity_verification_reserved.fetch_update(815377 + let _ = self.allocation.identity_verification_reserved.try_update(816 |817818warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency819 --> src/entities/article/variant_search.rs:496:22820 |821496 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {822 | ^^^^^^^^^^^^823 |824help: replace the use of the deprecated method825 |826496 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {827496 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {828 |829830warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency831 --> src/entities/article/variant_search.rs:521:18832 |833521 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {834 | ^^^^^^^^^^^^835 |836help: replace the use of the deprecated method837 |838521 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {839521 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {840 |841842warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency843 --> src/entities/article/variant_search.rs:541:18844 |845541 | .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {846 | ^^^^^^^^^^^^847 |848help: replace the use of the deprecated method849 |850541 - .fetch_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {851541 + .try_update(AtomicOrdering::SeqCst, AtomicOrdering::SeqCst, |current| {852 |853854warning: `biomcp-cli` (lib test) generated 4 warnings (run `cargo fix --lib -p biomcp-cli --tests` to apply 4 suggestions)855 Finished `test` profile [unoptimized + debuginfo] target(s) in 2m 45s856────────────857 Nextest run ID 657772ba-925e-44c8-99ea-1a50b6b324d1 with nextest profile: default858 Starting 4212 tests across 1 binary (29 tests skipped)859 PASS [ 0.015s] biomcp-cli cache::config::tests::disk_free_threshold_methods_cover_percent_bytes_and_display860 PASS [ 0.017s] biomcp-cli cache::config::tests::defaults_when_no_env_or_file_uses_default_cache_config861 PASS [ 0.017s] biomcp-cli cache::config::tests::env_max_age_overrides_file_and_default862 PASS [ 0.018s] biomcp-cli cache::config::tests::a_test_builds_default_cache_root_never_reads_the_machine_cache863 PASS [ 0.019s] biomcp-cli cache::config::tests::default_min_disk_free_is_10_percent_with_default_origin864 PASS [ 0.019s] biomcp-cli cache::clean::tests::cache_clean_blob_not_found_is_benign_drift865 PASS [ 0.019s] biomcp-cli cache::clean::tests::cache_clean_age_cleanup_removes_only_old_entries866 PASS [ 0.019s] biomcp-cli cache::clean::tests::deadline_expiry_between_key_removals_leaves_the_next_key_untouched867 PASS [ 0.019s] biomcp-cli cache::config::tests::env_cache_dir_overrides_file_and_default868 PASS [ 0.019s] biomcp-cli cache::clean::tests::cache_clean_snapshot_failure_returns_io_error869 PASS [ 0.020s] biomcp-cli cache::config::tests::blank_env_values_are_treated_as_unset870 PASS [ 0.020s] biomcp-cli cache::clean::tests::cache_clean_shared_integrity_blob_waits_for_all_keys871 PASS [ 0.020s] biomcp-cli cache::config::tests::blank_env_max_age_falls_through872 PASS [ 0.020s] biomcp-cli cache::config::tests::default_origins_are_reported_when_values_fall_through873 PASS [ 0.020s] biomcp-cli cache::config::tests::blank_toml_dir_returns_error874 PASS [ 0.020s] biomcp-cli augment_genes_with_opentargets_merges_sources_without_duplicates875 PASS [ 0.021s] biomcp-cli augment_genes_with_opentargets_respects_twenty_gene_cap876 PASS [ 0.021s] biomcp-cli cache::config::tests::env_min_disk_free_overrides_file_and_tracks_env_origin877 PASS [ 0.021s] biomcp-cli cache::clean::tests::cache_clean_dry_run_reports_orphan_plan_without_deleting878 PASS [ 0.021s] biomcp-cli cache::config::tests::env_max_size_overrides_file_and_default879 PASS [ 0.022s] biomcp-cli cache::clean::tests::cache_clean_destructive_removes_orphan_blobs880 PASS [ 0.023s] biomcp-cli cache::clean::tests::cache_clean_default_origin_enforces_retention_without_size_eviction881 PASS [ 0.023s] biomcp-cli cache::clean::tests::cache_clean_size_cleanup_uses_explicit_config_without_flag882 PASS [ 0.024s] biomcp-cli cache::clean::tests::cache_clean_dry_run_matches_destructive_on_equivalent_seed883 PASS [ 0.013s] biomcp-cli cache::config::tests::invalid_env_max_age_returns_error884 PASS [ 0.013s] biomcp-cli cache::config::tests::toml_zero_max_age_returns_error885 PASS [ 0.014s] biomcp-cli cache::config::tests::toml_min_disk_free_parses_absolute_bytes_and_tracks_file_origin886 PASS [ 0.013s] biomcp-cli cache::config::tests::toml_zero_max_size_returns_error887 PASS [ 0.017s] biomcp-cli cache::config::tests::invalid_env_min_disk_free_returns_error888 PASS [ 0.016s] biomcp-cli cache::config::tests::toml_without_cache_section_uses_defaults889 PASS [ 0.018s] biomcp-cli cache::config::tests::invalid_env_size_returns_error890 PASS [ 0.016s] biomcp-cli cache::config::tests::zero_env_max_age_returns_error891 PASS [ 0.017s] biomcp-cli cache::config::tests::resolve_cache_config_reports_path_on_read_failure892 PASS [ 0.017s] biomcp-cli cache::config::tests::toml_dir_overrides_default893 PASS [ 0.020s] biomcp-cli cache::config::tests::invalid_env_min_disk_free_over_100_percent_returns_error894 PASS [ 0.018s] biomcp-cli cache::config::tests::invalid_toml_syntax_returns_error895 PASS [ 0.018s] biomcp-cli cache::config::tests::origins_track_mixed_precedence_without_max_age_env_override896 PASS [ 0.017s] biomcp-cli cache::config::tests::toml_max_size_overrides_default897 PASS [ 0.018s] biomcp-cli cache::config::tests::resolve_cache_config_uses_defaults_when_no_env_or_file898 PASS [ 0.019s] biomcp-cli cache::config::tests::resolve_cache_config_env_overrides_file899 PASS [ 0.015s] biomcp-cli cache::layout_tests::derived_index_bucket_is_the_file_cacache_writes900 PASS [ 0.017s] biomcp-cli cache::config::tests::zero_env_size_returns_error901 PASS [ 0.020s] biomcp-cli cache::config::tests::resolve_cache_config_reports_path_on_failure902 PASS [ 0.022s] biomcp-cli cache::config::tests::resolve_cache_config_reads_cache_toml_from_xdg_config_home903 PASS [ 0.021s] biomcp-cli cache::config::tests::toml_max_age_overrides_default904 PASS [ 0.021s] biomcp-cli cache::config::tests::unknown_toml_field_returns_error905 PASS [ 0.017s] biomcp-cli cache::limits::tests::evaluate_cache_limits_converts_disk_deficit_into_effective_max_size906 PASS [ 0.019s] biomcp-cli cache::limits::tests::evaluate_cache_limits_can_drive_effective_max_size_to_zero907 PASS [ 0.015s] biomcp-cli cache::limits::tests::summarize_cache_usage_distinguishes_referenced_and_orphan_blob_bytes908 PASS [ 0.014s] biomcp-cli cache::maintenance::operation_lock_tests::constructor_repairs_and_independent_key_operations_do_not_serialize_globally909 PASS [ 0.012s] biomcp-cli cache::maintenance::tests::clear_missing_path_returns_zero_report910 PASS [ 0.014s] biomcp-cli cache::maintenance::tests::clear_preserves_sibling_downloads_directory911 PASS [ 0.014s] biomcp-cli cache::maintenance::tests::clear_nested_symlink_unlinks_entry_and_sets_bytes_to_none912 PASS [ 0.018s] biomcp-cli cache::maintenance::operation_lock_tests::cancelled_pending_shared_lock_releases_its_provisional_lease913 PASS [ 0.015s] biomcp-cli cache::maintenance::tests::clear_removes_directory_tree_and_root_http_dir914 PASS [ 0.021s] biomcp-cli cache::maintenance::operation_lock_tests::colliding_http_cache_keys_wait_for_the_local_writer915 PASS [ 0.018s] biomcp-cli cache::maintenance::tests::clear_rejects_special_file_before_mutation916 PASS [ 0.019s] biomcp-cli cache::maintenance::tests::clear_rejects_root_regular_file_before_mutation917 PASS [ 0.018s] biomcp-cli cache::maintenance::tests::clear_root_symlink_is_unlinked_without_traversing_target918 PASS [ 0.014s] biomcp-cli cache::manager::tests::run_eviction_cycle_propagates_snapshot_error919 PASS [ 0.022s] biomcp-cli cache::maintenance::operation_lock_tests::same_process_readers_never_block_on_an_exclusive_upgrade920 PASS [ 0.025s] biomcp-cli cache::maintenance::operation_lock_tests::local_shared_lease_delays_maintenance_until_release_within_deadline921 PASS [ 0.012s] biomcp-cli cache::manager::tests::startup_clean_tests::cache_mode_off_skips_the_startup_clean922 PASS [ 0.028s] biomcp-cli cache::manager::tests::put_schedules_eviction_when_disk_floor_is_violated923 PASS [ 0.009s] biomcp-cli cache::manager::tests::write_security_tests::cacache_atomic_temporary_file_is_born_private924 PASS [ 0.034s] biomcp-cli cache::maintenance::operation_lock_tests::local_shared_lease_maintenance_wait_expires_without_retaining_locks925 PASS [ 0.036s] biomcp-cli cache::manager::tests::new_manager_seeds_approximate_bytes_from_fast_estimate926 PASS [ 0.041s] biomcp-cli cache::maintenance::operation_lock_tests::local_key_wait_honors_expiry_and_cancellation_without_retaining_the_shard927 PASS [ 0.035s] biomcp-cli cache::manager::tests::run_eviction_cycle_logs_successful_cleanup_still_under_floor_at_debug928 PASS [ 0.036s] biomcp-cli cache::manager::tests::run_eviction_cycle_false_positive_resyncs_without_cleaning929 PASS [ 0.038s] biomcp-cli cache::manager::tests::put_schedules_eviction_for_preexisting_oversized_cache_with_ample_disk930 PASS [ 0.022s] biomcp-cli cache::manager::tests::startup_totals_tests::cache_mode_off_seeds_zero_without_reading_the_cache931 PASS [ 0.039s] biomcp-cli cache::manager::tests::run_eviction_cycle_uses_effective_max_size_for_disk_pressure932 PASS [ 0.032s] biomcp-cli cache::manager::tests::startup_clean_tests::a_marker_older_than_a_day_runs_the_clean_and_rewrites_the_marker933 PASS [ 0.032s] biomcp-cli cache::manager::tests::startup_clean_tests::a_fresh_startup_clean_marker_skips_the_clean934 PASS [ 0.037s] biomcp-cli cache::manager::tests::run_eviction_cycle_uses_exact_snapshot_state_for_size_eviction935 PASS [ 0.049s] biomcp-cli cache::manager::tests::opening_manager_physically_removes_expired_entries_below_size_limit936 PASS [ 0.047s] biomcp-cli cache::manager::tests::run_eviction_cycle_logs_cleanup_errors_at_warn937 PASS [ 0.033s] biomcp-cli cache::manager::tests::startup_clean_tests::a_missing_startup_clean_marker_runs_the_clean_and_writes_the_marker938 PASS [ 0.013s] biomcp-cli cache::manager::tests::write_security_tests::put_rejects_a_multiply_linked_index_bucket939 PASS [ 0.038s] biomcp-cli cache::manager::tests::startup_totals_tests::the_daily_clean_rewrites_the_totals_marker_with_an_exact_total940 PASS [ 0.009s] biomcp-cli cache::migration::tests::async_io_crossing_expiry_settles_without_admitting_a_mutation941 PASS [ 0.015s] biomcp-cli cache::manager::tests::write_security_tests::put_rejects_linked_index_bucket_and_each_linked_ancestor942 PASS [ 0.062s] biomcp-cli cache::manager::tests::put_debounces_duplicate_eviction_scheduling943 PASS [ 0.032s] biomcp-cli cache::manager::tests::write_security_tests::estimate_cache_bytes_fast_reads_a_missing_cache_as_zero944 PASS [ 0.037s] biomcp-cli cache::manager::tests::write_security_tests::estimate_cache_bytes_fast_totals_once_then_reads_the_kept_marker945 PASS [ 0.009s] biomcp-cli cache::migration::tests::body_limit_epoch_rejects_linked_control_files_without_touching_targets946 PASS [ 0.055s] biomcp-cli cache::manager::tests::startup_totals_tests::updating_the_total_replaces_the_record_without_truncating_its_old_inode947 PASS [ 0.065s] biomcp-cli cache::manager::tests::stale_marker_tests::a_stale_serve_carries_the_marker_with_its_policy_age948 PASS [ 0.065s] biomcp-cli cache::manager::tests::stale_marker_tests::put_clears_the_marker_so_revalidation_cannot_carry_it949 PASS [ 0.071s] biomcp-cli cache::manager::tests::stale_marker_tests::a_fresh_serve_carries_no_marker950 PASS [ 0.009s] biomcp-cli cache::migration::tests::errors_when_legacy_path_is_a_dangling_symlink951 PASS [ 0.010s] biomcp-cli cache::migration::tests::epoch_cleanup_stops_mutating_after_a_mid_traversal_deadline952 PASS [ 0.038s] biomcp-cli cache::manager::tests::write_security_tests::put_secures_only_its_exact_paths_under_a_permissive_umask953 PASS [ 0.009s] biomcp-cli cache::migration::tests::errors_when_legacy_path_is_not_a_directory954 PASS [ 0.036s] biomcp-cli cache::migration::tests::body_limit_epoch_cleans_its_staging_file_after_an_ordinary_error955 PASS [ 0.036s] biomcp-cli cache::migration::tests::body_limit_epoch_clears_legacy_entries_once956 PASS [ 0.040s] biomcp-cli cache::manager::tests::write_security_tests::successful_put_with_metadata_read_error_fails_closed_with_stable_context957 PASS [ 0.009s] biomcp-cli cache::migration::tests::errors_when_runtime_http_target_is_not_a_directory958 PASS [ 0.041s] biomcp-cli cache::manager::tests::write_security_tests::successful_put_with_missing_metadata_fails_closed_with_stable_context959 PASS [ 0.011s] biomcp-cli cache::migration::tests::errors_when_runtime_http_target_is_a_dangling_symlink960 PASS [ 0.036s] biomcp-cli cache::migration::tests::body_limit_epoch_ignores_crash_orphans_and_later_succeeds961 PASS [ 0.011s] biomcp-cli cache::migration::tests::maintenance_contention_expires_without_partial_migration_and_releases_for_retry962 PASS [ 0.032s] biomcp-cli cache::migration::tests::body_limit_epoch_lock_contention_obeys_variant_article_deadline963 PASS [ 0.011s] biomcp-cli cache::migration::tests::renames_legacy_http_cache_directory_when_only_legacy_dir_exists964 PASS [ 0.035s] biomcp-cli cache::migration::tests::body_limit_epoch_is_concurrent_and_idempotent965 PASS [ 0.011s] biomcp-cli cache::migration::tests::skips_when_legacy_http_cache_directory_is_missing966 PASS [ 0.010s] biomcp-cli cache::migration::tests::skips_when_runtime_http_directory_already_exists967 PASS [ 0.010s] biomcp-cli cache::planner::tests::composite_cleanup_plans_age_then_size_on_one_snapshot968 PASS [ 0.065s] biomcp-cli cache::manager::tests::write_security_tests::contended_constructor_defers_cleanup_until_a_later_uncontended_constructor969 PASS [ 0.010s] biomcp-cli cache::planner::tests::planner_walk_errors_when_content_root_is_not_a_directory970 PASS [ 0.035s] biomcp-cli cache::migration::tests::body_limit_epoch_observes_a_private_temp_and_removes_it_after_publication971 PASS [ 0.045s] biomcp-cli cache::migration::tests::body_limit_epoch_files_are_private_and_existing_modes_are_repaired972 PASS [ 0.069s] biomcp-cli cache::manager::tests::write_security_tests::cold_cache_different_shard_puts_tolerate_common_directory_creation_races973 PASS [ 0.012s] biomcp-cli cache::planner::tests::plan_orphan_gc_selects_only_zero_refcount_blobs974 PASS [ 0.012s] biomcp-cli cache::planner::tests::planner_walk_skips_symlinked_content_entries975 PASS [ 0.013s] biomcp-cli cache::planner::tests::planner_walk_skips_malformed_blob_leaves976 PASS [ 0.013s] biomcp-cli cache::planner::tests::shared_integrity_age_cleanup_only_removes_blob_after_last_reference977 PASS [ 0.012s] biomcp-cli cache::planner::tests::snapshot_cache_errors_when_cache_root_is_not_a_directory978 PASS [ 0.014s] biomcp-cli cache::planner::tests::shared_integrity_size_lru_uses_projected_refcounts_and_oldest_first_tiebreak979 PASS [ 0.014s] biomcp-cli cache::planner::tests::size_lru_ignores_orphan_bytes980 PASS [ 0.069s] biomcp-cli cache::manager::tests::write_security_tests::put_atomically_replaces_a_hostile_content_destination981 PASS [ 0.011s] biomcp-cli cache::planner::tests::snapshot_cache_returns_empty_snapshot_for_uninitialized_cache_root982 PASS [ 0.014s] biomcp-cli cache::planner::tests::size_lru_missing_blob_entries_do_not_displace_live_entries983 PASS [ 0.013s] biomcp-cli cache::planner::tests::snapshot_cache_returns_empty_snapshot_for_missing_cache_root984 PASS [ 0.011s] biomcp-cli cache::private::unix_tests::directory_create_race_revalidates_a_hostile_winner985 PASS [ 0.011s] biomcp-cli cache::private::unix_tests::explicit_whole_tree_maintenance_repairs_an_unrelated_sentinel986 PASS [ 0.016s] biomcp-cli cache::planner::tests::snapshot_cache_includes_orphan_blobs_without_synthesizing_missing_referenced_blobs987 PASS [ 0.011s] biomcp-cli cache::private::unix_tests::unrelated_nested_content_v2_directory_symlink_keeps_skip_behavior988 PASS [ 0.015s] biomcp-cli cache::planner::tests::snapshot_cache_reports_seeded_entries_and_blobs_deterministically989 PASS [ 0.013s] biomcp-cli cache::private::unix_tests::cache_root_basename_never_changes_managed_content_semantics990 PASS [ 0.012s] biomcp-cli cache::private::unix_tests::whole_tree_maintenance_skips_unrelated_links_but_rejects_content_directory_links991 PASS [ 0.011s] biomcp-cli cache::provider_capture::tests::capacity_planner_covers_exact_plus_one_and_stable_ties992 PASS [ 0.012s] biomcp-cli cache::provider_capture::tests::refuses_to_publish_through_a_symlinked_staging_directory993 PASS [ 0.011s] biomcp-cli cli::adverse_event::tests::resolved_device_report_rejects_every_named_section_including_all994 PASS [ 0.011s] biomcp-cli cache::provider_capture::unsupported::tests::absent_capture_store_is_the_only_supported_empty_state995 PASS [ 0.012s] biomcp-cli cache::provider_capture::tests::rejects_symlinked_capture_shards996 PASS [ 0.013s] biomcp-cli cli::adverse_event::tests::get_adverse_event_parses_sections997 PASS [ 0.014s] biomcp-cli cli::adverse_event::tests::search_adverse_event_device_rejects_positional_drug_alias998 PASS [ 0.042s] biomcp-cli cache::migration::tests::synchronous_staging_window_is_deadline_raced_responsive_and_orphan_free999 PASS [ 0.011s] biomcp-cli cli::adverse_event::tests::search_adverse_event_parses_serious_default_and_limit1000 PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_adverse_event_parses_source_filter1001 PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_plan_count_without_source_uses_faers1002 PASS [ 0.013s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_count_for_vaers_source1003 PASS [ 0.017s] biomcp-cli cli::adverse_event::tests::search_plan_accepts_each_route_specific_contract1004 PASS [ 0.034s] biomcp-cli cache::provider_capture::tests::refuses_a_blob_shard_swapped_after_validation_without_writing_outside1005 PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_nondefault_source_for_device1006 PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_nondefault_source_for_recall1007 PASS [ 0.008s] biomcp-cli cli::article::assets::tests::asset_pages_are_stable_and_emit_exact_continuations1008 PASS [ 0.012s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_positional_drug_alias_for_device1009 PASS [ 0.008s] biomcp-cli cli::article::assets::tests::asset_requires_exactly_one_key_and_no_assets_section1010 PASS [ 0.021s] biomcp-cli cli::adverse_event::tests::search_plan_rejects_every_inapplicable_route_filter1011 PASS [ 0.009s] biomcp-cli cli::article::assets::tests::assets_is_standalone_json_only_route1012 PASS [ 0.009s] biomcp-cli cli::article::assets::tests::exact_duplicate_manifest_rows_are_removed_in_order1013 PASS [ 0.007s] biomcp-cli cli::article::fulltext_view::tests::a_single_oversized_line_is_rejected1014 PASS [ 0.009s] biomcp-cli cli::article::dispatch::workflow_tests::article_follow_up_requires_pmid_and_annotations1015 PASS [ 0.011s] biomcp-cli cli::article::fulltext_view::tests::fulltext_views_reject_a_symlink_instead_of_reading_its_target1016 PASS [ 0.011s] biomcp-cli cli::article::fulltext_view::tests::an_open_managed_handle_is_not_redirected_by_path_replacement1017 PASS [ 0.009s] biomcp-cli cli::article::fulltext_view::tests::heading_titles_are_truncated_on_utf8_boundaries1018 PASS [ 0.008s] biomcp-cli cli::article::fulltext_view::tests::line_output_stops_only_at_complete_utf8_lines1019 PASS [ 0.009s] biomcp-cli cli::article::fulltext_view::tests::line_ranges_are_one_based_ordered_and_bounded1020 PASS [ 0.009s] biomcp-cli cli::article::fulltext_view::tests::outline_preserves_duplicate_headings_and_reports_the_cap1021 PASS [ 0.008s] biomcp-cli cli::article::session::tests::capacity_pruning_covers_exact_and_plus_one_limits1022 PASS [ 0.007s] biomcp-cli cli::article::session::tests::capacity_pruning_resolves_ties_stably_in_memory1023 PASS [ 0.007s] biomcp-cli cli::article::session::tests::normalization_removes_search_filler_words_and_deduplicates_terms1024 PASS [ 0.008s] biomcp-cli cli::article::session::tests::overlap_threshold_boundaries1025 PASS [ 0.008s] biomcp-cli cli::article::session::tests::token_validation_accepts_safe_local_labels_and_rejects_unsafe_input1026 PASS [ 0.059s] biomcp-cli cli::adverse_event::tests::search_plan_covers_the_complete_rejected_filter_matrix1027 PASS [ 0.008s] biomcp-cli cli::article::tests::citation_evidence::citation_evidence_markdown_pins_the_unresolved_and_unlinked_states1028 PASS [ 0.010s] biomcp-cli cli::article::tests::diagnostics::article_search_diagnostics_render_only_in_full_detail1029 PASS [ 0.093s] biomcp-cli cache::provider_capture::tests::rejects_a_directory_in_place_of_capture_metadata1030 PASS [ 0.091s] biomcp-cli cache::provider_capture::tests::retained_bytes_counts_every_owned_regular_file1031 PASS [ 0.094s] biomcp-cli cache::provider_capture::tests::rejects_corrupt_bytes_and_removes_unpublished_orphans1032 PASS [ 0.044s] biomcp-cli cli::article::session::tests::malformed_store_recovers_as_empty_and_writes_valid_json1033 PASS [ 0.050s] biomcp-cli cli::article::session::tests::lock_contention_fails_open_without_rewriting_existing_baseline1034 PASS [ 0.108s] biomcp-cli cache::provider_capture::tests::captures_survive_store_restart_then_detect_corruption1035 PASS [ 0.010s] biomcp-cli cli::article::tests::exact_lookup::article_entity_suggestion_uses_alias_reason_and_valid_sections1036 PASS [ 0.014s] biomcp-cli cli::article::tests::exact_lookup::article_search_json_fails_open_when_exact_entity_lookup_returns_none1037 PASS [ 0.010s] biomcp-cli cli::article::tests::exact_lookup::exact_article_keyword_lookup_eligibility_is_keyword_only_and_short1038 PASS [ 0.014s] biomcp-cli cli::article::tests::exact_lookup::article_search_request_typed_filter_skips_exact_lookup1039 PASS [ 0.009s] biomcp-cli cli::article::tests::exact_lookup::graph_markdown_is_exact_for_every_page_shape_and_direction1040 PASS [ 0.009s] biomcp-cli cli::article::tests::exact_lookup::graph_markdown_uses_a_safe_code_span_for_the_shared_command1041 PASS [ 0.008s] biomcp-cli cli::article::tests::filters::article_query_and_debug_filters_include_effective_ranking_context1042 PASS [ 0.013s] biomcp-cli cli::article::tests::exact_lookup::handle_command_rejects_zero_limit_before_backend_lookup1043 PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_query_and_debug_filters_render_default_and_disabled_max_per_source_modes1044 PASS [ 0.017s] biomcp-cli cli::article::tests::exact_lookup::graph_offset_accepts_u64_boundaries_and_rejects_out_of_range_values1045 PASS [ 0.130s] biomcp-cli cache::provider_capture::tests::rejects_oversize_and_invalid_handles1046 PASS [ 0.010s] biomcp-cli cli::article::tests::filters::article_search_request_accepts_semantic_scholar_source1047 PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_search_request_records_author_capable_plan1048 PASS [ 0.008s] biomcp-cli cli::article::tests::filters::article_search_request_records_normalized_cli_intent_and_backend_plan1049 PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_search_request_records_exact_keyword_lookup_intent1050 PASS [ 0.039s] biomcp-cli cli::article::tests::exact_lookup::degraded_article_sources_share_safe_direct_retries_across_zero_row_surfaces1051 PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_search_request_rejects_reserved_keyword_aliases_and_multiword_gene1052 PASS [ 0.009s] biomcp-cli cli::article::tests::filters::article_search_request_rejects_native_keyword_field_syntax1053 PASS [ 0.008s] biomcp-cli cli::article::tests::filters::article_search_request_trims_valid_gene_before_planning1054 PASS [ 0.232s] biomcp-cli cache::manager::tests::startup_totals_tests::start_up_seeds_kept_totals_without_walking_the_tree_again1055 PASS [ 0.084s] biomcp-cli cli::article::session::tests::session_store_records_first_search_then_emits_ordered_loop_suggestions1056 PASS [ 0.010s] biomcp-cli cli::article::tests::filters::build_article_debug_plan_includes_article_type_limitation_note1057 PASS [ 0.010s] biomcp-cli cli::article::tests::filters::partial_keyword_warning_includes_zero_hits_and_explicit_semantic_mode1058 PASS [ 0.011s] biomcp-cli cli::article::tests::filters::partial_keyword_coverage_warns_in_compact_and_full_json1059 PASS [ 0.009s] biomcp-cli cli::article::tests::filters::partial_keyword_warning_uses_exact_coverage_after_public_counts_saturate1060 PASS [ 0.009s] biomcp-cli cli::article::tests::filters::related_article_filters_default_to_relevance_and_safety_flags1061 PASS [ 0.009s] biomcp-cli cli::article::tests::filters::ticket_400_request_command_article_fields_drive_execution_boundaries1062 PASS [ 0.015s] biomcp-cli cli::article::tests::filters::partial_keyword_warning_obeys_non_trigger_boundaries1063 PASS [ 0.009s] biomcp-cli cli::article::tests::filters::truncate_article_annotations_applies_limit_per_bucket1064 PASS [ 0.088s] biomcp-cli cli::article::session::tests::unavailable_loop_ladder_rungs_are_omitted1065 PASS [ 0.012s] biomcp-cli cli::article::tests::help::article_get_pdf_modifier_parses_before_fulltext1066 PASS [ 0.012s] biomcp-cli cli::article::tests::help::article_get_pdf_modifier_parses_after_fulltext1067 PASS [ 0.015s] biomcp-cli cli::article::tests::help::article_asset_paging_modifiers_parse_after_assets1068 PASS [ 0.015s] biomcp-cli cli::article::tests::help::article_full_flag_parses_and_help_explains_compact_default1069 PASS [ 0.236s] biomcp-cli cache::manager::tests::write_security_tests::eviction_waits_for_an_active_cache_operation1070 PASS [ 0.013s] biomcp-cli cli::article::tests::help::article_year_flags_parse_and_expand_to_date_bounds1071 PASS [ 0.015s] biomcp-cli cli::article::tests::help::article_session_flag_parses_and_help_documents_json_loop_breaker1072 PASS [ 0.032s] biomcp-cli cli::article::tests::filters::partial_keyword_coverage_warning_precedes_markdown_table1073 PASS [ 0.014s] biomcp-cli cli::article::tests::help::article_year_flags_conflict_with_explicit_dates1074 PASS [ 0.012s] biomcp-cli cli::article::tests::help::article_year_flags_reject_non_yyyy_values1075 PASS [ 0.011s] biomcp-cli cli::article::tests::json::article_search_json_allows_loop_suggestions_without_sections1076 PASS [ 0.011s] biomcp-cli cli::article::tests::json::article_search_json_includes_query_and_ranking_context1077 PASS [ 0.128s] biomcp-cli cli::article::session::tests::empty_normalized_keyword_resets_baseline_without_loop_suggestions1078 PASS [ 0.013s] biomcp-cli cli::article::tests::help::article_year_max_conflicts_with_date_to1079 PASS [ 0.178s] biomcp-cli cache::provider_capture::tests::refuses_noncanonical_metadata_without_damaging_a_valid_capture1080 PASS [ 0.179s] biomcp-cli cache::provider_capture::tests::cspec_capture_is_unavailable_through_other_clingen_provider_prefixes1081 PASS [ 0.010s] biomcp-cli cli::article::tests::json::compact_article_search_rows_preserve_triage_fields_and_date_warnings1082 PASS [ 0.009s] biomcp-cli cli::article::tests::json::ticket_377_article_renderer_envelope_contracts_json_meta1083 PASS [ 0.010s] biomcp-cli cli::article::tests::json::date_warning_alone_retains_article_search_metadata1084 PASS [ 0.258s] biomcp-cli cache::manager::tests::write_security_tests::concurrent_same_key_puts_keep_metadata_attributable_until_hardening_finishes1085 PASS [ 0.019s] biomcp-cli cli::article::tests::json::article_search_json_emits_structured_exact_entity_suggestions1086 PASS [ 0.135s] biomcp-cli cli::article::session::tests::expired_or_disjoint_session_state_does_not_emit_loop_suggestions1087 PASS [ 0.132s] biomcp-cli cli::article::session::tests::maintenance_physically_removes_only_expired_sessions1088 PASS [ 0.010s] biomcp-cli cli::cache::tests::build_cache_stats_report_counts_orphans_and_includes_all_blob_bytes1089 PASS [ 0.022s] biomcp-cli cli::article::tests::json::article_search_json_next_commands_preserve_source_filter1090 PASS [ 0.010s] biomcp-cli cli::cache::tests::cache_stats_report_json_serializes_env_and_file_origins_lowercase1091 PASS [ 0.011s] biomcp-cli cli::cache::tests::build_cache_stats_report_uses_index_entry_timestamps_only_for_age_range1092 PASS [ 0.010s] biomcp-cli cli::cache::tests::cache_stats_report_markdown_is_heading_free_and_stable1093 PASS [ 0.012s] biomcp-cli cli::cache::tests::build_cache_stats_report_empty_snapshot_has_zero_counts_null_age_and_default_origins1094 PASS [ 0.014s] biomcp-cli cli::author::tests::author_papers_accepts_the_full_flag_with_limit_and_offset1095 PASS [ 0.017s] biomcp-cli cli::author::tests::author_grammar_requires_named_query_and_omits_affiliation1096 PASS [ 0.020s] biomcp-cli cli::article::tests::next_commands::article_search_json_keeps_exact_variant_follow_up_on_empty_page1097 PASS [ 0.011s] biomcp-cli cli::cache::tests::collect_cache_stats_report_calls_snapshot_once_for_resolved_http_path1098 PASS [ 0.197s] biomcp-cli cache::provider_capture::tests::expires_captures_and_republishes_received_bytes1099 PASS [ 0.010s] biomcp-cli cli::cache::tests::render_path_for_config_appends_http_to_resolved_cache_root1100 PASS [ 0.009s] biomcp-cli cli::cache::tests::render_path_for_config_does_not_create_or_migrate_directories1101 PASS [ 0.009s] biomcp-cli cli::cache::tests::render_path_for_config_keeps_relative_cache_roots_relative1102 PASS [ 0.012s] biomcp-cli cli::cache::tests::managed_clear_removes_the_citation_evidence_sidecar_and_sums_its_bytes1103 PASS [ 0.010s] biomcp-cli cli::chart::github_287_tests::a_missing_chart_exits_nonzero1104 PASS [ 0.012s] biomcp-cli cli::chart::tests::chart_help_lists_descriptions_for_all_chart_topics1105 PASS [ 0.013s] biomcp-cli cli::chart::tests::chart_subcommand_parses_heatmap_topic1106 PASS [ 0.029s] biomcp-cli cli::article::tests::outage::zero_rows_with_every_source_answered_keeps_exit_zero_complete_true1107 PASS [ 0.009s] biomcp-cli cli::chart::tests::show_returns_heatmap_doc1108 PASS [ 0.012s] biomcp-cli cli::chart::tests::chart_subcommand_parses_stacked_bar_topic1109 PASS [ 0.011s] biomcp-cli cli::chart::tests::chart_subcommand_parses_survival_topic1110 PASS [ 0.014s] biomcp-cli cli::chart::tests::chart_subcommand_parses_scatter_topic1111 PASS [ 0.008s] biomcp-cli cli::chart::tests::show_returns_stacked_bar_doc1112 PASS [ 0.010s] biomcp-cli cli::chart::tests::show_returns_scatter_doc1113 PASS [ 0.011s] biomcp-cli cli::chart::tests::chart_subcommand_parses_waterfall_topic1114 PASS [ 0.012s] biomcp-cli cli::chart::tests::chart_subcommand_parses_violin_topic1115 PASS [ 0.009s] biomcp-cli cli::chart::tests::show_returns_waterfall_doc1116 PASS [ 0.010s] biomcp-cli cli::diagnostic::tests::diagnostic_json_compacts_nested_lists_and_full_restores_them1117 PASS [ 0.014s] biomcp-cli cli::diagnostic::tests::get_diagnostic_help_mentions_supported_sections1118 PASS [ 0.013s] biomcp-cli cli::diagnostic::tests::handle_get_honors_trailing_json_flag_after_sections1119 PASS [ 0.011s] biomcp-cli cli::diagnostic::tests::search_args_reject_zero_limit_before_gtr_lookup1120 PASS [ 0.013s] biomcp-cli cli::diagnostic::tests::handle_search_json_omits_suggestions_for_high_offset_empty_page1121 PASS [ 0.012s] biomcp-cli cli::diagnostic::tests::search_diagnostic_help_mentions_source_aware_examples1122 PASS [ 0.013s] biomcp-cli cli::diagnostic::tests::handle_search_json_includes_suggestions_for_true_zero_result1123 PASS [ 0.227s] biomcp-cli cache::provider_capture::tests::captures_and_reads_exact_bytes_with_content_addressed_dedupe1124 PASS [ 0.013s] biomcp-cli cli::diagnostic::tests::search_diagnostic_parses_filter_only_flags1125 PASS [ 0.017s] biomcp-cli cli::discover::tests::discover_search_with_resolved_concepts_is_unchanged1126 PASS [ 0.008s] biomcp-cli cli::disease::dispatch::workflow_tests::disease_trials_limit_one_avoids_ctgov_total_count1127 PASS [ 0.020s] biomcp-cli cli::discover::tests::discover_inline_search_matches_the_suggested_command_requests1128 PASS [ 0.010s] biomcp-cli cli::disease::tests::disease_search_json_includes_fallback_meta_and_provenance1129 PASS [ 0.010s] biomcp-cli cli::disease::tests::disease_search_json_includes_next_commands_for_direct_hits1130 PASS [ 0.010s] biomcp-cli cli::disease::tests::disease_search_json_preserves_fallback_with_workflow_meta1131 PASS [ 0.012s] biomcp-cli cli::disease::tests::disease_trials_parses_source_and_limit1132 PASS [ 0.012s] biomcp-cli cli::disease::tests::get_disease_accepts_explicit_multi_word_name1133 PASS [ 0.013s] biomcp-cli cli::disease::tests::disease_trials_limit_rejects_too_big_before_lookup1134 PASS [ 0.024s] biomcp-cli cli::discover::tests::discover_search_without_concepts_runs_the_suggested_article_search1135 PASS [ 0.018s] biomcp-cli cli::discover::tests::discover_without_search_keeps_the_note_only_response1136 PASS [ 0.012s] biomcp-cli cli::disease::tests::get_disease_help_includes_when_to_use_guidance1137 PASS [ 0.014s] biomcp-cli cli::disease::tests::related_limit_rejects_zero_before_lookup1138 PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_adverse_events_parses_advertised_faers_filters1139 PASS [ 0.074s] biomcp-cli cli::article::tests::json::article_session_suggestions_flow_into_search_json_after_overlap1140 PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_bare_name_parses_as_external_subcommand1141 PASS [ 0.011s] biomcp-cli cli::drug::tests::drug_interactions_help_mentions_ddinter_bundle_and_truthful_empty_state1142 PASS [ 0.015s] biomcp-cli cli::drug::tests::drug_adverse_events_help_lists_count_and_filter_parity1143 PASS [ 0.016s] biomcp-cli cli::drug::alias_alignment_tests::public_region_aliases_are_aligned_across_parser_help_list_and_docs1144 PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_trials_help_mentions_alias_expansion_and_opt_out1145 PASS [ 0.013s] biomcp-cli cli::drug::tests::drug_interactions_parse_anchor_name1146 PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_trials_parse_no_alias_expand1147 PASS [ 0.012s] biomcp-cli cli::drug::tests::drug_trials_reject_no_alias_expand_for_nci_source1148 PASS [ 0.012s] biomcp-cli cli::drug::tests::get_drug_accepts_explicit_multi_word_name1149 PASS [ 0.068s] biomcp-cli cli::cache::tests::cache_stats_report_separates_provider_capture_namespace_bytes1150 PASS [ 0.012s] biomcp-cli cli::drug::tests::get_drug_parses_ema_region_alias_as_eu1151 PASS [ 0.013s] biomcp-cli cli::drug::tests::get_drug_help_mentions_raw_label_mode1152 PASS [ 0.009s] biomcp-cli cli::drug::tests::get_drug_region_respects_explicit_region1153 PASS [ 0.010s] biomcp-cli cli::drug::tests::get_drug_region_keeps_non_regulatory_no_flag_shapes_on_us_default1154 PASS [ 0.047s] biomcp-cli cli::discover::tests::discover_article_section_matches_the_direct_render_apart_from_the_header1155 PASS [ 0.014s] biomcp-cli cli::drug::tests::get_drug_help_lists_region_flag_and_examples1156 PASS [ 0.012s] biomcp-cli cli::drug::tests::get_drug_region_defaults_to_all_for_regulatory_only_queries1157 PASS [ 0.010s] biomcp-cli cli::drug::tests::json::drug_search_json_all_region_carries_the_who_degrade_note1158 PASS [ 0.014s] biomcp-cli cli::drug::tests::get_drug_parses_region_split_form1159 PASS [ 0.016s] biomcp-cli cli::drug::tests::get_drug_raw_rejects_non_label_sections1160 PASS [ 0.011s] biomcp-cli cli::drug::tests::json::drug_search_json_all_region_uses_unified_regions_envelope1161 PASS [ 0.012s] biomcp-cli cli::drug::tests::json::drug_search_json_all_region_keeps_empty_buckets1162 PASS [ 0.267s] biomcp-cli cache::provider_capture::tests::concurrent_same_content_captures_publish_one_complete_record1163 PASS [ 0.011s] biomcp-cli cli::drug::tests::json::drug_search_json_preserves_region_envelope_with_workflow_meta1164 PASS [ 0.011s] biomcp-cli cli::drug::tests::json::drug_search_json_single_region_keeps_api_identifier_when_present1165 PASS [ 0.014s] biomcp-cli cli::drug::tests::json::drug_search_json_orders_match_tiers_stably_within_one_region1166 PASS [ 0.010s] biomcp-cli cli::drug::tests::search_drug_region_defaults_to_us_for_structured_queries1167 PASS [ 0.011s] biomcp-cli cli::drug::tests::search_drug_region_allows_explicit_who_for_structured_queries1168 PASS [ 0.011s] biomcp-cli cli::drug::tests::search_drug_region_defaults_to_all_for_name_only_queries1169 PASS [ 0.012s] biomcp-cli cli::drug::tests::json::drug_search_json_single_region_keeps_selected_bucket_and_who_fields1170 PASS [ 0.013s] biomcp-cli cli::drug::tests::json::drug_search_json_single_region_keeps_empty_selected_bucket_and_omits_meta1171 PASS [ 0.013s] biomcp-cli cli::drug::tests::json::drug_search_json_single_region_omits_get_follow_up_for_vaccine_results1172 PASS [ 0.015s] biomcp-cli cli::drug::tests::search_drug_help_mentions_default_all_and_structured_filter_note1173 PASS [ 0.015s] biomcp-cli cli::drug::tests::search_drug_parses_who_product_type_filter1174 PASS [ 0.012s] biomcp-cli cli::drug::tests::search_drug_region_rejects_explicit_non_us_for_structured_queries1175 PASS [ 0.013s] biomcp-cli cli::drug::tests::search_plan_rejects_non_us_structured_region1176 PASS [ 0.010s] biomcp-cli cli::gene::related::tests::gene_trials_use_literal_biomarker_and_avoid_limit_one_count1177 PASS [ 0.014s] biomcp-cli cli::drug::tests::search_plan_rejects_product_type_without_explicit_who_region1178 PASS [ 0.014s] biomcp-cli cli::drug::tests::search_plan_rejects_structured_who_vaccine_requests1179 PASS [ 0.013s] biomcp-cli cli::gene::tests::gene_bare_symbol_parses_as_external_subcommand1180 PASS [ 0.011s] biomcp-cli cli::gene::tests::handle_get_gene_alias_fallback_returns_markdown_suggestion1181 PASS [ 0.013s] biomcp-cli cli::gene::tests::gene_cspec_document_parses_as_nested_raw_subcommand1182 PASS [ 0.011s] biomcp-cli cli::gwas::dispatch::tests::gwas_pagination_human_guidance_distinguishes_all_three_states1183 PASS [ 0.014s] biomcp-cli cli::gene::tests::gene_get_alias_parses_as_definition_subcommand1184 PASS [ 0.010s] biomcp-cli cli::gwas::dispatch::tests::gwas_pagination_json_has_only_the_followable_contract1185 PASS [ 0.010s] biomcp-cli cli::gwas::tests::search_args_reject_windows_beyond_the_provider_budget_without_panicking1186 PASS [ 0.014s] biomcp-cli cli::gene::tests::get_gene_help_includes_when_to_use_guidance1187 PASS [ 0.014s] biomcp-cli cli::gene::tests::gene_pathways_parses_limit_and_offset1188 PASS [ 0.018s] biomcp-cli cli::gene::tests::gene_cspec_files_is_a_flag_on_version_or_capture_selection1189 PASS [ 0.014s] biomcp-cli cli::gwas::tests::region_is_not_an_advertised_or_accepted_gwas_filter1190 PASS [ 0.009s] biomcp-cli cli::health::http::probe_override_tests::a_non_loopback_base_with_a_loopback_signal_is_rejected1191 PASS [ 0.013s] biomcp-cli cli::gwas::tests::search_args_reject_zero_limit_before_backend_lookup1192 PASS [ 0.012s] biomcp-cli cli::gwas::tests::search_gwas_parses_positional_query1193 PASS [ 0.009s] biomcp-cli cli::health::http::probe_override_tests::an_allowed_base_keeps_the_path_and_query1194 PASS [ 0.010s] biomcp-cli cli::health::http::probe_override_tests::a_non_loopback_probe_base_is_never_allowed1195 PASS [ 0.009s] biomcp-cli cli::health::http::probe_override_tests::the_exact_loopback_origin_the_signal_names_is_allowed1196 PASS [ 0.010s] biomcp-cli cli::health::http::probe_override_tests::an_unparseable_base_leaves_the_catalog_url_unchanged1197 PASS [ 0.010s] biomcp-cli cli::health::tests::catalog::gencc_health_uses_dedicated_head_contract1198 PASS [ 0.010s] biomcp-cli cli::health::tests::catalog::fda_orphan_health_has_dedicated_form_probe1199 PASS [ 0.010s] biomcp-cli cli::health::tests::catalog::health_inventory_includes_all_expected_sources1200 PASS [ 0.011s] biomcp-cli cli::health::tests::catalog::markdown_shows_new_affects_mappings1201 PASS [ 0.009s] biomcp-cli cli::health::tests::catalog::nci_health_probe_uses_keyword_query1202 PASS [ 0.012s] biomcp-cli cli::health::tests::catalog::clingen_health_descriptors_and_affects_remain_distinct1203 PASS [ 0.009s] biomcp-cli cli::health::tests::catalog::pharmgkb_health_row_probes_and_explains_the_clinpgx_move1204 PASS [ 0.021s] biomcp-cli cli::gwas::tests::search_args_validate_probability_threshold_before_backend_lookup1205 PASS [ 0.009s] biomcp-cli cli::health::tests::http::key_gated_source_is_excluded_when_env_missing1206 PASS [ 0.010s] biomcp-cli cli::health::tests::health_json_exposes_automation_exit_policy1207 PASS [ 0.010s] biomcp-cli cli::health::tests::http::empty_key_is_treated_as_missing1208 PASS [ 0.010s] biomcp-cli cli::health::tests::http::excluded_key_gated_row_serializes_key_configured_false1209 PASS [ 0.011s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_authed_semantic_scholar_as_configured1210 PASS [ 0.010s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_authenticated_429_as_error1211 PASS [ 0.015s] biomcp-cli cli::health::tests::fda::fda_orphan_redirect_answer_names_the_block_in_the_row1212 PASS [ 0.010s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_unauthenticated_429_as_unavailable1213 PASS [ 0.011s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_unauthed_semantic_scholar_as_healthy1214 PASS [ 0.010s] biomcp-cli cli::health::tests::http::optional_auth_get_reports_unauthenticated_non_429_as_error1215 PASS [ 0.011s] biomcp-cli cli::health::tests::http::orcid_row::a_configured_token_probes_the_public_person_endpoint1216 PASS [ 0.019s] biomcp-cli cli::health::tests::fda::fda_orphan_fixture_probe_reconciles_rows_counts_and_fail_policy1217 PASS [ 0.010s] biomcp-cli cli::health::tests::http::vaers_query_error_reports_error_row_with_affects1218 PASS [ 0.012s] biomcp-cli cli::health::tests::http::orcid_row::an_invalid_nonblank_token_is_an_error_row_without_any_request1219 PASS [ 0.009s] biomcp-cli cli::health::tests::local::check_cache_dir_config_error_matches_pinned_contract1220 PASS [ 0.014s] biomcp-cli cli::health::tests::http::orcid_row::a_missing_token_probes_the_public_person_endpoint_unauthenticated1221 PASS [ 0.010s] biomcp-cli cli::health::tests::http::vaers_query_success_reports_healthy_row1222 PASS [ 0.010s] biomcp-cli cli::health::tests::local::check_cache_limits_warns_when_disk_floor_is_violated1223 PASS [ 0.013s] biomcp-cli cli::health::tests::local::check_cache_dir_success_row_uses_resolved_path_and_ok_contract1224 PASS [ 0.014s] biomcp-cli cli::health::tests::local::check_cache_limits_reports_snapshot_errors_as_error_rows1225 PASS [ 0.010s] biomcp-cli cli::health::tests::local::check_cache_limits_within_limits_returns_healthy_row1226 PASS [ 0.010s] biomcp-cli cli::health::tests::local::cvx_local_data_not_configured_when_default_root_is_empty1227 PASS [ 0.011s] biomcp-cli cli::health::tests::local::check_cache_limits_warns_when_referenced_bytes_exceed_max_size1228 PASS [ 0.011s] biomcp-cli cli::health::tests::local::cvx_local_data_errors_when_default_root_is_partial1229 PASS [ 0.010s] biomcp-cli cli::health::tests::local::cvx_local_data_reports_configured_stale_when_env_root_is_complete_but_old1230 PASS [ 0.012s] biomcp-cli cli::health::tests::local::cvx_local_data_reports_available_when_default_root_is_complete1231 PASS [ 0.010s] biomcp-cli cli::health::tests::local::ema_local_data_errors_when_default_root_is_partial1232 PASS [ 0.011s] biomcp-cli cli::health::tests::local::ddinter_local_data_reports_available_when_default_root_is_complete1233 PASS [ 0.010s] biomcp-cli cli::health::tests::local::ema_local_data_json_reports_error_row_with_affects1234 PASS [ 0.011s] biomcp-cli cli::health::tests::local::ema_local_data_errors_when_env_root_is_missing_files1235 PASS [ 0.010s] biomcp-cli cli::health::tests::local::ema_local_data_not_configured_when_default_root_is_empty1236 PASS [ 0.011s] biomcp-cli cli::health::tests::local::ema_local_data_json_reports_healthy_row_without_affects1237 PASS [ 0.011s] biomcp-cli cli::health::tests::local::ema_local_data_reports_available_when_default_root_is_complete1238 PASS [ 0.012s] biomcp-cli cli::health::tests::local::ema_local_data_reports_configured_when_env_root_is_complete1239 PASS [ 0.010s] biomcp-cli cli::health::tests::local::gtr_local_data_reports_available_when_default_root_is_complete1240 PASS [ 0.011s] biomcp-cli cli::health::tests::local::gtr_local_data_errors_when_default_root_is_partial1241 PASS [ 0.011s] biomcp-cli cli::health::tests::local::gtr_local_data_not_configured_when_default_root_is_empty1242 PASS [ 0.010s] biomcp-cli cli::health::tests::local::mcp_local_rows_serialize_and_render_without_local_paths1243 PASS [ 0.012s] biomcp-cli cli::health::tests::local::gtr_local_data_reports_configured_stale_when_env_root_is_complete_but_old1244 PASS [ 0.010s] biomcp-cli cli::health::tests::local::probe_cache_dir_failure_preserves_error_contract1245 PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_ivd_local_data_errors_when_env_root_is_missing_file1246 PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_ivd_local_data_not_configured_when_default_root_is_empty1247 PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_ivd_local_data_reports_available_when_default_root_is_complete1248 PASS [ 0.014s] biomcp-cli cli::health::tests::local::mcp_cache_dir_row_names_the_cache_without_its_path1249 PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_ivd_local_data_reports_configured_stale_when_env_root_is_complete_but_old1250 PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_ivd_local_data_reports_configured_when_env_root_is_complete1251 PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_local_data_errors_when_env_root_is_missing_file1252 PASS [ 0.009s] biomcp-cli cli::health::tests::local::who_local_data_errors_when_only_api_file_is_missing1253 PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_local_data_errors_when_only_vaccine_file_is_missing1254 PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_local_data_reports_configured_stale_when_env_root_is_complete_but_old1255 PASS [ 0.009s] biomcp-cli cli::health::tests::local::who_local_data_reports_default_path_stale_when_complete_but_old1256 PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_local_data_not_configured_when_default_root_is_empty1257 PASS [ 0.011s] biomcp-cli cli::health::tests::local::who_local_data_reports_available_when_default_root_is_complete1258 PASS [ 0.010s] biomcp-cli cli::health::tests::local::who_local_data_reports_configured_when_env_root_is_complete1259 PASS [ 0.009s] biomcp-cli cli::health::tests::runner::all_healthy_includes_warning_and_excluded_rows1260 PASS [ 0.009s] biomcp-cli cli::health::tests::requested_health_sources_are_exact_case_insensitive_and_deduplicated1261 PASS [ 0.010s] biomcp-cli cli::health::tests::runner::empty_report_counts_reconcile1262 PASS [ 0.010s] biomcp-cli cli::health::tests::runner::keyed_row_serializes_raw_status_with_key_configured_true1263 PASS [ 0.009s] biomcp-cli cli::health::tests::runner::markdown_omits_affects_column_when_all_healthy1264 PASS [ 0.008s] biomcp-cli cli::health::tests::runner::markdown_shows_affects_column_when_present1265 PASS [ 0.011s] biomcp-cli cli::health::tests::runner::markdown_decorates_keyed_error_rows_without_changing_status1266 PASS [ 0.011s] biomcp-cli cli::health::tests::runner::markdown_decorates_keyed_success_rows_without_changing_status1267 PASS [ 0.009s] biomcp-cli cli::health::tests::runner::public_row_omits_key_configured_in_json1268 PASS [ 0.010s] biomcp-cli cli::health::tests::runner::report_counts_use_probe_class_not_status_prefixes1269 PASS [ 0.010s] biomcp-cli cli::health::tests::runner::not_built_row_serializes_fact_and_preserves_markdown1270 PASS [ 0.011s] biomcp-cli cli::health::tests::runner::markdown_summary_reports_ok_error_excluded_and_warning_counts1271 PASS [ 0.011s] biomcp-cli cli::health::tests::unknown_health_source_returns_bounded_canonical_suggestions1272 PASS [ 0.011s] biomcp-cli cli::health::tests::runner::timed_out_probe_returns_error_row_with_timeout_latency1273 PASS [ 0.011s] biomcp-cli cli::install::tests::missing_malformed_mismatched_and_symlink_receipts_fail_closed1274 PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_article_page_documents_exact_author_filtering1275 PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_batch_and_enrich_pages_exist1276 PASS [ 0.011s] biomcp-cli cli::list::tests::pages::list_adverse_event_documents_source_free_count_invocation1277 PASS [ 0.011s] biomcp-cli cli::list::tests::pages::list_article_page_mentions_entity_aware_followups1278 PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_discover_page_exists1279 PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_diagnostic_page_exists1280 PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_discover_page_mentions_gene_topic_article_followup1281 PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_discover_page_mentions_empty_and_low_confidence_article_fallbacks1282 PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_discover_page_stays_terminal_friendly1283 PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_discover_page_mentions_relational_redirect_and_supported_exceptions1284 PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_discover_page_states_exact_paging_and_output_bounds1285 PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_disease_mentions_phenotype_search_supports_symptom_phrases1286 PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_disease_mentions_opt_in_sections1287 PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_drug_describes_omitted_region_behavior1288 PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_drug_documents_raw_label_mode1289 PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_entity_pages_drop_stale_skill_sections1290 PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_pathway_describes_source_aware_sections1291 PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_root_entity_verbs_match_public_grammar1292 PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_gene_mentions_new_gene_sections1293 PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_root_includes_routing_table_and_quickstart1294 PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_root_primary_discovery_lines_stay_terminal_friendly1295 PASS [ 0.030s] biomcp-cli cli::install::tests::checksum_mismatch_and_package_manager_paths_fail_with_safe_guidance1296 PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_search_all_page_mentions_counts_only_json_contract1297 PASS [ 0.008s] biomcp-cli cli::list::tests::pages::list_search_pages_document_search_json_next_commands1298 PASS [ 0.014s] biomcp-cli cli::list::tests::pages::list_root_json_includes_gettable_and_search_only_entities1299 PASS [ 0.016s] biomcp-cli cli::list::tests::pages::list_json_is_a_typed_catalog_instead_of_rendered_markdown_fragments1300 PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_study_page_exists1301 PASS [ 0.033s] biomcp-cli cli::install::tests::symlinked_executable_or_receipt_never_grants_ownership1302 PASS [ 0.009s] biomcp-cli cli::list::tests::pages::list_suggest_page_is_not_valid1303 PASS [ 0.007s] biomcp-cli cli::list::tests::pages::list_variant_explains_alphagenome_availability_for_this_build1304 PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_trial_and_article_include_missing_flags1305 PASS [ 0.014s] biomcp-cli cli::list::tests::pages::list_skill_json_contains_real_commands_without_duplicates1306 PASS [ 0.010s] biomcp-cli cli::list::tests::pages::list_variant_json_keeps_helper_commands_discoverable1307 PASS [ 0.009s] biomcp-cli cli::list::tests::pages::phenotype_list_mentions_hpo_ids_and_symptom_phrases1308 PASS [ 0.010s] biomcp-cli cli::list::tests::pages::phenotype_and_gwas_include_workflow_tips1309 PASS [ 0.010s] biomcp-cli cli::list::tests::router::list_skill_alias_routes_to_skill_listing1310 PASS [ 0.009s] biomcp-cli cli::list::tests::router::unknown_entity_lists_new_valid_entities1311 PASS [ 0.009s] biomcp-cli cli::mcp_config::tests::absolute_path_command_stays_valid_json1312 PASS [ 0.010s] biomcp-cli cli::mcp_config::tests::codex_absolute_path_is_shell_safe1313 PASS [ 0.009s] biomcp-cli cli::mcp_config::tests::no_client_output_lists_clients_and_examples1314 PASS [ 0.010s] biomcp-cli cli::mcp_config::tests::vscode_uses_the_servers_key_it_actually_reads1315 PASS [ 0.011s] biomcp-cli cli::mcp_config::tests::codex_uses_default_biomcp_serve_invocation1316 PASS [ 0.011s] biomcp-cli cli::mcp_config::tests::json_clients_use_biomcp_serve_by_default1317 PASS [ 0.011s] biomcp-cli cli::outcome::probe_tests::runtime_split::a_one_shot_drop_does_not_wait_for_background_blocking_work1318 PASS [ 0.008s] biomcp-cli cli::outcome::tests::variant_article_disposition_survives_the_raw_mcp_execution_seam1319 PASS [ 0.010s] biomcp-cli cli::outcome::tests::mcp_keeps_text_from_a_nonzero_structured_outcome1320 PASS [ 0.012s] biomcp-cli cli::outcome::probe_tests::the_dispatch_future_stays_under_the_size_ceiling1321 PASS [ 0.010s] biomcp-cli cli::outcome::tests::non_utf8_binary_outcome_is_never_converted_to_mcp_text1322 PASS [ 0.013s] biomcp-cli cli::outcome::probe_tests::runtime_split::the_mcp_path_builds_no_one_shot_runtime1323 PASS [ 0.008s] biomcp-cli cli::pathway::tests::pathway_trial_fallback_allows_no_match_on_first_page1324 PASS [ 0.009s] biomcp-cli cli::pathway::tests::pathway_trial_fallback_skips_offset_or_known_matches1325 PASS [ 0.014s] biomcp-cli cli::outcome::probe_tests::the_run_fallthrough_future_stays_under_the_size_ceiling1326 PASS [ 0.013s] biomcp-cli cli::pathway::tests::pathway_help_describes_source_aware_section_contract1327 PASS [ 0.012s] biomcp-cli cli::pathway::tests::pathway_trials_parse_source_and_limit1328 PASS [ 0.065s] biomcp-cli cli::health::tests::runner::health_probes_respect_concurrency_limit_and_source_order1329 PASS [ 0.012s] biomcp-cli cli::pathway::tests::search_pathway_help_describes_conditional_query_contract1330 PASS [ 0.012s] biomcp-cli cli::pathway::tests::related_limit_rejects_zero_before_lookup1331 PASS [ 0.010s] biomcp-cli cli::phenotype::tests::pagination_footer_can_offer_local_continuation_and_warn_about_provider_ceiling1332 PASS [ 0.010s] biomcp-cli cli::phenotype::tests::pagination_footer_keeps_ceiling_warning_on_final_local_page1333 PASS [ 0.011s] biomcp-cli cli::pgx::tests::search_pgx_parses_positional_query1334 PASS [ 0.014s] biomcp-cli cli::pathway::tests::search_pathway_limit_rejects_too_big_with_range1335 PASS [ 0.013s] biomcp-cli cli::pgx::tests::search_args_reject_zero_limit_before_backend_lookup1336 PASS [ 0.012s] biomcp-cli cli::phenotype::tests::search_args_reject_a_window_beyond_the_provider_budget1337 PASS [ 0.213s] biomcp-cli cli::cache::tests::explicit_cache_maintenance_waits_for_an_active_cache_operation1338 PASS [ 0.399s] biomcp-cli cache::provider_capture::tests::enforces_namespace_capacity_with_deterministic_lru_eviction1339 PASS [ 0.016s] biomcp-cli cli::pathway::tests::search_pathway_requires_query_unless_top_level1340 PASS [ 0.013s] biomcp-cli cli::phenotype::tests::search_args_reject_zero_limit_before_backend_lookup1341 PASS [ 0.064s] biomcp-cli cli::install::tests::valid_receipt_proves_ownership_and_pending_new_state_recovers1342 PASS [ 0.013s] biomcp-cli cli::phenotype::tests::search_phenotype_help_mentions_hpo_ids_and_symptom_phrases1343 PASS [ 0.012s] biomcp-cli cli::protein::tests::protein_structures_parses_offset_flag1344 PASS [ 0.013s] biomcp-cli cli::protein::tests::search_args_reject_too_large_limit1345 PASS [ 0.013s] biomcp-cli cli::protein::tests::search_protein_help_shows_limit_range1346 PASS [ 0.015s] biomcp-cli cli::protein::tests::search_args_reject_next_page_with_offset1347 PASS [ 0.011s] biomcp-cli cli::response_contract::tests::structured_error_finalizer_adds_paths_without_overwriting_values1348 PASS [ 0.011s] biomcp-cli cli::response_contract::tests::structured_error_finalizer_leaves_unowned_shapes_unchanged1349 PASS [ 0.017s] biomcp-cli cli::protein::tests::review_flags_are_explicit_and_conflicting_spellings_fail1350 PASS [ 0.012s] biomcp-cli cli::response_contract::tests::variant_article_batch_errors_keep_the_stable_envelope1351 PASS [ 0.011s] biomcp-cli cli::response_contract::tests::variant_article_item_failures_preserve_aggregate_state_and_followups1352 PASS [ 0.011s] biomcp-cli cli::search_all::tests::dispatch::merge_trial_backfill_rows_respects_limit_with_preferred_only1353 PASS [ 0.011s] biomcp-cli cli::search_all::tests::dispatch::merge_trial_backfill_rows_preserves_preferred_order_and_dedupes1354 PASS [ 0.010s] biomcp-cli cli::search_all::tests::dispatch::section_timeout_uses_article_specific_budget1355 PASS [ 0.011s] biomcp-cli cli::search_all::tests::dispatch::section_fetch_limit_reduces_only_safe_counts_only_sections1356 PASS [ 0.010s] biomcp-cli cli::search_all::tests::dispatch::trial_recruiting_filter_note_names_the_failure_and_the_widening1357 PASS [ 0.010s] biomcp-cli cli::search_all::tests::format::counts_only_json_projection_preserves_debug_plan1358 PASS [ 0.010s] biomcp-cli cli::search_all::tests::format::counts_only_json_projection_reports_truthful_exact_counts1359 PASS [ 0.008s] biomcp-cli cli::search_all::tests::format::dedupe_gwas_rows_keeps_lowest_p_value1360 PASS [ 0.010s] biomcp-cli cli::search_all::tests::format::counts_only_json_uses_a_lower_bound_when_no_exact_total_exists1361 PASS [ 0.009s] biomcp-cli cli::search_all::tests::format::format_search_all_p_value_removes_float_artifacts1362 PASS [ 0.009s] biomcp-cli cli::search_all::tests::format::refine_drug_results_filters_metabolites_when_parent_like_match_exists1363 PASS [ 0.009s] biomcp-cli cli::search_all::tests::format::refine_drug_results_keeps_metabolites_when_no_parent_like_match1364 PASS [ 0.010s] biomcp-cli cli::search_all::tests::format::variant_significance_rank_matches_clinical_priority1365 PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::canonical_article_command_dedupes_shared_disease_keyword_token1366 PASS [ 0.011s] biomcp-cli cli::search_all::tests::format::to_json_array_preserves_article_source_and_ranking_metadata1367 PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::canonical_article_command_keeps_distinct_disease_and_keyword_filters1368 PASS [ 0.009s] biomcp-cli cli::search_all::tests::links::canonical_article_command_quotes_apostrophe_keyword_for_shell_safety1369 PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::canonical_article_command_keeps_keyword_only_search1370 PASS [ 0.024s] biomcp-cli cli::search_all::tests::dispatch::a_degraded_trial_section_renders_the_note_and_drops_count_exact1371 PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::canonical_drug_command_stays_typed_only_with_gene_anchor1372 PASS [ 0.008s] biomcp-cli cli::search_all::tests::links::top_get_command_prefers_parent_like_salt_name_over_metabolites1373 PASS [ 0.008s] biomcp-cli cli::search_all::tests::links::top_get_command_skips_civic_variant_ids1374 PASS [ 0.010s] biomcp-cli cli::search_all::tests::links::top_get_command_prefers_parent_drug_name1375 PASS [ 0.026s] biomcp-cli cli::search_all::tests::dispatch::search_all_pathway_section_surfaces_sanitized_wikipathways_error1376 PASS [ 0.032s] biomcp-cli cli::response_contract::tests::argument_dependent_and_keyless_contract_inventory1377 PASS [ 0.011s] biomcp-cli cli::search_all::tests::links::canonical_variant_command_preserves_unparsed_anchor1378 PASS [ 0.013s] biomcp-cli cli::search_all::tests::links::canonical_trial_command_stays_typed_only_with_distinct_keyword1379 PASS [ 0.011s] biomcp-cli cli::search_all::tests::plan::article_filters_follow_keyword_dependent_ranking_defaults1380 PASS [ 0.011s] biomcp-cli cli::search_all::tests::plan::build_dispatch_plan_keyword_only_routes_to_article1381 PASS [ 0.012s] biomcp-cli cli::search_all::tests::plan::build_dispatch_plan_gene_only_matches_contract1382 PASS [ 0.011s] biomcp-cli cli::search_all::tests::plan::build_result_plan_keyword_article_leg_excludes_litsense2_default_source1383 PASS [ 0.011s] biomcp-cli cli::search_all::tests::plan::build_result_plan_marks_shared_disease_keyword_orientation_fallback1384 PASS [ 0.010s] biomcp-cli cli::search_all::tests::plan::build_result_plan_marks_ungrounded_disease_fallback_on_article_leg1385 PASS [ 0.012s] biomcp-cli cli::search_all::tests::plan::build_result_plan_includes_fallback_and_article_matched_sources1386 PASS [ 0.010s] biomcp-cli cli::search_all::tests::plan::preparation_keeps_literal_colons_and_valid_gene_tokens1387 PASS [ 0.010s] biomcp-cli cli::search_all::tests::plan::preparation_rejects_article_owned_keyword_and_gene_shapes_before_fanout1388 PASS [ 0.013s] biomcp-cli cli::search_all::tests::plan::build_result_plan_skips_ungrounded_marker_when_disease_leg_errors1389 PASS [ 0.012s] biomcp-cli cli::search_all::tests::plan::prepared_input_rejects_empty_typed_slots1390 PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::a_missing_skill_exits_nonzero_github_2871391 PASS [ 0.014s] biomcp-cli cli::search_all_command::tests::search_all_parses_positional_keyword1392 PASS [ 0.013s] biomcp-cli cli::search_all_command::tests::search_all_without_typed_slots_still_parses_for_runtime_validation1393 PASS [ 0.011s] biomcp-cli cli::skill::tests::catalog::an_empty_skill_catalog_fails_loudly_github_2871394 PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::canonical_prompt_body_matches_overview_and_normalizes_newlines1395 PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::chart_asset_misses_exit_nonzero_github_2871396 PASS [ 0.009s] biomcp-cli cli::skill::tests::catalog::debug_builds_embed_the_skill_and_chart_assets_github_2871397 PASS [ 0.021s] biomcp-cli cli::search_all::tests::plan::build_dispatch_plan_variant_with_gene_fanout1398 PASS [ 0.015s] biomcp-cli cli::search_all_command::tests::search_all_parses_slot_flags1399 PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::embedded_skill_overview_is_routing_first_and_points_to_worked_examples1400 PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::embedded_use_case_catalog_lists_expected_worked_examples1401 PASS [ 0.011s] biomcp-cli cli::skill::tests::catalog::refreshed_search_examples_are_non_empty1402 PASS [ 0.011s] biomcp-cli cli::skill::tests::catalog::missing_skill_suggests_skill_catalog1403 PASS [ 0.010s] biomcp-cli cli::skill::tests::catalog::the_healthy_catalog_still_lists_github_2871404 PASS [ 0.011s] biomcp-cli cli::skill::tests::catalog::validate_skills_target_uses_project_free_uv_dev_environment1405 PASS [ 0.010s] biomcp-cli cli::skill::tests::install::find_best_target_defaults_to_home_agents_when_nothing_exists1406 PASS [ 0.054s] biomcp-cli cli::response_contract::tests::command_collection_contract_inventory1407 PASS [ 0.010s] biomcp-cli cli::skill::tests::install::find_best_target_preserves_pi_agent_skills_path1408 PASS [ 0.012s] biomcp-cli cli::skill::tests::install::find_best_target_falls_back_to_agents_root_then_claude_root1409 PASS [ 0.011s] biomcp-cli cli::skill::tests::install::find_best_target_prefers_agents_populated_skills_dir1410 PASS [ 0.013s] biomcp-cli cli::skill::tests::install::find_best_target_ignores_non_skill_files_in_skills_dir1411 PASS [ 0.012s] biomcp-cli cli::skill::tests::install::find_existing_install_ignores_skill_md_directory1412 PASS [ 0.012s] biomcp-cli cli::skill::tests::install::find_existing_install_prefers_agents_and_reports_others1413 PASS [ 0.012s] biomcp-cli cli::skill::tests::install::find_existing_install_detects_claude1414 PASS [ 0.010s] biomcp-cli cli::skill::tests::install::fresh_atomic_rename_refuses_a_racing_target1415 PASS [ 0.008s] biomcp-cli cli::stale_json_note_tests::search_all_json_body_carries_notes_only_when_present1416 PASS [ 0.012s] biomcp-cli cli::study::tests::charts::chart_auxiliary_flags_require_chart1417 PASS [ 0.012s] biomcp-cli cli::study::tests::charts::handle_command_rejects_invalid_expression_chart1418 PASS [ 0.023s] biomcp-cli cli::skill::tests::install::install_to_dir_writes_canonical_skill_md_and_assets1419 PASS [ 0.012s] biomcp-cli cli::study::tests::charts::png_pixel_budget_is_rejected_before_study_lookup1420 PASS [ 0.012s] biomcp-cli cli::study::tests::charts::short_help_hides_chart_flags_but_long_help_shows_them1421 PASS [ 0.014s] biomcp-cli cli::study::tests::charts::study_co_occurrence_invalid_chart_lists_heatmap1422 PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_co_occurrence_parses_heatmap_chart_flag1423 PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_compare_expression_parses_scatter_chart_with_file_dimensions1424 PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_compare_mutations_invalid_chart_lists_stacked_bar1425 PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_compare_mutations_parses_stacked_bar_chart_flag1426 PASS [ 0.013s] biomcp-cli cli::study::tests::charts::study_query_mutations_invalid_chart_lists_waterfall1427 PASS [ 0.011s] biomcp-cli cli::study::tests::charts::study_query_parses_chart_flags1428 PASS [ 0.062s] biomcp-cli cli::skill::tests::install::failed_atomic_exchange_leaves_existing_target_unchanged1429 PASS [ 0.013s] biomcp-cli cli::study::tests::charts::study_query_parses_waterfall_chart_flag1430 PASS [ 0.071s] biomcp-cli cli::skill::tests::catalog::embedded_use_case_anchor_commands_parse1431 PASS [ 0.012s] biomcp-cli cli::study::tests::charts::study_survival_parses_survival_chart_flag1432 PASS [ 0.011s] biomcp-cli cli::study::tests::help::study_co_occurrence_help_describes_gene_list_contract1433 PASS [ 0.065s] biomcp-cli cli::skill::tests::install::force_rejects_a_directory_at_a_manifest_recorded_file_path1434 PASS [ 0.011s] biomcp-cli cli::study::tests::help::study_cohort_help_describes_gene_split1435 PASS [ 0.012s] biomcp-cli cli::study::tests::help::study_compare_help_describes_type_and_target1436 PASS [ 0.011s] biomcp-cli cli::study::tests::help::study_download_help_describes_list_and_study_id1437 PASS [ 0.013s] biomcp-cli cli::study::tests::help::study_filter_help_describes_each_filter_flag1438 PASS [ 0.012s] biomcp-cli cli::study::tests::help::study_help_lists_descriptions_for_all_subcommands1439 PASS [ 0.013s] biomcp-cli cli::study::tests::help::study_query_help_describes_key_flags_and_aliases1440 PASS [ 0.070s] biomcp-cli cli::skill::tests::install::managed_status_distinguishes_current_unmanaged_stale_and_modified1441 PASS [ 0.011s] biomcp-cli cli::study::tests::help::study_top_mutated_help_describes_limit1442 PASS [ 0.012s] biomcp-cli cli::study::tests::help::study_survival_help_describes_endpoint_values_and_aliases1443 PASS [ 0.079s] biomcp-cli cli::skill::tests::install::force_preserves_unrelated_symlinks_without_following_them1444 PASS [ 0.014s] biomcp-cli cli::study::tests::parsing::study_co_occurrence_parses_gene_list1445 PASS [ 0.084s] biomcp-cli cli::skill::tests::install::install_result_reports_installed_unchanged_and_repaired_truthfully1446 PASS [ 0.012s] biomcp-cli cli::study::tests::parsing::study_download_parses_list_flag1447 PASS [ 0.013s] biomcp-cli cli::study::tests::parsing::study_compare_parses_type_and_target1448 PASS [ 0.016s] biomcp-cli cli::study::tests::parsing::study_cohort_parses_required_flags1449 PASS [ 0.012s] biomcp-cli cli::study::tests::parsing::study_list_parses_subcommand1450 PASS [ 0.013s] biomcp-cli cli::study::tests::parsing::study_download_parses_positional_study_id1451 PASS [ 0.013s] biomcp-cli cli::study::tests::parsing::study_filter_parses_all_flags_and_repeated_values1452 PASS [ 0.011s] biomcp-cli cli::study::tests::parsing::study_survival_parses_endpoint_flag1453 PASS [ 0.013s] biomcp-cli cli::study::tests::parsing::study_query_parses_required_flags1454 PASS [ 0.086s] biomcp-cli cli::skill::tests::install::malformed_manifest_cannot_authorize_removing_unrelated_files1455 PASS [ 0.088s] biomcp-cli cli::skill::tests::install::plain_install_preserves_edits_and_force_repairs_managed_files1456 PASS [ 0.012s] biomcp-cli cli::study::tests::parsing::study_top_mutated_parses_limit_flag1457 PASS [ 0.010s] biomcp-cli cli::study::tests::validation::study_filter_accepts_finite_f64_threshold_boundaries1458 PASS [ 0.013s] biomcp-cli cli::study::tests::validation::study_co_occurrence_requires_2_to_10_genes1459 PASS [ 0.013s] biomcp-cli cli::study::tests::validation::study_compare_rejects_unknown_type1460 PASS [ 0.009s] biomcp-cli cli::system::batch::tests::dropping_settlement_cancels_active_and_queued_work1461 PASS [ 0.014s] biomcp-cli cli::study::tests::validation::study_filter_rejects_malformed_expression_threshold1462 PASS [ 0.014s] biomcp-cli cli::study::tests::validation::study_filter_requires_at_least_one_criterion1463 PASS [ 0.018s] biomcp-cli cli::study::tests::validation::study_filter_cli_and_mcp_paths_share_non_finite_invalid_argument1464 PASS [ 0.015s] biomcp-cli cli::study::tests::validation::study_survival_rejects_unknown_endpoint1465 PASS [ 0.016s] biomcp-cli cli::system::batch::tests::article_batch_preflight_pins_modes_sections_counts_and_id_bytes1466 PASS [ 0.010s] biomcp-cli cli::system::batch::tests::settlement_caps_live_work_preserves_order_and_settles_after_failure1467 PASS [ 0.018s] biomcp-cli cli::system::batch::tests::batch_command_parses_sections_source_and_closed_article_modes1468 PASS [ 0.013s] biomcp-cli cli::system::tests::batch_help_includes_examples_and_limits1469 PASS [ 0.012s] biomcp-cli cli::system::tests::clap_version_includes_the_build_version1470 PASS [ 0.012s] biomcp-cli cli::system::tests::cvx_sync_help_describes_bundle_refresh1471 PASS [ 0.013s] biomcp-cli cli::system::tests::cvx_help_mentions_sync_example1472 PASS [ 0.011s] biomcp-cli cli::system::tests::ddinter_help_mentions_sync_example1473 PASS [ 0.017s] biomcp-cli cli::system::dispatch::batch_settlement_tests::mixed_batch_preserves_input_order_and_emits_every_result1474 PASS [ 0.013s] biomcp-cli cli::system::tests::cvx_sync_parses_subcommand1475 PASS [ 0.028s] biomcp-cli cli::study::tests::validation::study_filter_rejects_non_finite_expression_thresholds_before_study_lookup1476 PASS [ 0.012s] biomcp-cli cli::system::tests::ddinter_sync_help_describes_eight_csv_refresh1477 PASS [ 0.011s] biomcp-cli cli::system::tests::ddinter_sync_parses_subcommand1478 PASS [ 0.017s] biomcp-cli cli::system::tests::dev2_contracts::batch_source_is_optional_and_trial_only1479 PASS [ 0.009s] biomcp-cli cli::system::tests::enrich_json_always_serializes_unresolved_genes1480 PASS [ 0.033s] biomcp-cli cli::system::batch::tests::dropping_settlement_cancels_cacheable_article_provider_retry_and_admission1481 PASS [ 0.012s] biomcp-cli cli::system::tests::enrich_command_parses_limit1482 PASS [ 0.013s] biomcp-cli cli::system::tests::discover_top_level_command_parses_query1483 PASS [ 0.014s] biomcp-cli cli::system::tests::dev2_contracts::serve_http_rejects_port_zero1484 PASS [ 0.014s] biomcp-cli cli::system::tests::discover_help_includes_when_to_use_guidance1485 PASS [ 0.013s] biomcp-cli cli::system::tests::ema_sync_parses_subcommand1486 PASS [ 0.015s] biomcp-cli cli::system::tests::ema_help_mentions_sync_example1487 PASS [ 0.010s] biomcp-cli cli::system::tests::enrich_markdown_reports_unresolved_genes_before_empty_result1488 PASS [ 0.019s] biomcp-cli cli::system::tests::discover_and_batch_json_keep_executable_templates_without_human_option_prose1489 PASS [ 0.009s] biomcp-cli cli::system::tests::enrich_markdown_reports_unresolved_genes_before_results1490 PASS [ 0.011s] biomcp-cli cli::system::tests::gtr_help_mentions_sync_example1491 PASS [ 0.011s] biomcp-cli cli::system::tests::gtr_sync_help_describes_diagnostic_bundle_refresh1492 PASS [ 0.011s] biomcp-cli cli::system::tests::gtr_sync_parses_subcommand1493 PASS [ 0.015s] biomcp-cli cli::system::tests::enrich_rejects_limit_above_max_before_api_call1494 PASS [ 0.013s] biomcp-cli cli::system::tests::handle_enrich_rejects_zero_limit_before_api_call1495 PASS [ 0.012s] biomcp-cli cli::system::tests::health_command_parses_apis_only1496 PASS [ 0.014s] biomcp-cli cli::system::tests::enrich_rejects_zero_limit_before_api_call1497 PASS [ 0.011s] biomcp-cli cli::system::tests::list_command_parses_entity_name1498 PASS [ 0.012s] biomcp-cli cli::system::tests::rendered_list_help_names_exactly_the_production_catalog_entities1499 PASS [ 0.012s] biomcp-cli cli::system::tests::serve_http_help_describes_streamable_http1500 PASS [ 0.010s] biomcp-cli cli::system::tests::sync_json_reports_the_actual_change_flag1501 PASS [ 0.009s] biomcp-cli cli::system::tests::sync_text_output_reports_its_message_not_a_change_flag1502 PASS [ 0.040s] biomcp-cli cli::system::tests::dev2_contracts::dropping_canonical_compact_command_cancels_provider_retry1503 PASS [ 0.013s] biomcp-cli cli::system::tests::skill_uninstall_is_rejected_before_skill_lookup1504 PASS [ 0.014s] biomcp-cli cli::system::tests::serve_http_host_safety_flags_conflict1505 PASS [ 0.011s] biomcp-cli cli::system::tests::version_json_contract_has_identity_fields1506 PASS [ 0.012s] biomcp-cli cli::system::tests::version_command_parses_verbose_flag1507 PASS [ 0.012s] biomcp-cli cli::system::tests::who_help_mentions_sync_example1508 PASS [ 0.042s] biomcp-cli cli::system::tests::dev2_contracts::ten_batch_items_start_together_and_each_owns_its_deadline1509 PASS [ 0.012s] biomcp-cli cli::system::tests::who_ivd_help_mentions_sync_example1510 PASS [ 0.011s] biomcp-cli cli::system::tests::who_ivd_sync_help_describes_diagnostic_csv_refresh1511 PASS [ 0.009s] biomcp-cli cli::system::tests::who_sync::who_sync_clean_json_keeps_synchronized_status_and_zero_exit1512 PASS [ 0.010s] biomcp-cli cli::system::tests::who_sync::who_sync_partial_json_says_partial_with_per_file_outcomes_and_exits_nonzero1513 PASS [ 0.009s] biomcp-cli cli::system::tests::who_sync::who_sync_partial_run_says_partial_names_each_file_and_exits_nonzero1514 PASS [ 0.012s] biomcp-cli cli::system::tests::who_ivd_sync_parses_subcommand1515 PASS [ 0.010s] biomcp-cli cli::system::tests::who_sync::who_sync_reports_refreshed_and_failed_files_instead_of_a_bare_success_claim1516 PASS [ 0.011s] biomcp-cli cli::system::tests::who_sync_help_describes_dual_export_refresh1517 PASS [ 0.013s] biomcp-cli cli::system::tests::who_sync_parses_subcommand1518 PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_clean_command_parses_with_flags1519 PASS [ 0.013s] biomcp-cli cli::tests::facade::cache::cache_clean_help_mentions_dry_run_json_and_limits1520 PASS [ 0.028s] biomcp-cli cli::system::tests::uninstall_removes_exactly_the_owned_binary_and_receipt1521 PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_clear_help_mentions_yes_tty_and_destructive_scope1522 PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_clear_command_parses1523 PASS [ 0.014s] biomcp-cli cli::tests::facade::cache::cache_clear_command_parses_with_yes_flag1524 PASS [ 0.011s] biomcp-cli cli::tests::facade::cache::cache_help_lists_clear_subcommand1525 PASS [ 0.011s] biomcp-cli cli::tests::facade::cache::cache_path_command_parses1526 PASS [ 0.011s] biomcp-cli cli::tests::facade::cache::cache_path_help_describes_plain_and_typed_json_output1527 PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_stats_command_parses1528 PASS [ 0.017s] biomcp-cli cli::tests::facade::cache::cache_help_keeps_json_but_hides_no_cache_everywhere1529 PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::cache_stats_help_mentions_json_and_cli_only1530 PASS [ 0.011s] biomcp-cli cli::tests::facade::cache::json_cache_path_parses_as_plain_path_command1531 PASS [ 0.010s] biomcp-cli cli::tests::facade::cache::no_cache_is_rejected_by_public_run_before_cache_dispatch1532 PASS [ 0.010s] biomcp-cli cli::tests::facade::chart::chart_args_default_to_no_chart1533 PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::json_cache_stats_parses_as_stats_command1534 PASS [ 0.012s] biomcp-cli cli::tests::facade::cache::no_cache_is_rejected_by_public_run_outcome_as_json_usage_error1535 PASS [ 0.012s] biomcp-cli cli::tests::facade::help::discover_help_mentions_article_search_fallback_for_non_canonical_queries1536 PASS [ 0.015s] biomcp-cli cli::tests::facade::help::runtime_commands_still_parse_hidden_global_flags1537 PASS [ 0.012s] biomcp-cli cli::tests::facade::help::search_all_help_mentions_counts_only_json_contract1538 PASS [ 0.011s] biomcp-cli cli::tests::facade::help::skill_help_examples_match_installed_surface1539 PASS [ 0.013s] biomcp-cli cli::tests::facade::help::runtime_help_hides_query_only_global_flags1540 PASS [ 0.011s] biomcp-cli cli::tests::facade::help::top_level_help_lists_cache_command1541 PASS [ 0.013s] biomcp-cli cli::tests::facade::help::top_level_help_has_no_cache_path_json_exception1542 PASS [ 0.021s] biomcp-cli cli::tests::facade::chart::chart_dimension_flags_enforce_practical_bounds1543 PASS [ 0.012s] biomcp-cli cli::tests::facade::help::top_level_help_omits_suggest_command1544 PASS [ 0.014s] biomcp-cli cli::tests::facade::help::top_level_help_describes_cache_family_not_path_only1545 PASS [ 0.013s] biomcp-cli cli::tests::facade::help::top_level_help_uses_count_free_source_phrase1546 PASS [ 0.010s] biomcp-cli cli::tests::facade::reversed_search_rejects_non_utf8_before_candidate_parsing1547 PASS [ 0.009s] biomcp-cli cli::tests::facade::shared_pagination_and_section_provenance_regressions1548 PASS [ 0.015s] biomcp-cli cli::tests::facade::reversed_search_catchall_non_utf8_uses_safe_fallback1549 PASS [ 0.013s] biomcp-cli cli::tests::facade::search_all_requires_at_least_one_typed_slot1550 PASS [ 0.014s] biomcp-cli cli::tests::facade::reversed_search_preserves_globals_delimiters_and_hostile_data1551 PASS [ 0.039s] biomcp-cli cli::tests::facade::chart::chart_json_uses_the_canonical_name_for_every_topic1552 PASS [ 0.024s] biomcp-cli cli::tests::facade::reversed_search_detector_preserves_baseline_boundaries1553 PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_next_commands_keep_four_visible_gtr_sections1554 PASS [ 0.011s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_includes_regulatory_field_and_provenance_when_requested1555 PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_omits_regulatory_field_when_unrequested1556 PASS [ 0.012s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_next_commands_quote_who_follow_up1557 PASS [ 0.030s] biomcp-cli cli::tests::facade::reversed_search_complete_sentence_cap_is_inclusive1558 PASS [ 0.016s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_json_next_commands_parse1559 PASS [ 0.031s] biomcp-cli cli::tests::facade::reversed_search_catchalls_fall_back_without_echo_when_correction_is_suppressed1560 PASS [ 0.010s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::disease_json_next_commands_omit_requested_section_follow_up1561 PASS [ 0.014s] biomcp-cli cli::tests::next_commands_json_property::diagnostic::diagnostic_search_json_next_commands_parse1562 PASS [ 0.010s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::disease_json_suggestions_match_see_also_without_more_hints1563 PASS [ 0.013s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::pgx_json_next_commands_parse1564 PASS [ 0.010s] biomcp-cli cli::tests::next_commands_json_property::gene_article::gene_json_next_commands_omit_requested_section_follow_up1565 PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::gene_article::gene_json_suggestions_match_see_also_without_section_hints1566 PASS [ 0.021s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::disease_json_next_commands_parse1567 PASS [ 0.023s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::disease_json_next_commands_include_top_gene_context1568 PASS [ 0.018s] biomcp-cli cli::tests::next_commands_json_property::disease_trial::trial_json_next_commands_parse1569 PASS [ 0.020s] biomcp-cli cli::tests::next_commands_json_property::gene_article::article_json_next_commands_parse1570 PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::batch_adverse_event_json_uses_variant_specific_meta1571 PASS [ 0.009s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::batch_protein_json_omits_requested_section_from_next_commands1572 PASS [ 0.008s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::faers_subset_json_filters_data_commands_and_provenance_together1573 PASS [ 0.024s] biomcp-cli cli::tests::next_commands_json_property::gene_article::gene_json_next_commands_include_clingen_trial_search1574 PASS [ 0.055s] biomcp-cli cli::tests::facade::reversed_search_global_delimiter_and_display_precedence_matrix1575 PASS [ 0.013s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::faers_json_next_commands_parse1576 PASS [ 0.023s] biomcp-cli cli::tests::next_commands_json_property::gene_article::gene_json_next_commands_parse1577 PASS [ 0.014s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::device_event_json_next_commands_parse1578 PASS [ 0.012s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::pathway_json_next_commands_parse1579 PASS [ 0.059s] biomcp-cli cli::tests::facade::reversed_search_names_report_copyable_canonical_commands1580 PASS [ 0.013s] biomcp-cli cli::tests::next_commands_json_property::pathway_adverse_event::protein_json_next_commands_parse1581 PASS [ 0.068s] biomcp-cli cli::tests::facade::reversed_search_candidate_errors_and_byte_caps_preserve_baseline1582 PASS [ 0.013s] biomcp-cli cli::tests::next_commands_json_property::protein_phenotype::phenotype_search_json_next_commands_parse1583 PASS [ 0.012s] biomcp-cli cli::tests::next_commands_json_property::protein_phenotype::protein_search_json_next_commands_parse1584 PASS [ 0.014s] biomcp-cli cli::tests::next_commands_json_property::variant_drug::drug_interaction_report_json_next_commands_include_helper_follow_ups1585 PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::adverse_event_next_commands_parse1586 PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::adverse_event_search_json_next_commands_parse1587 PASS [ 0.014s] biomcp-cli cli::tests::next_commands_validity::article_and_discover_next_commands_parse1588 PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::author_papers_rich_continuation_parses_with_original_arguments1589 PASS [ 0.018s] biomcp-cli cli::tests::next_commands_json_property::variant_drug::variant_json_next_commands_parse1590 PASS [ 0.019s] biomcp-cli cli::tests::next_commands_json_property::variant_drug::variant_json_next_commands_include_vus_literature_route1591 PASS [ 0.016s] biomcp-cli cli::tests::next_commands_validity::article_loop_suggestion_commands_parse1592 PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::device_event_next_commands_parse1593 PASS [ 0.023s] biomcp-cli cli::tests::next_commands_json_property::variant_drug::drug_json_next_commands_parse1594 PASS [ 0.019s] biomcp-cli cli::tests::next_commands_validity::article_search_json_next_commands_parse1595 PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::diagnostic_search_json_next_commands_parse1596 PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::disease_search_json_next_commands_parse1597 PASS [ 0.020s] biomcp-cli cli::tests::next_commands_validity::diagnostic_next_commands_parse1598 PASS [ 0.025s] biomcp-cli cli::tests::next_commands_validity::article_next_commands_parse1599 PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::gene_search_json_next_commands_parse1600 PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::drug_search_json_next_commands_parse1601 PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::gwas_search_json_next_commands_parse1602 PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::hostile_quoted_article_follow_up_parses_to_one_argument1603 PASS [ 0.019s] biomcp-cli cli::tests::next_commands_validity::drug_next_commands_parse1604 PASS [ 0.011s] biomcp-cli cli::tests::next_commands_validity::pathway_next_commands_parse1605 PASS [ 0.022s] biomcp-cli cli::tests::next_commands_validity::disease_next_commands_parse1606 PASS [ 0.021s] biomcp-cli cli::tests::next_commands_validity::gene_next_commands_parse1607 PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::pathway_search_json_next_commands_parse1608 PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::pgx_next_commands_parse1609 PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::pgx_search_json_next_commands_parse1610 PASS [ 0.012s] biomcp-cli cli::tests::next_commands_validity::trial_search_json_next_commands_parse1611 PASS [ 0.014s] biomcp-cli cli::tests::next_commands_validity::protein_next_commands_parse1612 PASS [ 0.009s] biomcp-cli cli::tests::outcome::alias_fallback_ols_failure_preserves_original_not_found1613 PASS [ 0.009s] biomcp-cli cli::tests::outcome::ambiguous_gene_miss_points_to_discover1614 PASS [ 0.035s] biomcp-cli cli::tests::next_commands_validity::discover_next_commands_parse1615 PASS [ 0.013s] biomcp-cli cli::tests::next_commands_validity::variant_search_json_next_commands_parse1616 PASS [ 0.018s] biomcp-cli cli::tests::next_commands_validity::trial_next_commands_parse1617 PASS [ 0.009s] biomcp-cli cli::tests::outcome::batch_gene_json_includes_meta_per_item1618 PASS [ 0.009s] biomcp-cli cli::tests::outcome::drug_alias_fallback_json_writes_stdout_and_exit_11619 PASS [ 0.008s] biomcp-cli cli::tests::outcome::drug_alias_fallback_returns_exit_1_markdown_suggestion1620 PASS [ 0.009s] biomcp-cli cli::tests::outcome::extract_json_from_sections_detects_trailing_long_flag1621 PASS [ 0.009s] biomcp-cli cli::tests::outcome::extract_json_from_sections_detects_trailing_short_flag1622 PASS [ 0.021s] biomcp-cli cli::tests::next_commands_validity::variant_next_commands_parse1623 PASS [ 0.008s] biomcp-cli cli::tests::outcome::gene_alias_fallback_json_writes_stdout_and_exit_11624 PASS [ 0.015s] biomcp-cli cli::tests::outcome::clap_diagnostics_remove_terminal_controls_from_rejected_arguments1625 PASS [ 0.015s] biomcp-cli cli::tests::outcome::clap_diagnostics_sanitize_layout_controls_in_non_utf8_arguments1626 PASS [ 0.009s] biomcp-cli cli::tests::outcome::extract_json_from_sections_keeps_regular_sections1627 PASS [ 0.009s] biomcp-cli cli::tests::outcome::gene_alias_fallback_returns_exit_1_markdown_suggestion1628 PASS [ 0.008s] biomcp-cli cli::tests::outcome::mcp_alias_suggestion_json_stays_structured1629 PASS [ 0.009s] biomcp-cli cli::tests::outcome::long_running_server_json_rejection_is_structured_and_nonzero1630 PASS [ 0.008s] biomcp-cli cli::tests::outcome::phenotype_search_json_contract_unchanged1631 PASS [ 0.008s] biomcp-cli cli::tests::outcome::resolve_query_input_accepts_flag_or_positional1632 PASS [ 0.009s] biomcp-cli cli::tests::outcome::resolve_query_input_rejects_dual_values1633 PASS [ 0.008s] biomcp-cli cli::tests::outcome::search_json_with_meta_includes_next_commands1634 PASS [ 0.009s] biomcp-cli cli::tests::outcome::search_json_with_meta_and_suggestions_includes_zero_result_suggestions1635 PASS [ 0.009s] biomcp-cli cli::tests::outcome::search_json_with_meta_omits_meta_when_empty1636 PASS [ 0.009s] biomcp-cli cli::tests::outcome::search_meta_trims_empty_commands1637 PASS [ 0.008s] biomcp-cli cli::tests::outcome::search_meta_with_suggestions_keeps_empty_suggestions_array1638 PASS [ 0.014s] biomcp-cli cli::tests::outcome::reflected_study_identifier_is_sanitized_at_the_human_diagnostic_boundary1639 PASS [ 0.009s] biomcp-cli cli::tests::outcome::search_meta_with_workflow_keeps_meta_without_next_commands1640 PASS [ 0.025s] biomcp-cli cli::tests::outcome::formerly_plain_finite_commands_emit_one_json_document1641 PASS [ 0.038s] biomcp-cli cli::tests::next_commands_validity::workflow_ladder_sidecar_commands_parse1642 PASS [ 0.009s] biomcp-cli cli::trial::count_tests::json_and_text_mark_a_partial_count_with_its_reason1643 PASS [ 0.010s] biomcp-cli cli::tests::surface_agreement::drug_command_discovery_has_one_renderer_owner_per_surface1644 PASS [ 0.008s] biomcp-cli cli::trial::count_tests::search_json_carries_the_partial_note_in_meta_notes1645 PASS [ 0.010s] biomcp-cli cli::trial::count_tests::json_preserves_precision_and_omits_unknown_approximation1646 PASS [ 0.013s] biomcp-cli cli::tests::printed_card_commands::detail_card_contract_rejects_malformed_command1647 PASS [ 0.009s] biomcp-cli cli::trial::count_tests::search_json_omits_meta_notes_when_the_page_is_fully_verified1648 PASS [ 0.008s] biomcp-cli cli::trial::documents::tests::document_routes_require_standalone_arity1649 PASS [ 0.010s] biomcp-cli cli::trial::count_tests::text_explains_each_unknown_reason_truthfully1650 PASS [ 0.008s] biomcp-cli cli::trial::documents::tests::manifest_is_json_only_and_document_forms_are_ctgov_only1651 PASS [ 0.011s] biomcp-cli cli::trial::tests::get_trial_parses_location_paging_before_sections1652 PASS [ 0.012s] biomcp-cli cli::trial::tests::get_trial_parses_source_before_sections1653 PASS [ 0.012s] biomcp-cli cli::trial::tests::handle_search_rejects_next_page_with_offset1654 PASS [ 0.012s] biomcp-cli cli::trial::tests::handle_search_rejects_no_alias_expand_for_nci_source1655 PASS [ 0.012s] biomcp-cli cli::trial::tests::handle_search_rejects_no_alias_expand_without_intervention1656 PASS [ 0.011s] biomcp-cli cli::trial::tests::nci_repeated_biomarker_like_values_fail_before_dispatch1657 PASS [ 0.027s] biomcp-cli cli::tests::surface_agreement::every_detail_card_markdown_and_json_commands_agree1658 PASS [ 0.011s] biomcp-cli cli::trial::tests::search_trial_parses_multi_word_positional_query1659 PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_new_filter_flags1660 PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_next_page_with_intervention1661 PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_no_alias_expand1662 PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_positional_query1663 PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_positional_query_with_status_flag1664 PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_parses_unquoted_multi_token_mutation1665 PASS [ 0.012s] biomcp-cli cli::trial::tests::search_trial_rejects_non_numeric_age1666 PASS [ 0.012s] biomcp-cli cli::trial::tests::trial_age_help_explains_age_only_count_is_approximate1667 PASS [ 0.012s] biomcp-cli cli::trial::tests::trial_facility_help_names_text_search_and_geo_verify_modes1668 PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_help_clarifies_mutation_vs_biomarker1669 PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_help_documents_alias_expansion_controls1670 PASS [ 0.009s] biomcp-cli cli::trial::tests::verification_emptied_hint_names_the_upstream_count1671 PASS [ 0.009s] biomcp-cli cli::trial::tests::verification_emptied_zero_adds_the_criteria_relaxation_command1672 PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_help_documents_nci_source_specific_notes1673 PASS [ 0.009s] biomcp-cli cli::trial::tests::zero_result_trial_broadening_hints_name_filter_relaxations1674 PASS [ 0.012s] biomcp-cli cli::trial::tests::trial_phase_help_explains_combined_phase_label1675 PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_phase_help_explains_canonical_numeric_forms_and_aliases1676 PASS [ 0.013s] biomcp-cli cli::trial::tests::trial_sex_help_explains_all_means_no_restriction1677 PASS [ 0.009s] biomcp-cli cli::trial::tests::zero_result_trial_next_commands_offer_filtered_broadening1678 PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::explicit_location_pages_carry_exact_nonterminal_continuation1679 PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::handle_get_rejects_declared_limit_zero1680 PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::handle_get_rejects_duplicate_declared_and_legacy_paging1681 PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::handle_get_rejects_declared_paging_without_locations1682 PASS [ 0.008s] biomcp-cli cli::trial::tests_locations::paginate_trial_locations_empty_page_keeps_non_site_contacts_and_normalizes_empty1683 PASS [ 0.010s] biomcp-cli cli::trial::tests_locations::paginate_trial_locations_aligns_site_contacts_to_the_page1684 PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::paginate_trial_locations_handles_missing_locations1685 PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::parse_trial_location_paging_extracts_offset_limit_flags1686 PASS [ 0.010s] biomcp-cli cli::trial::tests_locations::paginate_trial_locations_uses_counted_exact_membership_and_legacy_boundaries1687 PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::parse_trial_location_paging_rejects_legacy_limit_zero1688 PASS [ 0.008s] biomcp-cli cli::trial::tests_locations::terminal_location_page_omits_continuation_key_and_markdown_command1689 PASS [ 0.007s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_includes_alias_opt_out_marker1690 PASS [ 0.008s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_can_show_canonical_intervention1691 PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::trial_locations_json_preserves_location_pagination_and_section_sources1692 PASS [ 0.008s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_includes_geo_filters1693 PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_includes_nci_source_marker1694 PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::trial_search_query_summary_omits_alias_opt_out_marker_when_not_applicable1695 PASS [ 0.009s] biomcp-cli cli::trial::tests_locations::trial_zero_result_nickname_hint_requires_positional_ctgov_query_with_zero_results1696 PASS [ 0.009s] biomcp-cli cli::update::tests::enforce_checksum_policy_missing_sidecar_without_override_fails_closed1697 PASS [ 0.010s] biomcp-cli cli::update::tests::enforce_checksum_policy_verified_succeeds1698 PASS [ 0.009s] biomcp-cli cli::update::tests::extract_binary_from_targz_rejects_empty_binary1699 PASS [ 0.009s] biomcp-cli cli::update::tests::extract_binary_from_targz_reports_missing_binary_as_not_found1700 PASS [ 0.009s] biomcp-cli cli::update::tests::extract_binary_from_zip_returns_matching_binary_bytes1701 PASS [ 0.080s] biomcp-cli cli::tests::printed_card_commands::recovery_commands_round_trip_to_their_registered_routes1702 PASS [ 0.010s] biomcp-cli cli::update::tests::extract_binary_from_targz_returns_matching_binary_bytes1703 PASS [ 0.007s] biomcp-cli cli::update::tests::install_binary_after_checksum_policy_missing_sidecar_without_override_does_not_replace1704 PASS [ 0.007s] biomcp-cli cli::update::tests::production_archive_ceiling_is_exactly_256_mib1705 PASS [ 0.008s] biomcp-cli cli::update::tests::verify_archive_against_checksum_rejects_invalid_format1706 PASS [ 0.009s] biomcp-cli cli::update::tests::verify_archive_against_checksum_accepts_matching_sha2561707 PASS [ 0.008s] biomcp-cli cli::update::tests::verify_archive_against_checksum_rejects_mismatch1708 PASS [ 0.010s] biomcp-cli cli::variant::car::tests::input_reader_rejects_a_file_larger_than_its_supported_size1709 PASS [ 0.009s] biomcp-cli cli::variant::dispatch::tests::explicit_filter_flags_skip_unset_and_blank_values1710 PASS [ 0.008s] biomcp-cli cli::variant::dispatch::tests::explicit_filter_flags_state_every_flag_in_command_spelling1711 PASS [ 0.008s] biomcp-cli cli::variant::erepo::tests::empty_markdown_labels_germline_scope_and_routes_somatic_questions_to_civic1712 PASS [ 0.010s] biomcp-cli cli::variant::erepo::tests::input_reader_accepts_exact_limit_and_rejects_one_extra_byte1713 PASS [ 0.008s] biomcp-cli cli::variant::erepo::tests::markdown_reports_source_facts_without_json1714 PASS [ 0.010s] biomcp-cli cli::variant::normalization_json::tests::render_deduplicates_aggregate_results1715 PASS [ 0.009s] biomcp-cli cli::variant::tests::apply_gene_first_routing_keeps_every_explicit_filter_in_both_hints1716 PASS [ 0.112s] biomcp-cli cli::tests::printed_card_commands::detail_card_commands_parse1717 PASS [ 0.009s] biomcp-cli cli::variant::tests::apply_gene_first_routing_keeps_explicit_filters_on_both_paths1718 PASS [ 0.040s] biomcp-cli cli::update::tests::failed_staged_version_smoke_preserves_binary_and_receipt1719 PASS [ 0.008s] biomcp-cli cli::variant::tests::apply_gene_first_routing_routes_confirmed_symbols_and_refuses_the_rest1720 PASS [ 0.036s] biomcp-cli cli::update::tests::release_metadata_endpoint_is_injectable1721 PASS [ 0.010s] biomcp-cli cli::variant::tests::apply_gene_first_routing_moves_a_leading_protein_change_to_hgvsp1722 PASS [ 0.014s] biomcp-cli cli::variant::tests::articles::preserves_positional_syntax_and_accepts_structured_input1723 PASS [ 0.010s] biomcp-cli cli::variant::tests::gene_first_working_form_quotes_multi_word_conditions1724 PASS [ 0.010s] biomcp-cli cli::variant::tests::gene_routing_preference_off_skips_the_mygene_request1725 PASS [ 0.018s] biomcp-cli cli::variant::tests::articles::rejects_assembly_for_transcript_hgvs1726 PASS [ 0.014s] biomcp-cli cli::variant::tests::articles::rejects_positional_input_combination_with_the_batch_error_envelope1727 PASS [ 0.013s] biomcp-cli cli::variant::tests::erepo_help_labels_germline_scope_and_civic_destination1728 PASS [ 0.019s] biomcp-cli cli::variant::tests::erepo_gene_mode_is_bounded_and_mutually_exclusive1729 PASS [ 0.013s] biomcp-cli cli::variant::tests::parsing::search_variant_parses_multi_token_positional_query_and_flag1730 PASS [ 0.012s] biomcp-cli cli::variant::tests::parsing::search_variant_parses_single_token_positional_query1731 PASS [ 0.013s] biomcp-cli cli::variant::tests::parsing::search_variant_parses_quoted_gene_change_positional_query1732 PASS [ 0.019s] biomcp-cli cli::variant::tests::handle_get_returns_guidance_json_for_shorthand_variant1733 PASS [ 0.009s] biomcp-cli cli::variant::tests::refused_zero_row_hint_keeps_the_explicit_hgvsp_and_consequence_flags1734 PASS [ 0.019s] biomcp-cli cli::variant::tests::parse_simple_gene_change_rejects_non_simple_forms1735 PASS [ 0.020s] biomcp-cli cli::variant::tests::parse_simple_gene_change_detects_supported_forms1736 PASS [ 0.078s] biomcp-cli cli::update::tests::owned_update_smokes_and_atomically_replaces_with_agreeing_receipt1737 PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_keeps_explicit_gene_flag_routing1738 PASS [ 0.016s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_exon_deletion_phrase_to_gene_and_consequence1739 PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_keeps_non_gene_phrases_as_conditions1740 PASS [ 0.019s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_gene_flag_residue_alias_to_residue_alias_search1741 PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_gene_hgvsc_text_to_gene_and_hgvsc1742 PASS [ 0.009s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_rsid_to_rsid_filter1743 PASS [ 0.016s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_long_form_positional_gene_change_to_gene_and_hgvsp1744 PASS [ 0.021s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_gene_residue_alias_to_residue_alias_search1745 PASS [ 0.008s] biomcp-cli cli::variant::tests::resolve_variant_query_normalizes_long_form_hgvsp_flag1746 PASS [ 0.016s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_simple_gene_change_to_gene_and_hgvsp1747 PASS [ 0.042s] biomcp-cli cli::variant::tests::refused_zero_row_json_next_command_keeps_both_caller_flags_end_to_end1748 PASS [ 0.008s] biomcp-cli cli::variant::tests::resolve_variant_query_preserves_complex_exact_protein_identity1749 PASS [ 0.007s] biomcp-cli cli::variant::tests::resolve_variant_query_preserves_empty_consequence_for_source_validation1750 PASS [ 0.009s] biomcp-cli cli::variant::tests::resolve_variant_query_preserves_stop_x_for_hgvsp_flag1751 PASS [ 0.011s] biomcp-cli cli::variant::tests::resolve_variant_query_preserves_conjunctive_rsid_and_protein_identity1752 PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_maps_single_token_to_gene1753 PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_offers_gene_first_candidate_for_free_text_phrases1754 PASS [ 0.136s] biomcp-cli cli::update::tests::archive_transport_accepts_exact_limit_for_declared_and_chunked_bodies1755 PASS [ 0.062s] biomcp-cli cli::variant::tests::refused_zero_row_search_hint_keeps_the_callers_flags_end_to_end1756 PASS [ 0.140s] biomcp-cli cli::update::tests::archive_transport_rejects_limit_plus_one_for_declared_and_chunked_bodies1757 PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_rejects_conflicts_with_positional_mapping1758 PASS [ 1.036s] biomcp-cli cache::manager::tests::write_security_tests::put_does_not_wait_past_request_deadline_for_eviction1759 PASS [ 0.068s] biomcp-cli cli::variant::tests::refused_zero_row_markdown_hint_keeps_the_consequence_flag_end_to_end1760 PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_returns_guidance_for_standalone_protein_change1761 PASS [ 0.021s] biomcp-cli cli::variant::tests::resolve_variant_query_returns_guidance_for_long_form_single_token_change1762 PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_splits_a_protein_change_after_the_gene1763 PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_still_rejects_condition_flag_with_positional_phrase1764 PASS [ 0.010s] biomcp-cli cli::variant::tests::split_gene_first_candidate_accepts_symbol_shaped_first_tokens1765 PASS [ 0.013s] biomcp-cli cli::variant::tests::search_variant_help_distinguishes_exact_identity_from_broad_discovery1766 PASS [ 0.020s] biomcp-cli cli::variant::tests::resolve_variant_query_uses_gene_context_for_long_form_single_token_change1767 PASS [ 0.012s] biomcp-cli cli::variant::tests::split_leading_protein_change_takes_only_a_leading_change1768 PASS [ 0.018s] biomcp-cli cli::variant::tests::resolve_variant_query_uses_gene_context_for_standalone_protein_change1769 PASS [ 0.009s] biomcp-cli cli::variant::tests::variant_query_gene_routing_preference_defaults_to_mygene1770 PASS [ 0.012s] biomcp-cli cli::variant::tests::variant_bare_id_parses_as_external_subcommand1771 PASS [ 0.010s] biomcp-cli enrich_sparse_disease_identity_prefers_exact_ols4_match1772 PASS [ 0.009s] biomcp-cli entities::adverse_event::sections::tests::typed_subset_is_bounded_and_keeps_selected_empty_arrays1773 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::build_device_query_preserves_typed_seriousness1774 PASS [ 0.012s] biomcp-cli cli::variant::tests::variant_trials_parses_source_flag1775 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::build_device_query_requires_any_device_filter1776 PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::build_device_query_supports_manufacturer_and_product_code_filters1777 PASS [ 0.023s] biomcp-cli cli::variant::tests::variant_filter_evaluation_renderers_keep_mixed_states_and_order1778 PASS [ 0.025s] biomcp-cli cli::variant::tests::ticket_377_variant_renderer_envelope_contracts1779 PASS [ 0.023s] biomcp-cli cli::variant::tests::variant_get_shorthand_json_returns_variant_guidance_metadata1780 PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::build_enforcement_query_has_default_when_filters_empty1781 PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::device_query_summary_names_all_seriousness_meanings1782 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::build_openfda_query_encodes_outcome_and_since1783 PASS [ 0.024s] biomcp-cli cli::variant::tests::variant_search_shorthand_json_returns_variant_guidance_metadata1784 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::count_field_catalog_accepts_and_canonicalizes_every_supported_value1785 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::build_openfda_query_requires_drug_name1786 PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::normalize_classification_accepts_common_forms1787 PASS [ 0.011s] biomcp-cli entities::adverse_event::tests::cvx_vaers_failure_state_matrix1788 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::optional_faers_status_degrades_provider_failures1789 PASS [ 0.025s] biomcp-cli disease_markdown_renders_ot_only_gene_association_table1790 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::optional_faers_status_preserves_invalid_arguments1791 PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::query_type_rejects_unknown_flag1792 PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::search_with_source_vaers_rejects_offset1793 PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::search_count_rejects_empty_count_field1794 PASS [ 0.011s] biomcp-cli entities::adverse_event::tests::search_with_source_all_skips_vaers_for_unsupported_filters1795 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::search_with_source_vaers_rejects_unsupported_filters1796 PASS [ 0.011s] biomcp-cli entities::adverse_event::tests::search_with_source_all_treats_offset_as_a_visible_vaers_skip1797 PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::source_filter_rejects_unknown_flag1798 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::search_with_status_preserves_openfda_empty_results1799 PASS [ 0.013s] biomcp-cli entities::adverse_event::tests::search_with_source_all_non_vaccine_uses_local_only_vaers_result1800 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::search_with_status_preserves_openfda_not_found1801 PASS [ 0.008s] biomcp-cli entities::adverse_event::tests::successful_vaers_outcomes_credit_identity_and_evidence_sources1802 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::summarize_search_results_computes_top_reactions1803 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::trial_adverse_events_count_each_term_once_per_study1804 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::trial_adverse_events_prefers_alias_copy_with_counted_terms1805 PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::trial_adverse_events_dedupe_studies_across_aliases1806 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::validate_count_field_rejects_total_affordances1807 PASS [ 0.009s] biomcp-cli entities::adverse_event::tests::validate_count_field_rejects_unknown_plausible_field1808 PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::validate_count_field_rejects_non_field_syntax1809 PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::vaers_limit_bounds_top_reactions1810 PASS [ 0.011s] biomcp-cli entities::adverse_event::tests::vaers_resolver_matches_influenza_family_queries1811 PASS [ 0.010s] biomcp-cli entities::adverse_event::tests::vaers_summary_payload_maps_mmr_tables1812 PASS [ 0.012s] biomcp-cli entities::adverse_event::tests::vaers_resolver_returns_query_not_vaccine_without_upstream_call1813 PASS [ 0.009s] biomcp-cli entities::article::assets::tests::a_bare_name_with_several_refused_routes_names_the_strongest_reason1814 PASS [ 0.009s] biomcp-cli entities::article::assets::tests::a_lone_zero_byte_route_keeps_the_filename_key_it_advertised1815 PASS [ 0.008s] biomcp-cli entities::article::assets::tests::append_matching_figshare_ids_dedupes_sorts_and_caps1816 PASS [ 0.010s] biomcp-cli entities::article::assets::tests::asset_bytes_match_filename_pins_the_committed_leading_bytes1817 PASS [ 0.009s] biomcp-cli entities::article::assets::tests::figshare_same_paper_matches_doi_or_normalized_exact_title1818 PASS [ 0.009s] biomcp-cli entities::article::assets::tests::collision_keys_are_stable_while_unique_names_keep_legacy_handles1819 PASS [ 0.009s] biomcp-cli entities::article::assets::tests::final_source_classification_distinguishes_absence_from_failure1820 PASS [ 0.010s] biomcp-cli entities::article::assets::tests::europe_pmc_manifest_retains_pmc_license_source_and_exact_member_facts1821 PASS [ 0.011s] biomcp-cli entities::article::assets::tests::build_manifest_hashes_binary_bytes_and_quotes_retrieval_commands1822 PASS [ 0.011s] biomcp-cli entities::article::assets::tests::hash_dedup_preserves_coverage_for_distinct_provider_filenames1823 PASS [ 0.008s] biomcp-cli entities::article::assets::tests::linked_budgets_are_deterministic_at_the_exact_boundaries1824 PASS [ 0.009s] biomcp-cli entities::article::assets::tests::identity_then_hash_merge_keeps_primary_bytes_and_all_routes1825 PASS [ 0.010s] biomcp-cli entities::article::assets::tests::malformed_jats_is_a_source_failure_instead_of_silent_absence1826 PASS [ 0.010s] biomcp-cli entities::article::assets::tests::zero_byte_routes_keep_stable_collision_keys_and_refuse_with_empty_response1827 PASS [ 0.011s] biomcp-cli entities::article::assets::tests::source_attempt_budget_reports_timeout_without_collapsing_other_outcomes1828 PASS [ 0.011s] biomcp-cli entities::article::assets::tests::wrong_type_bytes_keep_stable_collision_keys_and_refuse_with_unusable_asset1829 PASS [ 0.011s] biomcp-cli entities::article::assets::tests::source_attempt_outcomes_are_stable_json1830 PASS [ 0.012s] biomcp-cli entities::article::backends::tests::litsense2_candidates_apply_hydrated_journal_and_date_filters1831 PASS [ 0.012s] biomcp-cli entities::article::backends::tests::litsense2_candidates_deduplicate_and_hydrate_pubmed_metadata1832 PASS [ 0.008s] biomcp-cli entities::article::backends::tests::search_pubmed_page_cleans_question_keyword_before_esearch1833 PASS [ 0.010s] biomcp-cli entities::article::backends::tests::search_pubmed_page_applies_offset_after_filtering1834 PASS [ 0.011s] biomcp-cli entities::article::backends::tests::repeated_backend_requests_stop_before_the_fifty_first_future_runs1835 PASS [ 0.012s] biomcp-cli entities::article::backends::tests::search_pubmed_page_hard_fails_on_blank_title1836 PASS [ 0.026s] biomcp-cli entities::article::backends::tests::expired_car_admission_records_each_planned_identity_once1837 PASS [ 0.008s] biomcp-cli entities::article::backends::tests::search_pubmed_page_rejects_no_preprints1838 PASS [ 0.011s] biomcp-cli entities::article::backends::tests::search_pubmed_page_refills_across_batches_after_filtering1839 PASS [ 0.009s] biomcp-cli entities::article::backends::tests::search_pubmed_page_rejects_open_access1840 PASS [ 0.010s] biomcp-cli entities::article::backends::tests::search_pubmed_page_sends_standalone_not_retraction_term1841 PASS [ 0.037s] biomcp-cli entities::article::assets::tests::pow_capture_projects_named_pmc_gate_coverage_without_an_asset1842 PASS [ 0.011s] biomcp-cli entities::article::backends::tests::semantic_scholar_candidates_keep_unknown_retraction_rows1843 PASS [ 0.009s] biomcp-cli entities::article::backends::tests::ticket_376_article_source_status_contracts_semantic_scholar_unavailable_status_without_key1844 PASS [ 0.010s] biomcp-cli entities::article::backends::tests::semantic_scholar_candidates_send_effective_year_filter1845 PASS [ 0.009s] biomcp-cli entities::article::backends::tests::semantic_scholar_year_filter_uses_normalized_date_bounds1846 PASS [ 0.008s] biomcp-cli entities::article::batch::tests::article_batch_item_projection_keeps_requested_id_year_and_top_entities1847 PASS [ 0.009s] biomcp-cli entities::article::batch::tests::article_batch_rejects_more_than_max_ids_before_network1848 PASS [ 0.008s] biomcp-cli entities::article::batch::tests::batch_semantic_scholar_merge_fills_fields_and_skips_none_rows_and_pmcid_only1849 PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::article_source_pubmed_priority1850 PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::article_source_litsense2_priority1851 PASS [ 0.009s] biomcp-cli entities::article::batch::tests::post_construction_semantic_scholar_failure_emits_one_normalized_warning1852 PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_default_cap_ignores_empty_pmid_rows1853 PASS [ 0.012s] biomcp-cli entities::article::candidates::tests::federated_relevance_uses_source_local_position_not_merge_order1854 PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_default_cap_limits_three_source_pool1855 PASS [ 0.051s] biomcp-cli entities::article::backends::tests::europepmc_cursor_walk_stops_on_an_absent_cursor_after_a_page_with_rows1856 PASS [ 0.008s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_explicit_cap_uses_primary_source_native_position1857 PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_default_cap_skips_two_source_pools1858 PASS [ 0.056s] biomcp-cli entities::article::assets::tests::manifest_cache_reuses_fresh_entries_and_discards_expired_or_corrupt_entries1859 PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_explicit_cap_equal_limit_disables_capping1860 PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_explicit_cap_applies_on_two_source_pools1861 PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::finalize_article_candidates_preserves_source_local_position1862 PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::merge_article_candidates_dedups_transitively_across_identifiers1863 PASS [ 0.009s] biomcp-cli entities::article::candidates::tests::merge_article_candidates_keeps_min_source_local_position1864 PASS [ 0.008s] biomcp-cli entities::article::candidates::tests::pubmed_led_rescue_preserves_per_source_positions_through_merge1865 PASS [ 0.010s] biomcp-cli entities::article::candidates::tests::merge_preserves_semantic_scholar_identifiers1866 PASS [ 0.011s] biomcp-cli entities::article::candidates::tests::pubmed_unique_row_survives_first_page_in_mixed_federation1867 PASS [ 0.009s] biomcp-cli entities::article::detail::tests::get_rejects_pdf_without_fulltext_section1868 PASS [ 0.012s] biomcp-cli entities::article::detail::tests::europepmc_fallback_keeps_authorship_provenance_and_flag1869 PASS [ 0.008s] biomcp-cli entities::article::detail::tests::is_doi_basic1870 PASS [ 0.059s] biomcp-cli entities::article::backends::tests::pubtator_search_commits_transformed_page_before_one_terminal_event1871 PASS [ 0.009s] biomcp-cli entities::article::detail::tests::maps_pubmed_citation_to_available_indexing_without_flattening1872 PASS [ 0.010s] biomcp-cli entities::article::detail::tests::parse_article_id_basic1873 PASS [ 0.014s] biomcp-cli entities::article::detail::tests::indexing_timeout_and_missing_pmid_become_unavailable1874 PASS [ 0.009s] biomcp-cli entities::article::detail::tests::parse_article_id_publisher_pii_is_invalid1875 PASS [ 0.009s] biomcp-cli entities::article::detail::tests::parse_pmcid_basic1876 PASS [ 0.007s] biomcp-cli entities::article::detail::tests::parse_sections_supports_tldr_indexing_and_all1877 PASS [ 0.009s] biomcp-cli entities::article::detail::tests::parse_pmid_accepts_all_digit_identifiers_past_u321878 PASS [ 0.009s] biomcp-cli entities::article::detail::tests::parse_pmid_basic1879 PASS [ 0.009s] biomcp-cli entities::article::detail::tests::pubtator_lag_error_is_400_or_404_only1880 PASS [ 0.009s] biomcp-cli entities::article::detail::tests::unavailable_indexing_maps_every_cause_to_a_static_failure1881 PASS [ 0.011s] biomcp-cli entities::article::enrichment::tests::empty_enrichment_plan_makes_no_provider_requests1882 PASS [ 0.008s] biomcp-cli entities::article::enrichment::tests::semantic_scholar_merge_treats_zero_citation_as_missing1883 PASS [ 0.012s] biomcp-cli entities::article::enrichment::tests::article_base_merge_fills_abstract_when_semantic_scholar_has_none1884 PASS [ 0.008s] biomcp-cli entities::article::filters::tests::article_gene_accepts_one_trimmed_whitespace_free_token1885 PASS [ 0.011s] biomcp-cli entities::article::enrichment::tests::semantic_scholar_merge_preserves_existing_nonempty_primary_metadata1886 PASS [ 0.009s] biomcp-cli entities::article::filters::tests::article_gene_rejects_empty_or_unicode_whitespace_with_fixed_guidance1887 PASS [ 0.014s] biomcp-cli entities::article::enrichment::tests::semantic_scholar_merge_fills_missing_citation_and_abstract_metadata1888 PASS [ 0.009s] biomcp-cli entities::article::filters::tests::exclude_retracted_keeps_unknown_retraction_status1889 PASS [ 0.009s] biomcp-cli entities::article::filters::tests::literal_colons_false_prefixes_and_quote_bytes_remain_keywords1890 PASS [ 0.007s] biomcp-cli entities::article::filters::tests::native_keyword_fields_are_rejected_with_typed_guidance1891 PASS [ 0.009s] biomcp-cli entities::article::filters::tests::exclude_retracted_only_filters_confirmed_retractions1892 PASS [ 0.009s] biomcp-cli entities::article::filters::tests::normalize_article_type_accepts_aliases1893 PASS [ 0.008s] biomcp-cli entities::article::filters::tests::normalized_date_bounds_normalizes_partial_dates1894 PASS [ 0.009s] biomcp-cli entities::article::filters::tests::normalized_date_bounds_rejects_bad_date_to_with_flag_name1895 PASS [ 0.008s] biomcp-cli entities::article::filters::tests::normalized_date_bounds_rejects_bad_month1896 PASS [ 0.008s] biomcp-cli entities::article::filters::tests::normalized_date_bounds_rejects_inverted_range1897 PASS [ 0.008s] biomcp-cli entities::article::filters::tests::partial_date_normalization_and_filtering_are_consistent1898 PASS [ 0.009s] biomcp-cli entities::article::filters::tests::ordinary_bracket_and_colon_keywords_remain_valid1899 PASS [ 0.008s] biomcp-cli entities::article::filters::tests::reserved_article_keyword_fields_have_precise_boundaries_and_guidance1900 PASS [ 0.009s] biomcp-cli entities::article::filters::tests::reserved_article_keyword_quote_escape_is_per_label_and_field_ordered1901 PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::abstract_merge_preserves_nonblank_base_and_fills_missing_or_blank_values1902 PASS [ 0.055s] biomcp-cli entities::article::detail::tests::all_digit_pmid_past_u32_reports_not_found_with_the_full_identifier1903 PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::fulltext_cache_key_is_kind_aware_and_versioned1904 PASS [ 0.010s] biomcp-cli entities::article::fulltext::tests::attempt_state_orders_and_deduplicates_healthy_sources_without_erasing_failure1905 PASS [ 0.008s] biomcp-cli entities::article::fulltext::tests::only_documented_absence_statuses_are_healthy_empty1906 PASS [ 0.008s] biomcp-cli entities::article::fulltext::tests::partial_coverage_and_source_health_fold_independently_in_any_order1907 PASS [ 0.008s] biomcp-cli entities::article::fulltext::tests::pdf_discovery_preserves_ineligible_empty_data_and_failure1908 PASS [ 0.007s] biomcp-cli entities::article::fulltext::tests::semantic_scholar_pdf_policy_rejects_unsafe_urls_without_echoing_them1909 PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::semantic_scholar_pdf_policy_accepts_publisher_hosts_before_contact1910 PASS [ 0.007s] biomcp-cli entities::article::fulltext::tests::typed_timeout_failure_survives_later_healthy_miss_in_final_fold1911 PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::xml_conversion_rejects_malformed_unsupported_and_accepts_usable_text1912 PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::xml_fulltext_attempts_try_pmc_sources_before_med_fallback1913 PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::xml_fulltext_attempts_use_med_when_only_pmid_is_available1914 PASS [ 0.009s] biomcp-cli entities::article::fulltext::tests::xml_source_metadata_is_truthful1915 PASS [ 0.054s] biomcp-cli entities::article::fulltext::tests::abstract_only_xml_continues_to_a_later_body_winner1916 PASS [ 0.060s] biomcp-cli entities::article::fulltext::tests::earlier_fulltext_winner_overrides_failed_pdf_discovery1917 PASS [ 0.074s] biomcp-cli entities::article::fulltext::tests::resolver_continues_after_bad_xml_and_later_data_overrides_failures1918 PASS [ 0.079s] biomcp-cli entities::article::fulltext::tests::stale_v3_partial_artifact_cannot_become_the_current_winner1919 PASS [ 0.070s] biomcp-cli entities::article::graph::tests::cache::a_bypassed_cache_reads_and_writes_nothing1920 PASS [ 0.129s] biomcp-cli entities::article::fulltext::tests::pmc_bot_challenge_page_names_its_reason_and_keeps_the_pdf_ladder_running1921 PASS [ 0.139s] biomcp-cli entities::article::graph::tests::admission::citation_evidence_bounds_a_panicking_jats_worker_and_releases_the_permit1922 PASS [ 0.133s] biomcp-cli entities::article::graph::tests::cache::a_forced_call_serves_a_stored_fulltext_entry1923 PASS [ 0.170s] biomcp-cli entities::article::graph::tests::cache::a_corrupt_record_is_a_miss_and_is_replaced1924 PASS [ 0.095s] biomcp-cli entities::article::graph::tests::cache::a_non_evidence_status_is_never_cached1925 PASS [ 0.087s] biomcp-cli entities::article::graph::tests::cache::a_write_failure_leaves_the_outcome_unchanged1926 PASS [ 0.190s] biomcp-cli entities::article::graph::tests::cache::a_forced_call_ignores_a_stored_provider_context_entry1927 PASS [ 0.182s] biomcp-cli entities::article::graph::tests::cache::a_future_schema_version_is_a_miss1928 PASS [ 0.122s] biomcp-cli entities::article::graph::tests::cache::an_off_mode_guard_does_not_latch_the_bypass_for_later_reads1929 PASS [ 0.120s] biomcp-cli entities::article::graph::tests::cache::cross_spelling_call_is_served_for_the_same_resolved_pair1930 PASS [ 0.110s] biomcp-cli entities::article::graph::tests::cache::repeat_call_serves_the_stored_edge_without_graph_or_fulltext_requests1931 PASS [ 0.160s] biomcp-cli entities::article::graph::tests::cache::an_expired_entry_refetches1932 PASS [ 0.127s] biomcp-cli entities::article::graph::tests::cache::infinite_mode_serves_an_expired_entry1933 PASS [ 0.099s] biomcp-cli entities::article::graph::tests::citation_evidence_answers_from_opencitations_when_the_seed_hop_is_refused1934 PASS [ 0.098s] biomcp-cli entities::article::graph::tests::citation_evidence_compares_paper_ids_case_insensitively1935 PASS [ 0.107s] biomcp-cli entities::article::graph::tests::citation_evidence_bounds_the_traversal_at_three_pages1936 PASS [ 0.074s] biomcp-cli entities::article::graph::tests::citation_evidence_exhausted_pages_return_the_directed_not_found1937 PASS [ 0.095s] biomcp-cli entities::article::graph::tests::citation_evidence_deduplicates_duplicate_edges_and_contexts1938 PASS [ 0.134s] biomcp-cli entities::article::graph::tests::citation_evidence_confirms_the_edge_the_index_holds1939 PASS [ 0.109s] biomcp-cli entities::article::graph::tests::citation_evidence_fails_closed_on_a_matching_row_with_a_hostile_oci1940 PASS [ 0.103s] biomcp-cli entities::article::graph::tests::citation_evidence_follows_the_advertised_next_offset1941 PASS [ 0.096s] biomcp-cli entities::article::graph::tests::citation_evidence_keeps_the_dead_end_when_no_row_matches1942 PASS [ 0.080s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_for_a_resolved_reference1943 PASS [ 0.078s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_for_an_unlinked_marker1944 PASS [ 0.084s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_with_provider_context1945 PASS [ 0.114s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_for_linked_fulltext1946 PASS [ 0.095s] biomcp-cli entities::article::graph::tests::citation_evidence_leaves_the_index_unrequested_without_a_normalizable_doi1947 PASS [ 0.089s] biomcp-cli entities::article::graph::tests::citation_evidence_names_a_malformed_identifier_when_the_matched_row_fails_the_shape1948 PASS [ 0.082s] biomcp-cli entities::article::graph::tests::citation_evidence_names_both_providers_when_the_answered_index_lacks_the_edge1949 PASS [ 0.787s] biomcp-cli entities::article::fulltext::tests::html_and_pdf_attempts_classify_transport_and_conversion_failures1950 PASS [ 2.014s] biomcp-cli cache::manager::tests::write_security_tests::put_deadline_transition_is_exactly_at_writer_commit1951 PASS [ 0.056s] biomcp-cli entities::article::graph::tests::citation_evidence_rejects_a_mismatched_page_offset1952 PASS [ 0.106s] biomcp-cli entities::article::graph::tests::citation_evidence_nulls_a_creation_outside_the_shape_and_never_echoes_provider_text1953 PASS [ 0.085s] biomcp-cli entities::article::graph::tests::citation_evidence_provider_context_needs_no_fulltext_request1954 PASS [ 0.064s] biomcp-cli entities::article::graph::tests::citation_evidence_rejects_a_page_with_more_rows_than_the_page_size1955 PASS [ 0.917s] biomcp-cli entities::article::enrichment::tests::metadata_fallback_warns_only_when_no_source_covers_the_row1956 PASS [ 0.046s] biomcp-cli entities::article::graph::tests::citation_evidence_reports_an_unaddressable_index_when_inputs_have_no_doi1957 PASS [ 0.036s] biomcp-cli entities::article::graph::tests::citation_evidence_returns_the_bounded_error_when_the_graph_deadline_expires1958 PASS [ 0.011s] biomcp-cli entities::article::graph::tests::citations_map_semantic_scholar_edges1959 PASS [ 0.009s] biomcp-cli entities::article::graph::tests::empty_pages_follow_provider_next_for_both_directions1960 PASS [ 0.011s] biomcp-cli entities::article::graph::tests::graph_continuation_quotes_the_trimmed_caller_id1961 PASS [ 0.010s] biomcp-cli entities::article::graph::tests::graph_edge_evidence_meta_orders_arguments_per_direction1962 PASS [ 0.070s] biomcp-cli entities::article::graph::tests::citation_evidence_reuses_the_resolved_citing_seed_when_the_cited_seed_is_refused1963 PASS [ 0.010s] biomcp-cli entities::article::graph::tests::graph_page_validation_fails_closed_for_bad_offsets_and_next_values1964 PASS [ 0.010s] biomcp-cli entities::article::graph::tests::graph_pages_preserve_provider_order_and_duplicate_edges1965 PASS [ 0.072s] biomcp-cli entities::article::graph::tests::citation_evidence_stops_after_the_matching_page1966 PASS [ 0.010s] biomcp-cli entities::article::graph::tests::jats_extraction_seam_controls_the_blocking_parse_outcome1967 PASS [ 0.010s] biomcp-cli entities::article::graph::tests::recommendations_map_semantic_scholar_papers1968 PASS [ 0.013s] biomcp-cli entities::article::graph::tests::receipted_provider_only_citation_survives_article_graph_mapping1969 PASS [ 0.010s] biomcp-cli entities::article::graph::tests::references_map_semantic_scholar_edges1970 PASS [ 1.670s] biomcp-cli cli::stale_json_note_tests::a_day_cached_gwas_search_inside_the_day_window_has_no_cache_note1971 PASS [ 0.009s] biomcp-cli entities::article::graph::tests::semantic_scholar_lookup_id_supports_arxiv_and_paper_ids1972 PASS [ 0.011s] biomcp-cli entities::article::identity_verification::tests::canonical_response_subset_ignores_arbitrary_relation_payloads1973 PASS [ 0.010s] biomcp-cli entities::article::identity_verification::tests::empty_identity_anomaly_changes_the_response_digest1974 PASS [ 0.021s] biomcp-cli entities::article::identity_verification::tests::arbitrary_relation_membership_cannot_confirm_typed_pubtator_linkage1975 PASS [ 0.022s] biomcp-cli entities::article::identity_verification::tests::exact_allele_linked_to_another_gene_is_contradictory1976 PASS [ 0.019s] biomcp-cli entities::article::identity_verification::tests::fulltext_export_keys_the_document_by_pmcid_and_confirms1977 PASS [ 0.019s] biomcp-cli entities::article::identity_verification::tests::fulltext_pmcid_key_without_an_agreeing_pmid_is_an_anomaly1978 PASS [ 0.018s] biomcp-cli entities::article::identity_verification::tests::inconsistent_typed_gene_ids_cannot_confirm1979 PASS [ 0.013s] biomcp-cli entities::article::identity_verification::tests::intronic_coordinates_are_not_collapsed_into_a_contradiction1980 PASS [ 0.013s] biomcp-cli entities::article::identity_verification::tests::ldh_confirms_an_annotation_in_the_live_response_shape1981 PASS [ 0.018s] biomcp-cli entities::article::identity_verification::tests::ldh_explicit_requested_caid_wrong_gene_is_contradictory1982 PASS [ 0.015s] biomcp-cli entities::article::identity_verification::tests::ldh_ignores_a_selector_quoted_from_a_supplementary_file1983 PASS [ 0.019s] biomcp-cli entities::article::identity_verification::tests::ldh_unrequested_caid_in_a_multi_caid_annotation_is_ignored1984 PASS [ 0.018s] biomcp-cli entities::article::identity_verification::tests::ldh_wrong_pmcid_is_incomplete_without_a_contradiction1985 PASS [ 0.020s] biomcp-cli entities::article::identity_verification::tests::numeric_pmid_must_agree_with_returned_document_id1986 PASS [ 0.021s] biomcp-cli entities::article::identity_verification::tests::overlong_linkage_fields_are_incomplete_and_ineligible1987 PASS [ 0.015s] biomcp-cli entities::article::identity_verification::tests::receipt_backed_ldh_malformed_capture_is_incomplete_without_a_linkage1988 PASS [ 0.018s] biomcp-cli entities::article::identity_verification::tests::receipt_backed_ldh_direct_capture_confirms_an_article_page_linkage1989 PASS [ 0.013s] biomcp-cli entities::article::identity_verification::tests::requested_coding_or_protein_alias_can_confirm1990 PASS [ 0.022s] biomcp-cli entities::article::identity_verification::tests::repeated_gene_annotations_collapse_into_one_observation1991 PASS [ 0.019s] biomcp-cli entities::article::identity_verification::tests::string_normalized_gene_id_cannot_confirm_typed_linkage1992 PASS [ 0.023s] biomcp-cli entities::article::identity_verification::tests::typed_corresponding_gene_confirms_and_deduplicates1993 PASS [ 0.020s] biomcp-cli entities::article::identity_verification::tests::typed_corresponding_gene_requires_the_returned_pmid1994 PASS [ 0.010s] biomcp-cli entities::article::planner::tests::article_type_limitation_note_tracks_compatible_source_sets1995 PASS [ 0.020s] biomcp-cli entities::article::identity_verification::tests::unavailable_verification_is_incomplete_and_unverified1996 PASS [ 0.021s] biomcp-cli entities::article::identity_verification::tests::typed_linkage_can_span_document_passages1997 PASS [ 0.009s] biomcp-cli entities::article::planner::tests::explicit_article_sources_have_no_cross_provider_enrichment1998 PASS [ 0.009s] biomcp-cli entities::article::planner::tests::litsense2_search_enabled_only_for_explicit_litsense2_source1999 PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_rejects_litsense2_open_access_filter2000 PASS [ 0.008s] biomcp-cli entities::article::planner::tests::planner_rejects_author_on_incapable_explicit_sourcesloading 82 hidden lines…
2083 PASS [ 0.014s] biomcp-cli entities::article::ranking::tests::keyword::compound_name_variants_match_symmetrically_in_ranking2084 PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::keyword::keyword_tokenization_decomposes_multi_word_into_separate_anchors2085 PASS [ 0.012s] biomcp-cli entities::article::ranking::tests::keyword::keyword_tokenization_dedups_structured_filter_overlap2086 PASS [ 0.008s] biomcp-cli entities::article::ranking::tests::policy::article_relevance_ranking_policy_formats_modes2087 PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::keyword::multi_concept_keyword_all_tokens_in_title_scores_tier32088 PASS [ 0.008s] biomcp-cli entities::article::ranking::tests::policy::search_article_ranking_flags_validate_cleanly2089 PASS [ 0.008s] biomcp-cli entities::article::ranking::tests::policy::default_ranking_mode_depends_on_keyword_presence2090 PASS [ 0.013s] biomcp-cli entities::article::ranking::tests::keyword::multi_concept_keyword_partial_match_scores_nonzero2091 PASS [ 0.009s] biomcp-cli entities::article::search::deadline::tests::deadline_budget_reads_the_injected_clock2092 PASS [ 0.008s] biomcp-cli entities::article::search::deadline::tests::federated_leg_timeout_reads_the_injected_clock2093 PASS [ 0.008s] biomcp-cli entities::article::search::tests::deadline::both_primaries_failing_prefers_a_deadline_error_over_the_fast_failure2094 PASS [ 0.010s] biomcp-cli entities::article::search::tests::deadline::deadline_recognition_covers_the_io_cancellation_shape2095 PASS [ 0.008s] biomcp-cli entities::article::search::tests::deadline::deep_offset_is_refused_on_every_sort_before_any_request2096 PASS [ 0.017s] biomcp-cli entities::article::search::tests::deadline::construction_under_a_held_epoch_lock_honors_the_deadline2097 PASS [ 0.011s] biomcp-cli entities::article::search::tests::deadline::held_fixture_replies_self_release_at_their_own_bound2098 PASS [ 0.142s] biomcp-cli entities::article::search::tests::deadline::healthy_federated_search_keeps_output_shape_and_records_timings2099 PASS [ 0.010s] biomcp-cli entities::article::search::tests::finalizer::federated_collection_keeps_available_rows_when_semantic_scholar_is_unavailable2100 PASS [ 0.010s] biomcp-cli entities::article::search::tests::finalizer::pubmed_only_rows_use_common_finalizer_for_sorting2101 PASS [ 0.009s] biomcp-cli entities::article::search::tests::finalizer::semantic_scholar_status_tracker_keeps_batch_failure_non_fatal2102 PASS [ 0.011s] biomcp-cli entities::article::search::tests::integration::federated_merge_includes_pubmed_rows_in_matched_sources2103 PASS [ 0.013s] biomcp-cli entities::article::search::tests::integration::federated_merge_keeps_non_europepmc_matches_under_default_retraction_filter2104 PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::federated_offset_applied_after_merge_not_per_leg2105 PASS [ 0.009s] biomcp-cli entities::article::search::tests::merge::federated_sort_orders_merged_results_for_citations_and_date2106 PASS [ 0.009s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_dedups_with_pubtator_priority2107 PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_preserves_known_retraction_status_from_later_duplicate2108 PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_records_litsense2_in_matched_sources2109 PASS [ 0.009s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_returns_first_error_when_both_fail2110 PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_returns_surviving_europe_leg2111 PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_returns_surviving_pubtator_leg2112 PASS [ 0.010s] biomcp-cli entities::article::search::tests::merge::merge_federated_pages_sorts_surviving_leg_before_offset2113 PASS [ 0.009s] biomcp-cli entities::article::search::tests::raw_federated_acquisition_marks_known_and_unknown_route_caps2114 PASS [ 0.010s] biomcp-cli entities::article::search::tests::raw_federated_acquisition_retains_auxiliary_rows_when_primary_sources_fail2115 PASS [ 0.122s] biomcp-cli entities::article::search::tests::relevance_paging::europepmc_relevance_offset_page_lines_up_with_cursor_page2116 PASS [ 0.011s] biomcp-cli entities::article::search::tests::type_capable::both_available_sources_survive_in_source_order_without_degradation2117 PASS [ 0.010s] biomcp-cli entities::article::search::tests::type_capable::dual_failure_preserves_europe_pmc_error2118 PASS [ 0.009s] biomcp-cli entities::article::search::tests::type_capable::dual_timeout_returns_deterministic_source_unavailable_error2119 PASS [ 0.009s] biomcp-cli entities::article::search::tests::type_capable::europe_pmc_rows_and_total_survive_pubmed_failure2120 PASS [ 0.009s] biomcp-cli entities::article::search::tests::type_capable::pubmed_error_is_used_when_europe_pmc_timed_out2121 PASS [ 0.010s] biomcp-cli entities::article::search::tests::type_capable::pubmed_rows_and_total_survive_europe_pmc_failure2122 PASS [ 0.009s] biomcp-cli entities::article::search::tests::validate_search_page_request_rejects_invalid_inputs_before_backend_io2123 PASS [ 0.009s] biomcp-cli entities::article::supplement_search::tests::an_empty_archive_is_reported_as_a_read_file2124 PASS [ 0.263s] biomcp-cli entities::article::supplement_search::tests::extraction_timeout_kills_and_reaps_the_worker2125 PASS [ 0.009s] biomcp-cli entities::article::supplement_search::tests::unicode_search_context_fits_the_byte_limit2126 PASS [ 0.009s] biomcp-cli entities::article::tests::article_error_copy_and_warn_threshold_match_contract2127 PASS [ 0.010s] biomcp-cli entities::article::tests::article_ranking_mode_parses_supported_values2128 PASS [ 0.009s] biomcp-cli entities::article::tests::article_search_result_serializes_unknown_retraction_as_null2129 PASS [ 0.010s] biomcp-cli entities::article::tests::article_section_names_include_tldr2130 PASS [ 0.009s] biomcp-cli entities::article::tests::article_section_outcomes_default_to_keyed_not_requested_and_reject_foreign_keys2131 PASS [ 0.009s] biomcp-cli entities::article::tests::article_sort_default_is_relevance2132 PASS [ 0.009s] biomcp-cli entities::article::tests::article_sort_parses_supported_values2133 PASS [ 0.009s] biomcp-cli entities::article::tests::article_source_filter_parses_supported_values2134 PASS [ 0.008s] biomcp-cli entities::article::tests::article_source_litsense2_display_name2135 PASS [ 1.551s] biomcp-cli entities::article::graph::tests::citation_evidence_marks_the_index_unavailable_when_the_deadline_leaves_no_room2136 PASS [ 0.009s] biomcp-cli entities::article::tests::article_source_pubmed_display_name2137 PASS [ 0.010s] biomcp-cli entities::article::tests::empty_filters_default_sort_is_relevance2138 PASS [ 0.009s] biomcp-cli entities::article::tests::graph_and_recommendation_nonempty_shapes_remain_compatible2139 PASS [ 0.009s] biomcp-cli entities::article::tests::graph_and_recommendation_primary_collections_serialize_when_empty2140 PASS [ 0.009s] biomcp-cli entities::article::tests::invalid_article_id_error_names_supported_types_and_publisher_limit2141 PASS [ 0.010s] biomcp-cli entities::article::tests::requested_fulltext_coverage_is_additive_and_uses_closed_values2142 PASS [ 0.008s] biomcp-cli entities::article::tests::search_page_rejects_max_per_source_above_limit_before_backend_planning2143 PASS [ 0.008s] biomcp-cli entities::article::tests::search_page_rejects_unknown_article_type_before_backend_planning2144 PASS [ 0.020s] biomcp-cli entities::article::variant_search::tests::ambiguous_fallback_uses_only_request_compatible_shared_source_aliases2145 PASS [ 0.022s] biomcp-cli entities::article::variant_search::tests::annotation_pre_call_stop_is_attributed_to_pubtator2146 PASS [ 0.013s] biomcp-cli entities::article::variant_search::tests::article_search_refuses_a_bare_clinvar_variation_id2147 PASS [ 0.021s] biomcp-cli entities::article::variant_search::tests::authoritative_refseq_strict_plans_include_only_known_supplied_proteins2148 PASS [ 0.021s] biomcp-cli entities::article::variant_search::tests::candidate_trace_is_capped_and_serializes_only_stage_facts2149 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::canonical_equivalence_aggregation_uses_set_based_state_precedence2150 PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::canonical_aliases_fill_only_unused_strict_alias_slots2151 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::canonical_equivalence_queries_require_explicit_versioned_refseq_inputs2152 PASS [ 0.018s] biomcp-cli entities::article::variant_search::tests::citation_pre_call_stop_is_attributed_to_myvariant2153 PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::compact_projection_omits_verbose_fields_and_preserves_unknown_retraction2154 PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::confirmed_car_genomic_aliases_travel_with_the_gene_symbol2155 PASS [ 0.021s] biomcp-cli entities::article::variant_search::tests::debug_plan_reports_strict_route_for_resolved_and_ambiguous_union_requests2156 PASS [ 1.214s] biomcp-cli entities::article::search::tests::deadline::deadline_expiry_without_rows_names_the_deadline_error2157 PASS [ 1.213s] biomcp-cli entities::article::search::tests::deadline::fast_pubtator_failure_does_not_hide_the_deadline_error2158 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::debug_plan_work_allocation_reconciles_parent_budgets_and_recorded_routes2159 PASS [ 0.022s] biomcp-cli entities::article::variant_search::tests::empty_debug_plan_has_complete_candidate_trace2160 PASS [ 3.034s] biomcp-cli cli::update::tests::archive_larger_than_shared_default_reaches_verification_and_extraction2161 PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::exact_and_identity_request_allowances_are_shared_and_bounded2162 PASS [ 2.264s] biomcp-cli entities::article::graph::tests::citation_evidence_keeps_the_dead_end_when_the_index_fails2163 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::exact_lexical_allowance_survives_strict_budget_exhaustion2164 PASS [ 0.187s] biomcp-cli entities::article::variant_search::tests::empty_search_where_every_source_answered_stays_an_ok_result2165 PASS [ 1.515s] biomcp-cli entities::article::search::tests::deadline::single_backend_deadline_keeps_fetched_rows_and_names_the_source2166 PASS [ 0.110s] biomcp-cli entities::article::variant_search::tests::gene_change_search_keeps_the_pubtator_entity_and_searches_by_its_id2167 PASS [ 0.013s] biomcp-cli entities::article::variant_search::tests::generated_and_explicit_request_ids_share_duplicate_check2168 PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::identity_verification_allowance_survives_strict_budget_exhaustion2169 PASS [ 0.014s] biomcp-cli entities::article::variant_search::tests::invalid_items_are_retained_without_provider_execution2170 PASS [ 0.017s] biomcp-cli entities::article::variant_search::tests::invocation_deadline_stops_new_provider_work_and_reports_one_scope2171 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::item_and_request_work_budgets_stop_at_fifty_and_five_hundred2172 PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::item_errors_preserve_runtime_error_classification2173 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::ldh_direct_annotation_fetches_stop_after_ten_per_item2174 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::ldh_medium_lookup_is_one_per_item_and_survives_an_exhausted_item_budget2175 PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::lexical_alias_budget_preserves_the_requested_identity_and_reports_truncation2176 PASS [ 0.226s] biomcp-cli entities::article::variant_search::tests::exact_mode_sends_one_phrase_quoted_query_per_source_without_resolution2177 PASS [ 3.381s] biomcp-cli cli::tests::printed_card_commands::braf_v600e_card_prints_follow_ups_on_the_headline_coordinate2178 PASS [ 0.113s] biomcp-cli entities::article::variant_search::tests::litvar_drops_a_non_matching_autocomplete_entry2179 PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::missing_confirmed_record_during_citation_hydration_is_unavailable2180 PASS [ 0.022s] biomcp-cli entities::article::variant_search::tests::mixed_usable_and_terminal_hard_batch_preserves_items_and_succeeds2181 PASS [ 0.706s] biomcp-cli entities::article::variant_search::tests::debug_plan_reports_yield_per_alias_per_source_with_cut_lists2182 PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::non_object_batch_item_is_rejected2183 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::ordered_executor_never_runs_more_than_two_items2184 PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::provider_plan_reports_mixed_outcomes_and_unknown_cache_truthfully2185 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::ranking_counts_only_the_best_alias_position_per_route_and_provider2186 PASS [ 0.148s] biomcp-cli entities::article::variant_search::tests::mid_route_expiry_preserves_materialized_units_across_strategy_identity_matrix2187 PASS [ 3.112s] biomcp-cli entities::article::graph::tests::admission::citation_evidence_deadline_bounds_late_jats_workers_under_one_permit2188 PASS [ 0.011s] biomcp-cli entities::article::variant_search::tests::recorded_provider_calls_drive_public_and_debug_terminal_statuses2189 PASS [ 0.011s] biomcp-cli entities::article::variant_search::tests::refseq_exact_aliases_are_only_caller_literal_forms2190 PASS [ 0.017s] biomcp-cli entities::article::variant_search::tests::resolved_exact_aliases_include_validated_source_forms_once2191 PASS [ 0.130s] biomcp-cli entities::article::variant_search::tests::no_entity_annotation_run_names_the_miss_instead_of_complete_empty2192 PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::source_work_precedence_distinguishes_timeout_partial_and_unstarted2193 PASS [ 0.024s] biomcp-cli entities::article::variant_search::tests::strict_provider_queries_keep_coding_collisions_distinct2194 PASS [ 0.016s] biomcp-cli entities::article::variant_search::tests::structured_genomic_identity_is_the_resolution_lookup_key2195 PASS [ 0.020s] biomcp-cli entities::article::variant_search::tests::structured_identity_accepts_only_documented_anchors2196 PASS [ 0.012s] biomcp-cli entities::article::variant_search::tests::structured_input_enforces_byte_count_item_count_and_duplicate_ids2197 PASS [ 0.114s] biomcp-cli entities::article::variant_search::tests::rsid_search_keeps_the_pubtator_entity_and_searches_by_its_id2198 PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::terminal_reconciliation_reports_residual_materialized_work_as_logical_cap2199 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::terminal_state_does_not_invent_an_internal_stop_for_a_provider_outage2200 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::terminal_state_is_complete_and_untruncated_after_an_auxiliary_budget_stop2201 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::terminal_state_is_complete_when_pagination_withholds_candidates2202 PASS [ 0.009s] biomcp-cli entities::article::variant_search::tests::terminal_state_is_incomplete_and_truncated_when_requested_work_is_unperformed2203 PASS [ 0.010s] biomcp-cli entities::article::variant_search::tests::transitive_merge_retains_associated_variant_provenance2204 PASS [ 4.251s] biomcp-cli cli::discover::tests::discover_inline_search_failure_propagates2205 PASS [ 0.209s] biomcp-cli entities::article::variant_search::tests::real_car_and_ldh_captures_confirm_tp53_article_identity2206 PASS [ 0.023s] biomcp-cli entities::article::variant_search::tests::usable_partial_degradation_stays_nonterminal2207 PASS [ 0.019s] biomcp-cli entities::article::variant_search::tests::visible_candidate_trace_retains_returned_pmid_when_prefix_is_full2208 PASS [ 0.009s] biomcp-cli entities::author::detail_tests::detail_requires_matching_decimal_id_and_nonblank_name2209 PASS [ 0.018s] biomcp-cli entities::article::variant_search::tests::zero_deadline_ledger_uses_independent_strategy_and_identity_oracles2210 PASS [ 0.011s] biomcp-cli entities::author::detail_tests::provider_failure_does_not_expose_response_body2211 PASS [ 0.011s] biomcp-cli entities::author::detail_tests::detail_serialization_is_allowlisted_and_has_required_metadata_arrays2212 PASS [ 0.011s] biomcp-cli entities::author::papers::full_tests::admission_is_shared_between_compact_and_rich_views2213 PASS [ 0.010s] biomcp-cli entities::author::papers::full_tests::evidence_url_encoder_matches_the_frozen_url_contract2214 PASS [ 0.010s] biomcp-cli entities::author::papers::full_tests::frozen_rich_object_has_exactly_the_contract_keys_and_values2215 PASS [ 0.011s] biomcp-cli entities::author::papers::full_tests::nullability_matrix_preserves_empty_false_zero_and_list_distinctions2216 PASS [ 0.010s] biomcp-cli entities::author::papers::full_tests::opaque_ids_get_urls_but_never_article_follow_ups2217 PASS [ 0.010s] biomcp-cli entities::author::papers::full_tests::rich_follow_ups_prefer_pmid_doi_arxiv_then_hex_paper_id2218 PASS [ 0.011s] biomcp-cli entities::author::papers::full_tests::wrong_typed_external_ids_fail_the_complete_command2219 PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::canonical_identifier_normalizes_every_recognized_kind2220 PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::an_orcid_offset_above_ten_thousand_is_a_static_rejection2221 PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::cross_group_dedupe_drops_only_on_recognized_identity2222 PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::excluded_location_identifiers_never_reach_the_projected_paper2223 PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::full_mode_on_an_orcid_id_is_rejected_with_zero_requests2224 PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::lexical_first_normalized_value_wins_the_flattened_slot2225 PASS [ 0.010s] biomcp-cli entities::author::papers::orcid_works_tests::orcid_page_bounds_pin_first_middle_terminal_and_beyond_total2226 PASS [ 0.011s] biomcp-cli entities::author::papers::orcid_works_tests::identifier_lists_preserve_unrecognized_types_in_first_occurrence_order2227 PASS [ 0.009s] biomcp-cli entities::author::papers::wire_tests::command_deadline_is_thirty_five_seconds2228 PASS [ 0.011s] biomcp-cli entities::author::papers::tests::provider_article_ids_are_shell_quoted_in_next_commands2229 PASS [ 0.011s] biomcp-cli entities::author::papers::orcid_works_tests::orcid_paper_projects_the_frozen_shape_with_row_command_priority2230 PASS [ 2.746s] biomcp-cli entities::article::graph::tests::citation_evidence_names_both_providers_and_reasons_when_both_refuse2231 PASS [ 0.047s] biomcp-cli entities::author::papers::wire_tests::stalled_request_future_fails_at_the_absolute_deadline_without_late_output2232 PASS [ 0.011s] biomcp-cli entities::author::search::tests::mapping_distinguishes_healthy_empty_and_unavailable2233 PASS [ 0.009s] biomcp-cli entities::author::search::tests::mapping_retains_valid_rows_and_degrades_malformed_rows2234 PASS [ 0.010s] biomcp-cli entities::author::tests::orcid_ids_accept_exact_checksummed_forms_and_round_trip2235 PASS [ 0.010s] biomcp-cli entities::author::tests::orcid_ids_reject_every_malformed_category_with_one_static_message2236 PASS [ 0.009s] biomcp-cli entities::author::tests::provider_ids_are_strict_and_round_trip2237 PASS [ 0.010s] biomcp-cli entities::author::tests::public_serialization_is_allowlisted2238 PASS [ 0.118s] biomcp-cli entities::author::papers::wire_tests::compact_and_rich_request_exactly_one_page_and_never_prefetch_next2239 PASS [ 0.012s] biomcp-cli entities::cell_line::chembl::tests::a_failed_lookup_completes_the_section_as_unavailable2240 PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::a_failed_status_call_falls_back_to_the_retrieval_time2241 PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::a_record_completes_the_section_as_data2242 PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::an_accession_chembl_does_not_list_makes_no_assay_request2243 PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::one_record_asks_for_exactly_one_assay_count2244 PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::the_all_selector_leaves_the_chembl_section_out2245 PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::the_k562_record_answers_through_the_accession_not_the_name2246 PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::the_molm13_record_carries_its_ids_and_assay_count2247 PASS [ 0.009s] biomcp-cli entities::cell_line::chembl::tests::the_section_list_names_chembl2248 PASS [ 0.010s] biomcp-cli entities::cell_line::chembl::tests::the_release_fixture_sets_data_as_of_and_its_kind2249 PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::a_body_over_the_cap_is_unavailable_with_the_size_message2250 PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::a_cell_line_pharmacodb_does_not_hold_completes_the_section_as_empty2251 PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::an_accession_mismatch_is_unavailable_and_renders_no_payload2252 PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::an_unknown_section_lists_drug_response_for_cell_lines2253 PASS [ 0.029s] biomcp-cli entities::cell_line::pharmacodb::tests::an_empty_section_says_so_and_prints_no_counts_line2254 PASS [ 0.010s] biomcp-cli entities::cell_line::pharmacodb::tests::counts_attach_as_data_and_carry_no_rows2255 PASS [ 0.009s] biomcp-cli entities::cell_line::pharmacodb::tests::the_section_is_asked_for_by_name_and_all_leaves_it_out2256 PASS [ 0.029s] biomcp-cli entities::cell_line::pharmacodb::tests::the_all_card_is_byte_identical_with_and_without_the_payload2257 PASS [ 0.024s] biomcp-cli entities::cell_line::pharmacodb::tests::the_section_prints_the_heading_the_counts_and_the_next_command2258 PASS [ 0.009s] biomcp-cli entities::cell_line::tests::a_failed_release_read_names_the_retrieval_time_and_no_release2259 PASS [ 0.011s] biomcp-cli entities::cell_line::tests::a_hybrid_record_keeps_every_species_it_lists2260 PASS [ 0.011s] biomcp-cli entities::cell_line::tests::a_hyphenated_query_merges_both_windows_into_one_row_per_accession2261 PASS [ 0.027s] biomcp-cli entities::cell_line::tests::a_full_window_reports_an_unknown_total_and_one_note2262 PASS [ 0.009s] biomcp-cli entities::cell_line::tests::a_query_that_names_an_accession_is_recognized_as_one2263 PASS [ 0.012s] biomcp-cli entities::cell_line::tests::a_line_without_a_link_prints_the_key_as_an_empty_list2264 PASS [ 0.013s] biomcp-cli entities::cell_line::tests::a_record_recorded_without_variants_completes_the_section_as_empty2265 PASS [ 0.012s] biomcp-cli entities::cell_line::tests::a_record_with_variants_completes_the_section_as_data2266 PASS [ 0.010s] biomcp-cli entities::cell_line::tests::a_short_window_reports_its_row_count_and_no_note2267 PASS [ 0.010s] biomcp-cli entities::cell_line::tests::a_source_id_that_names_two_lines_asks_for_one_accession2268 PASS [ 0.007s] biomcp-cli entities::cell_line::tests::all_turns_on_every_section2269 PASS [ 0.009s] biomcp-cli entities::cell_line::tests::an_unknown_accession_is_not_found_and_names_the_search2270 PASS [ 0.756s] biomcp-cli entities::article::variant_search::tests::litvar_papers_merge_into_the_union_with_attribution2271 PASS [ 0.010s] biomcp-cli entities::cell_line::tests::an_unknown_section_fails_before_any_request2272 PASS [ 0.008s] biomcp-cli entities::cell_line::tests::an_unmatched_source_id_is_not_found_and_names_the_search2273 PASS [ 0.009s] biomcp-cli entities::cell_line::tests::different_lines_do_not_normalize_together2274 PASS [ 0.322s] biomcp-cli entities::author::papers::wire_tests::malformed_pages_fail_the_complete_command_with_no_partial_output2275 PASS [ 0.011s] biomcp-cli entities::cell_line::tests::each_recorded_source_id_resolves_to_the_same_accession2276 PASS [ 0.010s] biomcp-cli entities::cell_line::tests::each_spelling_puts_its_line_first_as_an_exact_match2277 PASS [ 0.011s] biomcp-cli entities::cell_line::tests::every_common_spelling_of_one_line_normalizes_to_the_same_string2278 PASS [ 0.011s] biomcp-cli entities::cell_line::tests::kg1_returns_all_three_exact_lines_with_the_human_identifier_first2279 PASS [ 0.008s] biomcp-cli entities::cell_line::tests::kg_1_merges_its_two_windows_with_no_duplicate_rows2280 PASS [ 0.007s] biomcp-cli entities::cell_line::tests::the_attribution_line_names_the_release_the_licence_and_the_citation2281 PASS [ 0.013s] biomcp-cli entities::cell_line::tests::mv4_11_lists_its_depmap_cosmic_and_chembl_links2282 PASS [ 0.010s] biomcp-cli entities::cell_line::tests::nb4_puts_the_identifier_match_before_the_synonym_match2283 PASS [ 0.011s] biomcp-cli entities::cell_line::tests::the_card_reads_identity_species_disease_category_and_sex2284 PASS [ 0.012s] biomcp-cli entities::cell_line::tests::the_xrefs_section_lists_the_join_keys_and_leaves_the_sample_rows_out2285 PASS [ 0.013s] biomcp-cli entities::cell_line::tests::the_release_fixture_reports_the_measured_release2286 PASS [ 0.013s] biomcp-cli entities::cell_line::tests::the_variants_section_lists_the_curated_rows_as_published2287 PASS [ 0.010s] biomcp-cli entities::diagnostic::search::tests::cross_condition_match_priority_drives_sort_before_paging2288 PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::disease_match_prefers_requested_then_canonical_then_synonym2289 PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::disease_match_uses_term_priority_across_all_conditions2290 PASS [ 0.010s] biomcp-cli entities::diagnostic::search::tests::disease_filter_validation_rejects_controls_and_oversize_before_normalization2291 PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::disease_phrase_matches_accepts_word_and_phrase_boundaries2292 PASS [ 0.006s] biomcp-cli entities::diagnostic::search::tests::disease_phrase_matches_rejects_partial_words_and_keeps_scanning2293 PASS [ 0.008s] biomcp-cli entities::diagnostic::search::tests::disease_phrase_matches_handles_utf8_boundaries_without_panicking2294 PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::disease_sort_ranks_who_requested_then_canonical_then_provider_synonym_order2295 PASS [ 0.009s] biomcp-cli entities::diagnostic::search::tests::normalized_filters_reject_short_disease_filter2296 PASS [ 0.009s] biomcp-cli entities::diagnostic::tests::diagnostic_source_filter_from_flag_accepts_expected_values2297 PASS [ 0.014s] biomcp-cli entities::diagnostic::tests::get_diagnostic_genes_returns_full_deduped_broad_panel_list2298 PASS [ 0.013s] biomcp-cli entities::diagnostic::tests::get_who_ivd_keeps_summary_and_resolves_supported_sections2299 PASS [ 0.017s] biomcp-cli entities::diagnostic::tests::get_keeps_summary_by_default_and_requested_sections_as_options2300 PASS [ 0.013s] biomcp-cli entities::diagnostic::tests::get_who_ivd_rejects_unsupported_sections_with_recovery_hint2301 PASS [ 0.012s] biomcp-cli entities::diagnostic::tests::regulatory_overlay_bounds_unavailable_work_and_preserves_data2302 PASS [ 0.010s] biomcp-cli entities::diagnostic::tests::regulatory_rows_dedupe_pma_supplements_and_keep_latest_decision2303 PASS [ 0.015s] biomcp-cli entities::diagnostic::tests::search_page_all_source_uses_unknown_total_when_both_sources_match2304 PASS [ 0.014s] biomcp-cli entities::diagnostic::tests::search_page_applies_conjunctive_filters_and_stable_ordering2305 PASS [ 0.009s] biomcp-cli entities::diagnostic::tests::search_page_rejects_explicit_who_gene_filter2306 PASS [ 0.016s] biomcp-cli entities::diagnostic::tests::search_page_disease_filter_requires_word_boundary2307 PASS [ 0.010s] biomcp-cli entities::diagnostic::tests::search_page_rejects_short_disease_filter2308 PASS [ 0.010s] biomcp-cli entities::diagnostic::tests::search_page_requires_at_least_one_filter2309 PASS [ 0.011s] biomcp-cli entities::diagnostic::tests::search_page_returns_who_rows_for_disease_filter2310 PASS [ 0.009s] biomcp-cli entities::diagnostic::tests::search_query_summary_uses_documented_filter_order2311 PASS [ 0.009s] biomcp-cli entities::diagnostic::tests::who_ivd_regulatory_overlay_returns_empty_vec_on_no_match2312 PASS [ 0.010s] biomcp-cli entities::discover::tests::a_gene_shaped_query_never_types_a_drug_label_as_a_gene2313 PASS [ 0.010s] biomcp-cli entities::discover::tests::alias_fallback_classifier_returns_canonical_for_exact_gene_alias2314 PASS [ 0.009s] biomcp-cli entities::discover::tests::alias_fallback_classifier_returns_none_without_discovery_signal2315 PASS [ 0.010s] biomcp-cli entities::discover::tests::alias_fallback_memo_keys_carry_the_source_address2316 PASS [ 0.019s] biomcp-cli entities::discover::tests::alias_fallback_classifier_returns_ambiguous_for_type_mismatch2317 PASS [ 0.007s] biomcp-cli entities::discover::tests::compact_previews_bound_multibyte_labels_and_oversized_values2318 PASS [ 0.013s] biomcp-cli entities::discover::tests::alias_fallback_memo_stays_bounded2319 PASS [ 0.012s] biomcp-cli entities::discover::tests::discover_gene_function_with_topic_preserves_meaningful_keyword2320 PASS [ 0.012s] biomcp-cli entities::discover::tests::discover_gene_function_without_topic_keeps_gene_only_article_search2321 PASS [ 0.012s] biomcp-cli entities::discover::tests::discover_general_gene_topic_adds_filtered_article_search2322 PASS [ 0.010s] biomcp-cli entities::discover::tests::discover_request_records_alias_fallback_no_cache_intent2323 PASS [ 3.920s] biomcp-cli entities::article::detail::tests::completed_pubtator_enrichment_survives_later_europepmc_failure2324 PASS [ 0.012s] biomcp-cli entities::discover::tests::discover_request_records_command_intent_before_clients2325 PASS [ 0.011s] biomcp-cli entities::discover::tests::discover_request_rejects_oversized_query_before_clients2326 PASS [ 0.012s] biomcp-cli entities::discover::tests::drug_safety_queries_beat_treatment_language2327 PASS [ 0.012s] biomcp-cli entities::discover::tests::empty_results_add_review_article_fallback_note_and_command2328 PASS [ 0.011s] biomcp-cli entities::discover::tests::exact_article_keyword_resolver_accepts_gene_drug_and_disease_docs2329 PASS [ 0.016s] biomcp-cli entities::discover::tests::empty_discover_result_quotes_shell_metacharacters_in_json_next_command2330 PASS [ 0.010s] biomcp-cli entities::discover::tests::exact_article_keyword_resolver_canonicalizes_ols_aliases2331 PASS [ 0.010s] biomcp-cli entities::discover::tests::exact_article_keyword_resolver_rejects_prefix_unsupported_and_ambiguous_matches2332 PASS [ 0.010s] biomcp-cli entities::discover::tests::exact_article_keyword_resolver_reports_alias_to_canonical_match2333 PASS [ 0.010s] biomcp-cli entities::discover::tests::exact_gene_query_promotes_hgnc_result2334 PASS [ 0.012s] biomcp-cli entities::discover::tests::gene_disease_queries_prefer_search_all_orientation2335 PASS [ 0.011s] biomcp-cli entities::discover::tests::gene_function_queries_prefer_get_gene2336 PASS [ 0.011s] biomcp-cli entities::discover::tests::hpo_backed_symptom_concepts_route_to_phenotype_search_first2337 PASS [ 0.010s] biomcp-cli entities::discover::tests::low_confidence_noncanonical_paths_append_article_search_once_when_missing2338 PASS [ 0.008s] biomcp-cli entities::discover::tests::malformed_candidates_do_not_consume_the_requested_offset2339 PASS [ 0.009s] biomcp-cli entities::discover::tests::normalize_primary_id_accepts_ols4_underscore_short_forms2340 PASS [ 0.011s] biomcp-cli entities::discover::tests::merge_prefers_shared_xrefs2341 PASS [ 0.010s] biomcp-cli entities::discover::tests::ols4_timeout_absorbs_slow_primary_discover_blips2342 PASS [ 0.009s] biomcp-cli entities::discover::tests::ols_doc_identifier_falls_back_to_short_form_when_obo_id_is_empty2343 PASS [ 0.021s] biomcp-cli entities::discover::tests::low_confidence_variant_adds_note_without_duplicate_article_fallback2344 PASS [ 0.008s] biomcp-cli entities::discover::tests::ols_hpo_identifier_overrides_non_hp_prefix_to_symptom2345 PASS [ 0.012s] biomcp-cli entities::discover::tests::page_past_returned_concepts_does_not_retain_hidden_guidance2346 PASS [ 0.012s] biomcp-cli entities::discover::tests::relational_mef2_query_redirects_when_only_weak_general_hits_remain2347 PASS [ 0.012s] biomcp-cli entities::discover::tests::single_entity_disease_queries_stay_stable_after_general_filtering2348 PASS [ 0.012s] biomcp-cli entities::discover::tests::relational_warfarin_query_redirects_instead_of_returning_collocation_noise2349 PASS [ 0.011s] biomcp-cli entities::discover::tests::single_entity_gene_alias_queries_stay_stable_after_general_filtering2350 PASS [ 0.011s] biomcp-cli entities::discover::tests::symptom_disease_lookup_query_strips_intent_prefixes2351 PASS [ 0.012s] biomcp-cli entities::discover::tests::symptom_queries_about_disease_prefer_phenotype_section2352 PASS [ 0.009s] biomcp-cli entities::discover::tests::symptom_search_with_hpo_ids_suggests_capped_phenotype_bridge_first2353 PASS [ 0.010s] biomcp-cli entities::discover::tests::symptom_queries_keep_search_suggestions_and_plain_language2354 PASS [ 0.010s] biomcp-cli entities::discover::tests::ticket_400_request_command_discover_fields_drive_resolve_boundaries2355 PASS [ 0.011s] biomcp-cli entities::discover::tests::treatment_queries_prefer_structured_indication_search2356 PASS [ 0.010s] biomcp-cli entities::discover::tests::trial_intent_prefers_a_mentioned_disease_over_a_gene2357 PASS [ 0.009s] biomcp-cli entities::discover::tests::trial_intent_uses_a_mentioned_symptom_after_unmentioned_disease_noise2358 PASS [ 0.010s] biomcp-cli entities::discover::tests::trial_intent_uses_gene_when_other_resolved_labels_are_unmentioned2359 PASS [ 0.012s] biomcp-cli entities::discover::tests::trial_intent_suppresses_plain_language2360 PASS [ 0.011s] biomcp-cli entities::discover::tests::typed_alias_identity_leads_when_ontology_omits_hgnc2361 PASS [ 0.009s] biomcp-cli entities::disease::article_links::tests::a_title_that_shares_words_without_all_concept_words_still_links2362 PASS [ 0.009s] biomcp-cli entities::disease::article_links::tests::an_exact_or_broader_card_title_is_not_narrower2363 PASS [ 0.012s] biomcp-cli entities::discover::tests::weak_umls_gene_label_never_becomes_an_exact_lookup2364 PASS [ 0.013s] biomcp-cli entities::discover::tests::umbrella_disease_queries_stay_ambiguous_and_search_oriented2365 PASS [ 0.011s] biomcp-cli entities::disease::article_links::tests::skin_neoplasms_refuses_the_benign_card_because_its_title_narrows2366 PASS [ 0.009s] biomcp-cli entities::disease::associations::tests::civic_gene_symbol_extraction_ignores_protein_change_tokens2367 PASS [ 0.011s] biomcp-cli entities::disease::associations::tests::augment_genes_with_opentargets_respects_twenty_gene_cap2368 PASS [ 0.012s] biomcp-cli entities::disease::associations::tests::augment_genes_with_opentargets_merges_sources_without_duplicates2369 PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::apply_requested_sections_clears_clinical_features_when_not_requested2370 PASS [ 0.009s] biomcp-cli entities::disease::enrichment::tests::apply_requested_sections_clears_funding_when_not_requested2371 PASS [ 0.009s] biomcp-cli entities::disease::enrichment::tests::disease_diagnostics_unavailable_sets_note2372 PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::funding_query_prefers_free_text_lookup2373 PASS [ 0.012s] biomcp-cli entities::disease::enrichment::tests::disease_diagnostics_section_populates_from_rows2374 PASS [ 0.011s] biomcp-cli entities::disease::enrichment::tests::enrich_sparse_disease_identity_prefers_exact_ols4_match2375 PASS [ 4.944s] biomcp-cli cli::article::tests::outage::zero_rows_with_semantic_scholar_down_exits_one_with_source_unavailable2376 PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::funding_query_uses_canonical_name_for_identifier_lookups2377 PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::survival_catalog_resolution_sets_unavailable_note_when_catalog_fails2378 PASS [ 0.012s] biomcp-cli entities::disease::enrichment::tests::survival_catalog_resolution_sets_truthful_note_for_unmapped_disease2379 PASS [ 0.011s] biomcp-cli entities::disease::enrichment::tests::ticket_589_id_only_disease_enrichments_are_inapplicable_without_credit2380 PASS [ 0.009s] biomcp-cli entities::disease::enrichment::tests::top_genes_label_joins_both_fallback_sources2381 PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::top_genes_label_joins_the_disgenet_seed_with_other_fallbacks2382 PASS [ 0.010s] biomcp-cli entities::disease::enrichment::tests::top_genes_label_names_the_disgenet_seed_from_the_mydisease_hit2383 PASS [ 0.009s] biomcp-cli entities::disease::enrichment::tests::top_genes_label_names_the_fallback_when_open_targets_did_not_produce_them2384 PASS [ 0.008s] biomcp-cli entities::disease::fallback::tests::arnold_synonym_rescue_resolves_mesh_crosswalk_through_fixture_plan2385 PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::canonical_fallback_row_ignores_not_found_and_maps_hits2386 PASS [ 1.712s] biomcp-cli entities::article::variant_search::tests::cdkn2a_a57v_articles_tie_the_genomic_alias_to_the_gene2387 PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::contains_all_query_tokens_ignores_generic_suffix_terms2388 PASS [ 0.007s] biomcp-cli entities::disease::fallback::tests::disease_fallback_request_records_alias_queries_and_doid_preference2389 PASS [ 0.029s] biomcp-cli entities::disease::enrichment::tests::ticket_589_disease_base_enrichment_failures_are_unavailable_without_credit2390 PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::disease_fallback_request_records_mesh_skip_before_discover2391 PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::fallback_candidate_source_ids_prefer_primary_then_ranked_xrefs2392 PASS [ 0.008s] biomcp-cli entities::disease::fallback::tests::fallback_rows_dedupe_by_resolved_disease_id2393 PASS [ 0.009s] biomcp-cli entities::disease::fallback::tests::fallback_candidates_rank_specific_crosswalkable_disease_ahead_of_generic_rows2394 PASS [ 0.010s] biomcp-cli entities::disease::fallback::tests::fallback_search_page_applies_offset_and_limit_after_dedupe2395 PASS [ 0.010s] biomcp-cli entities::disease::fallback::tests::fallback_search_page_swallows_discover_errors2396 PASS [ 0.010s] biomcp-cli entities::disease::fallback::tests::ticket_400_request_command_disease_fallback_fields_drive_discover_and_crosswalk_boundaries2397 PASS [ 0.010s] biomcp-cli entities::disease::get::tests::disease_parse_sections_accepts_diagnostics2398 PASS [ 0.009s] biomcp-cli entities::disease::get::tests::disease_parse_sections_all_keeps_diagnostics_opt_in2399 PASS [ 0.017s] biomcp-cli entities::disease::get::tests::get_disease_cad_refuses_naming_every_exact_holder2400 PASS [ 0.018s] biomcp-cli entities::disease::get::tests::get_disease_lowercase_mf_refuses_like_uppercase2401 PASS [ 0.018s] biomcp-cli entities::disease::get::tests::get_disease_mds_refuses_naming_both_holders2402 PASS [ 0.017s] biomcp-cli entities::disease::get::tests::get_disease_mf_refuses_instead_of_mixing_two_diseases2403 PASS [ 0.010s] biomcp-cli entities::disease::get::tests::get_disease_preserves_canonical_mondo_lookup_path2404 PASS [ 0.017s] biomcp-cli entities::disease::get::tests::get_disease_mm_refusal_leads_with_the_oncology_reading2405 PASS [ 0.010s] biomcp-cli entities::disease::get::tests::get_disease_resolves_mesh_and_omim_crosswalk_ids_before_fetch2406 PASS [ 0.010s] biomcp-cli entities::disease::get::tests::get_disease_returns_not_found_for_unresolved_crosswalk_without_name_fallback2407 PASS [ 0.009s] biomcp-cli entities::disease::get::tests::parse_sections_accepts_clinical_features2408 PASS [ 0.009s] biomcp-cli entities::disease::get::tests::parse_sections_all_keeps_optional_sections_opt_in2409 PASS [ 0.007s] biomcp-cli entities::disease::get::tests::parse_sections_supports_new_disease_sections2410 PASS [ 0.009s] biomcp-cli entities::disease::get::tests::parse_sections_unknown_section_lists_clinical_features2411 PASS [ 0.011s] biomcp-cli entities::disease::get::tests::parse_sections_unknown_value_suggests_name_flag_for_multi_word_diseases2412 PASS [ 0.232s] biomcp-cli entities::disease::get::tests::disease_card_keeps_the_resolving_term_when_detail_label_is_missing2413 PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::a_leading_reading_is_not_repeated_as_a_holder2414 PASS [ 0.015s] biomcp-cli entities::disease::resolution::tests::abbreviated_ambiguity_exposes_the_refusal_data_for_the_trial_note2415 PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::abbreviation_holders_count_name_and_synonym_holds2416 PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::default_reading_leads_the_candidates_and_additions_stay_pointers2417 PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::detail_terms_bounds_and_deduplicates_provider_synonyms2418 PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::detail_terms_rejects_id_disagreement_and_malformed_synonyms2419 PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::disease_candidate_score_prefers_canonical_colorectal_match_over_subtype2420 PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::disease_exact_rank_prefers_exact_then_prefix_then_contains2421 PASS [ 0.014s] biomcp-cli entities::disease::resolution::tests::exact_resolution_direct_mondo_and_doid_ids_each_use_one_request2422 PASS [ 0.013s] biomcp-cli entities::disease::resolution::tests::exact_resolution_maps_selected_detail_inconsistency_to_safe_source_error2423 PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::exact_resolution_matches_only_primary_names_and_declared_synonyms2424 PASS [ 0.014s] biomcp-cli entities::disease::resolution::tests::exact_resolution_one_identity_fetches_consistent_detail_once2425 PASS [ 0.013s] biomcp-cli entities::disease::resolution::tests::exact_resolution_refuses_ambiguous_abbreviation_held_by_two_diseases2426 PASS [ 0.012s] biomcp-cli entities::disease::resolution::tests::exact_resolution_rejects_incomplete_query_without_fetching_detail2427 PASS [ 1.239s] biomcp-cli entities::article::variant_search::tests::samhd1_i448t_articles_tie_the_genomic_alias_to_the_gene2428 PASS [ 0.014s] biomcp-cli entities::disease::resolution::tests::exact_resolution_zero_and_multiple_identities_each_stop_after_query2429 PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::full_word_holders_count_only_exact_name_holds2430 PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::holder_candidate_lines_fill_the_mondo_label2431 PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::holder_counting_leaves_nonhuman_records_out2432 PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::mf_refusal_names_the_myelofibrosis_reading2433 PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::normalize_disease_id_basic2434 PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::parse_disease_lookup_input_distinguishes_canonical_crosswalk_and_text2435 PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::preferred_crosswalk_hit_prefers_mondo_then_doid_then_lexicographic_id2436 PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::rerank_disease_search_hits_keeps_every_exact_abbreviation_holder_above_loose_matches2437 PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::rerank_disease_search_hits_prefers_canonical_exact_candidate_across_query_variants2438 PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::rerank_disease_search_hits_ranks_exact_abbreviation_holder_first2439 PASS [ 0.011s] biomcp-cli entities::disease::resolution::tests::resolve_disease_hit_by_name_direct_rejects_weak_contains_only_match2440 PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::resolver_queries_adds_carcinoma_fallback_for_cancer_terms2441 PASS [ 0.009s] biomcp-cli entities::disease::resolution::tests::resolver_queries_adds_cml_fallback_variant2442 PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::resolver_queries_adds_hodgkin_alias_variants2443 PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::scored_best_candidate_breaks_ties_on_provider_names_like_rerank2444 PASS [ 0.010s] biomcp-cli entities::disease::resolution::tests::scored_best_candidate_for_queries_prefers_hodgkin_alias_over_non_hodgkin_contains_match2445 PASS [ 0.010s] biomcp-cli entities::disease::search::tests::disease_filter_normalizers_accept_supported_values2446 PASS [ 0.010s] biomcp-cli entities::disease::search::tests::disease_filter_normalizers_handle_case_whitespace_and_unknown_values2447 PASS [ 0.009s] biomcp-cli entities::disease::search::tests::disease_search_request_preserves_limit_and_query_validation2448 PASS [ 0.010s] biomcp-cli entities::disease::search::tests::disease_search_request_records_normalized_filters_and_fetch_plan2449 PASS [ 0.010s] biomcp-cli entities::disease::search::tests::parse_hpo_query_terms_requires_valid_ids2450 PASS [ 0.010s] biomcp-cli entities::disease::search::tests::phenotype_continuation_shrinks_to_the_remaining_provider_window2451 PASS [ 0.011s] biomcp-cli entities::disease::search::tests::phenotype_pages_slice_one_provider_ordered_deduplicated_window2452 PASS [ 0.009s] biomcp-cli entities::disease::search::tests::phenotype_phrase_rows_flatten_in_phrase_and_provider_order_without_truncating_the_eleventh2453 PASS [ 0.011s] biomcp-cli entities::disease::search::tests::phenotype_resolution_runs_all_ten_operations_with_at_most_four_in_flight2454 PASS [ 0.010s] biomcp-cli entities::disease::search::tests::phenotype_shared_resolution_deadline_cancels_every_in_flight_operation_at_eight_seconds2455 PASS [ 0.010s] biomcp-cli entities::disease::search::tests::phenotype_terms_and_result_window_are_bounded2456 PASS [ 0.011s] biomcp-cli entities::disease::search::tests::phenotype_support_transport_status_content_body_and_decode_failures_all_degrade2457 PASS [ 0.010s] biomcp-cli entities::disease::search::tests::resolve_phenotype_query_terms_empty_input_mentions_hpo_ids_and_symptom_phrases2458 PASS [ 0.011s] biomcp-cli entities::disease::search::tests::phenotype_whole_command_and_support_deadlines_have_distinct_observable_outcomes2459 PASS [ 0.009s] biomcp-cli entities::disease::search::tests::split_phenotype_queries_preserves_single_phrase_and_splits_commas2460 PASS [ 0.011s] biomcp-cli entities::disease::search::tests::ticket_400_request_command_disease_search_fields_drive_source_query_and_pagination2461 PASS [ 0.009s] biomcp-cli entities::disease::search::tests::unavailable_support_is_applied_pairwise_without_changing_similarity_order2462 PASS [ 0.010s] biomcp-cli entities::disease::tests::disease_clinical_features_empty_serializes_as_absent2463 PASS [ 0.010s] biomcp-cli entities::disease::tests::disease_clinical_features_missing_json_deserializes_empty2464 PASS [ 0.009s] biomcp-cli entities::disease::tests::disease_clinical_features_nonempty_serializes_rows2465 PASS [ 0.013s] biomcp-cli entities::drug::cell_lines::tests::a_body_over_the_cap_is_unavailable_with_the_size_message2466 PASS [ 0.011s] biomcp-cli entities::drug::cell_lines::tests::a_compound_pharmacodb_does_not_hold_completes_the_section_as_empty2467 PASS [ 0.009s] biomcp-cli entities::drug::cell_lines::tests::a_listing_with_no_filter_fails_and_names_the_counts_command2468 PASS [ 0.010s] biomcp-cli entities::drug::cell_lines::tests::one_filter_is_accepted_and_two_are_refused2469 PASS [ 0.010s] biomcp-cli entities::drug::cell_lines::tests::the_section_attaches_the_recorded_venetoclax_counts_as_data2470 PASS [ 0.008s] biomcp-cli entities::drug::cell_lines::tests::the_section_name_is_listed_for_drugs2471 PASS [ 0.030s] biomcp-cli entities::drug::cell_lines::tests::the_all_card_is_byte_identical_with_and_without_the_payload2472 PASS [ 0.009s] biomcp-cli entities::drug::get::tests::a_disagreeing_label_page_refuses_the_name_as_ambiguous2473 PASS [ 0.028s] biomcp-cli entities::drug::cell_lines::tests::the_section_prints_the_heading_the_counts_and_the_next_commands2474 PASS [ 0.010s] biomcp-cli entities::drug::get::tests::ambiguous_candidates_come_from_the_records_that_own_the_name2475 PASS [ 0.009s] biomcp-cli entities::drug::get::tests::ambiguous_candidates_rank_by_record_count_then_name_and_cap_at_ten2476 PASS [ 0.010s] biomcp-cli entities::drug::get::tests::cached_trial_alias_resolution_refreshes_worker_zero_label2477 PASS [ 0.018s] biomcp-cli entities::drug::get::tests::build_trial_aliases_preserves_authorities_then_source_order_and_cap2478 PASS [ 0.018s] biomcp-cli entities::drug::get::tests::drugbank_trial_alias_policy_keeps_codes_and_simple_names2479 PASS [ 0.017s] biomcp-cli entities::drug::get::tests::drugbank_trial_alias_policy_rejects_systematic_and_descriptor_names2480 PASS [ 0.013s] biomcp-cli entities::drug::get::tests::drugsfda_failure_state_matrix2481 PASS [ 0.014s] biomcp-cli entities::drug::get::tests::get_drug_pain_relief_refuses_as_ambiguous_with_the_recorded_candidates2482 PASS [ 4.367s] biomcp-cli entities::article::graph::tests::citation_evidence_degrades_to_the_index_when_the_reference_walk_is_refused2483 PASS [ 0.013s] biomcp-cli entities::drug::get::tests::interaction_additive_source_state_matrix_is_truthful2484 PASS [ 0.012s] biomcp-cli entities::drug::get::tests::interaction_failure_preserves_only_surviving_label_evidence_without_leaking_errors2485 PASS [ 0.009s] biomcp-cli entities::drug::get::tests::interaction_requests_always_permit_typed_partial_settlement2486 PASS [ 0.010s] biomcp-cli entities::drug::get::tests::orphan_aliases_do_not_trust_anchorless_hits2487 PASS [ 0.010s] biomcp-cli entities::drug::get::tests::orphan_aliases_reject_a_multi_unii_hit_with_any_conflict2488 PASS [ 0.011s] biomcp-cli entities::drug::get::tests::orphan_aliases_require_matching_nonconflicting_anchor2489 PASS [ 0.010s] biomcp-cli entities::drug::get::tests::orphan_aliases_treat_an_absent_identifier_as_neutral2490 PASS [ 0.009s] biomcp-cli entities::drug::get::tests::parse_sections_all_with_explicit_label_keeps_label2491 PASS [ 0.009s] biomcp-cli entities::drug::get::tests::parse_sections_default_card_includes_targets_enrichment2492 PASS [ 0.010s] biomcp-cli entities::drug::get::tests::parse_sections_supports_all_and_rejects_unknown2493 PASS [ 0.010s] biomcp-cli entities::drug::get::tests::parse_sections_unknown_value_suggests_name_flag_for_multi_word_drugs2494 PASS [ 0.010s] biomcp-cli entities::drug::get::tests::trial_alias_cache_key_normalizes_requested_name2495 PASS [ 0.010s] biomcp-cli entities::drug::get::tests::trial_alias_candidates_keep_untruncated_source_provenance2496 PASS [ 0.009s] biomcp-cli entities::drug::get::tests::trial_alias_resolution_keeps_generic_requests_canonical2497 PASS [ 0.018s] biomcp-cli entities::drug::get::tests::trial_alias_resolution_does_not_cache_transient_lookup_failure2498 PASS [ 0.008s] biomcp-cli entities::drug::get::tests::validate_raw_usage_allows_raw_with_label_section2499 PASS [ 0.009s] biomcp-cli entities::drug::get::tests::validate_raw_usage_rejects_raw_without_label_section2500 PASS [ 0.023s] biomcp-cli entities::drug::get::tests::unreadable_who_bundle_degrades_the_card_section_without_a_local_path2501 PASS [ 0.009s] biomcp-cli entities::drug::get::tests::validate_region_usage_allows_who_all_requests2502 PASS [ 0.010s] biomcp-cli entities::drug::get::tests::validate_region_usage_rejects_approvals_with_explicit_region2503 PASS [ 0.010s] biomcp-cli entities::drug::get::tests::validate_region_usage_rejects_explicit_region_without_regional_sections2504 PASS [ 0.009s] biomcp-cli entities::drug::get::tests::validate_region_usage_rejects_who_safety_only_requests2505 PASS [ 0.009s] biomcp-cli entities::drug::get::tests::validate_region_usage_rejects_who_shortage_only_requests2506 PASS [ 0.011s] biomcp-cli entities::drug::interactions::tests::aggregation_keeps_a_row_whose_partner_is_not_an_anchor_term2507 PASS [ 0.011s] biomcp-cli entities::drug::interactions::tests::ddinter_identity_for_anchor_passes_brands_and_synonyms_on2508 PASS [ 0.009s] biomcp-cli entities::drug::interactions::tests::interaction_description_uses_legacy_partner_narrative2509 PASS [ 0.010s] biomcp-cli entities::drug::interactions::tests::interaction_next_command_quotes_multi_word_anchor2510 PASS [ 0.010s] biomcp-cli entities::drug::interactions::tests::interaction_pages_reconstruct_the_sorted_rows2511 PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_boxed_only_still_returns_a_label2512 PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_falls_back_to_legacy_warnings_field2513 PASS [ 0.016s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_carries_whole_sections_past_the_markdown_cap2514 PASS [ 0.016s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_raw_mode_preserves_whole_raw_subsections2515 PASS [ 0.015s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_raw_mode_reads_boxed_warning_alongside_modern_warnings2516 PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_interaction_text_from_label_returns_none_when_missing2517 PASS [ 0.016s] biomcp-cli entities::drug::label::tests::extraction::extract_inline_label_summary_mode_keeps_boxed_warning2518 PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_interaction_text_from_label_uses_openfda_drug_interactions2519 PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_label_boxed_warning_is_truncated2520 PASS [ 0.009s] biomcp-cli entities::drug::label::tests::extraction::extract_label_boxed_warning_reads_all_strings_from_the_first_result2521 PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_label_set_id_falls_back_to_spl_set_id2522 PASS [ 0.009s] biomcp-cli entities::drug::label::tests::extraction::extract_label_set_id_prefers_top_level_set_id2523 PASS [ 0.010s] biomcp-cli entities::drug::label::tests::extraction::extract_label_warnings_prefers_warnings_and_cautions_over_legacy_warnings2524 PASS [ 0.011s] biomcp-cli entities::drug::label::tests::extraction::extract_label_warnings_truncates_with_exact_dailymed_link2525 PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::a_two_drug_combination_never_splits_to_one_ingredient2526 PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::an_exact_brand_label_with_an_unrelated_generic_never_wins_the_brand_tier2527 PASS [ 0.012s] biomcp-cli entities::drug::label::tests::identity::filter_keeps_only_identity_matching_results_and_rewrites_the_total2528 PASS [ 0.012s] biomcp-cli entities::drug::label::tests::identity::filter_keeps_the_withdrawn_exkivity_record_from_the_mobocertinib_capture2529 PASS [ 0.011s] biomcp-cli entities::drug::label::tests::identity::identity_guard_accepts_the_sparse_multistrength_tagrisso_record2530 PASS [ 0.011s] biomcp-cli entities::drug::label::tests::identity::identity_guard_accepts_the_sparse_propulsid_record2531 PASS [ 0.008s] biomcp-cli entities::drug::label::tests::identity::identity_guard_matches_active_ingredients_as_word_sequences2532 PASS [ 0.009s] biomcp-cli entities::drug::label::tests::identity::identity_guard_reads_the_name_runs_of_each_element_entry2533 PASS [ 0.015s] biomcp-cli entities::drug::label::tests::identity::identity_guard_rejects_inactive_ingredients_that_repeat_across_strengths2534 PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::identity_guard_rejects_labels_that_only_mention_the_drug2535 PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::identity_guard_rejects_token_sequences_joined_across_fields2536 PASS [ 0.010s] biomcp-cli entities::drug::label::tests::identity::pairing_split_derives_the_plain_ingredient_from_the_records_own_list2537 PASS [ 0.015s] biomcp-cli entities::drug::label::tests::summary::extract_inline_label_summary_mode_preserves_subtype_wording2538 PASS [ 0.016s] biomcp-cli entities::drug::label::tests::summary::extract_inline_label_summary_mode_falls_back_to_raw_indications_when_no_rows2539 PASS [ 0.015s] biomcp-cli entities::drug::label::tests::summary::extract_inline_label_summary_mode_trims_patient_eligibility_qualifiers2540 PASS [ 0.016s] biomcp-cli entities::drug::label::tests::summary::extract_inline_label_summary_mode_uses_numbered_subsection_titles2541 PASS [ 0.010s] biomcp-cli entities::drug::metadata::tests::apply_openfda_metadata_keeps_a_resolved_typed_brand_listed2542 PASS [ 0.011s] biomcp-cli entities::drug::metadata::tests::apply_openfda_metadata_lists_only_the_cards_own_label_products2543 PASS [ 0.007s] biomcp-cli entities::drug::metadata::tests::extract_top_adverse_events_ranks_by_frequency2544 PASS [ 0.011s] biomcp-cli entities::drug::metadata::tests::brand_lists_remove_generic_names_before_applying_the_cap2545 PASS [ 0.010s] biomcp-cli entities::drug::metadata::tests::map_drugsfda_approvals_extracts_key_fields2546 PASS [ 0.010s] biomcp-cli entities::drug::outcome_tests::omitted_drug_outcomes_initialize_every_registry_key2547 PASS [ 0.009s] biomcp-cli entities::drug::query::tests::build_mychem_query_escapes_free_text_query2548 PASS [ 0.010s] biomcp-cli entities::drug::query::tests::build_mychem_query_expands_purine_to_atc_codes2549 PASS [ 1.045s] biomcp-cli entities::disease::get::tests::get_disease_single_holder_abbreviation_still_resolves_one_record2550 PASS [ 0.010s] biomcp-cli entities::drug::query::tests::build_mychem_query_includes_mechanism_of_action_field2551 PASS [ 0.010s] biomcp-cli entities::drug::query::tests::build_mychem_query_includes_target_and_mechanism_filters2552 PASS [ 0.009s] biomcp-cli entities::drug::query::tests::build_mychem_query_keeps_atc_filter_exact2553 PASS [ 0.010s] biomcp-cli entities::drug::query::tests::build_mychem_query_rejects_public_interaction_filter2554 PASS [ 0.009s] biomcp-cli entities::drug::query::tests::build_mychem_query_requires_at_least_one_filter2555 PASS [ 0.009s] biomcp-cli entities::drug::query::tests::drug_search_filters_detect_structured_filters2556 PASS [ 0.009s] biomcp-cli entities::drug::query::tests::mechanism_atc_expansions_returns_purine_mapping2557 PASS [ 0.010s] biomcp-cli entities::drug::search::tests::complete_candidate_ranking_moves_a_later_exact_match_before_broad_rows2558 PASS [ 0.010s] biomcp-cli entities::drug::search::tests::ema_identity_admits_only_hits_with_exact_allowed_fields_and_preserves_field_order2559 PASS [ 0.010s] biomcp-cli entities::drug::search::tests::ema_identity_has_no_all_hits_or_excluded_field_fallback2560 PASS [ 0.010s] biomcp-cli entities::drug::search::tests::every_allowed_ema_field_independently_admits_a_hit2561 PASS [ 0.009s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_fallback_is_first_page_only2562 PASS [ 0.010s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_generic_names_keep_disagreeing_owners_apart2563 PASS [ 0.010s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_generic_names_prefer_the_rows_that_own_the_brand2564 PASS [ 0.009s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_generic_names_read_a_disagreeing_page_with_no_owner2565 PASS [ 0.008s] biomcp-cli entities::drug::search::tests::fallback::openfda_label_generic_names_take_a_lone_pairing_label2566 PASS [ 0.009s] biomcp-cli entities::drug::search::tests::fallback::search_results_from_openfda_label_response_prefers_exact_brand_match2567 PASS [ 0.010s] biomcp-cli entities::drug::search::tests::fallback::search_results_from_openfda_label_response_respects_limit2568 PASS [ 0.009s] biomcp-cli entities::drug::search::tests::fallback::search_results_from_openfda_label_response_returns_remaining_unique_generics2569 PASS [ 0.009s] biomcp-cli entities::drug::search::tests::mechanism::hit_mentions_mechanism_matches_atc_purine_hits2570 PASS [ 0.010s] biomcp-cli entities::drug::search::tests::mechanism::hit_mentions_mechanism_matches_mechanism_of_action_text2571 PASS [ 0.010s] biomcp-cli entities::drug::search::tests::mechanism::mechanism_match_uses_mechanism_fields_not_drug_name2572 PASS [ 0.010s] biomcp-cli entities::drug::search::tests::who::all_region_search_degrades_when_who_pq_data_is_absent_but_explicit_who_fails2573 PASS [ 0.009s] biomcp-cli entities::drug::search::tests::who::explicit_who_vaccine_search_skips_drug_identity_resolution2574 PASS [ 0.010s] biomcp-cli entities::drug::search::tests::who::structured_who_search_reports_exact_total_when_mychem_is_exhausted2575 PASS [ 0.010s] biomcp-cli entities::drug::search::tests::who::structured_who_search_stops_after_one_extra_match_and_reports_unknown_total2576 PASS [ 0.007s] biomcp-cli entities::drug::search::tests::who::structured_who_search_with_api_filter_keeps_only_api_rows2577 PASS [ 0.011s] biomcp-cli entities::drug::search::tests::who::structured_who_search_with_finished_filter_keeps_only_finished_rows2578 PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::civic::extract_variant_targets_from_civic_deduplicates_and_filters_by_generic_target2579 PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::civic::normalize_variant_target_label_keeps_spaced_protein_change2580 PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::civic::normalize_variant_target_label_normalizes_egfr_roman_suffix2581 PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::civic::normalize_variant_target_label_rejects_exact_gene_match2582 PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::family::derive_target_family_name_handles_non_ascii_without_panicking2583 PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::derive_target_family_name_requires_complete_member_names2584 PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::derive_target_family_name_trims_numeric_member_suffix2585 PASS [ 0.011s] biomcp-cli entities::drug::targets::tests::family::family_target_chembl_id_accepts_mechanism_only_family_row2586 PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::family_target_chembl_id_rejects_missing_matching_target_id2587 PASS [ 1.248s] biomcp-cli entities::disease::get::tests::get_disease_full_word_resolves_past_nonhuman_and_synonym_holders2588 PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::family::family_target_chembl_id_rejects_multiple_matching_target_ids2589 PASS [ 0.011s] biomcp-cli entities::drug::targets::tests::family::family_target_chembl_id_requires_single_matching_target_id2590 PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::strict_target_family_label_accepts_numeric_suffix_family2591 PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::family::strict_target_family_label_handles_embedded_digits2592 PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::strict_target_family_label_rejects_mixed_targets2593 PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::family::strict_target_family_label_rejects_single_target2594 PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::indications::format_opentargets_clinical_stage_falls_back_for_future_values2595 PASS [ 0.009s] biomcp-cli entities::drug::targets::tests::indications::format_opentargets_clinical_stage_maps_known_stages2596 PASS [ 0.010s] biomcp-cli entities::drug::targets::tests::indications::format_opentargets_clinical_stage_suppresses_unknown_and_blank2597 PASS [ 0.119s] biomcp-cli entities::drug::search::tests::unresolved_mychem_paths_each_request_once_and_preserve_positive_cvx_fallback2598 PASS [ 0.020s] biomcp-cli entities::drug::test_support::a_brand_query_resolves_through_the_mychem_record_itself2599 PASS [ 0.022s] biomcp-cli entities::drug::test_support::a_refusal_runs_the_discover_resolution_once_for_both_callers2600 PASS [ 0.015s] biomcp-cli entities::drug::test_support::a_text_only_match_refuses_and_names_what_matched2601 PASS [ 0.020s] biomcp-cli entities::drug::test_support::brand_resolution::a_brand_two_exact_drugs_answer_refuses_instead_of_picking_one2602 PASS [ 0.019s] biomcp-cli entities::drug::test_support::brand_resolution::niraparib_names_the_plain_card_and_takes_its_own_label2603 PASS [ 4.015s] biomcp-cli entities::article::search::tests::deadline::overall_deadline_returns_partial_rows_and_names_the_held_source2604 PASS [ 0.016s] biomcp-cli entities::drug::test_support::brand_resolution::pain_relief_refuses_without_naming_products_that_do_not_own_the_name2605 PASS [ 0.016s] biomcp-cli entities::drug::test_support::brand_resolution::sleep_aid_refuses_when_openfdas_own_brands_disagree2606 PASS [ 0.026s] biomcp-cli entities::drug::test_support::brand_resolution::tarceva_lists_the_typed_brand_and_no_chemical_synonym2607 PASS [ 0.018s] biomcp-cli entities::drug::test_support::brand_resolution::trastuzumab_lists_only_brands_whose_labels_name_trastuzumab2608 PASS [ 0.030s] biomcp-cli entities::drug::test_support::brand_resolution::tarceva_resolves_erlotinib_through_the_guarded_discover_rescue2609 PASS [ 0.017s] biomcp-cli entities::drug::test_support::brand_resolution::zejula_returns_niraparib_with_the_zejula_label2610 PASS [ 0.011s] biomcp-cli entities::drug::test_support::ingredient_resolution::a_combination_card_carries_no_single_ingredient_identifier2611 PASS [ 0.021s] biomcp-cli entities::drug::test_support::ingredient_resolution::acetaminophen_takes_the_plain_ingredient_card_and_label2612 PASS [ 0.017s] biomcp-cli entities::drug::test_support::ingredient_resolution::cold_and_flu_still_refuses_across_distinct_combination_products2613 PASS [ 2.486s] biomcp-cli entities::article::variant_search::tests::litvar_failure_degrades_only_its_source2614 PASS [ 0.020s] biomcp-cli entities::drug::test_support::ingredient_resolution::aspirin_card_names_the_ingredient_not_a_product_rows_strength2615 PASS [ 0.019s] biomcp-cli entities::drug::test_support::ingredient_resolution::fluorouracil_synonym_takes_the_plain_ingredient_card_and_label2616 PASS [ 0.020s] biomcp-cli entities::drug::test_support::ingredient_resolution::motrin_resolves_to_the_ingredient_its_labels_mostly_name2617 PASS [ 0.020s] biomcp-cli entities::drug::test_support::ingredient_resolution::tylenol_resolves_to_the_plain_ingredient_its_labels_mostly_name2618 PASS [ 0.022s] biomcp-cli entities::drug::test_support::ingredient_resolution::keytruda_qlex_pairing_derives_the_plain_ingredient_from_the_records_own_list2619 PASS [ 0.020s] biomcp-cli entities::drug::test_support::label_choice::a_contains_tier_ols_match_never_adopts_a_card2620 PASS [ 0.018s] biomcp-cli entities::drug::test_support::label_choice::a_non_hyaluronidase_combination_never_becomes_another_products_card2621 PASS [ 0.020s] biomcp-cli entities::drug::test_support::label_choice::amivantamab_takes_the_plain_rybrevant_label_not_faspro2622 PASS [ 0.021s] biomcp-cli entities::drug::test_support::label_choice::avastin_takes_avastins_own_label2623 PASS [ 0.018s] biomcp-cli entities::drug::test_support::label_choice::bevacizumab_escalates_past_the_biosimilar_page_to_avastin2624 PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_choice::daratumumab_takes_the_plain_darzalex_label_not_faspro2625 PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_choice::gleevec_keeps_its_own_label_against_the_generic_ingredient_twin2626 PASS [ 0.022s] biomcp-cli entities::drug::test_support::label_choice::darzalex_takes_the_plain_darzalex_label_not_faspro2627 PASS [ 0.022s] biomcp-cli entities::drug::test_support::label_choice::herceptin_takes_herceptins_own_label_not_the_biosimilar2628 PASS [ 0.022s] biomcp-cli entities::drug::test_support::label_choice::keytruda_takes_keytrudas_own_label_not_the_qlex_pairing2629 PASS [ 0.020s] biomcp-cli entities::drug::test_support::label_choice::pembrolizumab_takes_the_plain_keytruda_label2630 PASS [ 0.026s] biomcp-cli entities::drug::test_support::label_choice::phesgo_resolves_its_own_label_and_safety_line2631 PASS [ 0.020s] biomcp-cli entities::drug::test_support::label_choice::rybrevant_takes_the_plain_rybrevant_label_not_faspro2632 PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_choice::trastuzumab_takes_the_plain_herceptin_label_not_the_biosimilar2633 PASS [ 0.026s] biomcp-cli entities::drug::test_support::label_choice::the_rescue_adopts_a_candidate_only_through_its_own_record2634 PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_elements_fallback_no_match_settles_as_the_honest_empty2635 PASS [ 0.019s] biomcp-cli entities::drug::test_support::label_elements_fallback_returns_the_own_record_not_an_empty2636 PASS [ 0.026s] biomcp-cli entities::drug::test_support::label_elements_oversize_response_settles_as_unavailable_with_reason2637 PASS [ 0.020s] biomcp-cli entities::drug::test_support::product_names::advil_names_the_ingredient_it_pairs_not_the_merged_pm_row2638 PASS [ 0.021s] biomcp-cli entities::drug::test_support::product_names::headache_relief_names_the_product_it_pairs_not_a_merged_row2639 PASS [ 0.023s] biomcp-cli entities::drug::test_support::product_names::herceptin_hylecta_keeps_its_multi_word_brand_and_own_label2640 PASS [ 0.021s] biomcp-cli entities::drug::test_support::product_names::nighttime_sleep_aid_names_the_record_not_another_products_row2641 PASS [ 0.023s] biomcp-cli entities::drug::test_support::product_names::rituxan_hycela_keeps_its_multi_word_brand_and_own_label2642 PASS [ 0.023s] biomcp-cli entities::drug::test_support::product_names::tecentriq_hybreza_keeps_its_multi_word_brand_and_own_label2643 PASS [ 0.019s] biomcp-cli entities::drug::test_support::terfenadine_returns_terfenadines_card_with_an_honest_empty_label2644 PASS [ 0.010s] biomcp-cli entities::gene::cell_lines::tests::a_cellosaurus_failure_leaves_the_rows_with_no_accession_and_one_note2645 PASS [ 0.021s] biomcp-cli entities::gene::cell_lines::tests::a_name_no_window_claims_gets_no_accession_and_the_note2646 PASS [ 0.010s] biomcp-cli entities::gene::cell_lines::tests::an_empty_window_gives_no_accession_and_no_failure_note2647 PASS [ 1.045s] biomcp-cli entities::drug::get::tests::drug_card_sources_run_at_once_and_keep_the_undelayed_output2648 PASS [ 0.009s] biomcp-cli entities::gene::cell_lines::tests::an_html_body_with_http_200_is_a_provider_error_naming_the_url2649 PASS [ 0.097s] biomcp-cli entities::gene::cell_lines::tests::every_leukemia_name_resolves_to_one_human_accession2650 PASS [ 0.094s] biomcp-cli entities::gene::cell_lines::tests::limit_and_offset_page_the_rows_and_keep_the_total2651 PASS [ 0.010s] biomcp-cli entities::gene::cell_lines::tests::parser_ignores_an_object_for_another_gene_and_answers_empty_when_none_matches2652 PASS [ 0.009s] biomcp-cli entities::gene::cell_lines::tests::parser_keeps_a_non_numeric_value_as_null2653 PASS [ 0.010s] biomcp-cli entities::gene::cell_lines::tests::parser_keeps_the_requested_gene_and_the_recorded_group_order2654 PASS [ 6.534s] biomcp-cli cli::stale_json_note_tests::a_stale_search_all_json_states_the_cache_age_in_meta_notes2655 PASS [ 0.009s] biomcp-cli entities::gene::cell_lines::tests::the_attribution_line_names_the_recorded_file_date_and_the_confirmed_license2656 PASS [ 0.009s] biomcp-cli entities::gene::cell_lines::tests::the_group_list_is_the_thirty_the_data_access_page_publishes2657 PASS [ 0.013s] biomcp-cli entities::gene::cell_lines::tests::the_license_agrees_across_the_attribution_line_and_both_registries2658 PASS [ 0.010s] biomcp-cli entities::gene::clingen::tests::canceling_during_settle_aborts_its_clingen_prefetch_task2659 PASS [ 0.008s] biomcp-cli entities::gene::clingen::tests::canceling_parent_aborts_its_clingen_prefetch_task2660 PASS [ 0.010s] biomcp-cli entities::gene::clingen::tests::client_construction_failure_marks_both_families_before_requests2661 PASS [ 0.010s] biomcp-cli entities::gene::clingen::tests::family_statuses_define_the_exact_aggregate_truth_table2662 PASS [ 0.009s] biomcp-cli entities::gene::cspec::tests::ambiguous_short_version_lists_available_versions2663 PASS [ 0.010s] biomcp-cli entities::gene::cspec::tests::bounded_preserves_utf8_when_the_limit_splits_a_character2664 PASS [ 0.010s] biomcp-cli entities::gene::cspec::tests::post_fetch_paging_failure_is_not_projected_as_a_clingen_provider_failure2665 PASS [ 0.011s] biomcp-cli entities::gene::cspec::tests::receipted_atm_document_without_data_iri_pages_from_manifest_binding2666 PASS [ 0.099s] biomcp-cli entities::gene::cell_lines::tests::the_group_is_resolved_in_five_batches_and_no_sixth2667 PASS [ 0.033s] biomcp-cli entities::gene::cspec::tests::receipted_pten_files_and_normal_count_use_the_production_parser2668 PASS [ 0.009s] biomcp-cli entities::gene::cspec::tests::recorded_atm_document_deduplicates_citations_in_provider_order2669 PASS [ 0.009s] biomcp-cli entities::gene::cspec::tests::selected_document_must_match_the_manifest_specification_id2670 PASS [ 0.010s] biomcp-cli entities::gene::cspec::tests::selection_accepts_a_literal_iri_or_unique_short_version2671 PASS [ 0.020s] biomcp-cli entities::gene::gencc::tests::assertion_cap_is_separate_from_the_total2672 PASS [ 0.012s] biomcp-cli entities::gene::gencc::tests::canonical_symbol_and_hgnc_return_three_submission_rows2673 PASS [ 0.085s] biomcp-cli entities::gene::gencc::tests::bootstrap_parent_fsync_failures_fail_closed_before_any_store_is_returned2674 PASS [ 0.066s] biomcp-cli entities::gene::gencc::tests::cleanup_faults_retain_unowned_or_unfinished_entries_for_a_later_pass2675 PASS [ 0.225s] biomcp-cli entities::gene::cspec::tests::attachment_count_and_field_boundaries_fail_without_partial_rows2676 PASS [ 0.123s] biomcp-cli entities::gene::gencc::tests::descriptor_bootstrap_rejects_unsafe_or_substituted_anchors_and_reuses_inode2677 PASS [ 0.213s] biomcp-cli entities::gene::gencc::tests::default_and_override_subprocesses_reuse_the_external_anchor_inode_after_root_recreation2678 PASS [ 3.057s] biomcp-cli entities::author::papers::wire_tests::sanitized_errors_do_not_leak_provider_bodies_urls_or_credentials2679 PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::gene_section_names_include_new_enrichment_sections2680 PASS [ 0.014s] biomcp-cli entities::gene::gencc::tests::hgnc_precedence_matrix_covers_every_queryable_lifecycle_and_root_failure2681 PASS [ 0.321s] biomcp-cli entities::gene::gencc::tests::expired_refresh_budget_still_projects_authoritative_stale_data2682 PASS [ 2.536s] biomcp-cli entities::disease::get::tests::get_disease_alias_lookup_does_not_feed_the_abbreviation_to_open_targets2683 PASS [ 0.011s] biomcp-cli entities::gene::gencc::tests::missing_hgnc_uses_unique_symbol_identity2684 PASS [ 0.013s] biomcp-cli entities::gene::gencc::tests::one_sided_identity_match_is_inconclusive2685 PASS [ 0.007s] biomcp-cli entities::gene::gencc::tests::overflow_uid_never_inherits_system_owner_trust2686 PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::outcome_inventory_matches_parser_visible_sections2687 PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::parse_sections_accepts_new_enrichment_sections2688 PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::parse_sections_accepts_diagnostics2689 PASS [ 0.008s] biomcp-cli entities::gene::gencc::tests::parse_sections_all_keeps_optional_diagnostics_opt_in2690 PASS [ 0.009s] biomcp-cli entities::gene::gencc::tests::parse_sections_all_keeps_optional_sections_opt_in2691 PASS [ 0.010s] biomcp-cli entities::gene::gencc::tests::pre_index_identity_failure_precedes_store_creation2692 PASS [ 0.011s] biomcp-cli entities::gene::gencc::tests::projection_deadline_cancels_and_joins_the_actual_gencc_worker2693 PASS [ 0.062s] biomcp-cli entities::gene::gencc::tests::publication_rejects_a_substituted_generations_component_without_writing_through_it2694 PASS [ 0.013s] biomcp-cli entities::gene::gencc::tests::stale_positive_and_zero_outcomes_preserve_the_lifecycle_message2695 PASS [ 0.286s] biomcp-cli entities::gene::gencc::tests::injected_state_rename_failures_report_the_visible_namespace2696 PASS [ 0.350s] biomcp-cli entities::gene::gencc::tests::post_rename_200_and_304_deadlines_return_committed_public_rows2697 PASS [ 0.182s] biomcp-cli entities::gene::gencc::tests::subprocess_lease_child_exits_on_parent_end_of_input2698 PASS [ 0.010s] biomcp-cli entities::gene::tests::canonical_alias_identity_keeps_the_entrez_identifier2699 PASS [ 0.009s] biomcp-cli entities::gene::tests::canonical_alias_matches_cover_common_gene_aliases2700 PASS [ 0.010s] biomcp-cli entities::gene::tests::canonical_alias_matches_keep_ambiguous_aliases_ambiguous2701 PASS [ 0.010s] biomcp-cli entities::gene::tests::exact_gene_query_candidate_requires_symbol_safe_ascii_with_a_letter2702 PASS [ 0.011s] biomcp-cli entities::gene::tests::exact_gene_results_keep_distinct_ids_and_missing_identity_rows2703 PASS [ 0.010s] biomcp-cli entities::gene::tests::exact_gene_results_promote_then_dedupe_first_wins2704 PASS [ 0.009s] biomcp-cli entities::gene::tests::exact_search_followup_boundary_covers_fifty_and_fifty_one2705 PASS [ 0.009s] biomcp-cli entities::gene::tests::gene_diagnostics_section_populates_from_rows2706 PASS [ 0.010s] biomcp-cli entities::gene::tests::gene_diagnostics_unavailable_sets_note2707 PASS [ 0.011s] biomcp-cli entities::gene::tests::gene_section_result_application_is_strategy_order_invariant2708 PASS [ 0.010s] biomcp-cli entities::gene::tests::gnomad_constraint_without_metrics_is_healthy_empty2709 PASS [ 0.009s] biomcp-cli entities::gene::tests::merge_druggability_keeps_successful_source_data_when_other_source_fails2710 PASS [ 0.010s] biomcp-cli entities::gene::tests::merge_pathways_keeps_kegg_then_appends_reactome_without_duplicates2711 PASS [ 0.009s] biomcp-cli entities::gene::tests::mygene_query_term_escapes_free_text_special_chars2712 PASS [ 0.009s] biomcp-cli entities::gene::tests::mygene_query_term_searches_aliases_for_symbol_like_input2713 PASS [ 0.009s] biomcp-cli entities::gene::tests::normalize_gene_chromosome_accepts_chr_prefix_and_special_values2714 PASS [ 0.009s] biomcp-cli entities::gene::tests::normalize_gene_chromosome_rejects_invalid_values2715 PASS [ 0.009s] biomcp-cli entities::gene::tests::normalize_gene_type_accepts_supported_aliases2716 PASS [ 0.008s] biomcp-cli entities::gene::tests::normalize_gene_type_rejects_invalid_value2717 PASS [ 0.010s] biomcp-cli entities::gene::tests::normalize_go_id_accepts_canonical_and_lowercase_prefix2718 PASS [ 0.009s] biomcp-cli entities::gene::tests::normalize_go_id_rejects_free_text2719 PASS [ 0.010s] biomcp-cli entities::gene::tests::official_symbol_identity_keeps_the_entrez_identifier2720 PASS [ 0.010s] biomcp-cli entities::gene::tests::official_symbol_matches_refuse_aliases2721 PASS [ 0.010s] biomcp-cli entities::gene::tests::parse_sections_redirects_variants_to_variant_search2722 PASS [ 0.010s] biomcp-cli entities::gene::tests::pathway_outcome_credits_merged_sources_and_only_retained_sources_on_failure2723 PASS [ 0.010s] biomcp-cli entities::gene::tests::quickgo_and_string_failure_state_matrix2724 PASS [ 0.009s] biomcp-cli entities::gene::tests::search_query_summary_includes_new_filters2725 PASS [ 0.009s] biomcp-cli entities::pathway::tests::ensembl_redirect_matcher_rejects_malformed_version_suffix2726 PASS [ 7.350s] biomcp-cli entities::article::assets::tests::manifest_and_bytes_preserve_induced_archive_failure_after_figshare_miss2727 PASS [ 0.011s] biomcp-cli entities::pathway::tests::finalize_pathway_search_results_keeps_wikipathways_when_kegg_is_disabled2728 PASS [ 0.018s] biomcp-cli entities::pathway::tests::extract_gene_symbols_dedupes_and_filters_non_gene_tokens2729 PASS [ 0.009s] biomcp-cli entities::pathway::tests::finalize_pathway_search_results_surfaces_partial_source_failure2730 PASS [ 0.010s] biomcp-cli entities::pathway::tests::kegg_all_expands_to_supported_sections_only2731 PASS [ 0.009s] biomcp-cli entities::pathway::tests::kegg_disabled_error_names_the_disable_reason_and_an_alternative2732 PASS [ 0.008s] biomcp-cli entities::pathway::tests::kegg_explicit_enrichment_section_is_rejected2733 PASS [ 0.010s] biomcp-cli entities::pathway::tests::kegg_explicit_events_section_is_rejected2734 PASS [ 0.014s] biomcp-cli entities::pathway::tests::looks_like_gene_symbol_rejects_mutation_notation2735 PASS [ 0.009s] biomcp-cli entities::pathway::tests::normalize_pathway_query_maps_confirmed_mapk_aliases2736 PASS [ 0.009s] biomcp-cli entities::pathway::tests::parse_sections_supports_all_and_rejects_unknown_values2737 PASS [ 0.010s] biomcp-cli entities::pathway::tests::pathway_json_compatibility_defaults_missing_outcomes_and_rejects_foreign_keys2738 PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_gene_redirect_for_ensembl_gene_id2739 PASS [ 0.011s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_gene_redirect_for_ensembl_transcript_id2740 PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_gene_redirect_for_gene_symbol2741 PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_gene_redirect_for_versioned_ensembl_id2742 PASS [ 2.021s] biomcp-cli entities::drug::test_support::a_stalled_drug_refusal_costs_one_discover_budget2743 PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_protein_redirect_for_uniprot_accession2744 PASS [ 0.012s] biomcp-cli entities::pathway::tests::pathway_lookup_error_adds_variant_redirect_for_rsid2745 PASS [ 0.010s] biomcp-cli entities::pathway::tests::pathway_title_match_tier_prefers_exact_then_prefix_then_contains2746 PASS [ 0.014s] biomcp-cli entities::pathway::tests::pathway_lookup_error_preserves_redirect_without_duplicate_source_recovery2747 PASS [ 0.010s] biomcp-cli entities::pathway::tests::rerank_pathway_search_results_drops_rows_unrelated_to_query2748 PASS [ 0.009s] biomcp-cli entities::pathway::tests::rerank_pathway_search_results_uses_upstream_position_for_same_tier2749 PASS [ 0.411s] biomcp-cli entities::gene::gencc::tests::subprocess_lease_defers_old_generation_cleanup_until_reader_exits2750 PASS [ 0.010s] biomcp-cli entities::pathway::tests::search_requires_query_with_quoted_example2751 PASS [ 0.009s] biomcp-cli entities::pathway::tests::wikipathways_all_expands_to_supported_sections_only2752 PASS [ 0.010s] biomcp-cli entities::pathway::tests::wikipathways_explicit_enrichment_section_is_rejected2753 PASS [ 0.010s] biomcp-cli entities::pathway::tests::wikipathways_explicit_events_section_is_rejected2754 PASS [ 0.010s] biomcp-cli entities::pathway::tests::wikipathways_gene_outcome_credits_symbol_resolution_provider2755 PASS [ 0.009s] biomcp-cli entities::pgx::recommendation_mapping_tests::recommendation_mapping_does_not_override_the_section_limit2756 PASS [ 0.010s] biomcp-cli entities::pgx::recommendation_mapping_tests::recommendations_keep_complete_deterministic_genotypes2757 PASS [ 0.010s] biomcp-cli entities::pgx::recommendation_mapping_tests::recommendations_render_every_available_gene_without_hashmap_fallbacks2758 PASS [ 0.009s] biomcp-cli entities::pgx::tests::distinct_actionable_cpic_gene_count_counts_unique_genes_to_threshold2759 PASS [ 0.016s] biomcp-cli entities::pgx::recommendation_mapping_tests::recommendations_fetch_bounded_gene_drug_coverage2760 PASS [ 0.009s] biomcp-cli entities::pgx::tests::likely_gene_uses_input_case_and_rejects_multi_word_queries2761 PASS [ 0.010s] biomcp-cli entities::pgx::tests::normalize_cpic_level_accepts_supported_values2762 PASS [ 0.013s] biomcp-cli entities::pgx::tests::get_options_reject_invalid_paging_before_client_construction2763 PASS [ 0.009s] biomcp-cli entities::pgx::tests::normalize_cpic_level_rejects_invalid_value2764 PASS [ 0.009s] biomcp-cli entities::pgx::tests::normalize_pgx_testing_accepts_supported_values2765 PASS [ 0.009s] biomcp-cli entities::pgx::tests::normalize_pgx_testing_rejects_blank_and_unknown_values2766 PASS [ 0.009s] biomcp-cli entities::pgx::tests::parse_sections_supports_all2767 PASS [ 0.009s] biomcp-cli entities::pgx::tests::search_summary_formats_filters2768 PASS [ 0.008s] biomcp-cli entities::pgx::tests::section_pagination_uses_exact_total_or_limit_plus_one2769 PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::a_body_over_the_cap_is_an_unavailable_section_naming_the_size2770 PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::a_cell_line_row_names_its_compound_and_a_drug_row_names_its_cell_line2771 PASS [ 0.009s] biomcp-cli entities::pharmacodb::tests::a_compound_name_matches_ignoring_ascii_case_only2772 PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::a_known_dataset_normalizes_to_the_name_pharmacodb_publishes2773 PASS [ 0.009s] biomcp-cli entities::pharmacodb::tests::a_record_that_claims_another_accession_is_a_mismatch2774 PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::a_null_metric_stays_null_in_json_and_prints_as_a_dash2775 PASS [ 2.119s] biomcp-cli entities::drug::test_support::a_slow_alias_fallback_round_gives_up_within_the_refusal_budget2776 PASS [ 0.008s] biomcp-cli entities::pharmacodb::tests::a_record_that_claims_the_requested_accession_is_accepted2777 PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::an_unknown_dataset_lists_the_ten_dataset_names2778 PASS [ 0.031s] biomcp-cli entities::pharmacodb::tests::a_dataset_filter_keeps_only_that_dataset_and_ignores_case2779 PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::another_failure_is_unavailable_without_the_size_message2780 PASS [ 0.010s] biomcp-cli entities::pharmacodb::tests::json_keeps_the_published_value_without_rounding2781 PASS [ 0.029s] biomcp-cli entities::pharmacodb::tests::a_repeated_compound_and_dataset_pair_keeps_every_row_with_its_own_id2782 PASS [ 0.007s] biomcp-cli entities::pharmacodb::tests::markdown_prints_a_metric_with_up_to_four_significant_digits2783 PASS [ 0.007s] biomcp-cli entities::pharmacodb::tests::no_record_at_all_is_missing_and_not_a_mismatch2784 PASS [ 0.007s] biomcp-cli entities::pharmacodb::tests::the_attribution_line_names_the_terms_the_version_the_units_and_the_limits2785 PASS [ 0.047s] biomcp-cli entities::pharmacodb::tests::a_row_page_pages_the_matched_rows_and_keeps_the_whole_side_total2786 PASS [ 0.011s] biomcp-cli entities::pharmacodb::tests::the_counts_payload_sums_the_recorded_molm13_datasets2787 PASS [ 0.028s] biomcp-cli entities::pharmacodb::tests::rows_sort_by_counterpart_name_then_dataset_then_experiment_id2788 PASS [ 0.026s] biomcp-cli entities::pharmacodb::tests::the_counts_line_names_every_dataset_in_name_order2789 PASS [ 0.009s] biomcp-cli entities::protein::tests::complexportal_outcome_uses_registered_provider_label2790 PASS [ 0.013s] biomcp-cli entities::pharmacodb::tests::the_license_agrees_across_the_attribution_line_and_both_registries2791 PASS [ 0.010s] biomcp-cli entities::protein::tests::interpro_and_string_failure_state_matrix2792 PASS [ 0.008s] biomcp-cli entities::protein::tests::paginate_structures_applies_offset_then_limit2793 PASS [ 0.009s] biomcp-cli entities::protein::tests::map_complexportal_complex_uses_explicit_curation_and_components2794 PASS [ 0.009s] biomcp-cli entities::protein::tests::parse_sections_supports_all_and_reports_unknown_values2795 PASS [ 0.069s] biomcp-cli entities::pharmacodb::tests::a_venetoclax_page_reports_the_recorded_drug_side_counts2796 PASS [ 0.009s] biomcp-cli entities::protein::tests::search_rejects_empty_query2797 PASS [ 0.009s] biomcp-cli entities::protein::tests::species_and_review_filters_form_an_independent_matrix2798 PASS [ 0.010s] biomcp-cli entities::protein::tests::uniprot_accession_validation_accepts_accessions_and_rejects_symbols2799 PASS [ 0.009s] biomcp-cli entities::protein::tests::validate_structure_limit_enforces_bounds2800 PASS [ 0.009s] biomcp-cli entities::section_outcome::tests::bounded_messages_cut_at_a_word_boundary2801 PASS [ 0.009s] biomcp-cli entities::section_outcome::tests::deserialization_rejects_illegal_shapes_and_unsafe_messages2802 PASS [ 0.010s] biomcp-cli entities::section_outcome::tests::deserialized_registry_rejects_entity_foreign_keys2803 PASS [ 0.010s] biomcp-cli entities::section_outcome::tests::permanent_flag_serializes_and_validates2804 PASS [ 0.011s] biomcp-cli entities::section_outcome::tests::registry_rejects_second_completion2805 PASS [ 0.010s] biomcp-cli entities::section_outcome::tests::registry_rejects_unknown_keys2806 PASS [ 0.010s] biomcp-cli entities::section_outcome::tests::registry_serializes_all_states_and_safe_messages2807 PASS [ 0.007s] biomcp-cli entities::section_outcome::tests::successful_outcomes_require_a_source2808 PASS [ 0.009s] biomcp-cli entities::source_state_registry::recovery_tests::every_source_state_row_has_one_callable_recovery_route2809 PASS [ 0.011s] biomcp-cli entities::study::tests::co_occurrence_validates_gene_count2810 PASS [ 0.012s] biomcp-cli entities::study::tests::cohort_round_trips_source_result2811 PASS [ 0.011s] biomcp-cli entities::study::tests::compare_expression_values_returns_mutant_then_wildtype_groups2812 PASS [ 0.012s] biomcp-cli entities::study::tests::compare_expression_round_trips_source_result2813 PASS [ 0.009s] biomcp-cli entities::study::tests::compare_mutations_round_trips_source_result2814 PASS [ 0.011s] biomcp-cli entities::study::tests::expression_pairs_by_sample_round_trips_source_result2815 PASS [ 0.011s] biomcp-cli entities::study::tests::expression_values_returns_sorted_values2816 PASS [ 0.010s] biomcp-cli entities::study::tests::filter_validates_empty_criteria2817 PASS [ 0.011s] biomcp-cli entities::study::tests::filter_round_trips_source_result2818 PASS [ 0.011s] biomcp-cli entities::study::tests::list_studies_returns_available_data2819 PASS [ 0.010s] biomcp-cli entities::study::tests::missing_root::missing_study_root_is_an_empty_catalog2820 PASS [ 0.009s] biomcp-cli entities::study::tests::missing_root::normalize_study_id_rejects_path_like_input2821 PASS [ 2.016s] biomcp-cli entities::drug::test_support::product_names::a_slow_discover_round_never_holds_the_refusal_hostage2822 PASS [ 0.011s] biomcp-cli entities::study::tests::missing_root::query_with_a_missing_root_returns_not_in_local_cohorts2823 PASS [ 0.012s] biomcp-cli entities::study::tests::mutation_counts_by_sample_round_trips_source_result2824 PASS [ 0.013s] biomcp-cli entities::study::tests::mutation_outputs_include_caveat_when_structural_variants_exist2825 PASS [ 0.012s] biomcp-cli entities::study::tests::query_study_missing_local_cohort_returns_coverage_signal2826 PASS [ 0.011s] biomcp-cli entities::study::tests::query_study_structural_variants_round_trips_source_result2827 PASS [ 0.011s] biomcp-cli entities::study::tests::query_study_mutations_round_trips_source_result2828 PASS [ 0.010s] biomcp-cli entities::study::tests::query_type_from_flag_parses_supported_values2829 PASS [ 0.012s] biomcp-cli entities::study::tests::query_study_unknown_study_returns_not_in_local_cohorts2830 PASS [ 0.008s] biomcp-cli entities::study::tests::query_type_from_flag_rejects_unknown_type2831 PASS [ 0.009s] biomcp-cli entities::study::tests::survival_endpoint_rejects_unknown_value2832 PASS [ 0.009s] biomcp-cli entities::study::tests::survival_endpoint_from_flag_parses_supported_values2833 PASS [ 0.013s] biomcp-cli entities::study::tests::survival_round_trips_source_result2834 PASS [ 0.009s] biomcp-cli entities::trial::age_tests::provider_age_grammar_is_exact_and_fail_open2835 PASS [ 0.010s] biomcp-cli entities::study::tests::top_mutated_genes_reports_ranked_rows2836 PASS [ 0.010s] biomcp-cli entities::trial::age_tests::public_age_serde_is_object_only_and_validated2837 PASS [ 0.009s] biomcp-cli entities::trial::documents::tests::eligibility_provenance_tracks_document_availability2838 PASS [ 0.009s] biomcp-cli entities::trial::documents::tests::constructs_fixed_percent_encoded_path2839 PASS [ 0.009s] biomcp-cli entities::trial::documents::tests::maps_manifest_metadata_handles_and_empty_state2840 PASS [ 0.010s] biomcp-cli entities::trial::documents::tests::omits_handles_for_unsafe_advertised_filenames2841 PASS [ 0.009s] biomcp-cli entities::trial::documents::tests::rejects_unsafe_document_filenames2842 PASS [ 0.012s] biomcp-cli entities::trial::documents::tests::rejects_off_origin_redirect_before_contacting_target2843 PASS [ 0.013s] biomcp-cli entities::trial::documents::tests::reported_oversize_remains_listable_and_actual_small_body_is_retrievable2844 PASS [ 0.010s] biomcp-cli entities::trial::eligibility::strict_json::tests::depth_limit_is_inclusive_and_rejects_one_more_container2845 PASS [ 0.010s] biomcp-cli entities::trial::eligibility::strict_json::tests::rejects_duplicate_members_at_any_depth2846 PASS [ 0.084s] biomcp-cli entities::trial::eligibility::strict_json::tests::object_member_limit_is_inclusive_and_counts_duplicates2847 PASS [ 0.102s] biomcp-cli entities::trial::documents::tests::permits_exact_body_limit_and_rejects_one_extra_byte2848 PASS [ 0.011s] biomcp-cli entities::trial::eligibility::tests::direct_eligibility_wire_preserves_every_value_and_explicit_empty_collection2849 PASS [ 0.013s] biomcp-cli entities::trial::eligibility::tests::direct_eligibility_wire_rejects_bad_identity_text_codes_and_members2850 PASS [ 0.010s] biomcp-cli entities::trial::eligibility::tests::direct_eligibility_wire_rejects_duplicate_members2851 PASS [ 0.012s] biomcp-cli entities::trial::eligibility::tests::direct_eligibility_wire_rejects_malformed_age_and_any_other_no_limit_rule2852 PASS [ 0.010s] biomcp-cli entities::trial::eligibility::tests::trial_wire_distinguishes_a_missing_field_from_an_all_null_aggregate2853 PASS [ 0.010s] biomcp-cli entities::trial::get::tests::get_rejects_non_nct_id_with_format_hint2854 PASS [ 0.018s] biomcp-cli entities::trial::get::tests::nci_arm_conversion_preserves_every_occurrence_and_assignment2855 PASS [ 0.145s] biomcp-cli entities::trial::eligibility::strict_json::tests::rejects_trailing_and_oversized_input2856 PASS [ 0.040s] biomcp-cli entities::trial::get::tests::nci_criterion_sorting_preserves_source_occurrence_identity_and_classification2857 PASS [ 0.048s] biomcp-cli entities::trial::get::tests::nci_eligibility_keeps_absence_and_an_explicit_empty_list_distinct2858 PASS [ 0.216s] biomcp-cli entities::trial::eligibility::strict_json::tests::string_scalar_limit_is_inclusive2859 PASS [ 0.128s] biomcp-cli entities::trial::get::tests::ctgov_eligibility_provenance_exists_only_for_explicit_text2860 PASS [ 0.045s] biomcp-cli entities::trial::get::tests::nci_not_found_status_wins_before_an_oversized_body_is_read2861 PASS [ 0.011s] biomcp-cli entities::trial::get::tests::nci_request_state_table_requests_eligibility_exactly_when_selected2862 PASS [ 0.021s] biomcp-cli entities::trial::get::tests::nci_product_conversion_checks_enrollment_and_preserves_source_presence2863 PASS [ 0.009s] biomcp-cli entities::trial::get::tests::normalize_nct_id_uppercases_prefix2864 PASS [ 0.008s] biomcp-cli entities::trial::get::tests::parse_sections_accepts_contacts_and_all_includes_contacts2865 PASS [ 0.008s] biomcp-cli entities::trial::get::tests::product_design_retains_a_relationship_failure_from_mismatched_sections2866 PASS [ 0.009s] biomcp-cli entities::trial::get::tests::product_references_maps_each_section_state2867 PASS [ 0.007s] biomcp-cli entities::trial::get::tests::trial_design_contracts::deserialization_rejects_duplicate_and_dangling_relationships2868 PASS [ 0.008s] biomcp-cli entities::trial::get::tests::trial_design_contracts::flattened_design_keeps_assignment_member2869 PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::missing_intervention_is_checked_against_the_supplied_collection2870 PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::trial_design_distinguishes_section_presence_from_relationship_failures2871 PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::trial_design_error_retains_sources_and_safe_public_projections2872 PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::trial_design_preserves_all_relationship_failure_variants2873 PASS [ 0.009s] biomcp-cli entities::trial::get::tests::trial_design_contracts::trial_design_round_trips_shared_relationships2874 PASS [ 0.008s] biomcp-cli entities::trial::get::tests::trial_design_contracts::type_wire_rejects_missing_unknown_and_empty_members2875 PASS [ 0.013s] biomcp-cli entities::trial::search::ctgov::abbreviation_note_tests::default_source_names_the_ambiguous_abbreviation_keyword_search2876 PASS [ 0.013s] biomcp-cli entities::trial::search::ctgov::abbreviation_note_tests::default_source_skips_the_ambiguity_note_for_full_words2877 PASS [ 0.014s] biomcp-cli entities::trial::search::ctgov::abbreviation_note_tests::default_source_notes_the_lowercase_abbreviation_like_the_uppercase2878 PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::age_filter_total_returns_native_total_when_exhausted2879 PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::alias_expansion_next_page_error_is_actionable2880 PASS [ 0.014s] biomcp-cli entities::trial::search::ctgov::tests::age_filter_uses_native_total_semantics_across_limits2881 PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::alias_union_count_returns_exact_unique_total_when_exhausted2882 PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::alias_union_does_not_claim_missing_nct_ids_before_filtering2883 PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::alias_union_provenance_uses_the_claimed_normalized_nct_id2884 PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::alias_union_returns_the_traversal_limit_reason_at_its_cap2885 PASS [ 8.865s] biomcp-cli cli::article::tests::outage::rows_with_semantic_scholar_down_keep_exit_zero_complete_false2886 PASS [ 0.015s] biomcp-cli entities::trial::search::ctgov::tests::an_over_age_unchecked_trial_never_marks_the_count_partial2887 PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::build_ctgov_search_params_keeps_search_and_count_call_shapes_aligned2888 PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::build_ctgov_search_params_maps_all_shared_fields2889 PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::build_ctgov_search_params_preserves_none_values_without_defaults2890 PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::build_ctgov_search_params_quotes_interventions_as_single_essie_literals2891 PASS [ 0.013s] biomcp-cli entities::trial::search::ctgov::tests::count_all_keeps_an_omitted_provider_total_unknown2892 PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::count_all_returns_approximate_for_age_only_filters2893 PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::count_all_returns_exact_for_no_post_filters2894 PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_cursor_preserves_next_page_token_after_offset_full_page_consumption2895 PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_cursor_without_a_reported_total_keeps_the_provider_token2896 PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_query_term_broadens_mutation_across_discovery_fields2897 PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_query_term_joins_multi_phase_filters_with_and2898 PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_query_term_broadens_simple_mutation_across_discovery_fields2899 PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_query_term_preserves_hyphenated_eligibility_phrases2900 PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_worker_outcome_skips_only_expanded_parser_rejections2901 PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_workers_do_not_label_literal_single_intervention2902 PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::ctgov_workers_keep_literal_condition_during_intervention_fanout2903 PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::facility_geo_verification_leaves_the_provider_total_unreported2904 PASS [ 0.014s] biomcp-cli entities::trial::search::ctgov::tests::expensive_single_query_returns_the_traversal_limit_reason_at_its_cap2905 PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::literal_condition_search_still_reports_limit_one_total2906 PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::no_alias_expand_builds_one_literal_requested_name_worker2907 PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::search_path_rejects_next_page_when_alias_expansion_uses_multiple_queries2908 PASS [ 0.011s] biomcp-cli entities::trial::search::ctgov::tests::recorded_provider_phase_output_round_trips_to_exact_ctgov_request2909 PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::skipped_expanded_worker_makes_search_and_count_totals_unknown2910 PASS [ 0.008s] biomcp-cli entities::trial::search::ctgov::tests::trial_location_requires_a_positive_distance2911 PASS [ 0.009s] biomcp-cli entities::trial::search::ctgov::tests::trial_numeric_filters_are_validated_before_request_construction2912 PASS [ 0.010s] biomcp-cli entities::trial::search::ctgov::tests::trial_search_rejects_absurd_offset_before_provider_setup2913 PASS [ 0.012s] biomcp-cli entities::trial::search::ctgov::tests::verification_emptied_zero_reports_the_provider_total2914 PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::keep_paths::a_study_without_an_nct_id_is_kept_and_reported_without_a_fetch2915 PASS [ 0.447s] biomcp-cli entities::trial::eligibility::strict_json::tests::collection_element_limit_is_inclusive2916 PASS [ 0.014s] biomcp-cli entities::trial::search::eligibility::keep_paths::missing_eligibility_text_keeps_the_study_and_reports_it2917 PASS [ 0.025s] biomcp-cli entities::trial::search::eligibility::keep_paths::a_verified_keyword_match_stays_out_of_the_report2918 PASS [ 0.013s] biomcp-cli entities::trial::search::eligibility::tests::collect_eligibility_keywords_includes_supported_filters2919 PASS [ 0.456s] biomcp-cli entities::trial::eligibility::strict_json::tests::normalized_event_limit_is_inclusive2920 PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::tests::collect_eligibility_keywords_omits_blank_values2921 PASS [ 0.013s] biomcp-cli entities::trial::search::eligibility::tests::collect_eligibility_keywords_skips_boolean_expressions2922 PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_hyphenated_token2923 PASS [ 0.016s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_does_not_match_without_plus_suffix2924 PASS [ 0.017s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_hyphenated_plus_token2925 PASS [ 0.011s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_word_token2926 PASS [ 0.019s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_plus_suffix_token2927 PASS [ 0.019s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_matches_slash_separated_plus_tokens2928 PASS [ 0.017s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_rejects_hyphenated_token_without_plus_suffix2929 PASS [ 0.012s] biomcp-cli entities::trial::search::eligibility::tests::contains_keyword_tokens_rejects_substring_word_match2930 PASS [ 0.014s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_discards_exclusion_only_match2931 PASS [ 0.015s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_discards_negated_inclusion_sentence2932 PASS [ 0.014s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_fails_open_when_keyword_missing2933 PASS [ 0.013s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_fails_open_without_exclusion_section2934 PASS [ 0.013s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_keeps_when_inclusion_matches2935 PASS [ 0.015s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_keeps_when_in_both_sections2936 PASS [ 0.015s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_rejects_mixed_context_without_exclusion_section2937 PASS [ 0.014s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_rejects_negated_without_exclusion_section2938 PASS [ 0.009s] biomcp-cli entities::trial::search::eligibility::tests::facility_geo_discards_mixed_site_false_positive2939 PASS [ 0.015s] biomcp-cli entities::trial::search::eligibility::tests::eligibility_keyword_in_inclusion_rejects_no_prior_without_exclusion_section2940 PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::tests::facility_geo_keeps_same_site_match2941 PASS [ 0.346s] biomcp-cli entities::trial::get::tests::nci_get_eligibility_uses_receipted_trial_record_shape2942 PASS [ 0.011s] biomcp-cli entities::trial::search::eligibility::tests::split_eligibility_sections_detects_exclusion_header2943 PASS [ 0.012s] biomcp-cli entities::trial::search::eligibility::tests::split_eligibility_sections_supports_key_exclusion_header2944 PASS [ 0.008s] biomcp-cli entities::trial::search::eligibility::tests::verify_age_eligibility_fails_open_for_noncomparable_and_malformed_bounds2945 PASS [ 0.012s] biomcp-cli entities::trial::search::eligibility::tests::split_eligibility_sections_without_exclusion_keeps_all_in_inclusion2946 PASS [ 0.010s] biomcp-cli entities::trial::search::eligibility::tests::verify_age_eligibility_handles_sub_year_maximum_age2947 PASS [ 0.009s] biomcp-cli entities::trial::search::eligibility::tests::verify_age_eligibility_handles_sub_year_minimum_age2948 PASS [ 0.011s] biomcp-cli entities::trial::search::essie::tests::essie_escape_boolean_expression_handles_and_not2949 PASS [ 0.013s] biomcp-cli entities::trial::search::essie::tests::criteria_query_and_verification_share_case_sensitive_operator_rules2950 PASS [ 0.009s] biomcp-cli entities::trial::search::essie::tests::essie_escape_pins_the_escape_set_and_leaves_hyphens_literal2951 PASS [ 0.011s] biomcp-cli entities::trial::search::essie::tests::essie_escape_boolean_expression_handles_leading_not2952 PASS [ 0.011s] biomcp-cli entities::trial::search::essie::tests::essie_escape_boolean_expression_preserves_or_operators2953 PASS [ 0.009s] biomcp-cli entities::trial::search::essie::tests::line_of_therapy_patterns_accepts_supported_values2954 PASS [ 0.009s] biomcp-cli entities::trial::search::essie::tests::line_of_therapy_patterns_rejects_invalid_values2955 PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_age_rejection_precedes_both_provider_requests2956 PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_biomarker_like_fields_never_choose_or_duplicate_a_value2957 PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_keyword_fallback_request_uses_keyword_not_concept_id2958 PASS [ 0.015s] biomcp-cli entities::trial::search::nci::tests::nci_ambiguous_condition_refuses_instead_of_keyword_search2959 PASS [ 0.012s] biomcp-cli entities::trial::search::nci::tests::nci_mm_refusal_leads_with_the_reading_and_names_the_trial_retry2960 PASS [ 0.008s] biomcp-cli entities::trial::search::nci::tests::nci_phase_mapping_uses_i_ii_for_combined_phase2961 PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_public_filter_table_is_explicit2962 PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_search_falls_back_to_keyword_when_grounding_is_unavailable2963 PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_search_falls_back_to_keyword_when_best_hit_lacks_nci_xref2964 PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::nci_search_prefers_grounded_disease_concept_id2965 PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_source_rejects_early_phase12966 PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_source_rejects_status_lists2967 PASS [ 0.009s] biomcp-cli entities::trial::search::nci::tests::nci_status_mapping_uses_documented_single_value_filters2968 PASS [ 0.010s] biomcp-cli entities::trial::search::nci::tests::recorded_provider_phase_output_round_trips_to_exact_nci_request2969 PASS [ 0.012s] biomcp-cli entities::trial::search::normalization::tests::normalize_intervention_query_canonicalizes_confirmed_drug_code_pattern2970 PASS [ 0.011s] biomcp-cli entities::trial::search::normalization::tests::normalize_intervention_query_preserves_generic_multiword_names2971 PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_phase_accepts_aliases2972 PASS [ 0.010s] biomcp-cli entities::trial::search::normalization::tests::normalize_phase_rejects_invalid_value2973 PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_sex_accepts_supported_values2974 PASS [ 0.008s] biomcp-cli entities::trial::search::normalization::tests::normalize_sex_rejects_invalid_value2975 PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_sponsor_type_accepts_supported_values2976 PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_sponsor_type_rejects_invalid_value2977 PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_status_accepts_comma_separated_values2978 PASS [ 0.008s] biomcp-cli entities::trial::search::normalization::tests::normalize_status_accepts_ctgov_wording_and_aliases2979 PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_status_rejects_comma_list_with_invalid_value2980 PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::normalize_status_rejects_invalid_value2981 PASS [ 0.008s] biomcp-cli entities::trial::search::normalization::tests::normalized_phase_filter_preserves_blank_as_absent2982 PASS [ 0.009s] biomcp-cli entities::trial::search::normalization::tests::status_priority_prefers_recruiting_over_completed2983 PASS [ 0.114s] biomcp-cli entities::trial::search::nci::tests::nci_keyword_degrade_note_reaches_the_search_page2984 PASS [ 0.010s] biomcp-cli entities::trial::search::normalization::tests::trial_sources_reject_ambiguous_active_status_with_replacements2985 PASS [ 0.116s] biomcp-cli entities::trial::search::nci::tests::nci_overlong_condition_truncates_instead_of_failing2986 PASS [ 0.010s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_reference_wire_accepts_every_shared_value_state2987 PASS [ 0.010s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_reference_wire_emits_exact_complete_shapes2988 PASS [ 0.010s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_reference_wire_preserves_duplicates_for_strict_local_trial_rejection2989 PASS [ 0.008s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_reference_wire_preserves_section_states_order_and_unicode2990 PASS [ 0.009s] biomcp-cli entities::trial::test_support::reference_wire_tests::trial_stores_shared_references_directly2991 PASS [ 0.112s] biomcp-cli entities::trial::search::nci::tests::nci_ungroundable_condition_keeps_the_keyword_degrade2992 PASS [ 0.012s] biomcp-cli entities::variant::clinvar::tests::canonical_outcomes_and_provenance_match_selected_payload_source2993 PASS [ 0.013s] biomcp-cli entities::variant::clinvar::tests::day_shaped_gate_lives_in_utils_and_dates_it_prints_come_from_the_shared_rule2994 PASS [ 0.012s] biomcp-cli entities::variant::clinvar::tests::degraded_labels_name_the_failed_source_reason_and_fallback_age2995 PASS [ 0.011s] biomcp-cli entities::variant::clinvar::tests::fallback_age_is_omitted_without_a_strict_day_shaped_date2996 PASS [ 0.011s] biomcp-cli entities::variant::clinvar::tests::fallback_age_names_the_newest_of_several_dated_rows2997 PASS [ 0.013s] biomcp-cli entities::variant::clinvar::tests::missing_numeric_variation_id_is_source_free_inapplicable2998 PASS [ 5.827s] biomcp-cli entities::article::variant_search::tests::degraded_strict_leg_partials_mark_the_route_incomplete2999 PASS [ 0.009s] biomcp-cli entities::variant::clinvar::tests::provider_errors_classify_into_rate_limit_and_provider_buckets3000 PASS [ 0.010s] biomcp-cli entities::variant::erepo::tests::detail_identity_uses_path_and_reports_mismatches_as_internal3001 PASS [ 0.012s] biomcp-cli entities::variant::clinvar::tests::unavailable_labels_name_the_failed_source_and_reason3002 PASS [ 0.010s] biomcp-cli entities::variant::erepo::tests::gene_preview_omits_oversized_strings_without_cutting_them3003 PASS [ 0.020s] biomcp-cli entities::variant::erepo::tests::detail_retrieval_consumes_the_summary_selected_plan3004 PASS [ 0.015s] biomcp-cli entities::variant::erepo::tests::receipted_apc_detail_preserves_the_provider_at_id3005 PASS [ 0.011s] biomcp-cli entities::variant::erepo::tests::receipted_guideline_pages_preserve_labels_and_parse_only_semver3006 PASS [ 0.013s] biomcp-cli entities::variant::erepo::tests::receipted_pten_gene_page_is_compact_bounded_and_truthfully_paged3007 PASS [ 0.011s] biomcp-cli entities::variant::erepo::tests::selector_accepts_an_exact_historical_version3008 PASS [ 0.009s] biomcp-cli entities::variant::erepo::tests::selectors_require_detail3009 PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::headline_shows_the_current_transcript_version_clinvar_carries3010 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::mane_annotation_names_change_reads_the_mane_stem_only3011 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::mane_numbering_refusal_names_the_residue_and_the_lookalike3012 PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_absent_refusal_fires_mid_sequence3013 PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_absent_refusal_without_a_mane_transcript_claims_only_the_headline3014 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_headlines_the_mane_transcript_of_the_query3015 PASS [ 0.010s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_keeps_a_single_matching_hit3016 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_keeps_the_named_brca1_change_over_a_clinvar_lookalike3017 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_keeps_the_named_change_over_a_clinvar_lookalike3018 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_a_many_row_record_past_the_protein_end3019 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_a_position_past_the_canonical_protein_end3020 PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_a_proven_other_numbering_without_a_mane_transcript3021 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_h1883d_past_the_canonical_protein_end3022 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_the_numbering_when_the_hit_does_not_spell_the_request3023 PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_unchecked_numbering_without_a_mane_transcript3024 PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_notes_unchecked_numbering_without_facts3025 PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_pins_the_true_other_transcript_numbering_note3026 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_prefers_the_canonical_spelling_over_conflicting_records3027 PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_prefers_the_clinvar_named_hit_over_first_match3028 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_a_clinvar_lookalike_without_the_named_change3029 PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_a_hit_without_any_protein_change3030 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_a_long_isoform_spelling_of_a_mane_numbered_request3031 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_a_lookalike_without_facts3032 PASS [ 0.314s] biomcp-cli entities::variant::clinvar::tests::add_clinvar_admits_rate_limiting_when_a_sustained_429_outlives_the_deadline3033 PASS [ 0.010s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_conflicting_clinvar_records3034 PASS [ 0.012s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_an_isoform_spelling_of_a_mane_numbered_request3035 PASS [ 0.314s] biomcp-cli entities::variant::clinvar::tests::add_clinvar_labels_a_deadline_miss_when_the_direct_answer_never_arrives3036 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_refuses_when_no_clinvar_record_names_one3037 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_resolves_the_requested_numbering_without_a_marker3038 PASS [ 0.014s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_resolves_a_past_insert_change_on_mane_numbering3039 PASS [ 0.014s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_resolves_the_naming_annotation_without_a_marker3040 PASS [ 9.640s] biomcp-cli cli::article::tests::entities_disease_links::article_entities_disease_rows_link_the_named_disease_or_search3041 PASS [ 0.010s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_without_matching_hits_keeps_the_search_suggestion3042 PASS [ 0.010s] biomcp-cli entities::variant::get::protein_change_tests::requested_reference_residue_parses_compact_substitutions3043 PASS [ 0.014s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_returns_the_mane_named_candidate_of_two_alias_hits3044 PASS [ 0.013s] biomcp-cli entities::variant::get::protein_change_tests::protein_change_resolution_skips_the_note_when_the_hit_spells_the_request3045 PASS [ 0.010s] biomcp-cli entities::variant::get::tests::cancerhotspots_checked_absence_is_empty_not_data3046 PASS [ 0.011s] biomcp-cli entities::variant::get::tests::cancerhotspots_enrichment_uses_requested_change_not_resolved_hgvsp3047 PASS [ 0.009s] biomcp-cli entities::variant::get::tests::cancerhotspots_upstream_failure_omits_recurrence_and_preserves_cbioportal3048 PASS [ 0.013s] biomcp-cli entities::variant::get::tests::agreeing_record_level_classification_drops_the_cached_copy_note3049 PASS [ 0.012s] biomcp-cli entities::variant::get::tests::civic_molecular_profile_name_sends_the_one_letter_change3050 PASS [ 0.014s] biomcp-cli entities::variant::get::tests::coordinate_less_prediction_is_inapplicable_without_alphagenome_credit3051 PASS [ 0.023s] biomcp-cli entities::variant::get::tests::declared_assembly_conflicting_with_the_prefix_refuses_naming_both_builds3052 PASS [ 0.029s] biomcp-cli entities::variant::get::tests::declared_assembly_agreeing_with_the_prefix_resolves_the_one_build_hit3053 PASS [ 0.007s] biomcp-cli entities::variant::get::tests::default_section_stripping_preserves_cached_civic_but_removes_graphql_context3054 PASS [ 0.017s] biomcp-cli entities::variant::get::tests::declared_assembly_hg38_on_a_grch37_only_coordinate_refuses_as_not_found3055 PASS [ 0.008s] biomcp-cli entities::variant::get::tests::gwas_only_request_detection_matches_section_flags3056 PASS [ 2.371s] biomcp-cli entities::gene::gencc::tests::first_publication_crash_recovery_never_requires_an_incomplete_generation3057 PASS [ 0.035s] biomcp-cli entities::variant::get::tests::declared_assembly_hg19_on_the_grch37_only_coordinate_finds_braf3058 PASS [ 0.013s] biomcp-cli entities::variant::get::tests::exact_helper_candidate_selection_rejects_conflicts_and_missing_evidence3059 PASS [ 0.012s] biomcp-cli entities::variant::get::tests::gwas_only_request_returns_variant_when_gwas_is_unavailable3060 PASS [ 0.007s] biomcp-cli entities::variant::get::tests::gwas_only_variant_stub_keeps_requested_rsid3061 PASS [ 1.966s] biomcp-cli entities::gene::gencc::tests::state_only_304_and_failure_crashes_select_one_whole_visible_record3062 PASS [ 0.009s] biomcp-cli entities::variant::get::tests::indirect_clinvar_fallback_preserves_accession_freshness_and_submitter_count3063 PASS [ 0.012s] biomcp-cli entities::variant::get::tests::headline_follows_record_level_germline_classification_and_names_ncbi3064 PASS [ 0.010s] biomcp-cli entities::variant::get::tests::known_build_not_found_names_the_build_and_upstream_status3065 PASS [ 0.009s] biomcp-cli entities::variant::get::tests::parse_sections_all_excludes_key_required_prediction3066 PASS [ 0.008s] biomcp-cli entities::variant::get::tests::parse_sections_supports_new_variant_sections3067 PASS [ 0.009s] biomcp-cli entities::variant::get::tests::population_result_names_the_pinned_dataset_and_keeps_sources_separate3068 PASS [ 0.010s] biomcp-cli entities::variant::get::tests::population_status_json_keeps_explicit_null_exome_and_genome_results3069 PASS [ 0.012s] biomcp-cli entities::variant::get::tests::record_without_germline_classification_keeps_derived_value_labeled3070 PASS [ 0.010s] biomcp-cli entities::variant::get::tests::therapies_from_oncokb_truncation_shows_count3071 PASS [ 0.018s] biomcp-cli entities::variant::get::tests::ticket_589_variant_preflights_are_inapplicable_without_provider_credit3072 PASS [ 0.008s] biomcp-cli entities::variant::get::tests::transcript_hgvs_fallback_queries_clinvar_coding_identity3073 PASS [ 0.019s] biomcp-cli entities::variant::get::tests::transcript_hgvs_get_and_normalize_share_normalized_genomic_identity3074 PASS [ 0.008s] biomcp-cli entities::variant::get::tests::transcript_hgvs_normalization_failure_suggests_variant_normalize3075 PASS [ 0.009s] biomcp-cli entities::variant::get::tests::variant_detail_coordinate_serializes_with_its_answering_build3076 PASS [ 0.009s] biomcp-cli entities::variant::get::tests::variant_json_omits_legacy_name_when_absent3077 PASS [ 0.010s] biomcp-cli entities::variant::get::tests::workflow_signal_detects_clinvar_metadata_before_section_stripping3078 PASS [ 0.029s] biomcp-cli entities::variant::gwas::tests::a_retired_endpoint_degrades_the_rendered_gwas_section_with_no_retry3079 PASS [ 0.009s] biomcp-cli entities::variant::gwas::tests::collect_supporting_pmids_dedupes_case_insensitively3080 PASS [ 4.709s] biomcp-cli entities::disease::get::tests::stale_search_json_carries_the_cache_age_in_the_meta_notes3081 PASS [ 0.010s] biomcp-cli entities::variant::gwas::tests::combined_gene_and_trait_rows_are_an_intersection_before_p_value_filtering3082 PASS [ 0.010s] biomcp-cli entities::variant::gwas::tests::disjoint_gene_and_trait_rows_return_no_union_rows3083 PASS [ 0.009s] biomcp-cli entities::variant::gwas::tests::malformed_exact_p_value_parts_are_bounded_and_fall_back_truthfully3084 PASS [ 0.010s] biomcp-cli entities::variant::gwas::tests::scientific_comparison_is_safe_for_extreme_in_memory_exponents3085 PASS [ 0.009s] biomcp-cli entities::variant::gwas::tests::search_gwas_page_rejects_invalid_probability_before_client_construction3086 PASS [ 0.009s] biomcp-cli entities::variant::gwas::tests::the_retired_error_class_is_the_one_fact_of_retirement3087 PASS [ 0.010s] biomcp-cli entities::variant::gwas::tests::underflowed_exact_p_values_remain_truthful_and_filterable3088 PASS [ 0.011s] biomcp-cli entities::variant::normalization::tests::accepts_first_slice_transcript_coding_hgvs3089 PASS [ 0.009s] biomcp-cli entities::variant::normalization::tests::batch_limit_is_rejected_before_any_request_is_constructed3090 PASS [ 0.009s] biomcp-cli entities::variant::normalization::tests::car_alias_metadata_describes_distinct_returned_aliases3091 PASS [ 0.012s] biomcp-cli entities::variant::normalization::tests::car_grammar_accepts_only_versioned_refseq_coding_or_genomic_hgvs3092 PASS [ 0.011s] biomcp-cli entities::variant::normalization::tests::invalid_grammar_is_rejected_before_any_request_is_constructed3093 PASS [ 0.351s] biomcp-cli entities::variant::get::tests::civic_reports_the_accepted_evidence_the_one_letter_name_finds3094 PASS [ 0.011s] biomcp-cli entities::variant::normalization::tests::rejects_non_transcript_guardrail_inputs3095 PASS [ 0.020s] biomcp-cli entities::variant::resolution::tests::a_gene_name_alone_is_not_reported_as_an_invalid_amino_acid3096 PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::classify_variant_input_detects_search_only_shorthand3097 PASS [ 0.333s] biomcp-cli entities::variant::get::tests::protein_change_get_checks_the_canonical_protein_before_answering3098 PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::classify_variant_input_detects_transcript_coding_hgvs_before_rejecting3099 PASS [ 0.329s] biomcp-cli entities::variant::get::tests::transcript_hgvs_alias_refuses_hits_without_the_exact_coding_alias3100 PASS [ 0.019s] biomcp-cli entities::variant::resolution::tests::classify_variant_input_normalizes_long_form_single_token_protein_change3101 PASS [ 0.010s] biomcp-cli entities::variant::resolution::tests::default_assembly_precedence_is_explicit_then_environment_then_grch383102 PASS [ 0.019s] biomcp-cli entities::variant::resolution::tests::coordinate_normalizer_handles_aliases_and_alternate_spellings3103 PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::clinvar_style_names_refuse_with_the_colon_working_form3104 PASS [ 0.010s] biomcp-cli entities::variant::resolution::tests::every_protein_spelling_refuses_invalid_residue_letters3105 PASS [ 0.012s] biomcp-cli entities::variant::resolution::tests::identity_comparison_accepts_identical_complex_protein_hgvs3106 PASS [ 0.012s] biomcp-cli entities::variant::resolution::tests::identity_comparison_is_indeterminate_for_missing_or_unlinked_annotation_evidence3107 PASS [ 0.013s] biomcp-cli entities::variant::resolution::tests::identity_comparison_preserves_provider_alias_and_checks_every_known_field3108 PASS [ 0.022s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_accepts_gene_protein_range_deletions3109 PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_accepts_prefixed_short_gene_protein_change3110 PASS [ 0.019s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_accepts_long_form_gene_protein_change3111 PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_accepts_genomic_indel_and_repeat_forms3112 PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_egfr_l858r3113 PASS [ 0.011s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_normalizes_uppercase_rsid_prefix3114 PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_kras_g12c3115 PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_examples3116 PASS [ 0.016s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_points_transcript_hgvs_to_normalize_when_direct_parse_is_used3117 PASS [ 0.022s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_points_long_form_single_token_to_search_variant3118 PASS [ 0.022s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_points_search_only_shorthand_to_search_variant3119 PASS [ 0.015s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_refuses_protein_change_with_invalid_residue_letter3120 PASS [ 0.012s] biomcp-cli entities::variant::resolution::tests::protein_normalization_preserves_identity_across_supported_spellings3121 PASS [ 0.011s] biomcp-cli entities::variant::resolution::tests::protein_range_deletions_normalize_across_one_and_three_letter_spellings3122 PASS [ 0.015s] biomcp-cli entities::variant::resolution::tests::structured_article_identity_accepts_refseq_forms_and_preserves_chr_compatibility3123 PASS [ 0.020s] biomcp-cli entities::variant::resolution::tests::parse_variant_id_suggests_search_for_complex_alteration_text3124 PASS [ 0.013s] biomcp-cli entities::variant::resolution::tests::structured_article_identity_requires_refseq_build_and_rejects_duplicate_components3125 PASS [ 0.431s] biomcp-cli entities::variant::get::tests::transcript_hgvs_alias_resolves_intronic_deletion_when_normalizers_refuse3126 PASS [ 0.021s] biomcp-cli entities::variant::resolution::tests::unsupported_variant_error_describes_supported_indel_forms3127 PASS [ 0.020s] biomcp-cli entities::variant::resolution::tests::uppercase_three_letter_residues_remain_valid3128 PASS [ 0.012s] biomcp-cli entities::variant::search::tests::absent_and_null_annotation_sets_are_exact_empty_complete3129 PASS [ 0.023s] biomcp-cli entities::variant::resolution::tests::variant_identity_inputs_refuse_transcript_anchor_half_parses3130 PASS [ 0.018s] biomcp-cli entities::variant::resolution::tests::versioned_refseq_rows_normalize_to_their_chromosome_and_build3131 PASS [ 0.013s] biomcp-cli entities::variant::search::tests::article_provider_aggregation_follows_precedence_and_refseq_fallback_states3132 PASS [ 0.009s] biomcp-cli entities::variant::search::tests::article_provider_aggregation_is_order_independent_and_selects_stable_alias3133 PASS [ 0.010s] biomcp-cli entities::variant::search::tests::article_provider_aggregation_marks_distinct_compatible_and_indeterminate_sets3134 PASS [ 0.009s] biomcp-cli entities::variant::search::tests::candidate_scan_exhaustion_requires_empty_page_or_reaching_provider_total3135 PASS [ 0.012s] biomcp-cli entities::variant::search::tests::every_snpeff_failure_bound_is_empty_false_across_exact_and_safe_for_broad_get3136 PASS [ 0.010s] biomcp-cli entities::variant::search::tests::exact_aggregation_marks_missing_identity_evidence_indeterminate3137 PASS [ 0.012s] biomcp-cli entities::variant::search::tests::exact_aggregation_filters_before_pagination_and_keeps_cap_truthful3138 PASS [ 0.012s] biomcp-cli entities::variant::search::tests::exact_aggregation_retains_identical_complex_protein_hgvs3139 PASS [ 0.007s] biomcp-cli entities::variant::search::tests::filter_statuses_describe_evaluation_and_keep_canonical_order3140 PASS [ 0.013s] biomcp-cli entities::variant::search::tests::exact_projection_keeps_paired_snpeff_roles_separate_from_dbnsfp_match3141 PASS [ 0.013s] biomcp-cli entities::variant::search::tests::malformed_snpeff_isolated_from_exact_broad_and_get_siblings3142 PASS [ 0.009s] biomcp-cli entities::variant::search::tests::quality_score_prioritizes_significance_and_frequency3143 PASS [ 0.010s] biomcp-cli entities::variant::search::tests::resolution_status_follows_compatible_indeterminate_and_exhaustive_truth_table3144 PASS [ 0.012s] biomcp-cli entities::variant::search::tests::normalized_source_identity_key_deduplicates_alias_order_and_spelling3145 PASS [ 0.017s] biomcp-cli entities::variant::search::tests::matched_role_requires_one_complete_transcript_specific_tuple3146 PASS [ 0.009s] biomcp-cli entities::variant::search::tests::search_query_summary_includes_hgvsc_and_rsid3147 PASS [ 0.008s] biomcp-cli entities::variant::search::tests::search_query_summary_includes_residue_alias_marker3148 PASS [ 0.012s] biomcp-cli entities::variant::search::tests::split_snpeff_fields_do_not_inherit_dbnsfp_match_role3149 PASS [ 0.013s] biomcp-cli entities::variant::search::tests::transcript_annotation_page_budget_is_all_or_nothing_at_256_kib3150 PASS [ 0.009s] biomcp-cli entities::variant::structure::tests::cancerhotspots_result_matrix_classifies_contact_and_applicability3151 PASS [ 0.009s] biomcp-cli entities::variant::structure::tests::domain_result_matrix_classifies_contact_and_applicability3152 PASS [ 0.007s] biomcp-cli entities::variant::structure::tests::hgvsp_position_extracts_three_letter_short_and_accession_prefixed_aliases3153 PASS [ 6.430s] biomcp-cli entities::article::variant_search::tests::fulltext_annotations_preserve_typed_identity_requirements3154 PASS [ 0.011s] biomcp-cli entities::variant::structure::tests::mismatched_reference_residue_leaves_no_placement_and_reports_every_alias_position3155 PASS [ 0.012s] biomcp-cli entities::variant::structure::tests::normalize_hgvsp_change_matches_accession_prefixed_aliases3156 PASS [ 0.008s] biomcp-cli entities::variant::structure::tests::reference_residue_check_verifies_mismatches_and_bounds3157 PASS [ 0.009s] biomcp-cli error::tests::api_key_rejected_display_includes_recovery_guidance3158 PASS [ 0.012s] biomcp-cli entities::variant::structure::tests::verified_reference_residue_keeps_the_exact_match_placement3159 PASS [ 0.010s] biomcp-cli error::tests::api_key_required_display_includes_env_var_and_docs3160 PASS [ 0.010s] biomcp-cli error::tests::article_search_deadline_projection_names_the_deadline3161 PASS [ 0.008s] biomcp-cli error::tests::citation_evidence_deadline_names_the_command_and_never_a_fake_source3162 PASS [ 0.008s] biomcp-cli error::tests::citation_evidence_refusals_name_their_providers_and_reasons3163 PASS [ 0.009s] biomcp-cli error::tests::clingen_provider_labels_and_legacy_aliases_remain_distinct3164 PASS [ 0.009s] biomcp-cli error::tests::ddinter_bundle_read_errors_render_with_their_file_detail3165 PASS [ 0.008s] biomcp-cli error::tests::ddinter_decode_failures_name_the_api3166 PASS [ 0.007s] biomcp-cli error::tests::ddinter_download_failures_keep_the_generic_line_and_leak_no_body3167 PASS [ 0.009s] biomcp-cli error::tests::ddinter_html_download_replies_name_the_download_not_the_bundle_read3168 PASS [ 0.010s] biomcp-cli error::tests::external_failure_message_bound_is_utf8_safe_at_and_after_512_bytes3169 PASS [ 0.008s] biomcp-cli error::tests::external_failure_projection_never_exposes_the_request_url3170 PASS [ 0.009s] biomcp-cli error::tests::external_failure_reports_local_io_kind_and_code_without_paths3171 PASS [ 0.009s] biomcp-cli error::tests::human_source_errors_share_safe_projection3172 PASS [ 0.009s] biomcp-cli error::tests::not_found_display_includes_suggestion3173 PASS [ 0.009s] biomcp-cli error::tests::source_policy_inventory_is_bounded_and_actionable3174 PASS [ 0.010s] biomcp-cli error::tests::source_wrapper_delegates_classifiers_for_every_wrappable_family3175 PASS [ 0.008s] biomcp-cli error::tests::source_wrapper_never_projects_raw_non_source_fields3176 PASS [ 0.010s] biomcp-cli error::tests::who_pq_download_failures_keep_the_generic_line_and_leak_no_body3177 PASS [ 0.009s] biomcp-cli error::tests::who_pq_header_mismatches_render_with_file_and_column_detail3178 PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::body_exhaustion_and_stream_errors_have_distinct_statuses3179 PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::explicit_http_policy_rejects_invalid_entries_before_listening3180 PASS [ 0.008s] biomcp-cli mcp::shell::http_server::tests::global_host_policy_matches_names_ports_case_and_ipv63181 PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::index_handler_reports_streamable_http_surface3182 PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::loopback_http_defaults_to_local_host_headers3183 PASS [ 0.010s] biomcp-cli mcp::shell::http_server::tests::non_loopback_http_requires_an_explicit_policy3184 PASS [ 0.009s] biomcp-cli mcp::shell::tests::a_conflicting_scalar_bound_panics_instead_of_first_value_wins3185 PASS [ 0.010s] biomcp-cli mcp::shell::tests::a_one_sided_max_length_clash_panics_instead_of_narrowing3186 PASS [ 0.009s] biomcp-cli mcp::shell::tests::a_one_sided_unique_items_clash_panics_instead_of_narrowing3187 PASS [ 0.009s] biomcp-cli mcp::shell::tests::a_type_clash_between_branches_panics_instead_of_first_value_wins3188 PASS [ 0.009s] biomcp-cli mcp::shell::tests::an_enum_on_one_side_of_a_same_type_merge_panics3189 PASS [ 0.009s] biomcp-cli mcp::shell::tests::flat_pairs_keep_each_arms_constraints_without_panicking3190 PASS [ 0.011s] biomcp-cli mcp::shell::tests::cache_family_rejection_message_mentions_local_path_disclosure3191 PASS [ 0.018s] biomcp-cli mcp::shell::tests::binary_downloads_are_rejected_but_manifests_remain_allowed3192 PASS [ 0.014s] biomcp-cli mcp::shell::tests::generic_mcp_rejection_message_for_args_stays_read_only_for_mutating_commands3193 PASS [ 0.013s] biomcp-cli mcp::shell::tests::mcp_full_text_path_redaction_is_field_driven_for_text_and_json3194 PASS [ 0.010s] biomcp-cli mcp::shell::tests::mcp_human_error_and_resource_boundaries_remove_terminal_controls3195 PASS [ 0.010s] biomcp-cli mcp::shell::tests::raw_mcp_local_input_inventory_matches_the_cli_surface3196 PASS [ 0.025s] biomcp-cli mcp::shell::tests::raw_local_input_rejection_covers_every_spelling_and_variant_route3197 PASS [ 9.984s] biomcp-cli cli::stale_json_note_tests::no_cache_skips_the_cache_for_the_spawned_clingen_fetch3198 PASS [ 0.016s] biomcp-cli mcp::shell::tests::raw_mcp_rejects_unparseable_commands_before_execution3199 PASS [ 7.982s] biomcp-cli entities::article::search::tests::deadline::failed_primaries_still_return_answered_rows3200 PASS [ 0.012s] biomcp-cli mcp::shell::tests::typed_branches_stay_entity_specific3201 PASS [ 0.014s] biomcp-cli mcp::shell::tests::typed_gene_cspec_rejects_version_and_capture_together_before_network_access3202 PASS [ 0.017s] biomcp-cli mcp::shell::tests::ticket_1120::raw_biomcp_reports_reversed_search_before_the_generic_fallback3203 PASS [ 0.665s] biomcp-cli entities::variant::get::tests::population_request_requires_a_grch38_genomic_coordinate3204 PASS [ 0.010s] biomcp-cli mcp::shell::tests::typed_gene_cspec_schema_exposes_bounded_capture_paging_without_raw_bytes3205 PASS [ 0.012s] biomcp-cli mcp::shell::tests::typed_search_maps_each_published_entity_and_rejects_schema_mismatches3206 PASS [ 0.012s] biomcp-cli mcp::shell::tests::typed_schemas_publish_flat_roots_and_reject_bad_input3207 PASS [ 0.011s] biomcp-cli mcp::shell::tests::typed_search_rejects_wrong_type_pagination_and_lists_valid_entities3208 PASS [ 0.009s] biomcp-cli mcp::shell::tests::typed_variant_articles_preserves_article_resolution_fields_and_nullability3209 PASS [ 0.014s] biomcp-cli mcp::shell::tests::typed_variant_articles_executes_in_memory_without_stdin_or_paths3210 PASS [ 0.009s] biomcp-cli mcp::shell::tests::typed_variant_articles_schema_is_bounded_and_has_structured_identity_fields3211 PASS [ 0.009s] biomcp-cli mcp::shell::tests::typed_variant_car_schema_is_bounded3212 PASS [ 0.010s] biomcp-cli mcp::shell::trial_phase::tests::schema_advertises_each_documented_phase_spelling3213 PASS [ 0.047s] biomcp-cli mcp::shell::tests::ticket_1120::raw_biomcp_tool_preserves_an_omitted_ctgov_total_as_null3214 PASS [ 0.012s] biomcp-cli mcp::shell::typed_get_tests::adverse_event_schema_and_mapper_deduplicate_sections_only_for_that_entity3215 PASS [ 0.012s] biomcp-cli mcp::shell::typed_get_tests::cli_catalog_gettable_inventory_matches_clap_get_subcommands3216 PASS [ 10.400s] biomcp-cli cli::article::tests::entities_disease_links::article_entities_skin_neoplasms_row_keeps_its_search_command3217 PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::mcp_json_removes_every_path_shape_and_reserializes_on_presence3218 PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::mcp_json_without_local_paths_preserves_cli_bytes3219 PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::shared_mcp_error_conversion_hides_trial_design_details3220 PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::typed_article_prose_keyword_json_adds_only_the_output_flag3221 PASS [ 0.011s] biomcp-cli mcp::shell::typed_get_tests::typed_article_get_maps_the_pdf_option_to_the_cli_flag3222 PASS [ 0.120s] biomcp-cli mcp::shell::tests::mcp_allowlist_blocks_mutating_commands3223 PASS [ 0.010s] biomcp-cli mcp::shell::typed_get_tests::typed_variant_erepo_schema_prevents_selector_mixing_before_calls3224 PASS [ 0.013s] biomcp-cli mcp::shell::typed_get_tests::typed_get_schema_and_mapper_match_independent_cli_catalog_oracle3225 PASS [ 0.009s] biomcp-cli next_command::tests::renders_each_argument_as_its_own_shell_word3226 PASS [ 0.007s] biomcp-cli render::chart::tests::chart_text_removes_untrusted_controls_without_touching_unicode3227 PASS [ 0.011s] biomcp-cli render::chart::tests::bar_family_renderers_produce_svg3228 PASS [ 0.009s] biomcp-cli render::chart::tests::co_occurrence_heatmap_rejects_palette_override3229 PASS [ 0.008s] biomcp-cli render::chart::tests::co_occurrence_heatmap_renders_inline_svg3230 PASS [ 0.011s] biomcp-cli render::chart::tests::co_occurrence_heatmap_respects_custom_dimensions3231 PASS [ 0.010s] biomcp-cli render::chart::tests::compare_chart_validation_lists_valid_types3232 PASS [ 0.009s] biomcp-cli render::chart::tests::display_mutation_class_maps_known_and_passes_through_unknown3233 PASS [ 0.012s] biomcp-cli render::chart::tests::expression_scatter_renders_inline_svg_and_rejects_empty_points3234 PASS [ 0.011s] biomcp-cli render::chart::tests::inline_svg_output_respects_custom_dimensions3235 PASS [ 0.012s] biomcp-cli render::chart::tests::heatmap_and_stacked_bar_svg_outputs_write_files3236 PASS [ 0.011s] biomcp-cli render::chart::tests::inline_svg_target_returns_svg_markup3237 PASS [ 0.010s] biomcp-cli render::chart::tests::mutation_and_cna_svg_output_use_human_readable_labels3238 PASS [ 0.010s] biomcp-cli render::chart::tests::mutation_compare_stacked_bar_renders_inline_svg3239 PASS [ 0.011s] biomcp-cli render::chart::tests::mutation_compare_stacked_bar_uses_integer_sample_ticks3240 PASS [ 0.009s] biomcp-cli render::chart::tests::mutation_compare_validation_lists_stacked_bar3241 PASS [ 0.010s] biomcp-cli render::chart::tests::mutation_waterfall_renders_inline_svg3242 PASS [ 0.088s] biomcp-cli mcp::shell::typed_get_tests::typed_and_raw_nci_trial_get_preserve_all_recorded_assignments3243 PASS [ 0.010s] biomcp-cli render::chart::tests::output_target_validation_rejects_incompatible_sizing_flags3244 PASS [ 0.009s] biomcp-cli render::chart::tests::query_chart_validation_lists_valid_types3245 PASS [ 0.010s] biomcp-cli render::chart::tests::render_survival_chart_returns_error_when_all_groups_have_empty_km_points3246 PASS [ 0.008s] biomcp-cli render::chart::tests::standalone_chart_validation_rejects_invalid_survival_chart3247 PASS [ 0.019s] biomcp-cli render::chart::tests::pie_histogram_density_and_distribution_renderers_produce_terminal_output3248 PASS [ 0.011s] biomcp-cli render::chart::tests::rendered_terminal_and_svg_charts_sanitize_dynamic_text_before_the_backend3249 PASS [ 0.010s] biomcp-cli render::chart::tests::structural_variant_chart_validation_reports_unsupported_surface3250 PASS [ 0.009s] biomcp-cli render::chart::tests::survival_svg_output_supports_kaplan_meier_curves3251 PASS [ 0.008s] biomcp-cli render::human::tests::applies_inline_and_document_control_policies3252 PASS [ 0.008s] biomcp-cli render::chart::tests::terminal_chart_respects_custom_cols_and_rows3253 PASS [ 0.007s] biomcp-cli render::human::tests::provider_sanitizer_collapses_maximal_ignorable_runs3254 PASS [ 0.008s] biomcp-cli render::human::tests::provider_sanitizer_control_fixtures_are_byte_exact3255 PASS [ 0.009s] biomcp-cli render::human::tests::is_idempotent_without_collapsing_authored_spaces3256 PASS [ 0.009s] biomcp-cli render::human::tests::provider_sanitizer_counts_a_replacement_as_retained_base3257 PASS [ 0.008s] biomcp-cli render::human::tests::provider_sanitizer_encodes_every_non_literal_ascii_graphic3258 PASS [ 0.009s] biomcp-cli render::human::tests::provider_sanitizer_inserts_dotted_circle_only_before_orphan_marks3259 PASS [ 0.009s] biomcp-cli render::human::tests::provider_sanitizer_matches_unicode_16_boundaries3260 PASS [ 0.010s] biomcp-cli render::human::tests::removes_bidi_controls_and_preserves_biomedical_unicode3261 PASS [ 0.008s] biomcp-cli render::json::json_error_tests::who_pq_sync_failure_json_recovery_carries_no_local_data_path3262 PASS [ 0.010s] biomcp-cli render::human::tests::sanitizes_terminal_sequence_families3263 PASS [ 0.010s] biomcp-cli render::json::tests::disease_unavailable_outcome_and_provenance_agree_without_source_credit3264 PASS [ 0.009s] biomcp-cli render::json::tests::input_limit_error_exposes_only_its_stable_byte_budget3265 PASS [ 0.332s] biomcp-cli entities::variant::structure::tests::mutyh_g368d_on_q9uif7_never_reports_position_368_as_a_placement3266 PASS [ 0.009s] biomcp-cli render::json::tests::json_render_drug_entity_omits_family_fields_when_absent3267 PASS [ 0.011s] biomcp-cli render::json::tests::json_render_drug_entity3268 PASS [ 0.010s] biomcp-cli render::json::tests::json_render_gene_entity3269 PASS [ 0.010s] biomcp-cli render::json::tests::json_render_gene_entity_with_sparse_disgenet_omits_optional_fields3270 PASS [ 0.011s] biomcp-cli render::json::tests::source_errors_include_normalized_source_and_safe_recovery3271 PASS [ 0.009s] biomcp-cli render::json::tests::structured_error_messages_omit_external_and_local_details3272 PASS [ 0.009s] biomcp-cli render::json::tests::to_alias_suggestion_json_includes_alias_resolution_and_next_commands3273 PASS [ 0.010s] biomcp-cli render::json::tests::to_alias_suggestion_json_includes_ambiguous_resolution3274 PASS [ 0.011s] biomcp-cli render::json::tests::to_discover_json_adds_discover_meta_aliases3275 PASS [ 0.011s] biomcp-cli render::json::tests::to_discover_json_keeps_relational_redirect_commands_only_under_meta3276 PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_adds_meta_and_flattens_entity3277 PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_filters_blank_evidence_rows3278 PASS [ 0.165s] biomcp-cli mcp::shell::typed_get_tests::typed_and_raw_trial_get_return_exact_age_objects3279 PASS [ 0.011s] biomcp-cli render::json::tests::to_entity_json_filters_blank_section_source_rows3280 PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_value_adds_meta_and_flattens_entity3281 PASS [ 0.008s] biomcp-cli render::json::tests::to_entity_json_with_suggestions_keeps_empty_suggestions_array3282 PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_with_suggestions_adds_suggestions_meta3283 PASS [ 0.010s] biomcp-cli render::json::tests::to_entity_json_with_workflow_adds_descriptor_without_losing_existing_meta3284 PASS [ 0.010s] biomcp-cli render::json::tests::to_pretty_lexically_escapes_terminal_controls_without_changing_values3285 PASS [ 0.010s] biomcp-cli render::json::tests::to_pretty_serializes_with_indentation3286 PASS [ 0.007s] biomcp-cli render::json::tests::typed_body_limit_preserves_legacy_api_error_code_and_message3287 PASS [ 0.010s] biomcp-cli render::json::tests::to_variant_guidance_json_includes_alias_resolution_and_next_commands3288 PASS [ 0.009s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_count_markdown_renders_bucket_rows3289 PASS [ 0.025s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_card_searches_unverified_report_drug_name3290 PASS [ 0.025s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_search_markdown_renders_contextual_empty_state3291 PASS [ 0.027s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_markdown_includes_openfda_sections3292 PASS [ 0.027s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_search_markdown_can_label_aggregate_summary3293 PASS [ 0.022s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_search_markdown_renders_trial_fallback_section3294 PASS [ 0.027s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_search_markdown_renders_summary_and_filters3295 PASS [ 0.009s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_summary_context_names_the_exact_divisor_and_is_backward_compatible3296 PASS [ 0.009s] biomcp-cli render::markdown::adverse_event::tests::vaers_only_markdown_renders_snake_case_status_labels3297 PASS [ 0.023s] biomcp-cli render::markdown::adverse_event::tests::adverse_event_subset_markdown_keeps_identity_and_only_selected_bodies3298 PASS [ 0.021s] biomcp-cli render::markdown::adverse_event::tests::combined_adverse_event_search_markdown_skips_query_not_vaccine_status3299 PASS [ 0.025s] biomcp-cli render::markdown::adverse_event::tests::combined_adverse_event_search_markdown_appends_vaers_summary_for_unavailable_status3300 PASS [ 0.023s] biomcp-cli render::markdown::adverse_event::tests::device_event_renderers_include_openfda_content3301 PASS [ 0.011s] biomcp-cli render::markdown::article::tests::article_batch_markdown_renders_compact_rows3302 PASS [ 0.250s] biomcp-cli mcp::shell::typed_get_tests::cli_typed_and_raw_trial_get_return_exact_structured_references3303 PASS [ 0.025s] biomcp-cli render::markdown::adverse_event::tests::recall_search_markdown_renders_result_table3304 PASS [ 0.009s] biomcp-cli render::markdown::article::tests::article_graph_markdown_renders_expected_table_headers3305 PASS [ 0.007s] biomcp-cli render::markdown::article::tests::article_ranking_why_rescue_composes_with_lexical_reason3306 PASS [ 0.009s] biomcp-cli render::markdown::article::tests::article_ranking_why_hybrid_includes_score_and_lexical_context3307 PASS [ 0.010s] biomcp-cli render::markdown::article::tests::article_ranking_why_semantic_includes_score_and_lexical_context3308 PASS [ 0.023s] biomcp-cli render::markdown::article::tests::article_entities_markdown_uses_safe_gene_search_commands3309 PASS [ 0.009s] biomcp-cli render::markdown::article::tests::article_ranking_why_tier1_mixed_shows_title_plus_abstract3310 PASS [ 0.009s] biomcp-cli render::markdown::article::tests::article_recommendations_markdown_sanitizes_provider_fields3311 PASS [ 0.024s] biomcp-cli render::markdown::article::tests::article_markdown_renders_resolved_fulltext_source_label3312 PASS [ 0.034s] biomcp-cli render::markdown::article::tests::article_entities_markdown_prints_get_commands_for_accepted_identifiers3313 PASS [ 0.023s] biomcp-cli render::markdown::article::tests::article_markdown_renders_semantic_scholar_and_indexing_sections3314 PASS [ 0.010s] biomcp-cli render::markdown::article::tests::article_related_tables_render_typed_identifiers3315 PASS [ 0.020s] biomcp-cli render::markdown::article::tests::article_search_markdown_renders_each_typed_identifier3316 PASS [ 0.026s] biomcp-cli render::markdown::article::tests::article_search_markdown_prepends_debug_plan_block3317 PASS [ 0.022s] biomcp-cli render::markdown::article::tests::article_search_markdown_renders_date_sort_warning3318 PASS [ 0.028s] biomcp-cli render::markdown::article::tests::article_search_markdown_omits_index_footer_when_no_rows_have_it3319 PASS [ 0.026s] biomcp-cli render::markdown::article::tests::article_search_markdown_preserves_rank_order_and_shows_rationale3320 PASS [ 0.025s] biomcp-cli render::markdown::article::tests::article_search_markdown_renders_non_semantic_source_status3321 PASS [ 0.035s] biomcp-cli render::markdown::article::tests::article_search_markdown_includes_cross_entity_discover_hint_for_short_keyword_phrase3322 PASS [ 0.009s] biomcp-cli render::markdown::article::tests::format_newest_indexed_footer_clamps_future_dates_to_zero_days3323 PASS [ 0.010s] biomcp-cli render::markdown::article::tests::format_newest_indexed_footer_is_deterministic3324 PASS [ 0.008s] biomcp-cli render::markdown::author::full_page_tests::hostile_provider_values_cannot_inject_markdown_structure3325 PASS [ 0.009s] biomcp-cli render::markdown::author::full_page_tests::rich_markdown_pins_the_exact_template_for_a_complete_paper3326 PASS [ 0.010s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_detail_markdown_is_the_frozen_template3327 PASS [ 0.011s] biomcp-cli render::markdown::author::full_page_tests::rich_markdown_sentinels_and_two_blocks_with_continuation3328 PASS [ 0.008s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_detail_markdown_sanitizes_the_provider_display_name3329 PASS [ 0.010s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_papers_markdown_empty_page_has_no_work_block_or_see_also3330 PASS [ 0.009s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_papers_markdown_is_the_frozen_nonterminal_template3331 PASS [ 0.026s] biomcp-cli render::markdown::article::tests::ticket_377_article_renderer_envelope_contracts_markdown_status3332 PASS [ 0.010s] biomcp-cli render::markdown::author::tests::affiliation_preview_is_bounded_without_splitting_utf83333 PASS [ 0.010s] biomcp-cli render::markdown::author::orcid_render_tests::orcid_papers_markdown_sanitizes_provider_text3334 PASS [ 0.010s] biomcp-cli render::markdown::author::tests::detail_markdown_and_json_present_the_same_follow_up_commands3335 PASS [ 0.036s] biomcp-cli render::markdown::article::tests::article_search_markdown_renders_related_block_before_pagination3336 PASS [ 0.022s] biomcp-cli render::markdown::cell_line::tests::a_cell_line_chembl_does_not_list_says_so_and_prints_no_row3337 PASS [ 0.021s] biomcp-cli render::markdown::cell_line::tests::search_markdown_shows_the_match_columns_and_the_attribution3338 PASS [ 0.024s] biomcp-cli render::markdown::cell_line::tests::a_full_window_note_is_printed_once3339 PASS [ 0.023s] biomcp-cli render::markdown::cell_line::tests::the_card_names_the_accession_the_rrid_and_the_species3340 PASS [ 0.533s] biomcp-cli entities::variant::structure::tests::braf_v600e_on_p15056_keeps_the_verified_position_6003341 PASS [ 0.025s] biomcp-cli render::markdown::cell_line::tests::an_unavailable_chembl_section_renders_no_row3342 PASS [ 0.026s] biomcp-cli render::markdown::cell_line::tests::the_card_ends_with_the_attribution_line3343 PASS [ 0.025s] biomcp-cli render::markdown::cell_line::tests::the_card_offers_the_two_section_commands3344 PASS [ 0.023s] biomcp-cli render::markdown::cell_line::tests::the_chembl_section_prints_one_row_and_the_release_attribution3345 PASS [ 0.025s] biomcp-cli render::markdown::cell_line::tests::the_xrefs_section_prints_every_key_including_the_empty_ones3346 PASS [ 0.021s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_renders_regulatory_section_rows3347 PASS [ 0.026s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_keeps_regulatory_hidden_for_all_expansion3348 PASS [ 0.023s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_renders_regulatory_empty_state_when_requested3349 PASS [ 0.024s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_renders_requested_sections_and_truthful_empty_states3350 PASS [ 0.026s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_renders_who_summary_fields_and_supported_sections_only3351 PASS [ 0.007s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_rows_caps_genes_and_conditions_with_overflow_marker3352 PASS [ 0.009s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_rows_escapes_markdown_table_cells3353 PASS [ 0.026s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_markdown_reports_unavailable_regulatory_state_in_band3354 PASS [ 0.021s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_markdown_adds_escaped_disease_match_column_only_when_present3355 PASS [ 0.020s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_markdown_shows_source_column_and_detail_hint3356 PASS [ 0.023s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_markdown_does_not_render_recovery_for_high_offset_empty_page3357 PASS [ 0.024s] biomcp-cli render::markdown::diagnostic::tests::diagnostic_search_markdown_renders_true_zero_result_recovery3358 PASS [ 0.021s] biomcp-cli render::markdown::discovery::tests::search_all_markdown_counts_only_keeps_links_without_row_headers3359 PASS [ 0.024s] biomcp-cli render::markdown::discovery::tests::render_discover_renders_grouped_concepts_and_plain_language3360 PASS [ 0.023s] biomcp-cli render::markdown::discovery::tests::ticket_377_discover_renderer_envelope_contracts3361 PASS [ 0.024s] biomcp-cli render::markdown::discovery::tests::search_all_markdown_renders_section_note3362 PASS [ 0.025s] biomcp-cli render::markdown::disease::tests::disease_markdown_all_keeps_opt_in_sections_hidden3363 PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_clinical_features_empty_state_is_truthful3364 PASS [ 0.022s] biomcp-cli render::markdown::disease::tests::disease_markdown_disgenet_renders_sparse_optional_fields3365 PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_funding_renders_truthful_notes_without_table3366 PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_markdown_heading_and_provenance_credit_the_disgenet_seed3367 PASS [ 0.025s] biomcp-cli render::markdown::disease::tests::disease_markdown_heading_and_provenance_credit_the_fallback_source3368 PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_phenotypes_section_renders_definition_hint_when_key_features_missing3369 PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_markdown_links_source_cells_and_footer_evidence_urls3370 PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_phenotypes_section_without_definition_only_shows_completeness_note3371 PASS [ 0.025s] biomcp-cli render::markdown::disease::tests::disease_markdown_phenotypes_section_renders_key_features3372 PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_markdown_preserves_full_definition_text3373 PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_clinical_features_section3374 PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_opentargets_scores_in_summary_and_genes_table3375 PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_diagnostics_note_then_shell_safe_search_command3376 PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_ot_only_gene_association_table3377 PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_survival_summary_and_note3378 PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_markdown_reports_unavailable_source_state_in_band3379 PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::disease_markdown_renders_top_variant_summary3380 PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_markdown_section_only_shows_disgenet_section3381 PASS [ 0.007s] biomcp-cli render::markdown::drug::tests::drug_interaction_report_markdown_renders_not_in_coverage_signal3382 PASS [ 0.021s] biomcp-cli render::markdown::disease::tests::disease_search_empty_state_includes_discover_hint3383 PASS [ 0.011s] biomcp-cli render::markdown::drug::tests::all_region_search_places_exact_continuation_under_the_matching_region3384 PASS [ 0.022s] biomcp-cli render::markdown::disease::tests::disease_search_empty_state_uses_raw_query_in_discover_hint3385 PASS [ 0.023s] biomcp-cli render::markdown::disease::tests::disease_search_fallback_renders_provenance_columns3386 PASS [ 0.024s] biomcp-cli render::markdown::disease::tests::ticket_377_disease_renderer_envelope_contracts3387 PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::drug_markdown_header_drops_empty_fields_instead_of_printing_fillers3388 PASS [ 0.024s] biomcp-cli render::markdown::drug::tests::drug_markdown_omits_target_family_for_mixed_targets3389 PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::drug_markdown_shows_target_family_and_members_when_present3390 PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::drug_markdown_renders_variant_targets_as_additive_line3391 PASS [ 0.026s] biomcp-cli render::markdown::drug::tests::drug_markdown_uses_label_interaction_text_before_public_unavailable_fallback3392 PASS [ 0.021s] biomcp-cli render::markdown::drug::tests::drug_markdown_uses_truthful_public_unavailable_interactions_message3393 PASS [ 0.008s] biomcp-cli render::markdown::drug::tests::drug_search_all_region_degraded_who_section_states_the_reason_instead_of_a_bare_negative3394 PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_eu_all_suppresses_us_header_facts3395 PASS [ 0.026s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_all_keeps_us_and_eu_blocks_separate3396 PASS [ 0.007s] biomcp-cli render::markdown::drug::tests::drug_search_all_region_empty_state_calls_out_regulatory_absence3397 PASS [ 0.008s] biomcp-cli render::markdown::drug::tests::drug_search_all_region_empty_state_includes_discover_only_when_both_regions_are_empty3398 PASS [ 0.008s] biomcp-cli render::markdown::drug::tests::drug_search_all_region_markdown_includes_who_block3399 PASS [ 0.009s] biomcp-cli render::markdown::drug::tests::drug_search_empty_state_frames_zero_indication_miss_as_regulatory_signal3400 PASS [ 0.009s] biomcp-cli render::markdown::drug::tests::drug_search_eu_empty_state_includes_discover_hint3401 PASS [ 0.008s] biomcp-cli render::markdown::drug::tests::drug_search_who_vaccine_markdown_uses_vaccine_table_and_no_get_footer3402 PASS [ 0.026s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_eu_safety_shows_truthful_empty_subsections3403 PASS [ 0.021s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_who_renders_regulatory_block3404 PASS [ 0.009s] biomcp-cli render::markdown::drug::tests::eu_search_markdown_escapes_every_dynamic_match_component3405 PASS [ 0.027s] biomcp-cli render::markdown::drug::tests::drug_markdown_with_region_who_names_the_gap_when_the_bundle_cannot_be_read3406 PASS [ 0.021s] biomcp-cli render::markdown::drug::tests::drug_search_standard_empty_state_includes_discover_hint3407 PASS [ 0.022s] biomcp-cli render::markdown::drug::tests::label_sections::label_pointer_prints_when_the_view_cut_a_section3408 PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::label_sections::label_pointer_quotes_multi_word_drug_names3409 PASS [ 0.027s] biomcp-cli render::markdown::drug::tests::label_sections::a_card_without_label_content_prints_no_fda_label_heading3410 PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::label_sections::label_pointer_stays_silent_when_nothing_was_cut3411 PASS [ 0.026s] biomcp-cli render::markdown::drug::tests::label_sections::missing_label_reason_prints_from_the_label_section_outcome3412 PASS [ 0.023s] biomcp-cli render::markdown::drug::tests::label_warnings::combined_label_and_safety_render_one_boxed_warning_heading3413 PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::label_warnings::drug_markdown_renders_label_boxed_warning_ahead_of_other_label_sections3414 PASS [ 0.009s] biomcp-cli render::markdown::drug_regulatory::fda_orphan_tests::empty_and_unavailable_have_truthful_recovery3415 PASS [ 0.009s] biomcp-cli render::markdown::drug_regulatory::fda_orphan_tests::hostile_provider_text_cannot_create_markdown_structure3416 PASS [ 0.009s] biomcp-cli render::markdown::evidence::tests::disease_evidence_urls_include_record_links3417 PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::label_warnings::drug_markdown_us_safety_block_renders_boxed_warning_first3418 PASS [ 0.008s] biomcp-cli render::markdown::evidence::tests::drug_evidence_urls_include_chembl3419 PASS [ 0.007s] biomcp-cli render::markdown::evidence::tests::drug_evidence_urls_include_faers_and_dailymed_when_sections_exist3420 PASS [ 0.008s] biomcp-cli render::markdown::evidence::tests::gene_evidence_urls_include_ensembl_and_omim3421 PASS [ 0.008s] biomcp-cli render::markdown::evidence::tests::variant_evidence_urls_include_dbsnp_and_cosmic3422 PASS [ 0.025s] biomcp-cli render::markdown::drug::tests::label_warnings::raw_label_and_safety_together_print_over_cap_warnings_once3423 PASS [ 0.022s] biomcp-cli render::markdown::drug::tests::label_warnings::raw_label_and_safety_together_print_the_ordinary_warnings_once3424 PASS [ 0.021s] biomcp-cli render::markdown::drug::tests::label_warnings::truncated_safety_warning_links_exact_dailymed_set_when_label_is_absent3425 PASS [ 0.015s] biomcp-cli render::markdown::evidence::tests::variant_evidence_urls_fall_back_to_hgvs_slug_for_population_data3426 PASS [ 0.015s] biomcp-cli render::markdown::evidence::tests::variant_evidence_urls_include_gnomad_for_population_data3427 PASS [ 0.021s] biomcp-cli render::markdown::gene::tests::gencc_markdown_escapes_provider_cells_and_angle_delimits_links3428 PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_cell_lines_markdown_prints_the_rows_and_the_attribution_line3429 PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_markdown_all_keeps_opt_in_sections_hidden3430 PASS [ 0.027s] biomcp-cli render::markdown::gene::tests::clingen_markdown_keeps_partial_evidence_and_distinguishes_missing_dosage3431 PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_markdown_disgenet_renders_sparse_optional_fields3432 PASS [ 0.020s] biomcp-cli render::markdown::gene::tests::gene_markdown_funding_renders_linked_rows_and_currency3433 PASS [ 0.027s] biomcp-cli render::markdown::gene::tests::gene_cell_lines_markdown_shows_a_dash_for_an_unresolved_name_and_prints_notes3434 PASS [ 0.024s] biomcp-cli render::markdown::gene::tests::gene_markdown_includes_evidence_links3435 PASS [ 0.021s] biomcp-cli render::markdown::gene::tests::gene_markdown_omits_protein_alternative_names_when_absent3436 PASS [ 0.024s] biomcp-cli render::markdown::gene::tests::gene_markdown_pathways_show_source_labels3437 PASS [ 0.025s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_combined_dgidb_and_opentargets_druggability3438 PASS [ 0.026s] biomcp-cli render::markdown::gene::tests::gene_markdown_preserves_full_protein_function_text3439 PASS [ 0.025s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_dgidb_interaction_table_alongside_opentargets_data3440 PASS [ 0.024s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_hpa_section_details3441 PASS [ 0.026s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_protein_alternative_names3442 PASS [ 0.022s] biomcp-cli render::markdown::gene::tests::gene_markdown_renders_protein_isoforms_with_count_and_displayed_length3443 PASS [ 0.024s] biomcp-cli render::markdown::gene::tests::gene_markdown_section_only_shows_constraint_section3444 PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_markdown_section_only_shows_new_gene_enrichment_sections3445 PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::gene_markdown_without_isoforms_keeps_protein_lines_contiguous3446 PASS [ 0.023s] biomcp-cli render::markdown::gene::tests::ticket_406_coordinate_outputs_carry_genome_build_context3447 PASS [ 0.027s] biomcp-cli render::markdown::gene::tests::gene_markdown_section_only_shows_disgenet_section3448 PASS [ 0.024s] biomcp-cli render::markdown::pathway::tests::pathway_markdown_hides_genes_section_when_genes_are_empty3449 PASS [ 0.023s] biomcp-cli render::markdown::pathway::tests::pathway_markdown_uses_source_and_source_specific_evidence_url3450 PASS [ 0.025s] biomcp-cli render::markdown::pathway::tests::pathway_search_markdown_shows_source_column3451 PASS [ 0.025s] biomcp-cli render::markdown::pgx::tests::pgx_markdown_includes_evidence_links3452 PASS [ 0.017s] biomcp-cli render::markdown::related::tests::article_search_related_results_do_not_derive_entity_get_from_keyword_tokens3453 PASS [ 0.015s] biomcp-cli render::markdown::related::tests::article_search_related_results_do_not_emit_braf_v600e_gene_get_without_exact_command3454 PASS [ 0.020s] biomcp-cli render::markdown::related::tests::article_search_next_commands_adds_list_for_exact_commands_without_result_rows3455 PASS [ 0.021s] biomcp-cli render::markdown::pgx::tests::recommendations_render_genotypes_and_page_drug_coverage3456 PASS [ 0.024s] biomcp-cli render::markdown::pgx::tests::recommendations_only_hides_interactions_and_advertises_its_offset3457 PASS [ 0.025s] biomcp-cli render::markdown::protein::tests::protein_markdown_renders_complexes_summary_and_detail_bullets3458 PASS [ 0.018s] biomcp-cli render::markdown::related::tests::article_search_related_results_include_exact_commands_without_result_rows3459 PASS [ 0.019s] biomcp-cli render::markdown::related::tests::article_search_related_results_include_primary_article_and_exact_commands3460 PASS [ 0.018s] biomcp-cli render::markdown::related::tests::article_search_related_results_omit_unsupported_provider_identifier3461 PASS [ 0.019s] biomcp-cli render::markdown::related::tests::article_search_related_results_include_year_refinement_hint_when_unbounded3462 PASS [ 0.018s] biomcp-cli render::markdown::related::tests::article_search_related_results_preserve_source_filter_in_year_refinement3463 PASS [ 0.019s] biomcp-cli render::markdown::related::tests::article_search_related_results_reject_non_exact_variant_keywords3464 PASS [ 0.015s] biomcp-cli render::markdown::related::tests::article_search_related_results_skip_year_refinement_without_visible_years3465 PASS [ 0.021s] biomcp-cli render::markdown::related::tests::article_search_related_results_skip_non_entity_keyword_hints3466 PASS [ 0.020s] biomcp-cli render::markdown::related::tests::article_search_related_results_skip_year_refinement_when_already_bounded3467 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::diagnostic_zero_result_recovery_commands_point_to_list_help3468 PASS [ 0.016s] biomcp-cli render::markdown::related::tests::article_search_related_results_use_supported_non_pmid_identifier3469 PASS [ 0.019s] biomcp-cli render::markdown::related::tests::article_search_related_results_suggest_exact_variant_route3470 PASS [ 0.017s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_do_not_emit_lung_cancer_immunotherapy_disease_get3471 PASS [ 0.018s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_include_discover_for_psoralen_vaccine_phrase3472 PASS [ 0.021s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_include_discover_but_not_heuristic_disease_get3473 PASS [ 0.019s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_include_discover_for_short_vaccine_phrase3474 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_article_uses_article_entities_helper_command3475 PASS [ 0.018s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_include_exact_disease_command_when_precomputed3476 PASS [ 0.007s] biomcp-cli render::markdown::related::tests::related_device_event_uses_supported_search_subcommands3477 PASS [ 0.012s] biomcp-cli render::markdown::related::tests::provider_trial_title_shell_syntax_stays_inert_in_results_search3478 PASS [ 0.018s] biomcp-cli render::markdown::related::tests::markdown_article_search_related_results_skip_cross_entity_hints_for_long_phrase3479 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_diagnostic_only_points_back_to_list_help3480 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_disease_falls_back_to_unscored_top_gene_context3481 PASS [ 0.008s] biomcp-cli render::markdown::related::tests::related_disease_non_oncology_skips_study_hints3482 PASS [ 0.008s] biomcp-cli render::markdown::related::tests::related_disease_oncology_without_local_match_falls_back_to_download_list3483 PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_disease_malformed_study_lookup_falls_back_to_download_list3484 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_disease_oncology_with_local_match_prefers_top_mutated3485 PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_disease_oncology_matches_noncontiguous_carcinoma_study_labels3486 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_disease_promotes_top_gene_context_before_generic_pivots3487 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_disease_quotes_single_word_indication_search3488 PASS [ 0.007s] biomcp-cli render::markdown::related::tests::related_disease_uses_synonym_when_name_is_raw_id3489 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_disease_suggests_review_when_phenotypes_are_sparse3490 PASS [ 0.008s] biomcp-cli render::markdown::related::tests::related_gene_prioritizes_localization_deepening_when_supported3491 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_drug_includes_pgx_search3492 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_gene_promotes_clingen_trial_search_before_generic_pivots3493 PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_drug_suggests_review_when_label_and_indications_are_sparse3494 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_pgx_uses_search_flags3495 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_protein_excludes_requested_sections3496 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_protein_includes_complexes_follow_up3497 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_trial_completed_promotes_results_search_before_condition_pivots3498 PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_trial_keeps_recruiting_order_without_results_search3499 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_trial_results_search_without_intervention_keeps_seed_quoted3500 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_trial_searches_unverified_jag201_intervention3501 PASS [ 0.011s] biomcp-cli render::markdown::related::tests::related_trial_promotes_results_search_for_completed_or_terminated_studies3502 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_trial_uses_the_first_alias_from_the_first_intervention_that_has_one3503 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_trial_without_aliases_uses_the_first_intervention_name3504 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::related_variant_vus_keyword_only_follow_up_keeps_description3505 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_variant_pathogenic_keeps_drug_target_without_vus_literature_pivot3506 PASS [ 0.008s] biomcp-cli render::markdown::related::tests::search_next_commands_diagnostic_prefers_top_accession_then_list3507 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_device_events_use_report_follow_up3508 PASS [ 0.010s] biomcp-cli render::markdown::related::tests::related_variant_vus_promotes_literature_before_drug_target3509 PASS [ 0.008s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_eu_prefers_active_substance_match3510 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_diagnostic_quotes_who_product_code3511 PASS [ 0.007s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_regions_canonicalize_across_buckets3512 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_prefers_requested_us_name3513 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_regions_fall_back_without_requested_name3514 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_who_use_inn3515 PASS [ 0.008s] biomcp-cli render::markdown::related::tests::search_next_commands_drug_who_vaccine_only_stays_list_only3516 PASS [ 0.009s] biomcp-cli render::markdown::related::tests::search_next_commands_recalls_are_list_only3517 PASS [ 0.012s] biomcp-cli render::markdown::root_tests::every_registry_source_status_row_survives_the_render_context3518 PASS [ 0.008s] biomcp-cli render::markdown::root_tests::pagination_footer_cursor_prefers_offset_guidance_without_placeholder3519 PASS [ 0.009s] biomcp-cli render::markdown::root_tests::pagination_footer_offset_keeps_more_when_additional_rows_exist3520 PASS [ 0.007s] biomcp-cli render::markdown::root_tests::pagination_footer_offset_suppresses_more_on_last_page3521 PASS [ 0.008s] biomcp-cli render::markdown::root_tests::proof_markdown_module_layout_uses_directory_module3522 PASS [ 0.011s] biomcp-cli render::markdown::root_tests::pagination_footer_offset_suppresses_more_when_complete_single_result3523 PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::diagnostic_more_block_keeps_four_visible_section_commands3524 PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_all_and_every_recovery_state3525 PASS [ 0.028s] biomcp-cli render::markdown::root_tests::a_fully_unavailable_disease_card_keeps_every_status_line3526 PASS [ 0.028s] biomcp-cli render::markdown::root_tests::markdown_detail_outputs_label_gene_drug_and_disease_sources3527 PASS [ 0.027s] biomcp-cli render::markdown::root_tests::markdown_detail_outputs_label_variant_protein_pgx_and_openfda_sources3528 PASS [ 0.030s] biomcp-cli render::markdown::root_tests::markdown_detail_outputs_label_article_trial_and_pathway_sources3529 PASS [ 0.010s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_every_explicit_single_section_projection3530 PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_complete_region_projections_and_who_exclusions3531 PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_sparse_branches_blank_identity_and_projection_deduplication3532 PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_asserts_complete_9_10_and_over_10_candidate_arrays3533 PASS [ 0.009s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_matches_default_projection_order3534 PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::format_sections_block_describes_guardrailed_drug_and_trial_sections3535 PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::push_exact_capped_keeps_first_exact_bytes_before_the_ten_item_cap3536 PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::format_sections_block_keeps_gene_ontology_in_top_more_entries3537 PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_prioritizes_recovery_and_caps_exact_commands3538 PASS [ 0.011s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_respects_loaded_sections_regions_and_who_exclusions3539 PASS [ 0.010s] biomcp-cli render::markdown::sections::tests::format_sections_block_renders_described_executable_commands3540 PASS [ 0.010s] biomcp-cli render::markdown::sections::tests::sections_diagnostic_for_who_only_offer_conditions_and_quote_accession3541 PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::sections_gene_base_card_surfaces_diagnostics_as_fourth_command3542 PASS [ 0.009s] biomcp-cli render::markdown::sections::tests::sections_disease_base_card_surfaces_diagnostics_before_optional_sections3543 PASS [ 0.009s] biomcp-cli render::markdown::sections::tests::sections_diagnostic_omit_requested_section_from_more_block3544 PASS [ 0.008s] biomcp-cli render::markdown::sections::tests::sections_pathway_for_kegg_excludes_unsupported_sections3545 PASS [ 0.009s] biomcp-cli render::markdown::sections::tests::sections_pathway_for_reactome_keeps_full_supported_set3546 PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_co_occurrence_markdown_marks_mutation_observed_fallback3547 PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_co_occurrence_markdown_renders_pair_table3548 PASS [ 0.025s] biomcp-cli render::markdown::sections::tests::drug_command_discovery_quotes_identity_and_recovery_is_rendered_once3549 PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_cohort_markdown_renders_group_counts3550 PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_compare_mutations_markdown_renders_rate_table3551 PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_compare_expression_markdown_renders_distribution_table3552 PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_download_catalog_markdown_renders_remote_ids3553 PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_download_markdown_renders_result_table3554 PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_filter_markdown_renders_empty_results_and_unknown_totals3555 PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_filter_markdown_renders_tables_and_samples3556 PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_filter_markdown_truncates_long_sample_lists3557 PASS [ 0.007s] biomcp-cli render::markdown::study::tests::study_list_markdown_renders_study_table3558 PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_query_markdown_renders_cna_and_expression_shapes3559 PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_query_markdown_renders_mutation_shape3560 PASS [ 0.008s] biomcp-cli render::markdown::study::tests::study_query_markdown_renders_not_in_local_cohorts_signal3561 PASS [ 0.009s] biomcp-cli render::markdown::study::tests::study_survival_markdown_renders_group_table3562 PASS [ 0.010s] biomcp-cli render::markdown::study::tests::study_top_mutated_markdown_renders_ranked_table3563 PASS [ 0.008s] biomcp-cli render::markdown::support::tests::discover_try_line_quotes_shell_sensitive_queries3564 PASS [ 0.008s] biomcp-cli render::markdown::support::tests::markdown_cells_keep_layout_rules_while_removing_terminal_controls3565 PASS [ 0.008s] biomcp-cli render::markdown::support::tests::quote_arg_wraps_whitespace_and_escapes_quotes3566 PASS [ 0.009s] biomcp-cli render::markdown::support::tests::markdown_code_spans_follow_commonmark_padding_rules3567 PASS [ 1.879s] biomcp-cli entities::variant::clinvar::tests::add_clinvar_names_a_fast_429_refusal_as_rate_limited3568 PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::bounded_trial_summary_is_utf8_safe_when_both_limits_omit_content3569 PASS [ 0.010s] biomcp-cli render::markdown::trial::tests::bounded_trial_summary_distinguishes_sentence_final_and_suffix_collisions3570 PASS [ 0.010s] biomcp-cli render::markdown::trial::tests::arm_rendering_follows_assignment_ids_when_names_do_not_change3571 PASS [ 0.010s] biomcp-cli render::markdown::trial::tests::bounded_trial_summary_keeps_supported_mid_sentence_abbreviations3572 PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::bounded_trial_summary_marks_sentence_omission_but_not_complete_input3573 PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::eligibility_markdown_accepts_a_present_empty_aggregate_without_claims3574 PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::eligibility_markdown_makes_source_sex_codes_readable_without_changing_json3575 PASS [ 0.009s] biomcp-cli render::markdown::trial::tests::eligibility_markdown_preserves_linear_transitions_and_bounds_all_content3576 PASS [ 0.024s] biomcp-cli render::markdown::trial::tests::generic_trial_markdown_omits_cap_disclosure_when_locations_fit3577 PASS [ 0.022s] biomcp-cli render::markdown::trial::tests::search_results_carry_the_partial_detail_verification_note3578 PASS [ 0.025s] biomcp-cli render::markdown::trial::tests::paginated_trial_markdown_does_not_apply_a_second_cap3579 PASS [ 0.026s] biomcp-cli render::markdown::trial::tests::generic_trial_markdown_caps_locations_discloses_and_aligns_contacts3580 PASS [ 0.029s] biomcp-cli render::markdown::trial::tests::generic_trial_continuation_maps_provider_markers_without_guessing3581 PASS [ 0.023s] biomcp-cli render::markdown::trial::tests::trial_markdown_keeps_the_post_abbreviation_clause_and_json_stays_full3582 PASS [ 0.025s] biomcp-cli render::markdown::trial::tests::trial_markdown_includes_source_labeled_sections3583 PASS [ 0.024s] biomcp-cli render::markdown::trial::tests::trial_markdown_renders_contacts_eligibility_and_json_fields3584 PASS [ 0.023s] biomcp-cli render::markdown::trial::tests::trial_markdown_uses_each_safe_reference_fallback3585 PASS [ 0.009s] biomcp-cli render::markdown::variant::tests::normalization_markdown_keeps_legacy_collection_labels3586 PASS [ 0.023s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_omits_matched_intervention_column_without_labels3587 PASS [ 0.023s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_shows_matched_intervention_column_when_present3588 PASS [ 0.024s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_with_footer_omits_zero_result_nickname_hint_without_flag3589 PASS [ 0.022s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_with_footer_shows_scoped_zero_result_nickname_hint3590 PASS [ 0.020s] biomcp-cli render::markdown::variant::tests::gwas_search_markdown_renders_result_row3591 PASS [ 0.025s] biomcp-cli render::markdown::trial::tests::trial_search_markdown_with_footer_shows_filtered_zero_result_broadening_hints3592 PASS [ 0.023s] biomcp-cli render::markdown::variant::tests::a_variant_card_prints_no_blank_line_for_an_absent_numbering_note3593 PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::markdown_render_variant_entity3594 PASS [ 0.009s] biomcp-cli render::markdown::variant::tests::ticket_406_coordinate_outputs_carry_genome_build_context3595 PASS [ 0.011s] biomcp-cli render::markdown::variant::tests::ticket_589_variant_structure_failures_do_not_render_as_checked_absence_or_source_credit3596 PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::phenotype_search_markdown_renders_top_disease_follow_up3597 PASS [ 0.021s] biomcp-cli render::markdown::variant::tests::transcript_explanation_uses_trusted_template_slot_when_table_contains_footer_sentinel3598 PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::transcript_explanation_sanitizes_controls_and_embedded_backticks3599 PASS [ 0.023s] biomcp-cli render::markdown::variant::tests::variant_clinvar_rows_print_the_submission_count_when_submitters_are_absent3600 PASS [ 0.023s] biomcp-cli render::markdown::variant::tests::variant_markdown_civic_section_renders_currency_caveat_and_cross_checks3601 PASS [ 0.030s] biomcp-cli render::markdown::variant::tests::rsid_indel_card_only_prints_variant_ids_accepted_by_the_parser3602 PASS [ 0.025s] biomcp-cli render::markdown::variant::tests::variant_markdown_default_card_renders_bare_civic_pointer_without_cached_evidence3603 PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_markdown_default_card_renders_cached_civic_actionability_pointer3604 PASS [ 0.022s] biomcp-cli render::markdown::variant::tests::variant_markdown_names_the_competing_build_identity3605 PASS [ 0.008s] biomcp-cli render::markdown::variant::tests::variant_oncokb_markdown_shows_truncation_note3606 PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_markdown_next_commands_quote_variant_ids_with_spaces3607 PASS [ 0.025s] biomcp-cli render::markdown::variant::tests::variant_markdown_offers_no_retry_for_a_retired_gwas_endpoint3608 PASS [ 0.022s] biomcp-cli render::markdown::variant::tests::variant_markdown_renders_gwas_unavailable_message3609 PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_markdown_renders_cancerhotspots_recurrence_when_present3610 PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_markdown_renders_the_gwas_gap_reason_once3611 PASS [ 0.023s] biomcp-cli render::markdown::variant::tests::variant_population_markdown_labels_residual_group_but_json_keeps_raw_id3612 PASS [ 0.031s] biomcp-cli render::markdown::variant::tests::variant_markdown_renders_compact_clinvar_and_population_fields3613 PASS [ 0.022s] biomcp-cli render::markdown::variant::tests::variant_population_maximum_keeps_zero_and_handles_null_nonfinite_and_partial_sides3614 PASS [ 0.028s] biomcp-cli render::markdown::variant::tests::variant_population_markdown_keeps_missing_status_compact3615 PASS [ 0.009s] biomcp-cli render::provenance::tests::article_section_sources_projects_unavailable_fulltext_without_sources3616 PASS [ 0.025s] biomcp-cli render::markdown::variant::tests::variant_population_maximum_is_order_independent_by_an_then_raw_id3617 PASS [ 0.008s] biomcp-cli render::provenance::tests::article_section_sources_uses_resolved_fulltext_and_indexing_providers3618 PASS [ 0.009s] biomcp-cli render::provenance::tests::diagnostic_unavailable_regulatory_outcome_has_no_source_credit3619 PASS [ 0.021s] biomcp-cli render::markdown::variant::tests::variant_search_explains_distinct_transcript_match_after_unchanged_table3620 PASS [ 0.020s] biomcp-cli render::markdown::variant::tests::variant_search_markdown_renders_related_commands_from_context3621 PASS [ 0.009s] biomcp-cli render::provenance::tests::disease_section_sources_include_clinical_features3622 PASS [ 0.010s] biomcp-cli render::provenance::tests::disease_section_sources_include_diagnostics_note_sources3623 PASS [ 0.012s] biomcp-cli render::provenance::tests::disease_section_sources_include_diagnostics_from_rows3624 PASS [ 0.024s] biomcp-cli render::markdown::variant::tests::variant_search_markdown_renders_legacy_name_column_and_fallback3625 PASS [ 0.010s] biomcp-cli render::provenance::tests::disease_section_sources_include_funding_when_note_present3626 PASS [ 0.008s] biomcp-cli render::provenance::tests::drug_interaction_note_covers_the_zero_rows_wordings3627 PASS [ 0.010s] biomcp-cli render::provenance::tests::disease_section_sources_include_survival_when_note_present3628 PASS [ 0.009s] biomcp-cli render::provenance::tests::drug_interaction_report_section_sources_include_drugbank_when_descriptions_present3629 PASS [ 0.009s] biomcp-cli render::provenance::tests::drug_provenance_adds_who_to_regulatory_sources3630 PASS [ 0.009s] biomcp-cli render::provenance::tests::drug_provenance_emits_variant_targets_when_present3631 PASS [ 0.009s] biomcp-cli render::provenance::tests::drug_section_sources_omit_interactions_when_no_interaction_data_is_present3632 PASS [ 0.009s] biomcp-cli render::provenance::tests::gene_section_sources_include_funding_when_present3633 PASS [ 0.011s] biomcp-cli render::provenance::tests::gene_section_sources_include_diagnostics_from_rows3634 PASS [ 0.010s] biomcp-cli render::provenance::tests::pathway_section_sources_emits_wikipathways_not_reactome_for_wp_card3635 PASS [ 0.010s] biomcp-cli render::provenance::tests::gene_section_sources_marks_unavailable_diagnostics_without_source_credit3636 PASS [ 0.009s] biomcp-cli render::provenance::tests::pathway_source_label_falls_back_to_reactome_for_empty3637 PASS [ 0.010s] biomcp-cli render::provenance::tests::pathway_source_label_passes_through_unknown_non_empty_source3638 PASS [ 0.010s] biomcp-cli render::provenance::tests::pathway_source_label_maps_known_sources3639 PASS [ 0.008s] biomcp-cli sources::alphagenome::tests::construction::recommended_scorers_are_stable3640 PASS [ 0.008s] biomcp-cli sources::alphagenome::tests::construction::make_interval_clamps_start_and_keeps_expected_width3641 PASS [ 0.008s] biomcp-cli sources::alphagenome::tests::parsing::summarize_tensor_maps_best_gene_and_value3642 PASS [ 0.013s] biomcp-cli render::provenance::tests::variant_provenance_includes_gwas_when_requested_section_is_unavailable3643 PASS [ 0.008s] biomcp-cli sources::alphagenome::tests::parsing::dtype_and_half_precision_helpers_work3644 PASS [ 0.010s] biomcp-cli sources::alphagenome::tests::construction::score_variant_request_sets_interval_variant_and_scorers3645 PASS [ 0.009s] biomcp-cli sources::archive_budget::tests::bounded_metadata_sets_one_effective_path_and_then_resets3646 PASS [ 0.009s] biomcp-cli sources::archive_budget::tests::aggregate_and_entry_limits_accept_exact_boundaries_and_reject_max_plus_one3647 PASS [ 0.008s] biomcp-cli sources::archive_budget::tests::metadata_limits_ambiguity_and_unsupported_entry_types_are_rejected3648 PASS [ 0.008s] biomcp-cli sources::archive_budget::tests::entry_and_total_accounting_reject_checked_overflow3649 PASS [ 0.010s] biomcp-cli sources::archive_budget::tests::pax_paths_are_accepted_but_size_sparse_and_duplicate_metadata_are_rejected3650 PASS [ 0.010s] biomcp-cli sources::archive_budget::tests::regular_member_accepts_exact_limits_and_rejects_max_plus_one3651 PASS [ 0.007s] biomcp-cli sources::ca_bundle::tests::non_utf8_configured_path_keeps_its_raw_os_bytes3652 PASS [ 0.010s] biomcp-cli sources::ca_bundle::tests::parse_error_is_indexed_and_does_not_echo_bundle_content3653 PASS [ 0.016s] biomcp-cli sources::ca_bundle::tests::bundle_is_parsed_once_across_builders_in_a_fresh_process3654 PASS [ 0.008s] biomcp-cli sources::cancerhotspots::tests::construction::by_gene_plans_match_captured_recurrence_routes3655 PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::construction::by_gene_plan_uses_encoded_path_and_no_body3656 PASS [ 0.008s] biomcp-cli sources::cancerhotspots::tests::construction::encode_path_segment_preserves_safe_characters_and_escapes_others3657 PASS [ 0.016s] biomcp-cli sources::ca_bundle::tests::the_real_constructors_parse_a_valid_bundle_once3658 PASS [ 0.010s] biomcp-cli sources::cancerhotspots::tests::parsing::decode_by_gene_maps_http_and_html_errors3659 PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::parsing::parses_by_gene_fixture3660 PASS [ 0.007s] biomcp-cli sources::cancerhotspots::tests::parsing::receipted_empty_response_is_checked_absence3661 PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::parsing::receipted_recurrence_preserves_braf_and_myd88_landmarks3662 PASS [ 0.037s] biomcp-cli sources::alphagenome::tests::parsing::decompress_tensor_bytes_rejects_oversized_chunk3663 PASS [ 0.010s] biomcp-cli sources::cancerhotspots::tests::parsing::recurrence_checks_later_matching_residue_rows_for_exact_alt3664 PASS [ 0.008s] biomcp-cli sources::cancerhotspots::tests::parsing::recurrence_maps_counts_and_transcript_for_exact_alt3665 PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::parsing::recurrence_serializes_checked_absence_with_nulls3666 PASS [ 0.009s] biomcp-cli sources::cbioportal::tests::construction::clinical_data_plan_posts_sample_filter_body3667 PASS [ 0.009s] biomcp-cli sources::cancerhotspots::tests::parsing::recurrence_treats_missing_exact_alt_as_checked_absence3668 PASS [ 0.007s] biomcp-cli sources::cbioportal::tests::construction::gene_resolution_plan_rejects_empty_gene3669 PASS [ 0.008s] biomcp-cli sources::cbioportal::tests::construction::gene_resolution_plan_sets_keyword_query3670 PASS [ 0.008s] biomcp-cli sources::cbioportal::tests::construction::study_and_mutation_plans_set_paths_and_queries3671 PASS [ 0.008s] biomcp-cli sources::cbioportal::tests::parsing::decode_json_maps_http_error_status_with_excerpt3672 PASS [ 0.010s] biomcp-cli sources::cbioportal::tests::parsing::parses_gene_resolution_fixture3673 PASS [ 0.009s] biomcp-cli sources::cbioportal::tests::parsing::parses_study_mutation_and_clinical_fixtures3674 PASS [ 0.009s] biomcp-cli sources::cbioportal_download::tests::construction::study_archive_plan_fetches_tarball_for_valid_study_id3675 PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::construction::archive_relative_path_accepts_only_the_expected_top_level_study_dir3676 PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::construction::study_archive_plan_rejects_path_like_study_ids3677 PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::construction::study_list_plan_fetches_datahub_catalog3678 PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::construction::validate_study_id_trims_and_requires_a_single_safe_segment3679 PASS [ 0.008s] biomcp-cli sources::cbioportal_download::tests::parsing::archive_status_maps_missing_archives_to_not_found_without_leaking_storage_body3680 PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::download::archive_download_accounting_accepts_exact_limit_and_rejects_overflow3681 PASS [ 0.011s] biomcp-cli sources::cbioportal_download::tests::download::archive_download_rejects_chunked_max_plus_one_and_removes_partial_file3682 PASS [ 0.009s] biomcp-cli sources::cbioportal_download::tests::parsing::archive_status_maps_other_http_errors_with_excerpt3683 PASS [ 0.013s] biomcp-cli sources::cbioportal_download::tests::download::archive_download_rejects_declared_oversize_before_creating_destination3684 PASS [ 0.052s] biomcp-cli sources::ca_bundle::tests::root_configuration_stays_additive3685 PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_extracts_a_valid_local_archive3686 PASS [ 0.011s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_rejects_declared_oversized_member_without_leaving_files3687 PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_rejects_entries_outside_expected_top_level_directory3688 PASS [ 0.010s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_skips_existing_valid_target3689 PASS [ 0.012s] biomcp-cli sources::cbioportal_download::tests::parsing::install_study_archive_rejects_oversized_path_metadata_before_buffering_it3690 PASS [ 0.064s] biomcp-cli sources::ca_bundle::tests::loader_cases_run_in_fresh_processes3691 PASS [ 0.009s] biomcp-cli sources::cbioportal_download::tests::parsing::list_decode_accepts_json_content_type_with_parameters3692 PASS [ 0.009s] biomcp-cli sources::cbioportal_download::tests::parsing::parses_study_list_fixture3693 PASS [ 0.008s] biomcp-cli sources::cbioportal_download::tests::parsing::study_list_decode_maps_http_and_content_type_errors3694 PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::clinical_column_values_reads_trimmed_clinical_values3695 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::cna_distribution_supports_header_with_entrez_column3696 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::cna_values_by_sample_reads_matrix_rows_and_optional_entrez_column3697 PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::co_occurrence_computes_pair_counts3698 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::cohort_by_mutation_classifies_patients_and_samples3699 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::co_occurrence_falls_back_to_mutation_observed_samples_without_clinical_file3700 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::cohort_commands_require_clinical_sample_file_instead_of_falling_back3701 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::compare_expression_by_mutation_summarizes_group_distributions3702 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::dev2_contracts::list_studies_treats_a_missing_root_as_an_empty_catalog3703 PASS [ 0.011s] biomcp-cli sources::cbioportal_study::tests::compare_mutations_by_mutation_counts_unique_samples_in_each_group3704 PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::dev2_contracts::patient_survival_data_requires_canonical_columns_and_filters_invalid_rows3705 PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::expression_distribution_ignores_missing_and_non_finite_values3706 PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::expression_pairs_by_sample_keeps_shared_numeric_samples_in_header_order3707 PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::expression_pairs_by_sample_reports_first_missing_gene_in_argument_order3708 PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::filter_samples_intersects_mutation_and_clinical_criteria3709 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::filter_samples_intersects_three_way_criteria3710 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::filter_samples_intersects_mutation_and_cna_criteria3711 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::filter_samples_propagates_missing_required_files_and_columns3712 PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::filter_samples_treats_missing_gene_rows_as_empty_sets3713 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::filter_samples_reports_empty_intersection_and_single_criterion_results3714 PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::fisher_exact_two_tailed_returns_one_for_zero_total_table3715 PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::fisher_exact_two_tailed_matches_reference_tables3716 PASS [ 0.007s] biomcp-cli sources::cbioportal_study::tests::kaplan_meier_estimate_uses_event_times_and_landmarks3717 PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::log_rank_two_group_is_defined_when_only_one_group_has_events3718 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::kaplan_meier_estimate_without_events_returns_flat_curve3719 PASS [ 0.008s] biomcp-cli sources::cbioportal_study::tests::mann_whitney_u_test_returns_none_when_all_values_are_identical3720 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::list_studies_reads_meta_and_data_flags3721 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::list_study_lookup_rows_includes_clinical_cancer_labels3722 PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::mann_whitney_u_test_handles_ties_and_smaller_u_statistic3723 PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::missing_required_file_returns_source_unavailable3724 PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::mutation_counts_by_sample_returns_sorted_counts3725 PASS [ 0.011s] biomcp-cli sources::cbioportal_study::tests::mutation_frequency_counts_records_samples_and_top_buckets3726 PASS [ 0.007s] biomcp-cli sources::cellosaurus::tests::a_missing_record_is_a_missing_record_and_not_a_failure3727 PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::structural_variants_match_either_breakpoint_and_fill_optional_blanks3728 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::structural_variants_require_both_gene_columns3729 PASS [ 0.009s] biomcp-cli sources::cbioportal_study::tests::survival_by_mutation_returns_group_aggregates_for_analyzable_patients3730 PASS [ 0.010s] biomcp-cli sources::cbioportal_study::tests::top_mutated_genes_ranks_by_samples_then_events_then_gene3731 PASS [ 0.008s] biomcp-cli sources::cellosaurus::tests::a_record_splits_primary_and_secondary_accessions_and_names3732 PASS [ 0.010s] biomcp-cli sources::cellosaurus::tests::a_record_recorded_without_variants_carries_no_variation_rows3733 PASS [ 0.009s] biomcp-cli sources::cellosaurus::tests::a_variation_source_yields_its_pubmed_id3734 PASS [ 0.008s] biomcp-cli sources::cellosaurus::tests::name_search_targets_the_identifier_and_synonym_field3735 PASS [ 0.010s] biomcp-cli sources::cellosaurus::tests::an_html_page_served_as_json_is_a_provider_error_naming_the_url3736 PASS [ 0.009s] biomcp-cli sources::cellosaurus::tests::solr_escaping_covers_the_quote_and_the_backslash3737 PASS [ 0.007s] biomcp-cli sources::chembl::tests::construction::cell_line_plan_joins_on_the_cellosaurus_accession3738 PASS [ 0.009s] biomcp-cli sources::cellosaurus::tests::release_info_reads_the_version_and_the_date3739 PASS [ 0.010s] biomcp-cli sources::cellosaurus::tests::record_url_asks_for_the_card_projection_without_cross_references3740 PASS [ 0.008s] biomcp-cli sources::chembl::tests::construction::assay_count_plan_asks_for_one_row_of_the_cell_line_assays3741 PASS [ 0.009s] biomcp-cli sources::chembl::tests::construction::drug_targets_plan_requests_mechanism_endpoint3742 PASS [ 0.008s] biomcp-cli sources::chembl::tests::construction::plans_reject_empty_identifiers3743 PASS [ 0.008s] biomcp-cli sources::chembl::tests::construction::target_summary_plan_sets_target_path3744 PASS [ 1.617s] biomcp-cli entities::variant::gwas::tests::combined_gene_and_trait_queries_run_at_once_and_keep_the_sequential_rows3745 PASS [ 0.010s] biomcp-cli sources::chembl::tests::construction::status_plan_reads_the_release_endpoint3746 PASS [ 0.007s] biomcp-cli sources::chembl::tests::parsing::cell_line_response_maps_the_molm13_record3747 PASS [ 0.008s] biomcp-cli sources::chembl::tests::parsing::assay_page_reports_the_total_count3748 PASS [ 0.009s] biomcp-cli sources::chembl::tests::parsing::an_html_body_served_with_http_200_names_the_url3749 PASS [ 0.008s] biomcp-cli sources::chembl::tests::parsing::decode_json_response_maps_http_and_json_errors3750 PASS [ 0.010s] biomcp-cli sources::chembl::tests::parsing::cell_line_response_maps_the_k562_record_whose_name_chembl_spells_differently3751 PASS [ 0.011s] biomcp-cli sources::chembl::tests::parsing::an_accession_chembl_does_not_list_maps_to_no_record3752 PASS [ 0.009s] biomcp-cli sources::chembl::tests::parsing::drug_targets_response_maps_targets_and_defaults3753 PASS [ 0.009s] biomcp-cli sources::chembl::tests::parsing::status_reports_the_release_name_and_date3754 PASS [ 0.007s] biomcp-cli sources::civic::tests::construction::therapy_and_disease_context_plans_set_their_variables3755 PASS [ 0.008s] biomcp-cli sources::civic::tests::construction::required_query_value_rejects_empty3756 PASS [ 0.009s] biomcp-cli sources::civic::tests::construction::molecular_profile_context_plan_sets_graphql_body_and_limit3757 PASS [ 0.007s] biomcp-cli sources::civic::tests::parsing::context_response_accepts_a_genuine_empty_page3758 PASS [ 0.010s] biomcp-cli sources::chembl::tests::parsing::target_summary_response_maps_pref_name_and_target_type3759 PASS [ 0.008s] biomcp-cli sources::civic::tests::parsing::context_response_rejects_a_total_without_parsed_rows3760 PASS [ 0.009s] biomcp-cli sources::civic::tests::parsing::context_response_maps_evidence_and_assertions3761 PASS [ 0.009s] biomcp-cli sources::civic::tests::parsing::context_response_rejects_a_missing_data_block3762 PASS [ 0.009s] biomcp-cli sources::civic::tests::parsing::context_response_surfaces_graphql_errors3763 PASS [ 0.008s] biomcp-cli sources::civic::tests::parsing::decode_json_response_maps_http_and_content_type_errors3764 PASS [ 0.010s] biomcp-cli sources::clingen::tests::parsing::clingen_plans_set_lookup_and_download_paths3765 PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::clingen_parsers_handle_missing_gene_rows_cleanly3766 PASS [ 0.009s] biomcp-cli sources::clingen::tests::parsing::decode_text_and_json_map_http_errors3767 PASS [ 0.007s] biomcp-cli sources::clingen::tests::parsing::family_status_serialization_is_closed_and_omits_healthy_messages3768 PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::dosage_newest_row_preserves_a_literal_no_evidence_and_omits_missing_side3769 PASS [ 0.010s] biomcp-cli sources::clingen::tests::parsing::downloads_fail_closed_on_unrecognized_schema_html_and_invalid_encoding3770 PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::dosage_sensitivity_parses_csv_and_picks_latest_row3771 PASS [ 0.016s] biomcp-cli sources::clingen::tests::operations_start_concurrently_and_share_one_lookup3772 PASS [ 0.019s] biomcp-cli sources::clingen::tests::failed_lookup_preserves_symbol_data_but_does_not_confirm_zero_match3773 PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::gene_context_can_be_built_from_one_lookup_and_both_csv_payloads3774 PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::gene_validity_parses_csv_with_metadata_rows3775 PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::hgnc_lookup_allows_hgnc_only_validity_match3776 PASS [ 0.009s] biomcp-cli sources::clingen::tests::parsing::lookup_plan_rejects_invalid_gene_symbols3777 PASS [ 0.009s] biomcp-cli sources::clingen::tests::review_date_rejects_a_multibyte_boundary_without_panicking3778 PASS [ 0.010s] biomcp-cli sources::clingen::tests::parsing::validity_keeps_newest_five_with_deterministic_ties3779 PASS [ 0.011s] biomcp-cli sources::clingen::tests::parsing::lookup_accepts_json_with_html_content_type3780 PASS [ 0.008s] biomcp-cli sources::clingen_allele_registry::tests::batch_plan_uses_post_and_preserves_input_order_and_duplicates3781 PASS [ 0.010s] biomcp-cli sources::clingen_allele_registry::tests::batch_cardinality_mismatch_is_incomplete3782 PASS [ 0.009s] biomcp-cli sources::clingen_allele_registry::tests::blank_node_with_malformed_projected_fact_is_indeterminate3783 PASS [ 0.009s] biomcp-cli sources::clingen_allele_registry::tests::decoder_does_not_accept_an_empty_caid3784 PASS [ 0.009s] biomcp-cli sources::clingen_allele_registry::tests::decoder_orders_aliases_and_rejects_schema_drift3785 PASS [ 0.013s] biomcp-cli sources::clingen::tests::validity_failure_preserves_newest_dosage_row_and_public_message3786 PASS [ 0.013s] biomcp-cli sources::clingen_allele_registry::tests::direct_plan_uses_only_the_projected_read_route3787 PASS [ 0.008s] biomcp-cli sources::clingen_allele_registry::tests::external_ids_keep_full_source_metadata_before_per_source_caps3788 PASS [ 0.009s] biomcp-cli sources::clingen_allele_registry::tests::receipt_backed_car_capture_decodes_a_resolved_transcript_identity3789 PASS [ 0.010s] biomcp-cli sources::clingen_allele_registry::tests::received_batch_response_hashes_preserve_exact_body_bytes3790 PASS [ 0.010s] biomcp-cli sources::clingen_allele_registry::tests::received_response_hashes_preserve_exact_body_bytes3791 PASS [ 0.011s] biomcp-cli sources::clingen_cspec::tests::construction::cspec_execution_methods_consume_manifest_and_document_plans3792 PASS [ 0.010s] biomcp-cli sources::clingen_cspec::tests::construction::cspec_plans_keep_manifest_and_document_provider_paths3793 PASS [ 0.010s] biomcp-cli sources::clingen_cspec::tests::construction::cspec_production_timeouts_match_shared_provider_policy3794 PASS [ 0.009s] biomcp-cli sources::clingen_erepo::tests::construction::erepo_plans_use_exact_search_and_encoded_detail_segments3795 PASS [ 0.052s] biomcp-cli sources::clingen::tests::dosage_timeout_preserves_completed_validity3796 PASS [ 0.010s] biomcp-cli sources::clingen_erepo::tests::parsing::envelope_requires_the_contract_keys_and_success_code3797 PASS [ 0.010s] biomcp-cli sources::clingen_erepo::tests::construction::gene_plan_requests_one_extra_row_at_the_requested_offset3798 PASS [ 0.009s] biomcp-cli sources::clingen_ldh::tests::direct_body_budget_stops_at_the_aggregate_limit3799 PASS [ 0.036s] biomcp-cli sources::clingen::tests::valid_zero_match_is_empty_and_oversized_download_is_failed3800 PASS [ 0.010s] biomcp-cli sources::clingen_erepo::tests::parsing::exact_search_no_records_404_requires_the_provider_shape3801 PASS [ 0.011s] biomcp-cli sources::clinicaltrials::tests::construction::default_get_fields_request_visible_status_context3802 PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::construction::every_product_detail_route_has_one_exact_composed_request3803 PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::construction::get_plan_builds_study_path_and_section_fields3804 PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::construction::every_unrelated_single_section_omits_all_eligibility_fields3805 PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::construction::get_fields_contacts_preserve_site_context_and_eligibility_sex3806 PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::construction::intervention_detail_fields_are_requested_once_with_or_without_arms3807 PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::construction::local_detail_plan_uses_the_exact_shared_path_and_fields3808 PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::construction::location_postal_code_is_requested_only_for_location_projections3809 PASS [ 0.008s] biomcp-cli sources::clinicaltrials::tests::construction::search_plan_builds_expected_params3810 PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::construction::search_plan_includes_geo_facility_agg_and_field_override3811 PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::ctgov_age_wire_distinguishes_absent_null_and_blank3812 PASS [ 0.011s] biomcp-cli sources::clinicaltrials::tests::parsing::arm_label_mutations_rebuild_or_reject_assignments_without_leaking_values3813 PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::parsing::ctgov_age_wire_round_trips_only_provider_strings3814 PASS [ 0.008s] biomcp-cli sources::clinicaltrials::tests::parsing::decode_json_classifies_only_intervention_parser_bad_requests3815 PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::parsing::ctgov_eligibility_mutations_change_only_the_shared_values3816 PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::parsing::decode_json_maps_http_error_status_with_excerpt3817 PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::detail_response_checks_http_status_before_valid_json3818 PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::detail_response_returns_shared_references3819 PASS [ 0.007s] biomcp-cli sources::clinicaltrials::tests::parsing::get_response_maps_not_found_to_trial_not_found3820 PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::detail_response_sanitizes_ambiguous_arm_labels3821 PASS [ 0.008s] biomcp-cli sources::clinicaltrials::tests::parsing::legacy_capture_keeps_missing_null_and_empty_arm_arrays_distinct3822 PASS [ 0.014s] biomcp-cli sources::clinicaltrials::tests::parsing::detail_response_maps_every_stable_validation_code3823 PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::parses_contacts_fixture_without_consuming_detail_eligibility3824 PASS [ 0.010s] biomcp-cli sources::clinicaltrials::tests::parsing::parses_large_document_module3825 PASS [ 0.009s] biomcp-cli sources::clinicaltrials::tests::parsing::parses_search_response_fixture3826 PASS [ 0.007s] biomcp-cli sources::complexportal::tests::construction::complexes_plan_rejects_empty_accession_and_skips_zero_limit3827 PASS [ 0.008s] biomcp-cli sources::complexportal::tests::construction::complexes_plan_sets_endpoint_filters_and_page_size3828 PASS [ 0.011s] biomcp-cli sources::clinicaltrials::tests::parsing::product_arm_states_survive_dedicated_mixed_and_all_routes3829 PASS [ 0.012s] biomcp-cli sources::clinicaltrials::tests::parsing::recorded_ctgov_eligibility_reaches_the_shared_projection_without_loss3830 PASS [ 0.009s] biomcp-cli sources::complexportal::tests::parsing::map_complexes_filters_false_positives_and_shapes_participants3831 PASS [ 0.010s] biomcp-cli sources::complexportal::tests::parsing::decode_json_response_maps_empty_results3832 PASS [ 0.010s] biomcp-cli sources::cpic::tests::construction::empty_gene_pair_plan_uses_the_normal_pair_route3833 PASS [ 0.007s] biomcp-cli sources::cpic::tests::construction::plans_validate_gene_and_drug_inputs3834 PASS [ 0.010s] biomcp-cli sources::cpic::tests::construction::pair_plans_set_expected_filters_and_order3835 PASS [ 0.007s] biomcp-cli sources::cpic::tests::parsing::decode_json_response_maps_http_content_type_and_json_errors3836 PASS [ 0.009s] biomcp-cli sources::cpic::tests::construction::recommendation_frequency_and_guideline_plans_set_expected_filters3837 PASS [ 0.007s] biomcp-cli sources::cpic::tests::parsing::empty_pair_response_decodes3838 PASS [ 0.009s] biomcp-cli sources::cpic::tests::parsing::drug_pair_page_response_decodes_rows3839 PASS [ 0.008s] biomcp-cli sources::cpic::tests::parsing::frequency_response_decodes_rows3840 PASS [ 0.008s] biomcp-cli sources::cpic::tests::parsing::pair_page_response_decodes_rows_and_total3841 PASS [ 0.009s] biomcp-cli sources::cvx::tests::construction::cvx_missing_files_tracks_required_contract3842 PASS [ 0.010s] biomcp-cli sources::cpic::tests::parsing::recommendation_and_guideline_responses_decode3843 PASS [ 0.009s] biomcp-cli sources::cvx::tests::construction::cvx_read_error_mentions_recovery_paths3844 PASS [ 0.008s] biomcp-cli sources::cvx::tests::construction::sync_intro_matches_missing_stale_and_force_modes3845 PASS [ 0.009s] biomcp-cli sources::cvx::tests::construction::sync_state_marks_missing_fresh_stale_and_force3846 PASS [ 0.008s] biomcp-cli sources::cvx::tests::parsing::ensure_csv_content_type_rejects_html_response_without_raw_tags3847 PASS [ 0.010s] biomcp-cli sources::cvx::tests::parsing::ema_search_aliases_require_trade_name_identity3848 PASS [ 0.097s] biomcp-cli sources::clingen::tests::timed_out_lookup_preserves_symbol_data_but_marks_zero_match_timed_out3849 PASS [ 0.011s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_joins_mvx_rows_when_present3850 PASS [ 0.011s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_matches_cvx_family_terms_for_antigen_queries3851 PASS [ 0.012s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_prefers_exact_product_before_family_prefix_and_dedupes3852 PASS [ 0.012s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_skips_non_vaccine_rows3853 PASS [ 0.013s] biomcp-cli sources::cvx::tests::parsing::lookup_brand_aliases_supports_exact_and_family_prefix_matching3854 PASS [ 0.011s] biomcp-cli sources::cvx::tests::parsing::lookup_vaccine_candidates_returns_cvx_codes_for_brand_matches3855 PASS [ 0.010s] biomcp-cli sources::cvx::tests::parsing::parse_cvx_products_handles_trailing_blank_field3856 PASS [ 0.012s] biomcp-cli sources::cvx::tests::parsing::parse_cvx_codes_parses_real_shape_and_non_vaccine_flag3857 PASS [ 0.009s] biomcp-cli sources::cvx::tests::parsing::parse_mvx_rows_rejects_short_rows3858 PASS [ 0.010s] biomcp-cli sources::ddinter::tests::construction::basis_freshness_is_stale_without_a_basis_and_fresh_from_recent_files3859 PASS [ 0.010s] biomcp-cli sources::ddinter::tests::construction::ddinter_identity_dedupes_alias_terms3860 PASS [ 0.013s] biomcp-cli sources::ddinter::tests::construction::cached_index_freshness_follows_the_cached_basis_not_the_files3861 PASS [ 0.009s] biomcp-cli sources::ddinter::tests::construction::ddinter_missing_files_reports_incomplete_bundle3862 PASS [ 0.010s] biomcp-cli sources::ddinter::tests::parsing::bundle_parse_errors_carry_the_read_marker3863 PASS [ 0.013s] biomcp-cli sources::ddinter::tests::construction::cached_index_freshness_keeps_a_fresh_load_fresh_after_aging_the_files3864 PASS [ 0.008s] biomcp-cli sources::ddinter::tests::parsing::html_download_replies_are_download_failures_not_read_failures3865 PASS [ 0.010s] biomcp-cli sources::ddinter::tests::parsing::client_lookup_matches_both_sides_without_duplicates3866 PASS [ 0.011s] biomcp-cli sources::ddinter::tests::parsing::client_coverage_status_distinguishes_absent_drug_from_empty_matches3867 PASS [ 0.009s] biomcp-cli sources::ddinter::tests::parsing::identity_terms_match_ddinter_rows_through_synonyms3868 PASS [ 0.009s] biomcp-cli sources::ddinter::tests::parsing::normalize_name_key_collapses_spacing_and_case3869 PASS [ 0.009s] biomcp-cli sources::ddinter::tests::parsing::parse_csv_rows_rejects_incomplete_rows3870 PASS [ 0.008s] biomcp-cli sources::dgidb::tests::construction::gene_interactions_plan_sets_graphql_body3871 PASS [ 0.011s] biomcp-cli sources::ddinter::tests::parsing::parse_csv_rows_reads_expected_shape3872 PASS [ 0.009s] biomcp-cli sources::dgidb::tests::construction::gene_interactions_plan_rejects_invalid_symbols3873 PASS [ 0.009s] biomcp-cli sources::dgidb::tests::parsing::decode_json_response_maps_http_and_content_type_errors3874 PASS [ 0.010s] biomcp-cli sources::ddinter::tests::parsing::parse_csv_rows_rejects_missing_required_columns3875 PASS [ 0.009s] biomcp-cli sources::dgidb::tests::parsing::gene_interactions_response_aggregates_categories_and_interactions3876 PASS [ 0.009s] biomcp-cli sources::dgidb::tests::parsing::gene_interactions_response_surfaces_graphql_errors3877 PASS [ 0.010s] biomcp-cli sources::disable::tests::commercial_restricted_group_includes_specific_and_broad_restrictions3878 PASS [ 0.009s] biomcp-cli sources::disable::tests::kegg_alias_keeps_its_historical_value_set3879 PASS [ 0.011s] biomcp-cli sources::disable::tests::empty_tokens_are_skipped_so_blank_values_disable_nothing3880 PASS [ 0.010s] biomcp-cli sources::disable::tests::non_commercial_group_covers_the_recorded_sources3881 PASS [ 0.010s] biomcp-cli sources::disable::tests::license_required_group_covers_the_recorded_sources3882 PASS [ 0.011s] biomcp-cli sources::disable::tests::parse_records_the_origin_in_each_reason3883 PASS [ 0.011s] biomcp-cli sources::disable::tests::parse_splits_comma_and_pipe_and_trims_and_lowercases3884 PASS [ 0.010s] biomcp-cli sources::disable::tests::unknown_token_error_lists_valid_sources_and_groups3885 PASS [ 0.010s] biomcp-cli sources::disable::tests::registry_ids_match_the_embedded_inventory3886 PASS [ 0.008s] biomcp-cli sources::disgenet::tests::construction::disease_associations_plan_uses_normalized_umls_cui3887 PASS [ 0.009s] biomcp-cli sources::disgenet::tests::construction::disease_associations_plan_skips_limit_zero3888 PASS [ 0.008s] biomcp-cli sources::disgenet::tests::construction::gene_associations_plan_falls_back_to_gene_symbol3889 PASS [ 0.009s] biomcp-cli sources::disgenet::tests::construction::gene_associations_plan_sends_auth_header_and_gene_ncbi_id3890 PASS [ 0.010s] biomcp-cli sources::disgenet::tests::construction::gene_associations_plan_rejects_missing_gene_id_and_symbol3891 PASS [ 0.011s] biomcp-cli sources::disgenet::tests::construction::disease_resolution_plan_sets_free_text_query3892 PASS [ 0.009s] biomcp-cli sources::disgenet::tests::construction::gene_associations_plan_skips_limit_zero3893 PASS [ 0.009s] biomcp-cli sources::disgenet::tests::construction::missing_key_returns_api_key_required_error3894 PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::associations_from_response_applies_limit3895 PASS [ 0.008s] biomcp-cli sources::disgenet::tests::parsing::disease_resolution_returns_source_unavailable_when_resolution_fails3896 PASS [ 0.010s] biomcp-cli sources::disgenet::tests::parsing::decode_summary_response_maps_association_rows3897 PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::disease_resolution_uses_synonym_match3898 PASS [ 0.007s] biomcp-cli sources::disgenet::tests::parsing::empty_payload_returns_empty_vec3899 PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::forbidden_response_reports_rejected_credential3900 PASS [ 0.008s] biomcp-cli sources::disgenet::tests::parsing::rate_limit_error_includes_retry_after_seconds3901 PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::non_ok_response_status_returns_api_error3902 PASS [ 0.010s] biomcp-cli sources::disgenet::tests::parsing::http_500_returns_api_error3903 PASS [ 0.009s] biomcp-cli sources::disgenet::tests::parsing::rejected_credential_recovery_points_to_configuration3904 PASS [ 0.008s] biomcp-cli sources::disgenet::tests::parsing::unauthorized_response_reports_rejected_credential3905 PASS [ 0.009s] biomcp-cli sources::ema::tests::ema_feed_table_matches_required_file_contract3906 PASS [ 0.009s] biomcp-cli sources::ema::tests::ema_missing_files_tracks_required_file_contract_in_order3907 PASS [ 0.010s] biomcp-cli sources::ema::tests::ema_sync_error_mentions_recovery_paths3908 PASS [ 0.008s] biomcp-cli sources::ema::tests::parsing::cvx_signatures_keep_distinctive_initialisms_and_ordered_constraints3909 PASS [ 0.009s] biomcp-cli sources::ema::tests::parsing::boundary_phrase_rejection_advances_across_multibyte_character3910 PASS [ 0.009s] biomcp-cli sources::ema::tests::parsing::cvx_ordered_signature_compacts_but_does_not_reverse_or_cross_fields3911 PASS [ 0.009s] biomcp-cli sources::ema::tests::parsing::ema_truth_table_reports_every_typed_source_and_stable_ties3912 PASS [ 0.014s] biomcp-cli sources::ema::tests::parsing::search_classifies_deduplicates_and_paginates_after_stable_tiering3913 PASS [ 0.022s] biomcp-cli sources::ema::tests::parsing::regulatory_reads_live_schema_holder_key_and_cleaned_indication3914 PASS [ 0.022s] biomcp-cli sources::ema::tests::parsing::resolve_anchor_matches_brand_and_filters_non_human_rows3915 PASS [ 0.024s] biomcp-cli sources::ema::tests::parsing::recorded_cvx_descriptions_bridge_gardasil_prevnar_and_fluzone3916 PASS [ 0.021s] biomcp-cli sources::ema::tests::parsing::safety_ozempic_has_dhpcs_but_empty_referrals_and_psusas3917 PASS [ 0.030s] biomcp-cli sources::ema::tests::parsing::get_identity_keeps_legacy_period_boundaries_while_search_identity_cleans_them3918 PASS [ 0.021s] biomcp-cli sources::ema::tests::parsing::shortage_matches_resolved_human_medicine_anchor3919 PASS [ 0.009s] biomcp-cli sources::ema::tests::parsing::validate_feed_payload_rejects_bad_payloads_before_write3920 PASS [ 0.023s] biomcp-cli sources::ema::tests::parsing::search_medicines_matches_therapeutic_indication_queries3921 PASS [ 0.023s] biomcp-cli sources::ema::tests::parsing::search_medicines_matches_cvx_alias_tokens_on_active_substance3922 PASS [ 0.008s] biomcp-cli sources::ema::tests::sync_intro_matches_download_refresh_and_force_modes3923 PASS [ 0.009s] biomcp-cli sources::ema::tests::sync_plan_marks_missing_and_stale_feeds3924 PASS [ 0.008s] biomcp-cli sources::enrichr::tests::construction::add_list_body_trims_and_joins_genes3925 PASS [ 0.010s] biomcp-cli sources::enrichr::tests::construction::add_list_body_rejects_empty_gene_lists3926 PASS [ 0.008s] biomcp-cli sources::enrichr::tests::construction::enrich_plan_sets_user_list_id_and_library3927 PASS [ 0.008s] biomcp-cli sources::enrichr::tests::parsing::decode_add_list_response_parses_user_list_id3928 PASS [ 0.008s] biomcp-cli sources::enrichr::tests::parsing::decode_enrich_response_gracefully_handles_bad_request3929 PASS [ 0.009s] biomcp-cli sources::enrichr::tests::parsing::decode_enrich_response_parses_json_and_rejects_html3930 PASS [ 0.009s] biomcp-cli sources::europepmc::tests::construction::full_text_xml_plan_builds_supported_pmc_endpoint3931 PASS [ 0.008s] biomcp-cli sources::europepmc::tests::construction::search_query_plan_sets_citation_sort3932 PASS [ 0.010s] biomcp-cli sources::europepmc::tests::construction::full_text_xml_plan_empty_source_or_id_returns_none3933 PASS [ 0.009s] biomcp-cli sources::europepmc::tests::construction::legacy_request_plan_keeps_article_contract_shape3934 PASS [ 0.009s] biomcp-cli sources::europepmc::tests::construction::search_query_plan_sets_keyword_shape_and_date_sort3935 PASS [ 0.009s] biomcp-cli sources::europepmc::tests::construction::search_query_plan_validates_query_and_paging3936 PASS [ 0.009s] biomcp-cli sources::europepmc::tests::parsing::decode_full_text_xml_maps_http_error_status_with_excerpt3937 PASS [ 0.010s] biomcp-cli sources::europepmc::tests::construction::supplementary_files_plan_validates_and_normalizes_pmcid3938 PASS [ 0.008s] biomcp-cli sources::europepmc::tests::parsing::decode_full_text_xml_rejects_invalid_utf83939 PASS [ 0.010s] biomcp-cli sources::europepmc::tests::parsing::decode_full_text_xml_returns_body_on_success3940 PASS [ 0.008s] biomcp-cli sources::europepmc::tests::parsing::decode_full_text_xml_returns_none_on_documented_or_empty_absence3941 PASS [ 0.009s] biomcp-cli sources::europepmc::tests::parsing::decode_json_maps_http_error_status_with_excerpt3942 PASS [ 0.008s] biomcp-cli sources::europepmc::tests::parsing::europepmc_result_deserializes_first_index_date3943 PASS [ 0.007s] biomcp-cli sources::europepmc::tests::parsing::supplementary_status_distinguishes_absence_from_failure3944 PASS [ 0.010s] biomcp-cli sources::europepmc::tests::parsing::parses_search_response_from_real_fixture3945 PASS [ 0.009s] biomcp-cli sources::europepmc::tests::parsing::supplementary_response_treats_the_receipted_not_open_access_error_as_absent3946 PASS [ 0.010s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_keeps_zero_byte_members_for_upstream_classification3947 PASS [ 0.011s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_enforces_all_size_and_count_limits3948 PASS [ 0.009s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_rejects_empty_directory_only_and_malformed_archives3949 PASS [ 0.008s] biomcp-cli sources::fda_orphan::tests::envelopes_pin_counts_truncation_and_degraded_without_rows3950 PASS [ 0.011s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_preserves_normalized_names_and_exact_bytes3951 PASS [ 0.009s] biomcp-cli sources::fda_orphan::tests::form_is_exact_and_ordered3952 PASS [ 0.008s] biomcp-cli sources::fda_orphan::tests::merge_is_order_independent_and_discards_conflicts3953 PASS [ 0.010s] biomcp-cli sources::fda_orphan::tests::json_schema_keeps_every_record_key_and_required_nulls3954 PASS [ 0.013s] biomcp-cli sources::europepmc::tests::parsing::supplementary_zip_rejects_unsafe_and_duplicate_names3955 PASS [ 0.008s] biomcp-cli sources::figshare::tests::construction::article_plan_uses_article_id_path3956 PASS [ 0.011s] biomcp-cli sources::fda_orphan::tests::parser_keeps_exact_alias_and_truth_semantics3957 PASS [ 0.009s] biomcp-cli sources::figshare::tests::construction::parses_aacr_public_article_url_with_file_id3958 PASS [ 0.010s] biomcp-cli sources::figshare::tests::construction::parses_api_article_url3959 PASS [ 0.008s] biomcp-cli sources::figshare::tests::construction::parses_versioned_public_article_url_with_file_path_id3960 PASS [ 0.009s] biomcp-cli sources::figshare::tests::construction::parses_public_article_url_with_file_path_id3961 PASS [ 0.016s] biomcp-cli sources::fda_orphan::tests::parser_validates_only_exactly_admitted_generic_or_trade_rows3962 PASS [ 0.009s] biomcp-cli sources::figshare::tests::construction::production_download_url_validation_allows_figshare_https_hosts3963 PASS [ 0.010s] biomcp-cli sources::figshare::tests::construction::production_download_url_validation_rejects_unsafe_targets3964 PASS [ 0.010s] biomcp-cli sources::figshare::tests::construction::rejects_non_figshare_urls_and_unsafe_names3965 PASS [ 0.009s] biomcp-cli sources::figshare::tests::construction::search_articles_plan_skips_empty_query3966 PASS [ 0.009s] biomcp-cli sources::figshare::tests::parsing::article_error_sanitizes_html_body3967 PASS [ 0.010s] biomcp-cli sources::figshare::tests::construction::search_articles_plan_uses_expected_post_body3968 PASS [ 0.217s] biomcp-cli sources::clingen_cspec::tests::construction::cspec_request_deadline_covers_headers_and_body_with_safe_attribution3969 PASS [ 0.009s] biomcp-cli sources::figshare::tests::parsing::article_response_normalizes_files_and_license3970 PASS [ 0.008s] biomcp-cli sources::figshare::tests::parsing::download_accepted_response_requests_retry_before_limit3971 PASS [ 0.008s] biomcp-cli sources::figshare::tests::parsing::download_error_sanitizes_html_body3972 PASS [ 0.008s] biomcp-cli sources::figshare::tests::parsing::download_errors_after_repeated_accepted_responses3973 PASS [ 0.008s] biomcp-cli sources::figshare::tests::parsing::download_response_returns_bytes_for_success3974 PASS [ 0.010s] biomcp-cli sources::figshare::tests::parsing::search_response_normalizes_rows3975 PASS [ 0.013s] biomcp-cli sources::figshare::tests::parsing::download_response_rejects_oversized_file_bytes3976 PASS [ 5.164s] biomcp-cli entities::drug::test_support::label_fetch_failures_settle_as_unavailable_outcomes3977 PASS [ 0.009s] biomcp-cli sources::gencc::store::errno_tests::a_regular_file_where_the_generation_belongs_classifies_invalid3978 PASS [ 0.008s] biomcp-cli sources::gencc::store::errno_tests::an_unreadable_generation_directory_retains_like_a_wrong_owner_one3979 PASS [ 0.010s] biomcp-cli sources::gencc::store::errno_tests::deterministic_causes_and_unknown_errnos_map_to_invalid3980 PASS [ 0.009s] biomcp-cli sources::gencc::store::errno_tests::environment_errnos_map_to_unavailable3981 PASS [ 0.009s] biomcp-cli sources::gencc::store::errno_tests::permission_and_stale_handle_errnos_map_to_unavailable3982 PASS [ 0.015s] biomcp-cli sources::gencc::store::errno_tests::a_wrong_mode_directory_classifies_invalid_and_prunes3983 PASS [ 0.053s] biomcp-cli sources::fda_orphan::tests::parser_enforces_encoding_body_shape_and_header_contract3984 PASS [ 4.644s] biomcp-cli entities::gene::gencc::tests::crash_boundaries_preserve_one_complete_namespace_generation3985 PASS [ 0.010s] biomcp-cli sources::gencc::tests::current_version_selection_and_cancellation_fail_closed3986 PASS [ 0.010s] biomcp-cli sources::gencc::tests::endpoint_redirect_and_validator_policy_is_closed3987 PASS [ 0.012s] biomcp-cli sources::gencc::tests::duplicate_comparison_uses_normalized_retained_tuple3988 PASS [ 0.012s] biomcp-cli sources::gencc::tests::exact_header_and_all_classification_pairs_are_closed3989 PASS [ 0.009s] biomcp-cli sources::gencc::tests::freshness_and_retry_boundaries_include_rollback_rules3990 PASS [ 0.013s] biomcp-cli sources::gencc::tests::malformed_classification_version_and_pmid_fail_closed3991 PASS [ 0.011s] biomcp-cli sources::gencc::tests::numeric_date_url_and_pmid_boundaries_are_exact3992 PASS [ 0.010s] biomcp-cli sources::gencc::tests::parser_work_obeys_an_expired_refresh_deadline3993 PASS [ 0.015s] biomcp-cli sources::gencc::tests::raw_field_label_and_link_bounds_apply_before_optional_nulling3994 PASS [ 0.010s] biomcp-cli sources::gencc::tests::receipt_backed_odc1_rows_remain_separate_and_ordered3995 PASS [ 0.105s] biomcp-cli sources::gencc::tests::failed_initial_attempt_is_durably_suppressed_without_body_leakage3996 PASS [ 0.010s] biomcp-cli sources::gencc::tests::release_equivalent_fixture_override_requires_exact_signaled_loopback_origin3997 PASS [ 0.198s] biomcp-cli sources::fda_orphan::tests::parser_accepts_five_hundred_rows_and_rejects_the_next_during_iteration3998 PASS [ 0.009s] biomcp-cli sources::gnomad::tests::construction::gene_constraint_plan_posts_graphql_query_and_symbol3999 PASS [ 0.010s] biomcp-cli sources::gnomad::tests::construction::gene_constraint_plan_rejects_invalid_gene_symbols4000 PASS [ 0.009s] biomcp-cli sources::gnomad::tests::construction::variant_population_plan_pins_gnomad_v4_and_complete_fields4001 PASS [ 0.108s] biomcp-cli sources::gencc::tests::refresh_leader_removes_only_owned_abandoned_temporaries4002 PASS [ 0.009s] biomcp-cli sources::gnomad::tests::construction::variant_population_plan_rejects_blank_or_oversized_ids4003 PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::decode_json_response_maps_http_and_content_type_errors4004 PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::gene_constraint_maps_metrics_and_transcript4005 PASS [ 0.009s] biomcp-cli sources::gnomad::tests::parsing::gene_constraint_propagates_non_not_found_graphql_errors4006 PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::gene_constraint_returns_none_for_gene_not_found4007 PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::gene_constraint_returns_some_with_transcript_when_constraint_is_null4008 PASS [ 0.011s] biomcp-cli sources::gnomad::tests::parsing::recorded_v4_population_has_grpmax_and_discordant_exome_genome_filters4009 PASS [ 0.010s] biomcp-cli sources::gnomad::tests::parsing::variant_population_distinguishes_absence_and_provider_failure4010 PASS [ 0.009s] biomcp-cli sources::gnomad::tests::parsing::variant_population_keeps_exome_genome_faf_flags_and_numeric_frequencies_separate4011 PASS [ 0.010s] biomcp-cli sources::gprofiler::tests::construction::enrich_genes_plan_posts_query_and_limit4012 PASS [ 0.010s] biomcp-cli sources::gprofiler::tests::construction::enrich_genes_plan_rejects_empty_input_and_bad_limits4013 PASS [ 0.009s] biomcp-cli sources::gprofiler::tests::parsing::decode_response_and_map_terms_applies_limit4014 PASS [ 0.009s] biomcp-cli sources::gprofiler::tests::parsing::map_enrich_response_preserves_all_failed_genes_without_terms4015 PASS [ 0.009s] biomcp-cli sources::gprofiler::tests::parsing::map_enrich_response_preserves_failed_genes_and_term_limit4016 PASS [ 0.009s] biomcp-cli sources::gprofiler::tests::parsing::remap_gprofiler_error_maps_transient_statuses_to_source_unavailable4017 PASS [ 0.011s] biomcp-cli sources::gprofiler::tests::parsing::transient_status_parser_recognizes_retryable_statuses4018 PASS [ 0.010s] biomcp-cli sources::gtex::tests::construction::gene_search_plan_rejects_invalid_ensembl_ids4019 PASS [ 0.010s] biomcp-cli sources::gtex::tests::construction::gene_search_plan_sets_gene_id_and_gencode_version4020 PASS [ 0.010s] biomcp-cli sources::gtex::tests::construction::median_expression_plan_sets_versioned_id_and_dataset4021 PASS [ 0.009s] biomcp-cli sources::gtex::tests::parsing::decode_json_response_maps_http_and_content_type_errors4022 PASS [ 0.009s] biomcp-cli sources::gtex::tests::parsing::median_expression_returns_empty_when_gene_search_has_no_match4023 PASS [ 0.010s] biomcp-cli sources::gtex::tests::parsing::median_expression_sorts_and_compacts_to_top_and_low_tissues4024 PASS [ 0.315s] biomcp-cli sources::gencc::cancelling_stalled_headers_and_streamed_body_drops_request_and_store_work4025 PASS [ 0.010s] biomcp-cli sources::gtex::tests::parsing::resolve_versioned_id_returns_first_non_empty_fallback4026 PASS [ 0.318s] biomcp-cli sources::gencc::explicit_sync_lock_deadline_preserves_state_with_and_without_generation4027 PASS [ 0.009s] biomcp-cli sources::gtex::tests::parsing::resolve_versioned_id_uses_gene_search_response4028 PASS [ 0.324s] biomcp-cli sources::gencc::cancelled_publication_settles_and_the_previous_generation_survives4029 PASS [ 0.010s] biomcp-cli sources::gtr::tests::construction::client_from_root_uses_supplied_root_without_env4030 PASS [ 0.012s] biomcp-cli sources::gtr::tests::construction::gtr_missing_files_tracks_required_contract4031 PASS [ 0.010s] biomcp-cli sources::gtr::tests::construction::gtr_sync_error_mentions_recovery_paths4032 PASS [ 0.010s] biomcp-cli sources::gtr::tests::construction::sync_intro_matches_missing_stale_and_force_modes4033 PASS [ 0.011s] biomcp-cli sources::gtr::tests::construction::sync_state_marks_missing_fresh_stale_and_force4034 PASS [ 0.012s] biomcp-cli sources::gtr::tests::parsing::load_index_backfills_test_type_from_condition_gene_when_test_version_omits_it4035 PASS [ 0.012s] biomcp-cli sources::gtr::tests::parsing::load_index_unions_linked_and_inline_genes4036 PASS [ 0.010s] biomcp-cli sources::gtr::tests::parsing::merged_genes_deduplicates_symbol_colon_description_form4037 PASS [ 0.010s] biomcp-cli sources::gtr::tests::parsing::parse_condition_gene_joins_correctly4038 PASS [ 0.012s] biomcp-cli sources::gtr::tests::parsing::parse_test_version_accepts_live_header_without_test_type4039 PASS [ 0.010s] biomcp-cli sources::gtr::tests::parsing::parse_test_version_filters_to_current_only4040 PASS [ 0.008s] biomcp-cli sources::gtr::tests::parsing::validate_condition_gene_rejects_missing_header4041 PASS [ 0.013s] biomcp-cli sources::gtr::tests::parsing::production_budgets_and_small_exact_boundaries_are_enforced4042 PASS [ 0.010s] biomcp-cli sources::gtr::tests::parsing::validate_test_version_rejects_missing_header4043 PASS [ 0.010s] biomcp-cli sources::gwas::tests::construction::associations_by_rsid_plan_sets_path_projection_and_limit4044 PASS [ 0.012s] biomcp-cli sources::gtr::tests::parsing::write_validated_pair_preserves_existing_files_when_validation_fails4045 PASS [ 0.008s] biomcp-cli sources::gwas::tests::construction::plans_reject_invalid_inputs4046 PASS [ 0.009s] biomcp-cli sources::gwas::tests::construction::search_plans_set_expected_paths_and_queries4047 PASS [ 0.352s] biomcp-cli sources::gencc::tests::bootstrap_and_store_lock_waits_are_bounded_by_the_call_deadline4048 PASS [ 0.011s] biomcp-cli sources::gwas::tests::day_cache::gwas_requests_carry_the_day_cache_mode_on_the_middleware_builder4049 PASS [ 0.069s] biomcp-cli sources::gtr::tests::parsing::write_validated_pair_rolls_back_first_file_when_second_write_fails4050 PASS [ 0.085s] biomcp-cli sources::gwas::tests::day_cache::a_repeat_gwas_search_inside_a_day_makes_no_request4051 PASS [ 0.010s] biomcp-cli sources::gwas::tests::parsing::associations_by_study_fallback_parse_path_can_read_fallback_response4052 PASS [ 0.078s] biomcp-cli sources::gwas::tests::day_cache::infinite_cache_mode_still_serves_the_aged_gwas_answer4053 PASS [ 11.816s] biomcp-cli cli::stale_json_note_tests::a_stale_clingen_prefetch_note_reaches_the_gene_card4054 PASS [ 0.010s] biomcp-cli sources::gwas::tests::parsing::associations_response_parses_rows4055 PASS [ 0.010s] biomcp-cli sources::gwas::tests::parsing::de_opt_f64_accepts_string_numbers4056 PASS [ 0.011s] biomcp-cli sources::gwas::tests::parsing::decode_json_optional_returns_none_on_not_found4057 PASS [ 0.010s] biomcp-cli sources::gwas::tests::parsing::transient_http_failures_remap_to_source_unavailable4058 PASS [ 0.012s] biomcp-cli sources::gwas::tests::parsing::decode_failures_remap_to_source_unavailable4059 PASS [ 1.877s] biomcp-cli mcp::shell::tests::mcp_who_region_search_error_carries_no_local_data_path4060 PASS [ 0.115s] biomcp-cli sources::gwas::tests::day_cache::cache_mode_off_never_serves_the_stored_gwas_answer4061 PASS [ 0.011s] biomcp-cli sources::gwas::tests::parsing::v2_association_search_response_keeps_rows_and_provider_total4062 PASS [ 0.010s] biomcp-cli sources::hpa::tests::construction::cell_line_rna_plan_rejects_an_unknown_group_and_lists_the_names4063 PASS [ 0.009s] biomcp-cli sources::hpa::tests::construction::cell_line_rna_plan_targets_the_search_download_endpoint4064 PASS [ 0.013s] biomcp-cli sources::gwas::tests::retired_endpoint::gone_by_rsid_endpoint_degrades_with_the_retirement_note4065 PASS [ 0.013s] biomcp-cli sources::gwas::tests::retired_endpoint::not_found_by_rsid_endpoint_means_no_associations4066 PASS [ 0.008s] biomcp-cli sources::hpa::tests::construction::protein_data_plan_normalizes_ensembl_id_before_request4067 PASS [ 0.010s] biomcp-cli sources::hpa::tests::construction::protein_data_plan_rejects_invalid_ensembl_id4068 PASS [ 1.818s] biomcp-cli mcp::shell::typed_get_tests::clinvar_override_is_consistent_across_request_modes_and_mcp_surfaces4069 PASS [ 0.009s] biomcp-cli sources::hpa::tests::parsing::decode_protein_data_xml_returns_none_for_not_found4070 PASS [ 0.010s] biomcp-cli sources::hpa::tests::parsing::decode_protein_data_xml_accepts_xml_and_rejects_html4071 PASS [ 0.011s] biomcp-cli sources::hpa::tests::parsing::parse_gene_hpa_handles_protein_atlas_wrapper_element4072 PASS [ 0.009s] biomcp-cli sources::hpa::tests::parsing::parse_gene_hpa_rejects_a_nesting_bomb4073 PASS [ 0.008s] biomcp-cli sources::hpa::tests::parsing::parse_gene_hpa_uses_only_top_level_canonical_blocks4074 PASS [ 0.009s] biomcp-cli sources::hpo::tests::construction::search_term_ids_plan_builds_query_and_skips_empty_query4075 PASS [ 0.009s] biomcp-cli sources::hpo::tests::construction::normalize_hpo_id_accepts_standard_forms4076 PASS [ 0.010s] biomcp-cli sources::hpo::tests::construction::normalize_term_ids_dedupes_sorts_and_limits4077 PASS [ 0.477s] biomcp-cli sources::gencc::tests::generation_cleanup_prunes_a_wrong_mode_generation_directory4078 PASS [ 0.009s] biomcp-cli sources::hpo::tests::construction::term_plan_builds_normalized_term_path4079 PASS [ 3.185s] biomcp-cli entities::trial::search::eligibility::keep_paths::a_failed_detail_fetch_keeps_the_study_and_reports_it4080 PASS [ 0.009s] biomcp-cli sources::hpo::tests::construction::term_plan_rejects_invalid_id4081 PASS [ 0.152s] biomcp-cli sources::gwas::tests::day_cache::a_stored_body_that_fails_to_decode_is_replaced_by_a_fresh_fetch4082 PASS [ 0.011s] biomcp-cli sources::hpo::tests::parsing::decode_json_response_maps_not_found_and_http_errors4083 PASS [ 0.010s] biomcp-cli sources::hpo::tests::parsing::decode_json_response_maps_term_response4084 PASS [ 0.009s] biomcp-cli sources::hpo::tests::parsing::decode_json_response_rejects_non_json_content_type4085 PASS [ 0.010s] biomcp-cli sources::hpo::tests::parsing::decode_search_term_ids_maps_search_results4086 PASS [ 0.010s] biomcp-cli sources::hpo::tests::parsing::decoded_search_rows_preserve_hpo_labels_and_provider_order4087 PASS [ 0.010s] biomcp-cli sources::hpo::tests::parsing::search_envelope_requires_an_array_terms_field4088 PASS [ 0.010s] biomcp-cli sources::interpro::tests::construction::domains_plan_rejects_empty_accession_and_clamps_limit4089 PASS [ 0.010s] biomcp-cli sources::interpro::tests::construction::domains_plan_requests_expected_endpoint_and_page_size4090 PASS [ 0.008s] biomcp-cli sources::interpro::tests::parsing::decode_domains_response_maps_rows_and_skips_blank_accessions4091 PASS [ 0.008s] biomcp-cli sources::kegg::tests::construction::search_pathways_segments_build_find_pathway_request4092 PASS [ 0.009s] biomcp-cli sources::kegg::tests::construction::get_pathway_segments_build_get_request_and_reject_empty_id4093 PASS [ 0.010s] biomcp-cli sources::kegg::tests::construction::search_pathways_segments_rejects_empty_query4094 PASS [ 0.009s] biomcp-cli sources::kegg::tests::parsing::parse_pathway_record_extracts_summary_and_genes4095 PASS [ 0.010s] biomcp-cli sources::kegg::tests::parsing::decode_text_response_maps_status_and_utf8_errors4096 PASS [ 0.009s] biomcp-cli sources::kegg::tests::parsing::parse_search_response_dedupes_normalized_and_explicit_human_id4097 PASS [ 0.010s] biomcp-cli sources::kegg::tests::parsing::parse_search_response_keeps_human_rows_only4098 PASS [ 0.010s] biomcp-cli sources::kegg::tests::parsing::parse_search_response_normalizes_bare_reference_map_to_human4099 PASS [ 0.116s] biomcp-cli sources::gwas::tests::day_cache::no_cache_flag_never_serves_the_stored_gwas_answer4100 PASS [ 0.010s] biomcp-cli sources::litsense2::tests::construction::legacy_request_plan_keeps_article_contract_shape4101 PASS [ 0.500s] biomcp-cli sources::gencc::tests::initial_fresh_and_conditional_304_lifecycle_uses_one_get4102 PASS [ 0.010s] biomcp-cli sources::litsense2::tests::construction::pubmed_hydration_contract_still_builds_esummary_plan4103 PASS [ 0.178s] biomcp-cli sources::gwas::tests::day_cache::a_gwas_answer_a_day_old_is_refetched4104 PASS [ 0.008s] biomcp-cli sources::litsense2::tests::construction::search_plan_sets_passage_path4105 PASS [ 0.011s] biomcp-cli sources::litsense2::tests::construction::search_plan_rejects_bad_path4106 PASS [ 0.010s] biomcp-cli sources::litsense2::tests::construction::search_plan_rejects_empty_query4107 PASS [ 0.009s] biomcp-cli sources::litsense2::tests::construction::search_plan_sets_sentence_path_and_query4108 PASS [ 0.010s] biomcp-cli sources::litsense2::tests::parsing::decode_json_maps_http_error_status_with_excerpt4109 PASS [ 0.010s] biomcp-cli sources::litsense2::tests::parsing::decode_json_rejects_non_json_content_type4110 PASS [ 0.008s] biomcp-cli sources::litvar::tests::construction::publications_plan_percent_encodes_the_variant_id4111 PASS [ 0.011s] biomcp-cli sources::litsense2::tests::parsing::parses_sentence_response_from_real_fixture4112 PASS [ 0.010s] biomcp-cli sources::litvar::tests::construction::publications_plan_encodes_the_non_rsid_variant_id_shape4113 PASS [ 0.013s] biomcp-cli sources::litsense2::tests::parsing::paragraph_shape_tolerates_null_annotations_and_trimmed_optionals4114 PASS [ 0.012s] biomcp-cli sources::litvar::tests::construction::autocomplete_plan_rejects_empty_and_oversized_queries4115 PASS [ 0.011s] biomcp-cli sources::litvar::tests::construction::autocomplete_plan_sets_query_path_and_parameter4116 PASS [ 0.008s] biomcp-cli sources::litvar::tests::construction::publications_plan_rejects_an_empty_variant_id4117 PASS [ 0.010s] biomcp-cli sources::litvar::tests::parsing::an_empty_publications_reply_is_a_complete_answer4118 PASS [ 0.008s] biomcp-cli sources::litvar::tests::parsing::an_entry_without_an_id_resolves_no_identity4119 PASS [ 0.014s] biomcp-cli sources::litvar::tests::parsing::a_coding_change_entry_keeps_its_change_out_of_the_protein_list4120 PASS [ 0.009s] biomcp-cli sources::litvar::tests::parsing::parses_the_publications_captures4121 PASS [ 0.008s] biomcp-cli sources::medlineplus::tests::construction::search_plan_returns_none_for_empty_query4122 PASS [ 0.010s] biomcp-cli sources::medlineplus::tests::construction::search_plan_uses_expected_query_contract4123 PASS [ 0.010s] biomcp-cli sources::medlineplus::tests::construction::search_plan_uses_retmax_parameter4124 PASS [ 0.013s] biomcp-cli sources::litvar::tests::parsing::parses_the_rsid_autocomplete_capture4125 PASS [ 0.011s] biomcp-cli sources::medlineplus::tests::construction::search_plan_accepts_max_retmax4126 PASS [ 0.011s] biomcp-cli sources::medlineplus::tests::construction::search_plan_rejects_invalid_retmax_bounds4127 PASS [ 0.009s] biomcp-cli sources::medlineplus::tests::parsing::decode_response_body_rejects_html_content_type4128 PASS [ 0.012s] biomcp-cli sources::medlineplus::tests::parsing::decode_response_body_accepts_xml4129 PASS [ 0.009s] biomcp-cli sources::medlineplus::tests::parsing::decode_response_body_rejects_invalid_utf84130 PASS [ 0.019s] biomcp-cli sources::litvar::tests::parsing::parses_the_cdkn2a_autocomplete_capture4131 PASS [ 0.009s] biomcp-cli sources::medlineplus::tests::parsing::decode_response_body_reports_http_errors4132 PASS [ 0.008s] biomcp-cli sources::medlineplus::tests::parsing::parse_topics_rejects_a_nesting_bomb4133 PASS [ 0.008s] biomcp-cli sources::monarch::tests::construction::disease_models_plan_sets_object_genotype_category4134 PASS [ 0.009s] biomcp-cli sources::monarch::tests::construction::direct_phenotype_support_plan_repeats_slice_and_term_ids_in_order4135 PASS [ 0.009s] biomcp-cli sources::monarch::tests::construction::disease_phenotypes_plan_sets_subject_phenotype_category4136 PASS [ 0.010s] biomcp-cli sources::monarch::tests::construction::disease_gene_associations_plan_sets_object_gene_category_and_limit4137 PASS [ 0.009s] biomcp-cli sources::monarch::tests::construction::phenotype_similarity_search_plan_normalizes_terms_and_sets_limit4138 PASS [ 0.014s] biomcp-cli sources::medlineplus::tests::parsing::parse_topics_decodes_inline_markup4139 PASS [ 0.008s] biomcp-cli sources::monarch::tests::construction::plans_reject_invalid_disease_ids_and_empty_hpo_terms4140 PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::decode_json_response_maps_5xx_to_source_unavailable4141 PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::map_gene_associations_maps_rows_and_relationships4142 PASS [ 0.010s] biomcp-cli sources::monarch::tests::parsing::direct_support_presence_and_completeness_fail_closed4143 PASS [ 0.545s] biomcp-cli sources::gencc::tests::expired_open_budget_completes_publish_and_deferred_cleanup4144 PASS [ 0.008s] biomcp-cli sources::monarch::tests::parsing::map_phenotype_associations_keeps_hpo_rows_and_qualifiers4145 PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::map_model_associations_maps_genotype_rows4146 PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::map_phenotype_matches_counts_raw_rows_and_keeps_first_disease_occurrence4147 PASS [ 0.008s] biomcp-cli sources::monarch::tests::parsing::phenotype_decode_failures_remain_typed_errors4148 PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::map_phenotype_matches_maps_scores4149 PASS [ 0.009s] biomcp-cli sources::monarch::tests::parsing::negated_or_filter_violating_rows_never_establish_support_or_absence4150 PASS [ 0.008s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_maps_html_response_to_service_error4151 PASS [ 0.009s] biomcp-cli sources::mutalyzer::tests::construction::normalize_request_plan_percent_encodes_path_segments4152 PASS [ 0.010s] biomcp-cli sources::mutalyzer::tests::construction::normalize_request_plan_encodes_transcript_path4153 PASS [ 0.008s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_maps_provider_invalid_input4154 PASS [ 0.547s] biomcp-cli sources::gencc::tests::generation_cleanup_retains_an_actively_leased_old_snapshot4155 PASS [ 0.010s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_maps_not_found_and_http_errors4156 PASS [ 0.008s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_empty_query4157 PASS [ 0.008s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_parses_success_and_warnings4158 PASS [ 0.010s] biomcp-cli sources::mutalyzer::tests::parsing::normalize_response_maps_success_status_error_payload_to_invalid_input4159 PASS [ 0.008s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_offset_at_biothings_window4160 PASS [ 0.009s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_limit_out_of_range4161 PASS [ 0.010s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_offset_limit_window_overflow4162 PASS [ 0.010s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_rejects_overlong_query4163 PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::decode_json_maps_http_error_status_with_excerpt4164 PASS [ 0.010s] biomcp-cli sources::mychem::tests::parsing::chebi_name_round_trips4165 PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::decode_json_rejects_non_json_content_type4166 PASS [ 0.011s] biomcp-cli sources::mychem::tests::construction::query_with_fields_plan_sets_path_and_core_query_params4167 PASS [ 0.011s] biomcp-cli sources::mychem::tests::parsing::atc_classifications_support_string_and_list4168 PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::drugbank_interactions_support_object_and_list4169 PASS [ 0.010s] biomcp-cli sources::mychem::tests::parsing::drugcentral_approval_supports_object_and_list4170 PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::parses_query_response_from_real_fixture4171 PASS [ 0.010s] biomcp-cli sources::mychem::tests::parsing::pharm_class_supports_string_and_map4172 PASS [ 0.009s] biomcp-cli sources::mychem::tests::parsing::unii_supports_object_and_list4173 PASS [ 0.009s] biomcp-cli sources::mydisease::tests::construction::get_plan_rejects_path_query_separators_before_network4174 PASS [ 0.008s] biomcp-cli sources::mydisease::tests::construction::get_plan_sets_path_and_fields4175 PASS [ 0.010s] biomcp-cli sources::mydisease::tests::construction::legacy_plan_helpers_keep_entity_tests_stable4176 PASS [ 0.008s] biomcp-cli sources::mydisease::tests::construction::query_plan_retrieves_exact_synonym_leaf_fields_for_abbreviations4177 PASS [ 0.008s] biomcp-cli sources::mydisease::tests::construction::query_plan_builds_id_lookup_shape4178 PASS [ 0.010s] biomcp-cli sources::mydisease::tests::construction::request_plans_preserve_validation_before_network4179 PASS [ 0.010s] biomcp-cli sources::mydisease::tests::construction::query_plan_sets_search_shape4180 PASS [ 0.009s] biomcp-cli sources::mydisease::tests::parsing::decode_get_hit_maps_not_found_status4181 PASS [ 0.010s] biomcp-cli sources::mydisease::tests::construction::xref_plan_builds_crosswalk_shapes4182 PASS [ 0.010s] biomcp-cli sources::mydisease::tests::parsing::decode_json_maps_http_error_status_with_excerpt4183 PASS [ 0.010s] biomcp-cli sources::mydisease::tests::parsing::hpo_fields_deserialize_from_hit4184 PASS [ 0.009s] biomcp-cli sources::mydisease::tests::parsing::parses_query_response_from_real_fixture4185 PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::batch_symbols_plan_builds_post_form_preserving_input_order4186 PASS [ 0.011s] biomcp-cli sources::mydisease::tests::parsing::parses_get_response_from_real_fixture4187 PASS [ 0.009s] biomcp-cli sources::mygene::tests::construction::batch_symbols_plan_rejects_empty_input4188 PASS [ 0.008s] biomcp-cli sources::mygene::tests::construction::get_plan_rejects_empty_symbol4189 PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::batch_symbols_plan_rejects_oversized_batch4190 PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::get_plan_default_uses_minimal_fields_quoted_symbol_and_size_one4191 PASS [ 0.007s] biomcp-cli sources::mygene::tests::construction::get_plan_rejects_invalid_symbol_characters4192 PASS [ 0.008s] biomcp-cli sources::mygene::tests::construction::get_plan_rejects_overlong_symbol4193 PASS [ 0.009s] biomcp-cli sources::mygene::tests::construction::get_plan_with_transcripts_requests_transcript_and_protein_fields4194 PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::search_plan_adds_chr_filter_only_when_non_empty4195 PASS [ 0.009s] biomcp-cli sources::mygene::tests::construction::search_plan_rejects_offset_plus_limit_overflow4196 PASS [ 0.009s] biomcp-cli sources::mygene::tests::construction::search_plan_sets_path_and_core_query_params4197 PASS [ 0.467s] biomcp-cli sources::gencc::tests::transient_cleanup_classification_retains_generations4198 PASS [ 0.010s] biomcp-cli sources::mygene::tests::construction::search_plan_rejects_offset_at_or_above_window4199 PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::decode_json_maps_http_error_status_with_excerpt4200 PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::decode_json_rejects_non_json_content_type4201 PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::dedupe_symbols_dedupes_repeated_ids_keeping_first_position4202 PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::dedupe_symbols_maps_real_batch_in_input_order4203 PASS [ 0.008s] biomcp-cli sources::mygene::tests::parsing::extract_uniprot_returns_none_for_empty_object4204 PASS [ 0.009s] biomcp-cli sources::mygene::tests::parsing::extract_uniprot_prefers_swiss_prot_over_trembl_synthetic4205 PASS [ 0.011s] biomcp-cli sources::mygene::tests::parsing::extract_uniprot_prefers_swiss_prot_from_real_fixture4206 PASS [ 0.010s] biomcp-cli sources::mygene::tests::parsing::parses_get_response_fields_from_real_fixture4207 PASS [ 0.010s] biomcp-cli sources::mygene::tests::parsing::hgnc_wire_union_normalizes_and_rejects_malformed_values4208 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::consequence_filter_accepts_shorthand_and_aliases_and_rejects_unknown_and_empty4209 PASS [ 0.010s] biomcp-cli sources::mygene::tests::parsing::parses_search_response_from_real_fixture4210 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::civic_pubmed_ids_accepts_only_complete_canonical_pubmed_citations4211 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::field_lists_request_snpeff_feature_type_in_get_and_search4212 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::get_plan_rejects_overlong_id4213 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::get_plan_serializes_explicit_genome_build4214 PASS [ 0.012s] biomcp-cli sources::mygene::tests::parsing::symbol_map_parses_recorded_batch_and_drops_unrequested_keys4215 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::get_plan_builds_variant_path_with_get_fields4216 PASS [ 0.008s] biomcp-cli sources::myvariant::tests::construction::impact_filter_uppercases_and_rejects_unknown_and_empty4217 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::get_plan_trims_and_rejects_empty_id4218 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::population_filter_lowercases_and_rejects_unknown_and_empty4219 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::query_plan_matches_captured_variant_identity_requests4220 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::query_plan_rejects_offset_at_window4221 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::query_plan_rejects_offset_plus_limit_overflow4222 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::query_plan_trims_query_and_rejects_empty4223 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_builds_exact_hgvsc_clause_and_prefixes_c4224 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::query_plan_sets_path_and_core_query_params4225 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_consequence_clause_uses_snpeff_effect_for_every_supported_term4226 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_gerp_min_clause4227 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::review_status_filter_maps_stars_and_aliases_and_rejects_unknown_and_empty4228 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_builds_gene_and_hgvsp_clauses_joined_with_and4229 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_builds_gene_residue_alias_clause4230 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_impact_clause_uppercases4231 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_keeps_already_prefixed_hgvsc4232 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_lof_has_missing_and_therapy_clauses_compose4233 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_maps_field_aliases_for_presence_and_absence4234 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_lowercases_rsid_clause4235 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_matches_captured_braf_filter_requests4236 PASS [ 0.008s] biomcp-cli sources::myvariant::tests::construction::search_plan_max_frequency_without_population_uses_global_af4237 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_max_frequency_with_population_scopes_to_population_af4238 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_protein_alias_requires_gene4239 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_prefixes_hgvsp_with_p_when_missing4240 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_invalid_consequence4241 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_filters_that_require_a_missing_field4242 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_min_cadd_clause4243 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_invalid_gene_symbol_characters4244 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_invalid_presence_and_absence_fields4245 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_negative_min_cadd4246 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_invalid_review_status4247 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_non_finite_min_cadd4248 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_non_finite_gerp_min4249 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_offset_at_window4250 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_out_of_range_max_frequency4251 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_when_no_filters_present4252 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_offset_plus_limit_overflow4253 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::construction::search_plan_rejects_out_of_range_revel_min4254 PASS [ 0.008s] biomcp-cli sources::myvariant::tests::construction::search_plan_significance_clause_uses_canonical_value4255 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_review_status_clause_quotes_provider_phrase_for_every_alias4256 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::construction::search_plan_tumor_site_and_condition_clauses4257 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::significance_filter_accepts_aliases_and_rejects_unknown_and_empty4258 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_revel_min_clause4259 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_sets_path_size_from_and_fields4260 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::construction::search_plan_uses_bounded_gerp_projection4261 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::clinvar_rcv_deserializes_array4262 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::clinvar_rcv_defaults_to_empty_when_missing4263 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::clinvar_rcv_deserializes_single_object4264 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::gnomad_nested_fields_deserialize4265 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::float_or_vec_first_returns_single_or_head_of_list4266 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::decode_json_maps_http_error_status_with_excerpt4267 PASS [ 0.011s] biomcp-cli sources::myvariant::tests::parsing::decode_json_rejects_html_content_type4268 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::parses_receipted_braf_filter_searches4269 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::parses_receipted_braf_get_hit4270 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_value_passes_object_through4271 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_value_empty_array_is_not_found4272 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::parses_receipted_variant_identity_searches4273 PASS [ 0.010s] biomcp-cli sources::myvariant::tests::parsing::parses_search_response_total_and_hits_from_real_fixture4274 PASS [ 0.013s] biomcp-cli sources::myvariant::tests::parsing::parses_get_hit_nested_fields_from_real_fixture4275 PASS [ 0.008s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_value_takes_first_array_element4276 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_value_scalar_is_api_error4277 PASS [ 0.008s] biomcp-cli sources::myvariant::tests::parsing::select_get_hit_values_preserves_object_array_and_empty_shapes4278 PASS [ 0.009s] biomcp-cli sources::myvariant::tests::parsing::snpeff_annotation_projection_isolated_and_bounded4279 PASS [ 0.013s] biomcp-cli sources::myvariant::tests::parsing::snpeff_interaction_rows_are_skipped_and_transcript_rows_kept4280 PASS [ 0.013s] biomcp-cli sources::myvariant::tests::parsing::snpeff_interaction_rows_past_the_bound_drop_the_list4281 PASS [ 0.010s] biomcp-cli sources::ncbi_efetch::clinvar::tests::hsd17b4_returns_current_two_submitter_aggregate_and_both_scvs4282 PASS [ 0.015s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_condition_boundary_is_accepted_and_plus_one_rejected4283 PASS [ 0.010s] biomcp-cli sources::ncbi_efetch::clinvar::tests::parses_domains_current_noncontributing_rows_and_trait_mappings4284 PASS [ 0.010s] biomcp-cli sources::ncbi_efetch::clinvar::tests::record_level_germline_classification_is_absent_when_the_record_has_none4285 PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::clinvar::tests::rejects_hostile_invalid_and_mismatched_documents4286 PASS [ 0.026s] biomcp-cli sources::ncbi_efetch::clinvar::clinvar_render_tests::clinvar_markdown_keeps_vcv_rcv_and_scv_statuses_and_domains_distinct4287 PASS [ 0.027s] biomcp-cli sources::ncbi_efetch::clinvar::tests::cumulative_public_text_budget_accepts_exact_and_rejects_plus_one4288 PASS [ 0.025s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_text_and_list_boundaries_are_enforced_without_partial_records4289 PASS [ 0.017s] biomcp-cli sources::ncbi_efetch::clinvar::tests::parses_record_level_germline_classification_from_recorded_tp53_record4290 PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::clinvar::tests::request_plan_uses_numeric_variation_identity_and_vcv_mode4291 PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::clinvar::tests::response_requires_success_and_xml_content_type4292 PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::clinvar::tests::too_many_requests_is_distinguishable_from_other_http_failures4293 PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::construction::full_text_xml_plan_empty_input_returns_none4294 PASS [ 0.010s] biomcp-cli sources::ncbi_efetch::tests::construction::full_text_xml_plan_adds_api_key_when_configured4295 PASS [ 0.011s] biomcp-cli sources::ncbi_efetch::clinvar::tests::supplied_invalid_numeric_and_contribution_attributes_fail_closed4296 PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::construction::full_text_xml_plan_uses_numeric_pmcid4297 PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::construction::full_text_xml_plan_validates_pmcid_shape4298 PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::parsing::decode_text_maps_http_error_status_with_excerpt4299 PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::construction::normalize_pmcid_accepts_prefixed_and_numeric_values4300 PASS [ 0.009s] biomcp-cli sources::ncbi_efetch::tests::parsing::decode_text_rejects_invalid_utf84301 PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::parsing::normalize_article_xml_extracts_article_from_wrapped_fixture4302 PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::parsing::decode_text_treats_documented_absence_statuses_as_empty4303 PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::parsing::normalize_article_xml_keeps_original_malformed_and_entity_bearing_xml4304 PASS [ 0.008s] biomcp-cli sources::ncbi_efetch::tests::parsing::normalize_article_xml_keeps_unwrapped_xml4305 PASS [ 0.007s] biomcp-cli sources::ncbi_efetch::tests::parsing::normalize_article_xml_returns_none_for_blank_input4306 PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::doi_to_pmcid_plan_builds_lookup_query4307 PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::doi_to_pmcid_plan_validates_shape4308 PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::pmid_to_pmcid_plan_builds_lookup_query4309 PASS [ 0.052s] biomcp-cli sources::ncbi_efetch::clinvar::tests::duplicate_assertion_ids_reject_trait_mapping_amplification4310 PASS [ 0.009s] biomcp-cli sources::ncbi_idconv::tests::construction::pmid_to_pmcid_plan_adds_api_key_when_configured4311 PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::pmid_to_pmcid_plan_empty_input_returns_none4312 PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::construction::pmid_to_pmcid_plan_validates_numeric_input4313 PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::parsing::decode_json_maps_http_error_status_with_excerpt4314 PASS [ 0.008s] biomcp-cli sources::ncbi_idconv::tests::parsing::extract_first_pmcid_returns_none_for_missing_or_blank_value4315 PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::get_plan_executes_the_exact_local_detail_plan_with_one_credential_header4316 PASS [ 0.009s] biomcp-cli sources::ncbi_idconv::tests::parsing::parses_lookup_response_from_real_fixture4317 PASS [ 0.009s] biomcp-cli sources::ncbi_idconv::tests::parsing::extract_first_pmcid_trims_non_empty_value4318 PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_concept_id_disease_maps_to_concept_param4319 PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_current_trial_status_variant4320 PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_includes_interventions_and_biomarkers_when_present4321 PASS [ 0.007s] biomcp-cli sources::nci_cts::tests::construction::search_plan_includes_sites_org_name4322 PASS [ 0.009s] biomcp-cli sources::nci_cts::tests::construction::search_plan_keyword_disease_maps_to_keyword_param4323 PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_sets_method_path_and_api_key_header4324 PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::construction::search_plan_serializes_status_phase_and_geo_contract_params4325 PASS [ 0.009s] biomcp-cli sources::nci_cts::tests::construction::search_plan_skips_blank_phases4326 PASS [ 0.010s] biomcp-cli sources::nci_cts::tests::parsing::decode_json_maps_http_error_for_nci4327 PASS [ 0.010s] biomcp-cli sources::nci_cts::tests::parsing::detail_response_checks_status_before_parsing_and_never_stores_the_body4328 PASS [ 0.009s] biomcp-cli sources::nci_cts::tests::parsing::detail_response_maps_local_failures_without_source_values4329 PASS [ 0.011s] biomcp-cli sources::nci_cts::tests::parsing::detail_response_maps_the_resource_limit_to_narrow_recovery4330 PASS [ 0.007s] biomcp-cli sources::nci_cts::tests::parsing::hits_falls_back_to_trials_when_data_empty4331 PASS [ 0.008s] biomcp-cli sources::nci_cts::tests::parsing::hits_prefers_data_over_trials4332 PASS [ 0.010s] biomcp-cli sources::nci_cts::tests::parsing::detail_response_rejects_identity_and_old_lenient_shapes4333 PASS [ 0.008s] biomcp-cli sources::nih_reporter::tests::construction::exact_phrase_search_text_escapes_quotes_and_backslashes4334 PASS [ 0.009s] biomcp-cli sources::nci_cts::tests::parsing::total_accepts_total_count_alias4335 PASS [ 0.009s] biomcp-cli sources::nih_reporter::tests::construction::funding_plan_builds_approved_post_body4336 PASS [ 0.007s] biomcp-cli sources::nih_reporter::tests::parsing::decode_json_maps_http_error_status_with_excerpt4337 PASS [ 0.009s] biomcp-cli sources::nih_reporter::tests::construction::funding_plan_rejects_empty_query4338 PASS [ 0.009s] biomcp-cli sources::nih_reporter::tests::construction::recent_nih_fiscal_years_roll_over_on_october_boundary4339 PASS [ 0.008s] biomcp-cli sources::nih_reporter::tests::parsing::decode_json_rejects_non_json_content_type4340 PASS [ 0.007s] biomcp-cli sources::nih_reporter::tests::parsing::deduplicate_grants_truncates_to_top_ten_after_sorting4341 PASS [ 0.008s] biomcp-cli sources::nih_reporter::tests::parsing::deduplicate_grants_groups_by_core_project_num_then_project_num4342 PASS [ 0.009s] biomcp-cli sources::nih_reporter::tests::parsing::map_project_year_row_prefers_contact_pi_then_contact_investigator_then_first_pi4343 PASS [ 0.009s] biomcp-cli sources::ols4::tests::construction::search_request_plan_keeps_empty_query_as_no_request4344 PASS [ 0.008s] biomcp-cli sources::ols4::tests::parsing::decode_search_response_maps_docs4345 PASS [ 0.010s] biomcp-cli sources::ols4::tests::construction::search_request_plan_exposes_canonical_query_contract4346 PASS [ 0.010s] biomcp-cli sources::nih_reporter::tests::parsing::parses_funding_response_fixture_and_maps_section4347 PASS [ 0.008s] biomcp-cli sources::ols4::tests::parsing::decode_search_response_maps_http_and_content_type_errors4348 PASS [ 0.008s] biomcp-cli sources::oncokb::tests::construction::annotate_plan_requires_api_key4349 PASS [ 0.008s] biomcp-cli sources::oncokb::tests::construction::annotate_plan_requires_gene_and_alteration4350 PASS [ 12.116s] biomcp-cli cli::stale_json_note_tests::a_stale_article_search_json_states_the_cache_age_in_meta_notes4351 PASS [ 0.008s] biomcp-cli sources::oncokb::tests::construction::protein_change_attempts_try_original_and_prefixed_forms_without_duplicates4352 PASS [ 0.009s] biomcp-cli sources::oncokb::tests::construction::annotate_plan_sets_query_and_auth_header4353 PASS [ 0.009s] biomcp-cli sources::oncokb::tests::parsing::decode_json_response_maps_http_errors_with_excerpt4354 PASS [ 0.009s] biomcp-cli sources::oncokb::tests::parsing::decode_json_response_maps_invalid_json4355 PASS [ 0.009s] biomcp-cli sources::oncokb::tests::parsing::parses_annotation_fixture4356 PASS [ 0.008s] biomcp-cli sources::opencitations::tests::doi_normalization_matches_the_jats_reference_rules4357 PASS [ 0.009s] biomcp-cli sources::opencitations::tests::oci_and_creation_validation_fails_closed4358 PASS [ 0.042s] biomcp-cli sources::nci_cts::tests::parsing::parses_real_search_response_total_and_hits4359 PASS [ 0.115s] biomcp-cli sources::myvariant::tests::parsing::snpeff_long_tail_is_drained_without_projecting_tail_objects_or_strings4360 PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::faers_count_plans_try_exact_fallback4361 PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::escape_query_value_escapes_lucene_special_chars4362 PASS [ 0.010s] biomcp-cli sources::openfda::tests::construction::drug_and_device_plans_set_expected_paths4363 PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::faers_search_plan_sets_query_limit_skip_and_key4364 PASS [ 0.116s] biomcp-cli sources::ncbi_efetch::clinvar::tests::empty_status_child_cannot_bypass_shared_attribute_budget4365 PASS [ 0.008s] biomcp-cli sources::openfda::tests::construction::label_elements_search_plan_scopes_the_identity_field4366 PASS [ 0.008s] biomcp-cli sources::openfda::tests::construction::label_generic_exact_search_plan_matches_the_plain_ingredient_field4367 PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::plans_validate_limits_and_required_values4368 PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::label_search_plan_escapes_drug_name_and_sorts4369 PASS [ 0.009s] biomcp-cli sources::openfda::tests::construction::recall_shortage_and_device_event_plans_sort_latest_first4370 PASS [ 0.126s] biomcp-cli sources::ncbi_efetch::clinvar::tests::many_classification_children_fail_before_shared_text_is_cloned4371 PASS [ 0.009s] biomcp-cli sources::openfda::tests::parsing::count_value_detects_keyword_field_retry4372 PASS [ 0.145s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_rcv_and_scv_boundaries_are_accepted_and_plus_one_rejected4373 PASS [ 0.049s] biomcp-cli sources::opencitations::tests::references_accept_an_empty_list_as_no_known_edge4374 PASS [ 0.009s] biomcp-cli sources::openfda::tests::parsing::decode_json_optional_maps_404_http_and_json_errors4375 PASS [ 0.009s] biomcp-cli sources::openfda::tests::parsing::device_responses_decode_510k_and_pma_rows4376 PASS [ 0.053s] biomcp-cli sources::opencitations::tests::references_request_uses_the_normalized_doi_path4377 PASS [ 0.010s] biomcp-cli sources::openfda::tests::parsing::drugsfda_response_decodes_application_rows4378 PASS [ 0.010s] biomcp-cli sources::openfda::tests::parsing::faers_and_count_responses_decode4379 PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_associated_targets_degrades_when_associated_targets_missing4380 PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_associated_targets_maps_efo_lookup_result4381 PASS [ 0.011s] biomcp-cli sources::opentargets::tests::disease_associated_targets_egfr_lung4382 PASS [ 0.009s] biomcp-cli sources::opentargets::tests::disease_associated_targets_maps_scores4383 PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_genes_plan_builds_graphql_request4384 PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_id_from_search_response_prefers_efo_hit4385 PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_prevalence_maps_frequency_evidence4386 PASS [ 0.010s] biomcp-cli sources::opentargets::tests::disease_prevalence_plan_builds_graphql_request4387 PASS [ 0.068s] biomcp-cli sources::openfda::tests::day_cache::a_repeat_adverse_event_count_inside_a_day_makes_no_request4388 PASS [ 0.008s] biomcp-cli sources::opentargets::tests::drug_sections_maps_osimertinib4389 PASS [ 0.010s] biomcp-cli sources::opentargets::tests::drug_sections_degrades_when_indications_missing4390 PASS [ 0.009s] biomcp-cli sources::opentargets::tests::drug_sections_maps_targets_and_indications4391 PASS [ 0.009s] biomcp-cli sources::opentargets::tests::drug_sections_plan_builds_graphql_request4392 PASS [ 0.070s] biomcp-cli sources::openfda::tests::day_cache::a_repeat_label_search_inside_a_day_makes_no_request4393 PASS [ 0.068s] biomcp-cli sources::openfda::tests::day_cache::infinite_cache_mode_keeps_the_aged_label_warning_and_note4394 PASS [ 0.010s] biomcp-cli sources::opentargets::tests::drug_sections_propagates_graphql_error_message4395 PASS [ 0.011s] biomcp-cli sources::opentargets::tests::search_disease_plan_builds_graphql_request4396 PASS [ 0.011s] biomcp-cli sources::opentargets::tests::normalize_disease_id_handles_known_forms4397 PASS [ 0.010s] biomcp-cli sources::opentargets::tests::search_target_plan_builds_graphql_request4398 PASS [ 0.008s] biomcp-cli sources::opentargets::tests::target_clinical_context_degrades_when_drug_candidates_missing4399 PASS [ 0.096s] biomcp-cli sources::opencitations::tests::references_reject_an_oversize_body4400 PASS [ 0.010s] biomcp-cli sources::opentargets::tests::target_clinical_context_collects_diseases_and_drugs4401 PASS [ 0.009s] biomcp-cli sources::opentargets::tests::target_clinical_context_plan_builds_graphql_request4402 PASS [ 0.008s] biomcp-cli sources::opentargets::tests::target_druggability_context_plan_builds_graphql_request4403 PASS [ 0.008s] biomcp-cli sources::opentargets::tests::target_druggability_context_returns_default_when_target_missing4404 PASS [ 0.009s] biomcp-cli sources::opentargets::tests::target_druggability_context_groups_modalities_and_safety_summary4405 PASS [ 0.009s] biomcp-cli sources::opentargets::tests::target_id_from_search_response_prefers_exact_symbol_match4406 PASS [ 0.010s] biomcp-cli sources::orcid::tests::an_absent_group_key_fails_decoding4407 PASS [ 0.009s] biomcp-cli sources::orcid::tests::closing::a_group_without_summaries_is_a_contract_error4408 PASS [ 0.008s] biomcp-cli sources::orcid::tests::closing::a_present_year_outside_1000_9999_is_a_contract_error4409 PASS [ 0.012s] biomcp-cli sources::orcid::tests::closing::a_declared_oversize_person_body_fails_the_pre_read_check_in_one_get4410 PASS [ 0.012s] biomcp-cli sources::orcid::tests::closing::client_errors_are_never_retried4411 PASS [ 0.010s] biomcp-cli sources::orcid::tests::closing::identifiers_from_excluded_locations_never_reach_the_selected_work4412 PASS [ 0.011s] biomcp-cli sources::orcid::tests::closing::configured_person_read_records_the_bearer_header4413 PASS [ 0.012s] biomcp-cli sources::orcid::tests::closing::not_found_is_a_sanitized_single_get4414 PASS [ 0.013s] biomcp-cli sources::orcid::tests::closing::one_and_sixty_four_summaries_are_the_group_bound_edges4415 PASS [ 0.022s] biomcp-cli sources::orcid::tests::closing::a_streamed_oversize_person_body_fails_once_without_retry4416 PASS [ 0.011s] biomcp-cli sources::orcid::tests::closing::representative_ties_prefer_the_lowest_put_code_then_original_order4417 PASS [ 0.012s] biomcp-cli sources::orcid::tests::closing::rejected_credentials_fail_immediately_without_retry4418 PASS [ 0.011s] biomcp-cli sources::orcid::tests::closing::tokenless_person_read_serves_the_recorded_reply_without_bearer_auth4419 PASS [ 0.112s] biomcp-cli sources::openfda::tests::day_cache::cache_mode_off_never_serves_the_stored_label_answer4420 PASS [ 0.009s] biomcp-cli sources::orcid::tests::closing::works_visibility_accepts_both_spellings_of_public_and_filters_the_rest4421 PASS [ 0.008s] biomcp-cli sources::orcid::tests::content_type_gate_accepts_only_the_two_orcid_media_types4422 PASS [ 0.008s] biomcp-cli sources::orcid::tests::person_name_visibility_accepts_both_spellings_of_public_and_refuses_the_rest4423 PASS [ 0.009s] biomcp-cli sources::orcid::tests::person_path_and_public_name_precedence4424 PASS [ 0.007s] biomcp-cli sources::orcid::tests::request_plans_carry_exact_paths_headers_and_bearer_mode_only4425 PASS [ 0.008s] biomcp-cli sources::orcid::tests::token_classification_matches_the_frozen_three_states4426 PASS [ 0.010s] biomcp-cli sources::orcid::tests::works_root_path_mismatch_fails_the_contract4427 PASS [ 0.010s] biomcp-cli sources::orcid::tests::works_validation_selects_representatives_and_rejects_bad_shapes4428 PASS [ 0.009s] biomcp-cli sources::ordinary_url_policy::tests::confines_redirects_to_the_request_origin4429 PASS [ 0.008s] biomcp-cli sources::ordinary_url_policy::tests::override_origin_requires_valid_http_without_credentials4430 PASS [ 0.009s] biomcp-cli sources::ordinary_url_policy::tests::recognizes_base_and_full_url_provider_overrides4431 PASS [ 0.007s] biomcp-cli sources::pharmacodb::tests::construction::each_filter_sends_only_the_ids_it_names4432 PASS [ 0.040s] biomcp-cli sources::orcid::tests::closing::tokenless_works_read_serves_the_recorded_reply_without_bearer_auth4433 PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::construction::a_blank_lookup_value_fails_before_any_request4434 PASS [ 0.009s] biomcp-cli sources::ordinary_url_policy::tests::requires_public_https_unless_origin_is_explicitly_overridden4435 PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::construction::every_plan_posts_to_the_one_graphql_path4436 PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::construction::lookup_plans_carry_their_one_variable4437 PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::construction::experiments_plans_send_all_true_with_an_id_argument_and_no_name_argument4438 PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::construction::the_counts_projection_asks_for_the_id_and_the_dataset_name_only4439 PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::construction::the_recorded_dataset_list_holds_the_ten_pharmacodb_datasets4440 PASS [ 0.007s] biomcp-cli sources::pharmacodb::tests::construction::the_row_projection_leaves_out_dss2_and_dss34441 PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::limits::the_cap_sits_above_every_measured_pharmacodb_body4442 PASS [ 0.157s] biomcp-cli sources::openfda::tests::day_cache::an_openfda_key_keeps_the_cache_bypassed4443 PASS [ 0.164s] biomcp-cli sources::openfda::tests::day_cache::a_label_answer_a_day_old_is_refetched4444 PASS [ 0.166s] biomcp-cli sources::openfda::tests::day_cache::an_adverse_event_count_a_day_old_is_refetched4445 PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::parsing::an_html_body_served_with_http_200_is_a_provider_error4446 PASS [ 0.010s] biomcp-cli sources::pharmacodb::tests::parsing::a_cell_line_pharmacodb_does_not_hold_is_a_miss_and_not_a_failure4447 PASS [ 0.010s] biomcp-cli sources::pharmacodb::tests::parsing::a_compound_pharmacodb_does_not_hold_is_a_miss_and_not_a_failure4448 PASS [ 0.010s] biomcp-cli sources::pharmacodb::tests::parsing::another_graphql_error_is_a_source_error_naming_the_url_and_the_operation4449 PASS [ 0.008s] biomcp-cli sources::pharmacodb::tests::parsing::the_cell_line_name_fixture_reaches_hl60tb4450 PASS [ 0.030s] biomcp-cli sources::pharmacodb::tests::limits::a_body_over_the_cap_is_refused_while_it_streams4451 PASS [ 0.013s] biomcp-cli sources::pharmacodb::tests::parsing::the_cell_line_counts_fixture_sums_per_dataset_in_name_order4452 PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::parsing::the_cell_line_uid_fixture_carries_the_molm13_record4453 PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::parsing::the_compound_fixture_carries_venetoclax4454 PASS [ 0.009s] biomcp-cli sources::pharmacodb::tests::parsing::the_pair_fixture_carries_both_venetoclax_rows_for_molm134455 PASS [ 0.023s] biomcp-cli sources::pharmacodb::tests::parsing::the_cell_line_row_fixture_keeps_every_row_and_every_null_metric4456 PASS [ 0.016s] biomcp-cli sources::pharmacodb::tests::parsing::the_compound_counts_fixture_sums_the_venetoclax_datasets4457 PASS [ 0.008s] biomcp-cli sources::pharmgkb::tests::construction::annotation_plans_validate_inputs4458 PASS [ 0.112s] biomcp-cli sources::orcid::tests::closing::an_expired_deadline_admits_no_second_attempt_and_paces_the_first4459 PASS [ 0.009s] biomcp-cli sources::pharmgkb::tests::construction::clinpgx_default_and_annotation_queries_follow_the_live_contract4460 PASS [ 0.009s] biomcp-cli sources::pharmgkb::tests::construction::drug_annotation_plans_cover_three_annotation_kinds4461 PASS [ 0.009s] biomcp-cli sources::pharmgkb::tests::parsing::annotation_response_applies_the_local_page_after_mapping4462 PASS [ 0.053s] biomcp-cli sources::pharmacodb::tests::limits::a_body_at_the_cap_still_reads4463 PASS [ 0.008s] biomcp-cli sources::pharmgkb::tests::parsing::annotation_response_maps_ids_titles_levels_and_urls4464 PASS [ 0.010s] biomcp-cli sources::pharmgkb::tests::construction::gene_annotation_plans_normalize_gene_and_properties4465 PASS [ 0.007s] biomcp-cli sources::pharmgkb::tests::parsing::dedupe_and_limit_keeps_unique_annotation_rows4466 PASS [ 0.009s] biomcp-cli sources::pharmgkb::tests::parsing::decode_json_optional_maps_404_http_content_type_and_json_errors4467 PASS [ 0.009s] biomcp-cli sources::pmc_article::tests::bot_challenge_markers_need_both_recorded_title_words4468 PASS [ 0.008s] biomcp-cli sources::pmc_article::tests::linked_http_statuses_fold_to_closed_coverage_outcomes4469 PASS [ 0.007s] biomcp-cli sources::pmc_article::tests::pow_markers_are_case_insensitive4470 PASS [ 0.010s] biomcp-cli sources::pmc_article::tests::exact_provider_routes_match_pmcid_and_preserve_signed_fetch_url4471 PASS [ 0.007s] biomcp-cli sources::pmc_oa::tests::construction::oa_archive_manifest_plan_empty_input_returns_none4472 PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::construction::oa_archive_manifest_plan_lists_versioned_s3_prefix4473 PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::construction::oa_archive_manifest_plan_rejects_overlong_id4474 PASS [ 0.038s] biomcp-cli sources::pmc_article::tests::equal_identity_routes_continue_until_one_returns_bytes4475 PASS [ 0.042s] biomcp-cli sources::pmc_article::tests::declared_binary_html_is_not_returned_as_bytes4476 PASS [ 0.008s] biomcp-cli sources::pmc_oa::tests::parsing::decode_archive_bytes_preserves_success_bytes_and_maps_errors4477 PASS [ 0.042s] biomcp-cli sources::pmc_article::tests::recorded_pow_interstitial_is_not_returned_as_bytes4478 PASS [ 0.010s] biomcp-cli sources::pmc_oa::tests::parsing::decode_text_projects_http_errors_as_package_route_failures4479 PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::direct_buffered_archive_limit_is_sanitized4480 PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::empty_s3_version_listing_is_healthy_package_absence4481 PASS [ 0.032s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_rejects_single_metadata_record_over_limit4482 PASS [ 0.036s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_accepts_exact_member_count_limit4483 PASS [ 0.035s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_rejects_too_many_members4484 PASS [ 0.010s] biomcp-cli sources::pmc_oa::tests::parsing::extract_first_nxml_reads_xml_entry4485 PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::malformed_or_unexpected_manifest_is_failure_not_absence4486 PASS [ 0.008s] biomcp-cli sources::pmc_oa::tests::parsing::parse_archive_manifest_xml_rejects_a_nesting_bomb4487 PASS [ 0.008s] biomcp-cli sources::pmc_oa::tests::parsing::parses_receipted_s3_metadata_to_xml_object4488 PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::parses_s3_version_listing_to_metadata_route4489 PASS [ 0.009s] biomcp-cli sources::pmc_oa::tests::parsing::text_and_fulltext_archive_decoders_reject_invalid_utf84490 PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::consumer_matrix_enumerates_valid_origins_and_shared_rejections4491 PASS [ 0.111s] biomcp-cli sources::pmc_article::tests::rejected_targets_are_precontact4492 PASS [ 0.008s] biomcp-cli sources::provider_url_policy::tests::cspec_fixture_origin_requires_a_pathless_loopback_origin4493 PASS [ 0.174s] biomcp-cli sources::pharmacodb::tests::limits::the_k562_counts_case_parses_and_sums_to_every_row4494 PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::dns_answer_set_is_rejected_if_any_answer_is_forbidden4495 PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::provider_url_consumer_ownership_ratchet_names_every_fetch_site4496 PASS [ 0.008s] biomcp-cli sources::provider_url_policy::tests::provider_vouched_pdf_policy_accepts_publisher_hosts_and_keeps_transport_guards4497 PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_cgnat_range_without_blocking_adjacent_public_addresses4498 PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_encoded_ipv4_literal_hosts_after_url_canonicalization4499 PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_ipv4_compatible_ipv6_with_forbidden_embedded_address4500 PASS [ 0.008s] biomcp-cli sources::provider_url_policy::tests::rejects_loopback_private_link_local_metadata_and_mapped_addresses4501 PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_nat64_with_forbidden_embedded_address4502 PASS [ 0.009s] biomcp-cli sources::provider_url_policy::tests::rejects_scheme_credentials_port_and_ip_literals_without_echoing_url4503 PASS [ 0.142s] biomcp-cli sources::pmc_article::tests::unsafe_redirect_is_rejected_before_redirect_target_contact4504 PASS [ 0.008s] biomcp-cli sources::provider_url_policy::tests::selected_fixture_origin_allows_only_exact_ip_loopback4505 PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::citation_plan_rejects_non_numeric_pmid4506 PASS [ 0.009s] biomcp-cli sources::pubmed::tests::construction::citation_plan_sets_required_query_params_and_api_key4507 PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::esearch_plan_applies_date_range_params4508 PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::esearch_plan_sets_required_query_params_and_api_key4509 PASS [ 0.007s] biomcp-cli sources::pubmed::tests::construction::esearch_plan_validates_term_and_retmax4510 PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::esummary_plan_handles_empty_and_blank_ids4511 PASS [ 0.008s] biomcp-cli sources::pubmed::tests::construction::esummary_plan_sets_ids_and_api_key4512 PASS [ 0.009s] biomcp-cli sources::pubmed::tests::parsing::citation_decoder_accepts_xml_media_types_and_hides_bodies4513 PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::citation_parser_rejects_misses_errors_and_invalid_required_shape4514 PASS [ 0.009s] biomcp-cli sources::pubmed::tests::parsing::citation_request_errors_are_payload_free_and_total4515 PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::citation_without_mesh_is_available_empty4516 PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::decode_json_maps_http_and_content_type_errors4517 PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::esearch_handles_empty_idlist_and_rejects_bad_count4518 PASS [ 0.009s] biomcp-cli sources::pubmed::tests::parsing::esummary_strictly_validates_uids_and_entries4519 PASS [ 0.011s] biomcp-cli sources::pubmed::tests::parsing::parses_a_real_pubmed_citation_capture4520 PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::parses_citation_authors_affiliations_orcid_and_mesh4521 PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::parses_esearch_fixture4522 PASS [ 0.009s] biomcp-cli sources::pubmed::tests::parsing::parses_esummary_fixture_in_requested_order4523 PASS [ 0.008s] biomcp-cli sources::pubmed::tests::parsing::seven_variant_corpus_pubmed_requests_and_decoders_remain_production_exact4524 PASS [ 0.008s] biomcp-cli sources::pubtator::tests::construction::autocomplete_plan_sets_query_and_validates_input4525 PASS [ 0.008s] biomcp-cli sources::pubtator::tests::construction::export_biocjson_plan_sets_pmids_and_optional_api_key4526 PASS [ 0.009s] biomcp-cli sources::pubtator::tests::construction::legacy_request_plans_keep_article_contract_shape4527 PASS [ 0.008s] biomcp-cli sources::pubtator::tests::construction::search_plan_sets_text_paging_sort_and_auth4528 PASS [ 0.008s] biomcp-cli sources::pubtator::tests::construction::search_plan_validates_query_and_page_size4529 PASS [ 0.008s] biomcp-cli sources::pubtator::tests::parsing::decode_json_maps_http_error_status_with_excerpt4530 PASS [ 0.010s] biomcp-cli sources::pubtator::tests::parsing::db_id_rsid_reads_only_the_segment_before_the_marker4531 PASS [ 0.008s] biomcp-cli sources::pubtator::tests::parsing::decode_json_rejects_non_json_content_type4532 PASS [ 0.008s] biomcp-cli sources::pubtator::tests::parsing::parses_autocomplete_response_fixture4533 PASS [ 0.010s] biomcp-cli sources::pubtator::tests::parsing::parses_30738221_capture_with_locations_and_variant_rsids4534 PASS [ 0.011s] biomcp-cli sources::pubtator::tests::parsing::parses_real_export_capture_and_retains_disease_normalized_id4535 PASS [ 0.115s] biomcp-cli sources::provider_url_policy::tests::redirect_target_is_revalidated_before_target_contact4536 PASS [ 0.008s] biomcp-cli sources::pubtator::tests::parsing::parses_search_response_fixture_and_stringifies_numeric_pmid4537 PASS [ 0.010s] biomcp-cli sources::pubtator::tests::parsing::parses_rsid_autocomplete_capture_and_extracts_the_db_id_rsid4538 PASS [ 0.009s] biomcp-cli sources::pubtator::tests::parsing::search_result_trims_empty_string_pmids_to_none4539 PASS [ 0.009s] biomcp-cli sources::quickgo::tests::construction::annotations_plan_rejects_empty_gene_product_id4540 PASS [ 0.008s] biomcp-cli sources::quickgo::tests::construction::annotations_plan_sets_expected_query_params4541 PASS [ 0.008s] biomcp-cli sources::quickgo::tests::construction::terms_plan_sorts_dedupes_and_skips_empty_input4542 PASS [ 0.008s] biomcp-cli sources::quickgo::tests::parsing::decode_annotations_response_maps_results4543 PASS [ 0.008s] biomcp-cli sources::quickgo::tests::parsing::decode_terms_response_maps_term_metadata4544 PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::article_source_urls_keep_their_live_pacing_policies4545 PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::cellosaurus_urls_resolve_to_the_cellosaurus_policy4546 PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::exact_unpaced_origin_skips_waiting_and_state_updates4547 PASS [ 0.009s] biomcp-cli sources::rate_limit::tests::kegg_urls_resolve_to_kegg_policy4548 PASS [ 0.007s] biomcp-cli sources::rate_limit::tests::litsense2_policy_uses_one_second_interval4549 PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::litsense2_urls_resolve_to_litsense2_policy4550 PASS [ 0.007s] biomcp-cli sources::rate_limit::tests::nih_reporter_policy_uses_one_second_interval4551 PASS [ 0.007s] biomcp-cli sources::rate_limit::tests::nih_reporter_urls_resolve_to_nih_reporter_policy4552 PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::pubmed_eutils_interval_uses_key_aware_values4553 PASS [ 0.190s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_skips_unsafe_and_empty_members_but_rejects_oversized_members4554 PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::pubtator_interval_stays_at_three_per_second_with_or_without_the_key4555 PASS [ 0.114s] biomcp-cli sources::pubmed::tests::parsing::citation_parser_enforces_node_and_entity_limits4556 PASS [ 0.009s] biomcp-cli sources::rate_limit::tests::rate_limit_keeps_same_host_prefixes_independent4557 PASS [ 0.007s] biomcp-cli sources::rate_limit::tests::semantic_scholar_interval_uses_key_aware_values4558 PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::rate_limit_uses_longest_matching_prefix4559 PASS [ 0.008s] biomcp-cli sources::rate_limit::tests::unpaced_origin_accepts_only_complete_ip_loopback_origins4560 PASS [ 0.009s] biomcp-cli sources::rate_limit::tests::unpaced_origin_match_requires_exact_scheme_ip_and_effective_port4561 PASS [ 0.616s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_body_boundary_is_accepted_and_plus_one_rejected4562 PASS [ 0.399s] biomcp-cli sources::orcid::tests::closing::ten_thousand_groups_is_the_hard_bound4563 PASS [ 0.008s] biomcp-cli sources::reactome::tests::construction::pathway_plans_build_expected_paths_and_reject_empty_ids4564 PASS [ 0.007s] biomcp-cli sources::reactome::tests::construction::search_pathways_plan_preserves_limit_one_probe4565 PASS [ 0.007s] biomcp-cli sources::reactome::tests::construction::search_pathways_plan_rejects_empty_query4566 PASS [ 0.008s] biomcp-cli sources::reactome::tests::parsing::decode_json_response_maps_http_and_json_errors4567 PASS [ 0.009s] biomcp-cli sources::reactome::tests::construction::search_pathways_plan_sets_query_species_and_page_size4568 PASS [ 0.009s] biomcp-cli sources::reactome::tests::parsing::map_contained_events_maps_display_names4569 PASS [ 0.007s] biomcp-cli sources::seer::tests::construction::site_catalog_plan_fetches_variable_formats4570 PASS [ 0.009s] biomcp-cli sources::reactome::tests::parsing::map_search_response_extracts_entries_and_limits_results4571 PASS [ 0.009s] biomcp-cli sources::reactome::tests::parsing::strip_html_removes_tags_and_extra_spaces4572 PASS [ 0.008s] biomcp-cli sources::seer::tests::construction::survival_plan_sets_site_and_required_filters4573 PASS [ 0.007s] biomcp-cli sources::seer::tests::parsing::body_limit_error_remains_source_unavailable4574 PASS [ 0.011s] biomcp-cli sources::seer::tests::parsing::decode_double_encoded_survival_payload_and_filter_all_ages4575 PASS [ 0.008s] biomcp-cli sources::seer::tests::parsing::decode_json_response_maps_bad_status_and_content_type_to_source_unavailable4576 PASS [ 0.010s] biomcp-cli sources::seer::tests::parsing::rejects_response_when_requested_site_code_is_not_returned4577 PASS [ 0.010s] biomcp-cli sources::seer::tests::parsing::resolve_site_prefers_exact_alias_and_rejects_ambiguous_matches4578 PASS [ 0.009s] biomcp-cli sources::seer::tests::parsing::site_catalog_decodes_live_variable_formats4579 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::auth_mode_reports_keyed_or_shared_pool_without_exposing_key4580 PASS [ 0.007s] biomcp-cli sources::semantic_scholar::tests::construction::author_detail_and_papers_plans_encode_ids_and_preserve_continuation4581 PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_batch_plan_posts_ordered_ids_at_provider_ceiling4582 PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::construction::author_id_dot_segments_are_rejected_before_request_construction4583 PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::construction::author_papers_full_plan_uses_the_frozen_rich_field_list4584 PASS [ 0.016s] biomcp-cli sources::semantic_scholar::tests::construction::author_execution_methods_send_plans_and_decode_typed_responses4585 PASS [ 0.091s] biomcp-cli sources::rate_limit::tests::rate_limit_uses_default_policy_for_unknown_prefix4586 PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_papers_page_validation_accepts_terminal_continuing_and_empty_pages4587 PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_papers_page_validation_fails_closed_for_every_malformed_shape4588 PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_plans_validate_required_input_and_endpoint_boundaries4589 PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::author_search_plan_sets_query_fields_offset_limit_and_auth4590 PASS [ 0.090s] biomcp-cli sources::rate_limit::tests::unpaced_origin_keeps_other_ports_paced4591 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::credential_attachment_requires_canonical_or_explicit_unsafe_fixture_origin4592 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::citation_reference_and_recommendation_plans_set_paths4593 PASS [ 0.091s] biomcp-cli sources::rate_limit::tests::unsignaled_loopback_origin_remains_paced4594 PASS [ 0.011s] biomcp-cli sources::semantic_scholar::tests::construction::legacy_search_request_plan_keeps_article_contract_shape4595 PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::paper_batch_plan_posts_ids_and_fields4596 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::paper_batch_plan_validates_id_count4597 PASS [ 0.121s] biomcp-cli sources::rate_limit::tests::provider_limit_covers_actual_downstream_http_work4598 PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::construction::paper_search_bulk_plan_uses_the_strict_bulk_endpoint4599 PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::paper_detail_plan_sets_encoded_id_fields_and_auth_header4600 PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::construction::paper_search_plan_sets_query_limit_year_and_auth4601 PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::construction::paper_search_plan_validates_query_and_limit4602 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::construction::recommendations_plan_posts_positive_and_negative_ids4603 PASS [ 0.010s] biomcp-cli sources::semantic_scholar::tests::parsing::authenticated_http_error_keeps_status_and_sanitizes_payload4604 PASS [ 0.011s] biomcp-cli sources::semantic_scholar::tests::construction::transport_failures_keep_legacy_api_code_with_source_context4605 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::author_response_types_keep_null_data_explicit_and_map_bad_responses4606 PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::parsing::graph_pagination_distinguishes_required_offset_from_optional_next4607 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::graph_pagination_rejects_non_unsigned_wire_values4608 PASS [ 0.129s] biomcp-cli sources::rate_limit::tests::rate_limit_blocks_second_request_for_same_prefix4609 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_author_batch_fixture_with_positional_unavailable_row4610 PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_author_detail_and_search_fixtures_without_inventing_identity4611 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_author_papers_identifiers_byline_and_continuation4612 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_batch_fixture_with_none_rows4613 PASS [ 0.008s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_graph_and_recommendation_fixtures4614 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_paper_detail_fixture4615 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::parses_search_fixture_and_defaults_null_data4616 PASS [ 0.009s] biomcp-cli sources::semantic_scholar::tests::parsing::shared_pool_429_returns_dedicated_guidance4617 PASS [ 0.011s] biomcp-cli sources::semantic_scholar::tests::parsing::receipted_20516115_graph_captures_keep_provider_identity_and_all_recommendations4618 PASS [ 0.009s] biomcp-cli sources::string::tests::construction::interactions_plan_rejects_empty_identifiers4619 PASS [ 0.009s] biomcp-cli sources::string::tests::construction::interactions_plan_sets_expected_query_params4620 PASS [ 0.008s] biomcp-cli sources::string::tests::parsing::decode_interactions_response_maps_camel_case_fields4621 PASS [ 0.009s] biomcp-cli sources::string::tests::parsing::decode_interactions_response_maps_underscore_fields4622 PASS [ 0.010s] biomcp-cli sources::tests::a_spawned_task_inherits_the_command_note_scope4623 PASS [ 0.010s] biomcp-cli sources::tests::append_stale_serve_notes_to_text_adds_plain_cache_note_lines4624 PASS [ 0.009s] biomcp-cli sources::tests::append_stale_serve_notes_to_text_leaves_bodies_without_notes_alone4625 PASS [ 0.011s] biomcp-cli sources::tests::clingen_runtime::car_outage_does_not_overwrite_erepo_healthy_empty_or_version4626 PASS [ 0.010s] biomcp-cli sources::tests::clingen_runtime::cspec_and_ldh_transport_failures_are_source_labelled_and_do_not_erase_peer_results4627 PASS [ 0.008s] biomcp-cli sources::tests::ensure_json_content_type_accepts_json4628 PASS [ 0.012s] biomcp-cli sources::tests::clingen_runtime::receipt_backed_ldh_captures_reach_the_production_medium_and_direct_clients4629 PASS [ 0.008s] biomcp-cli sources::tests::ensure_json_content_type_allows_non_json_compat_mode4630 PASS [ 0.009s] biomcp-cli sources::tests::ensure_json_content_type_rejects_html4631 PASS [ 0.007s] biomcp-cli sources::tests::parse_cache_mode_returns_no_store_for_off4632 PASS [ 0.009s] biomcp-cli sources::tests::note_stale_cache_serve_ignores_absent_and_malformed_markers4633 PASS [ 0.010s] biomcp-cli sources::tests::note_stale_cache_serve_records_the_age_and_strips_the_header4634 PASS [ 0.009s] biomcp-cli sources::tests::parse_cache_mode_returns_force_cache_for_infinite4635 PASS [ 0.009s] biomcp-cli sources::tests::parse_cache_mode_returns_none_for_default_or_unset4636 PASS [ 0.009s] biomcp-cli sources::tests::parse_cache_mode_returns_none_for_unknown_values4637 PASS [ 0.027s] biomcp-cli sources::tests::build_http_client_migrates_then_clears_pre_limit_legacy_cache4638 PASS [ 0.008s] biomcp-cli sources::tests::parse_retry_after_header_parses_integer_seconds4639 PASS [ 0.032s] biomcp-cli sources::tests::build_http_client_does_not_restore_legacy_cache_after_epoch_and_clear4640 PASS [ 0.010s] biomcp-cli sources::tests::provider_network::cache_security::build_http_client_bypasses_directory_symlink_inside_content_tree4641 PASS [ 0.015s] biomcp-cli sources::tests::provider_network::cache_security::build_http_client_repairs_unrelated_permissive_cache_state4642 PASS [ 0.007s] biomcp-cli sources::tests::provider_network::fda_orphan_cache_modes_and_expiry_are_exact4643 PASS [ 0.011s] biomcp-cli sources::tests::provider_network::contended_maintenance_deadline_publishes_no_partial_client_or_cache_tree4644 PASS [ 0.009s] biomcp-cli sources::tests::provider_network::expired_invocation_cannot_build_a_cache_fallback_client4645 PASS [ 0.035s] biomcp-cli sources::tests::provider_network::cache_security::concurrent_constructor_does_not_wait_for_an_existing_shared_operation4646 PASS [ 0.050s] biomcp-cli sources::tests::provider_network::fda_orphan_form_cache_is_independent_of_prior_candidate_set4647 PASS [ 0.040s] biomcp-cli sources::tests::provider_network::fda_orphan_missing_post_write_metadata_fails_closed4648 PASS [ 0.066s] biomcp-cli sources::tests::provider_network::fda_orphan_infinite_miss_stores_and_failed_http_does_not_cache4649 PASS [ 0.084s] biomcp-cli sources::tests::provider_network::fda_orphan_caps_forms_concurrency_and_off_bypasses_cache4650 PASS [ 0.035s] biomcp-cli sources::tests::provider_network::lazy_cache_initialization_settles_before_deadline_releases_its_locks4651 PASS [ 0.057s] biomcp-cli sources::tests::provider_network::fda_orphan_normal_cache_is_fresh_then_refreshes_when_expired4652 PASS [ 0.047s] biomcp-cli sources::tests::provider_network::legacy_cache_upgrade_waits_for_local_source_lease4653 PASS [ 0.140s] biomcp-cli sources::tests::provider_network::a_later_invocation_retries_cache_setup_after_a_failed_expired_invocation4654 PASS [ 0.140s] biomcp-cli sources::tests::provider_network::cached_client_fresh_hit_and_request_no_store_bypass_writes4655 PASS [ 0.044s] biomcp-cli sources::tests::provider_network::middleware_put_settles_after_publication_before_releasing_key_lock4656 PASS [ 0.035s] biomcp-cli sources::tests::provider_network::parallel_sources_share_one_cache_construction_and_epoch_acquisition4657 PASS [ 0.154s] biomcp-cli sources::tests::provider_network::fda_orphan_contended_key_lock_cancels_without_a_late_write4658 PASS [ 0.011s] biomcp-cli sources::tests::read_limited_source_body_classifies_chunk_failures_as_retryable4659 PASS [ 0.047s] biomcp-cli sources::tests::provider_network::provider_deadline_waits_for_post_publish_cache_finalization4660 PASS [ 0.023s] biomcp-cli sources::tests::provider_network::startup_cost::the_tree_secure_marker_walks_only_until_it_exists4661 PASS [ 0.010s] biomcp-cli sources::tests::read_limited_source_body_with_limit_accepts_body_within_limit4662 PASS [ 0.010s] biomcp-cli sources::tests::read_limited_source_body_with_limit_rejects_oversized_body4663 PASS [ 0.058s] biomcp-cli sources::tests::provider_network::startup_cost::cache_mode_off_touches_no_cache_file4664 PASS [ 0.013s] biomcp-cli sources::tests::request_plan_transport::request_plan_failures_keep_safe_source_context4665 PASS [ 0.014s] biomcp-cli sources::tests::request_plan_transport::request_plan_preserves_each_supported_post_body4666 PASS [ 0.012s] biomcp-cli sources::tests::request_plan_transport::request_plan_preserves_path_query_headers_and_success_bytes4667 PASS [ 0.009s] biomcp-cli sources::tests::resolve_cache_mode_defaults_to_none4668 PASS [ 0.010s] biomcp-cli sources::tests::resolve_cache_mode_prioritizes_auth_over_env4669 PASS [ 0.009s] biomcp-cli sources::tests::resolve_cache_mode_prioritizes_no_cache_over_env4670 PASS [ 0.008s] biomcp-cli sources::tests::resolve_cache_mode_uses_env_when_no_overrides4671 PASS [ 0.009s] biomcp-cli sources::tests::response_body_is_html_detects_html_from_content_type4672 PASS [ 0.009s] biomcp-cli sources::tests::response_body_is_html_detects_html_from_doctype_without_header4673 PASS [ 0.008s] biomcp-cli sources::tests::retry_send_with_sleep_retries_on_too_many_requests4674 PASS [ 0.012s] biomcp-cli sources::tests::retry_sleep_can_be_cancelled4675 PASS [ 0.008s] biomcp-cli sources::tests::retry_sleep_off_returns_no_sleep_for_every_attempt4676 PASS [ 0.008s] biomcp-cli sources::tests::stale_serve_age_wording_uses_hours_only_past_an_hour4677 PASS [ 0.010s] biomcp-cli sources::tests::stale_serve_notes_do_not_leak_between_scopes4678 PASS [ 0.009s] biomcp-cli sources::tests::summarize_http_error_body_preserves_json_excerpt4679 PASS [ 0.009s] biomcp-cli sources::tests::summarize_http_error_body_sanitizes_html4680 PASS [ 0.008s] biomcp-cli sources::tests::the_test_cache_mode_guard_applies_and_restores_the_mode4681 PASS [ 0.009s] biomcp-cli sources::tests::ticket_403_retry_after_extreme_values_are_capped4682 PASS [ 0.008s] biomcp-cli sources::tests::ticket_403_retry_after_malformed_values_fall_back_to_backoff4683 PASS [ 0.009s] biomcp-cli sources::tests::ticket_403_retry_after_normal_floor_is_honored4684 PASS [ 0.010s] biomcp-cli sources::tests::ticket_403_retry_send_uses_the_shared_retry_sleep_budget4685 PASS [ 0.009s] biomcp-cli sources::tests::validate_biothings_result_window_accepts_bounds4686 PASS [ 0.009s] biomcp-cli sources::tests::validate_biothings_result_window_rejects_offset_at_window4687 PASS [ 0.010s] biomcp-cli sources::tests::validate_biothings_result_window_rejects_window_overflow4688 PASS [ 0.009s] biomcp-cli sources::trust_failure_tests::handle_returns_no_retry_for_a_trust_failure_error4689 PASS [ 0.021s] biomcp-cli sources::tests::variant_article_deadlines_are_task_local_and_do_not_leak4690 PASS [ 0.009s] biomcp-cli sources::trust_failure_tests::plain_send_retry_stops_at_a_trust_failure4691 PASS [ 0.009s] biomcp-cli sources::trust_failure_tests::trust_markers_at_any_depth_of_the_error_chain_count4692 PASS [ 0.008s] biomcp-cli sources::umls::tests::construction::atoms_plan_sets_cui_auth_page_size_and_language4693 PASS [ 0.031s] biomcp-cli sources::tests::variant_article_provider_admission_is_capped_and_deadline_cancellable4694 PASS [ 0.009s] biomcp-cli sources::umls::tests::construction::search_plan_sets_query_auth_and_page_size4695 PASS [ 0.008s] biomcp-cli sources::umls::tests::construction::search_plan_skips_empty_query4696 PASS [ 0.007s] biomcp-cli sources::umls::tests::parsing::decode_json_response_maps_http_and_content_type_errors4697 PASS [ 0.009s] biomcp-cli sources::umls::tests::parsing::decode_search_response_filters_none_hits_and_concepts_keep_xrefs4698 PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::get_record_plan_builds_accession_path_and_json_accept_header4699 PASS [ 0.009s] biomcp-cli sources::umls::tests::parsing::map_atoms_keeps_english_xrefs_and_dedupes_source_id_pairs4700 PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::get_record_plan_rejects_blank_accession4701 PASS [ 0.010s] biomcp-cli sources::uniprot::tests::construction::normalize_next_page_token_accepts_cursor_url4702 PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::search_plan_clamps_limit_and_uses_cursor_token_when_present4703 PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::search_plan_rejects_blank_query_and_bad_next_page_tokens4704 PASS [ 0.807s] biomcp-cli sources::pharmacodb::tests::limits::the_largest_measured_row_body_parses_and_returns_its_rows4705 PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::search_plan_uses_absolute_next_page_url_without_rewriting_query4706 PASS [ 0.009s] biomcp-cli sources::uniprot::tests::construction::search_plan_sets_expected_query_params4707 PASS [ 0.007s] biomcp-cli sources::uniprot::tests::parsing::alternative_protein_names_flatten_short_and_full_names_in_source_order4708 PASS [ 0.007s] biomcp-cli sources::uniprot::tests::parsing::alternative_protein_names_return_empty_when_alternative_names_are_missing4709 PASS [ 0.009s] biomcp-cli sources::uniprot::tests::parsing::alternative_protein_names_trim_deduplicate_and_skip_recommended_name4710 PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::decode_json_response_accepts_gzip_payload4711 PASS [ 0.009s] biomcp-cli sources::uniprot::tests::parsing::decode_json_response_maps_http_and_json_errors4712 PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::decode_search_response_reads_results_total_and_next_page_link4713 PASS [ 0.009s] biomcp-cli sources::uniprot::tests::parsing::protein_isoforms_fall_back_to_name_when_synonyms_are_missing4714 PASS [ 0.009s] biomcp-cli sources::uniprot::tests::parsing::protein_isoforms_prefer_synonyms_and_track_displayed_status4715 PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::expanded_payload_limit_reads_only_limit_plus_one4716 PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::protein_isoforms_return_empty_when_alternative_products_comment_is_missing4717 PASS [ 0.007s] biomcp-cli sources::uniprot::tests::parsing::record_mane_select_transcript_reads_the_committed_capture4718 PASS [ 0.008s] biomcp-cli sources::uniprot::tests::parsing::record_helpers_extract_display_function_and_structures4719 PASS [ 0.010s] biomcp-cli sources::uniprot::tests::parsing::record_mane_select_transcript_takes_only_the_refseq_nucleotide_id4720 PASS [ 0.008s] biomcp-cli sources::vaers::tests::construction::build_request_xml_escapes_and_validates_vaccine_code4721 PASS [ 0.012s] biomcp-cli sources::vaers::tests::construction::aggregate_request_plan_posts_form_encoded_reaction_xml4722 PASS [ 0.009s] biomcp-cli sources::vaers::tests::construction::request_template_tracks_captured_fixture4723 PASS [ 0.013s] biomcp-cli sources::vaers::tests::construction::build_request_xml_matches_serious_and_age_fixture_parameters4724 PASS [ 0.008s] biomcp-cli sources::vaers::tests::construction::vaers_client_uses_cdc_wonder_compatible_user_agent_constant4725 PASS [ 0.008s] biomcp-cli sources::vaers::tests::parsing::decode_aggregate_response_rejects_http_html_and_non_utf8_errors4726 PASS [ 0.009s] biomcp-cli sources::vaers::tests::parsing::parse_aggregate_response_rejects_a_nesting_bomb4727 PASS [ 0.009s] biomcp-cli sources::vaers::tests::parsing::parse_processing_error_returns_api_message4728 PASS [ 0.016s] biomcp-cli sources::vaers::tests::parsing::parse_age_response_extracts_buckets_and_skips_total_row4729 PASS [ 0.261s] biomcp-cli sources::tests::provider_network::ordinary_client_blocks_untrusted_local_destinations_before_contact4730 PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::construction::normalize_request_plan_encodes_transcript_path_and_json_query4731 PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::construction::normalize_request_plan_percent_encodes_path_segments4732 PASS [ 0.010s] biomcp-cli sources::variantvalidator::tests::parsing::normalize_response_extracts_warnings_and_grch38_genomic_description4733 PASS [ 0.018s] biomcp-cli sources::vaers::tests::parsing::parse_serious_response_extracts_yes_and_no_rows4734 PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::parsing::normalize_response_maps_html_response_to_service_error4735 PASS [ 0.009s] biomcp-cli sources::variantvalidator::tests::parsing::normalize_response_maps_not_found_and_http_errors4736 PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::parsing::result_from_value_maps_missing_transcript_to_service_error4737 PASS [ 0.008s] biomcp-cli sources::variantvalidator::tests::parsing::result_from_value_maps_warning_without_transcript_to_invalid_input4738 PASS [ 0.007s] biomcp-cli sources::who_ivd::tests::construction::file_is_stale_tracks_age_threshold4739 PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::construction::sync_state_marks_missing_fresh_stale_and_force4740 PASS [ 0.009s] biomcp-cli sources::who_ivd::tests::construction::sync_intro_matches_missing_stale_and_force_modes4741 PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::construction::who_ivd_missing_files_tracks_required_contract4742 PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::construction::who_ivd_sync_error_mentions_recovery_paths4743 PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::parsing::ensure_csv_content_type_rejects_html_response4744 PASS [ 0.010s] biomcp-cli sources::who_ivd::tests::parsing::parse_who_ivd_csv_deduplicates_first_product_code4745 PASS [ 0.009s] biomcp-cli sources::who_ivd::tests::parsing::parse_who_ivd_csv_requires_expected_headers4746 PASS [ 0.010s] biomcp-cli sources::who_ivd::tests::parsing::parse_who_ivd_csv_reads_fixture_rows4747 PASS [ 0.008s] biomcp-cli sources::who_ivd::tests::parsing::who_ivd_client_get_matches_exact_trimmed_product_code4748 PASS [ 0.064s] biomcp-cli sources::vaers::tests::parsing::decode_aggregate_response_accepts_wonder_html_content_type_with_xml_body4749 PASS [ 0.009s] biomcp-cli sources::who_pq::tests::construction::file_is_stale_tracks_age_threshold4750 PASS [ 0.008s] biomcp-cli sources::who_pq::tests::construction::sync_intro_matches_missing_stale_and_force_modes4751 PASS [ 0.008s] biomcp-cli sources::who_pq::tests::construction::sync_state_marks_missing_fresh_stale_and_force4752 PASS [ 0.009s] biomcp-cli sources::who_pq::tests::construction::who_pq_missing_files_tracks_required_file_contract4753 PASS [ 0.008s] biomcp-cli sources::who_pq::tests::construction::who_pq_sync_error_carries_its_detail_and_recovery4754 PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::boundary_phrase_rejection_advances_across_multibyte_character4755 PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::derive_inn_removes_dosage_form_suffix_when_present4756 PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::ensure_csv_content_type_rejects_html_response_without_raw_tags4757 PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::medicines_captures_ship_title_case_headers_and_parse4758 PASS [ 0.010s] biomcp-cli sources::who_pq::tests::parsing::normalize_dates_convert_to_iso4759 PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::parse_who_api_csv_preserves_identifier_semantics4760 PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::parse_who_pq_csv_deduplicates_by_reference_number4761 PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::parse_who_vaccines_csv_preserves_blank_dose_rows4762 PASS [ 0.009s] biomcp-cli sources::who_pq::tests::parsing::parsers_require_expected_headers4763 PASS [ 0.008s] biomcp-cli sources::who_pq::tests::parsing::pre_1304_cache_with_applicant_organization_column_still_parses4764 PASS [ 0.010s] biomcp-cli sources::who_pq::tests::parsing::pre_1304_cache_with_alternative_listing_column_still_parses4765 PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::product_type_filters_keep_expected_rows4766 PASS [ 0.458s] biomcp-cli sources::tests::provider_network::cached_client_post_write_failure_matrix_keeps_provider_answers4767 PASS [ 0.013s] biomcp-cli sources::who_pq::tests::parsing::read_rows_combines_finished_pharma_api_and_vaccine_rows4768 PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::vaccine_dedupe_keeps_distinct_bevac_rows4769 PASS [ 0.017s] biomcp-cli sources::who_pq::tests::parsing::row_matching_falls_back_to_full_presentation_for_combo_rows4770 PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::vaccine_fixture_carries_full_validation_anchor_counts4771 PASS [ 0.018s] biomcp-cli sources::who_pq::tests::parsing::row_matching_strips_salt_suffixes_from_match_key4772 PASS [ 0.012s] biomcp-cli sources::who_pq::tests::parsing::vaccines_capture_keeps_the_trailing_space_header_and_trims_to_match4773 PASS [ 0.010s] biomcp-cli sources::who_pq::tests::sync::summary_line_names_refreshed_and_failed_files4774 PASS [ 0.022s] biomcp-cli sources::who_pq::tests::parsing::vaccine_row_matching_uses_vaccine_type_and_brand_aliases4775 PASS [ 1.014s] biomcp-cli sources::orcid::tests::closing::transient_429_retries_once_under_the_pacing_gap_then_succeeds4776 PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::construction::pathway_plans_build_expected_paths_and_validate_ids4777 PASS [ 0.009s] biomcp-cli sources::wikipathways::tests::construction::search_pathways_plan_builds_search_endpoint_and_rejects_empty_query4778 PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::construction::validates_wikipathways_id_shape4779 PASS [ 0.007s] biomcp-cli sources::wikipathways::tests::parsing::decode_json_response_rejects_html_content_type_before_json_parse4780 PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::parsing::map_pathway_entrez_gene_ids_dedupes_and_filters_non_numeric_rows4781 PASS [ 0.009s] biomcp-cli sources::wikipathways::tests::parsing::decode_json_response_sanitizes_404_html_error_body4782 PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::parsing::map_pathway_record_parses_minimal_detail_payload4783 PASS [ 0.008s] biomcp-cli sources::wikipathways::tests::parsing::map_search_hits_filters_non_human_invalid_and_duplicate_rows4784 PASS [ 0.009s] biomcp-cli test_support::signaled_child_spawn_fails_when_the_child_never_signals4785 PASS [ 0.009s] biomcp-cli test_support::watchdog_defaults_to_one_and_stretches_by_the_factor4786 PASS [ 0.007s] biomcp-cli transform::adverse_event::tests::faers_report_filter_matches_suspect_drug_name4787 PASS [ 0.008s] biomcp-cli transform::adverse_event::tests::normalize_drug_name_trims_and_lowercases4788 PASS [ 0.009s] biomcp-cli transform::adverse_event::tests::outcomes_from_flags_maps_all_fields4789 PASS [ 0.009s] biomcp-cli transform::adverse_event::tests::patient_demographics_handles_missing_fields4790 PASS [ 0.013s] biomcp-cli transform::article::anchors::tests::normalize_article_search_text_compacts_compound_hyphens4791 PASS [ 0.014s] biomcp-cli transform::article::anchors::tests::truncate_title_strips_inline_html_and_entities4792 PASS [ 0.012s] biomcp-cli transform::article::anchors::tests::truncate_title_truncates_on_utf8_boundary4793 PASS [ 0.010s] biomcp-cli transform::article::annotations::tests::extract_annotations_counts_mentions4794 PASS [ 0.008s] biomcp-cli transform::article::annotations::tests::extract_annotations_ignores_placeholder_identifiers4795 PASS [ 0.010s] biomcp-cli transform::article::annotations::tests::extract_annotations_falls_back_to_hgvs_without_rsid4796 PASS [ 0.009s] biomcp-cli transform::article::annotations::tests::extract_annotations_preserves_first_seen_order_for_equal_counts4797 PASS [ 0.018s] biomcp-cli transform::article::annotations::tests::extract_annotations_reads_identifier_and_namespace4798 PASS [ 0.019s] biomcp-cli transform::article::annotations::tests::mutation_identity::gene_symbol_prefers_the_most_mentioned_gene_text4799 PASS [ 0.021s] biomcp-cli transform::article::annotations::tests::mutation_identity::gene_without_symbol_shaped_mention_uses_the_official_symbol4800 PASS [ 0.017s] biomcp-cli transform::article::annotations::tests::mutation_identity::multi_allele_rsid_with_coding_hgvs_keeps_the_coding_form4801 PASS [ 0.018s] biomcp-cli transform::article::annotations::tests::mutation_identity::multi_allele_rsid_without_gene_symbol_carries_no_identifier4802 PASS [ 0.009s] biomcp-cli transform::article::annotations::tests::mutation_identity::official_symbol_lookups_target_only_mutation_linked_spelled_genes4803 PASS [ 0.018s] biomcp-cli transform::article::annotations::tests::mutation_identity::no_rsid_row_with_gene_and_change_gains_the_gene_qualified_form4804 PASS [ 0.017s] biomcp-cli transform::article::annotations::tests::mutation_identity::official_symbol_that_is_not_symbol_shaped_builds_no_form4805 PASS [ 0.020s] biomcp-cli transform::article::annotations::tests::mutation_identity::one_allele_written_two_ways_stays_one_rsid_change4806 PASS [ 0.019s] biomcp-cli transform::article::annotations::tests::mutation_identity::rows_with_gene_and_change_prefer_the_gene_qualified_form4807 PASS [ 0.018s] biomcp-cli transform::article::annotations::tests::mutation_identity::single_mention_allele_of_a_multi_allele_rsid_carries_the_gene_form4808 PASS [ 0.010s] biomcp-cli transform::article::annotations::tests::positions_land_only_when_requested4809 PASS [ 0.008s] biomcp-cli transform::article::annotations::tests::same_text_with_different_identifiers_stays_separate4810 PASS [ 1.538s] biomcp-cli sources::hpo::tests::parsing::phenotype_hpo_operation_uses_only_the_shared_four_attempts4811 PASS [ 0.007s] biomcp-cli transform::article::federation::tests::article_authorship_preserves_large_source_lists_and_empty_state4812 PASS [ 0.516s] biomcp-cli sources::tests::provider_network::ordinary_client_allows_exact_override_but_ignores_proxy_and_cross_origin_redirects4813 PASS [ 0.020s] biomcp-cli transform::article::annotations::tests::mutation_identity::spelled_gene_mentions_pick_the_most_mentioned_symbol_shaped_text4814 PASS [ 0.008s] biomcp-cli transform::article::federation::tests::article_sections_maps_brca1_study4815 PASS [ 0.009s] biomcp-cli transform::article::federation::tests::europepmc_metadata_merge_preserves_pubtator_authorship4816 PASS [ 0.013s] biomcp-cli transform::article::federation::tests::europepmc_authorship_has_no_ten_name_cap_and_reports_empty_state4817 PASS [ 0.013s] biomcp-cli transform::article::federation::tests::article_sections_maps_egfr_review4818 PASS [ 0.014s] biomcp-cli transform::article::federation::tests::detail_articles_keep_whole_abstracts_while_search_rows_keep_snippets4819 PASS [ 0.011s] biomcp-cli transform::article::federation::tests::from_europepmc_search_result_carries_first_index_date4820 PASS [ 4.842s] biomcp-cli entities::trial::search::ctgov::tests::an_in_age_unchecked_trial_marks_the_count_partial4821 PASS [ 0.012s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_falls_back_to_lr_for_first_index_date4822 PASS [ 0.011s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_falls_back_to_source_journal4823 PASS [ 0.013s] biomcp-cli transform::article::federation::tests::from_europepmc_search_result_invalid_first_index_date_is_none4824 PASS [ 0.013s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_hydrates_all_fields4825 PASS [ 0.013s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_prefers_edat_over_lr4826 PASS [ 0.012s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_returns_none_for_blank_title4827 PASS [ 0.009s] biomcp-cli transform::article::federation::tests::parse_pubdate_extracts_full_date4828 PASS [ 0.010s] biomcp-cli transform::article::federation::tests::from_pubmed_esummary_entry_uses_edat_for_first_index_date4829 PASS [ 0.009s] biomcp-cli transform::article::federation::tests::parse_pubdate_extracts_year4830 PASS [ 0.013s] biomcp-cli transform::article::federation::tests::from_pubtator_search_result_maps_source_and_score4831 PASS [ 0.009s] biomcp-cli transform::article::federation::tests::parse_pubdate_extracts_year_month4832 PASS [ 0.007s] biomcp-cli transform::article::federation::tests::parse_sortpubdate_extracts_ymd4833 PASS [ 0.011s] biomcp-cli transform::article::federation::tests::publication_type_detection_reads_pub_type_list_for_retractions4834 PASS [ 0.009s] biomcp-cli transform::article::jats::supplements::tests::extracts_nested_and_standalone_supplement_media_with_typed_facts4835 PASS [ 0.022s] biomcp-cli transform::article::html::tests::extract_text_from_html_keeps_article_signals_across_fixture_family4836 PASS [ 0.022s] biomcp-cli transform::article::html::tests::fixture_family_titles_are_kept_exactly_once4837 PASS [ 0.021s] biomcp-cli transform::article::html::tests::html_classification_uses_article_structure_without_size_thresholds4838 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_allows_identical_normalized_duplicates_inside_one_ref4839 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_anchors_truncation_on_the_marker_not_an_earlier_equal_string4840 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_caps_passages_at_three_in_document_order4841 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_excludes_paragraphs_in_table_figure_and_caption_scopes4842 PASS [ 0.007s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_excludes_paragraphs_inside_boxed_text4843 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_closed_on_two_distinct_dois_in_one_ref4844 PASS [ 0.008s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_closed_on_two_matching_refs4845 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_closed_when_selected_id_duplicates_across_ref_lists4846 PASS [ 0.008s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_closed_when_selected_ref_lacks_a_nonblank_id4847 PASS [ 0.007s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_fails_on_malformed_xml4848 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_ignores_an_empty_marker_on_both_sides_of_the_clamp4849 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_ignores_grouped_markers_and_requires_exact_case_rid4850 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_keeps_document_order_dedupes_paragraphs_but_not_equal_text4851 PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_links_adjacent_separate_markers_in_one_paragraph_once4852 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_matches_pmid_by_decimal_value_with_prefix_and_zeros4853 PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_matches_pmcid_case_insensitively_with_canonical_value4854 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_passes_through_paragraphs_at_or_below_the_limit4855 PASS [ 0.255s] biomcp-cli sources::who_pq::tests::sync::sync_attempts_every_file_and_names_the_failing_file_when_required_files_are_missing4856 PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_pins_the_exact_passage_scalar_boundaries4857 PASS [ 0.257s] biomcp-cli sources::who_pq::tests::sync::sync_partial_run_keeps_older_data_and_reports_the_failure_reason_per_file4858 PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_rejects_doi_without_ten_prefix_or_slash4859 PASS [ 0.011s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_prefers_doi_over_pmid_when_both_match4860 PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_rejects_lower_priority_match_with_conflicting_higher_identifier4861 PASS [ 0.008s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_reports_nested_section_paths_and_paragraph_ordinals4862 PASS [ 0.265s] biomcp-cli sources::who_pq::tests::sync::sync_names_the_failing_file_and_column_in_its_final_error4863 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_resolves_doi_with_prefix_and_case_normalization4864 PASS [ 0.011s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_returns_marker_unlinked_when_no_marker_reaches_a_paragraph4865 PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_returns_parsed_unusable_for_non_article_or_bodyless_documents4866 PASS [ 0.010s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_treats_hostile_identifier_text_as_closed_not_matched4867 PASS [ 0.263s] biomcp-cli sources::who_pq::tests::sync::sync_replays_the_recorded_captures_and_reports_every_file_refreshed4868 PASS [ 0.011s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_skips_empty_marker_text_before_truncation4869 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::citation_evidence::extractor_truncates_long_paragraphs_around_first_marker_scalar4870 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::entity_bearing_jats_is_not_rendered_through_fallback4871 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_keeps_words_wrapped_in_word_joining_elements_whole4872 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_merges_multiple_ref_lists4873 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_preserves_complex_table_cells_and_spans4874 PASS [ 0.010s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_labels_mixed_citation_pub_ids_as_separate_values4875 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_reference_fallback_omits_duplicate_label4876 PASS [ 0.010s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_preserves_structure_and_renders_references4877 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_element_citation_fields_and_ids4878 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_floats_group_after_body_before_references4879 PASS [ 0.010s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_mixed_citation_doi_links4880 PASS [ 0.008s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_ragged_tables_as_raw_rows4881 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_renders_supplementary_material_metadata4882 PASS [ 0.007s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_suppresses_source_parenthesized_xref_and_preserves_boundary_spacing4883 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_separates_words_only_at_unmarked_boundaries4884 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::extract_text_from_jats_wraps_unparenthesized_figure_xrefs4885 PASS [ 0.009s] biomcp-cli transform::article::jats::tests::jats_classification_requires_meaningful_direct_body_content4886 PASS [ 0.007s] biomcp-cli transform::article::pdf::tests::extract_text_from_pdf_rejects_zero_page_limit4887 PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::csv_extract_locates_a_record_row4888 PASS [ 0.008s] biomcp-cli transform::article::supplement_text::tests::docx_extract_locates_a_paragraph4889 PASS [ 0.008s] biomcp-cli transform::article::supplement_text::tests::format_dispatch_reads_file_extensions_case_insensitively4890 PASS [ 0.010s] biomcp-cli transform::article::supplement_text::tests::extraction_limits_cover_nested_archives_and_document_packages4891 PASS [ 0.106s] biomcp-cli transform::article::html::tests::supplement_links_ignore_page_links_in_stored_pmc_html4892 PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::only_one_nested_archive_is_searched4893 PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::unreadable_bytes_report_format_and_reason4894 PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::workbook_package_limits_follow_bytes_when_extension_is_xls4895 PASS [ 0.014s] biomcp-cli transform::article::supplement_text::tests::pdf_extract_locates_a_page4896 PASS [ 0.010s] biomcp-cli transform::article::supplement_text::tests::xls_extract_reads_the_legacy_binary_workbook4897 PASS [ 0.015s] biomcp-cli transform::article::supplement_text::tests::pdf_page_budget_marks_truncation4898 PASS [ 0.015s] biomcp-cli transform::article::supplement_text::tests::xlsx_extract_locates_a_named_worksheet_row4899 PASS [ 0.010s] biomcp-cli transform::article::supplement_text::tests::zip_extract_locates_a_member_and_reports_its_siblings4900 PASS [ 0.036s] biomcp-cli transform::article::jats::tests::real_pmc6172658_capture_separates_names_and_reference_identifiers4901 PASS [ 0.009s] biomcp-cli transform::article::tests::root_module_reexports_stable_article_transform_api4902 PASS [ 0.008s] biomcp-cli transform::disease::tests::clean_definition_strips_wrapping_quotes_and_refs4903 PASS [ 0.009s] biomcp-cli transform::article::supplement_text::tests::zip_member_budget_reports_the_size_limit4904 PASS [ 0.009s] biomcp-cli transform::disease::tests::collect_xrefs_retains_orphanet_and_omim_identifiers4905 PASS [ 0.008s] biomcp-cli transform::disease::tests::disease_sections_maps_cml4906 PASS [ 0.008s] biomcp-cli transform::disease::tests::disease_sections_maps_lung_adenocarcinoma4907 PASS [ 0.007s] biomcp-cli transform::disease::tests::frequency_rank_prioritizes_high_signal_qualifiers_only4908 PASS [ 0.016s] biomcp-cli transform::disease::tests::derive_key_features_supplements_definition_with_high_frequency_phenotypes4909 PASS [ 0.009s] biomcp-cli transform::disease::tests::from_mydisease_hit_collects_hpo_phenotypes4910 PASS [ 0.017s] biomcp-cli transform::disease::tests::extract_definition_key_features_association_clause4911 PASS [ 0.017s] biomcp-cli transform::disease::tests::extract_definition_key_features_characterized_by_clause4912 PASS [ 0.053s] biomcp-cli transform::article::jats::tests::real_pmc6329583_capture_preserves_all_six_complex_tables4913 PASS [ 0.016s] biomcp-cli transform::disease::tests::extract_definition_key_features_handles_colon_after_cue4914 PASS [ 0.009s] biomcp-cli transform::disease::tests::from_mydisease_hit_seeds_gene_associations_with_the_disgenet_source4915 PASS [ 0.008s] biomcp-cli transform::disease::tests::name_from_mydisease_hit_falls_back_to_the_mondo_label4916 PASS [ 0.009s] biomcp-cli transform::disease::tests::from_mydisease_hit_without_disgenet_data_seeds_no_rows4917 PASS [ 0.008s] biomcp-cli transform::disease::tests::synonyms_preview_formats_expected4918 PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::a_canonical_name_equal_to_the_brand_never_yields_to_a_naked_row4919 PASS [ 0.010s] biomcp-cli transform::drug::name_resolution_tests::amivantamab_keeps_resolving_through_its_exact_drugbank_record4920 PASS [ 0.010s] biomcp-cli transform::drug::name_resolution_tests::edetate_disodium_prefers_the_exact_record_and_never_the_urea_cream4921 PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::ferric_oxide_selects_the_ferric_oxide_record_not_calamine4922 PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::keytruda_keeps_the_pembrolizumab_card_name4923 PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::mannitol_names_the_card_mannitol_not_the_first_ndc_product4924 PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::lonsurf_says_trifluridine_and_tipiracil_again4925 PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::merge_mychem_hits_keeps_the_imatinib_mesylate_established_name4926 PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::niraparib_names_the_plain_ingredient_card4927 PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::rybrevant_keeps_the_identity_records_name_over_the_naked_product_row4928 PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::terfenadine_selects_only_terfenadine_and_never_fexofenadine4929 PASS [ 0.010s] biomcp-cli transform::drug::name_resolution_tests::tagrisso_resolves_through_the_brand_fields_on_osimertinibs_record4930 PASS [ 0.009s] biomcp-cli transform::drug::name_resolution_tests::zejula_names_the_card_for_the_drug_its_own_row_pairs4931 PASS [ 0.010s] biomcp-cli transform::drug::name_resolution_tests::tagrisso_still_selects_its_record_through_drugcentral_synonyms_alone4932 PASS [ 0.008s] biomcp-cli transform::drug::shared_name_tests::a_foreign_synonym_never_satisfies_the_leading_name_tier4933 PASS [ 0.010s] biomcp-cli transform::drug::shared_name_tests::agreeing_pairings_still_merge_one_product4934 PASS [ 0.060s] biomcp-cli transform::article::supplement_text::tests::xlsx_extract_locates_a_row_on_sheet14935 PASS [ 0.008s] biomcp-cli transform::drug::tests::approval_date_display_formats_month_name4936 PASS [ 0.009s] biomcp-cli transform::drug::tests::approval_date_rejects_multibyte_input_with_matching_byte_length4937 PASS [ 0.010s] biomcp-cli transform::drug::shared_name_tests::pain_relief_refuses_instead_of_fusing_unrelated_drugs4938 PASS [ 0.009s] biomcp-cli transform::drug::shared_name_tests::sleep_aid_refuses_instead_of_merging_diphenhydramine_with_doxylamine4939 PASS [ 0.009s] biomcp-cli transform::drug::tests::drug_sections_maps_imatinib4940 PASS [ 0.009s] biomcp-cli transform::drug::tests::drug_sections_maps_osimertinib4941 PASS [ 0.008s] biomcp-cli transform::drug::tests::from_mychem_search_hit_uses_openfda_names_when_other_sources_are_missing4942 PASS [ 0.090s] biomcp-cli transform::article::pdf::tests::extract_text_from_pdf_renders_fixture_family_text4943 PASS [ 0.007s] biomcp-cli transform::drug::tests::merge_mychem_hits_collects_drug_interactions4944 PASS [ 0.010s] biomcp-cli transform::drug::tests::merge_mychem_hits_collects_deduped_mechanisms4945 PASS [ 0.010s] biomcp-cli transform::drug::tests::merge_mychem_hits_keeps_synonyms_off_the_brand_list4946 PASS [ 0.011s] biomcp-cli transform::drug::tests::merge_mychem_hits_does_not_pool_synonyms_across_hits4947 PASS [ 0.011s] biomcp-cli transform::drug::tests::merge_mychem_hits_prefers_canonical_name_from_brand_hit4948 PASS [ 0.011s] biomcp-cli transform::drug::tests::merge_mychem_hits_keeps_the_matching_canonical_name_over_the_first_ndc_row4949 PASS [ 0.012s] biomcp-cli transform::drug::tests::search_mechanism_prefers_chembl_over_ranked_moa_fallback4950 PASS [ 0.009s] biomcp-cli transform::drug::tests::select_hits_for_name_matches_openfda_brand_name4951 PASS [ 0.010s] biomcp-cli transform::drug::tests::search_mechanism_ranking_prefers_kinase_moa_and_rejects_metabolism_only4952 PASS [ 0.008s] biomcp-cli transform::gene::tests::carried_kegg_pathways_survive_when_kegg_is_not_disabled4953 PASS [ 0.009s] biomcp-cli transform::drug::tests::select_hits_for_name_prefers_exact_hits_and_admits_salt_forms_only_when_alone4954 PASS [ 0.009s] biomcp-cli transform::gene::tests::extract_kegg_pathways_handles_array4955 PASS [ 0.011s] biomcp-cli transform::gene::tests::gene_sections_maps_tp53_fields4956 PASS [ 0.011s] biomcp-cli transform::gene::tests::gene_sections_maps_egfr_fields4957 PASS [ 0.012s] biomcp-cli transform::gene::tests::gene_sections_maps_brca1_fields4958 PASS [ 0.011s] biomcp-cli transform::gene::tests::normalize_aliases_drops_lowercase_and_trailing_number_hyphen4959 PASS [ 0.009s] biomcp-cli transform::gene::tests::normalize_summary_keeps_summary4960 PASS [ 0.008s] biomcp-cli transform::gene::tests::normalize_summary_preserves_utf8_without_ellipsis4961 PASS [ 0.009s] biomcp-cli transform::gene::tests::string_or_vec_into_vec4962 PASS [ 0.010s] biomcp-cli transform::pathway::tests::from_kegg_hit_maps_fields4963 PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_kegg_record_maps_fields4964 PASS [ 1.627s] biomcp-cli sources::ncbi_efetch::clinvar::tests::exact_node_boundary_is_accepted_and_plus_one_rejected4965 PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_reactome_hit_maps_fields4966 PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_reactome_record_maps_fields4967 PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_reactome_record_handles_missing_summary4968 PASS [ 0.009s] biomcp-cli transform::pathway::tests::from_wikipathways_hit_maps_fields4969 PASS [ 0.010s] biomcp-cli transform::pathway::tests::pathway_sections_maps_cell_cycle4970 PASS [ 0.010s] biomcp-cli transform::pathway::tests::from_wikipathways_record_maps_fields4971 PASS [ 0.009s] biomcp-cli transform::protein::tests::from_uniprot_record_base_handles_missing_sequence4972 PASS [ 0.009s] biomcp-cli transform::protein::tests::from_uniprot_record_base_maps_fields4973 PASS [ 0.009s] biomcp-cli transform::protein::tests::from_uniprot_search_record_handles_missing_organism4974 PASS [ 0.009s] biomcp-cli transform::protein::tests::from_uniprot_search_record_maps_fields4975 PASS [ 0.008s] biomcp-cli transform::protein::tests::protein_sections_maps_egfr4976 PASS [ 0.009s] biomcp-cli transform::protein::tests::protein_sections_maps_tp534977 PASS [ 0.009s] biomcp-cli transform::trial::tests::ctgov_case_13_preserves_every_site_contact_in_provider_order4978 PASS [ 0.009s] biomcp-cli transform::trial::tests::ctgov_location_aliases_stay_bound_to_literal_first_source_contact4979 PASS [ 0.008s] biomcp-cli transform::trial::tests::from_ctgov_study_extracts_age_and_locations_sorted4980 PASS [ 0.009s] biomcp-cli transform::trial::tests::from_ctgov_study_preserves_contacts_and_structured_eligibility4981 PASS [ 0.009s] biomcp-cli transform::trial::tests::from_ctgov_study_preserves_provider_type_fields_in_json4982 PASS [ 0.011s] biomcp-cli transform::trial::tests::receipted_ctgov_intervention_descriptions_keep_their_associations_in_json4983 PASS [ 0.008s] biomcp-cli transform::trial::tests::ticket_1107::unreadable_nci_disease_is_an_error4984 PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1107::recorded_nci_hit_reports_its_disease_names4985 PASS [ 0.008s] biomcp-cli transform::trial::tests::ticket_1111::condition_cell_preserves_short_lists_without_a_marker4986 PASS [ 0.008s] biomcp-cli transform::trial::tests::ticket_1111::condition_cell_reserves_complete_suffix_when_byte_bound_abridges_multibyte_text4987 PASS [ 0.008s] biomcp-cli transform::trial::tests::ticket_1111::condition_cell_reserves_complete_suffix_when_item_bound_abridges4988 PASS [ 0.024s] biomcp-cli transform::trial::tests::ctgov_meaningful_sites_keep_partial_identity_and_safe_markdown4989 PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1111::recorded_ctgov_condition_vector_matches_in_detail_and_search4990 PASS [ 0.020s] biomcp-cli transform::trial::tests::receipted_ctgov_two_arm_trial_keeps_independent_typed_assignments4991 PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1111::recorded_nci_condition_vector_matches_in_search4992 PASS [ 0.020s] biomcp-cli transform::trial::tests::stopped_ctgov_trials_explain_their_status_in_json_and_markdown4993 PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1114::ctgov_postal_codes_are_trimmed_and_blank_values_are_omitted4994 PASS [ 0.023s] biomcp-cli transform::trial::tests::stopped_ctgov_trial_without_reason_reports_checked_absence4995 PASS [ 0.027s] biomcp-cli transform::trial::tests::receipted_ctgov_partial_sites_preserve_all_locations4996 PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1115::recorded_ctgov_summary_reaches_the_model_and_json_in_full4997 PASS [ 0.009s] biomcp-cli transform::trial::tests::ticket_1115::summary_normalization_keeps_trimmed_text_and_rejects_blanks4998 PASS [ 0.008s] biomcp-cli transform::trial::tests::trial_location_nested_contacts_are_additive_serde_compatibility4999 PASS [ 0.009s] biomcp-cli transform::trial::tests::trial_status_normalization_variants5000 PASS [ 0.007s] biomcp-cli transform::variant::tests::clinvar_review_stars_known_statuses5001 PASS [ 0.009s] biomcp-cli transform::variant::tests::aggregate_clinvar_conditions_counts_reports5002 PASS [ 7.486s] biomcp-cli entities::drug::test_support::label_fallback_fetch_error_stays_an_error5003 PASS [ 0.011s] biomcp-cli transform::variant::tests::derive_legacy_name_normalizes_missense_alias_variants5004 PASS [ 0.011s] biomcp-cli transform::variant::tests::derive_legacy_name_normalizes_stop_alias_variants5005 PASS [ 0.022s] biomcp-cli transform::trial::tests::ticket_1114::receipted_ctgov_location_preserves_postal_code_in_json_and_markdown5006 PASS [ 0.010s] biomcp-cli transform::variant::tests::extracts_expanded_variant_sections5007 PASS [ 0.008s] biomcp-cli transform::variant::tests::normalize_gene_uppercases5008 PASS [ 0.008s] biomcp-cli transform::variant::tests::newest_rcv_evaluation_date_skips_non_day_shaped_and_unshown_records5009 PASS [ 0.010s] biomcp-cli transform::variant::tests::from_myvariant_hit_leaves_legacy_name_empty_without_clinvar5010 PASS [ 0.010s] biomcp-cli transform::variant::tests::from_myvariant_hit_sets_top_disease_from_sorted_clinvar_rows5011 PASS [ 0.008s] biomcp-cli transform::variant::tests::normalize_polyphen_codes5012 PASS [ 0.010s] biomcp-cli transform::variant::tests::newest_rcv_evaluation_date_belongs_to_the_shown_classification5013 PASS [ 0.012s] biomcp-cli transform::variant::tests::extracts_bayesdel_flavors_from_recorded_myvariant_payload5014 PASS [ 0.009s] biomcp-cli transform::variant::tests::pick_review_status_prefers_highest_star_rating5015 PASS [ 0.008s] biomcp-cli transform::variant::tests::pick_significance_handles_empty_and_partial_rcvs5016 PASS [ 0.009s] biomcp-cli transform::variant::tests::pick_significance_with_kras_rcvs5017 PASS [ 0.008s] biomcp-cli utils::date::tests::expands_year_only5018 PASS [ 0.010s] biomcp-cli transform::variant::tests::pick_significance_with_brca1_rcvs5019 PASS [ 0.009s] biomcp-cli utils::date::tests::accepts_leap_day_only_in_leap_years5020 PASS [ 0.010s] biomcp-cli transform::variant::tests::significance_rank_prefers_pathogenic_over_benign5021 PASS [ 0.008s] biomcp-cli utils::date::tests::expands_year_month5022 PASS [ 0.009s] biomcp-cli utils::date::tests::is_day_shaped_accepts_real_days_only5023 PASS [ 0.011s] biomcp-cli transform::variant::tests::transcript_annotation_never_zips_independent_dbnsfp_arrays5024 PASS [ 0.013s] biomcp-cli transform::variant::tests::real_braf_receipt_prefers_the_transcript_associated_v600_annotation5025 PASS [ 0.009s] biomcp-cli utils::date::tests::is_day_shaped_rejects_provider_spellings_and_impossible_days5026 PASS [ 4.758s] biomcp-cli entities::variant::clinvar::tests::add_clinvar_names_a_non_429_provider_failure_distinctly5027 PASS [ 0.010s] biomcp-cli utils::date::tests::keeps_full_date5028 PASS [ 0.010s] biomcp-cli utils::date::tests::rejects_invalid_day_for_month5029 PASS [ 0.009s] biomcp-cli utils::date::tests::trims_outer_whitespace5030 PASS [ 0.010s] biomcp-cli utils::date::tests::rejects_malformed_dates5031 PASS [ 0.008s] biomcp-cli utils::download::tests::download_path_for_config_keeps_relative_cache_roots_relative5032 PASS [ 0.010s] biomcp-cli utils::date::tests::rejects_invalid_month5033 PASS [ 0.009s] biomcp-cli utils::download::tests::bundle_fingerprint_is_none_for_a_missing_root5034 PASS [ 0.008s] biomcp-cli utils::download::tests::download_path_for_config_resolves_to_cache_root_downloads5035 PASS [ 0.010s] biomcp-cli utils::download::tests::bundle_fingerprint_is_stable_until_a_file_changes5036 PASS [ 0.011s] biomcp-cli utils::download::tests::save_atomic_to_path_errors_when_target_path_is_directory5037 PASS [ 0.010s] biomcp-cli utils::download::tests::saved_download_rejects_symlinks_and_hard_links5038 PASS [ 0.007s] biomcp-cli utils::query::tests::escapes_lucene_special_characters5039 PASS [ 0.009s] biomcp-cli utils::panic_payload_tests::any_other_payload_falls_back_to_the_generic_line5040 PASS [ 0.009s] biomcp-cli utils::panic_payload_tests::string_and_str_payloads_keep_their_message5041 PASS [ 0.008s] biomcp-cli utils::sync::tests::every_reconstructible_lock_uses_the_shared_helper5042 PASS [ 0.009s] biomcp-cli utils::serde::tests::string_or_vec_helpers_cover_all_shapes5043 PASS [ 0.017s] biomcp-cli utils::download::tests::downloads_are_private_and_existing_files_are_repaired5044 PASS [ 0.008s] biomcp-cli workflow_ladders::tests::every_workflow_ladder_loads_and_validates5045 PASS [ 0.009s] biomcp-cli utils::sync::tests::poisoned_lock_returns_the_guarded_value5046 PASS [ 0.009s] biomcp-cli workflow_ladders::tests::workflow_meta_discards_sidecar_only_fields5047 PASS [ 0.021s] biomcp-cli utils::download::tests::save_atomic_to_path_writes_download_target5048 PASS [ 0.008s] biomcp-cli xml::tests::accepts_entity_token_text_in_comments_and_cdata5049 PASS [ 0.008s] biomcp-cli xml::tests::comments_cdata_and_self_closing_tags_do_not_move_the_depth5050 PASS [ 0.008s] biomcp-cli xml::tests::accepts_nesting_well_under_the_cap5051 PASS [ 0.009s] biomcp-cli xml::tests::enforces_exact_node_limit5052 PASS [ 0.008s] biomcp-cli xml::tests::maps_malformed_xml_to_parse_error5053 PASS [ 0.009s] biomcp-cli xml::tests::parses_ordinary_declared_and_external_doctype_xml5054 PASS [ 0.009s] biomcp-cli xml::tests::rejects_a_nesting_bomb_with_an_error5055 PASS [ 0.024s] biomcp-cli utils::download::tests::write_atomic_bytes_replaces_existing_file_contents5056 PASS [ 0.025s] biomcp-cli utils::download::tests::user_output_does_not_restrict_parent_directory5057 PASS [ 0.008s] biomcp-cli xml::tests::rejects_entity_declaration_variants_before_parsing5058 PASS [ 0.026s] biomcp-cli utils::download::tests::write_atomic_bytes_errors_for_non_file_destination5059 PASS [ 0.373s] biomcp-cli transform::article::html::tests::stored_pmc_pages_keep_title_and_byline_and_drop_page_furniture5060 PASS [ 0.949s] biomcp-cli sources::tests::shared_body_limit_rejects_before_cache_materialization5061 PASS [ 1.130s] biomcp-cli sources::tests::provider_network::startup_cost::start_up_touches_no_more_cache_files_as_the_cache_grows5062 PASS [ 1.959s] biomcp-cli sources::pmc_oa::tests::parsing::extract_archive_entries_rejects_aggregate_expansion5063 PASS [ 3.018s] biomcp-cli sources::orcid::tests::closing::persistent_server_errors_stop_at_four_physical_gets_with_a_sanitized_error5064 PASS [ 3.727s] biomcp-cli sources::opencitations::tests::references_reject_malformed_bodies_and_statuses5065 PASS [ 11.168s] biomcp-cli entities::disease::get::tests::a_stale_mcp_call_tells_the_clinician_the_cache_age_on_both_channels5066 PASS [ 3.597s] biomcp-cli sources::pmc_article::tests::proof_of_work_is_retained_when_a_later_linked_target_fails5067 PASS [ 12.271s] biomcp-cli entities::disease::get::tests::a_stale_disease_card_tells_the_clinician_the_cache_age5068 PASS [ 8.821s] biomcp-cli sources::gencc::tests::cross_process_first_use_elects_one_leader_and_settles_followers5069 PASS [ 11.756s] biomcp-cli entities::variant::get::tests::protein_change_get_notes_unchecked_numbering_when_uniprot_is_unreachable5070 PASS [ 25.366s] biomcp-cli entities::article::variant_search::tests::unsupported_fulltext_evidence_does_not_confirm_a_paper5071────────────5072 Summary [ 29.954s] 4212 tests run: 4212 passed, 29 skipped5073Finished cargoNextestHook5074checkPhase completed in 3 minutes 16 secondsinstallPhase
5075Executing cargoInstallHook5076Finished cargoInstallHookfixupPhase
5077shrinking RPATHs of ELF executables and libraries in /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.35078shrinking /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3/bin/biomcp5079checking for references to /build/ in /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3...5080patching script interpreter paths in /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.35081stripping (with command strip and flags -S -p) in /nix/store/wynhkqpihfvna2rh7h6dq1rngkgl05wh-biomcp-0.9.3/bininstallCheckPhase
5082biomcp 0.9.3