[INFO] cloning repository https://github.com/akiselev/handprint
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/akiselev/handprint" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fakiselev%2Fhandprint", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fakiselev%2Fhandprint'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] bc7653c425a02afb6f2558bc4c8ff29b7880698f
[INFO] testing akiselev/handprint against 1.99.0-beta.8 for beta-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fakiselev%2Fhandprint" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/akiselev/handprint
[INFO] finished tweaking git repo https://github.com/akiselev/handprint
[INFO] tweaked toml for git repo https://github.com/akiselev/handprint written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/akiselev/handprint on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/akiselev/handprint already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4
[INFO] running `Command { std: "docker" "start" "cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling tinyvec v1.12.0
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling unicode-segmentation v1.13.3
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]    Compiling unicode-normalization v0.1.25
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling clap_builder v4.6.2
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.7
[INFO] [stderr]    Compiling clap v4.6.4
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling handprint-core v0.1.0 (/opt/rustwide/workdir/crates/handprint-core)
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling handprint-data v0.1.0 (/opt/rustwide/workdir/crates/handprint-data)
[INFO] [stderr]    Compiling handprint-cli v0.1.0 (/opt/rustwide/workdir/crates/handprint-cli)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 56.21s
[INFO] running `Command { std: "docker" "inspect" "cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling either v1.17.0
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling regex-automata v0.4.16
[INFO] [stderr]    Compiling criterion-plot v0.5.0
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling zerocopy-derive v0.8.55
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.7
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling handprint-core v0.1.0 (/opt/rustwide/workdir/crates/handprint-core)
[INFO] [stderr]    Compiling criterion v0.5.1
[INFO] [stderr]    Compiling handprint-data v0.1.0 (/opt/rustwide/workdir/crates/handprint-data)
[INFO] [stderr]    Compiling handprint-cli v0.1.0 (/opt/rustwide/workdir/crates/handprint-cli)
[INFO] [stdout] warning: function `spacing_is_missing_rather_than_zero_below_the_hit_floor` is never used
[INFO] [stdout]     --> crates/handprint-core/src/feature/device.rs:1226:8
[INFO] [stdout]      |
[INFO] [stdout] 1226 |     fn spacing_is_missing_rather_than_zero_below_the_hit_floor() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 26s
[INFO] running `Command { std: "docker" "inspect" "cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: function `spacing_is_missing_rather_than_zero_below_the_hit_floor` is never used
[INFO] [stderr]     --> crates/handprint-core/src/feature/device.rs:1226:8
[INFO] [stderr]      |
[INFO] [stderr] 1226 |     fn spacing_is_missing_rather_than_zero_below_the_hit_floor() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `handprint-core` (lib test) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.16s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/handprint-fad09fa1c086f276)
[INFO] [stdout] 
[INFO] [stdout] running 18 tests
[INFO] [stdout] test commands::tests::html_rendering_escapes_and_marks ... ok
[INFO] [stdout] test config::tests::an_empty_config_is_valid ... ok
[INFO] [stdout] test commands::tests::universe_specs_parse ... ok
[INFO] [stdout] test commands::tests::severity_and_profile_names_parse ... ok
[INFO] [stdout] test config::tests::parses_a_project_file ... ok
[INFO] [stdout] test config::tests::unknown_keys_are_rejected_rather_than_ignored ... ok
[INFO] [stdout] test io::tests::flat_directory_is_one_author_per_file ... ok
[INFO] [stdout] test io::tests::author_per_subdirectory ... ok
[INFO] [stdout] test io::tests::private_flag_propagates ... ok
[INFO] [stdout] test config::tests::discovery_walks_up_the_tree ... ok
[INFO] [stdout] test tests::critique_defaults_to_json_and_corpus_mode ... ok
[INFO] [stdout] test tests::the_cli_definition_is_valid ... ok
[INFO] [stdout] test tests::fit_defaults_to_the_short_text_families ... ok
[INFO] [stdout] test io::tests::jsonl_records_group_by_model ... ok
[INFO] [stdout] test tests::unknown_subcommands_are_rejected ... ok
[INFO] [stdout] test io::tests::missing_and_empty_paths_are_errors ... ok
[INFO] [stdout] test tests::fit_takes_a_comma_separated_feature_list ... ok
[INFO] [stdout] test io::tests::references_round_trip_on_disk ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/loop.rs (/opt/rustwide/target/debug/deps/loop-a61f8a81254501dd)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test the_register_family_reaches_the_contract_as_an_open_set_value ... ok
[INFO] [stdout] test a_declared_pack_yields_category_findings_on_a_hedge_stripped_draft ... ok
[INFO] [stdout] test the_discover_fit_critique_loop_closes ... ok
[INFO] [stdout] test spans_are_byte_exact_so_patches_apply_cleanly ... ok
[INFO] [stdout] test a_scripted_agent_converges_on_a_salted_draft ... ok
[INFO] [stdout] test exit_codes_follow_vale ... ok
[INFO] [stdout] test the_project_config_supplies_defaults ... ok
[INFO] [stdout] test verify_runs_general_imposters ... ok
[INFO] [stdout] test forensic_commands_run ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 11.41s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/handprint_core-87efe5fbe739d1cf)
[INFO] [stdout] 
[INFO] [stdout] running 377 tests
[INFO] [stdout] test compare::tests::cosine_offset_is_documented_and_exact ... ok
[INFO] [stdout] test compare::tests::burrows_delta_is_mean_absolute_difference ... ok
[INFO] [stdout] test compare::tests::decomposition_sums_to_distance_for_every_metric ... ok
[INFO] [stdout] test compare::tests::eder_weights_earlier_dimensions_more ... ok
[INFO] [stdout] test compare::tests::identical_profiles_are_at_distance_zero ... ok
[INFO] [stdout] test compare::tests::metric_names_round_trip ... ok
[INFO] [stdout] test compare::tests::minmax_equals_one_minus_ruzicka_similarity ... ok
[INFO] [stdout] test compare::tests::scaling_space_is_a_metric_property ... ok
[INFO] [stdout] test contrast::tests::discovered_terms_become_a_feature ... ok
[INFO] [stdout] test contrast::tests::larger_alpha0_shrinks_every_z_toward_zero ... ok
[INFO] [stdout] test contrast::tests::alpha0_is_reported_because_it_moves_with_the_vocabulary ... ok
[INFO] [stdout] test contrast::tests::matches_a_hand_computed_three_term_example ... ok
[INFO] [stdout] test compare::tests::zero_vectors_do_not_produce_nan ... ok
[INFO] [stdout] test contrast::tests::model_round_trips_through_serde ... ok
[INFO] [stdout] test contrast::tests::privacy_culling_removes_rare_identifiers ... ok
[INFO] [stdout] test contrast::tests::background_prior_alphas_sum_to_alpha0 ... ok
[INFO] [stdout] test compare::tests::cosine_delta_matches_the_textbook_formula ... ok
[INFO] [stdout] test contrast::tests::the_function_word_filter_requires_every_token_of_a_phrase ... ok
[INFO] [stdout] test corpus::tests::add_merges_repeated_authors ... ok
[INFO] [stdout] test corpus::tests::aggregation_joins_with_blank_lines ... ok
[INFO] [stdout] test corpus::tests::grouping_and_counts ... ok
[INFO] [stdout] test corpus::tests::split_halves_skips_single_document_authors ... ok
[INFO] [stdout] test contrast::tests::universes_are_fitted_separately_and_never_pooled ... ok
[INFO] [stdout] test contrast::tests::the_function_word_filter_removes_topic ... ok
[INFO] [stdout] test contrast::tests::empty_side_is_rejected ... ok
[INFO] [stdout] test compare::tests::minmax_is_bounded_in_unit_interval ... ok
[INFO] [stdout] test contrast::tests::reduced_variance_inflates_the_z_score ... ok
[INFO] [stdout] test contrast::tests::salted_markers_surface_and_z_is_monotone_in_salting_rate ... ok
[INFO] [stdout] test critique::tests::a_pre_change_contrast_artifact_fails_the_loop_with_a_refit_error ... ok
[INFO] [stdout] test critique::tests::an_absent_canary_family_falls_back_and_says_so ... ok
[INFO] [stdout] test critique::tests::an_under_firing_draft_is_told_to_increase_the_signature_lexis ... ok
[INFO] [stdout] test critique::tests::a_slopped_draft_produces_actionable_findings ... ok
[INFO] [stdout] test critique::tests::a_matching_draft_produces_far_fewer_findings ... ok
[INFO] [stdout] test critique::tests::capping_stops_one_dimension_from_dominating ... ok
[INFO] [stdout] test critique::tests::an_over_fired_dimension_is_told_to_reduce_and_the_message_shows_both_edges ... ok
[INFO] [stdout] test critique::tests::an_over_fired_marketing_fixture_trips_upper_bands ... ok
[INFO] [stdout] test critique::tests::artifacts_are_flagged_in_the_guards ... ok
[INFO] [stdout] test critique::tests::contrast_mode_targets_the_toward_side ... ok
[INFO] [stdout] test critique::tests::contrast_vocabulary_dimensions_fire_in_both_directions ... ok
[INFO] [stdout] test critique::tests::a_device_free_draft_is_told_to_increase_not_left_alone ... ok
[INFO] [stdout] test critique::tests::confidence_is_reported_per_family ... ok
[INFO] [stdout] test critique::tests::contrast_mode_without_an_away_profile_is_an_error ... ok
[INFO] [stdout] test critique::tests::drift_is_measured_against_the_first_draft ... ok
[INFO] [stdout] test critique::tests::relative_deviation_is_floored_by_unit ... ok
[INFO] [stdout] test critique::tests::lexicon_findings_carry_alternatives ... ok
[INFO] [stdout] test critique::tests::severity_respects_direction ... ok
[INFO] [stdout] test critique::tests::severity_uses_relative_deviation_when_the_z_score_cannot_help ... ok
[INFO] [stdout] test critique::tests::cosine_is_the_wrong_metric_for_one_class_membership ... ok
[INFO] [stdout] test critique::tests::a_calibration_for_the_wrong_metric_says_so ... ok
[INFO] [stdout] test critique::tests::only_the_top_k_are_reported_but_everything_is_scored ... ok
[INFO] [stdout] test critique::tests::the_canary_family_is_never_reported ... ok
[INFO] [stdout] test critique::tests::threshold_profiles_differ ... ok
[INFO] [stdout] test critique::tests::the_canary_trips_when_reported_features_improve_while_it_worsens ... ok
[INFO] [stdout] test critique::tests::more_adams_than_adams_trips_the_upper_band ... ok
[INFO] [stdout] test critique::tests::rollup_dimensions_never_become_findings ... ok
[INFO] [stdout] test critique::tests::the_salted_markers_are_surfaced_with_their_spans ... ok
[INFO] [stdout] test critique::tests::the_report_round_trips_as_json_and_matches_the_contract ... ok
[INFO] [stdout] test explain::tests::classification_picks_the_right_side ... ok
[INFO] [stdout] test explain::tests::delta_to_reports_the_move_needed ... ok
[INFO] [stdout] test critique::tests::a_calibrated_reference_evaluates_the_holistic_gate ... ok
[INFO] [stdout] test feature::biber::tests::closed_class_hits_carry_spans ... ok
[INFO] [stdout] test feature::biber::tests::closed_class_rates_are_exact_per_thousand ... ok
[INFO] [stdout] test feature::biber::tests::composites_are_rollups_and_never_reportable ... ok
[INFO] [stdout] test feature::biber::tests::empty_text_marks_everything_missing_rather_than_zero ... ok
[INFO] [stdout] test feature::biber::tests::involved_prose_scores_above_informational_prose_on_d1 ... ok
[INFO] [stdout] test feature::biber::tests::mean_word_length_is_characters_per_lexical_token ... ok
[INFO] [stdout] test feature::biber::tests::negation_is_split_into_analytic_and_synthetic ... ok
[INFO] [stdout] test feature::biber::tests::participial_spans_cover_the_clause ... ok
[INFO] [stdout] test feature::biber::tests::switching_the_participial_proxy_off_removes_its_dimension ... ok
[INFO] [stdout] test feature::biber::tests::the_nominalization_suffix_rule_handles_its_stoplist ... ok
[INFO] [stdout] test feature::biber::tests::the_participial_proxy_fires_on_sentence_final_ing_clauses ... ok
[INFO] [stdout] test feature::biber::tests::the_spec_round_trips_through_serde ... ok
[INFO] [stdout] test feature::char_ngram::tests::affix_punct_mode_drops_mid_word ... ok
[INFO] [stdout] test feature::char_ngram::tests::all_types_mode_keeps_mid_word ... ok
[INFO] [stdout] test feature::char_ngram::tests::punctuation_typing ... ok
[INFO] [stdout] test critique::tests::without_calibration_the_gate_is_unevaluated_not_failed ... ok
[INFO] [stdout] test feature::char_ngram::tests::transform_emits_relative_frequencies_within_order ... ok
[INFO] [stdout] test feature::char_ngram::tests::typing_at_word_boundaries ... ok
[INFO] [stdout] test feature::char_ngram::tests::spans_map_back_to_source ... ok
[INFO] [stdout] test feature::char_ngram::tests::untyped_mode_merges_positions ... ok
[INFO] [stdout] test feature::device::tests::a_background_pack_changes_the_number_and_both_stay_deterministic ... ok
[INFO] [stdout] test feature::device::tests::a_fitting_document_still_scores_its_own_coinages_as_novel ... ok
[INFO] [stdout] test feature::device::tests::a_pair_the_corpus_never_used_counts_as_novel ... ok
[INFO] [stdout] test feature::device::tests::a_device_in_every_paragraph_shows_a_higher_paragraph_share ... ok
[INFO] [stdout] test feature::device::tests::adjective_detection_has_a_documented_stoplist ... ok
[INFO] [stdout] test feature::device::tests::absurd_precision_needs_both_halves ... ok
[INFO] [stdout] test feature::device::tests::alliteration_needs_a_run_of_three ... ok
[INFO] [stdout] test feature::device::tests::antonym_pairs_and_ambiguity_come_from_the_wordnet_tables ... ok
[INFO] [stdout] test feature::device::tests::burstiness_ranks_a_drumbeat_below_a_clump ... ok
[INFO] [stdout] test feature::device::tests::empty_text_marks_everything_missing ... ok
[INFO] [stdout] test feature::device::tests::headline_shapes_are_separated ... ok
[INFO] [stdout] test feature::device::tests::litotes_fires_on_both_of_its_shapes ... ok
[INFO] [stdout] test feature::device::tests::rhyme_is_missing_under_the_vowel_group_method ... ok
[INFO] [stdout] test feature::device::tests::switching_wordnet_off_removes_its_dimensions ... ok
[INFO] [stdout] test feature::device::tests::imperatives_are_counted_but_negated_ones_are_not ... ok
[INFO] [stdout] test feature::device::tests::the_not_x_not_y_just_z_block_is_detected ... ok
[INFO] [stdout] test explain::tests::rolling_finds_the_odd_window ... ok
[INFO] [stdout] test feature::device::tests::the_novel_bigram_set_is_deterministic_and_sorted ... ok
[INFO] [stdout] test feature::device::tests::the_spec_round_trips_and_defaults_sensibly ... ok
[INFO] [stdout] test feature::device::tests::the_transferred_epithet_needs_concreteness_norms ... ok
[INFO] [stdout] test feature::formality::tests::a_loader_only_norm_pack_makes_the_reference_non_redistributable ... ok
[INFO] [stdout] test feature::formality::tests::clash_spans_cover_the_clashing_pair ... ok
[INFO] [stdout] test feature::device::tests::triplets_are_counted_per_thousand_tokens ... ok
[INFO] [stdout] test feature::formality::tests::formal_prose_scores_a_higher_mean_than_informal_prose ... ok
[INFO] [stdout] test feature::formality::tests::bimodality_separates_two_clumps_from_one_spread ... ok
[INFO] [stdout] test feature::formality::tests::interleaved_registers_score_higher_variance_than_either_pure_one ... ok
[INFO] [stdout] test feature::formality::tests::distribution_stats_are_missing_on_a_document_with_too_few_scored_words ... ok
[INFO] [stdout] test feature::formality::tests::the_bundled_proxy_needs_no_external_data ... ok
[INFO] [stdout] test feature::formality::tests::the_latinate_profanity_clash_needs_a_pack_and_says_so_without_one ... ok
[INFO] [stdout] test feature::formality::tests::the_latinate_suffix_heuristic_has_a_documented_stoplist ... ok
[INFO] [stdout] test feature::formality::tests::the_spec_round_trips_through_serde ... ok
[INFO] [stdout] test feature::frames::tests::a_document_with_no_frames_reports_zero_rates_and_unknown_shape ... ok
[INFO] [stdout] test feature::frames::tests::as_far_as_style_idioms_do_not_chain_into_a_simile ... ok
[INFO] [stdout] test feature::frames::tests::every_frame_shape_is_found_exactly_once ... ok
[INFO] [stdout] test feature::frames::tests::frame_spans_are_byte_exact ... ok
[INFO] [stdout] test feature::frames::tests::rates_are_exact_per_thousand_tokens ... ok
[INFO] [stdout] test feature::frames::tests::the_frozen_pack_license_rolls_up_into_the_reference ... ok
[INFO] [stdout] test feature::frames::tests::the_frozen_share_needs_a_pack_and_says_so_without_one ... ok
[INFO] [stdout] test feature::frames::tests::the_negated_vehicle_is_distinguished_from_a_plain_simile ... ok
[INFO] [stdout] test feature::frames::tests::the_spec_round_trips_through_serde ... ok
[INFO] [stdout] test feature::frames::tests::the_verb_like_and_the_discourse_particle_are_not_similes ... ok
[INFO] [stdout] test feature::frames::tests::vehicle_length_separates_a_one_word_vehicle_from_a_clause ... ok
[INFO] [stdout] test feature::lexicon::tests::alternatives_are_available_for_findings ... ok
[INFO] [stdout] test feature::frames::tests::figure_spacing_separates_a_metronome_from_a_burst ... ok
[INFO] [stdout] test feature::lexicon::tests::category_and_total_rollups ... ok
[INFO] [stdout] test feature::lexicon::tests::category_rates_still_count_hits_when_per_term_is_off ... ok
[INFO] [stdout] test feature::lexicon::tests::category_findings_makes_the_category_rates_reportable ... ok
[INFO] [stdout] test feature::lexicon::tests::custom_pack_namespaces_dimensions ... ok
[INFO] [stdout] test feature::formality::tests::the_clash_rate_separates_interleaved_from_uniform_prose ... ok
[INFO] [stdout] test feature::lexicon::tests::phrase_patterns_match_with_gaps_and_alternatives ... ok
[INFO] [stdout] test feature::lexicon::tests::clean_text_scores_zero ... ok
[INFO] [stdout] test feature::lexicon::tests::phrase_spans_cover_the_whole_match ... ok
[INFO] [stdout] test feature::lexicon::tests::seed_pack_is_well_formed ... ok
[INFO] [stdout] test explain::tests::highlights_need_a_tracked_profile ... ok
[INFO] [stdout] test feature::lexicon::tests::pack_round_trips_through_json ... ok
[INFO] [stdout] test feature::lexicon::tests::word_hits_carry_spans ... ok
[INFO] [stdout] test feature::lexicon::tests::the_spec_flag_serde_defaults_so_old_artifacts_load_unchanged ... ok
[INFO] [stdout] test feature::mfw::tests::empty_vocabulary_is_an_error ... ok
[INFO] [stdout] test feature::lexicon::tests::structural_rules_fire ... ok
[INFO] [stdout] test feature::mfw::tests::hand_computed_fixture_matches ... ok
[INFO] [stdout] test feature::mfw::tests::selects_top_k_by_frequency ... ok
[INFO] [stdout] test feature::mfw::tests::transform_emits_relative_frequencies ... ok
[INFO] [stdout] test feature::norms::tests::a_concrete_document_scores_above_an_abstract_one ... ok
[INFO] [stdout] test feature::norms::tests::a_document_with_too_few_scored_tokens_is_missing_not_zero ... ok
[INFO] [stdout] test feature::mfw::tests::culling_drops_document_specific_words ... ok
[INFO] [stdout] test feature::norms::tests::an_empty_pack_is_rejected_at_fit ... ok
[INFO] [stdout] test feature::lexicon::tests::the_number_wildcard_matches_a_numeric_token_only ... ok
[INFO] [stdout] test feature::mfw::tests::function_word_mode_excludes_content_words ... ok
[INFO] [stdout] test feature::norms::tests::one_feature_covers_every_norm_pack ... ok
[INFO] [stdout] test feature::norms::tests::the_high_share_and_p90_separate_the_tail_from_the_mean ... ok
[INFO] [stdout] test feature::norms::tests::the_pack_license_rolls_up ... ok
[INFO] [stdout] test feature::pack::tests::non_finite_values_are_rejected ... ok
[INFO] [stdout] test feature::pack::tests::norm_lookups_and_quantiles ... ok
[INFO] [stdout] test feature::pack::tests::norm_pack_round_trips_through_json ... ok
[INFO] [stdout] test feature::packs::cliche_similes::tests::entries_open_with_a_comparison_frame ... ok
[INFO] [stdout] test feature::packs::cliche_similes::tests::every_entry_is_a_literal_token_sequence ... ok
[INFO] [stdout] test feature::packs::cliche_similes::tests::the_pack_is_big_enough_for_a_share_to_mean_something ... ok
[INFO] [stdout] test feature::pack::tests::count_pack_total_falls_back_to_the_entry_sum ... ok
[INFO] [stdout] test feature::pack::tests::empty_packs_are_rejected ... ok
[INFO] [stdout] test feature::packs::doc_style::tests::the_categories_are_the_five_documented_ones ... ok
[INFO] [stdout] test feature::packs::doc_style::tests::wordy_terms_carry_the_replacement_the_fix_block_needs ... ok
[INFO] [stdout] test feature::packs::hyland::tests::no_word_appears_in_two_categories ... ok
[INFO] [stdout] test feature::packs::hyland::tests::all_ten_hyland_categories_are_present ... ok
[INFO] [stdout] test feature::packs::marketing::tests::the_eval_categories_are_the_five_leech_families ... ok
[INFO] [stdout] test feature::pack::tests::count_pack_round_trips_and_computes_frequencies ... ok
[INFO] [stdout] test feature::packs::misc::tests::every_pack_here_validates_its_patterns ... ok
[INFO] [stdout] test feature::packs::misc::tests::the_epistemic_pack_is_about_the_size_the_plan_called_for ... ok
[INFO] [stdout] test feature::packs::misc::tests::the_other_packs_do_not_inherit_share_alike ... ok
[INFO] [stdout] test feature::packs::misc::tests::the_wikipedia_derivation_declares_share_alike ... ok
[INFO] [stdout] test feature::packs::hyland::tests::the_pack_is_the_size_the_taxonomy_implies ... ok
[INFO] [stdout] test feature::packs::norms::tests::every_entry_is_lowercase_so_the_tokenizer_can_match_it ... ok
[INFO] [stdout] test feature::packs::norms::tests::no_term_is_scored_twice ... ok
[INFO] [stdout] test feature::packs::marketing::tests::the_numeric_slots_use_the_hash_wildcard ... ok
[INFO] [stdout] test feature::packs::norms::tests::the_booster_pack_splits_amplifiers_from_dampeners ... ok
[INFO] [stdout] test feature::packs::norms::tests::the_concreteness_stub_is_labelled_as_a_stub ... ok
[INFO] [stdout] test feature::packs::norms::tests::the_proxy_validates_and_round_trips ... ok
[INFO] [stdout] test feature::packs::profanity::tests::the_three_strength_bands_are_present_and_ordered ... ok
[INFO] [stdout] test feature::packs::tech_voice::tests::the_five_categories_are_present ... ok
[INFO] [stdout] test feature::packs::tech_voice::tests::the_pack_is_phrases_only ... ok
[INFO] [stdout] test feature::packs::norms::tests::the_scale_spans_both_registers ... ok
[INFO] [stdout] test feature::packs::profanity::tests::no_entry_suggests_a_replacement ... ok
[INFO] [stdout] test feature::packs::tests::every_listed_pack_resolves ... ok
[INFO] [stdout] test feature::packs::tests::share_alike_obligations_never_reach_a_sibling_pack ... ok
[INFO] [stdout] test feature::packs::marketing::tests::the_two_packs_do_not_overlap ... ok
[INFO] [stdout] test feature::packs::tests::pack_rule_ids_are_unique_and_patterns_parse ... ok
[INFO] [stdout] test feature::packs::tests::terms_are_lowercase_so_the_tokenizer_can_match_them ... ok
[INFO] [stdout] test feature::packs::wordnet::tests::antonym_pairs_are_ordered_within_the_pair ... ok
[INFO] [stdout] test feature::packs::wordnet::tests::the_sense_table_spans_both_ends_of_polysemy ... ok
[INFO] [stdout] test feature::packs::wordnet::tests::the_attribution_is_present ... ok
[INFO] [stdout] test feature::packs::wordnet::tests::the_tables_are_sorted_for_binary_search ... ok
[INFO] [stdout] test feature::punct::tests::allcaps_and_contractions ... ok
[INFO] [stdout] test feature::punct::tests::em_dash_rate_is_per_thousand_lexical_tokens ... ok
[INFO] [stdout] test feature::punct::tests::dash_style_ratios ... ok
[INFO] [stdout] test feature::punct::tests::empty_document_marks_everything_missing ... ok
[INFO] [stdout] test explain::tests::pulls_sum_to_the_margin ... ok
[INFO] [stdout] test feature::punct::tests::spans_are_recorded_for_actionable_markers ... ok
[INFO] [stdout] test feature::punct::tests::letter_frequencies_normalize ... ok
[INFO] [stdout] test feature::punct::tests::quote_and_ellipsis_style ... ok
[INFO] [stdout] test explain::tests::rolling_rejects_a_zero_window ... ok
[INFO] [stdout] test feature::punct::tests::word_length_distribution_sums_to_one ... ok
[INFO] [stdout] test feature::punct::tests::informality_markers_fire ... ok
[INFO] [stdout] test feature::readability::tests::empty_text_marks_everything_missing ... ok
[INFO] [stdout] test feature::readability::tests::grades_are_missing_below_the_sentence_floor ... ok
[INFO] [stdout] test feature::readability::tests::grades_match_hand_computed_values ... ok
[INFO] [stdout] test feature::readability::tests::the_documented_adjectival_false_positive_is_reproducible ... ok
[INFO] [stdout] test feature::readability::tests::the_passive_proxy_finds_be_plus_participle ... ok
[INFO] [stdout] test feature::readability::tests::acronyms_are_counted_off_the_source_case ... ok
[INFO] [stdout] test feature::readability::tests::passive_spans_cover_the_construction ... ok
[INFO] [stdout] test feature::readability::tests::syllable_counting_handles_the_usual_traps ... ok
[INFO] [stdout] test feature::readability::tests::long_latinate_prose_grades_above_short_plain_prose ... ok
[INFO] [stdout] test feature::richness::tests::mattr_is_missing_below_its_window ... ok
[INFO] [stdout] test feature::richness::tests::mattr_matches_a_hand_computed_case ... ok
[INFO] [stdout] test feature::richness::tests::yule_and_simpson_match_hand_computed_values ... ok
[INFO] [stdout] test feature::richness::tests::everything_is_missing_below_the_floor ... ok
[INFO] [stdout] test feature::richness::tests::mtld_is_roughly_length_invariant ... ok
[INFO] [stdout] test feature::sentence::tests::a_document_with_no_clause_marks_has_no_final_clause_ratio ... ok
[INFO] [stdout] test feature::packs::tests::every_pack_round_trips_through_json ... ok
[INFO] [stdout] test feature::readability::tests::the_spec_round_trips_and_defaults_to_vowel_group ... ok
[INFO] [stdout] test feature::richness::tests::mtld_ranks_repetitive_text_lower ... ok
[INFO] [stdout] test feature::sentence::tests::a_short_sentence_after_a_long_one_is_a_punch ... ok
[INFO] [stdout] test feature::sentence::tests::an_unpaired_dash_is_an_interruption_not_an_aside ... ok
[INFO] [stdout] test feature::sentence::tests::discourse_markers_are_rates_per_thousand ... ok
[INFO] [stdout] test feature::sentence::tests::dispersion_is_missing_below_the_floor ... ok
[INFO] [stdout] test feature::sentence::tests::link_spans_cover_the_whole_markup ... ok
[INFO] [stdout] test explain::tests::the_ai_pull_is_explained_by_the_expected_families ... ok
[INFO] [stdout] test feature::sentence::tests::asides_are_counted_with_their_length_and_share ... ok
[INFO] [stdout] test feature::sentence::tests::link_and_footnote_densities_are_exact_per_thousand ... ok
[INFO] [stdout] test feature::sentence::tests::opener_spans_point_at_the_sentence ... ok
[INFO] [stdout] test feature::sentence::tests::link_spans_survive_multi_byte_characters ... ok
[INFO] [stdout] test feature::sentence::tests::punch_spans_point_at_the_short_sentence ... ok
[INFO] [stdout] test feature::sentence::tests::markdown_affinity_shows_up ... ok
[INFO] [stdout] test feature::sentence::tests::the_new_dimensions_are_absent_unless_asked_for ... ok
[INFO] [stdout] test feature::sentence::tests::the_rhythm_and_aside_dims_stay_in_the_sentence_family ... ok
[INFO] [stdout] test feature::sentence::tests::the_final_clause_ratio_falls_when_the_punch_is_short ... ok
[INFO] [stdout] test feature::sentence::tests::formulaic_openers_are_counted_per_hundred_sentences ... ok
[INFO] [stdout] test feature::surprisal::tests::a_short_body_is_not_a_setup ... ok
[INFO] [stdout] test feature::sentence::tests::rhetorical_questions_are_separated_from_real_ones ... ok
[INFO] [stdout] test feature::sentence::tests::uniform_sentence_lengths_have_low_dispersion ... ok
[INFO] [stdout] test feature::surprisal::tests::autocorrelation_of_a_constant_series_is_zero ... ok
[INFO] [stdout] test feature::surprisal::tests::punch_dims_need_the_word_model_and_say_so ... ok
[INFO] [stdout] test feature::surprisal::tests::repetitive_text_has_flatter_surprisal ... ok
[INFO] [stdout] test feature::surprisal::tests::punch_dims_carry_the_rhythm_family_not_the_surprisal_family ... ok
[INFO] [stdout] test feature::surprisal::tests::short_corpus_is_rejected ... ok
[INFO] [stdout] test feature::surprisal::tests::in_corpus_text_is_less_surprising_than_out_of_corpus_text ... ok
[INFO] [stdout] test feature::surprisal::tests::splits_take_the_last_boundary_not_the_first ... ok
[INFO] [stdout] test feature::surprisal::tests::a_reference_without_the_flag_deserializes_and_profiles_identically ... ok
[INFO] [stdout] test feature::surprisal::tests::model_serializes_and_reproduces_scores ... ok
[INFO] [stdout] test feature::surprisal::tests::a_planted_final_clause_raises_the_punch_ratio ... ok
[INFO] [stdout] test feature::syntax::tests::a_present_tense_verb_after_its_subject_is_finite ... ok
[INFO] [stdout] test feature::syntax::tests::booster_chains_are_measured_and_missing_when_there_are_none ... ok
[INFO] [stdout] test feature::surprisal::tests::word_surprisal_attributes_spans ... ok
[INFO] [stdout] test feature::syntax::tests::catalog_spans_point_at_the_sentence ... ok
[INFO] [stdout] test feature::syntax::tests::concreteness_needs_its_norms ... ok
[INFO] [stdout] test feature::syntax::tests::escalation_dims_are_missing_on_a_short_document ... ok
[INFO] [stdout] test feature::syntax::tests::escalation_rhythm_reads_the_shape_of_the_series ... ok
[INFO] [stdout] test feature::syntax::tests::fragment_spans_point_at_the_sentence ... ok
[INFO] [stdout] test feature::syntax::tests::empty_text_marks_everything_missing ... ok
[INFO] [stdout] test feature::surprisal::tests::word_bigram_model_is_optional ... ok
[INFO] [stdout] test feature::syntax::tests::fragments_are_counted_exactly_on_the_fixture ... ok
[INFO] [stdout] test feature::syntax::tests::person_deixis_is_split_three_ways ... ok
[INFO] [stdout] test feature::syntax::tests::polysyndeton_and_asyndeton_are_distinguished ... ok
[INFO] [stdout] test feature::syntax::tests::sentence_initial_conjunctions_are_counted_per_hundred ... ok
[INFO] [stdout] test feature::syntax::tests::shouting_is_separated_from_acronyms ... ok
[INFO] [stdout] test feature::syntax::tests::parataxis_shows_up_as_a_low_subordinator_ratio ... ok
[INFO] [stdout] test feature::surprisal::tests::a_document_with_no_clause_splits_marks_the_punch_dims_missing ... ok
[INFO] [stdout] test feature::syntax::tests::the_ly_adverb_rule_has_a_documented_stoplist ... ok
[INFO] [stdout] test feature::syntax::tests::the_spec_round_trips_and_defaults_to_the_bundled_boosters ... ok
[INFO] [stdout] test feature::syntax::tests::the_rare_word_tail_needs_a_background_and_says_so_without_one ... ok
[INFO] [stdout] test feature::tests::confidence_tiers_are_ordered ... ok
[INFO] [stdout] test feature::tests::feature_spec_round_trips_through_serde ... ok
[INFO] [stdout] test feature::verse::tests::a_short_document_is_not_scanned_either ... ok
[INFO] [stdout] test feature::verse::tests::anaphora_and_epistrophe_are_counted_per_hundred_lines ... ok
[INFO] [stdout] test feature::verse::tests::antithesis_uses_the_antonym_table ... ok
[INFO] [stdout] test feature::verse::tests::feminine_endings_separate_the_two_fixtures ... ok
[INFO] [stdout] test feature::surprisal::tests::setup_entropy_is_informational_and_the_ratio_is_actionable ... ok
[INFO] [stdout] test feature::verse::tests::enjambment_and_end_stopping_are_complementary ... ok
[INFO] [stdout] test feature::verse::tests::prose_is_never_scanned_as_verse ... ok
[INFO] [stdout] test feature::verse::tests::the_spec_round_trips_and_records_the_syllable_method ... ok
[INFO] [stdout] test feature::verse::tests::the_doublet_proxy_is_relative_to_the_fitting_corpus ... ok
[INFO] [stdout] test feature::verse::tests::the_stress_profile_reports_a_fraction_per_position ... ok
[INFO] [stdout] test feature::verse::tests::line_geometry_captures_the_bukowski_axes ... ok
[INFO] [stdout] test feature::verse::tests::vocatives_use_the_o_plus_np_rule ... ok
[INFO] [stdout] test feature::vocab::tests::a_pre_change_artifact_loads_but_refuses_to_be_used ... ok
[INFO] [stdout] test feature::vocab::tests::an_empty_document_marks_the_dims_missing_rather_than_zero ... ok
[INFO] [stdout] test feature::syntax::tests::the_bukowski_thompson_contrast_separates_on_the_designed_axes ... ok
[INFO] [stdout] test feature::vocab::tests::char_universe_keeps_spaces ... ok
[INFO] [stdout] test feature::verse::tests::archaism_is_measured_as_a_ratio_and_two_rates ... ok
[INFO] [stdout] test feature::vocab::tests::empty_vocabulary_is_rejected ... ok
[INFO] [stdout] test feature::vocab::tests::contrast_dims_are_actionable_so_they_can_become_findings ... ok
[INFO] [stdout] test feature::vocab::tests::contrast_vocab_measures_a_rate_per_thousand_tokens ... ok
[INFO] [stdout] test feature::vocab::tests::word_universe_extracts_lexical_tokens_only ... ok
[INFO] [stdout] test feature::vocab::tests::bigram_universe_spans_both_words ... ok
[INFO] [stdout] test feature::verse::tests::the_spedding_split_separates_two_synthetic_corpora ... ok
[INFO] [stdout] test reference::calibrate::tests::bracket_interpolates_in_log_space ... ok
[INFO] [stdout] test feature::surprisal::tests::word_bigram_surprisal_attributes_the_rare_word ... ok
[INFO] [stdout] test feature::surprisal::tests::spike_spans_land_on_the_final_clause ... ok
[INFO] [stdout] test reference::calibrate::tests::extrapolation_is_flagged ... ok
[INFO] [stdout] test reference::calibrate::tests::calibration_round_trips_and_is_reproducible ... ok
[INFO] [stdout] test reference::calibrate::tests::subsampling_preserves_the_ecdf ... ok
[INFO] [stdout] test reference::calibrate::tests::single_author_corpus_is_rejected ... ok
[INFO] [stdout] test reference::calibrate::tests::same_author_distances_sit_below_different_author_ones ... ok
[INFO] [stdout] test reference::tests::em_dash_rate_dominates_the_explanation ... ok
[INFO] [stdout] test reference::tests::contributions_sum_to_the_distance_for_every_metric ... ok
[INFO] [stdout] test reference::tests::empty_pipeline_is_rejected ... ok
[INFO] [stdout] test reference::tests::family_rollup_covers_the_distance ... ok
[INFO] [stdout] test reference::tests::fit_produces_named_dimensions_and_stats ... ok
[INFO] [stdout] test reference::tests::length_tiers_are_graded_not_a_cliff ... ok
[INFO] [stdout] test reference::tests::missing_dimensions_are_imputed_to_the_corpus_mean ... ok
[INFO] [stdout] test reference::tests::minmax_never_sees_a_negative_value ... ok
[INFO] [stdout] test reference::calibrate::tests::assessment_flows_through_compare ... ok
[INFO] [stdout] test reference::calibrate::tests::p_values_are_probabilities_and_monotone ... ok
[INFO] [stdout] test reference::tests::per_family_confidence_beats_one_document_level_number ... ok
[INFO] [stdout] test reference::tests::ranking_orders_by_distance ... ok
[INFO] [stdout] test reference::tests::profiles_from_different_references_cannot_be_compared ... ok
[INFO] [stdout] test reference::tests::reference_round_trips_through_serde_with_identical_profiles ... ok
[INFO] [stdout] test critique::tests::punch_dims_are_reportable_under_the_default_surprisal_canary ... ok
[INFO] [stdout] test text::artifact::tests::clean_text_has_no_artifacts ... ok
[INFO] [stdout] test text::artifact::tests::detects_chatbot_residue ... ok
[INFO] [stdout] test text::artifact::tests::detects_homoglyph_word ... ok
[INFO] [stdout] test reference::calibrate::tests::fits_both_distributions_per_bin ... ok
[INFO] [stdout] test text::artifact::tests::emoji_zwj_sequences_are_not_flagged ... ok
[INFO] [stdout] test text::normalize::tests::drops_zero_width_characters ... ok
[INFO] [stdout] test text::normalize::tests::folds_cyrillic_homoglyphs_and_keeps_offsets ... ok
[INFO] [stdout] test text::normalize::tests::folds_fullwidth_and_math_alphanumerics ... ok
[INFO] [stdout] test text::normalize::tests::identity_view_for_plain_text ... ok
[INFO] [stdout] test text::normalize::tests::script_classification ... ok
[INFO] [stdout] test text::normalize::tests::token_normalization_borrows_when_unchanged ... ok
[INFO] [stdout] test text::segment::tests::blank_before_marks_stanza_breaks ... ok
[INFO] [stdout] test text::segment::tests::counts_markdown_structure ... ok
[INFO] [stdout] test text::segment::tests::every_line_span_slices_the_source_back_to_the_line ... ok
[INFO] [stdout] test text::segment::tests::handles_quotes_after_terminator ... ok
[INFO] [stdout] test text::segment::tests::line_token_ranges_agree_with_the_source ... ok
[INFO] [stdout] test text::segment::tests::numbered_list_markers_do_not_split ... ok
[INFO] [stdout] test text::segment::tests::prose_still_has_lines_and_they_do_not_disturb_sentences ... ok
[INFO] [stdout] test text::segment::tests::respects_abbreviations ... ok
[INFO] [stdout] test text::segment::tests::splits_simple_sentences ... ok
[INFO] [stdout] test text::artifact::tests::detects_zero_width_characters ... ok
[INFO] [stdout] test text::syllable::tests::a_dict_reference_fails_loudly_on_a_build_without_the_dictionary ... ok
[INFO] [stdout] test text::segment::tests::token_ranges_cover_sentences ... ok
[INFO] [stdout] test text::syllable::tests::ordinary_words_count_correctly ... ok
[INFO] [stdout] test text::syllable::tests::silent_terminal_e_is_dropped_but_syllabic_le_is_not ... ok
[INFO] [stdout] test text::syllable::tests::the_method_round_trips_and_defaults_to_vowel_group ... ok
[INFO] [stdout] test text::syllable::tests::vowel_group_is_always_supported ... ok
[INFO] [stdout] test text::tests::analysis_is_consistent ... ok
[INFO] [stdout] test text::tests::document_round_trips_through_serde ... ok
[INFO] [stdout] test text::tokenize::tests::char_ngrams_keep_spaces_and_map_back ... ok
[INFO] [stdout] test text::tokenize::tests::cjk_and_emoji_do_not_panic ... ok
[INFO] [stdout] test text::tokenize::tests::clitic_splitting ... ok
[INFO] [stdout] test reference::tests::zero_variance_dimensions_still_carry_evidence ... ok
[INFO] [stdout] test text::tokenize::tests::punctuation_can_be_dropped ... ok
[INFO] [stdout] test text::syllable::tests::a_word_is_never_zero_syllables ... ok
[INFO] [stdout] test text::tokenize::tests::punctuation_is_a_token_by_default ... ok
[INFO] [stdout] test text::tokenize::tests::spans_round_trip_through_confusable_folding ... ok
[INFO] [stdout] test reference::tests::spans_survive_into_the_profile_when_tracked ... ok
[INFO] [stdout] test util::tests::ecdf_counts_at_or_below ... ok
[INFO] [stdout] test text::tokenize::tests::spans_round_trip_to_source ... ok
[INFO] [stdout] test util::tests::moments ... ok
[INFO] [stdout] test vector::tests::builder_produces_sorted_entries ... ok
[INFO] [stdout] test vector::tests::dense_projection_fills_gaps ... ok
[INFO] [stdout] test text::tokenize::tests::tokenizer_policy_round_trips_through_serde ... ok
[INFO] [stdout] test vector::tests::merge_walk_matches_hashmap_reference ... ok
[INFO] [stdout] test vector::tests::interner_round_trips ... ok
[INFO] [stdout] test verify::tests::c_at_1_rewards_a_well_placed_grey_zone ... ok
[INFO] [stdout] test vector::tests::span_tracking_is_opt_in ... ok
[INFO] [stdout] test verify::tests::abstention_covers_the_middle ... ok
[INFO] [stdout] test util::tests::quantiles_interpolate ... ok
[INFO] [stdout] test reference::tests::references_carry_exemplar_profiles ... ok
[INFO] [stdout] test reference::tests::same_author_documents_are_closer_than_cross_author_ones ... ok
[INFO] [stdout] test verify::tests::impostor_pool_excludes_named_authors ... ok
[INFO] [stdout] test verify::tests::threshold_optimization_prefers_abstaining_over_guessing ... ok
[INFO] [stdout] test verify::tests::degenerate_inputs_are_rejected ... ok
[INFO] [stdout] test verify::tests::feature_subsampling_actually_happens ... ok
[INFO] [stdout] test verify::tests::the_same_seed_reproduces_the_same_score ... ok
[INFO] [stdout] test reference::calibrate::tests::interpolation_lands_between_the_bracketing_bins ... ok
[INFO] [stdout] test verify::tests::the_true_author_wins_and_a_stranger_does_not ... ok
[INFO] [stdout] test verify::tests::scores_are_stable_across_seeds ... ok
[INFO] [stdout] test reference::calibrate::tests::the_same_distance_reads_differently_at_different_lengths ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/handprint_data-d64d77c799af1fa3)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 377 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.05s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 51 tests
[INFO] [stdout] test agent::tests::a_missing_directory_is_an_error_not_a_panic ... ok
[INFO] [stdout] test agent::tests::an_empty_transcript_is_not_an_error ... ok
[INFO] [stdout] test agent::tests::claude_code_skips_short_messages_tool_calls_and_truncated_lines ... ok
[INFO] [stdout] test agent::tests::codex_ignores_user_turns_and_survives_truncation ... ok
[INFO] [stdout] test agent::tests::codex_reasoning_is_opt_in ... ok
[INFO] [stdout] test agent::tests::codex_tracks_the_model_across_turn_contexts ... ok
[INFO] [stdout] test agent::tests::claude_code_extracts_assistant_prose_with_per_message_models ... ok
[INFO] [stdout] test agent::tests::extraction_summarizes_itself ... ok
[INFO] [stdout] test agent::tests::reasoning_is_opt_in_and_labelled_separately ... ok
[INFO] [stdout] test gutenberg::tests::a_book_with_no_headings_becomes_one_chapter_rather_than_none ... ok
[INFO] [stdout] test agent::tests::files_are_discovered_recursively_and_sorted ... ok
[INFO] [stdout] test gutenberg::tests::a_bracketed_note_is_removed_span_for_span ... ok
[INFO] [stdout] test gutenberg::tests::a_note_in_a_dos_file_is_found_too ... ok
[INFO] [stdout] test gutenberg::tests::a_publication_slug_goes_but_a_sentence_about_publishing_stays ... ok
[INFO] [stdout] test gutenberg::tests::a_run_of_plate_captions_goes_and_a_lone_numbered_line_stays ... ok
[INFO] [stdout] test gutenberg::tests::an_unrecognized_file_is_returned_whole_and_flagged ... ok
[INFO] [stdout] test gutenberg::tests::boilerplate_would_dominate_a_profile_if_it_survived ... ok
[INFO] [stdout] test gutenberg::tests::chapter_headings_are_recognized_in_their_usual_forms ... ok
[INFO] [stdout] test gutenberg::tests::chapterize_splits_on_headings_and_drops_front_matter ... ok
[INFO] [stdout] test gutenberg::tests::prose_that_merely_mentions_a_transcriber_is_left_alone ... ok
[INFO] [stdout] test gutenberg::tests::records_carry_the_book_and_chapter_in_provenance ... ok
[INFO] [stdout] test gutenberg::tests::slugs_are_filesystem_safe ... ok
[INFO] [stdout] test gutenberg::tests::the_etexts_own_provenance_page_is_not_the_author ... ok
[INFO] [stdout] test gutenberg::tests::the_modern_markers_are_stripped_from_both_ends ... ok
[INFO] [stdout] test gutenberg::tests::the_older_sign_off_inside_the_modern_markers_is_cut ... ok
[INFO] [stdout] test gutenberg::tests::watsons_list_of_holmess_limits_is_not_a_plate_index ... ok
[INFO] [stdout] test hn::tests::entity_decoding_covers_the_common_cases ... ok
[INFO] [stdout] test gutenberg::tests::a_note_near_the_front_loses_its_paragraph_and_not_the_book ... ok
[INFO] [stdout] test hn::tests::html_is_decoded_not_counted_as_style ... ok
[INFO] [stdout] test hn::tests::malformed_responses_are_errors ... ok
[INFO] [stdout] test hn::tests::parses_hits_into_records ... ok
[INFO] [stdout] test hn::tests::the_cutoff_constant_is_november_2022 ... ok
[INFO] [stdout] test hn::tests::the_cutoff_drops_post_chatgpt_comments ... ok
[INFO] [stdout] test hn::tests::urls_are_built_correctly ... ok
[INFO] [stdout] test gutenberg::tests::the_jurisdiction_split_is_data_not_folklore ... ok
[INFO] [stdout] test gutenberg::tests::the_legacy_variant_is_handled_by_the_fallback_scanner ... ok
[INFO] [stdout] test record::tests::corpus_groups_by_label ... ok
[INFO] [stdout] test jsonl::tests::round_trips_through_a_file ... ok
[INFO] [stdout] test jsonl::tests::truncated_lines_are_counted_not_fatal ... ok
[INFO] [stdout] test record::tests::grouping_prefers_the_model_label ... ok
[INFO] [stdout] test record::tests::round_trips_through_json ... ok
[INFO] [stdout] test strip::tests::diff_bodies_are_dropped ... ok
[INFO] [stdout] test strip::tests::fenced_blocks_leave_an_empty_shell ... ok
[INFO] [stdout] test strip::tests::prose_survival_rate_is_high_on_a_realistic_message ... ok
[INFO] [stdout] test strip::tests::short_messages_are_rejected ... ok
[INFO] [stdout] test strip::tests::unterminated_fences_do_not_swallow_the_rest ... ok
[INFO] [stdout] test gutenberg::tests::short_chapters_merge_into_their_predecessor ... ok
[INFO] [stdout] test strip::tests::urls_and_paths_are_dropped_but_ordinary_prose_survives ... ok
[INFO] [stdout] test strip::tests::inline_spans_leave_an_empty_shell ... ok
[INFO] [stdout] test strip::tests::mostly_code_messages_are_rejected ... ok
[INFO] [stdout] test gutenberg::tests::a_trailing_transcribers_note_is_truncated_whole ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 51 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests handprint_core
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test crates/handprint-core/src/feature/char_ngram.rs - feature::char_ngram::CharNgrams::new (line 157) ... ok
[INFO] [stdout] test crates/handprint-core/src/lib.rs - (line 126) ... ok
[INFO] [stdout] test crates/handprint-core/src/lib.rs - (line 91) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.90s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests handprint_data
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4", kill_on_drop: false }`
[INFO] [stdout] cb060a3f1c0f5553a8b2b2d69400b1c50fefb2d69db3e1332f4d6bd850721fc4
