[INFO] cloning repository https://github.com/Excel-Adeniyi/ea-skill-eval [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Excel-Adeniyi/ea-skill-eval" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FExcel-Adeniyi%2Fea-skill-eval", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FExcel-Adeniyi%2Fea-skill-eval'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b1c7e923f7220b36baae8e6dd2da9f328a7041fe [INFO] testing Excel-Adeniyi/ea-skill-eval against 1.99.0-beta.8 for beta-1.100-4 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FExcel-Adeniyi%2Fea-skill-eval" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Excel-Adeniyi/ea-skill-eval [INFO] finished tweaking git repo https://github.com/Excel-Adeniyi/ea-skill-eval [INFO] tweaked toml for git repo https://github.com/Excel-Adeniyi/ea-skill-eval written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Excel-Adeniyi/ea-skill-eval 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/Excel-Adeniyi/ea-skill-eval 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] [stderr] Downloading crates ... [INFO] [stderr] Downloaded chacha20 v0.10.2 [INFO] [stderr] Downloaded tinyvec v1.13.2 [INFO] [stderr] Downloaded cc v1.4.5 [INFO] [stderr] Downloaded comfy-table v8.0.0 [INFO] [stderr] Downloaded syn v3.0.5 [INFO] [stderr] Downloaded clap_derive v4.6.4 [INFO] [stderr] Downloaded clap v4.6.6 [INFO] [stderr] Downloaded aws-lc-rs v1.18.1 [INFO] [stderr] Downloaded quinn-proto v0.11.17 [INFO] [stderr] Downloaded clap_builder v4.6.6 [INFO] [stderr] Downloaded rustls v0.23.44 [INFO] [stderr] Downloaded aws-lc-sys v0.45.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46 [INFO] running `Command { std: "docker" "start" "cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46", 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" "cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46" "/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" "cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46", 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" "cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.107 [INFO] [stderr] Compiling find-msvc-tools v0.1.12 [INFO] [stderr] Compiling fs_extra v1.3.0 [INFO] [stderr] Compiling dunce v1.0.5 [INFO] [stderr] Compiling aws-lc-rs v1.18.1 [INFO] [stderr] Compiling jobserver v0.1.35 [INFO] [stderr] Compiling rustls v0.23.44 [INFO] [stderr] Compiling bitflags v2.13.2 [INFO] [stderr] Compiling subtle v2.6.1 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling litrs v1.0.0 [INFO] [stderr] Compiling rustls-native-certs v0.8.4 [INFO] [stderr] Compiling aho-corasick v1.1.5 [INFO] [stderr] Compiling thiserror v2.0.20 [INFO] [stderr] Compiling regex-syntax v0.8.11 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling anyhow v1.0.104 [INFO] [stderr] Compiling clap_builder v4.6.6 [INFO] [stderr] Compiling unicode-segmentation v1.13.3 [INFO] [stderr] Compiling cc v1.4.5 [INFO] [stderr] Compiling base64 v0.23.1 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling document-features v0.2.12 [INFO] [stderr] Compiling quote v1.0.47 [INFO] [stderr] Compiling syn v3.0.5 [INFO] [stderr] Compiling syn v2.0.119 [INFO] [stderr] Compiling cmake v0.1.58 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling aws-lc-sys v0.45.0 [INFO] [stderr] Compiling comfy-table v8.0.0 [INFO] [stderr] Compiling regex-automata v0.4.18 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling zerofrom v0.1.8 [INFO] [stderr] Compiling yoke v0.8.3 [INFO] [stderr] Compiling regex v1.13.1 [INFO] [stderr] Compiling zerovec-derive v0.11.6 [INFO] [stderr] Compiling displaydoc v0.2.7 [INFO] [stderr] Compiling tokio-macros v2.7.2 [INFO] [stderr] Compiling multiversion-macros v0.9.0 [INFO] [stderr] Compiling serde_derive v1.0.229 [INFO] [stderr] Compiling clap_derive v4.6.4 [INFO] [stderr] Compiling thiserror-impl v2.0.20 [INFO] [stderr] Compiling tokio v1.53.1 [INFO] [stderr] Compiling zerotrie v0.2.5 [INFO] [stderr] Compiling zerovec v0.11.8 [INFO] [stderr] Compiling multiversion v0.9.0 [INFO] [stderr] Compiling encoding_rs v0.8.41 [INFO] [stderr] Compiling tinystr v0.8.4 [INFO] [stderr] Compiling potential_utf v0.1.6 [INFO] [stderr] Compiling icu_locale_core v2.3.0 [INFO] [stderr] Compiling icu_collections v2.3.0 [INFO] [stderr] Compiling clap v4.6.6 [INFO] [stderr] Compiling serde v1.0.229 [INFO] [stderr] Compiling icu_provider v2.3.1 [INFO] [stderr] Compiling icu_normalizer v2.3.0 [INFO] [stderr] Compiling icu_properties v2.3.0 [INFO] [stderr] Compiling idna_adapter v1.2.2 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling tokio-util v0.7.19 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling h2 v0.4.19 [INFO] [stderr] Compiling tower-http v0.6.11 [INFO] [stderr] Compiling hyper v1.11.1 [INFO] [stderr] Compiling rustls-webpki v0.103.15 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling tokio-rustls v0.26.5 [INFO] [stderr] Compiling rustls-platform-verifier v0.7.0 [INFO] [stderr] Compiling hyper-rustls v0.27.9 [INFO] [stderr] Compiling reqwest v0.13.5 [INFO] [stderr] Compiling ea-skill-eval v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 06s [INFO] running `Command { std: "docker" "inspect" "cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46", 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" "cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46" "/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 ea-skill-eval v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 5.91s [INFO] running `Command { std: "docker" "inspect" "cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46", 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" "cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ea_skill_eval-5369376cc40e6cfb) [INFO] [stdout] [INFO] [stdout] running 143 tests [INFO] [stdout] test domain::evaluation::tests::an_empty_report_has_no_means ... ok [INFO] [stdout] test cli::tests::defaults_to_the_offline_heuristic ... ok [INFO] [stdout] test domain::evaluation::tests::metric_mean_averages_across_traces ... ok [INFO] [stdout] test domain::evaluation::tests::metric_mean_is_none_when_no_trace_scored_it ... ok [INFO] [stdout] test domain::evaluation::tests::finds_traces_below_a_threshold ... ok [INFO] [stdout] test domain::evaluation::tests::groups_evaluations_by_platform ... ok [INFO] [stdout] test domain::evaluation::tests::overall_mean_averages_per_trace_not_per_score ... ok [INFO] [stdout] test domain::evaluation::tests::trigger_rate_counts_only_recorded_traces ... ok [INFO] [stdout] test domain::metric::tests::all_returns_every_metric ... ok [INFO] [stdout] test domain::metric::tests::debug_uses_the_rust_variant_name ... ok [INFO] [stdout] test domain::metric::tests::display_round_trips_through_from_str ... ok [INFO] [stdout] test domain::metric::tests::display_uses_a_human_readable_name ... ok [INFO] [stdout] test domain::metric::tests::parses_loosely_formatted_names_from_judges ... ok [INFO] [stdout] test domain::metric::tests::parses_the_canonical_metric_names ... ok [INFO] [stdout] test domain::metric::tests::rejects_names_it_does_not_recognise ... ok [INFO] [stdout] test domain::metric_score::tests::creates_a_metric_score ... ok [INFO] [stdout] test cli::tests::rejects_an_unknown_judge ... ok [INFO] [stdout] test domain::platform::tests::unknown_is_the_default_platform ... ok [INFO] [stdout] test domain::platform::tests::serialises_to_snake_case ... ok [INFO] [stdout] test domain::score::tests::accepts_scores_inside_the_valid_range ... ok [INFO] [stdout] test cli::tests::no_metric_flags_means_every_metric ... ok [INFO] [stdout] test domain::score::tests::rejects_non_finite_scores ... ok [INFO] [stdout] test domain::platform::tests::display_uses_human_readable_names ... ok [INFO] [stdout] test cli::tests::cli_definition_is_valid ... ok [INFO] [stdout] test cli::tests::no_cache_disables_caching_for_the_llm_judge ... ok [INFO] [stdout] test cli::tests::parses_the_llm_judge_with_overrides ... ok [INFO] [stdout] test cli::tests::metric_flags_are_repeatable ... ok [INFO] [stdout] test domain::trace::tests::deserializes_a_trace_from_json ... ok [INFO] [stdout] test domain::score_source::tests::display_uses_human_readable_names ... ok [INFO] [stdout] test domain::trace::tests::provenance_includes_the_model_when_known ... ok [INFO] [stdout] test cli::tests::accepts_a_positional_input_path ... ok [INFO] [stdout] test domain::evaluation::tests::counts_fallbacks_separately_from_successes ... ok [INFO] [stdout] test cli::tests::the_heuristic_judge_is_never_cached ... ok [INFO] [stdout] test domain::platform::tests::deserialises_from_snake_case ... ok [INFO] [stdout] test domain::score::tests::rejects_scores_outside_the_valid_range ... ok [INFO] [stdout] test cli::tests::caching_is_on_by_default_for_the_llm_judge ... ok [INFO] [stdout] test domain::evaluation::tests::no_traces_fail_a_threshold_of_zero ... ok [INFO] [stdout] test domain::evaluation::tests::compares_platforms_on_one_metric ... ok [INFO] [stdout] test domain::score::tests::returns_the_inner_value ... ok [INFO] [stdout] test input::trace_loader::tests::reports_a_missing_file_as_an_error ... ok [INFO] [stdout] test judge::cache::tests::editing_the_trace_text_invalidates_the_entry ... ok [INFO] [stdout] test judge::cache::tests::a_corrupt_entry_reads_as_a_miss ... ok [INFO] [stdout] test domain::trace::tests::deserializes_a_trace_captured_before_the_new_fields_existed ... ok [INFO] [stdout] test judge::cache::tests::clear_removes_stored_entries ... ok [INFO] [stdout] test judge::cache::tests::different_judges_do_not_share_entries ... ok [INFO] [stdout] test judge::cache::tests::the_fingerprint_is_stable_across_runs ... ok [INFO] [stdout] test input::trace_loader::tests::records_a_missing_sentinel_as_not_triggered ... ok [INFO] [stdout] test input::sentinel::tests::does_not_match_unrelated_comments ... ok [INFO] [stdout] test input::sentinel::tests::detects_the_marker_across_versions_and_spacing ... ok [INFO] [stdout] test judge::openai_compatible::tests::request_body_matches_the_openai_shape ... ok [INFO] [stdout] test judge::prompt::tests::user_message_contains_all_three_sections ... ok [INFO] [stdout] test judge::response::tests::errors_when_nothing_usable_survives ... ok [INFO] [stdout] test judge::response::tests::errors_when_there_is_no_json_at_all ... ok [INFO] [stdout] test input::trace_loader::tests::infers_skill_triggered_from_the_sentinel ... ok [INFO] [stdout] test judge::response::tests::keeps_the_first_of_a_duplicated_metric ... ok [INFO] [stdout] test judge::response::tests::parses_a_well_formed_response ... ok [INFO] [stdout] test judge::cache::tests::file_names_are_filesystem_safe ... ok [INFO] [stdout] test input::sentinel::tests::strips_the_marker_and_surrounding_whitespace ... ok [INFO] [stdout] test judge::response::tests::skips_scores_outside_the_valid_range ... ok [INFO] [stdout] test judge::cache::tests::stores_and_retrieves_scores ... ok [INFO] [stdout] test judge::response::tests::tags_every_score_as_coming_from_a_judge ... ok [INFO] [stdout] test judge::prompt::tests::the_judge_does_not_claim_to_score_correctness ... ok [INFO] [stdout] test judge::response::tests::returns_metrics_in_canonical_order ... ok [INFO] [stdout] test judge::response::tests::skips_metrics_it_does_not_recognise ... ok [INFO] [stdout] test input::sentinel::tests::detects_the_canonical_marker ... ok [INFO] [stdout] test judge::response::tests::strips_markdown_fences ... ok [INFO] [stdout] test input::sentinel::tests::leaves_output_without_a_marker_untouched ... ok [INFO] [stdout] test input::sentinel::tests::stripping_removes_every_occurrence ... ok [INFO] [stdout] test input::trace_loader::tests::an_explicit_value_overrides_the_sentinel ... ok [INFO] [stdout] test judge::prompt::tests::system_prompt_names_every_metric_the_judge_produces ... ok [INFO] [stdout] test judge::cache::tests::a_disabled_cache_never_stores_anything ... ok [INFO] [stdout] test judge::response::tests::tolerates_a_missing_reasoning_field ... ok [INFO] [stdout] test judge::verifier::tests::a_contradicted_claim_lowers_the_score ... ok [INFO] [stdout] test judge::verifier::tests::all_supported_scores_one ... ok [INFO] [stdout] test judge::verifier::tests::metric_score_is_tagged_as_claim_verified ... ok [INFO] [stdout] test judge::verifier::tests::parses_through_markdown_fences ... ok [INFO] [stdout] test judge::verifier::tests::the_message_separates_reference_from_answer ... ok [INFO] [stdout] test judge::verifier::tests::reasoning_names_a_contradicted_claim ... ok [INFO] [stdout] test judge::verifier::tests::nothing_checkable_has_no_score ... ok [INFO] [stdout] test judge::verifier::tests::errors_when_there_is_no_json ... ok [INFO] [stdout] test report::json::tests::renders_valid_json ... ok [INFO] [stdout] test report::json::tests::includes_precomputed_aggregates ... ok [INFO] [stdout] test judge::verifier::tests::reasoning_reports_uncovered_claims ... ok [INFO] [stdout] test report::json::tests::unscored_metrics_serialise_as_null_not_zero ... ok [INFO] [stdout] test report::table::tests::a_measured_metric_does_get_a_column ... ok [INFO] [stdout] test judge::verifier::tests::parses_a_well_formed_response ... ok [INFO] [stdout] test report::table::tests::trigger_summary_is_none_when_nothing_was_recorded ... ok [INFO] [stdout] test report::json::tests::reports_trigger_counts ... ok [INFO] [stdout] test report::table::tests::trigger_summary_reports_a_rate_when_recorded ... ok [INFO] [stdout] test report::table::tests::comparison_table_has_one_row_per_platform ... ok [INFO] [stdout] test report::table::tests::unmeasured_metrics_get_no_column ... ok [INFO] [stdout] test report::table::tests::fallback_rows_are_labelled ... ok [INFO] [stdout] test report::table::tests::missing_metrics_render_as_a_dash ... ok [INFO] [stdout] test report::table::tests::trace_table_lists_every_trace_and_metric ... ok [INFO] [stdout] test report::json::tests::carries_provenance_through_to_the_evaluations ... ok [INFO] [stdout] test judge::verifier::tests::the_prompt_forbids_using_model_knowledge ... ok [INFO] [stdout] test judge::verifier::tests::not_found_claims_are_excluded_rather_than_penalised ... ok [INFO] [stdout] test scoring::format::tests::json_rule_accepts_valid_json_only ... ok [INFO] [stdout] test scoring::format::tests::word_limit_rule_counts_words ... ok [INFO] [stdout] test scoring::format::tests::numbered_rule_requires_leading_numbers ... ok [INFO] [stdout] test report::table::tests::lists_platforms_present_in_the_report ... ok [INFO] [stdout] test scoring::format::tests::bullet_rule_accepts_common_bullet_characters ... ok [INFO] [stdout] test scoring::format::tests::detects_no_rules_when_no_format_was_requested ... ok [INFO] [stdout] test scoring::format::tests::detects_a_json_requirement ... ok [INFO] [stdout] test scoring::format::tests::an_unscoped_word_limit_still_applies ... ok [INFO] [stdout] test scoring::heuristic::tests::format_compliance_scores_the_fraction_of_rules_met ... ok [INFO] [stdout] test scoring::format::tests::detects_a_word_limit ... ok [INFO] [stdout] test scoring::format::tests::a_scoped_word_limit_is_not_a_whole_output_limit ... ok [INFO] [stdout] test scoring::format::tests::detects_several_rules_at_once ... ok [INFO] [stdout] test scoring::heuristic::tests::perfect_recall_when_the_output_covers_every_instruction_term ... ok [INFO] [stdout] test scoring::heuristic::tests::skips_format_compliance_when_no_format_was_requested ... ok [INFO] [stdout] test scoring::heuristic::tests::a_compliant_json_answer_is_not_penalised_twice ... ok [INFO] [stdout] test scoring::heuristic::tests::adherence_sits_between_precision_and_recall ... ok [INFO] [stdout] test scoring::format::tests::strips_directive_verbs_but_keeps_their_object ... ok [INFO] [stdout] test scoring::heuristic::tests::every_score_is_tagged_as_heuristic_and_explained ... ok [INFO] [stdout] test scoring::heuristic::tests::returns_metrics_in_a_stable_order ... ok [INFO] [stdout] test scoring::heuristic::tests::task_relevancy_rewards_addressing_the_task ... ok [INFO] [stdout] test scoring::heuristic::tests::recall_drops_for_each_instruction_term_the_output_omits ... ok [INFO] [stdout] test scoring::heuristic::tests::format_directives_do_not_count_against_recall ... ok [INFO] [stdout] test scoring::heuristic::tests::zero_recall_when_the_output_ignores_the_instructions ... ok [INFO] [stdout] test scoring::heuristic::tests::scores_all_five_metrics_when_a_format_is_requested ... ok [INFO] [stdout] test scoring::overlap::tests::empty_reference_has_no_score ... ok [INFO] [stdout] test scoring::overlap::tests::f1_balances_precision_and_recall ... ok [INFO] [stdout] test scoring::heuristic::tests::precision_falls_when_the_output_adds_unprompted_content ... ok [INFO] [stdout] test scoring::heuristic::tests::a_purely_formatting_instruction_has_no_content_recall ... ok [INFO] [stdout] test scoring::format::tests::strips_format_directives_from_instructions ... ok [INFO] [stdout] test scoring::overlap::tests::coverage_is_directional ... ok [INFO] [stdout] test scoring::overlap::tests::no_shared_terms_scores_zero ... ok [INFO] [stdout] test scoring::tokenizer::tests::converts_terms_to_lowercase ... ok [INFO] [stdout] test scoring::overlap::tests::partial_coverage_scores_the_matching_fraction ... ok [INFO] [stdout] test scoring::overlap::tests::full_coverage_scores_one ... ok [INFO] [stdout] test scoring::tokenizer::tests::does_not_over_stem_short_words ... ok [INFO] [stdout] test scoring::tokenizer::tests::keeps_single_digit_numbers ... ok [INFO] [stdout] test scoring::tokenizer::tests::known_limitation_plural_verbs_do_not_reach_the_ed_stem ... ok [INFO] [stdout] test scoring::tokenizer::tests::stems_gerunds_back_to_the_base_verb ... ok [INFO] [stdout] test scoring::tokenizer::tests::matches_singular_and_plural_forms ... ok [INFO] [stdout] test scoring::tokenizer::tests::removes_punctuation_from_terms ... ok [INFO] [stdout] test scoring::tokenizer::tests::removes_stopwords ... ok [INFO] [stdout] test scoring::tokenizer::tests::repeated_words_count_once ... ok [INFO] [stdout] test scoring::tokenizer::tests::leaves_double_s_words_intact ... ok [INFO] [stdout] test judge::openai_compatible::tests::ollama_points_at_the_local_endpoint ... ok [INFO] [stdout] test judge::openai_compatible::tests::trailing_slashes_do_not_produce_a_double_slash_url ... ok [INFO] [stdout] test judge::openai_compatible::tests::the_judge_name_identifies_the_model ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 143 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.32s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ea_skill_eval-b83f4d6a51083e40) [INFO] [stdout] [INFO] [stderr] Running tests/cli.rs (/opt/rustwide/target/debug/deps/cli-9ff2a647e995cca8) [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] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test exits_zero_when_every_trace_clears_the_threshold ... ok [INFO] [stdout] test emits_machine_readable_json ... ok [INFO] [stdout] test still_loads_traces_captured_before_the_platform_fields_existed ... ok [INFO] [stdout] test metric_filter_limits_the_scored_metrics ... ok [INFO] [stdout] test scores_traces_and_prints_a_table ... ok [INFO] [stdout] test exits_two_when_a_trace_falls_below_the_threshold ... ok [INFO] [stdout] test exits_one_when_the_input_is_missing ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s [INFO] [stdout] [INFO] [stderr] Doc-tests ea_skill_eval [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" "cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46", kill_on_drop: false }` [INFO] [stdout] cdc406bd515ce4c9cd3f2ffe96ad4ea8a01da60e06ecbf10d9aedd88d057fd46