[INFO] fetching crate tirami-ledger 0.3.0...
[INFO] testing tirami-ledger-0.3.0 against 1.95.0 for beta-1.96-2
[INFO] extracting crate tirami-ledger 0.3.0 into /workspace/builds/worker-4-tc1/source
[INFO] started tweaking crates.io crate tirami-ledger 0.3.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate tirami-ledger 0.3.0
[INFO] tweaked toml for crates.io crate tirami-ledger 0.3.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate tirami-ledger 0.3.0 on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate tirami-ledger 0.3.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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tungstenite v0.24.0
[INFO] [stderr]   Downloaded tirami-core v0.3.0
[INFO] [stderr]   Downloaded tirami-proto v0.3.0
[INFO] [stderr]   Downloaded tokio-tungstenite v0.24.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 57ce9628fb0f4b910e390f3723c2fac84caab44829619c96ff5cb0be4468fab4
[INFO] running `Command { std: "docker" "start" "-a" "57ce9628fb0f4b910e390f3723c2fac84caab44829619c96ff5cb0be4468fab4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "57ce9628fb0f4b910e390f3723c2fac84caab44829619c96ff5cb0be4468fab4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "57ce9628fb0f4b910e390f3723c2fac84caab44829619c96ff5cb0be4468fab4", kill_on_drop: false }`
[INFO] [stdout] 57ce9628fb0f4b910e390f3723c2fac84caab44829619c96ff5cb0be4468fab4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8f0824d3de138c2e0ebb1520d4f6caaac1494eb76774603a27f469f537987e3c
[INFO] running `Command { std: "docker" "start" "-a" "8f0824d3de138c2e0ebb1520d4f6caaac1494eb76774603a27f469f537987e3c", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling bitcoin-io v0.1.4
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling bitcoin-internals v0.3.0
[INFO] [stderr]    Compiling hex-conservative v0.2.2
[INFO] [stderr]    Compiling rustls-webpki v0.103.10
[INFO] [stderr]    Compiling secp256k1-sys v0.10.1
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling hex_lit v0.1.1
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling webpki-roots v1.0.6
[INFO] [stderr]    Compiling prometheus v0.13.4
[INFO] [stderr]    Compiling bitcoin v0.32.8
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling bech32 v0.11.1
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling bitcoin_hashes v0.14.1
[INFO] [stderr]    Compiling bitcoin-units v0.1.2
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling base58ck v0.1.0
[INFO] [stderr]    Compiling secp256k1 v0.29.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tungstenite v0.24.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling ed25519 v2.2.3
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling ed25519-dalek v2.2.0
[INFO] [stderr]    Compiling tirami-core v0.3.0
[INFO] [stderr]    Compiling tirami-proto v0.3.0
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling tirami-ledger v0.3.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: constant `MAX_POSTS_PER_AGENT` is never used
[INFO] [stdout]   --> src/agentnet.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const MAX_POSTS_PER_AGENT: usize = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 41.15s
[INFO] running `Command { std: "docker" "inspect" "8f0824d3de138c2e0ebb1520d4f6caaac1494eb76774603a27f469f537987e3c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8f0824d3de138c2e0ebb1520d4f6caaac1494eb76774603a27f469f537987e3c", kill_on_drop: false }`
[INFO] [stdout] 8f0824d3de138c2e0ebb1520d4f6caaac1494eb76774603a27f469f537987e3c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5d0b40f0e22edb93c4e67477f6eb9125998eee29b293e10abb74895f7fd53935
[INFO] running `Command { std: "docker" "start" "-a" "5d0b40f0e22edb93c4e67477f6eb9125998eee29b293e10abb74895f7fd53935", kill_on_drop: false }`
[INFO] [stderr]    Compiling tirami-ledger v0.3.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: constant `MAX_POSTS_PER_AGENT` is never used
[INFO] [stdout]   --> src/agentnet.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const MAX_POSTS_PER_AGENT: usize = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_POSTS_PER_AGENT` is never used
[INFO] [stdout]   --> src/agentnet.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const MAX_POSTS_PER_AGENT: usize = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 6.30s
[INFO] running `Command { std: "docker" "inspect" "5d0b40f0e22edb93c4e67477f6eb9125998eee29b293e10abb74895f7fd53935", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5d0b40f0e22edb93c4e67477f6eb9125998eee29b293e10abb74895f7fd53935", kill_on_drop: false }`
[INFO] [stdout] 5d0b40f0e22edb93c4e67477f6eb9125998eee29b293e10abb74895f7fd53935
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 50f6b2fb3578c391d870b7486557c354e54015174d41689d48bd06a6a8af637e
[INFO] running `Command { std: "docker" "start" "-a" "50f6b2fb3578c391d870b7486557c354e54015174d41689d48bd06a6a8af637e", kill_on_drop: false }`
[INFO] [stderr] warning: constant `MAX_POSTS_PER_AGENT` is never used
[INFO] [stderr]   --> src/agentnet.rs:14:7
[INFO] [stderr]    |
[INFO] [stderr] 14 | const MAX_POSTS_PER_AGENT: usize = 100;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `tirami-ledger` (lib) generated 1 warning
[INFO] [stderr] warning: `tirami-ledger` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.15s
[INFO] [stdout] 
[INFO] [stdout] running 234 tests
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/tirami_ledger-69343bfd9265302b)
[INFO] [stdout] test agentnet::tests::discover_by_tag ... ok
[INFO] [stdout] test agentnet::tests::tip_and_endorsement ... ok
[INFO] [stdout] test agentnet::tests::search_posts ... ok
[INFO] [stdout] test agora::tests::handler_event_has_correct_kind ... ok
[INFO] [stdout] test agora::tests::invalid_pubkey_is_rejected ... ok
[INFO] [stdout] test agora::tests::job_request_event_has_correct_kind ... ok
[INFO] [stdout] test agentnet::tests::leaderboard ... ok
[INFO] [stdout] test anchor::tests::sec_anchor_payload_reserved_bytes_are_zero ... ok
[INFO] [stdout] test anchor::tests::sec_anchor_payload_version_always_0x01 ... ok
[INFO] [stdout] test anchor::tests::sec_anchor_script_never_exceeds_80_bytes ... ok
[INFO] [stdout] test anchor::tests::test_anchor_request_round_trip_serde ... ok
[INFO] [stdout] test anchor::tests::test_payload_differs_across_networks ... ok
[INFO] [stdout] test anchor::tests::test_payload_has_correct_length ... ok
[INFO] [stdout] test anchor::tests::test_payload_magic_and_version ... ok
[INFO] [stdout] test agora::tests::kind_constants_match_nip90 ... ok
[INFO] [stdout] test agentnet::tests::post_and_feed ... ok
[INFO] [stdout] test agora::tests::tier_label_round_trip ... ok
[INFO] [stdout] test agora_relay::tests::test_publish_event_invalid_url_returns_relay_error ... ok
[INFO] [stdout] test anchor::tests::sec_anchor_payload_merkle_root_occupies_bytes_8_to_40 ... ok
[INFO] [stdout] test anchor::tests::test_payload_network_flags ... ok
[INFO] [stdout] test anchor::tests::test_script_fits_standard_relay_limit ... ok
[INFO] [stdout] test anchor::tests::test_script_has_op_return_prefix ... ok
[INFO] [stdout] test anchor::tests::test_tx_skeleton_has_single_op_return_output ... ok
[INFO] [stdout] test bitvm::tests::sec_fraud_proof_non_diverging_evidence_rejected ... ok
[INFO] [stdout] test bitvm::tests::sec_fraud_proof_rejects_wrong_merkle_root ... ok
[INFO] [stdout] test bitvm::tests::sec_fraud_proof_single_byte_evidence_rejected ... ok
[INFO] [stdout] test agora::tests::handler_event_includes_model_tags ... ok
[INFO] [stdout] test bitvm::tests::sec_staked_claim_below_min_stake_rejected ... ok
[INFO] [stdout] test bitvm::tests::test_all_fraud_types_serialize ... ok
[INFO] [stdout] test bitvm::tests::sec_fraud_proof_empty_evidence_rejected ... ok
[INFO] [stdout] test bitvm::tests::sec_staked_claim_zero_stake_rejected ... ok
[INFO] [stdout] test bitvm::tests::test_error_messages_are_human_readable ... ok
[INFO] [stdout] test bitvm::tests::test_mock_verifier_rejects_non_fraud_evidence ... ok
[INFO] [stdout] test bitvm::tests::sec_staked_claim_expired_window_not_challengeable ... ok
[INFO] [stdout] test bitvm::tests::test_is_challengeable_within_window ... ok
[INFO] [stdout] test bitvm::tests::test_new_claim_accepts_large_stake ... ok
[INFO] [stdout] test bitvm::tests::test_mock_verifier_rejects_wrong_root ... ok
[INFO] [stdout] test bitvm::tests::test_new_claim_rejects_insufficient_stake ... ok
[INFO] [stdout] test bitvm::tests::test_new_claim_accepts_min_stake ... ok
[INFO] [stdout] test bitvm::tests::test_mock_verifier_rejects_short_evidence ... ok
[INFO] [stdout] test anchor::tests::sec_anchor_payload_always_exactly_40_bytes ... ok
[INFO] [stdout] test anchor::tests::sec_anchor_payload_magic_never_corrupted ... ok
[INFO] [stdout] test anchor::tests::sec_anchor_script_opcode_is_op_return ... ok
[INFO] [stdout] test bitvm::tests::test_fraud_proof_serde_round_trip ... ok
[INFO] [stdout] test agentnet::tests::profile_upsert_and_retrieve ... ok
[INFO] [stdout] test bitvm::tests::test_mock_verifier_accepts_valid_proof ... ok
[INFO] [stdout] test bitvm::tests::test_staked_claim_serde_round_trip ... ok
[INFO] [stdout] test agora::tests::job_result_event_has_correct_kind ... ok
[INFO] [stdout] test collusion::tests::test_analyze_node_with_no_trades_returns_zero_penalty ... ok
[INFO] [stdout] test collusion::tests::test_healthy_diverse_trader_gets_zero_penalty ... ok
[INFO] [stdout] test ledger::tests::contribution_increases_balance ... ok
[INFO] [stdout] test ledger::tests::canonical_bytes_differs_for_different_trades ... ok
[INFO] [stdout] test ledger::tests::execute_trade_releases_reservation ... ok
[INFO] [stdout] test ledger::tests::free_tier_for_new_nodes ... ok
[INFO] [stdout] test collusion::tests::test_volume_spike_detects_bursty_pattern ... ok
[INFO] [stdout] test ledger::tests::consumption_decreases_balance ... ok
[INFO] [stdout] test ledger::tests::canonical_bytes_is_deterministic ... ok
[INFO] [stdout] test ledger::tests::merkle_root_empty_log ... ok
[INFO] [stdout] test ledger::tests::merkle_root_is_deterministic ... ok
[INFO] [stdout] test ledger::tests::prepare_anchor_data_returns_80_bytes ... ok
[INFO] [stdout] test collusion::tests::test_trust_penalty_clamped_to_max ... ok
[INFO] [stdout] test ledger::tests::recent_trades_returns_newest_first ... ok
[INFO] [stdout] test collusion::tests::test_round_robin_detects_closed_3_node_loop ... ok
[INFO] [stdout] test ledger::tests::network_stats ... ok
[INFO] [stdout] test agora_relay::tests::test_publish_event_connect_failure_returns_relay_error ... ok
[INFO] [stdout] test ledger::tests::sec_circuit_breaker_trips_on_high_default_rate ... ok
[INFO] [stdout] test ledger::tests::sec_contributed_saturates_on_massive_trade ... ok
[INFO] [stdout] test ledger::tests::sec_collusion_detector_flags_tight_cluster_of_20_trades ... ok
[INFO] [stdout] test ledger::tests::market_price_adjusts ... ok
[INFO] [stdout] test ledger::tests::sec_deep_can_afford_very_large_amount_blocked ... ok
[INFO] [stdout] test ledger::tests::cu_deflation_increases_purchasing_power ... ok
[INFO] [stdout] test ledger::tests::deflation_factor_never_zero ... ok
[INFO] [stdout] test ledger::tests::ema_price_smoothing ... ok
[INFO] [stdout] test ledger::tests::sec_deep_collusion_detector_empty_trades_no_panic ... ok
[INFO] [stdout] test ledger::tests::sec_deep_collusion_single_trade_below_threshold_no_penalty ... ok
[INFO] [stdout] test ledger::tests::sec_deep_effective_reputation_with_nan_base_clamps ... ok
[INFO] [stdout] test ledger::tests::sec_deep_infinity_reputation_delta_clamped ... ok
[INFO] [stdout] test ledger::tests::sec_deep_lending_pool_interest_overflow_guard ... ok
[INFO] [stdout] test ledger::tests::sec_deep_lending_pool_status_empty_pool_no_nan ... ok
[INFO] [stdout] test ledger::tests::sec_deep_market_price_nan_fields_do_not_cause_infinite_cost ... ok
[INFO] [stdout] test ledger::tests::sec_deep_max_observations_cap_enforced ... ok
[INFO] [stdout] test ledger::tests::sec_deep_consensus_all_below_min_weight_returns_local ... ok
[INFO] [stdout] test ledger::tests::sec_deep_consensus_reputation_no_remote_obs_returns_local ... ok
[INFO] [stdout] test ledger::tests::sec_deep_nan_delta_reputation_result_sanitised ... ok
[INFO] [stdout] test ledger::tests::sec_deep_nan_reputation_clamp_behavior_documented ... ok
[INFO] [stdout] test ledger::tests::sec_deep_negative_infinity_reputation_delta_clamped ... ok
[INFO] [stdout] test ledger::tests::sec_deep_network_stats_empty_ledger_no_nan ... ok
[INFO] [stdout] test ledger::tests::sec_deep_pool_available_equals_total_when_nothing_lent ... ok
[INFO] [stdout] test ledger::tests::sec_deep_reputation_yield_with_nan_uptime_does_not_corrupt ... ok
[INFO] [stdout] test ledger::tests::sec_deep_self_trade_rejected ... ok
[INFO] [stdout] test ledger::tests::sec_deep_estimate_cost_zero_model_layers_does_not_panic ... ok
[INFO] [stdout] test ledger::tests::sec_deep_zero_cu_trade_rejected ... ok
[INFO] [stdout] test ledger::tests::hmac_sha256_hash_format ... ok
[INFO] [stdout] test ledger::tests::sec_deep_zero_pool_total_reserve_ratio_sentinel ... ok
[INFO] [stdout] test ledger::tests::ledger_roundtrip_persists_to_disk ... ok
[INFO] [stdout] test ledger::tests::sec_deep_single_dishonest_observer_cannot_shift_median_far ... ok
[INFO] [stdout] test ledger::tests::sec_deep_zero_token_estimate_cost_is_zero ... ok
[INFO] [stdout] test ledger::tests::sec_deep_apply_yield_with_negative_uptime_does_not_corrupt ... ok
[INFO] [stdout] test ledger::tests::reputation_adjusted_cost_penalizes_low_rep ... ok
[INFO] [stdout] test ledger::tests::sec_effective_reputation_below_consensus_on_wash_trading ... ok
[INFO] [stdout] test ledger::tests::reserve_and_release_cu ... ok
[INFO] [stdout] test ledger::tests::sec_circuit_breaker_velocity_limit_enforced ... ok
[INFO] [stdout] test ledger::tests::sec_ledger_rejects_json_null_content ... ok
[INFO] [stdout] test ledger::tests::sec_hmac_save_load_roundtrip_preserves_integrity ... ok
[INFO] [stdout] test ledger::tests::sec_ledger_rejects_truncated_file_does_not_panic ... ok
[INFO] [stdout] test ledger::tests::sec_hmac_detects_reordered_trades ... ok
[INFO] [stdout] test ledger::tests::sec_merkle_single_trade_differs_from_two_trades ... ok
[INFO] [stdout] test ledger::tests::sec_hmac_detects_deleted_trade ... ok
[INFO] [stdout] test ledger::tests::sec_repay_nonexistent_loan_returns_not_found ... ok
[INFO] [stdout] test ledger::tests::sec_merkle_root_changes_with_provider_field ... ok
[INFO] [stdout] test ledger::tests::sec_reputation_clamped_at_0_0_lower_bound ... ok
[INFO] [stdout] test ledger::tests::sec_reputation_clamped_at_1_0_upper_bound ... ok
[INFO] [stdout] test ledger::tests::sec_reserve_ratio_cannot_be_drained_below_minimum ... ok
[INFO] [stdout] test ledger::tests::ledger_execute_signed_trade ... ok
[INFO] [stdout] test ledger::tests::sec_self_trade_does_not_inflate_balance ... ok
[INFO] [stdout] test ledger::tests::sec_signed_trade_rejects_all_ff_provider_sig ... ok
[INFO] [stdout] test collusion::tests::test_tight_cluster_flags_90_percent_concentration ... ok
[INFO] [stdout] test ledger::tests::merkle_root_changes_with_new_trades ... ok
[INFO] [stdout] test ledger::tests::sec_deep_credit_score_unknown_node_returns_cold_start ... ok
[INFO] [stdout] test ledger::tests::sec_signed_trade_rejects_crossed_signatures ... ok
[INFO] [stdout] test ledger::tests::sec_tampered_trade_trm_amount_detected_by_hmac ... ok
[INFO] [stdout] test ledger::tests::sec_tampered_integrity_hash_detected ... ok
[INFO] [stdout] test ledger::tests::sec_unsigned_reputation_observation_not_merged ... ok
[INFO] [stdout] test ledger::tests::sec_welcome_loan_rejected_for_already_known_node ... ok
[INFO] [stdout] test ledger::tests::sec_welcome_loan_sybil_threshold_blocks_when_exceeded ... ok
[INFO] [stdout] test ledger::tests::sec_zero_cu_trade_does_not_pollute_trade_log ... ok
[INFO] [stdout] test ledger::tests::self_trade_is_rejected ... ok
[INFO] [stdout] test ledger::tests::settlement_includes_merkle_root ... ok
[INFO] [stdout] test ledger::tests::sec_signed_trade_rejects_flipped_bit_in_consumer_sig ... ok
[INFO] [stdout] test ledger::tests::settlement_statement_aggregates_nodes_in_window ... ok
[INFO] [stdout] test ledger::tests::signed_trade_rejects_wrong_signature ... ok
[INFO] [stdout] test ledger::tests::sybil_free_tier_decays_for_non_contributors ... ok
[INFO] [stdout] test ledger::tests::sec_ltv_exactly_at_max_is_accepted ... ok
[INFO] [stdout] test ledger::tests::test_compute_credit_score_new_node ... ok
[INFO] [stdout] test ledger::tests::sec_signed_loan_rejects_tampered_term_hours ... ok
[INFO] [stdout] test ledger::tests::tampered_ledger_is_rejected ... ok
[INFO] [stdout] test ledger::tests::test_consensus_reputation_weighted_median_with_outlier ... ok
[INFO] [stdout] test ledger::tests::test_consensus_reputation_with_no_observations_returns_local ... ok
[INFO] [stdout] test ledger::tests::sec_cannot_borrow_more_than_pool_available ... ok
[INFO] [stdout] test ledger::tests::test_compute_credit_score_with_trades ... ok
[INFO] [stdout] test ledger::tests::sec_repay_defaulted_loan_rejected ... ok
[INFO] [stdout] test ledger::tests::sec_borrow_below_min_credit_rejected ... ok
[INFO] [stdout] test ledger::tests::sec_forged_reputation_observation_rejected ... ok
[INFO] [stdout] test ledger::tests::test_effective_reputation_subtracts_collusion_penalty ... ok
[INFO] [stdout] test ledger::tests::test_merge_remote_reputation_rejects_unsigned_observation ... ok
[INFO] [stdout] test ledger::tests::test_create_loan_rejects_excessive_ltv ... ok
[INFO] [stdout] test ledger::tests::test_model_tier_pricing ... ok
[INFO] [stdout] test ledger::tests::sec_max_loan_term_enforced ... ok
[INFO] [stdout] test ledger::tests::test_record_remote_reputation_caps_observations_per_node ... ok
[INFO] [stdout] test ledger::tests::sec_duplicate_loan_id_rejected ... ok
[INFO] [stdout] test ledger::tests::test_merge_remote_reputation_updates_node_balance ... ok
[INFO] [stdout] test ledger::tests::trade_execution ... ok
[INFO] [stdout] test ledger::tests::sec_double_repay_same_loan_is_rejected ... ok
[INFO] [stdout] test ledger::tests::sec_default_before_due_date_rejected ... ok
[INFO] [stdout] test ledger::tests::sec_zero_collateral_rejected_as_infinite_ltv ... ok
[INFO] [stdout] test ledger::tests::sec_ltv_ratio_enforced_at_boundary ... ok
[INFO] [stdout] test ledger::tests::welcome_loan_amount_matches_parameters ... ok
[INFO] [stdout] test ledger::tests::sec_signed_loan_rejects_forged_borrower_signature ... ok
[INFO] [stdout] test ledger::tests::test_persisted_ledger_round_trips_loans ... ok
[INFO] [stdout] test ledger::tests::test_create_loan_transfers_principal ... ok
[INFO] [stdout] test ledger::tests::sec_single_loan_pool_percentage_enforced ... ok
[INFO] [stdout] test ledger::tests::signed_trade_verification_with_real_keys ... ok
[INFO] [stdout] test ledger::tests::test_create_loan_rejects_excessive_term ... ok
[INFO] [stdout] test ledger::tests::test_create_loan_rejects_low_credit ... ok
[INFO] [stdout] test ledger::tests::test_default_loan_burns_collateral ... ok
[INFO] [stdout] test ledger::tests::test_lending_pool_status_reflects_activity ... ok
[INFO] [stdout] test ledger::tests::test_repay_loan_releases_collateral ... ok
[INFO] [stdout] test ledger::tests::test_repay_loan_pays_interest_to_lender ... ok
[INFO] [stdout] test ledger::tests::yield_accumulation ... ok
[INFO] [stdout] test lending::tests::model_tier_base_prices_match_spec ... ok
[INFO] [stdout] test lending::tests::model_tier_classification ... ok
[INFO] [stdout] test metrics::tests::test_new_metrics_registers_all_gauges ... ok
[INFO] [stdout] test lending::tests::age_score_saturates_at_cap ... ok
[INFO] [stdout] test lending::tests::perfect_credit_gets_base_rate ... ok
[INFO] [stdout] test lending::tests::credit_score_weights_sum_to_one ... ok
[INFO] [stdout] test lending::tests::loan_id_is_deterministic ... ok
[INFO] [stdout] test lending::tests::loan_total_interest_matches_formula ... ok
[INFO] [stdout] test lending::tests::max_borrowable_is_quadratic_in_credit ... ok
[INFO] [stdout] test lending::tests::compute_credit_score_from_all_ones_equals_one ... ok
[INFO] [stdout] test metrics::tests::test_observe_populates_collusion_metrics_for_traders ... ok
[INFO] [stdout] test metrics::tests::test_observe_populates_reputation_gauge ... ok
[INFO] [stdout] test lending::tests::cold_start_credit_is_between_min_and_target ... ok
[INFO] [stdout] test metrics::tests::test_observe_global_trade_count_gauge ... ok
[INFO] [stdout] test lending::tests::trade_score_saturates_at_cap ... ok
[INFO] [stdout] test safety::tests::consecutive_errors_trip_circuit_breaker ... ok
[INFO] [stdout] test safety::tests::default_rate_tracking_works ... ok
[INFO] [stdout] test safety::tests::custom_policy_per_node ... ok
[INFO] [stdout] test safety::tests::hourly_limit_enforced ... ok
[INFO] [stdout] test safety::tests::kill_switch_blocks_all_spends ... ok
[INFO] [stdout] test safety::tests::lifetime_cap_enforced ... ok
[INFO] [stdout] test safety::tests::loan_denied_for_excessive_ltv ... ok
[INFO] [stdout] test safety::tests::loan_denied_for_excessive_term ... ok
[INFO] [stdout] test safety::tests::loan_denied_when_kill_switch_active ... ok
[INFO] [stdout] test safety::tests::loan_denied_when_reserve_ratio_would_fall_below_30pct ... ok
[INFO] [stdout] test safety::tests::loan_permitted_under_all_constraints ... ok
[INFO] [stdout] test safety::tests::per_request_limit_enforced ... ok
[INFO] [stdout] test safety::tests::sec_deep_check_loan_with_zero_collateral_returns_ltv_error ... ok
[INFO] [stdout] test safety::tests::sec_deep_check_loan_nan_credit_behavior_documented ... ok
[INFO] [stdout] test safety::tests::sec_deep_lending_circuit_breaker_auto_resets_after_5min ... ok
[INFO] [stdout] test safety::tests::sec_deep_lending_circuit_velocity_zero_on_empty ... ok
[INFO] [stdout] test safety::tests::loan_denied_for_low_credit ... ok
[INFO] [stdout] test safety::tests::sec_deep_lending_circuit_zero_default_rate_is_zero ... ok
[INFO] [stdout] test safety::tests::sec_deep_zero_lifetime_cap_blocks_all_spends ... ok
[INFO] [stdout] test safety::tests::sec_deep_zero_max_cu_per_hour_blocks_all_spends ... ok
[INFO] [stdout] test zk::tests::sec_mock_verifier_rejects_proof_for_different_model ... ok
[INFO] [stdout] test safety::tests::velocity_trips_circuit_breaker ... ok
[INFO] [stdout] test safety::tests::loan_denied_when_single_loan_exceeds_pool_cap ... ok
[INFO] [stdout] test zk::tests::sec_mock_verifier_rejects_proof_with_all_zero_proof_bytes ... ok
[INFO] [stdout] test zk::tests::sec_mock_verifier_rejects_tampered_prover_field ... ok
[INFO] [stdout] test zk::tests::sec_mock_verifier_rejects_tampered_generated_at_ms ... ok
[INFO] [stdout] test zk::tests::sec_mock_verifier_rejects_single_byte_flip ... ok
[INFO] [stdout] test zk::tests::sec_mock_verifier_rejects_empty_proof_bytes ... ok
[INFO] [stdout] test safety::tests::sec_deep_kill_switch_blocks_all_spending_operations ... ok
[INFO] [stdout] test zk::tests::sec_verifier_registry_rejects_empty_backend_string ... ok
[INFO] [stdout] test zk::tests::sec_verifier_registry_rejects_unregistered_backend_fake ... ok
[INFO] [stdout] test safety::tests::velocity_limit_trips_after_many_loans ... ok
[INFO] [stdout] test zk::tests::test_mock_verifier_accepts_valid_proof ... ok
[INFO] [stdout] test zk::tests::test_mock_verifier_rejects_zero_token_count ... ok
[INFO] [stdout] test zk::tests::test_mock_verifier_rejects_all_zero_model_hash ... ok
[INFO] [stdout] test zk::tests::test_proof_canonical_bytes_deterministic ... ok
[INFO] [stdout] test zk::tests::test_mock_verifier_rejects_all_zero_prompt_hash ... ok
[INFO] [stdout] test zk::tests::test_proof_dedup_key_changes_with_any_field ... ok
[INFO] [stdout] test zk::tests::test_verifier_registry_dispatches_by_backend ... ok
[INFO] [stdout] test zk::tests::test_verifier_registry_rejects_unknown_backend ... ok
[INFO] [stdout] test zk::tests::test_proof_dedup_key_ignores_proof_bytes_and_public_inputs ... ok
[INFO] [stdout] test zk::tests::test_mock_verifier_rejects_tampered_proof_bytes ... ok
[INFO] [stdout] test zk::tests::test_mock_verifier_rejects_wrong_backend ... ok
[INFO] [stdout] test lending::tests::loan_canonical_bytes_are_deterministic ... ok
[INFO] [stdout] test metrics::tests::test_encode_returns_valid_openmetrics ... ok
[INFO] [stdout] test safety::tests::sec_deep_budget_policy_exactly_at_hourly_limit_allowed_then_blocked ... ok
[INFO] [stdout] test zk::tests::test_mock_verifier_rejects_version_mismatch ... ok
[INFO] [stdout] test lending::tests::zero_credit_gets_full_risk_premium ... ok
[INFO] [stdout] test lending::tests::signed_loan_round_trips ... ok
[INFO] [stdout] test ledger::tests::zero_cu_trade_is_rejected ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 234 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/loan_propagation.rs (/opt/rustwide/target/debug/deps/loan_propagation-fe8044caa51a34ff)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test loan_gossip_rejects_tampered_signature ... ok
[INFO] [stdout] test loan_gossip_preserves_repay_flow ... ok
[INFO] [stdout] test loan_propagates_from_one_ledger_to_another ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests tirami_ledger
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/agora.rs - agora (line 23) - compile ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 2.30s; merged doctests compilation took 2.14s
[INFO] running `Command { std: "docker" "inspect" "50f6b2fb3578c391d870b7486557c354e54015174d41689d48bd06a6a8af637e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "50f6b2fb3578c391d870b7486557c354e54015174d41689d48bd06a6a8af637e", kill_on_drop: false }`
[INFO] [stdout] 50f6b2fb3578c391d870b7486557c354e54015174d41689d48bd06a6a8af637e
