Skip to content

test(miner): rfc 0028 slice 2e — 3 test binaries fold into one harness - #404

Merged
jensholdgaard merged 1 commit into
mainfrom
rfc0028-slice2e-miner-harness
Jul 6, 2026
Merged

test(miner): rfc 0028 slice 2e — 3 test binaries fold into one harness#404
jensholdgaard merged 1 commit into
mainfrom
rfc0028-slice2e-miner-harness

Conversation

@jensholdgaard

@jensholdgaard jensholdgaard commented Jul 6, 2026

Copy link
Copy Markdown
Owner

What

RFC 0028 slice 2e (the last of slice 2) — the miner's 7 integration-test binaries become 5: rfc0004_configuration_policy, rfc0017_template_created, and rfc0024_properties (with its proptest-regressions sidecar, resolved source-relative) fold into the tests/it/ harness. The weekly deep-run's miner line retargets to --test it rfc0024_properties in the same commit (RFC0028.5). No test body changed.

RFC0028.2 — harness-exempt binaries

Four stay dedicated, documented in tests/README.md: invariants.rs (§6.5 param-overflow metrics arm), hazards.rs (per-service overflow-rate alert arm), rfc0023_bounded_memory.rs (template-ceiling/eviction metrics arm), rfc_internal.rs (confidence-gauge quantile arm) — each installs the process-global OTel meter provider (init_in_memory), and two installers in one process race.

RFC0028.1 — inventory proof

cargo test -p ourios-miner -- --list: 206 tests before, 206 after; leaf-name sets identical after stripping module-path prefixes (snapshots below).

Indicative timing (not the RFC0028.3 gate)

Same machine, warm workspace: touch crates/ourios-miner/src/lib.rs && cargo test -p ourios-miner --no-run21.8 s before, 17.7 s after (the smallest win, as expected — 5 binaries remain and the miner links lightly).

Slice 2 complete. Consolidated across #399/#400/#401/#402/#403/this: ingester 31→5, querier 19→1, parquet 17→1, wal 11→1, server 9→2, miner 7→5 — 94 binaries → 15. The authoritative RFC0028.3 probe re-run follows this merge, recorded in epic #382.

Invariants / hazards

CLAUDE.md §6.2 (tests are specifications): nothing weakened or deleted.

Pre inventory (206)
cluster::tests::apply_widening_replaces_only_listed_positions: test
cluster::tests::audit_event_carries_triggering_line_hash_and_sample: test
cluster::tests::below_threshold_creates_separate_leaf_no_widening: test
cluster::tests::best_candidate_selection_picks_highest_similarity_in_parent_leaf_list: test
cluster::tests::body_none_emits_absent_record_with_no_template: test
cluster::tests::clean_attach_at_typed_wildcard_with_known_type_emits_no_audit: test
cluster::tests::clean_attach_at_typed_wildcard_with_new_type_emits_type_expanded: test
cluster::tests::clean_attach_does_not_bump_body_retentions: test
cluster::tests::clean_fresh_leaf_emits_record_with_separators_and_no_body: test
cluster::tests::clean_reuse_emits_record_at_same_template_id_and_version: test
cluster::tests::combined_widening_and_type_expansion_emits_two_events_in_order: test
cluster::tests::default_sink_drops_records_silently: test
cluster::tests::degenerate_widening_is_rejected_and_emits_rejection_event: test
cluster::tests::empty_input_emits_parse_failure_record: test
cluster::tests::exact_sim_seq_match_attaches_without_widening_or_audit: test
cluster::tests::existing_wildcard_receives_literal_emits_str_param_and_reconstructs: test
cluster::tests::find_widening_positions_returns_only_mismatched_fixed_positions: test
cluster::tests::floor_at_threshold_collapses_lossy_zone: test
cluster::tests::format_template_renders_canonical_form: test
cluster::tests::fresh_leaf_carries_wildcard_at_mask_positions_with_seeded_slot_types: test
cluster::tests::fresh_leaf_emits_created_event: test
cluster::tests::ingest_lazily_allocates_per_tenant_state: test
cluster::tests::ingest_returns_distinct_template_ids_for_distinct_shapes: test
cluster::tests::ingest_returns_no_template_for_absent_body: test
cluster::tests::ingest_returns_no_template_sentinel_for_empty_string_body: test
cluster::tests::ingest_returns_same_template_id_for_repeat_shape: test
cluster::tests::ingest_string_routes_lines_above_u16_max_tokens_to_parse_failure: test
cluster::tests::literal_mask_tag_in_leaf_vs_real_mask_emit_on_line_does_not_silently_merge: test
cluster::tests::literal_mask_tag_token_in_line_classifies_as_str_not_num: test
cluster::tests::literal_widening_seeds_slot_types_with_str_for_pre_widen_and_line: test
cluster::tests::lossy_attach_emits_record_with_retained_body_and_lossy_flag_false: test
cluster::tests::lossy_zone_creates_new_leaf_and_bumps_body_retention: test
cluster::tests::mask_tag_transition_at_typed_wildcard_emits_type_expanded: test
cluster::tests::near_match_under_same_parent_widens_into_single_template: test
cluster::tests::parse_failure_zone_emits_record_with_lossy_flag_and_no_template: test
cluster::tests::parse_failure_zone_returns_no_template_and_bumps_counters: test
cluster::tests::restore_bumps_the_id_allocator: test
cluster::tests::restore_rejects_duplicate_structured_key: test
cluster::tests::restore_rejects_duplicate_template_id: test
cluster::tests::restore_rejects_inconsistent_slot: test
cluster::tests::restore_rejects_live_tenant: test
cluster::tests::restore_round_trips_snapshot_state: test
cluster::tests::restore_with_wildcard_in_prefix_path: test
cluster::tests::restored_tree_continues_identically: test
cluster::tests::second_widening_at_different_position_increments_version_again: test
cluster::tests::silent_merge_across_mask_tag_types_is_audited_not_silent: test
cluster::tests::slot_types_are_aligned_by_wildcard_ordinal_not_template_position: test
cluster::tests::snapshot_state_orders_records_by_template_id: test
cluster::tests::string_body_distinguishes_severity_within_one_scope: test
cluster::tests::structured_and_string_share_no_template_ids_at_same_severity_scope: test
cluster::tests::structured_body_distinguishes_scope_within_one_severity: test
cluster::tests::structured_body_distinguishes_severity_within_one_scope: test
cluster::tests::structured_body_emits_record_with_structured_kind: test
cluster::tests::structured_body_is_stored_as_otlp_canonical_json: test
cluster::tests::structured_body_isolates_template_ids_across_tenants: test
cluster::tests::structured_body_short_circuit_allocates_one_template_per_severity_scope_tuple: test
cluster::tests::structured_body_with_scope_none_is_its_own_bucket: test
cluster::tests::template_count_grows_with_each_distinct_template: test
cluster::tests::template_count_is_zero_for_unseen_tenant: test
cluster::tests::tenant_ids_returns_sorted_tenants: test
cluster::tests::type_expansion_only_attach_counts_toward_merges_total: test
cluster::tests::widening_emits_record_with_bumped_version: test
cluster::tests::widening_increments_template_version: test
cluster::tests::would_be_degenerate_only_when_no_fixed_remain: test
crates/ourios-miner/src/sim_seq.rs - sim_seq::sim_seq_owned (line 97): test
h1_1_login_and_logout_remain_distinct_at_default_threshold: test
h1_2_lossy_zone_match_retains_body: test
h1_3_every_widening_emits_an_audit_event: test
h1_4_severity_number_is_part_of_template_key: test
h1_5_scope_name_is_part_of_template_key: test
h2_1_overflow_via_aligned_params_at_existing_wildcard: test
h2_1_oversized_parameter_triggers_overflow_marker: test
h2_1_per_tenant_byte_limit_override_honoured: test
h2_2_per_service_overflow_rate_above_one_percent_alerts: test
h5_1_wildcard_widening_increments_version_and_emits_template_widened: test
h5_2_type_expansion_increments_version_and_emits_template_type_expanded: test
h7_1_reconstruction_property_holds_across_corpus: test
h7_2_tokenizer_failure_sets_lossy_flag_and_retains_body: test
h7_3_reader_emits_body_verbatim_when_lossy_flag_is_true: test
h7_4_widened_literal_slot_reconstructs_via_str_fallback: test
invariant_3_1_1_default_threshold_is_0_7: test
invariant_3_1_2_mandatory_metric_set_is_exposed: test
invariant_3_2_1_default_param_byte_limit_is_256: test
invariant_3_2_2_param_limit_above_1_kib_rejected_at_startup: test
invariant_3_3_1_separators_captured_on_every_tokenization: test
invariant_3_5_1_snapshot_format_carries_leading_version_byte: test
invariant_3_5_2_unknown_snapshot_version_triggers_wal_replay: test
invariant_3_7_1_tenant_trees_never_cross_pollinate: test
invariant_3_7_2_same_template_two_tenants_distinct_template_ids: test
invariant_default_similarity_floor_is_0_4: test
mask::tests::is_ipv4_rejects_leading_zero_octet: test
mask::tests::is_ipv4_rejects_octet_above_255: test
mask::tests::mask_classifies_negative_integer_as_num: test
mask::tests::mask_classifies_uuid: test
mask::tests::mask_does_not_classify_literal_mask_tag_token: test
mask::tests::mask_matches_rfc_section_3_5_worked_example: test
mask::tests::mask_tag_as_str_pins_canonical_strings: test
mask::tests::mask_typed_param_value_borrows_from_input: test
mask::tests::mask_unrecognized_tokens_stay_literal: test
mask::tests::mask_wildcard_positions_are_ascending_and_parallel_to_typed_params: test
mask::tests::param_type_from_mask_tag_pins_mapping: test
mask::tests::tag_str_for_maps_only_mask_emitted_types: test
metrics::tests::ratio_zero_denominator_is_zero: test
metrics::tests::reservoir_empty_is_none: test
metrics::tests::reservoir_is_bounded: test
metrics::tests::reservoir_nearest_rank_quantiles: test
metrics::tests::service_of_absent_is_none: test
metrics::tests::service_of_empty_string_is_none: test
metrics::tests::service_of_reads_service_name_string: test
overflow::tests::any_overflow_detects_overflow_in_mixed_params: test
overflow::tests::any_overflow_is_false_when_no_overflow_present: test
overflow::tests::cap_param_value_distinct_inputs_produce_distinct_markers: test
overflow::tests::cap_param_value_emits_overflow_marker_at_limit_plus_one: test
overflow::tests::cap_param_value_marker_is_deterministic_for_same_input: test
overflow::tests::cap_param_value_passes_through_at_exact_limit: test
overflow::tests::cap_param_value_passes_through_when_under_limit: test
reconstruct::tests::reconstruct_absent_returns_empty: test
reconstruct::tests::reconstruct_shape_mismatch_falls_back_to_body_in_release: test
reconstruct::tests::reconstruct_shape_mismatch_with_no_body_returns_empty: test
reconstruct::tests::reconstruct_string_clean_rebuilds_from_template_and_separators: test
reconstruct::tests::reconstruct_string_preserves_multibyte_separators: test
reconstruct::tests::reconstruct_string_with_lossy_flag_returns_body_verbatim: test
reconstruct::tests::reconstruct_string_with_overflow_param_returns_body_verbatim: test
reconstruct::tests::reconstruct_structured_returns_body_verbatim: test
reconstruct::tests::reconstruct_structured_with_no_body_returns_empty_until_canonicalisation: test
reconstruct::tests::render_absent_does_not_surface_a_stray_body: test
reconstruct::tests::render_absent_returns_empty_with_retained_marker: test
reconstruct::tests::render_clean_string_reconstructs_with_faithful_marker: test
reconstruct::tests::render_clean_string_with_template_shape_mismatch_is_retained_not_faithful: test
reconstruct::tests::render_lossy_string_returns_body_verbatim_with_marker: test
reconstruct::tests::render_overflow_string_returns_body_verbatim_with_marker: test
reconstruct::tests::render_structured_returns_canonical_body_with_faithful_marker: test
reconstruct::tests::render_structured_without_body_is_not_faithful: test
rfc0001_11_severity_zero_and_scope_none_are_distinct_key_buckets: test
rfc0001_1_fresh_leaf_creation_emits_template_created: test
rfc0001_2_degenerate_template_guard_rejects_fully_wildcard_widening: test
rfc0001_3_regression_separators_always_borrow_from_input: test
rfc0001_3_regression_vt_and_ff_split_tokens: test
rfc0001_3_tokenizer_is_unicode_whitespace_only: test
rfc0001_4_confidence_ratio_decision_boundary_at_one: test
rfc0001_7_combined_widening_and_type_expansion_emits_two_events_in_order: test
rfc0001_8_confidence_p50_and_p01_are_emitted_as_gauges: test
rfc0001_9_structured_body_short_circuits_to_structured_template_id: test
rfc0004_1_param_byte_limit_zero_rejected_at_startup: test
rfc0004_1_prefix_depth_above_ceiling_rejected_at_startup: test
rfc0004_2_per_tenant_override_is_honoured_at_decision_boundary: test
rfc0004_3_no_invariant_breaking_field_exists_on_miner_config: test
rfc0017_1_new_leaf_emits_template_created: test
rfc0023_1_template_ceiling_holds_and_never_merges: test
rfc0023_3_node_fanout_caps_via_wildcard_routing: test
rfc0023_4_long_lines_fail_parse_with_body_retained: test
rfc0023_5_default_bounds_are_invisible_on_healthy_corpora: test
rfc0023_6_ceiling_saturation_is_observable: test
rfc0024_4_no_silent_merge_over_generated_batches: test
rfc0024_5_bounds_hold_over_generated_streams: test
sim_seq::tests::confidence_ratio_at_threshold_returns_one: test
sim_seq::tests::confidence_ratio_is_scale_invariant_across_tenants: test
sim_seq::tests::confidence_ratio_panics_on_zero_threshold: test
sim_seq::tests::sim_seq_identical_sequences_return_one: test
sim_seq::tests::sim_seq_matches_rfc_section_3_5_worked_example_c: test
sim_seq::tests::sim_seq_owned_all_wildcards_returns_one: test
sim_seq::tests::sim_seq_owned_equals_sim_seq_via_borrowed_view: test
sim_seq::tests::sim_seq_owned_identical_returns_one: test
sim_seq::tests::sim_seq_owned_panics_on_empty_input: test
sim_seq::tests::sim_seq_owned_panics_on_length_mismatch: test
sim_seq::tests::sim_seq_panics_on_empty_inputs: test
sim_seq::tests::sim_seq_panics_on_length_mismatch: test
sim_seq::tests::sim_seq_partial_match_returns_correct_ratio: test
sim_seq::tests::sim_seq_wildcard_template_matches_anything: test
snapshot::tests::load_snapshot_rejects_corrupt_payload: test
snapshot::tests::load_snapshot_rejects_empty_input: test
snapshot::tests::load_snapshot_rejects_unknown_version: test
snapshot::tests::recover_with_known_version_returns_the_state_for_restore: test
snapshot::tests::recover_with_no_snapshot_reports_no_snapshot: test
snapshot::tests::recover_with_unknown_version_discards: test
snapshot::tests::slot_types_to_record_captures_every_member: test
snapshot::tests::snapshot_leading_byte_is_version: test
snapshot::tests::snapshot_round_trips_to_equal_state: test
tokenize::tests::tokenize_accepts_nul_free_input: test
tokenize::tests::tokenize_error_display_includes_offset: test
tokenize::tests::tokenize_error_implements_std_error_trait: test
tokenize::tests::tokenize_rejects_embedded_nul_with_byte_offset: test
tokenize::tests::tokenize_rejects_leading_nul: test
tree::tests::collect_leaves_returns_every_leaf_ignoring_order: test
tree::tests::descend_mut_creates_length_node_lazily: test
tree::tests::descend_mut_groups_lines_of_same_length_under_one_length_node: test
tree::tests::descend_mut_panics_on_empty_input: test
tree::tests::descend_mut_partitions_lines_of_different_length: test
tree::tests::descend_mut_returns_same_node_for_repeat_calls: test
tree::tests::descend_mut_walks_full_line_when_shorter_than_prefix_depth: test
tree::tests::descend_mut_with_zero_prefix_depth_returns_length_root: test
tree::tests::descend_panics_on_empty_input: test
tree::tests::descend_returns_none_when_length_bucket_missing: test
tree::tests::descend_returns_none_when_prefix_path_missing: test
tree::tests::descend_returns_some_at_exact_path_descend_mut_built: test
tree::tests::full_node_routes_overflow_tokens_through_the_wildcard_child: test
tree::tests::leaf_count_is_zero_for_empty_tree: test
tree::tests::leaf_count_sums_across_length_buckets_and_prefix_paths: test
tree::tests::owned_template_feeds_sim_seq_via_borrowed_view: test
tree::tests::owned_token_as_borrowed_round_trips_fixed: test
tree::tests::owned_token_as_borrowed_round_trips_wildcard: test
tree::tests::parse_template_empty_string_is_empty_template: test
tree::tests::parse_template_inverts_format_template: test
tree::tests::parse_template_inverts_format_template_prop: test
tree::tests::prop_keyed_children_never_exceed_the_cap: test
zero_bounds_are_rejected_at_startup: test
Post inventory (206)
cluster::tests::apply_widening_replaces_only_listed_positions: test
cluster::tests::audit_event_carries_triggering_line_hash_and_sample: test
cluster::tests::below_threshold_creates_separate_leaf_no_widening: test
cluster::tests::best_candidate_selection_picks_highest_similarity_in_parent_leaf_list: test
cluster::tests::body_none_emits_absent_record_with_no_template: test
cluster::tests::clean_attach_at_typed_wildcard_with_known_type_emits_no_audit: test
cluster::tests::clean_attach_at_typed_wildcard_with_new_type_emits_type_expanded: test
cluster::tests::clean_attach_does_not_bump_body_retentions: test
cluster::tests::clean_fresh_leaf_emits_record_with_separators_and_no_body: test
cluster::tests::clean_reuse_emits_record_at_same_template_id_and_version: test
cluster::tests::combined_widening_and_type_expansion_emits_two_events_in_order: test
cluster::tests::default_sink_drops_records_silently: test
cluster::tests::degenerate_widening_is_rejected_and_emits_rejection_event: test
cluster::tests::empty_input_emits_parse_failure_record: test
cluster::tests::exact_sim_seq_match_attaches_without_widening_or_audit: test
cluster::tests::existing_wildcard_receives_literal_emits_str_param_and_reconstructs: test
cluster::tests::find_widening_positions_returns_only_mismatched_fixed_positions: test
cluster::tests::floor_at_threshold_collapses_lossy_zone: test
cluster::tests::format_template_renders_canonical_form: test
cluster::tests::fresh_leaf_carries_wildcard_at_mask_positions_with_seeded_slot_types: test
cluster::tests::fresh_leaf_emits_created_event: test
cluster::tests::ingest_lazily_allocates_per_tenant_state: test
cluster::tests::ingest_returns_distinct_template_ids_for_distinct_shapes: test
cluster::tests::ingest_returns_no_template_for_absent_body: test
cluster::tests::ingest_returns_no_template_sentinel_for_empty_string_body: test
cluster::tests::ingest_returns_same_template_id_for_repeat_shape: test
cluster::tests::ingest_string_routes_lines_above_u16_max_tokens_to_parse_failure: test
cluster::tests::literal_mask_tag_in_leaf_vs_real_mask_emit_on_line_does_not_silently_merge: test
cluster::tests::literal_mask_tag_token_in_line_classifies_as_str_not_num: test
cluster::tests::literal_widening_seeds_slot_types_with_str_for_pre_widen_and_line: test
cluster::tests::lossy_attach_emits_record_with_retained_body_and_lossy_flag_false: test
cluster::tests::lossy_zone_creates_new_leaf_and_bumps_body_retention: test
cluster::tests::mask_tag_transition_at_typed_wildcard_emits_type_expanded: test
cluster::tests::near_match_under_same_parent_widens_into_single_template: test
cluster::tests::parse_failure_zone_emits_record_with_lossy_flag_and_no_template: test
cluster::tests::parse_failure_zone_returns_no_template_and_bumps_counters: test
cluster::tests::restore_bumps_the_id_allocator: test
cluster::tests::restore_rejects_duplicate_structured_key: test
cluster::tests::restore_rejects_duplicate_template_id: test
cluster::tests::restore_rejects_inconsistent_slot: test
cluster::tests::restore_rejects_live_tenant: test
cluster::tests::restore_round_trips_snapshot_state: test
cluster::tests::restore_with_wildcard_in_prefix_path: test
cluster::tests::restored_tree_continues_identically: test
cluster::tests::second_widening_at_different_position_increments_version_again: test
cluster::tests::silent_merge_across_mask_tag_types_is_audited_not_silent: test
cluster::tests::slot_types_are_aligned_by_wildcard_ordinal_not_template_position: test
cluster::tests::snapshot_state_orders_records_by_template_id: test
cluster::tests::string_body_distinguishes_severity_within_one_scope: test
cluster::tests::structured_and_string_share_no_template_ids_at_same_severity_scope: test
cluster::tests::structured_body_distinguishes_scope_within_one_severity: test
cluster::tests::structured_body_distinguishes_severity_within_one_scope: test
cluster::tests::structured_body_emits_record_with_structured_kind: test
cluster::tests::structured_body_is_stored_as_otlp_canonical_json: test
cluster::tests::structured_body_isolates_template_ids_across_tenants: test
cluster::tests::structured_body_short_circuit_allocates_one_template_per_severity_scope_tuple: test
cluster::tests::structured_body_with_scope_none_is_its_own_bucket: test
cluster::tests::template_count_grows_with_each_distinct_template: test
cluster::tests::template_count_is_zero_for_unseen_tenant: test
cluster::tests::tenant_ids_returns_sorted_tenants: test
cluster::tests::type_expansion_only_attach_counts_toward_merges_total: test
cluster::tests::widening_emits_record_with_bumped_version: test
cluster::tests::widening_increments_template_version: test
cluster::tests::would_be_degenerate_only_when_no_fixed_remain: test
crates/ourios-miner/src/sim_seq.rs - sim_seq::sim_seq_owned (line 97): test
h1_1_login_and_logout_remain_distinct_at_default_threshold: test
h1_2_lossy_zone_match_retains_body: test
h1_3_every_widening_emits_an_audit_event: test
h1_4_severity_number_is_part_of_template_key: test
h1_5_scope_name_is_part_of_template_key: test
h2_1_overflow_via_aligned_params_at_existing_wildcard: test
h2_1_oversized_parameter_triggers_overflow_marker: test
h2_1_per_tenant_byte_limit_override_honoured: test
h2_2_per_service_overflow_rate_above_one_percent_alerts: test
h5_1_wildcard_widening_increments_version_and_emits_template_widened: test
h5_2_type_expansion_increments_version_and_emits_template_type_expanded: test
h7_1_reconstruction_property_holds_across_corpus: test
h7_2_tokenizer_failure_sets_lossy_flag_and_retains_body: test
h7_3_reader_emits_body_verbatim_when_lossy_flag_is_true: test
h7_4_widened_literal_slot_reconstructs_via_str_fallback: test
invariant_3_1_1_default_threshold_is_0_7: test
invariant_3_1_2_mandatory_metric_set_is_exposed: test
invariant_3_2_1_default_param_byte_limit_is_256: test
invariant_3_2_2_param_limit_above_1_kib_rejected_at_startup: test
invariant_3_3_1_separators_captured_on_every_tokenization: test
invariant_3_5_1_snapshot_format_carries_leading_version_byte: test
invariant_3_5_2_unknown_snapshot_version_triggers_wal_replay: test
invariant_3_7_1_tenant_trees_never_cross_pollinate: test
invariant_3_7_2_same_template_two_tenants_distinct_template_ids: test
invariant_default_similarity_floor_is_0_4: test
mask::tests::is_ipv4_rejects_leading_zero_octet: test
mask::tests::is_ipv4_rejects_octet_above_255: test
mask::tests::mask_classifies_negative_integer_as_num: test
mask::tests::mask_classifies_uuid: test
mask::tests::mask_does_not_classify_literal_mask_tag_token: test
mask::tests::mask_matches_rfc_section_3_5_worked_example: test
mask::tests::mask_tag_as_str_pins_canonical_strings: test
mask::tests::mask_typed_param_value_borrows_from_input: test
mask::tests::mask_unrecognized_tokens_stay_literal: test
mask::tests::mask_wildcard_positions_are_ascending_and_parallel_to_typed_params: test
mask::tests::param_type_from_mask_tag_pins_mapping: test
mask::tests::tag_str_for_maps_only_mask_emitted_types: test
metrics::tests::ratio_zero_denominator_is_zero: test
metrics::tests::reservoir_empty_is_none: test
metrics::tests::reservoir_is_bounded: test
metrics::tests::reservoir_nearest_rank_quantiles: test
metrics::tests::service_of_absent_is_none: test
metrics::tests::service_of_empty_string_is_none: test
metrics::tests::service_of_reads_service_name_string: test
overflow::tests::any_overflow_detects_overflow_in_mixed_params: test
overflow::tests::any_overflow_is_false_when_no_overflow_present: test
overflow::tests::cap_param_value_distinct_inputs_produce_distinct_markers: test
overflow::tests::cap_param_value_emits_overflow_marker_at_limit_plus_one: test
overflow::tests::cap_param_value_marker_is_deterministic_for_same_input: test
overflow::tests::cap_param_value_passes_through_at_exact_limit: test
overflow::tests::cap_param_value_passes_through_when_under_limit: test
reconstruct::tests::reconstruct_absent_returns_empty: test
reconstruct::tests::reconstruct_shape_mismatch_falls_back_to_body_in_release: test
reconstruct::tests::reconstruct_shape_mismatch_with_no_body_returns_empty: test
reconstruct::tests::reconstruct_string_clean_rebuilds_from_template_and_separators: test
reconstruct::tests::reconstruct_string_preserves_multibyte_separators: test
reconstruct::tests::reconstruct_string_with_lossy_flag_returns_body_verbatim: test
reconstruct::tests::reconstruct_string_with_overflow_param_returns_body_verbatim: test
reconstruct::tests::reconstruct_structured_returns_body_verbatim: test
reconstruct::tests::reconstruct_structured_with_no_body_returns_empty_until_canonicalisation: test
reconstruct::tests::render_absent_does_not_surface_a_stray_body: test
reconstruct::tests::render_absent_returns_empty_with_retained_marker: test
reconstruct::tests::render_clean_string_reconstructs_with_faithful_marker: test
reconstruct::tests::render_clean_string_with_template_shape_mismatch_is_retained_not_faithful: test
reconstruct::tests::render_lossy_string_returns_body_verbatim_with_marker: test
reconstruct::tests::render_overflow_string_returns_body_verbatim_with_marker: test
reconstruct::tests::render_structured_returns_canonical_body_with_faithful_marker: test
reconstruct::tests::render_structured_without_body_is_not_faithful: test
rfc0001_11_severity_zero_and_scope_none_are_distinct_key_buckets: test
rfc0001_1_fresh_leaf_creation_emits_template_created: test
rfc0001_2_degenerate_template_guard_rejects_fully_wildcard_widening: test
rfc0001_3_regression_separators_always_borrow_from_input: test
rfc0001_3_regression_vt_and_ff_split_tokens: test
rfc0001_3_tokenizer_is_unicode_whitespace_only: test
rfc0001_4_confidence_ratio_decision_boundary_at_one: test
rfc0001_7_combined_widening_and_type_expansion_emits_two_events_in_order: test
rfc0001_8_confidence_p50_and_p01_are_emitted_as_gauges: test
rfc0001_9_structured_body_short_circuits_to_structured_template_id: test
rfc0004_configuration_policy::rfc0004_1_param_byte_limit_zero_rejected_at_startup: test
rfc0004_configuration_policy::rfc0004_1_prefix_depth_above_ceiling_rejected_at_startup: test
rfc0004_configuration_policy::rfc0004_2_per_tenant_override_is_honoured_at_decision_boundary: test
rfc0004_configuration_policy::rfc0004_3_no_invariant_breaking_field_exists_on_miner_config: test
rfc0017_template_created::rfc0017_1_new_leaf_emits_template_created: test
rfc0023_1_template_ceiling_holds_and_never_merges: test
rfc0023_3_node_fanout_caps_via_wildcard_routing: test
rfc0023_4_long_lines_fail_parse_with_body_retained: test
rfc0023_5_default_bounds_are_invisible_on_healthy_corpora: test
rfc0023_6_ceiling_saturation_is_observable: test
rfc0024_properties::rfc0024_4_no_silent_merge_over_generated_batches: test
rfc0024_properties::rfc0024_5_bounds_hold_over_generated_streams: test
sim_seq::tests::confidence_ratio_at_threshold_returns_one: test
sim_seq::tests::confidence_ratio_is_scale_invariant_across_tenants: test
sim_seq::tests::confidence_ratio_panics_on_zero_threshold: test
sim_seq::tests::sim_seq_identical_sequences_return_one: test
sim_seq::tests::sim_seq_matches_rfc_section_3_5_worked_example_c: test
sim_seq::tests::sim_seq_owned_all_wildcards_returns_one: test
sim_seq::tests::sim_seq_owned_equals_sim_seq_via_borrowed_view: test
sim_seq::tests::sim_seq_owned_identical_returns_one: test
sim_seq::tests::sim_seq_owned_panics_on_empty_input: test
sim_seq::tests::sim_seq_owned_panics_on_length_mismatch: test
sim_seq::tests::sim_seq_panics_on_empty_inputs: test
sim_seq::tests::sim_seq_panics_on_length_mismatch: test
sim_seq::tests::sim_seq_partial_match_returns_correct_ratio: test
sim_seq::tests::sim_seq_wildcard_template_matches_anything: test
snapshot::tests::load_snapshot_rejects_corrupt_payload: test
snapshot::tests::load_snapshot_rejects_empty_input: test
snapshot::tests::load_snapshot_rejects_unknown_version: test
snapshot::tests::recover_with_known_version_returns_the_state_for_restore: test
snapshot::tests::recover_with_no_snapshot_reports_no_snapshot: test
snapshot::tests::recover_with_unknown_version_discards: test
snapshot::tests::slot_types_to_record_captures_every_member: test
snapshot::tests::snapshot_leading_byte_is_version: test
snapshot::tests::snapshot_round_trips_to_equal_state: test
tokenize::tests::tokenize_accepts_nul_free_input: test
tokenize::tests::tokenize_error_display_includes_offset: test
tokenize::tests::tokenize_error_implements_std_error_trait: test
tokenize::tests::tokenize_rejects_embedded_nul_with_byte_offset: test
tokenize::tests::tokenize_rejects_leading_nul: test
tree::tests::collect_leaves_returns_every_leaf_ignoring_order: test
tree::tests::descend_mut_creates_length_node_lazily: test
tree::tests::descend_mut_groups_lines_of_same_length_under_one_length_node: test
tree::tests::descend_mut_panics_on_empty_input: test
tree::tests::descend_mut_partitions_lines_of_different_length: test
tree::tests::descend_mut_returns_same_node_for_repeat_calls: test
tree::tests::descend_mut_walks_full_line_when_shorter_than_prefix_depth: test
tree::tests::descend_mut_with_zero_prefix_depth_returns_length_root: test
tree::tests::descend_panics_on_empty_input: test
tree::tests::descend_returns_none_when_length_bucket_missing: test
tree::tests::descend_returns_none_when_prefix_path_missing: test
tree::tests::descend_returns_some_at_exact_path_descend_mut_built: test
tree::tests::full_node_routes_overflow_tokens_through_the_wildcard_child: test
tree::tests::leaf_count_is_zero_for_empty_tree: test
tree::tests::leaf_count_sums_across_length_buckets_and_prefix_paths: test
tree::tests::owned_template_feeds_sim_seq_via_borrowed_view: test
tree::tests::owned_token_as_borrowed_round_trips_fixed: test
tree::tests::owned_token_as_borrowed_round_trips_wildcard: test
tree::tests::parse_template_empty_string_is_empty_template: test
tree::tests::parse_template_inverts_format_template: test
tree::tests::parse_template_inverts_format_template_prop: test
tree::tests::prop_keyed_children_never_exceed_the_cap: test
zero_bounds_are_rejected_at_startup: test

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a consolidated integration test setup for miner-related test coverage.
    • Expanded scheduled deep-run checks to include the relevant integration test scope.
  • Documentation

    • Added guidance for where to place new integration tests and how the test harness is organized.

Pure moves (incl. the proptest-regressions sidecar) + the harness
main.rs; the weekly deep-run's miner line retargets in the same commit
(RFC0028.5). Four binaries stay dedicated (RFC0028.2): each installs
the process-global OTel meter provider for one telemetry arm —
reasons in tests/README.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 30592528-6096-464a-b2a1-0e42b125b99d

📥 Commits

Reviewing files that changed from the base of the PR and between 2618c3c and 7365b4e.

📒 Files selected for processing (7)
  • .github/workflows/rfc0024-deep-run.yml
  • crates/ourios-miner/tests/README.md
  • crates/ourios-miner/tests/it/main.rs
  • crates/ourios-miner/tests/it/rfc0004_configuration_policy.rs
  • crates/ourios-miner/tests/it/rfc0017_template_created.rs
  • crates/ourios-miner/tests/it/rfc0024_properties.proptest-regressions
  • crates/ourios-miner/tests/it/rfc0024_properties.rs

📝 Walkthrough

Walkthrough

Adds a consolidated integration-test harness entrypoint (tests/it/main.rs) for the ourios-miner crate that wires in existing RFC test modules, documents the harness layout and exempt binaries in a README, and updates the CI workflow to invoke tests via the new --test it selector.

Changes

Test harness consolidation

Layer / File(s) Summary
Harness entrypoint and module wiring
crates/ourios-miner/tests/it/main.rs
New consolidated integration-test entrypoint declaring rfc0004_configuration_policy, rfc0017_template_created, and rfc0024_properties modules with harness documentation.
Harness layout documentation
crates/ourios-miner/tests/README.md
Documents the it/ consolidated harness convention, how to add new tests, and lists harness-exempt binaries that install a process-global OTel meter provider.
CI invocation update
.github/workflows/rfc0024-deep-run.yml
Updates the cargo test invocation to select the consolidated harness via --test it.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

  • jensholdgaard/ourios#363: Adds the rfc0024_properties test module now wired into the consolidated harness and run via --test it.
  • jensholdgaard/ourios#399: Implements the equivalent consolidated tests/it/main.rs harness for the ourios-ingester crate.
  • jensholdgaard/ourios#401: Implements the equivalent consolidated tests/it/main.rs harness for the ourios-parquet crate.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately summarizes the main change: folding three miner test binaries into one harness.
Description check ✅ Passed The description is detailed and covers summary, RFC context, inventory proof, and notes; it only omits the template's explicit Checklist/Related headings.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch rfc0028-slice2e-miner-harness

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Consolidates three ourios-miner integration-test binaries into a single tests/it/ harness (per RFC 0028 slice 2e), while keeping the process-global OTel meter-provider tests as dedicated binaries, and retargets the RFC 0024 deep-run workflow to the new harness invocation.

Changes:

  • Add crates/ourios-miner/tests/it/ consolidated harness (main.rs) and move RFC0004/RFC0017/RFC0024 test modules into it.
  • Add crates/ourios-miner/tests/README.md documenting which integration tests must remain harness-exempt and why.
  • Update .github/workflows/rfc0024-deep-run.yml to run miner’s RFC0024 properties via --test it rfc0024_properties.

Reviewed changes

Copilot reviewed 3 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
File Description
crates/ourios-miner/tests/README.md Documents the new miner integration-test layout and the harness-exempt binaries.
crates/ourios-miner/tests/it/main.rs Introduces the consolidated miner integration-test harness and wires in moved modules.
crates/ourios-miner/tests/it/rfc0004_configuration_policy.rs Moves RFC0004 configuration-policy integration tests into the harness (verbatim).
crates/ourios-miner/tests/it/rfc0017_template_created.rs Moves RFC0017 “template_created” audit event test into the harness (verbatim).
crates/ourios-miner/tests/it/rfc0024_properties.rs Moves miner-owned RFC0024 property tests into the harness (verbatim).
crates/ourios-miner/tests/it/rfc0024_properties.proptest-regressions Relocates the proptest regression persistence sidecar alongside the moved test module.
.github/workflows/rfc0024-deep-run.yml Retargets the deep-run job to execute the miner RFC0024 properties through the it harness.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@jensholdgaard
jensholdgaard merged commit 08912b7 into main Jul 6, 2026
23 checks passed
@jensholdgaard
jensholdgaard deleted the rfc0028-slice2e-miner-harness branch July 6, 2026 11:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants