1this derivation will be built:2 /nix/store/ymkawqxdd2475vmnx3gz6v0lk2bflsl0-horae-tests-0.1.0.drv3building '/nix/store/ymkawqxdd2475vmnx3gz6v0lk2bflsl0-horae-tests-0.1.0.drv'4horae-tests-0.1.0> Running phase: unpackPhase5horae-tests-0.1.0> unpacking source archive /nix/store/adc1rb3zaw19sqfjzcpi6m9sdi50z9yw-source6horae-tests-0.1.0> source root is source7horae-tests-0.1.0> Running phase: patchPhase8horae-tests-0.1.0> Executing configureCargoCommonVars9horae-tests-0.1.0> decompressing cargo artifacts from /nix/store/p0fga5r55aw5iwdy8h0dpr32lhcczl5i-horae-checks-deps-0.1.0/target.tar.zst to target10horae-tests-0.1.0> Running phase: updateAutotoolsGnuConfigScriptsPhase11horae-tests-0.1.0> Running phase: configurePhase12horae-tests-0.1.0> will append /build/source/.cargo-home/config.toml with contents of /nix/store/i0bj632any4bjpvnl84zc2h7cq8zn0mz-vendor-cargo-deps/config.toml13horae-tests-0.1.0> default configurePhase, nothing to do14horae-tests-0.1.0> Running phase: buildPhase15horae-tests-0.1.0> +++ command cargo nextest run -p horae-core --test-threads 4816horae-tests-0.1.0> Compiling proc-macro2 v1.0.10617horae-tests-0.1.0> Compiling serde_core v1.0.22818horae-tests-0.1.0> Compiling serde v1.0.22819horae-tests-0.1.0> Compiling num-traits v0.2.1920horae-tests-0.1.0> Compiling quote v1.0.4621horae-tests-0.1.0> Compiling syn v2.0.11822horae-tests-0.1.0> Compiling uuid v1.23.423horae-tests-0.1.0> Compiling serde_derive v1.0.22824horae-tests-0.1.0> Compiling thiserror-impl v2.0.1825horae-tests-0.1.0> Compiling thiserror v2.0.1826horae-tests-0.1.0> Compiling chrono v0.4.4527horae-tests-0.1.0> Compiling horae-core v0.1.0 (/build/source/crates/core)28horae-tests-0.1.0> Finished `test` profile [unoptimized + debuginfo] target(s) in 5.65s29horae-tests-0.1.0> ------------30horae-tests-0.1.0> Nextest run ID e7c5cbe6-1511-4a7e-a2ad-f76b79b24569 with nextest profile: default31horae-tests-0.1.0> Starting 121 tests across 1 binary32horae-tests-0.1.0> Running [ 00:00:00] 0/121: 48 running, 0 passed, 0 skipped 33horae-tests-0.1.0> [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding34horae-tests-0.1.0> [ 00:00:00] horae-core ::a_single_jump_announces_every_crossed_band35horae-tests-0.1.0> [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget36horae-tests-0.1.0> [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values37horae-tests-0.1.0> [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached38horae-tests-0.1.0> [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows39horae-tests-0.1.0> [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once40horae-tests-0.1.0> [ 00:00:00] horae-core elow_a_band_does_not_fire_but_current_resets41horae-tests-0.1.0> PASS [ 0.006s] horae-core budget::tests::display_percentage_rounds_clamps_and_never_overflows42horae-tests-0.1.0> PASS [ 0.006s] horae-core budget::tests::configured_alert_rejects_invalid_inputs_and_widens_large_values43horae-tests-0.1.0> PASS [ 0.007s] horae-core budget::tests::over_budget_fires_even_without_a_configured_100_band44horae-tests-0.1.0> PASS [ 0.007s] horae-core importers::harvest::convert::tests::conversion_preserves_the_i64_boundary_and_rejects_rounding_past_it45horae-tests-0.1.0> PASS [ 0.007s] horae-core duration::tests::parse_decimal_rounds_half_minutes_exactly46horae-tests-0.1.0> PASS [ 0.006s] horae-core budget::tests::configured_alert_accepts_zero_percent_but_not_zero_budget47horae-tests-0.1.0> PASS [ 0.006s] horae-core budget::tests::a_single_jump_announces_every_crossed_band48horae-tests-0.1.0> PASS [ 0.007s] horae-core budget::tests::current_band_is_the_highest_reached49horae-tests-0.1.0> PASS [ 0.007s] horae-core budget::tests::each_crossing_is_announced_once50horae-tests-0.1.0> PASS [ 0.006s] horae-core budget::tests::configured_alert_threshold_is_exact_without_rounding51horae-tests-0.1.0> PASS [ 0.007s] horae-core client::tests::optional_text_normalizes_only_blank_fields52horae-tests-0.1.0> PASS [ 0.007s] horae-core budget::tests::no_band_for_zero_or_missing_budget53horae-tests-0.1.0> PASS [ 0.007s] horae-core importers::harvest::convert::tests::money_rounds_third_decimal_half_up54horae-tests-0.1.0> PASS [ 0.007s] horae-core budget::tests::large_values_do_not_overflow55horae-tests-0.1.0> PASS [ 0.007s] horae-core importers::harvest::convert::tests::conversion_rejects_unrepresentable_scaled_values_without_panicking56horae-tests-0.1.0> PASS [ 0.008s] horae-core client::tests::default_rate_preserves_absence_zero_and_exact_large_amounts57horae-tests-0.1.0> PASS [ 0.008s] horae-core client::tests::profile_accepts_supported_currencies_and_unicode_character_limit58horae-tests-0.1.0> PASS [ 0.008s] horae-core duration::tests::parse_rejects_negative_non_finite_and_malformed_values59horae-tests-0.1.0> PASS [ 0.008s] horae-core duration::tests::parse_colon60horae-tests-0.1.0> PASS [ 0.008s] horae-core client::tests::profile_rejects_unsupported_currency_and_null_billing_fields61horae-tests-0.1.0> PASS [ 0.008s] horae-core importers::harvest::convert::tests::money_common_values_are_exact62horae-tests-0.1.0> PASS [ 0.008s] horae-core duration::tests::format_clamps_negative_to_zero63horae-tests-0.1.0> PASS [ 0.008s] horae-core duration::tests::parse_round_trips_each_minute_in_a_day64horae-tests-0.1.0> PASS [ 0.008s] horae-core importers::harvest::keys::tests::composite_components_do_not_collide65horae-tests-0.1.0> PASS [ 0.008s] horae-core importers::harvest::convert::tests::round_half_up_at_the_boundary66horae-tests-0.1.0> PASS [ 0.009s] horae-core duration::tests::format_hhmm_pads_minutes67horae-tests-0.1.0> Running [ 00:00:00] ========= 121/121: 48 running, 0 passed, 0 skipped 68horae-tests-0.1.0> [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding69horae-tests-0.1.0> [ 00:00:00] horae-core ::a_single_jump_announces_every_crossed_band70horae-tests-0.1.0> [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget71horae-tests-0.1.0> [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values72horae-tests-0.1.0> [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached73horae-tests-0.1.0> [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows74horae-tests-0.1.0> [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once75horae-tests-0.1.0> [ 00:00:00] horae-core elow_a_band_does_not_fire_but_current_resets76horae-tests-0.1.0> PASS [ 0.009s] horae-core importers::harvest::convert::tests::high_precision_fraction_straddles_the_half_minute_exactly77horae-tests-0.1.0> PASS [ 0.009s] horae-core budget::tests::drop_below_a_band_does_not_fire_but_current_resets78horae-tests-0.1.0> PASS [ 0.009s] horae-core client::tests::profile_rejects_blank_overlong_and_null_names79horae-tests-0.1.0> PASS [ 0.009s] horae-core importers::harvest::convert::tests::conversion_handles_high_precision_without_intermediate_overflow80horae-tests-0.1.0> PASS [ 0.009s] horae-core duration::tests::parse_decimal81horae-tests-0.1.0> PASS [ 0.009s] horae-core duration::tests::parse_preserves_u32_boundary_without_saturating82horae-tests-0.1.0> PASS [ 0.009s] horae-core importers::harvest::convert::tests::negative_is_rejected83horae-tests-0.1.0> PASS [ 0.009s] horae-core importers::harvest::convert::tests::conversion_reports_precision_and_numerator_limits84horae-tests-0.1.0> PASS [ 0.009s] horae-core importers::harvest::keys::tests::client_key_equal_across_case_and_whitespace85horae-tests-0.1.0> PASS [ 0.010s] horae-core importers::harvest::convert::tests::hours_round_trip_against_exporter_transform86horae-tests-0.1.0> PASS [ 0.010s] horae-core duration::tests::parse_rejects_excessive_decimal_precision_and_numerator87horae-tests-0.1.0> PASS [ 0.011s] horae-core importers::harvest::convert::tests::garbage_is_rejected88horae-tests-0.1.0> PASS [ 0.011s] horae-core duration::tests::minutes_between_is_exact_no_minimum89horae-tests-0.1.0> PASS [ 0.011s] horae-core importers::harvest::convert::tests::money_round_trip_against_exporter_transform90horae-tests-0.1.0> PASS [ 0.012s] horae-core duration::tests::format_round_trip91horae-tests-0.1.0> PASS [ 0.012s] horae-core importers::harvest::convert::tests::leading_and_trailing_forms_parse92horae-tests-0.1.0> PASS [ 0.015s] horae-core importers::harvest::keys::tests::normalize_matches_sql_harvest_norm_contract93horae-tests-0.1.0> PASS [ 0.015s] horae-core importers::harvest::keys::tests::normalize_trims_and_case_folds94horae-tests-0.1.0> PASS [ 0.015s] horae-core client::tests::default_rate_rejects_negative_fractional_cent_overflow_and_invalid_text95horae-tests-0.1.0> PASS [ 0.015s] horae-core importers::harvest::convert::tests::hours_common_values_are_exact96horae-tests-0.1.0> PASS [ 0.015s] horae-core duration::tests::parse_rejects_colon_overflow_without_panicking97horae-tests-0.1.0> PASS [ 0.006s] horae-core importers::harvest::keys::tests::occurrence_counter_numbers_repeats_from_zero98horae-tests-0.1.0> PASS [ 0.006s] horae-core importers::harvest::keys::tests::time_entry_key_distinguishes_and_matches99horae-tests-0.1.0> PASS [ 0.007s] horae-core importers::harvest::keys::tests::occurrence_counter_keys_are_independent100horae-tests-0.1.0> PASS [ 0.006s] horae-core importers::harvest::keys::tests::project_key_prefers_code_when_present101horae-tests-0.1.0> Running [ 00:00:00] ========= 121/121: 48 running, 0 passed, 0 skipped 102horae-tests-0.1.0> [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding103horae-tests-0.1.0> [ 00:00:00] horae-core ::a_single_jump_announces_every_crossed_band104horae-tests-0.1.0> [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget105horae-tests-0.1.0> [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values106horae-tests-0.1.0> [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached107horae-tests-0.1.0> [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows108horae-tests-0.1.0> [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once109horae-tests-0.1.0> [ 00:00:00] horae-core elow_a_band_does_not_fire_but_current_resets110horae-tests-0.1.0> PASS [ 0.007s] horae-core importers::harvest::types::account_switch_tests::account_switch_requires_binding_and_no_imports_or_active_work111horae-tests-0.1.0> PASS [ 0.007s] horae-core invoice::tests::invoice_adjustments_reject_negative_subtotal_and_overflow112horae-tests-0.1.0> PASS [ 0.007s] horae-core invoice::tests::discount_allocation_handles_empty_zero_and_full_discounts113horae-tests-0.1.0> PASS [ 0.007s] horae-core importers::harvest::types::tests::archived_errors_and_new_inline_errors_reconcile_across_batches114horae-tests-0.1.0> PASS [ 0.006s] horae-core invoice::tests::line_amount_rejects_unrepresentable_results115horae-tests-0.1.0> PASS [ 0.007s] horae-core importers::harvest::types::tests::reconciles_when_errored_counts_match_collected_errors116horae-tests-0.1.0> PASS [ 0.007s] horae-core invoice::tests::line_amount_exact_hour117horae-tests-0.1.0> PASS [ 0.007s] horae-core importers::harvest::keys::tests::task_key_shared_across_projects118horae-tests-0.1.0> PASS [ 0.007s] horae-core invoice::tests::line_amount_90_minutes119horae-tests-0.1.0> PASS [ 0.007s] horae-core money::tests::addition_retains_currency_checks_and_representable_boundaries120horae-tests-0.1.0> PASS [ 0.007s] horae-core invoice::tests::discount_allocation_rejects_negative_lines_and_subtotal_overflow121horae-tests-0.1.0> PASS [ 0.007s] horae-core invoice::tests::discounted_fee_contribution_leaves_discount_available122horae-tests-0.1.0> PASS [ 0.008s] horae-core importers::harvest::keys::tests::project_key_falls_back_to_client_and_name123horae-tests-0.1.0> PASS [ 0.008s] horae-core invoice::tests::discount_allocation_supports_maximum_representable_subtotal124horae-tests-0.1.0> PASS [ 0.007s] horae-core invoice::tests::line_amount_rounds_half_cents_up_not_to_even125horae-tests-0.1.0> PASS [ 0.008s] horae-core importers::harvest::types::tests::import_modes_display_their_wire_names126horae-tests-0.1.0> PASS [ 0.010s] horae-core invoice::tests::line_amount_zero_rate127horae-tests-0.1.0> PASS [ 0.010s] horae-core money::tests::parse_cents_rejects_what_it_cannot_represent128horae-tests-0.1.0> PASS [ 0.010s] horae-core money::tests::format_cents_plain_keeps_sign_below_one_unit129horae-tests-0.1.0> PASS [ 0.011s] horae-core invoice::tests::selected_rate_mode_ignores_unselected_rate_sources130horae-tests-0.1.0> PASS [ 0.011s] horae-core invoice::tests::line_amount_odd_minutes131horae-tests-0.1.0> PASS [ 0.012s] horae-core invoice::tests::selected_rate_keeps_zero_and_explicit_missing_project_rate132horae-tests-0.1.0> PASS [ 0.012s] horae-core invoice::tests::resolve_rate_cascade133horae-tests-0.1.0> PASS [ 0.012s] horae-core invoice::tests::line_amount_half_hour134horae-tests-0.1.0> PASS [ 0.012s] horae-core invoice::tests::line_amount_accepts_large_representable_amounts135horae-tests-0.1.0> PASS [ 0.012s] horae-core project::tests::basics_accept_same_day_but_reject_reversed_dates136horae-tests-0.1.0> Running [ 00:00:00] ========= 121/121: 48 running, 0 passed, 0 skipped 137horae-tests-0.1.0> [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding138horae-tests-0.1.0> [ 00:00:00] horae-core ::a_single_jump_announces_every_crossed_band139horae-tests-0.1.0> [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget140horae-tests-0.1.0> [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values141horae-tests-0.1.0> [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached142horae-tests-0.1.0> [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows143horae-tests-0.1.0> [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once144horae-tests-0.1.0> [ 00:00:00] horae-core elow_a_band_does_not_fire_but_current_resets145horae-tests-0.1.0> PASS [ 0.012s] horae-core money::tests::parse_cents_is_exact_where_a_float_would_drift146horae-tests-0.1.0> PASS [ 0.013s] horae-core invoice::tests::discount_allocation_conserves_header_amount_and_bounds_each_line147horae-tests-0.1.0> PASS [ 0.010s] horae-core project::tests::monetary_budgets_are_only_available_for_time_and_materials148horae-tests-0.1.0> PASS [ 0.010s] horae-core project::tests::basics_reject_overlong_code_and_unsupported_currency149horae-tests-0.1.0> PASS [ 0.014s] horae-core invoice::tests::discount_allocation_uses_largest_remainder_then_stable_source_order150horae-tests-0.1.0> PASS [ 0.009s] horae-core project::tests::fee_schedules_reject_missing_overlong_and_excessive_milestones151horae-tests-0.1.0> PASS [ 0.014s] horae-core invoice::tests::invoice_adjustments_apply_discount_before_non_compounding_taxes152horae-tests-0.1.0> PASS [ 0.010s] horae-core project::tests::fee_schedules_validate_amounts_and_milestone_total153horae-tests-0.1.0> PASS [ 0.014s] horae-core money::tests::parse_cents_reads_whole_and_fractional_amounts154horae-tests-0.1.0> PASS [ 0.014s] horae-core money::tests::format_cents_groups_thousands_and_keeps_sign155horae-tests-0.1.0> PASS [ 0.007s] horae-core rounding::tests::identity_when_inc_zero156horae-tests-0.1.0> PASS [ 0.014s] horae-core importers::harvest::types::tests::does_not_reconcile_when_an_errored_count_has_no_reported_error157horae-tests-0.1.0> PASS [ 0.010s] horae-core project::tests::basics_reject_blank_and_overlong_names158horae-tests-0.1.0> PASS [ 0.009s] horae-core project::tests::monthly_fee_dates_follow_calendar_months159horae-tests-0.1.0> PASS [ 0.014s] horae-core money::tests::addition_rejects_overflow_in_both_directions160horae-tests-0.1.0> PASS [ 0.006s] horae-core time_of_day::tests::parse_rejects_out_of_range_and_garbage161horae-tests-0.1.0> PASS [ 0.008s] horae-core rounding::tests::effective_minutes_respect_frozen_history_including_zero162horae-tests-0.1.0> PASS [ 0.014s] horae-core invoice::tests::invoice_adjustments_round_components_half_up163horae-tests-0.1.0> PASS [ 0.008s] horae-core project::tests::percentage_rejects_invalid_precision_range_and_syntax164horae-tests-0.1.0> PASS [ 0.014s] horae-core invoice::tests::line_amount_zero_minutes165horae-tests-0.1.0> PASS [ 0.008s] horae-core rounding::tests::nearest_ties_round_up166horae-tests-0.1.0> PASS [ 0.007s] horae-core time_of_day::tests::clamp_to_day_prevents_crossing_midnight167horae-tests-0.1.0> PASS [ 0.009s] horae-core project::tests::payment_terms_support_receipt_and_checked_days168horae-tests-0.1.0> PASS [ 0.013s] horae-core project::tests::basics_accept_supported_currencies_and_optional_dates169horae-tests-0.1.0> PASS [ 0.007s] horae-core rounding::tests::up_and_down170horae-tests-0.1.0> PASS [ 0.009s] horae-core project::tests::percentage_preserves_exact_hundredths171horae-tests-0.1.0> PASS [ 0.005s] horae-core state::tests::member_submit_and_reopen172horae-tests-0.1.0> Running [ 00:00:00] ========= 121/121: 48 running, 0 passed, 0 skipped 173horae-tests-0.1.0> [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding174horae-tests-0.1.0> [ 00:00:00] horae-core ::a_single_jump_announces_every_crossed_band175horae-tests-0.1.0> [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget176horae-tests-0.1.0> [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values177horae-tests-0.1.0> [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached178horae-tests-0.1.0> [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows179horae-tests-0.1.0> [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once180horae-tests-0.1.0> [ 00:00:00] horae-core elow_a_band_does_not_fire_but_current_resets181horae-tests-0.1.0> PASS [ 0.015s] horae-core money::tests::parse_cents_tolerates_grouping_spaces_and_signs182horae-tests-0.1.0> PASS [ 0.007s] horae-core time_of_day::tests::parse_reads_12h_including_edges183horae-tests-0.1.0> PASS [ 0.009s] horae-core rounding::tests::result_is_multiple_of_inc184horae-tests-0.1.0> PASS [ 0.010s] horae-core project::tests::monthly_fee_dates_reject_invalid_calendar_inputs185horae-tests-0.1.0> PASS [ 0.006s] horae-core time_of_day::tests::parse_reads_24h186horae-tests-0.1.0> PASS [ 0.006s] horae-core state::tests::managers_invoice_open_and_approved_time187horae-tests-0.1.0> PASS [ 0.005s] horae-core time_of_day::tests::snap_rounds_to_nearest_step188horae-tests-0.1.0> PASS [ 0.005s] horae-core types::tests::budget_kind_wire_strings_match_db_enum189horae-tests-0.1.0> PASS [ 0.005s] horae-core week::tests::configured_week_can_start_in_the_previous_year190horae-tests-0.1.0> PASS [ 0.008s] horae-core state::tests::invoiced_is_final191horae-tests-0.1.0> PASS [ 0.005s] horae-core week::tests::configured_week_contains_each_day_for_all_seven_start_days192horae-tests-0.1.0> PASS [ 0.009s] horae-core time_of_day::tests::format_round_trips193horae-tests-0.1.0> PASS [ 0.006s] horae-core week::tests::configured_week_reports_an_unrepresentable_start194horae-tests-0.1.0> PASS [ 0.008s] horae-core time_of_day::tests::format_12h_matches_harvest_style195horae-tests-0.1.0> PASS [ 0.006s] horae-core week::tests::maps_any_weekday_to_its_monday196horae-tests-0.1.0> PASS [ 0.008s] horae-core state::tests::only_manager_can_approve197horae-tests-0.1.0> PASS [ 0.047s] horae-core importers::harvest::convert::tests::conversion_matches_exact_scaled_rationals198horae-tests-0.1.0> ------------199horae-tests-0.1.0> Summary [ 0.049s] 121 tests run: 121 passed, 0 skipped200horae-tests-0.1.0> Running [ 00:00:00] ========= 121/121: 48 running, 0 passed, 0 skipped 201horae-tests-0.1.0> [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding202horae-tests-0.1.0> [ 00:00:00] horae-core ::a_single_jump_announces_every_crossed_band203horae-tests-0.1.0> [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget204horae-tests-0.1.0> [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values205horae-tests-0.1.0> [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached206horae-tests-0.1.0> [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows207horae-tests-0.1.0> [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once208horae-tests-0.1.0> [ 00:00:00] horae-core elow_a_band_does_not_fire_but_current_resets209horae-tests-0.1.0> The files belonging to this database system will be owned by user "nixbld".210horae-tests-0.1.0> This user must also own the server process.211horae-tests-0.1.0> 212horae-tests-0.1.0> The database cluster will be initialized with locale "C".213horae-tests-0.1.0> The default text search configuration will be set to "english".214horae-tests-0.1.0> 215horae-tests-0.1.0> Data page checksums are disabled.216horae-tests-0.1.0> 217horae-tests-0.1.0> fixing permissions on existing directory /build/tmp.ae9nYhmzBP ... ok218horae-tests-0.1.0> creating subdirectories ... ok219horae-tests-0.1.0> selecting dynamic shared memory implementation ... posix220horae-tests-0.1.0> selecting default "max_connections" ... 100221horae-tests-0.1.0> selecting default "shared_buffers" ... 128MB222horae-tests-0.1.0> selecting default time zone ... UTC223horae-tests-0.1.0> creating configuration files ... ok224horae-tests-0.1.0> running bootstrap script ... ok225horae-tests-0.1.0> performing post-bootstrap initialization ... ok226horae-tests-0.1.0> syncing data to disk ... ok227horae-tests-0.1.0> 228horae-tests-0.1.0> initdb: warning: enabling "trust" authentication for local connections229horae-tests-0.1.0> initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.230horae-tests-0.1.0> 231horae-tests-0.1.0> Success. You can now start the database server using:232horae-tests-0.1.0> 233horae-tests-0.1.0> pg_ctl -D /build/tmp.ae9nYhmzBP -l logfile start234horae-tests-0.1.0> 235horae-tests-0.1.0> waiting for server to start.... done236horae-tests-0.1.0> server started237horae-tests-0.1.0> +++ command cargo test -p horae --features server -- --test-threads 48238horae-tests-0.1.0> Compiling horae v0.1.0 (/build/source/crates/horae)239horae-tests-0.1.0> Compiling horae-core v0.1.0 (/build/source/crates/core)240horae-tests-0.1.0> Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 57s241horae-tests-0.1.0> Running unittests src/main.rs (target/debug/deps/horae-0767924faa118e50)242horae-tests-0.1.0> 243horae-tests-0.1.0> running 832 tests244horae-tests-0.1.0> test auth::oidc::tests::extra_audiences_are_trusted_only_when_listed ... ok245horae-tests-0.1.0> test auth::oidc::tests::deactivated_email_match_is_denied ... ok246horae-tests-0.1.0> test auth::oidc::tests::deactivated_subject_match_is_denied ... ok247horae-tests-0.1.0> test auth::oidc::tests::unverified_email_is_not_matched ... ok248horae-tests-0.1.0> test auth::oidc::tests::subject_match_takes_precedence_over_email ... ok249horae-tests-0.1.0> test auth::oidc::tests::first_login_links_subject_via_verified_email ... ok250horae-tests-0.1.0> test auth::oidc::tests::subject_match_logs_in_without_relinking ... ok251horae-tests-0.1.0> test auth::oidc::tests::no_account_is_denied_not_provisioned ... ok252horae-tests-0.1.0> test auth::page::tests::dev_variant_offers_the_admin_bypass_and_no_fake_controls ... ok253horae-tests-0.1.0> test auth::page::tests::configured_label_is_html_escaped ... ok254horae-tests-0.1.0> test auth::page::tests::oidc_variant_uses_the_configured_label_and_hands_off_to_start ... ok255horae-tests-0.1.0> test cli::tests::environment_probe ... ok256horae-tests-0.1.0> test config::tests::dev_login_is_allowed_on_loopback ... ok257horae-tests-0.1.0> test config::tests::dev_login_is_refused_off_loopback ... ok258horae-tests-0.1.0> test config::tests::environment::environment_probe ... ok259horae-tests-0.1.0> test cli::imports::tests::retry_snapshot_is_compatible_with_missing_and_future_values ... ok260horae-tests-0.1.0> test config::tests::without_dev_login_any_bind_is_fine ... ok261horae-tests-0.1.0> test harvest::pagination_tests::harvest_pagination_total_pages_does_not_overflow ... ok262horae-tests-0.1.0> test cli::tests::remote_import_and_job_commands_accept_the_documented_arguments ... ok263horae-tests-0.1.0> test cli::tests::remote_commands_reject_conflicting_or_unbounded_options ... ok264horae-tests-0.1.0> test cli::imports::tests::session_rejects_public_permissions_and_symlinks ... ok265horae-tests-0.1.0> test cli::imports::tests::session_rejects_cookie_header_injection_without_echoing_the_value ... ok266horae-tests-0.1.0> test cli::imports::tests::missing_session_is_a_structured_configuration_failure ... ok267horae-tests-0.1.0> test cli::imports::tests::cancellation_racing_completion_does_not_claim_cancellation_was_requested ... ok268horae-tests-0.1.0> test cli::imports::tests::csv_named_pipe_is_rejected_without_waiting_for_a_writer ... ok269horae-tests-0.1.0> test cli::imports::tests::private_session_accepts_https_and_loopback_only ... ok270horae-tests-0.1.0> test cli::imports::tests::session_rejects_plaintext_remote_and_credential_bearing_urls ... ok271horae-tests-0.1.0> test cli::imports::tests::malformed_submission_acknowledgement_retains_its_request_identity ... ok272horae-tests-0.1.0> test cli::imports::tests::redirects_are_not_followed_or_exposed_as_server_error_text ... ok273horae-tests-0.1.0> test cli::imports::tests::api_submission_captures_generation_without_retrying_uncertain_acceptance ... ok274horae-tests-0.1.0> test cli::imports::tests::invalid_csv_files_fail_before_contacting_the_server ... ok275horae-tests-0.1.0> test harvest::tests::page_window_defaults_and_checked_offsets ... ok276horae-tests-0.1.0> test cli::imports::tests::report_marks_confirmed_failed_outcomes_as_incomplete ... ok277horae-tests-0.1.0> test db::tests::pool_connections_force_custom_plans ... ok278horae-tests-0.1.0> test cli::imports::tests::missing_and_mismatched_jobs_fail_without_substitution ... ok279horae-tests-0.1.0> test config::tests::environment::obsolete_authentication_variables_do_not_configure_the_server ... ok280horae-tests-0.1.0> test config::tests::environment::partial_oidc_configuration_remains_disabled_without_a_callback ... ok281horae-tests-0.1.0> test config::tests::environment::example_environment_can_configure_all_required_oidc_and_harvest_fields ... ok282horae-tests-0.1.0> test config::tests::environment::empty_environment_has_no_authentication_or_plugin_credentials ... ok283horae-tests-0.1.0> test cli::imports::tests::status_and_wait_distinguish_failed_jobs_from_failed_reads ... ok284horae-tests-0.1.0> test cli::imports::tests::archived_errors_publish_without_clobbering_and_preserve_the_prior_file_on_failure ... ok285horae-tests-0.1.0> test cli::tests::default_command_uses_the_same_defaults_and_environment_as_serve ... ok286horae-tests-0.1.0> test importers::harvest::api_source::http::tests::cancelled_backoff_does_not_wait_or_retry ... ok287horae-tests-0.1.0> test importers::harvest::api_source::http::tests::cursor_links_are_authoritative_even_with_null_or_stale_page_numbers ... ok288horae-tests-0.1.0> test cli::imports::tests::ordinary_json_is_bounded_and_invalid_replies_are_not_echoed ... ok289horae-tests-0.1.0> test config::tests::environment::job_attempt_limit_uses_the_documented_environment_variable ... ok290horae-tests-0.1.0> test cli::tests::default_command_rejects_invalid_environment_ports ... ok291horae-tests-0.1.0> test importers::harvest::api_source::http::tests::missing_next_cursor_is_not_silently_treated_as_completed ... ok292horae-tests-0.1.0> test importers::harvest::api_source::http::tests::pagination_cycle_detection_survives_restarting_after_every_page ... ok293horae-tests-0.1.0> test importers::harvest::api_source::http::tests::persisted_cursor_resumes_with_a_new_client_and_stays_complete_at_eof ... ok294horae-tests-0.1.0> test importers::harvest::api_source::http::tests::rejected_page_does_not_advance_the_cursor ... ok295horae-tests-0.1.0> test importers::harvest::api_source::http::tests::rejects_pagination_outside_the_authenticated_endpoint ... ok296horae-tests-0.1.0> test importers::harvest::api_source::http::tests::resumed_cursor_rejects_untrusted_destinations_and_invalid_state_before_http ... ok297horae-tests-0.1.0> test config::tests::environment::mail_environment_requires_a_complete_valid_configuration ... ok298horae-tests-0.1.0> test importers::harvest::api_source::tests::assembled_rows_convert_to_exact_minutes ... ok299horae-tests-0.1.0> test importers::harvest::api_source::tests::assembles_rows_joining_parents_by_id ... ok300horae-tests-0.1.0> test importers::harvest::api_source::tests::hours_render_as_exact_decimals ... ok301horae-tests-0.1.0> test importers::harvest::api_source::tests::http_page_preserves_decimal_values_before_integer_conversion ... ok302horae-tests-0.1.0> test importers::harvest::api_source::tests::json_exponents_expand_exactly_with_bounded_output ... ok303horae-tests-0.1.0> test config::tests::environment::secure_cookies_use_the_documented_prefixed_variable ... ok304horae-tests-0.1.0> test importers::harvest::credentials::tests::bad_key_length_is_rejected ... ok305horae-tests-0.1.0> test config::tests::environment::invalid_job_attempt_limits_reject_startup ... ok306horae-tests-0.1.0> test importers::harvest::api_source::http::tests::http_pages_follow_cursor_and_preserve_headers_and_encoded_filter ... ok307horae-tests-0.1.0> test importers::harvest::api_source::http::tests::http_retries_429_but_never_follows_redirects_or_shortens_long_backoff ... ok308horae-tests-0.1.0> test importers::harvest::api_source::http::tests::http_rejects_oversized_malformed_and_cyclic_pages ... ok309horae-tests-0.1.0> test importers::harvest::credentials::tests::decode_hex_rejects_bad_input ... ok310horae-tests-0.1.0> test cli::imports::tests::small_csv_upload_preserves_immediate_authorization_rejections ... ok311horae-tests-0.1.0> test importers::harvest::credentials::tests::encrypt_then_decrypt_round_trips ... ok312horae-tests-0.1.0> test importers::harvest::api_source::http::tests::slow_consumer_backpressures_http_and_cancellation_stops_further_pages ... ok313horae-tests-0.1.0> test cli::imports::tests::csv_upload_preserves_bytes_across_stream_chunk_boundaries ... ok314horae-tests-0.1.0> test importers::harvest::credentials::tests::nonce_makes_ciphertext_nondeterministic ... ok315horae-tests-0.1.0> test auth::oidc::tests::linking::unverified_email_cannot_link_an_account ... ok316horae-tests-0.1.0> test harvest::tests::a_manager_lists_users_with_their_rates ... ok317horae-tests-0.1.0> test importers::harvest::credentials::tests::wrong_key_fails_to_decrypt ... ok318horae-tests-0.1.0> test importers::harvest::csv_source::tests::bad_date_becomes_a_row_error_not_a_rejection ... ok319horae-tests-0.1.0> test importers::harvest::csv_source::tests::conflicting_email_aliases_error_only_the_affected_row ... ok320horae-tests-0.1.0> test importers::harvest::csv_source::tests::csv_records_preserve_multiline_unicode_across_single_byte_reads ... ok321horae-tests-0.1.0> test importers::harvest::csv_source::tests::cursor_beyond_upload_is_rejected_without_parsing_rows ... ok322horae-tests-0.1.0> test importers::harvest::csv_source::tests::cursor_resumes_after_multiline_unicode_and_preserves_error_locations ... ok323horae-tests-0.1.0> test importers::harvest::csv_source::tests::delivers_a_row_before_reading_the_rest_of_the_file ... ok324horae-tests-0.1.0> test importers::harvest::csv_source::tests::empty_file_is_rejected ... ok325horae-tests-0.1.0> test importers::harvest::csv_source::tests::identity_columns_are_required_and_cannot_repeat ... ok326horae-tests-0.1.0> test importers::harvest::csv_source::tests::invalid_utf8_errors_one_record_and_continues ... ok327horae-tests-0.1.0> test importers::harvest::csv_source::tests::missing_required_columns_is_rejected ... ok328horae-tests-0.1.0> test importers::harvest::csv_source::tests::names_stay_separate_from_optional_email ... ok329horae-tests-0.1.0> test importers::harvest::csv_source::tests::parse_bool_accepts_yes_variants ... ok330horae-tests-0.1.0> test importers::harvest::csv_source::tests::parses_rows_case_insensitively ... ok331horae-tests-0.1.0> test importers::harvest::account_switch::tests::change_preserves_terminal_history_and_rejects_stale_confirmation ... ok332horae-tests-0.1.0> test harvest::tests::a_member_sees_only_their_own_time_entries ... ok333horae-tests-0.1.0> test importers::harvest::account_switch::tests::a_b_a_keeps_old_callbacks_requests_and_retries_fenced ... ok334horae-tests-0.1.0> test harvest::tests::a_member_cannot_list_users ... ok335horae-tests-0.1.0> test harvest::tests::a_manager_sees_the_whole_org ... ok336horae-tests-0.1.0> test harvest::tests::a_member_cannot_fetch_a_colleagues_entry ... ok337horae-tests-0.1.0> test harvest::tests::a_member_cannot_filter_to_a_colleague ... ok338horae-tests-0.1.0> test auth::oidc::tests::linking::deactivation_during_first_link_denies_login ... ok339horae-tests-0.1.0> test harvest::tests::members_cannot_read_own_project_rates_or_cost_overrides ... ok340horae-tests-0.1.0> test auth::oidc::tests::linking::existing_subject_wins_over_another_accounts_email ... ok341horae-tests-0.1.0> test auth::oidc::tests::linking::simultaneous_logins_with_the_same_subject_are_allowed ... ok342horae-tests-0.1.0> test auth::oidc::tests::linking::different_subjects_cannot_both_claim_an_unlinked_account ... ok343horae-tests-0.1.0> test harvest::tests::harvest_marks_unbilled_non_billable_contexts_consistently ... ok344horae-tests-0.1.0> test harvest::pagination_tests::harvest_pagination_catalog_links_preserve_filters_and_break_name_ties ... ok345horae-tests-0.1.0> test importers::harvest::account_switch::tests::queued_work_and_provenance_block_without_changing_binding ... ok346horae-tests-0.1.0> test importers::harvest::credentials::tests::connection_changes_work_with_a_single_connection_pool ... ok347horae-tests-0.1.0> test importers::harvest::credentials::tests::another_account_cannot_replace_credentials_or_watermarks ... ok348horae-tests-0.1.0> test importers::harvest::account_switch::tests::successful_change_preserves_business_rows_and_failure_rolls_back_secrets ... ok349horae-tests-0.1.0> test importers::harvest::credentials::tests::concurrent_first_connections_cannot_bind_different_accounts ... ok350horae-tests-0.1.0> test importers::harvest::account_switch::tests::disconnect_and_reconnect_fence_callbacks_but_not_same_account_work ... ok351horae-tests-0.1.0> test importers::harvest::credentials::tests::failed_credential_write_does_not_leave_an_account_binding ... ok352horae-tests-0.1.0> test importers::harvest::credentials::tests::connect_and_disconnect_share_import_exclusion_without_blocking_other_orgs ... ok353horae-tests-0.1.0> test harvest::tests::harvest_entry_rates_respect_selected_project_mode ... ok354horae-tests-0.1.0> test importers::harvest::account_switch::tests::retry_and_change_are_serialized ... ok355horae-tests-0.1.0> test importers::harvest::account_switch::tests::running_jobs_block_change_and_old_execution_never_reaches_http ... ok356horae-tests-0.1.0> test importers::harvest::account_switch::tests::queue_acceptance_does_not_wait_for_the_import_session_lock ... ok357horae-tests-0.1.0> test harvest::tests::harvest_effective_minutes_match_sql_for_open_and_frozen_time ... ok358horae-tests-0.1.0> test importers::harvest::credentials::tests::disconnect_preserves_identity_and_provenance_for_the_original_account ... ok359horae-tests-0.1.0> test importers::harvest::credentials::tests::migration_binds_existing_connections_without_changing_secrets_or_markers ... ok360horae-tests-0.1.0> test harvest::tests::harvest_entry_rates_follow_the_cascade_and_frozen_invoice_line ... ok361horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::measure_csv_durable_100k ... ignored, 100,000-row durable CSV measurement; run explicitly with --release --nocapture362horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::measure_csv_durable_large_catalog_100k ... ignored, 100,000-row durable CSV with 5,000 parent sets; run explicitly with --release --nocapture363horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::measure_csv_streaming_100k ... ignored, 100,000-row CSV measurement; run explicitly with --release --nocapture364horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::measure_csv_streaming_large_catalog_100k ... ignored, 100,000-row CSV with 5,000 parent sets; run explicitly with --release --nocapture365horae-tests-0.1.0> test importers::harvest::account_switch::tests::competing_callbacks_and_confirmations_have_one_winner ... ok366horae-tests-0.1.0> test db::tests::reset_empties_the_database_and_reapplies_migrations ... ok367horae-tests-0.1.0> test importers::harvest::account_switch::tests::competing_change_and_submission_cannot_both_succeed ... ok368horae-tests-0.1.0> test importers::harvest::credentials::tests::same_account_reconnect_rotates_encryption_without_resetting_watermarks ... ok369horae-tests-0.1.0> test cli::imports::tests::wait_deadline_caps_a_pending_request_without_cancelling_the_job ... ok370horae-tests-0.1.0> test importers::harvest::credentials::tests::unidentified_legacy_provenance_requires_operator_review ... ok371horae-tests-0.1.0> test importers::harvest::engine_tests::api_connection_checks_work_with_a_single_connection_pool ... ok372horae-tests-0.1.0> test importers::harvest::engine_tests::csv_import_populates_and_is_idempotent ... ok373horae-tests-0.1.0> test importers::harvest::engine_tests::concurrent_imports_reject_overlap_without_collapsing_repeated_entries ... ok374horae-tests-0.1.0> test importers::harvest::engine_tests::csv_name_fallback_requires_a_full_unique_name_and_never_overrides_email ... ok375horae-tests-0.1.0> test importers::harvest::engine_tests::lookup_cache::cold_query_callsite_on_untraced_thread_is_still_captured ... ok376horae-tests-0.1.0> test importers::harvest::engine_tests::cancellation_rolls_back_rows_and_releases_the_import_session ... ok377horae-tests-0.1.0> test importers::harvest::engine_tests::csv_malformed_file_is_rejected_with_no_writes ... ok378horae-tests-0.1.0> test importers::harvest::engine_tests::api_sync_adopts_entries_from_a_prior_csv_import ... ok379horae-tests-0.1.0> test importers::harvest::engine_tests::csv_name_only_matches_one_org_user_and_reimports_without_duplicates ... ok380horae-tests-0.1.0> test importers::harvest::engine_tests::csv_ambiguous_names_include_inactive_users_but_unique_email_disambiguates ... ok381horae-tests-0.1.0> test importers::harvest::engine_tests::api_and_csv_share_the_lock_but_other_organizations_can_import ... ok382horae-tests-0.1.0> test importers::harvest::engine_tests::bad_records_are_reported_and_run_continues ... ok383horae-tests-0.1.0> test harvest::pagination_tests::harvest_pagination_malformed_filters_are_client_errors ... ok384horae-tests-0.1.0> test importers::harvest::engine_tests::cancelled_http_waiter_keeps_the_lock_until_its_worker_exits ... ok385horae-tests-0.1.0> test importers::harvest::engine_tests::csv_name_only_dry_run_and_duplicate_occurrences_preserve_history ... ok386horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::cancelling_a_csv_waiting_for_more_bytes_releases_its_session ... ok387horae-tests-0.1.0> test importers::harvest::oauth::tests::authorize_url_carries_state_and_encoded_redirect ... ok388horae-tests-0.1.0> test importers::harvest::oauth::tests::authorize_url_preserves_query_values_without_injecting_parameters ... ok389horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::csv_applies_before_eof_but_transport_failure_rolls_back_everything ... ok390horae-tests-0.1.0> test importers::harvest::oauth_callback_tests::account_policy_failures_return_safe_actionable_conflicts ... ok391horae-tests-0.1.0> test importers::harvest::oauth_callback_tests::missing_returned_state_is_rejected ... ok392horae-tests-0.1.0> test importers::harvest::oauth_callback_tests::mismatched_state_is_rejected_without_a_code ... ok393horae-tests-0.1.0> test importers::harvest::oauth_callback_tests::missing_stored_state_is_rejected ... ok394horae-tests-0.1.0> test importers::harvest::oauth_callback_tests::provider_error_is_rejected_before_exchange ... ok395horae-tests-0.1.0> test importers::harvest::oauth_callback_tests::valid_matching_state_yields_the_code ... ok396horae-tests-0.1.0> test importers::harvest::oauth_callback_tests::valid_state_but_missing_code_is_rejected ... ok397horae-tests-0.1.0> test importers::harvest::report::tests::archive_metadata_cannot_masquerade_as_a_legacy_or_inconsistent_report ... ok398horae-tests-0.1.0> test importers::harvest::report::tests::archived_report_round_trips_without_losing_error_accounting ... ok399horae-tests-0.1.0> test importers::harvest::report::tests::legacy_report_preserves_its_counts_and_error_details ... ok400horae-tests-0.1.0> test importers::harvest::report::tests::report_rejects_unsupported_and_invalid_versions ... ok401horae-tests-0.1.0> test importers::harvest::report::tests::serialized_report_has_a_supported_schema_version ... ok402horae-tests-0.1.0> test importers::harvest::resolve::checkpoint_tests::run_cache_round_trip_preserves_identity_namespaces_and_occurrences ... ok403horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::csv_preview_errors_and_repeated_rows_match_commit_and_reimport ... ok404horae-tests-0.1.0> test importers::harvest::engine_tests::edited_entry_still_matched_by_provenance ... ok405horae-tests-0.1.0> test importers::harvest::engine_tests::full_import_creates_all_levels_with_exact_minutes ... ok406horae-tests-0.1.0> test importers::harvest::engine_tests::failed_source_releases_the_session_and_rolls_back_partial_rows ... ok407horae-tests-0.1.0> test importers::harvest::engine_tests::distinct_harvest_ids_with_identical_fields_import_as_two ... ok408horae-tests-0.1.0> test importers::harvest::engine_tests::dry_run_writes_nothing_and_matches_commit ... ok409horae-tests-0.1.0> test importers::harvest::engine_tests::import_rejects_ambiguous_normalized_email_without_partial_writes ... ok410horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::durable_csv_stale_commit_is_fenced_without_a_heartbeat ... ok411horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::durable_csv_report_metadata_is_bounded_after_recovery ... ok412horae-tests-0.1.0> test importers::harvest::engine_tests::completed_imports_allow_immediate_retries ... ok413horae-tests-0.1.0> test importers::harvest::engine_tests::lookup_cache::cached_email_and_full_name_do_not_share_a_namespace ... ok414horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::durable_csv_preview_crosses_batch_boundaries_without_committing_domain_data ... ok415horae-tests-0.1.0> test importers::harvest::engine_tests::lookup_cache::lookup_index_migration_preserves_existing_ambiguous_identities ... ok416horae-tests-0.1.0> test importers::harvest::engine_tests::two_identical_csv_rows_import_as_two_entries ... ok417horae-tests-0.1.0> test importers::harvest::engine_tests::watermark_advances_only_on_commit ... ok418horae-tests-0.1.0> test importers::harvest::engine_tests::submission_barrier_blocks_imported_time_entries ... ok419horae-tests-0.1.0> test importers::harvest::streaming::tests::api_planning_policy_ends_with_the_transaction ... ok420horae-tests-0.1.0> test importers::harvest::engine_tests::natural_key_reimport_normalizes_whitespace_and_ascii_case ... ok421horae-tests-0.1.0> test importers::harvest::engine_tests::lookup_cache::new_run_rechecks_previously_cached_user_for_ambiguity ... ok422horae-tests-0.1.0> test importers::harvest::engine_tests::second_identical_run_creates_nothing ... ok423horae-tests-0.1.0> test importers::harvest::engine_tests::lookup_cache::rolled_back_row_does_not_cache_user_or_project_task ... ok424horae-tests-0.1.0> test importers::harvest::resolve::preview::tests::rejects_foreign_parent_snapshots_before_restoring_any_rows ... ok425horae-tests-0.1.0> test importers::harvest::engine_tests::lookup_cache::cached_project_task_still_validates_each_rows_rate ... ok426horae-tests-0.1.0> test importers::harvest::engine_tests::reimporting_identical_csv_rows_is_idempotent ... ok427horae-tests-0.1.0> test importers::harvest::engine_tests::overflowing_decimals_fail_only_their_rows ... ok428horae-tests-0.1.0> test importers::harvest::engine_tests::lookup_cache::project_task_cache_distinguishes_both_sides_of_the_link ... ok429horae-tests-0.1.0> test importers::harvest::credentials::tests::completed_credential_changes_allow_immediate_retries ... ok430horae-tests-0.1.0> test importers::harvest::resolve::preview::tests::checkpoint_restores_known_task_currency_and_keeps_old_currency_unknown ... ok431horae-tests-0.1.0> test importers::harvest::sync_tests::api_requires_email_even_when_full_name_matches ... ok432horae-tests-0.1.0> test importers::harvest::sync_tests::api_rejects_ambiguous_email_without_advancing_watermark ... ok433horae-tests-0.1.0> test importers::harvest::streaming::durable::preview::tests::restoration_omits_unneeded_virtual_entries ... ok434horae-tests-0.1.0> test harvest::pagination_tests::harvest_pagination_empty_and_out_of_range_pages_keep_the_contract ... ok435horae-tests-0.1.0> test importers::harvest::sync_tests::empty_sync_does_not_invent_a_watermark ... ok436horae-tests-0.1.0> test importers::harvest::sync_tests::exact_api_decimals_survive_preview_commit_and_reimport ... ok437horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::csv_sql_backpressure_stops_reading_later_input_rows ... ok438horae-tests-0.1.0> test importers::harvest::sync_tests::failed_client_propagates_to_project_and_entry_without_placeholder_records ... ok439horae-tests-0.1.0> test importers::harvest::sync_tests::invalid_parent_blocks_dependent_time_but_other_catalog_records_survive ... ok440horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::durable_csv_preview_resumes_after_a_crash_without_recounting_rows ... ok441horae-tests-0.1.0> test importers::harvest::sync_tests::failed_rows_are_available_to_the_next_incremental_retry ... ok442horae-tests-0.1.0> test importers::harvest::sync_tests::missing_source_timestamp_keeps_the_previous_watermark ... ok443horae-tests-0.1.0> test importers::harvest::sync_tests::disconnect_and_reconnect_preserves_imported_records_and_exact_identity ... ok444horae-tests-0.1.0> test importers::harvest::sync_tests::missing_client_fallback_and_failed_project_savepoints_do_not_poison_cache ... ok445horae-tests-0.1.0> test importers::harvest::sync_tests::scale::api_100k_commit_and_reimport ... ignored, 100,000-entry scale measurement; run explicitly with --release --nocapture446horae-tests-0.1.0> test importers::harvest::sync_tests::scale::api_100k_dry_run ... ignored, 100,000-entry scale measurement; run explicitly with --release --nocapture447horae-tests-0.1.0> test importers::harvest::sync_tests::scale::api_durable_100k_commit_and_reimport ... ignored, 100,000-entry durable API measurement; run explicitly with --release --nocapture448horae-tests-0.1.0> test importers::harvest::sync_tests::scale::api_durable_100k_dry_run ... ignored, 100,000-entry durable API measurement; run explicitly with --release --nocapture449horae-tests-0.1.0> test importers::harvest::sync_tests::dry_run_leaves_data_provenance_and_watermark_unchanged ... ok450horae-tests-0.1.0> test importers::harvest::sync_tests::out_of_range_api_decimals_error_per_row_and_leave_retry_watermark ... ok451horae-tests-0.1.0> test harvest::tests::imported_legacy_rates_survive_retry_in_harvest_list_and_detail ... ok452horae-tests-0.1.0> test importers::harvest::engine_tests::lookup_cache::repeated_rows_resolve_each_user_and_project_task_once ... ok453horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::durable_csv_resumes_committed_batches_without_recounting_duplicate_rows ... ok454horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::durable_csv_preview_rejects_a_stale_next_batch ... ok455horae-tests-0.1.0> test importers::harvest::sync_tests::paging::cancelled_page_consumer_retains_lock_until_worker_exits_and_rolls_back ... ok456horae-tests-0.1.0> test importers::harvest::sync_tests::parent_only_api_import_creates_catalog_and_reimport_skips_it ... ok457horae-tests-0.1.0> test importers::harvest::sync_tests::paging::durable_api_stale_commit_cannot_advance_data_or_watermark ... ok458horae-tests-0.1.0> test importers::harvest::sync_tests::parent_only_dry_run_previews_without_persisting_catalog ... ok459horae-tests-0.1.0> test importers::harvest::sync_tests::paging::later_download_failure_rolls_back_parents_rows_and_watermark ... ok460horae-tests-0.1.0> test importers::harvest::sync_tests::refreshed_tokens_survive_a_dry_run_rollback_in_the_same_import_session ... ok461horae-tests-0.1.0> test importers::harvest::sync_tests::parent_catalog_preserves_metadata_and_counts_each_entity_once ... ok462horae-tests-0.1.0> test harvest::pagination_tests::harvest_pagination_rejects_invalid_windows_on_every_collection ... ok463horae-tests-0.1.0> test importers::harvest::sync_tests::successful_sync_only_marks_the_incrementally_fetched_entity ... ok464horae-tests-0.1.0> test importers::harvest::sync_tests::watermark_never_passes_the_start_of_capture ... ok465horae-tests-0.1.0> test importers::harvest::sync_tests::watermark_write_failure_rolls_back_imported_data ... ok466horae-tests-0.1.0> test init::tests::init_creates_one_org_and_one_admin_and_nothing_else ... ok467horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::durable_csv_reclaimed_lease_cannot_commit_the_next_batch ... ok468horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_cancellation_preserves_confirmed_pages_for_manual_retry ... ok469horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_finalization_retry_does_not_repeat_completed_downloads ... ok470horae-tests-0.1.0> test init::tests::init_refuses_when_an_organization_exists ... ok471horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_preview_cancellation_preserves_confirmed_pages_for_manual_retry ... ok472horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_preview_finalization_retry_does_not_repeat_completed_downloads ... ok473horae-tests-0.1.0> test harvest::pagination_tests::harvest_pagination_time_entries_keep_the_filtered_set_and_date_ties ... ok474horae-tests-0.1.0> test jobs::tests::cancellation_and_retry_are_scoped_and_idempotent ... ok475horae-tests-0.1.0> test jobs::tests::claims_are_atomic_and_expired_leases_recover ... ok476horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_preview_reclaimed_worker_cannot_checkpoint_its_next_page ... ok477horae-tests-0.1.0> test harvest::pagination_tests::harvest_pagination_router_preserves_session_and_tenant_guards ... ok478horae-tests-0.1.0> test importers::harvest::sync_tests::paging::invalid_and_missing_timestamp_rows_cross_page_boundaries_without_advancing ... ok479horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::failed_api_commit_publishes_its_last_confirmed_page_report ... ok480horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::failed_api_preview_publishes_its_last_confirmed_page_report ... ok481horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_resumes_a_partially_downloaded_catalog ... ok482horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_resume_remembers_an_earlier_missing_timestamp ... ok483horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_preview_resumes_catalog_download ... ok484horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_resumes_committed_pages_and_preserves_the_high_watermark ... ok485horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_resume_keeps_earlier_errors_and_does_not_advance_watermark ... ok486horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_reclaimed_worker_cannot_commit_its_next_page ... ok487horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_preview_resume_preserves_row_errors ... ok488horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_preview_resumes_pages_without_publishing_domain_data ... ok489horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::durable_csv_cancel_joins_parser_and_preserves_committed_rows ... ok490horae-tests-0.1.0> test importers::harvest::engine_tests::large_run_reuses_parents_and_reconciles_totals ... ok491horae-tests-0.1.0> test jobs::tests::payload_kind_is_stable_and_round_trips ... ok492horae-tests-0.1.0> test jobs::tests::payload_versions_preserve_legacy_jobs_and_reject_unknown_versions ... ok493horae-tests-0.1.0> test jobs::outbox::tests::acknowledges_confirmed_delivery_without_reclaiming_it ... ok494horae-tests-0.1.0> test jobs::tests::retry_snapshot_does_not_guess_unknown_payloads_or_sources ... ok495horae-tests-0.1.0> test jobs::tests::history_paginates_tied_timestamps_and_rejects_foreign_cursors ... ok496horae-tests-0.1.0> test jobs::tests::shutdown_deadline_drops_and_joins_in_flight_work ... ok497horae-tests-0.1.0> test jobs::tests::shutdown_waits_for_in_flight_work ... ok498horae-tests-0.1.0> test jobs::tests::outbox_delivery_is_idempotent ... ok499horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::durable_csv_preview_cancel_preserves_simulation_for_manual_retry ... ok500horae-tests-0.1.0> test jobs::outbox::tests::invalid_payload_is_not_delivered_and_does_not_leak_into_errors ... ok501horae-tests-0.1.0> test jobs::tests::retry_snapshot_matches_status_and_list_without_exposing_payload ... ok502horae-tests-0.1.0> test jobs::tests::synthetic_job_uses_the_same_registered_envelope ... ok503horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::durable_csv_cancel_preserves_its_completed_batches_for_manual_retry ... ok504horae-tests-0.1.0> test models::project_creation::tests::draft_roundtrip_preserves_incomplete_input_without_demo_data ... ok505horae-tests-0.1.0> test models::project_creation::tests::unauthorized_catalog_cost_is_absent_from_serialized_options ... ok506horae-tests-0.1.0> test models::project_creation::tests::unknown_draft_fields_are_rejected ... ok507horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_resumes_after_a_confirmed_parent_batch ... ok508horae-tests-0.1.0> test notifications::tests::cancelling_delivery_kills_the_active_sender ... ok509horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_preview_resumes_after_a_confirmed_parent_batch ... ok510horae-tests-0.1.0> test jobs::tests::upload_organization_must_match_its_job ... ok511horae-tests-0.1.0> test notifications::tests::acknowledged_email_is_never_claimed_again ... ok512horae-tests-0.1.0> test notifications::tests::mail_configuration_is_disabled_by_default_and_rejects_partial_values ... ok513horae-tests-0.1.0> test jobs::outbox::tests::plugin_failure_retries_with_the_same_event_identity ... ok514horae-tests-0.1.0> test notifications::tests::mail_configuration_requires_an_executable_file_and_safe_sender ... ok515horae-tests-0.1.0> test notifications::tests::recipient_injection_is_rejected_before_starting_a_process ... ok516horae-tests-0.1.0> test notifications::tests::rendered_mail_bounds_body_lines_for_long_unicode_and_control_names ... ok517horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::csv_measurement_recovers_a_complete_batch_without_recounting ... ok518horae-tests-0.1.0> test notifications::tests::disabled_mail_worker_does_not_claim_pending_notifications ... ok519horae-tests-0.1.0> test notifications::tests::sendmail_failure_does_not_expose_program_output ... ok520horae-tests-0.1.0> test notifications::tests::sendmail_receives_fixed_arguments_and_stable_message_identity ... ok521horae-tests-0.1.0> test jobs::tests::api_job_keeps_its_policy_across_duplicate_enqueue_and_manual_retry ... ok522horae-tests-0.1.0> test notifications::tests::failed_email_retries_same_identity_and_eventually_stops ... ok523horae-tests-0.1.0> test notifications::tests::retry_can_recover_without_changing_message_identity ... ok524horae-tests-0.1.0> test pages::clients::filters::tests::clearing_query_preserves_selected_currency_and_lifecycle ... ok525horae-tests-0.1.0> test pages::clients::filters::tests::lifecycle_counts_share_query_and_currency_filters ... ok526horae-tests-0.1.0> test pages::clients::filters::tests::name_search_ignores_case_and_surrounding_whitespace ... ok527horae-tests-0.1.0> test pages::clients::filters::tests::preferred_or_visible_project_currency_matches_but_query_still_applies ... ok528horae-tests-0.1.0> test pages::clients::form::tests::absent_billing_authority_never_produces_an_edit_payload ... ok529horae-tests-0.1.0> test pages::clients::form::tests::ambiguous_creation_errors_require_explicit_recovery ... ok530horae-tests-0.1.0> test pages::clients::form::tests::clearing_a_rate_is_explicit_and_needs_no_currency_confirmation ... ok531horae-tests-0.1.0> test pages::clients::form::tests::invalid_fields_are_not_rewritten_by_validation ... ok532horae-tests-0.1.0> test pages::clients::form::tests::rate_replacement_requires_confirmation_in_the_current_currency ... ok533horae-tests-0.1.0> test pages::clients::form::tests::untouched_fields_keep_zero_rate_and_original_snapshot ... ok534horae-tests-0.1.0> test pages::importers::presentation::tests::interrupted_report_is_partial_regardless_of_retry_prerequisites ... ok535horae-tests-0.1.0> test pages::importers::presentation::tests::no_selection_does_not_claim_no_import_history ... ok536horae-tests-0.1.0> test pages::importers::presentation::tests::source_labels_do_not_guess_unknown_importers ... ok537horae-tests-0.1.0> test pages::importers::presentation::tests::states_and_phases_have_readable_unknown_fallbacks ... ok538horae-tests-0.1.0> test pages::importers::presentation::tests::summaries_distinguish_zero_skipped_and_mixed_outcomes ... ok539horae-tests-0.1.0> test notifications::tests::mail_worker_delivers_only_its_kind_and_drains_cleanly ... ok540horae-tests-0.1.0> test pages::invoices::defaults_form::tests::invoice_fields_bound_metadata_by_characters_and_reject_nul ... ok541horae-tests-0.1.0> test pages::invoices::defaults_form::tests::invoice_fields_preserve_exact_percentages_and_custom_terms ... ok542horae-tests-0.1.0> test pages::invoices::defaults_form::tests::invoice_fields_preserve_receipt_terms_and_empty_optional_percentages ... ok543horae-tests-0.1.0> test pages::invoices::defaults_form::tests::invoice_fields_reject_invalid_percentages_terms_and_second_tax ... ok544horae-tests-0.1.0> test pages::invoices::preparation::fees::tests::fee_inputs_require_exact_amounts_and_an_explicit_positive_charge ... ok545horae-tests-0.1.0> test pages::invoices::preparation::fees::tests::refresh_keeps_raw_edits_and_does_not_select_new_sources ... ok546horae-tests-0.1.0> test pages::invoices::preparation::fees::tests::refresh_preserves_missing_or_relabelled_edits_until_explicit_removal ... ok547horae-tests-0.1.0> test pages::invoices::preparation::tests::invoice_context_selects_only_the_exact_available_client ... ok548horae-tests-0.1.0> test pages::invoices::preparation::tests::invoice_review_requires_matching_sources_and_valid_values ... ok549horae-tests-0.1.0> test pages::invoices::preparation::tests::unavailable_or_malformed_invoice_context_never_uses_the_first_client ... ok550horae-tests-0.1.0> test pages::new_project::basics::tests::a_batch_that_would_exceed_the_tag_limit_is_rejected ... ok551horae-tests-0.1.0> test pages::new_project::basics::tests::a_full_tag_list_still_accepts_a_duplicate ... ok552horae-tests-0.1.0> test pages::new_project::basics::tests::overlong_tags_are_rejected_without_truncation ... ok553horae-tests-0.1.0> test pages::new_project::basics::tests::tag_length_counts_characters_instead_of_bytes ... ok554horae-tests-0.1.0> test pages::new_project::basics::tests::tags_trim_and_deduplicate_without_changing_existing_spelling ... ok555horae-tests-0.1.0> test pages::new_project::draft::tests::a_mismatched_acknowledgement_does_not_lose_pending_input ... ok556horae-tests-0.1.0> test pages::new_project::draft::tests::a_retry_keeps_the_unacknowledged_payload_and_revision ... ok557horae-tests-0.1.0> test pages::new_project::draft::tests::a_validation_rejection_allows_corrected_input_at_the_same_revision ... ok558horae-tests-0.1.0> test pages::new_project::draft::tests::an_empty_form_is_not_reported_as_saved ... ok559horae-tests-0.1.0> test pages::new_project::draft::tests::any_saved_draft_wins_over_context_including_empty_or_matching_client ... ok560horae-tests-0.1.0> test pages::new_project::draft::tests::context_prefills_only_a_new_form_without_fixing_its_currency ... ok561horae-tests-0.1.0> test pages::new_project::draft::tests::resuming_preserves_the_server_identity_and_incomplete_fields ... ok562horae-tests-0.1.0> test pages::new_project::team::tests::adding_everyone_deduplicates_without_replacing_project_overrides ... ok563horae-tests-0.1.0> test pages::new_project::team::tests::exceeding_the_team_limit_does_not_partially_add_people ... ok564horae-tests-0.1.0> test pages::new_project::team::tests::removing_a_member_keeps_an_empty_restricted_task_restricted ... ok565horae-tests-0.1.0> test pages::new_project::tests::a_rejected_creation_can_be_edited_but_an_uncertain_commit_must_be_retried ... ok566horae-tests-0.1.0> test pages::new_project::tests::only_known_validation_fields_can_target_a_control ... ok567horae-tests-0.1.0> test notifications::tests::foreign_notification_payload_is_terminal_and_never_sent ... ok568horae-tests-0.1.0> test pages::projects::budget_display_tests::configured_scopes_sum_without_hiding_an_individual_overrun ... ok569horae-tests-0.1.0> test pages::projects::budget_display_tests::display_preserves_units_sign_and_large_integer_values ... ok570horae-tests-0.1.0> test pages::projects::budget_display_tests::tag_filter_matches_identity_without_duplicates_or_name_collisions ... ok571horae-tests-0.1.0> test pages::reports::tests::cost_total_uses_organization_currency_across_billing_currencies ... ok572horae-tests-0.1.0> test pages::reports::tests::mixed_currencies_are_not_added_even_when_the_numbers_would_overflow ... ok573horae-tests-0.1.0> test pages::projects::budget_display_tests::unallocated_zero_and_overflow_budgets_are_not_conflated ... ok574horae-tests-0.1.0> test pages::reports::tests::monetary_total_overflow_is_visible_instead_of_panicking ... ok575horae-tests-0.1.0> test pages::reports::tests::single_currency_totals_are_formatted_and_empty_reports_have_no_amount ... ok576horae-tests-0.1.0> test pages::reports::tests::redacted_costs_do_not_become_zero_or_partial_totals ... ok577horae-tests-0.1.0> test pages::timesheet::tests::cal_span_day_shows_only_the_anchor_column ... ok578horae-tests-0.1.0> test pages::timesheet::tests::cal_span_defaults_to_week ... ok579horae-tests-0.1.0> test pages::timesheet::tests::cal_span_unknown_falls_back_to_week ... ok580horae-tests-0.1.0> test pages::timesheet::tests::cal_span_url_roundtrips ... ok581horae-tests-0.1.0> test pages::timesheet::tests::cal_span_week_shows_all_seven_days ... ok582horae-tests-0.1.0> test pages::timesheet::tests::cal_span_work_week_preserves_date_order_across_weekends ... ok583horae-tests-0.1.0> test pages::timesheet::tests::cal_span_work_week_shows_monday_to_friday ... ok584horae-tests-0.1.0> test pages::timesheet::tests::cal_span_work_week_skips_sunday_when_it_is_the_first_column ... ok585horae-tests-0.1.0> test pages::timesheet::tests::day_col_class_marks_today ... ok586horae-tests-0.1.0> test pages::timesheet::tests::day_col_class_marks_weekend ... ok587horae-tests-0.1.0> test pages::timesheet::tests::day_col_class_today_wins_over_weekend ... ok588horae-tests-0.1.0> test pages::timesheet::tests::day_col_class_plain_weekday ... ok589horae-tests-0.1.0> test pages::timesheet::tests::invalid_duration_cannot_start_a_timer_save_or_clear_a_cell ... ok590horae-tests-0.1.0> test pages::timesheet::tests::only_a_blank_duration_can_start_an_eligible_timer ... ok591horae-tests-0.1.0> test pages::new_project::billing::tests::budget_errors_target_a_control_that_can_be_corrected ... ok592horae-tests-0.1.0> test pages::timesheet::tests::timed_lanes_still_widens_overlapping_entries ... ok593horae-tests-0.1.0> test pages::timesheet::tests::timed_lanes_terminates_on_a_zero_length_entry ... ok594horae-tests-0.1.0> test pages::timesheet::tests::today_offset_is_none_after_the_week ... ok595horae-tests-0.1.0> test pages::timesheet::tests::today_offset_is_none_before_the_week ... ok596horae-tests-0.1.0> test pages::timesheet::tests::today_offset_is_six_on_the_sunday ... ok597horae-tests-0.1.0> test pages::timesheet::tests::today_offset_is_zero_on_the_monday ... ok598horae-tests-0.1.0> test pages::timesheet::tests::value_cell_class_empty_wins_over_today ... ok599horae-tests-0.1.0> test pages::timesheet::tests::value_cell_class_marks_today_when_nonzero ... ok600horae-tests-0.1.0> test pages::timesheet::tests::weekend_style_follows_the_date_not_the_column_offset ... ok601horae-tests-0.1.0> test pages::timesheet::tests::weekly_duration_edit_preserves_nine_am_start_notes_and_billability ... ok602horae-tests-0.1.0> test pages::timesheet::tests::weekly_new_entries_are_untimed_and_explicit_clears_still_work ... ok603horae-tests-0.1.0> test notifications::tests::revoked_recipient_does_not_receive_a_pending_email ... ok604horae-tests-0.1.0> test notifications::tests::verbose_sender_output_is_discarded_without_blocking_delivery ... ok605horae-tests-0.1.0> test jobs::tests::expired_final_attempt_fails_without_claiming_again ... ok606horae-tests-0.1.0> test plugin::database::tests::dedicated_reader_is_accepted_but_new_write_grants_are_rejected ... ok607horae-tests-0.1.0> test plugin::database::tests::application_database_owner_is_not_a_plugin_identity ... ok608horae-tests-0.1.0> test notifications::tests::stale_email_lease_cannot_start_delivery ... ok609horae-tests-0.1.0> test plugin::event::tests::active_transition_fires_only_on_a_real_flip ... ok610horae-tests-0.1.0> test plugin::event::tests::budget_and_timer_events_serialize ... ok611horae-tests-0.1.0> test plugin::event::tests::new_events_have_stable_hook_names ... ok612horae-tests-0.1.0> test plugin::event::tests::project_membership_payload_excludes_private_configuration ... ok613horae-tests-0.1.0> test plugin::event::tests::role_change_event_carries_previous_role ... ok614horae-tests-0.1.0> test plugin::event::tests::submission_event_serializes_payload ... ok615horae-tests-0.1.0> test plugin::event::tests::us2_events_have_stable_hook_names ... ok616horae-tests-0.1.0> test plugin::database::tests::reader_accepts_optional_first_party_rounding_helper ... ok617horae-tests-0.1.0> test plugin::database::tests::project_configuration_is_private_even_when_plugin_grants_are_misconfigured ... ok618horae-tests-0.1.0> test plugin::host::tests::config_lookup::a_set_key_is_returned ... ok619horae-tests-0.1.0> test plugin::host::tests::config_lookup::an_unset_key_is_none ... ok620horae-tests-0.1.0> test plugin::database::tests::reader_cannot_execute_security_definer_functions ... ok621horae-tests-0.1.0> test jobs::tests::final_failure_is_retained_and_manual_retry_gets_a_new_budget ... ok622horae-tests-0.1.0> test plugin::database::tests::reader_rejects_unapproved_invoker_functions ... ok623horae-tests-0.1.0> test plugin::host::tests::database_tests::unconfigured_sql_never_falls_back_to_application_state ... ok624horae-tests-0.1.0> test plugin::database::tests::reader_cannot_switch_into_another_role ... ok625horae-tests-0.1.0> test plugin::host::tests::response_shaping::error_json_wraps_the_message ... ok626horae-tests-0.1.0> test plugin::database::tests::reader_cannot_have_access_to_credentials ... ok627horae-tests-0.1.0> test plugin::host::tests::response_shaping::http_response_carries_status_and_body ... ok628horae-tests-0.1.0> test plugin::host::tests::response_shaping::invalid_http_utf8_is_an_error_not_an_empty_success ... ok629horae-tests-0.1.0> test plugin::host::tests::statement_is_read_only::a_cte_select_is_allowed ... ok630horae-tests-0.1.0> test plugin::host::tests::statement_is_read_only::a_second_statement_is_rejected ... ok631horae-tests-0.1.0> test plugin::host::tests::statement_is_read_only::a_single_trailing_semicolon_is_allowed ... ok632horae-tests-0.1.0> test plugin::host::tests::statement_is_read_only::a_write_hidden_behind_a_comment_is_rejected ... ok633horae-tests-0.1.0> test plugin::host::tests::statement_is_read_only::plain_select_is_allowed ... ok634horae-tests-0.1.0> test plugin::host::tests::statement_is_read_only::writes_are_rejected ... ok635horae-tests-0.1.0> test plugin::host::tests::wrap_select::strips_a_trailing_semicolon_before_wrapping ... ok636horae-tests-0.1.0> test plugin::host::tests::wrap_select::wraps_as_a_bounded_row_query ... ok637horae-tests-0.1.0> test plugin::host::tests::response_shaping::http_body_accepts_the_size_limit_and_rejects_larger_responses ... ok638horae-tests-0.1.0> test plugin::manifest::tests::accepts_all_published_business_events ... ok639horae-tests-0.1.0> test plugin::manifest::tests::config_defaults_to_empty_when_absent ... ok640horae-tests-0.1.0> test plugin::manifest::tests::parse_valid_manifest ... ok641horae-tests-0.1.0> test plugin::manifest::tests::reject_empty_hooks ... ok642horae-tests-0.1.0> test plugin::manifest::tests::parses_optional_config_table ... ok643horae-tests-0.1.0> test plugin::manifest::tests::reject_unknown_hook ... ok644horae-tests-0.1.0> test plugin::host::tests::database_queries_preserve_parameters_and_rollback_session_settings ... ok645horae-tests-0.1.0> test plugin::host::tests::database_tests::query_discards_session_advisory_locks ... ok646horae-tests-0.1.0> test jobs::tests::stopped_worker_leaves_queued_jobs_unclaimed ... ok647horae-tests-0.1.0> test plugin::host::tests::database_tests::query_results_are_bounded_without_silent_truncation ... ok648horae-tests-0.1.0> test importers::harvest::sync_tests::paging::durable_api_cancel_waits_for_the_producer_before_acknowledging ... ok649horae-tests-0.1.0> 650horae-tests-0.1.0> running 1 test651horae-tests-0.1.0> test notifications::tests::sendmail_timeout_kills_and_reaps_the_child ... ok652horae-tests-0.1.0> test plugin::registry::tests::initialization::instruction_budget_is_replenished_for_each_call ... ok653horae-tests-0.1.0> test plugin::registry::tests::isolation::cancelling_a_waiter_keeps_capacity_reserved_until_the_host_call_exits ... ok654horae-tests-0.1.0> test plugin::registry::tests::isolation::confirmed_dispatch_attempts_other_plugins_after_one_fails ... ok655horae-tests-0.1.0> test plugin::registry::tests::isolation::confirmed_dispatch_returns_overload_for_retry ... ok656horae-tests-0.1.0> test plugin::host::tests::database_tests::wasm_host_uses_the_restricted_connection_on_a_current_thread_runtime ... ok657horae-tests-0.1.0> test plugin::registry::tests::isolation::confirmed_dispatch_returns_plugin_failure_for_retry ... ok658horae-tests-0.1.0> test plugin::registry::tests::isolation::confirmed_dispatch_waits_for_the_plugin_to_finish ... ok659horae-tests-0.1.0> test plugin::registry::tests::isolation::different_plugins_share_the_running_call_limit ... ok660horae-tests-0.1.0> test plugin::registry::tests::isolation::events_execute_outside_the_async_worker ... ok661horae-tests-0.1.0> test plugin::host::tests::database_tests::select_cannot_write_or_gain_application_privileges ... ok662horae-tests-0.1.0> test importers::harvest::engine_tests::csv_streaming::durable_csv_preview_matches_existing_and_new_rows_with_one_connection ... ok663horae-tests-0.1.0> test plugin::registry::tests::isolation::loaded_plugins_cannot_start_with_excessive_memory ... ok664horae-tests-0.1.0> test plugin::registry::tests::isolation::pending_capacity_rejects_new_work_without_spawning_tasks ... ok665horae-tests-0.1.0> test plugin::registry::tests::isolation::loaded_plugins_cannot_grow_memory_past_the_limit ... ok666horae-tests-0.1.0> test plugin::registry::tests::initialization::guest_initializers_have_an_engine_instruction_budget ... ok667horae-tests-0.1.0> 668horae-tests-0.1.0> test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 831 filtered outtest plugin::registry::tests::isolation::oversized_wasm_output_is_rejected_before_copying_it ... ok669horae-tests-0.1.0> ; finished in 0.23s670horae-tests-0.1.0> 671horae-tests-0.1.0> test plugin::registry::tests::load_nonexistent_directory ... ok672horae-tests-0.1.0> test plugin::registry::tests::load_empty_directory ... ok673horae-tests-0.1.0> test plugin::registry::tests::isolation::widgets_execute_outside_the_async_worker ... ok674horae-tests-0.1.0> test reports::bounded::tests::cancelled_export_keeps_its_slot_until_the_renderer_exits ... ok675horae-tests-0.1.0> test reports::bounded::tests::export_admission_stays_reserved_until_the_body_is_dropped ... ok676horae-tests-0.1.0> test reports::bounded::tests::export_rendering_runs_off_the_async_worker ... ok677horae-tests-0.1.0> test reports::bounded::tests::output_budget_checks_writes_and_seeks_without_truncation ... ok678horae-tests-0.1.0> test reports::bounded::tests::rendered_output_limit_rejects_oversized_files_and_releases_admission ... ok679horae-tests-0.1.0> test reports::bounded::tests::renderer_errors_and_panics_release_admission ... ok680horae-tests-0.1.0> test render::tests::invoice_template_formats_large_minor_units_exactly ... ok681horae-tests-0.1.0> 682horae-tests-0.1.0> running 1 test683horae-tests-0.1.0> test plugin::registry::tests::isolation::oversized_event_payloads_are_not_queued ... ok684horae-tests-0.1.0> test plugin::registry::tests::initialization::guest_initializers_have_an_engine_instruction_budget ... ok685horae-tests-0.1.0> 686horae-tests-0.1.0> test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 831 filtered out; finished in 0.26s687horae-tests-0.1.0> 688horae-tests-0.1.0> test jobs::tests::cancellation_survives_a_crash_before_the_worker_acknowledges ... ok689horae-tests-0.1.0> 690horae-tests-0.1.0> running 1 test691horae-tests-0.1.0> test importers::harvest::sync_tests::checkpoints::durable_api_preview_preserves_adoptions_and_repeated_ids_across_recovery ... ok692horae-tests-0.1.0> test importers::harvest::sync_tests::scale::http_pages_preview_commit_and_reimport ... ok693horae-tests-0.1.0> test plugin::registry::tests::initialization::guest_initializers_have_an_engine_instruction_budget ... ok694horae-tests-0.1.0> 695horae-tests-0.1.0> test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 831 filtered out; finished in 0.26s696horae-tests-0.1.0> 697horae-tests-0.1.0> 698horae-tests-0.1.0> running 1 test699horae-tests-0.1.0> test plugin::registry::tests::collect_widgets_from_echo_plugin ... ok700horae-tests-0.1.0> test plugin::registry::tests::dispatch_event_with_no_subscribers ... ok701horae-tests-0.1.0> test plugin::registry::tests::load_test_plugins ... ok702horae-tests-0.1.0> test jobs::tests::outbox_stale_claims_cannot_acknowledge_or_reschedule_delivery ... ok703horae-tests-0.1.0> test plugin::registry::tests::initialization::guest_initializers_have_an_engine_instruction_budget ... ok704horae-tests-0.1.0> 705horae-tests-0.1.0> test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 831 filtered out; finished in 0.15s706horae-tests-0.1.0> 707horae-tests-0.1.0> test plugin::registry::tests::initialization::guest_initializers_have_an_engine_instruction_budget ... ok708horae-tests-0.1.0> test reports::limits::tests::measure_bounded_export_limits ... ignored, manual release export measurement; set HORAE_EXPORT_PROBE_DIR for artifacts709horae-tests-0.1.0> test importers::harvest::sync_tests::scale::durable_measurement_finishes_from_its_eof_checkpoint ... ok710horae-tests-0.1.0> test jobs::outbox::tests::worker_delivers_available_events_and_stops_cleanly ... ok711horae-tests-0.1.0> test jobs::tests::cleanup_retains_retryable_uploads_and_deletes_expired_jobs ... ok712horae-tests-0.1.0> test reports::bounded::tests::timed_out_export_keeps_its_slot_until_the_renderer_exits ... ok713horae-tests-0.1.0> test jobs::tests::expired_lease_cannot_renew_or_commit_using_an_old_transaction_timestamp ... ok714horae-tests-0.1.0> test reports::streaming::database_tests::measure_streaming_csv_export ... ignored, Manual release measurement of a 100,000-row CSV download715horae-tests-0.1.0> test jobs::tests::failed_csv_preview_retains_confirmed_report_through_history_and_retry ... ok716horae-tests-0.1.0> test reports::limits::tests::bounded_projects_filter_archives_before_size_checks ... ok717horae-tests-0.1.0> test jobs::tests::failed_csv_commit_retains_confirmed_report_through_history_and_retry ... ok