[INFO] fetching crate quant-primitives 0.7.0...
[INFO] testing quant-primitives-0.7.0 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate quant-primitives 0.7.0 into /workspace/builds/worker-1-tc2/source
[INFO] started tweaking crates.io crate quant-primitives 0.7.0
[INFO] finished tweaking crates.io crate quant-primitives 0.7.0
[INFO] tweaked toml for crates.io crate quant-primitives 0.7.0 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate quant-primitives 0.7.0 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate quant-primitives 0.7.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:44:12
[INFO] [stderr]    |
[INFO] [stderr] 44 | homepage = "https://github.com/yannickgranger/quant-core"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 49 | repository = "https://github.com/yannickgranger/quant-core"
[INFO] [stderr]    |              ----------------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `quant-primitives` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9
[INFO] running `Command { std: "docker" "start" "cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:44:12
[INFO] [stderr]    |
[INFO] [stderr] 44 | homepage = "https://github.com/yannickgranger/quant-core"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 49 | repository = "https://github.com/yannickgranger/quant-core"
[INFO] [stderr]    |              ----------------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `quant-primitives` (manifest) generated 1 warning
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling rust_decimal v1.40.0
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling quant-primitives v0.7.0 (/opt/rustwide/workdir)
[INFO] [stderr] warning: unused dependency `serde_json`
[INFO] [stderr]   --> Cargo.toml:13:15
[INFO] [stderr]    |
[INFO] [stderr] 13 | [dependencies.serde_json]
[INFO] [stderr]    |               ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `serde_json`
[INFO] [stderr] warning: `quant-primitives` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.08s
[INFO] running `Command { std: "docker" "inspect" "cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:44:12
[INFO] [stderr]    |
[INFO] [stderr] 44 | homepage = "https://github.com/yannickgranger/quant-core"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 49 | repository = "https://github.com/yannickgranger/quant-core"
[INFO] [stderr]    |              ----------------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `quant-primitives` (manifest) generated 1 warning
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling rust_decimal_macros v1.40.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling rust_decimal v1.40.0
[INFO] [stderr]    Compiling quant-primitives v0.7.0 (/opt/rustwide/workdir)
[INFO] [stderr] warning: unused dependency `serde_json`
[INFO] [stderr]   --> Cargo.toml:13:15
[INFO] [stderr]    |
[INFO] [stderr] 13 | [dependencies.serde_json]
[INFO] [stderr]    |               ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `serde_json`
[INFO] [stderr] help: to still use for development builds, move to `dev-dependencies`
[INFO] [stderr] warning: `quant-primitives` (manifest) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 12.72s
[INFO] running `Command { std: "docker" "inspect" "cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:44:12
[INFO] [stderr]    |
[INFO] [stderr] 44 | homepage = "https://github.com/yannickgranger/quant-core"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 49 | repository = "https://github.com/yannickgranger/quant-core"
[INFO] [stderr]    |              ----------------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `quant-primitives` (manifest) generated 1 warning
[INFO] [stderr] warning: unused dependency `serde_json`
[INFO] [stderr]   --> Cargo.toml:13:15
[INFO] [stderr]    |
[INFO] [stderr] 13 | [dependencies.serde_json]
[INFO] [stderr]    |               ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `serde_json`
[INFO] [stderr] help: to still use for development builds, move to `dev-dependencies`
[INFO] [stderr] warning: `quant-primitives` (manifest) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/quant-primitives/114926331ba4f755/out/quant_primitives-114926331ba4f755)
[INFO] [stdout] 
[INFO] [stdout] running 188 tests
[INFO] [stdout] test bps::tests::negative_bps_rejected ... ok
[INFO] [stdout] test bps::tests::as_fraction_zero ... ok
[INFO] [stdout] test bps::tests::fractional_bps_accepted ... ok
[INFO] [stdout] test bps::tests::ordering_preserves_magnitude ... ok
[INFO] [stdout] test bps::tests::as_fraction_conversion ... ok
[INFO] [stdout] test bps::tests::serde_roundtrip ... ok
[INFO] [stdout] test bps::tests::as_fraction_full ... ok
[INFO] [stdout] test candle::tests::candle_error_display_high_below_low ... ok
[INFO] [stdout] test bps::tests::max_bps_accepted ... ok
[INFO] [stdout] test candle::tests::candle_quality_accessor_returns_ref ... ok
[INFO] [stdout] test bps::tests::over_10000_bps_rejected ... ok
[INFO] [stdout] test candle::tests::candle_quality_as_str_complete ... ok
[INFO] [stdout] test bps::tests::to_fraction_returns_validated_type ... ok
[INFO] [stdout] test candle::tests::candle_quality_as_str_partial ... ok
[INFO] [stdout] test bps::tests::display_format ... ok
[INFO] [stdout] test bps::tests::zero_bps_accepted ... ok
[INFO] [stdout] test candle::tests::candle_quality_default_is_complete ... ok
[INFO] [stdout] test candle::tests::candle_quality_partial_serde_roundtrip ... ok
[INFO] [stdout] test candle::tests::candle_quality_from_str_value_unknown_defaults_to_complete ... ok
[INFO] [stdout] test candle::tests::candle_quality_from_str_value_complete ... ok
[INFO] [stdout] test candle::tests::candle_quality_from_str_value_partial ... ok
[INFO] [stdout] test candle::tests::candle_range_empty_slice_returns_none ... ok
[INFO] [stdout] test candle::tests::candle_quality_display ... ok
[INFO] [stdout] test bps::tests::valid_bps_accepted ... ok
[INFO] [stdout] test candle::tests::create_valid_candle ... ok
[INFO] [stdout] test candle::tests::candle_range_multiple_candles ... ok
[INFO] [stdout] test candle::tests::timestamp_is_preserved ... ok
[INFO] [stdout] test candle::tests::candle_error_display_empty_aggregation ... ok
[INFO] [stdout] test candle::tests::high_below_low_error_contains_values ... ok
[INFO] [stdout] test candle::tests::new_candle_defaults_to_complete_quality ... ok
[INFO] [stdout] test candle::tests::serde_legacy_json_without_volume_source_defaults_to_unknown ... ok
[INFO] [stdout] test candle::tests::new_candle_defaults_to_unknown_volume_source ... ok
[INFO] [stdout] test candle::tests::candle_quality_complete_serde_roundtrip ... ok
[INFO] [stdout] test candle::tests::serde_roundtrip ... ok
[INFO] [stdout] test bps::tests::cross_type_consistency_bps_500_equals_5_percent ... ok
[INFO] [stdout] test candle::tests::serde_roundtrip_with_quality ... ok
[INFO] [stdout] test candle::tests::serde_roundtrip_with_volume_source ... ok
[INFO] [stdout] test candle::tests::volume_source_default_is_unknown ... ok
[INFO] [stdout] test candle::tests::with_volume_source_sets_trade_size ... ok
[INFO] [stdout] test candle::tests::volume_source_from_unknown_string_defaults_to_unknown ... ok
[INFO] [stdout] test candle::tests::zero_volume_succeeds ... ok
[INFO] [stdout] test candle::tests::with_quality_sets_partial ... ok
[INFO] [stdout] test crypto_classifier::tests::case_insensitive ... ok
[INFO] [stdout] test candle::tests::with_volume_source_sets_exchange_reported ... ok
[INFO] [stdout] test crypto_classifier::tests::crypto_quotes_recognized ... ok
[INFO] [stdout] test candle::tests::serde_legacy_json_without_quality_defaults_to_complete ... ok
[INFO] [stdout] test candle::tests::high_below_low_fails ... ok
[INFO] [stdout] test crypto_classifier::tests::original_bases_still_recognized ... ok
[INFO] [stdout] test currency::tests::display_shows_code ... ok
[INFO] [stdout] test candle::tests::high_equals_low_succeeds ... ok
[INFO] [stdout] test fraction::tests::negative_fraction_rejected ... ok
[INFO] [stdout] test candle::tests::candle_range_single_candle ... ok
[INFO] [stdout] test currency::tests::normalizes_to_uppercase ... ok
[INFO] [stdout] test currency::tests::from_str_ref ... ok
[INFO] [stdout] test crypto_classifier::tests::newly_added_bases_recognized ... ok
[INFO] [stdout] test fraction::tests::one_fraction_accepted ... ok
[INFO] [stdout] test currency::tests::serde_roundtrip ... ok
[INFO] [stdout] test fraction::tests::ordering_preserves_magnitude ... ok
[INFO] [stdout] test fraction::tests::over_one_fraction_rejected ... ok
[INFO] [stdout] test fraction::tests::valid_fraction_accepted ... ok
[INFO] [stdout] test fraction::tests::zero_fraction_accepted ... ok
[INFO] [stdout] test interval::tests::as_str_roundtrips_with_parse ... ok
[INFO] [stdout] test interval::tests::crypto_weekly_uses_52 ... ok
[INFO] [stdout] test interval::tests::crypto_minute_uses_525600 ... ok
[INFO] [stdout] test interval::tests::equity_daily_uses_252 ... ok
[INFO] [stdout] test interval::tests::equity_hourly_uses_1638 ... ok
[INFO] [stdout] test interval::tests::crypto_daily_uses_365_not_252 ... ok
[INFO] [stdout] test candle::tests::volume_source_as_str_roundtrip ... ok
[INFO] [stdout] test interval::tests::equity_minute_uses_98280 ... ok
[INFO] [stdout] test candle::tests::volume_source_display ... ok
[INFO] [stdout] test interval::tests::interval_duration_hour ... ok
[INFO] [stdout] test interval::tests::equity_weekly_uses_52 ... ok
[INFO] [stdout] test interval::tests::crypto_hourly_uses_8760 ... ok
[INFO] [stdout] test candle::tests::with_volume_source_sets_tick_count ... ok
[INFO] [stdout] test fraction::tests::serde_roundtrip ... ok
[INFO] [stdout] test interval::tests::lower_intervals_hour_contains_minute ... ok
[INFO] [stdout] test interval::tests::parse_alternative_formats ... ok
[INFO] [stdout] test crypto_classifier::tests::fiat_not_crypto_quote ... ok
[INFO] [stdout] test interval::tests::parse_case_insensitive ... ok
[INFO] [stdout] test interval::tests::lower_intervals_minute_is_empty ... ok
[INFO] [stdout] test interval::tests::lower_intervals_week_ordered_by_preference ... ok
[INFO] [stdout] test interval::tests::parse_daily ... ok
[INFO] [stdout] test interval::tests::parse_empty_returns_error ... ok
[INFO] [stdout] test interval::tests::interval_duration_day ... ok
[INFO] [stdout] test interval::tests::parse_hourly ... ok
[INFO] [stdout] test interval::tests::interval_duration_minute ... ok
[INFO] [stdout] test interval::tests::parse_unknown_returns_error ... ok
[INFO] [stdout] test interval::tests::parse_weekly ... ok
[INFO] [stdout] test interval::tests::lower_intervals_day_ordered_by_preference ... ok
[INFO] [stdout] test interval::tests::serde_roundtrip ... ok
[INFO] [stdout] test percentage::tests::as_fraction_fifty ... ok
[INFO] [stdout] test percentage::tests::as_fraction_hundred ... ok
[INFO] [stdout] test interval::tests::interval_duration_week ... ok
[INFO] [stdout] test percentage::tests::fractional_percentage ... ok
[INFO] [stdout] test percentage::tests::as_fraction_zero ... ok
[INFO] [stdout] test percentage::tests::display_fifty ... ok
[INFO] [stdout] test percentage::tests::new_valid ... ok
[INFO] [stdout] test interval::tests::interval_error_display_contains_input ... ok
[INFO] [stdout] test percentage::tests::ordering ... ok
[INFO] [stdout] test position_config::tests::max_pct_above_one_rejected ... ok
[INFO] [stdout] test percentage::tests::serde_roundtrip ... ok
[INFO] [stdout] test position_config::tests::default_is_conservative ... ok
[INFO] [stdout] test position_config::tests::getters_match_construction ... ok
[INFO] [stdout] test position_config::tests::max_pct_boundary_one ... ok
[INFO] [stdout] test position_config::tests::max_pct_boundary_zero ... ok
[INFO] [stdout] test position_config::tests::risk_pct_above_one_rejected ... ok
[INFO] [stdout] test position_config::tests::risk_pct_below_zero_rejected ... ok
[INFO] [stdout] test position_config::tests::risk_pct_none_valid ... ok
[INFO] [stdout] test position_config::tests::valid_config ... ok
[INFO] [stdout] test precision_boundary::tests::decimal_to_f64_max_decimal_still_finite ... ok
[INFO] [stdout] test precision_boundary::tests::decimal_to_f64_preserves_negative ... ok
[INFO] [stdout] test precision_boundary::tests::decimal_to_f64_preserves_typical_z_score ... ok
[INFO] [stdout] test position_config::tests::max_pct_below_zero_rejected ... ok
[INFO] [stdout] test precision_boundary::tests::decimal_to_f64_zero ... ok
[INFO] [stdout] test precision_boundary::tests::error_display_includes_kind ... ok
[INFO] [stdout] test precision_boundary::tests::f64_to_decimal_preserves_sign ... ok
[INFO] [stdout] test precision_boundary::tests::f64_to_decimal_rejects_nan ... ok
[INFO] [stdout] test precision_boundary::tests::f64_to_decimal_rejects_negative_infinity ... ok
[INFO] [stdout] test percentage::tests::display_zero ... ok
[INFO] [stdout] test percentage::tests::from_trusted_valid ... ok
[INFO] [stdout] test percentage::tests::new_hundred_boundary ... ok
[INFO] [stdout] test percentage::tests::new_negative_rejected ... ok
[INFO] [stdout] test percentage::tests::new_over_hundred_rejected ... ok
[INFO] [stdout] test percentage::tests::new_zero_boundary ... ok
[INFO] [stdout] test crypto_classifier::tests::non_crypto_rejected ... ok
[INFO] [stdout] test precision_boundary::tests::f64_to_decimal_zero_is_exact ... ok
[INFO] [stdout] test currency::tests::equality_is_case_insensitive ... ok
[INFO] [stdout] test precision_boundary::tests::roundtrip_is_stable_within_scale ... ok
[INFO] [stdout] test symbol::tests::canonical_format ... ok
[INFO] [stdout] test currency::tests::hash_consistency ... ok
[INFO] [stdout] test precision_boundary::tests::f64_to_decimal_rejects_value_above_decimal_max ... ok
[INFO] [stdout] test symbol::tests::parse_dash_format ... ok
[INFO] [stdout] test precision_boundary::tests::f64_to_decimal_rounds_to_canonical_scale ... ok
[INFO] [stdout] test precision_boundary::tests::f64_to_decimal_rejects_positive_infinity ... ok
[INFO] [stdout] test symbol::tests::parse_normalizes_to_uppercase ... ok
[INFO] [stdout] test symbol::tests::parse_slash_format ... ok
[INFO] [stdout] test fraction::tests::display_format ... ok
[INFO] [stdout] test symbol::tests::is_crypto_false_for_fiat ... ok
[INFO] [stdout] test symbol::tests::is_crypto_true_for_btc_eth_pairs ... ok
[INFO] [stdout] test symbol::tests::parse_invalid_format_returns_error ... ok
[INFO] [stdout] test symbol::tests::is_crypto_true_for_crypto_base_with_fiat_quote ... ok
[INFO] [stdout] test symbol::tests::is_crypto_false_for_equities_with_fiat_quote ... ok
[INFO] [stdout] test symbol::tests::is_crypto_true_for_stablecoins ... ok
[INFO] [stdout] test symbol::tests::serde_roundtrip ... ok
[INFO] [stdout] test precision_boundary::tests::non_finite_kind_display_matches_variant ... ok
[INFO] [stdout] test taxonomy::tests::asset_class_from_str_aliases ... ok
[INFO] [stdout] test taxonomy::tests::asset_class_from_str_all_variants ... ok
[INFO] [stdout] test taxonomy::tests::asset_class_from_str_case_insensitive ... ok
[INFO] [stdout] test taxonomy::tests::asset_class_from_str_rejects_unknown ... ok
[INFO] [stdout] test taxonomy::tests::asset_class_serde_roundtrip ... ok
[INFO] [stdout] test symbol::tests::symbol_error_display_contains_input ... ok
[INFO] [stdout] test taxonomy::tests::derivative_debug_format ... ok
[INFO] [stdout] test taxonomy::tests::derivative_serde_roundtrip ... ok
[INFO] [stdout] test taxonomy::tests::derivative_variants_are_distinct ... ok
[INFO] [stdout] test taxonomy::tests::display_matches_canonical ... ok
[INFO] [stdout] test taxonomy::tests::from_str_infers_equity_from_non_crypto_base_with_usd ... ok
[INFO] [stdout] test taxonomy::tests::asset_type_spot_vs_derivative ... ok
[INFO] [stdout] test taxonomy::tests::asset_type_derivative_variants_are_distinct ... ok
[INFO] [stdout] test taxonomy::tests::from_str_infers_crypto_from_crypto_base_with_usd ... ok
[INFO] [stdout] test taxonomy::tests::canonical_roundtrip_through_parse ... ok
[INFO] [stdout] test symbol::tests::parse_empty_returns_error ... ok
[INFO] [stdout] test taxonomy::tests::from_str_rejects_empty ... ok
[INFO] [stdout] test taxonomy::tests::from_str_normalizes_case ... ok
[INFO] [stdout] test taxonomy::tests::from_str_infers_crypto_from_crypto_quote ... ok
[INFO] [stdout] test taxonomy::tests::asset_type_serde_roundtrip ... ok
[INFO] [stdout] test taxonomy::tests::from_str_rejects_empty_quote ... ok
[INFO] [stdout] test taxonomy::tests::from_str_rejects_empty_base ... ok
[INFO] [stdout] test taxonomy::tests::same_underlying_across_venues ... ok
[INFO] [stdout] test taxonomy::tests::from_str_rejects_too_many_parts ... ok
[INFO] [stdout] test taxonomy::tests::from_str_valid_ticker ... ok
[INFO] [stdout] test taxonomy::tests::from_str_rejects_no_separator ... ok
[INFO] [stdout] test taxonomy::tests::ticker_serde_roundtrip ... ok
[INFO] [stdout] test taxonomy::tests::ticker_stores_asset_type_perp ... ok
[INFO] [stdout] test taxonomy::tests::ticker_error_display_contains_input ... ok
[INFO] [stdout] test taxonomy::tests::underlying_stores_asset_class ... ok
[INFO] [stdout] test taxonomy::tests::ticker_stores_asset_type_spot ... ok
[INFO] [stdout] test taxonomy::tests::venue_type_debug_format ... ok
[INFO] [stdout] test taxonomy::tests::ticker_stores_underlying ... ok
[INFO] [stdout] test taxonomy::tests::underlying_equality ... ok
[INFO] [stdout] test taxonomy::tests::ticker_stores_venue_type ... ok
[INFO] [stdout] test taxonomy::tests::underlying_stores_canonical_uppercase ... ok
[INFO] [stdout] test taxonomy::tests::venue_type_serde_roundtrip ... ok
[INFO] [stdout] test taxonomy::tests::ticker_canonical_format ... ok
[INFO] [stdout] test taxonomy::tests::ticker_normalizes_quote_uppercase ... ok
[INFO] [stdout] test taxonomy::tests::venue_type_all_variants_distinct ... ok
[INFO] [stdout] test taxonomy::tests::underlying_serde_roundtrip ... ok
[INFO] [stdout] test bps::tests::from_trusted_panics_on_invalid - should panic ... ok
[INFO] [stdout] test percentage::tests::from_trusted_panics_over_hundred - should panic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 188 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests quant_primitives
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test src/precision_boundary.rs - precision_boundary::decimal_to_f64_checked (line 112) ... ignored
[INFO] [stdout] test src/precision_boundary.rs - precision_boundary::f64_to_decimal_checked (line 138) ... ignored
[INFO] [stdout] test src/percentage.rs - percentage::Percentage::is_likely_fraction (line 67) ... ok
[INFO] [stdout] test src/precision_boundary.rs - precision_boundary::f64_to_decimal_checked (line 144) ... ok
[INFO] [stdout] test src/precision_boundary.rs - precision_boundary::decimal_to_f64_checked (line 118) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.38s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9", kill_on_drop: false }`
[INFO] [stdout] cf4a9b9ab975ff92ba97203c686732ce9d1270f60b224c792caa0c1773bb62c9
