[INFO] cloning repository https://github.com/jcii/hunt
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jcii/hunt" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjcii%2Fhunt", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjcii%2Fhunt'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a39181448f6dec06664011bb7a165f2ad3177d41
[INFO] testing jcii/hunt against 1.97.0-beta.6 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjcii%2Fhunt" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-5-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/jcii/hunt
[INFO] finished tweaking git repo https://github.com/jcii/hunt
[INFO] tweaked toml for git repo https://github.com/jcii/hunt written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jcii/hunt on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jcii/hunt 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded stringmatch v0.4.0
[INFO] [stderr]   Downloaded thirtyfour-macros v0.1.3
[INFO] [stderr]   Downloaded arc-swap v1.8.1
[INFO] [stderr]   Downloaded thirtyfour v0.33.1
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.35
[INFO] [stderr]   Downloaded zerocopy v0.8.35
[INFO] [stderr]   Downloaded webpki-roots v1.0.5
[INFO] [stderr]   Downloaded quoted_printable v0.5.1
[INFO] [stderr]   Downloaded charset v0.1.5
[INFO] [stderr]   Downloaded imap-proto v0.10.2
[INFO] [stderr]   Downloaded mailparse v0.15.0
[INFO] [stderr]   Downloaded imap v2.4.1
[INFO] [stderr]   Downloaded nom v5.1.3
[INFO] [stderr]   Downloaded clap v4.5.55
[INFO] [stderr]   Downloaded clap_builder v4.5.55
[INFO] [stderr]   Downloaded lexical-core v0.7.6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a
[INFO] running `Command { std: "docker" "start" "29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a", 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" "29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a", 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" "29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling find-msvc-tools v0.1.8
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling siphasher v1.0.2
[INFO] [stderr]    Compiling bytes v1.11.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling ryu v1.0.22
[INFO] [stderr]    Compiling zerocopy v0.8.35
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]    Compiling zmij v1.0.17
[INFO] [stderr]    Compiling lexical-core v0.7.6
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling nom v5.1.3
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling cc v1.2.54
[INFO] [stderr]    Compiling dtoa v1.0.11
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling arrayvec v0.5.2
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling dtoa-short v0.3.5
[INFO] [stderr]    Compiling webpki-roots v1.0.5
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling selectors v0.26.0
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling servo_arc v0.4.3
[INFO] [stderr]    Compiling clap_lex v0.7.7
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling markup5ever v0.14.1
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling clap_builder v4.5.55
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling getopts v0.2.24
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling charset v0.1.5
[INFO] [stderr]    Compiling arc-swap v1.8.1
[INFO] [stderr]    Compiling bufstream v0.1.4
[INFO] [stderr]    Compiling quoted_printable v0.5.1
[INFO] [stderr]    Compiling unicode-linebreak v0.1.5
[INFO] [stderr]    Compiling smawk v0.3.2
[INFO] [stderr]    Compiling ego-tree v0.10.0
[INFO] [stderr]    Compiling mailparse v0.15.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling directories v5.0.1
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling textwrap v0.16.2
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling imap-proto v0.10.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling stringmatch v0.4.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling match_token v0.1.0
[INFO] [stderr]    Compiling cssparser v0.34.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling thirtyfour-macros v0.1.3
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling clap v4.5.55
[INFO] [stderr]    Compiling ratatui v0.29.0
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling string_cache v0.8.9
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling html5ever v0.29.1
[INFO] [stderr]    Compiling imap v2.4.1
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling scraper v0.22.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling rusqlite v0.32.1
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.19
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling thirtyfour v0.33.1
[INFO] [stderr]    Compiling hunt v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 43s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: imap-proto v0.10.2
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3`
[INFO] running `Command { std: "docker" "inspect" "29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a", 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" "29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling hunt v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 7.01s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: imap-proto v0.10.2
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3`
[INFO] running `Command { std: "docker" "inspect" "29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a", 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" "29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.33s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: imap-proto v0.10.2
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3`
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/hunt-9a572f6a3a524b4a)
[INFO] [stdout] running 244 tests
[INFO] [stdout] test ai::tests::test_analyze_job_returns_response ... ok
[INFO] [stdout] test ai::tests::test_analyze_fit_empty_sections ... ok
[INFO] [stdout] test ai::tests::test_analyze_fit_parses_response ... ok
[INFO] [stdout] test ai::tests::test_dedup_keywords_case_insensitive ... ok
[INFO] [stdout] test ai::tests::test_dedup_keywords_empty ... ok
[INFO] [stdout] test ai::tests::test_dedup_keywords_no_dupes ... ok
[INFO] [stdout] test ai::tests::test_extract_keywords_handles_whitespace ... ok
[INFO] [stdout] test ai::tests::test_extract_domain_keywords_empty_response ... ok
[INFO] [stdout] test ai::tests::test_extract_domain_keywords_partial_response ... ok
[INFO] [stdout] test ai::tests::test_extract_domain_keywords_full_response ... ok
[INFO] [stdout] test ai::tests::test_parse_weighted_keywords_basic ... ok
[INFO] [stdout] test ai::tests::test_extract_keywords_parses_csv ... ok
[INFO] [stdout] test ai::tests::test_parse_weighted_keywords_clamp ... ok
[INFO] [stdout] test ai::tests::test_extract_domain_keywords_cross_domain_dedup ... ok
[INFO] [stdout] test ai::tests::test_openai_provider_api_key ... ok
[INFO] [stdout] test ai::tests::test_analyze_fit_bad_score_defaults_zero ... ok
[INFO] [stdout] test ai::tests::test_parse_weighted_keywords_no_weight ... ok
[INFO] [stdout] test ai::tests::test_parse_weighted_keywords_whitespace ... ok
[INFO] [stdout] test ai::tests::test_parse_weighted_keywords_empty ... ok
[INFO] [stdout] test ai::tests::test_research_glassdoor_bad_sentiment_inferred ... ok
[INFO] [stdout] test browser::tests::test_fetch_job_description ... ignored
[INFO] [stdout] test ai::tests::test_research_glassdoor_parses_reviews ... ok
[INFO] [stdout] test ai::tests::test_tailor_resume_full_markdown ... ok
[INFO] [stdout] test ai::tests::test_research_glassdoor_empty ... ok
[INFO] [stdout] test ai::tests::test_research_glassdoor_unknown ... ok
[INFO] [stdout] test ai::tests::test_research_glassdoor_skips_malformed_lines ... ok
[INFO] [stdout] test ai::tests::test_resolve_model_anthropic_api ... ok
[INFO] [stdout] test ai::tests::test_resolve_model_claude_code ... ok
[INFO] [stdout] test ai::tests::test_research_glassdoor_rating_clamped ... ok
[INFO] [stdout] test ai::tests::test_resolve_model_unknown ... ok
[INFO] [stdout] test ai::tests::test_tailor_resume_suggestions_returns_response ... ok
[INFO] [stdout] test ai::tests::test_resolve_model_gpt5_pro_alias ... ok
[INFO] [stdout] test ai::tests::test_resolve_model_openai ... ok
[INFO] [stdout] test ai::tests::test_tailor_resume_full_latex ... ok
[INFO] [stdout] test db::tests::test_add_and_list_glassdoor_reviews ... ok
[INFO] [stdout] test db::tests::test_add_job_creates_snapshot ... ok
[INFO] [stdout] test db::tests::test_calculate_score_with_pay ... ok
[INFO] [stdout] test db::tests::test_destruction_stats_total ... ok
[INFO] [stdout] test db::tests::test_case_insensitive_matching ... ok
[INFO] [stdout] test db::tests::test_destroy_all_data ... ok
[INFO] [stdout] test db::tests::test_calculate_score_reviewing_status ... ok
[INFO] [stdout] test db::tests::test_add_and_get_job_keywords ... ok
[INFO] [stdout] test db::tests::test_delete_job ... ok
[INFO] [stdout] test db::tests::test_extract_employer_at_pattern ... ok
[INFO] [stdout] test db::tests::test_extract_employer_none ... ok
[INFO] [stdout] test db::tests::test_create_and_list_base_resumes ... ok
[INFO] [stdout] test db::tests::test_add_job_full_no_employer ... ok
[INFO] [stdout] test db::tests::test_add_job_full_and_get ... ok
[INFO] [stdout] test db::tests::test_extract_job_code_req ... ok
[INFO] [stdout] test db::tests::test_extract_job_code_reference_pattern ... ok
[INFO] [stdout] test db::tests::test_extract_job_code_none ... ok
[INFO] [stdout] test db::tests::test_extract_job_code_requisition ... ok
[INFO] [stdout] test db::tests::test_delete_glassdoor_reviews ... ok
[INFO] [stdout] test db::tests::test_extract_job_code_jr ... ok
[INFO] [stdout] test db::tests::test_extract_job_code_linkedin ... ok
[INFO] [stdout] test db::tests::test_extract_pay_range_none ... ok
[INFO] [stdout] test db::tests::test_extract_pay_range_full ... ok
[INFO] [stdout] test db::tests::test_extract_pay_range_reversed ... ok
[INFO] [stdout] test db::tests::test_extract_pay_range_hourly ... ok
[INFO] [stdout] test db::tests::test_extract_pay_range_single_value ... ok
[INFO] [stdout] test db::tests::test_extract_title_long ... ok
[INFO] [stdout] test db::tests::test_extract_title_simple ... ok
[INFO] [stdout] test db::tests::test_extract_pay_range_k ... ok
[INFO] [stdout] test db::tests::test_calculate_score_employer_penalty ... ok
[INFO] [stdout] test db::tests::test_add_job_parses_content ... ok
[INFO] [stdout] test db::tests::test_calculate_score_base ... ok
[INFO] [stdout] test db::tests::test_employer_status_filter ... ok
[INFO] [stdout] test db::tests::test_create_and_list_resume_variants ... ok
[INFO] [stdout] test db::tests::test_get_best_fit_analysis_none ... ok
[INFO] [stdout] test db::tests::test_different_employers_not_duplicate ... ok
[INFO] [stdout] test db::tests::test_get_base_resume_by_name_not_found ... ok
[INFO] [stdout] test db::tests::test_fuzzy_match_same_employer ... ok
[INFO] [stdout] test db::tests::test_get_best_fit_analysis ... ok
[INFO] [stdout] test db::tests::test_get_base_resume_by_name ... ok
[INFO] [stdout] test db::tests::test_ensure_initialized ... ok
[INFO] [stdout] test db::tests::test_exact_title_match_same_employer ... ok
[INFO] [stdout] test db::tests::test_get_employer_by_name ... ok
[INFO] [stdout] test db::tests::test_get_base_resume_not_found ... ok
[INFO] [stdout] test db::tests::test_get_fit_analysis_specific ... ok
[INFO] [stdout] test db::tests::test_find_duplicates ... ok
[INFO] [stdout] test db::tests::test_get_jobs_to_fetch ... ok
[INFO] [stdout] test db::tests::test_get_jobs_needing_keywords ... ok
[INFO] [stdout] test db::tests::test_get_best_fit_score ... ok
[INFO] [stdout] test db::tests::test_get_job_not_found ... ok
[INFO] [stdout] test db::tests::test_get_employer_status ... ok
[INFO] [stdout] test db::tests::test_get_destruction_stats ... ok
[INFO] [stdout] test db::tests::test_get_resume_variant_none ... ok
[INFO] [stdout] test db::tests::test_get_or_create_employer ... ok
[INFO] [stdout] test db::tests::test_job_exists_by_url ... ok
[INFO] [stdout] test db::tests::test_normalize_title_trims_and_lowercases ... ok
[INFO] [stdout] test db::tests::test_normalize_title_trims_and_lowercases_input ... ok
[INFO] [stdout] test db::tests::test_is_duplicate_job_no_employer ... ok
[INFO] [stdout] test db::tests::test_has_fit_analysis ... ok
[INFO] [stdout] test db::tests::test_job_exists_by_title_employer ... ok
[INFO] [stdout] test db::tests::test_get_sentiment_summary ... ok
[INFO] [stdout] test db::tests::test_list_employers ... ok
[INFO] [stdout] test db::tests::test_get_latest_keyword_model ... ok
[INFO] [stdout] test db::tests::test_extract_job_code_job_id ... ok
[INFO] [stdout] test db::tests::test_list_jobs_no_filter ... ok
[INFO] [stdout] test db::tests::test_list_resume_variants_for_job ... ok
[INFO] [stdout] test db::tests::test_list_employers_with_glassdoor ... ok
[INFO] [stdout] test db::tests::test_list_jobs_employer_filter ... ok
[INFO] [stdout] test db::tests::test_list_jobs_status_filter ... ok
[INFO] [stdout] test db::tests::test_save_and_get_fit_analysis ... ok
[INFO] [stdout] test db::tests::test_rank_jobs ... ok
[INFO] [stdout] test db::tests::test_update_base_resume_noop ... ok
[INFO] [stdout] test db::tests::test_substring_match_same_employer ... ok
[INFO] [stdout] test db::tests::test_search_job_keywords ... ok
[INFO] [stdout] test db::tests::test_set_employer_status ... ok
[INFO] [stdout] test db::tests::test_resume_variant_upsert ... ok
[INFO] [stdout] test db::tests::test_save_and_get_keyword_profile ... ok
[INFO] [stdout] test db::tests::test_get_recent_review_count ... ok
[INFO] [stdout] test ai::tests::test_anthropic_provider_api_key ... ok
[INFO] [stdout] test db::tests::test_update_base_resume_partial ... ok
[INFO] [stdout] test email::tests::test_clean_tracking_url_strips_query_params ... ok
[INFO] [stdout] test email::tests::test_email_config_gmail ... ok
[INFO] [stdout] test email::tests::test_email_config_trims_password ... ok
[INFO] [stdout] test db::tests::test_update_base_resume ... ok
[INFO] [stdout] test email::tests::test_from_gmail_password_file ... ok
[INFO] [stdout] test email::tests::test_from_gmail_password_file_missing ... ok
[INFO] [stdout] test email::tests::test_get_email_body_multipart_falls_back_to_plain ... ok
[INFO] [stdout] test db::tests::test_get_resume_variant ... ok
[INFO] [stdout] test email::tests::test_get_email_body_multipart_prefers_html ... ok
[INFO] [stdout] test email::tests::test_get_email_body_single_part ... ok
[INFO] [stdout] test email::tests::test_ingest_stats_default ... ok
[INFO] [stdout] test email::tests::test_is_navigation_artifact_allows_valid_jobs ... ok
[INFO] [stdout] test email::tests::test_is_navigation_artifact_edge_cases ... ok
[INFO] [stdout] test db::tests::test_update_employer_research ... ok
[INFO] [stdout] test email::tests::test_is_navigation_artifact_filters_exact_matches ... ok
[INFO] [stdout] test db::tests::test_update_employer_glassdoor_summary ... ok
[INFO] [stdout] test email::tests::test_is_navigation_artifact_filters_patterns ... ok
[INFO] [stdout] test email::tests::test_is_navigation_artifact_filters_short_titles ... ok
[INFO] [stdout] test email::tests::test_is_navigation_artifact_filters_search_titles ... ok
[INFO] [stdout] test db::tests::test_update_job_status ... ok
[INFO] [stdout] test db::tests::test_update_job_description_updates_pay ... ok
[INFO] [stdout] test email::tests::test_add_job_from_email_stores_job ... ok
[INFO] [stdout] test db::tests::test_url_match_overrides_title ... ok
[INFO] [stdout] test email::tests::test_clean_tracking_url_preserves_path ... ok
[INFO] [stdout] test email::tests::test_is_search_link ... ok
[INFO] [stdout] test email::tests::test_parse_indeed_email_no_job_links ... ok
[INFO] [stdout] test email::tests::test_parse_indeed_email_filters_search ... ok
[INFO] [stdout] test email::tests::test_parse_indeed_email_deduplicates ... ok
[INFO] [stdout] test email::tests::test_parse_indeed_email_with_viewjob ... ok
[INFO] [stdout] test db::tests::test_update_public_company_research ... ok
[INFO] [stdout] test db::tests::test_update_employer_ownership ... ok
[INFO] [stdout] test db::tests::test_update_job_description ... ok
[INFO] [stdout] test email::tests::test_parse_linkedin_title_company_location_no_middot ... ok
[INFO] [stdout] test email::tests::test_parse_linkedin_title_company_location ... ok
[INFO] [stdout] test email::tests::test_parse_linkedin_email_filters_artifacts ... ok
[INFO] [stdout] test email::tests::test_parse_linkedin_email_deduplicates ... ok
[INFO] [stdout] test db::tests::test_update_job_employer ... ok
[INFO] [stdout] test email::tests::test_job_exists_returns_false_for_new ... ok
[INFO] [stdout] test email::tests::test_parse_title_at_company_comma_pattern ... ok
[INFO] [stdout] test email::tests::test_parse_linkedin_email_with_job_links ... ok
[INFO] [stdout] test email::tests::test_parse_linkedin_title_company_location_no_multiple_spaces ... ok
[INFO] [stdout] test email::tests::test_parse_linkedin_email_filters_search_links ... ok
[INFO] [stdout] test email::tests::test_job_exists_returns_true_for_duplicate ... ok
[INFO] [stdout] test email::tests::test_parse_title_at_company_dash_skips_engineer_suffix ... ok
[INFO] [stdout] test email::tests::test_parse_title_at_company_fallback_patterns ... ok
[INFO] [stdout] test email::tests::test_extract_jobs_from_text_no_matches ... ok
[INFO] [stdout] test email::tests::test_parse_title_at_company_hybrid_comma ... ok
[INFO] [stdout] test email::tests::test_parse_title_at_company_dash_pattern ... ok
[INFO] [stdout] test email::tests::test_parse_generic_job_email_html ... ok
[INFO] [stdout] test email::tests::test_parse_title_at_company_no_pattern ... ok
[INFO] [stdout] test tests::test_add_jitter_range ... ok
[INFO] [stdout] test tests::test_add_jitter_zero ... ok
[INFO] [stdout] test email::tests::test_extract_jobs_from_text_deduplicates ... ok
[INFO] [stdout] test email::tests::test_parse_title_at_company_remote_comma ... ok
[INFO] [stdout] test email::tests::test_extract_jobs_from_text_basic ... ok
[INFO] [stdout] test email::tests::test_parse_title_at_company_with_linkedin_format ... ok
[INFO] [stdout] test tests::test_check_gmail_password_file_missing ... ok
[INFO] [stdout] test email::tests::test_parse_linkedin_email_fallback_to_text ... ok
[INFO] [stdout] test tests::test_check_binary_exists ... ok
[INFO] [stdout] test tests::test_display_domain_keywords_all_domains ... ok
[INFO] [stdout] test tests::test_display_domain_keywords_empty ... ok
[INFO] [stdout] test tests::test_check_binary_not_found ... ok
[INFO] [stdout] test tests::test_research_private_ownership_returns_default ... ok
[INFO] [stdout] test tests::test_research_public_company_returns_summary ... ok
[INFO] [stdout] test tests::test_research_startup_returns_default ... ok
[INFO] [stdout] test tests::test_run_dependency_check ... ok
[INFO] [stdout] test tests::test_require_browser_deps ... ok
[INFO] [stdout] test tests::test_search_investor_info_returns_empty ... ok
[INFO] [stdout] test tests::test_search_hn_mentions_returns_zero ... ok
[INFO] [stdout] test tests::test_search_ownership_concerns_returns_empty ... ok
[INFO] [stdout] test tests::test_search_parent_company_returns_independent ... ok
[INFO] [stdout] test tests::test_search_yc_company_returns_none ... ok
[INFO] [stdout] test tests::test_search_pe_ownership_returns_none ... ok
[INFO] [stdout] test tests::test_truncate_exact ... ok
[INFO] [stdout] test tests::test_truncate_long ... ok
[INFO] [stdout] test tests::test_truncate_short ... ok
[INFO] [stdout] test tui::tests::test_build_detail_basic_job ... ok
[INFO] [stdout] test tui::tests::test_build_detail_all_statuses ... ok
[INFO] [stdout] test tui::tests::test_build_detail_fit_low_score ... ok
[INFO] [stdout] test tui::tests::test_build_detail_fit_medium_score ... ok
[INFO] [stdout] test tui::tests::test_build_detail_no_employer ... ok
[INFO] [stdout] test tui::tests::test_build_detail_no_job_selected ... ok
[INFO] [stdout] test tui::tests::test_build_detail_no_description ... ok
[INFO] [stdout] test tui::tests::test_build_detail_pay_max_only ... ok
[INFO] [stdout] test tui::tests::test_build_detail_pay_min_only ... ok
[INFO] [stdout] test tui::tests::test_build_detail_raw_text_fallback ... ok
[INFO] [stdout] test tui::tests::test_build_detail_with_fit_analysis ... ok
[INFO] [stdout] test tui::tests::test_build_detail_with_keywords ... ok
[INFO] [stdout] test tui::tests::test_build_detail_with_pay_range ... ok
[INFO] [stdout] test tui::tests::test_current_job ... ok
[INFO] [stdout] test tui::tests::test_build_detail_with_profile ... ok
[INFO] [stdout] test tui::tests::test_empty_state ... ok
[INFO] [stdout] test tui::tests::test_format_pay_high ... ok
[INFO] [stdout] test tui::tests::test_format_pay_min_only ... ok
[INFO] [stdout] test tui::tests::test_format_pay_max_only ... ok
[INFO] [stdout] test tui::tests::test_format_pay_none ... ok
[INFO] [stdout] test tui::tests::test_format_pay_small_value ... ok
[INFO] [stdout] test tui::tests::test_next_and_prev ... ok
[INFO] [stdout] test tui::tests::test_page_down_and_up ... ok
[INFO] [stdout] test tui::tests::test_scroll_up_down ... ok
[INFO] [stdout] test tui::tests::test_set_sort_toggle ... ok
[INFO] [stdout] test tui::tests::test_sort_by_company ... ok
[INFO] [stdout] test email::tests::test_process_email_duplicate_detection ... ok
[INFO] [stdout] test tui::tests::test_sort_by_fit ... ok
[INFO] [stdout] test tui::tests::test_sort_by_salary ... ok
[INFO] [stdout] test tui::tests::test_sort_by_score_descending ... ok
[INFO] [stdout] test tui::tests::test_sort_field_label ... ok
[INFO] [stdout] test email::tests::test_process_email_indeed ... ok
[INFO] [stdout] test tui::tests::test_truncate_str_empty ... ok
[INFO] [stdout] test tui::tests::test_truncate_str_exact ... ok
[INFO] [stdout] test tui::tests::test_truncate_str_long ... ok
[INFO] [stdout] test tui::tests::test_truncate_str_short ... ok
[INFO] [stdout] test tui::tests::test_truncate_str_very_short_max ... ok
[INFO] [stdout] test tui::tests::test_update_filter_clamps_selected ... ok
[INFO] [stdout] test tui::tests::test_update_filter_hides_closed ... ok
[INFO] [stdout] test tui::tests::test_update_filter_search ... ok
[INFO] [stdout] test tui::tests::test_update_filter_search_by_employer ... ok
[INFO] [stdout] test tui::tests::test_update_filter_shows_closed_when_disabled ... ok
[INFO] [stdout] test tests::test_cleanup_artifacts_patterns ... ok
[INFO] [stdout] test tests::test_cleanup_duplicates_removes_dupes ... ok
[INFO] [stdout] test tests::test_cleanup_artifacts_dry_run ... ok
[INFO] [stdout] test tests::test_cleanup_artifacts_search_url ... ok
[INFO] [stdout] test email::tests::test_process_email_multiple_linkedin_jobs ... ok
[INFO] [stdout] test tests::test_cleanup_artifacts_short_title ... ok
[INFO] [stdout] test email::tests::test_process_email_dry_run ... ok
[INFO] [stdout] test tests::test_cleanup_duplicates_dry_run ... ok
[INFO] [stdout] test email::tests::test_process_email_linkedin ... ok
[INFO] [stdout] test email::tests::test_process_email_generic ... ok
[INFO] [stdout] test email::tests::test_process_email_no_jobs ... ok
[INFO] [stdout] test email::tests::test_spin_function ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 243 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.25s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a", kill_on_drop: false }`
[INFO] [stdout] 29fa2651f934b127a09e2afe66a25050243828f3101ac36e205887343b23e16a
