[INFO] fetching crate type-globe 0.9.0...
[INFO] testing type-globe-0.9.0 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate type-globe 0.9.0 into /workspace/builds/worker-2-tc1/source
[INFO] started tweaking crates.io crate type-globe 0.9.0
[INFO] finished tweaking crates.io crate type-globe 0.9.0
[INFO] tweaked toml for crates.io crate type-globe 0.9.0 written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate type-globe 0.9.0 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 crates.io crate type-globe 0.9.0 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]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded windows-strings v0.1.0
[INFO] [stderr]   Downloaded windows-result v0.2.0
[INFO] [stderr]   Downloaded windows-core v0.58.0
[INFO] [stderr]   Downloaded objc_exception v0.1.2
[INFO] [stderr]   Downloaded cfg-if v1.0.1
[INFO] [stderr]   Downloaded oxilangtag v0.1.5
[INFO] [stderr]   Downloaded windows-implement v0.58.0
[INFO] [stderr]   Downloaded tts v0.26.3
[INFO] [stderr]   Downloaded windows-interface v0.58.0
[INFO] [stderr]   Downloaded speech-dispatcher v0.16.0
[INFO] [stderr]   Downloaded speech-dispatcher-sys v0.7.0
[INFO] [stderr]   Downloaded malloc_buf v0.0.6
[INFO] [stderr]   Downloaded slab v0.4.10
[INFO] [stderr]   Downloaded objc v0.2.7
[INFO] [stderr]   Downloaded jobserver v0.1.34
[INFO] [stderr]   Downloaded windows-targets v0.53.2
[INFO] [stderr]   Downloaded dyn-clonable-impl v0.9.2
[INFO] [stderr]   Downloaded rustversion v1.0.21
[INFO] [stderr]   Downloaded dyn-clonable v0.9.2
[INFO] [stderr]   Downloaded bitflags v2.9.1
[INFO] [stderr]   Downloaded cocoa-foundation v0.1.2
[INFO] [stderr]   Downloaded prettyplease v0.2.36
[INFO] [stderr]   Downloaded core-graphics-types v0.1.3
[INFO] [stderr]   Downloaded signal-hook-registry v1.4.5
[INFO] [stderr]   Downloaded block v0.1.6
[INFO] [stderr]   Downloaded parking_lot v0.12.4
[INFO] [stderr]   Downloaded redox_syscall v0.5.13
[INFO] [stderr]   Downloaded rustc-demangle v0.1.25
[INFO] [stderr]   Downloaded memchr v2.7.5
[INFO] [stderr]   Downloaded parking_lot_core v0.9.11
[INFO] [stderr]   Downloaded lock_api v0.4.13
[INFO] [stderr]   Downloaded io-uring v0.7.8
[INFO] [stderr]   Downloaded backtrace v0.3.75
[INFO] [stderr]   Downloaded errno v0.3.13
[INFO] [stderr]   Downloaded cpal v0.15.3
[INFO] [stderr]   Downloaded syn v2.0.104
[INFO] [stderr]   Downloaded windows-result v0.1.2
[INFO] [stderr]   Downloaded oboe v0.6.1
[INFO] [stderr]   Downloaded coreaudio-sys v0.2.17
[INFO] [stderr]   Downloaded mach2 v0.4.3
[INFO] [stderr]   Downloaded unicode-truncate v1.1.0
[INFO] [stderr]   Downloaded instability v0.3.7
[INFO] [stderr]   Downloaded windows-core v0.54.0
[INFO] [stderr]   Downloaded strum v0.26.3
[INFO] [stderr]   Downloaded strum_macros v0.26.4
[INFO] [stderr]   Downloaded indoc v2.0.6
[INFO] [stderr]   Downloaded castaway v0.2.3
[INFO] [stderr]   Downloaded rodio v0.19.0
[INFO] [stderr]   Downloaded ndk v0.8.0
[INFO] [stderr]   Downloaded coreaudio-rs v0.11.3
[INFO] [stderr]   Downloaded alsa-sys v0.3.1
[INFO] [stderr]   Downloaded alsa v0.9.1
[INFO] [stderr]   Downloaded compact_str v0.8.1
[INFO] [stderr]   Downloaded oboe-sys v0.6.1
[INFO] [stderr]   Downloaded crossterm v0.28.1
[INFO] [stderr]   Downloaded hashbrown v0.15.4
[INFO] [stderr]   Downloaded jiwa v0.1.0
[INFO] [stderr]   Downloaded cargo-husky v1.5.0
[INFO] [stderr]   Downloaded clap_derive v4.5.55
[INFO] [stderr]   Downloaded clap v4.5.60
[INFO] [stderr]   Downloaded unicode-width v0.2.0
[INFO] [stderr]   Downloaded ndk-sys v0.5.0+25.2.9519653
[INFO] [stderr]   Downloaded clap_builder v4.5.60
[INFO] [stderr]   Downloaded libc v0.2.174
[INFO] [stderr]   Downloaded windows_aarch64_gnullvm v0.53.0
[INFO] [stderr]   Downloaded windows_x86_64_gnullvm v0.53.0
[INFO] [stderr]   Downloaded ratatui v0.29.0
[INFO] [stderr]   Downloaded windows_i686_gnullvm v0.53.0
[INFO] [stderr]   Downloaded windows_aarch64_msvc v0.53.0
[INFO] [stderr]   Downloaded windows_i686_msvc v0.53.0
[INFO] [stderr]   Downloaded tokio v1.46.1
[INFO] [stderr]   Downloaded windows_x86_64_msvc v0.53.0
[INFO] [stderr]   Downloaded windows_x86_64_gnu v0.53.0
[INFO] [stderr]   Downloaded windows_i686_gnu v0.53.0
[INFO] [stderr]   Downloaded windows v0.58.0
[INFO] [stderr]   Downloaded windows v0.54.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287
[INFO] running `Command { std: "docker" "start" "8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287", 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" "8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287" "/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" "8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287", 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" "8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287" "/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.95
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]    Compiling cfg-if v1.0.1
[INFO] [stderr]    Compiling log v0.4.27
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling prettyplease v0.2.36
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling libloading v0.8.9
[INFO] [stderr]    Compiling rustversion v1.0.21
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]    Compiling bindgen v0.72.1
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling rustc-hash v2.1.2
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling signal-hook-registry v1.4.5
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling ryu v1.0.20
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling itoa v1.0.15
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling anstyle-parse v0.2.7
[INFO] [stderr]    Compiling cexpr v0.6.0
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling cpal v0.15.3
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling hashbrown v0.15.4
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling signal-hook-mio v0.2.4
[INFO] [stderr]    Compiling alsa v0.9.1
[INFO] [stderr]    Compiling castaway v0.2.3
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling dasp_sample v0.11.0
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]    Compiling tts v0.26.3
[INFO] [stderr]    Compiling indoc v2.0.6
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling dyn-clonable-impl v0.9.2
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling dyn-clonable v0.9.2
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling instability v0.3.7
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling oxilangtag v0.1.5
[INFO] [stderr]    Compiling bytes v1.10.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling rodio v0.19.0
[INFO] [stderr]    Compiling tokio v1.46.1
[INFO] [stderr]    Compiling ratatui v0.29.0
[INFO] [stderr]    Compiling jiwa v0.1.0
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling speech-dispatcher-sys v0.7.0
[INFO] [stderr]    Compiling speech-dispatcher v0.16.0
[INFO] [stderr]    Compiling type-globe v0.9.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 44s
[INFO] running `Command { std: "docker" "inspect" "8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287", 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" "8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287" "/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 getrandom v0.3.4
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling cargo-husky v1.5.0
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling tempfile v3.23.0
[INFO] [stderr]    Compiling type-globe v0.9.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 13.78s
[INFO] running `Command { std: "docker" "inspect" "8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287", 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" "8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287" "/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.23s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/backfill-ja-typing.rs (/opt/rustwide/target/debug/deps/backfill_ja_typing-eb6c9bf4ca810fc3)
[INFO] [stdout] running 8 tests
[INFO] [stdout] test romaji::tests::preserves_hiragana_long_vowels ... ok
[INFO] [stdout] test romaji::tests::keeps_n_before_bmp_as_plain_n ... ok
[INFO] [stdout] test romaji::tests::normalizes_katakana_and_punctuation ... ok
[INFO] [stderr]      Running unittests src/bin/lint-questions.rs (/opt/rustwide/target/debug/deps/lint_questions-fecc6dbf66e92e4f)
[INFO] [stdout] test romaji::tests::doubles_n_before_vowel_y_or_n_row_for_ime ... ok
[INFO] [stdout] test romaji::tests::preserves_decimal_and_slash_in_mixed_text ... ok
[INFO] [stdout] test romaji::tests::handles_sokuon_and_small_kana ... ok
[INFO] [stdout] test romaji::tests::variants_do_not_add_collapsed_long_vowels ... ok
[INFO] [stdout] test romaji::tests::converts_basic_hiragana ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 60 tests
[INFO] [stdout] test normalize::tests::hepburn_collapses_to_kunrei ... ok
[INFO] [stdout] test normalize::tests::dash_is_passed_through_for_katakana_long_vowel ... ok
[INFO] [stdout] test normalize::tests::idempotent ... ok
[INFO] [stdout] test normalize::tests::di_and_dhi_stay_distinct ... ok
[INFO] [stdout] test normalize::tests::foreign_thi_aliases ... ok
[INFO] [stdout] test normalize::tests::ime_alt_digraphs_v_and_f ... ok
[INFO] [stdout] test normalize::tests::case_insensitive ... ok
[INFO] [stdout] test normalize::tests::hepburn_and_kunrei_collide ... ok
[INFO] [stdout] test normalize::tests::n_runs_preserve_ime_distinction ... ok
[INFO] [stdout] test normalize::tests::nn_at_end_collapses_to_n ... ok
[INFO] [stdout] test normalize::tests::trailing_n_run_preserves_count_for_prefix_match ... ok
[INFO] [stdout] test normalize::tests::sokuon_ime_alt_path_via_explicit_small_tsu ... ok
[INFO] [stdout] test normalize::tests::wo_is_distinct_from_o ... ok
[INFO] [stdout] test normalize::tests::nn_before_vowel_or_y_is_kept ... ok
[INFO] [stdout] test normalize::tests::ime_punctuation_keys_preserved_with_n_commit ... ok
[INFO] [stdout] test normalize::tests::nn_before_consonant_collapses_to_n ... ok
[INFO] [stdout] test normalize::tests::rules_apply_in_sequence_without_clobbering_each_other ... ok
[INFO] [stdout] test normalize::tests::yoon_hepburn_kunrei_unified ... ok
[INFO] [stdout] test normalize::tests::ime_alt_digraphs_wo_we_wi ... ok
[INFO] [stdout] test normalize::tests::preserves_unrelated_characters ... ok
[INFO] [stdout] test normalize::tests::yoon_ime_alt_path_via_small_ya ... ok
[INFO] [stdout] test romaji::tests::normalizes_katakana_and_punctuation ... ok
[INFO] [stdout] test romaji::tests::preserves_hiragana_long_vowels ... ok
[INFO] [stdout] test romaji::tests::handles_sokuon_and_small_kana ... ok
[INFO] [stdout] test romaji::tests::converts_basic_hiragana ... ok
[INFO] [stdout] test romaji::tests::keeps_n_before_bmp_as_plain_n ... ok
[INFO] [stdout] test romaji::tests::doubles_n_before_vowel_y_or_n_row_for_ime ... ok
[INFO] [stdout] test tests::allows_official_english_spelling_as_extra_variant ... ok
[INFO] [stdout] test romaji::tests::preserves_decimal_and_slash_in_mixed_text ... ok
[INFO] [stdout] test romaji::tests::variants_do_not_add_collapsed_long_vowels ... ok
[INFO] [stdout] test types::tests::boss_metadata_serializes_cleanly ... ok
[INFO] [stdout] test types::tests::boss_metadata_requires_explicit_reveal_mode ... ok
[INFO] [stdout] test types::tests::boss_prompt_rejects_non_word_answer_kind ... ok
[INFO] [stdout] test tests::rejects_extra_variant_that_is_not_official_english_spelling ... ok
[INFO] [stdout] test tests::allows_parenthetical_ascii_alias_as_extra_variant ... ok
[INFO] [stdout] test types::tests::boss_metadata_rejects_empty_hints ... ok
[INFO] [stdout] test tests::detects_redundant_variants_that_canonicalize_alike ... ok
[INFO] [stdout] test tests::does_not_flag_genuine_reading_variants_as_redundant ... ok
[INFO] [stdout] test tests::extracts_ascii_aliases_from_parentheses ... ok
[INFO] [stdout] test types::tests::invalid_boss_prompt_is_rejected_on_serialize_too ... ok
[INFO] [stdout] test types::tests::push_rpg_sorted_score_descending ... ok
[INFO] [stdout] test types::tests::listening_prompt_with_boss_metadata_deserializes ... ok
[INFO] [stdout] test types::tests::listening_prompt_without_boss_metadata_still_deserializes ... ok
[INFO] [stdout] test types::tests::push_quiz_11_entries_truncates_to_10 ... ok
[INFO] [stdout] test types::tests::push_quiz_lowest_score_is_dropped ... ok
[INFO] [stdout] test types::tests::push_quiz_sorted_score_descending ... ok
[INFO] [stdout] test types::tests::push_rpg_11_entries_truncates_to_10 ... ok
[INFO] [stdout] test types::tests::push_ta25_11_entries_truncates_to_10 ... ok
[INFO] [stdout] test validator::tests::equal_choices_are_not_a_prefix_conflict ... ok
[INFO] [stdout] test validator::tests::format_conflict_matches_expected_shape ... ok
[INFO] [stdout] test validator::tests::detects_prefix_conflict_in_ja_typings ... ok
[INFO] [stdout] test types::tests::push_ta25_slowest_is_dropped ... ok
[INFO] [stdout] test validator::tests::empty_input_is_empty_output ... ok
[INFO] [stdout] test types::tests::push_ta25_sorted_time_ascending ... ok
[INFO] [stdout] test validator::tests::unrelated_choices_pass ... ok
[INFO] [stdout] test validator::tests::format_conflict_escapes_embedded_quotes ... ok
[INFO] [stdout] test validator::tests::cross_choice_prefix_no_longer_flagged_after_70 ... ok
[INFO] [stdout] test validator::tests::skips_languages_missing_from_a_choice ... ok
[INFO] [stdout] test validator::tests::shipped_question_data_is_clean_en ... ok
[INFO] [stdout] test validator::tests::shipped_question_data_is_clean_ja ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 60 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.53s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/type_globe-53ac2819aef3925b)
[INFO] [stdout] 
[INFO] [stdout] running 297 tests
[INFO] [stdout] test audio::cues::tests::tone_amplitude_bounded_by_gain ... ok
[INFO] [stdout] test audio::tts::tests::basic_runtime_support_is_still_usable ... ok
[INFO] [stdout] test audio::tts::tests::early_boss_hint_profile_is_slowest ... ok
[INFO] [stdout] test audio::tts::tests::prompt_replay_profile_is_slightly_slower_than_first_read ... ok
[INFO] [stdout] test audio::cues::tests::synthesize_keystroke_is_short_and_quiet ... ok
[INFO] [stdout] test audio::cues::tests::tone_envelope_grows_during_attack_and_settles_in_sustain ... ok
[INFO] [stdout] test audio::cues::tests::synthesize_mistype_is_louder_than_keystroke ... ok
[INFO] [stdout] test config::tests::listening_file_path_uses_language_code ... ok
[INFO] [stdout] test config::tests::questions_file_path_uses_language_code ... ok
[INFO] [stdout] test game::enemy::tests::keys_are_unique_across_all_enemies ... ok
[INFO] [stdout] test game::enemy::tests::ordinal_five_is_miniboss ... ok
[INFO] [stdout] test game::enemy::tests::enemy_displays_include_an_emoji_prefix ... ok
[INFO] [stdout] test audio::cues::tests::silence_is_all_zero ... ok
[INFO] [stdout] test game::enemy::tests::ordinal_ten_is_boss ... ok
[INFO] [stdout] test audio::tts::tests::preferred_runtime_support_requires_stop_and_rate ... ok
[INFO] [stdout] test game::listening::tests::from_pool_returns_none_on_empty ... ok
[INFO] [stdout] test game::enemy::tests::enemy_for_ordinal_wraps_past_eleven ... ok
[INFO] [stdout] test game::listening::tests::judge_accepts_exact_match ... ok
[INFO] [stdout] test game::enemy::tests::ordinal_zero_falls_back_to_first_regular ... ok
[INFO] [stdout] test game::enemy::tests::regular_ordinals_resolve_to_regular_pool ... ok
[INFO] [stdout] test game::enemy::tests::regular_pool_is_cycled_by_ordinal ... ok
[INFO] [stdout] test game::listening::tests::judge_rejects_different_word ... ok
[INFO] [stdout] test game::listening::tests::judge_romanizes_japanese_prompts ... ok
[INFO] [stdout] test game::listening::tests::prefix_accepts_japanese_variants ... ok
[INFO] [stdout] test game::listening::tests::prefix_accepts_partial_match ... ok
[INFO] [stdout] test audio::cues::tests::tone_sample_count_matches_duration ... ok
[INFO] [stdout] test game::listening::tests::session_records_correct_submission ... ok
[INFO] [stdout] test game::listening::tests::session_records_incorrect_submission ... ok
[INFO] [stdout] test audio::cues::tests::synthesize_question_reveal_is_two_segments_with_a_gap ... ok
[INFO] [stdout] test game::listening::tests::judge_is_case_insensitive ... ok
[INFO] [stdout] test game::listening::tests::judge_keeps_internal_spacing_exact ... ok
[INFO] [stdout] test game::listening::tests::from_pool_picks_one_when_available ... ok
[INFO] [stdout] test game::quiz::tests::answer_question_typed_accepts_strict_long_vowel_dash ... ok
[INFO] [stdout] test game::quiz::tests::answer_question_typed_rejects_dash_collapsed_form ... ok
[INFO] [stdout] test game::quiz::tests::correct_count_tracks_only_correct_answers ... ok
[INFO] [stdout] test game::quiz::tests::complete_correct_typed_recognizes_ime_alt_paths ... ok
[INFO] [stdout] test game::listening::tests::judge_trims_surrounding_whitespace ... ok
[INFO] [stdout] test game::listening::tests::prefix_rejects_wrong_branch ... ok
[INFO] [stdout] test game::listening::tests::session_freezes_after_submit ... ok
[INFO] [stdout] test game::quiz::tests::en_mode_prefix_still_works_normally ... ok
[INFO] [stdout] test game::quiz::tests::from_pool_does_not_repeat_questions ... ok
[INFO] [stdout] test game::quiz::tests::cpm_and_wpm_are_zero_before_any_correct_answer ... ok
[INFO] [stdout] test game::quiz::tests::cpm_counts_only_correct_answers ... ok
[INFO] [stdout] test game::quiz::tests::cpm_counts_typed_variant_length_for_japanese ... ok
[INFO] [stdout] test game::quiz::tests::from_pool_with_count_exact_match ... ok
[INFO] [stdout] test game::quiz::tests::from_pool_caps_at_run_length ... ok
[INFO] [stdout] test game::quiz::tests::from_pool_with_count_exceeds_pool_is_clamped ... ok
[INFO] [stdout] test game::quiz::tests::from_pool_returns_whole_pool_when_smaller_than_run_length ... ok
[INFO] [stdout] test game::quiz::tests::from_pool_with_count_one_takes_single_question ... ok
[INFO] [stdout] test game::quiz::tests::from_pool_with_count_zero_falls_back_to_one ... ok
[INFO] [stdout] test game::quiz::tests::issue_96_accepts_kunrei_when_data_has_hepburn ... ok
[INFO] [stdout] test game::quiz::tests::issue_96_accepts_thi_variants ... ok
[INFO] [stdout] test game::quiz::tests::japanese_mode_accepts_explicit_romaji ... ok
[INFO] [stdout] test game::quiz::tests::japanese_tokyo_kanji_label_tou_prefix_is_valid ... ok
[INFO] [stdout] test game::quiz::tests::japanese_mode_accepts_uppercase_romaji ... ok
[INFO] [stdout] test game::quiz::tests::issue_96_accepts_hepburn_when_data_has_kunrei ... ok
[INFO] [stdout] test game::quiz::tests::japanese_mode_rejects_collapsed_hiragana_long_vowel ... ok
[INFO] [stdout] test game::quiz::tests::issue_96_answer_typed_accepts_variants ... ok
[INFO] [stdout] test game::quiz::tests::typed_is_case_insensitive ... ok
[INFO] [stdout] test game::quiz::tests::typed_prefix_does_not_auto_confirm ... ok
[INFO] [stdout] test game::quiz::tests::typed_exact_match_is_correct ... ok
[INFO] [stdout] test game::quiz::tests::japanese_tokyo_tou_prefix_is_valid ... ok
[INFO] [stdout] test game::quiz::tests::typed_matches_phrase_choice ... ok
[INFO] [stdout] test game::quiz::tests::typed_empty_string_is_incorrect ... ok
[INFO] [stdout] test game::quiz::tests::typed_trailing_whitespace_is_not_trimmed ... ok
[INFO] [stdout] test game::quiz::tests::typed_wrong_choice_is_incorrect_but_recorded ... ok
[INFO] [stdout] test game::quiz::tests::valid_prefix_accepts_partial_match_of_correct_choice ... ok
[INFO] [stdout] test game::quiz::tests::user_reported_partial_typing_cases ... ok
[INFO] [stdout] test game::quiz::tests::valid_prefix_rejects_wrong_branch ... ok
[INFO] [stdout] test game::quiz::tests::valid_prefix_accepts_long_vowel_dash_against_strict_data ... ok
[INFO] [stdout] test game::quiz::tests::valid_prefix_handles_all_multi_char_rewrite_mid_states ... ok
[INFO] [stdout] test game::quiz::tests::wolf_is_not_accepted_by_olf_in_en_mode ... ok
[INFO] [stdout] test game::quiz::tests::valid_prefix_handles_japanese_romaji_variants ... ok
[INFO] [stdout] test game::rpg::tests::apply_exp_gain_accumulates_without_level_up ... ok
[INFO] [stdout] test game::quiz::tests::valid_prefix_rejects_wrong_choice_text ... ok
[INFO] [stdout] test game::rpg::tests::apply_exp_gain_emits_multiple_level_ups_in_order ... ok
[INFO] [stdout] test game::rpg::tests::apply_exp_gain_emits_one_level_up_event_with_carry ... ok
[INFO] [stdout] test game::rpg::tests::apply_exp_gain_saturates_on_u32_overflow ... ok
[INFO] [stdout] test game::rpg::tests::apply_exp_loss_saturates_at_zero ... ok
[INFO] [stdout] test game::rpg::tests::apply_exp_loss_subtracts_normally ... ok
[INFO] [stdout] test game::rpg::tests::battle_log_records_and_caps_entries ... ok
[INFO] [stdout] test game::rpg::tests::build_ignores_non_word_regular_prompts ... ok
[INFO] [stdout] test game::rpg::tests::build_places_miniboss_and_boss_at_slots_five_and_ten ... ok
[INFO] [stdout] test game::rpg::tests::build_rejects_missing_boss_prompt ... ok
[INFO] [stdout] test game::rpg::tests::exp_gain_for_hit_boundaries ... ok
[INFO] [stdout] test game::rpg::tests::exp_gain_for_hit_negative_and_nan_are_treated_as_instant ... ok
[INFO] [stdout] test game::rpg::tests::new_run_starts_in_town_with_empty_log ... ok
[INFO] [stdout] test game::rpg::tests::next_level_exp_clamps_level_zero ... ok
[INFO] [stdout] test game::quiz::tests::wo_and_o_are_distinct_in_japanese_mode ... ok
[INFO] [stdout] test game::rpg::tests::next_level_exp_is_monotonic_and_positive ... ok
[INFO] [stdout] test game::rpg::tests::state_machine_visits_all_ten_encounters_then_returns ... ok
[INFO] [stdout] test game::quiz::tests::final_time_is_frozen_when_last_question_is_skipped ... ok
[INFO] [stdout] test game::time_attack::tests::duplicate_human_id_is_rejected ... ok
[INFO] [stdout] test game::quiz::tests::final_time_is_frozen_at_last_correct_answer ... ok
[INFO] [stdout] test game::time_attack::tests::all_empty_exposes_empty_seats ... ok
[INFO] [stdout] test game::time_attack::tests::adding_human_replaces_next_cpu_in_canonical_order ... ok
[INFO] [stdout] test game::time_attack::tests::adding_humans_consumes_blue_green_yellow_in_order ... ok
[INFO] [stdout] test game::time_attack::tests::human_completion_claims_current_panel_for_red ... ok
[INFO] [stdout] test game::time_attack::tests::cpu_deadline_beats_human_submission_when_already_due ... ok
[INFO] [stdout] test game::time_attack::tests::forfeit_without_cpu_plan_leaves_blank_panel ... ok
[INFO] [stdout] test game::quiz::tests::valid_prefix_handles_mid_rewrite_partial_input ... ok
[INFO] [stdout] test game::time_attack::tests::prototype_requires_full_25_question_pool ... ok
[INFO] [stdout] test game::time_attack::tests::standard_local_uses_all_four_colors_once ... ok
[INFO] [stdout] test game::title::tests::keys_are_unique ... ok
[INFO] [stdout] test game::time_attack::tests::leader_summary_is_empty_before_any_panel_is_claimed ... ok
[INFO] [stdout] test game::time_attack::tests::prototype_builds_fixed_25_question_run ... ok
[INFO] [stdout] test game::title::tests::level_far_above_table_caps_at_legend ... ok
[INFO] [stdout] test game::time_attack::tests::standard_local_is_one_human_plus_three_cpu ... ok
[INFO] [stdout] test game::title::tests::level_fifty_unlocks_full_chain_when_starting_fresh ... ok
[INFO] [stdout] test game::time_attack::tests::summary_line_mentions_each_seat ... ok
[INFO] [stdout] test game::title::tests::existing_titles_are_not_re_emitted ... ok
[INFO] [stdout] test game::title::tests::level_two_unlocks_apprentice_only ... ok
[INFO] [stdout] test game::title::tests::level_four_still_only_unlocks_apprentice ... ok
[INFO] [stdout] test game::title::tests::table_is_sorted_by_level_ascending ... ok
[INFO] [stdout] test io::data_loader::tests::question_reading_falls_back_to_display_text ... ok
[INFO] [stdout] test game::title::tests::level_one_unlocks_nothing ... ok
[INFO] [stdout] test io::data_loader::tests::load_listening_prompts_returns_empty_when_missing ... ok
[INFO] [stdout] test io::data_loader::tests::ja_choice_typing_keeps_registered_ime_strict_spelling ... ok
[INFO] [stdout] test game::title::tests::level_five_unlocks_apprentice_and_veteran_when_no_current ... ok
[INFO] [stdout] test io::normalize::tests::foreign_thi_aliases ... ok
[INFO] [stdout] test io::normalize::tests::di_and_dhi_stay_distinct ... ok
[INFO] [stdout] test io::data_loader::tests::ja_choice_typing_prefers_explicit_field ... ok
[INFO] [stdout] test io::normalize::tests::case_insensitive ... ok
[INFO] [stdout] test io::normalize::tests::hepburn_and_kunrei_collide ... ok
[INFO] [stdout] test io::data_loader::tests::question_reading_prefers_explicit_reading_text ... ok
[INFO] [stdout] test io::normalize::tests::dash_is_passed_through_for_katakana_long_vowel ... ok
[INFO] [stdout] test io::normalize::tests::hepburn_collapses_to_kunrei ... ok
[INFO] [stdout] test io::normalize::tests::idempotent ... ok
[INFO] [stdout] test io::normalize::tests::ime_alt_digraphs_v_and_f ... ok
[INFO] [stdout] test io::normalize::tests::nn_at_end_collapses_to_n ... ok
[INFO] [stdout] test io::normalize::tests::nn_before_consonant_collapses_to_n ... ok
[INFO] [stdout] test io::normalize::tests::nn_before_vowel_or_y_is_kept ... ok
[INFO] [stdout] test io::normalize::tests::ime_alt_digraphs_wo_we_wi ... ok
[INFO] [stdout] test io::normalize::tests::ime_punctuation_keys_preserved_with_n_commit ... ok
[INFO] [stdout] test io::normalize::tests::n_runs_preserve_ime_distinction ... ok
[INFO] [stdout] test io::normalize::tests::trailing_n_run_preserves_count_for_prefix_match ... ok
[INFO] [stdout] test io::normalize::tests::rules_apply_in_sequence_without_clobbering_each_other ... ok
[INFO] [stdout] test io::normalize::tests::wo_is_distinct_from_o ... ok
[INFO] [stdout] test io::normalize::tests::sokuon_ime_alt_path_via_explicit_small_tsu ... ok
[INFO] [stdout] test io::normalize::tests::preserves_unrelated_characters ... ok
[INFO] [stdout] test io::normalize::tests::yoon_ime_alt_path_via_small_ya ... ok
[INFO] [stdout] test io::romaji::tests::keeps_n_before_bmp_as_plain_n ... ok
[INFO] [stdout] test io::romaji::tests::handles_sokuon_and_small_kana ... ok
[INFO] [stdout] test io::romaji::tests::doubles_n_before_vowel_y_or_n_row_for_ime ... ok
[INFO] [stdout] test io::romaji::tests::normalizes_katakana_and_punctuation ... ok
[INFO] [stdout] test io::romaji::tests::converts_basic_hiragana ... ok
[INFO] [stdout] test io::normalize::tests::yoon_hepburn_kunrei_unified ... ok
[INFO] [stdout] test io::romaji::tests::preserves_decimal_and_slash_in_mixed_text ... ok
[INFO] [stdout] test io::romaji::tests::preserves_hiragana_long_vowels ... ok
[INFO] [stdout] test io::romaji::tests::variants_do_not_add_collapsed_long_vowels ... ok
[INFO] [stdout] test io::storage::tests::load_player_data_accepts_legacy_yaml_without_new_fields ... ok
[INFO] [stdout] test io::storage::tests::load_records_file_absent_returns_default ... ok
[INFO] [stdout] test io::storage::tests::load_records_returns_empty_when_file_absent ... ok
[INFO] [stdout] test io::storage::tests::save_then_load_records_round_trip ... ok
[INFO] [stdout] test io::storage::tests::load_player_data_returns_default_when_file_absent ... ok
[INFO] [stdout] test io::storage::tests::save_then_load_player_data_round_trip ... ok
[INFO] [stdout] test io::storage::tests::save_then_load_records_rpg_round_trip ... ok
[INFO] [stdout] test io::storage::tests::save_then_load_records_quiz_mode_round_trip ... ok
[INFO] [stdout] test io::storage::tests::load_player_data_accepts_yaml_without_rpg_stats_block ... ok
[INFO] [stdout] test io::validator::tests::detects_prefix_conflict_in_ja_typings ... ok
[INFO] [stdout] test io::validator::tests::format_conflict_matches_expected_shape ... ok
[INFO] [stdout] test io::validator::tests::cross_choice_prefix_no_longer_flagged_after_70 ... ok
[INFO] [stdout] test io::validator::tests::empty_input_is_empty_output ... ok
[INFO] [stdout] test io::validator::tests::equal_choices_are_not_a_prefix_conflict ... ok
[INFO] [stdout] test io::validator::tests::format_conflict_escapes_embedded_quotes ... ok
[INFO] [stdout] test io::validator::tests::skips_languages_missing_from_a_choice ... ok
[INFO] [stdout] test io::validator::tests::unrelated_choices_pass ... ok
[INFO] [stdout] test tests::cli_floor_u32_max_parses_without_error ... ok
[INFO] [stdout] test tests::cli_seed_negative_one_fails_to_parse ... ok
[INFO] [stdout] test tests::parse_language_empty_string_returns_err_without_panic ... ok
[INFO] [stdout] test tests::parse_language_en_returns_english ... ok
[INFO] [stdout] test tests::cli_seed_u64_max_parses_without_error ... ok
[INFO] [stdout] test tests::missing_questions_file_returns_empty_vec ... ok
[INFO] [stdout] test tests::parse_language_ja_returns_japanese ... ok
[INFO] [stdout] test tests::parse_language_spelled_out_returns_err_containing_input ... ok
[INFO] [stdout] test tests::parse_language_uppercase_ja_returns_err_containing_input ... ok
[INFO] [stdout] test tests::parse_language_zh_returns_err_containing_input ... ok
[INFO] [stdout] test types::tests::boss_metadata_requires_explicit_reveal_mode ... ok
[INFO] [stdout] test types::tests::boss_metadata_rejects_empty_hints ... ok
[INFO] [stdout] test types::tests::listening_prompt_with_boss_metadata_deserializes ... ok
[INFO] [stdout] test types::tests::invalid_boss_prompt_is_rejected_on_serialize_too ... ok
[INFO] [stdout] test types::tests::boss_metadata_serializes_cleanly ... ok
[INFO] [stdout] test types::tests::boss_prompt_rejects_non_word_answer_kind ... ok
[INFO] [stdout] test types::tests::push_quiz_11_entries_truncates_to_10 ... ok
[INFO] [stdout] test types::tests::push_quiz_lowest_score_is_dropped ... ok
[INFO] [stdout] test types::tests::push_quiz_sorted_score_descending ... ok
[INFO] [stdout] test types::tests::push_rpg_11_entries_truncates_to_10 ... ok
[INFO] [stdout] test types::tests::listening_prompt_without_boss_metadata_still_deserializes ... ok
[INFO] [stdout] test io::data_loader::tests::shipped_listening_data_loads_for_both_languages ... ok
[INFO] [stdout] test types::tests::push_rpg_sorted_score_descending ... ok
[INFO] [stdout] test types::tests::push_ta25_11_entries_truncates_to_10 ... ok
[INFO] [stdout] test ui::help_line::tests::renders_each_entry_to_buffer ... ok
[INFO] [stdout] test ui::help_line::tests::empty_help_line_does_not_panic ... ok
[INFO] [stdout] test ui::help_line::tests::zero_height_area_does_not_panic ... ok
[INFO] [stdout] test ui::inline_code::tests::empty_code_span_is_dropped ... ok
[INFO] [stdout] test ui::inline_code::tests::empty_string ... ok
[INFO] [stdout] test ui::help_line::tests::as_text_matches_spec_format ... ok
[INFO] [stdout] test ui::inline_code::tests::multiple_code_spans ... ok
[INFO] [stdout] test ui::inline_code::tests::plain_text_no_backticks ... ok
[INFO] [stdout] test types::tests::push_ta25_slowest_is_dropped ... ok
[INFO] [stdout] test types::tests::push_ta25_sorted_time_ascending ... ok
[INFO] [stdout] test ui::inline_code::tests::strip_and_locate_simple ... ok
[INFO] [stdout] test ui::inline_code::tests::strip_and_locate_multiple_spans ... ok
[INFO] [stdout] test ui::inline_code::tests::single_code_span ... ok
[INFO] [stdout] test ui::inline_code::tests::unclosed_backtick_after_valid_pair ... ok
[INFO] [stdout] test ui::inline_code::tests::strip_and_locate_japanese ... ok
[INFO] [stdout] test ui::inline_code::tests::unclosed_backtick_is_kept_as_literal ... ok
[INFO] [stdout] test ui::inline_code::tests::strip_and_locate_no_code ... ok
[INFO] [stdout] test ui::input_loop::tests::demo_source_high_cps_clamped_to_min_1ms_interval ... ok
[INFO] [stdout] test ui::input_loop::tests::demo_source_empty_target_returns_timeout ... ok
[INFO] [stdout] test ui::input_loop::tests::demo_source_idle_after_target_consumed ... ok
[INFO] [stdout] test ui::input_loop::tests::demo_source_set_target_resets_cursor ... ok
[INFO] [stdout] test ui::input_loop::tests::demo_source_set_target_during_active_typing_resets_cursor ... ok
[INFO] [stdout] test ui::input_loop::tests::demo_source_space_and_digit_in_target ... ok
[INFO] [stdout] test ui::input_loop::tests::demo_source_unicode_long_vowel_target ... ok
[INFO] [stdout] test ui::input_loop::tests::demo_source_zero_cps_is_normalised_to_one_cps ... ok
[INFO] [stdout] test ui::input_loop::tests::demo_source_waits_then_emits_target_chars_in_order ... ok
[INFO] [stdout] test ui::input_loop::tests::multiplexed_continues_on_human_disconnected ... ok
[INFO] [stdout] test ui::input_loop::tests::drop_signals_shutdown_and_joins_worker ... ok
[INFO] [stdout] test ui::input_loop::tests::multiplexed_does_not_double_dispatch_demo_key ... ok
[INFO] [stdout] test ui::input_loop::tests::multiplexed_returns_human_key_when_human_has_event ... ok
[INFO] [stdout] test ui::input_loop::tests::multiplexed_source_with_zero_duration_does_not_panic ... ok
[INFO] [stdout] test ui::input_loop::tests::recv_until_reports_disconnected_when_sender_drops ... ok
[INFO] [stdout] test ui::input_loop::tests::multiplexed_falls_through_to_demo_when_human_idle ... ok
[INFO] [stdout] test ui::input_loop::tests::recv_until_returns_key_when_one_arrives ... ok
[INFO] [stdout] test ui::input_loop::tests::synth_key_produces_no_modifiers ... ok
[INFO] [stdout] test ui::input_loop::tests::demo_source_cadence_is_steady_when_caller_pauses_between_calls ... ok
[INFO] [stdout] test ui::layout::tests::quiz_layout_does_not_panic_on_small_terminal ... ok
[INFO] [stdout] test ui::layout::tests::quiz_layout_has_three_panes ... ok
[INFO] [stdout] test ui::layout::tests::rpg_layout_does_not_panic_on_small_terminal ... ok
[INFO] [stdout] test ui::layout::tests::rpg_layout_has_four_panes ... ok
[INFO] [stdout] test ui::listen::tests::new_without_tts_has_no_tts_engine ... ok
[INFO] [stdout] test ui::listen::tests::replay_without_tts_increments_plays_count ... ok
[INFO] [stdout] test ui::listen_boss::tests::manual_boss_plan_exposes_next_and_previous_hint_keys ... ok
[INFO] [stdout] test ui::listen_boss::tests::take_tts_is_none_when_built_without_tts ... ok
[INFO] [stdout] test ui::listen_boss::tests::timed_miniboss_plan_has_no_next_hint_key ... ok
[INFO] [stdout] test ui::listen::tests::new_with_tts_engine_has_some_tts ... ok
[INFO] [stdout] test ui::input_loop::tests::recv_until_returns_timeout_when_idle ... ok
[INFO] [stderr] ALSA lib confmisc.c:855:(parse_card) [error.core] cannot find card '0'
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_card_inum returned error: No such file or directory
[INFO] [stderr] ALSA lib confmisc.c:422:(snd_func_concat) [error.core] error evaluating strings
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_concat returned error: No such file or directory
[INFO] [stderr] ALSA lib confmisc.c:1342:(snd_func_refer) [error.core] error evaluating name
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_refer returned error: No such file or directory
[INFO] [stderr] ALSA lib conf.c:5734:(snd_config_expand) [error.core] Evaluate error: No such file or directory
[INFO] [stderr] ALSA lib pcm.c:2722:(snd_pcm_open_noupdate) [error.pcm] Unknown PCM default
[INFO] [stderr] ALSA lib confmisc.c:855:(parse_card) [error.core] cannot find card '0'
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_card_inum returned error: No such file or directory
[INFO] [stderr] ALSA lib confmisc.c:422:(snd_func_concat) [error.core] error evaluating strings
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_concat returned error: No such file or directory
[INFO] [stderr] ALSA lib confmisc.c:1342:(snd_func_refer) [error.core] error evaluating name
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_refer returned error: No such file or directory
[INFO] [stderr] ALSA lib conf.c:5734:(snd_config_expand) [error.core] Evaluate error: No such file or directory
[INFO] [stderr] ALSA lib pcm.c:2722:(snd_pcm_open_noupdate) [error.pcm] Unknown PCM default
[INFO] [stderr] ALSA lib confmisc.c:855:(parse_card) [error.core] cannot find card '0'
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_card_inum returned error: No such file or directory
[INFO] [stderr] ALSA lib confmisc.c:422:(snd_func_concat) [error.core] error evaluating strings
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_concat returned error: No such file or directory
[INFO] [stderr] ALSA lib confmisc.c:1342:(snd_func_refer) [error.core] error evaluating name
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_refer returned error: No such file or directory
[INFO] [stderr] ALSA lib conf.c:5734:(snd_config_expand) [error.core] Evaluate error: No such file or directory
[INFO] [stderr] ALSA lib pcm.c:2722:(snd_pcm_open_noupdate) [error.pcm] Unknown PCM default
[INFO] [stdout] test ui::quiz::tests::demo_target_returns_none_when_both_typings_and_en_empty ... ok
[INFO] [stderr] ALSA lib confmisc.c:855:(parse_card) [error.core] cannot find card '0'
[INFO] [stdout] test ui::quiz::tests::demo_target_uses_ja_typings_when_registered ... ok
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_card_inum returned error: No such file or directory
[INFO] [stdout] test ui::quiz::tests::demo_target_returns_none_when_ja_typings_empty_and_label_not_convertible ... ok
[INFO] [stderr] ALSA lib confmisc.c:422:(snd_func_concat) [error.core] error evaluating strings
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_concat returned error: No such file or directory
[INFO] [stderr] ALSA lib confmisc.c:1342:(snd_func_refer) [error.core] error evaluating name
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_refer returned error: No such file or directory
[INFO] [stderr] ALSA lib conf.c:5734:(snd_config_expand) [error.core] Evaluate error: No such file or directory
[INFO] [stderr] ALSA lib pcm.c:2722:(snd_pcm_open_noupdate) [error.pcm] Unknown PCM default
[INFO] [stderr] ALSA lib confmisc.c:855:(parse_card) [error.core] cannot find card '0'
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_card_inum returned error: No such file or directory
[INFO] [stderr] ALSA lib confmisc.c:422:(snd_func_concat) [error.core] error evaluating strings
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_concat returned error: No such file or directory
[INFO] [stderr] ALSA lib confmisc.c:1342:(snd_func_refer) [error.core] error evaluating name
[INFO] [stderr] ALSA lib conf.c:5211:(_snd_config_evaluate) [error.core] function snd_func_refer returned error: No such file or directory
[INFO] [stderr] ALSA lib conf.c:5734:(snd_config_expand) [error.core] Evaluate error: No such file or directory
[INFO] [stderr] ALSA lib pcm.c:2722:(snd_pcm_open_noupdate) [error.pcm] Unknown PCM default
[INFO] [stdout] test ui::quiz::tests::spans_from_inline_code_multiple_spans ... ok
[INFO] [stdout] test ui::quiz::tests::handle_key_ctrl_c_sets_user_aborted_flag ... ok
[INFO] [stdout] test ui::quiz::tests::spans_from_inline_code_plain_text_unchanged ... ok
[INFO] [stdout] test ui::quiz::tests::spans_from_inline_code_strips_backticks ... ok
[INFO] [stdout] test ui::records::tests::is_quit_recognises_expected_keys ... ok
[INFO] [stdout] test ui::records::tests::latest_ts_is_max_per_section ... ok
[INFO] [stdout] test ui::records::tests::truncate_padded_handles_multibyte_chars ... ok
[INFO] [stdout] test ui::records::tests::truncate_padded_pads_short_strings ... ok
[INFO] [stdout] test ui::records::tests::truncate_padded_truncates_long_strings ... ok
[INFO] [stdout] test ui::status::tests::empty_pane_does_not_panic ... ok
[INFO] [stdout] test ui::status::tests::format_score_groups_thousands ... ok
[INFO] [stdout] test ui::status::tests::format_time_renders_mmss ... ok
[INFO] [stdout] test ui::status::tests::progress_bar_ratio_is_clamped ... ok
[INFO] [stdout] test ui::status::tests::quiz_pane_has_four_value_items ... ok
[INFO] [stdout] test ui::records::tests::latest_ts_is_none_for_empty_records ... ok
[INFO] [stdout] test ui::status::tests::quiz_pane_renders_score_and_time ... ok
[INFO] [stdout] test ui::status::tests::rpg_pane_mixes_values_and_bars ... ok
[INFO] [stdout] test ui::status::tests::status_item_bar_constructor_matches_struct_form ... ok
[INFO] [stdout] test ui::status::tests::very_small_area_does_not_panic ... ok
[INFO] [stdout] test ui::quiz::tests::handle_key_esc_sets_user_aborted_flag ... ok
[INFO] [stdout] test ui::time_attack::tests::help_line_switches_per_phase ... ok
[INFO] [stdout] test ui::time_attack::tests::rejects_wrong_prefix_and_clears_buffer ... ok
[INFO] [stdout] test ui::status::tests::rpg_pane_renders_lv_and_floor ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_naming_accepts_up_to_16_chars_then_rejects ... ok
[INFO] [stdout] test ui::time_attack::tests::test_ctrl_c_quits_in_every_phase ... ok
[INFO] [stdout] test ui::time_attack::tests::test_auto_promote_to_summary_on_finish ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_naming_after_saved_esc_is_noop ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_naming_after_saved_non_dismiss_key_is_noop ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_naming_after_saved_enter_dismisses_without_re_persisting ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_naming_backspace_pops_last_char ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_naming_after_saved_any_dismiss_key_returns_quit ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_naming_counts_japanese_chars_by_grapheme_not_bytes ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_naming_enter_empty_name_is_noop ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_naming_enter_whitespace_only_name_is_noop ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_naming_ignores_modified_char_keys ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_playing_promotes_to_summary_when_last_panel_resolves ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_naming_esc_skips_without_saving ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_naming_enter_persists_record_and_sets_saved ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_summary_enter_transitions_to_naming_and_clears_buffer ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_summary_ignores_other_keys ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_summary_esc_returns_quit ... ok
[INFO] [stdout] test ui::time_attack::tests::test_new_stores_records_file_path ... ok
[INFO] [stdout] test ui::time_attack::tests::test_no_stale_playing_phase_after_finish_via_each_input_path ... ok
[INFO] [stdout] test ui::time_attack::tests::test_handle_key_playing_tab_forfeit_promotes_to_summary_on_finish ... ok
[INFO] [stdout] test ui::time_attack::tests::test_persist_record_preserves_existing_entries_and_pushes_new ... ok
[INFO] [stdout] test ui::time_attack::tests::test_persist_record_failure_appends_pending_warning_and_keeps_saved_false ... ok
[INFO] [stdout] test ui::time_attack::tests::test_persist_record_repeated_failure_appends_multiple_warnings ... ok
[INFO] [stdout] test ui::time_attack::tests::test_persist_record_trims_name_whitespace ... ok
[INFO] [stdout] test ui::time_attack::tests::test_persist_record_writes_rfc3339_timestamp ... ok
[INFO] [stdout] test ui::time_attack::tests::test_persist_record_writes_time_seconds_from_game_elapsed ... ok
[INFO] [stdout] test ui::timestamp::tests::now_rfc3339_matches_format ... ok
[INFO] [stdout] test ui::input_loop::tests::demo_source_long_target_delivers_all_chars_in_order ... ok
[INFO] [stdout] test io::validator::tests::shipped_question_data_is_clean_en ... ok
[INFO] [stdout] test io::validator::tests::shipped_question_data_is_clean_ja ... ok
[INFO] [stdout] test ui::input_loop::tests::demo_source_one_cps_uses_1000ms_interval ... ok
[INFO] [stdout] test game::quiz::tests::data_typings_are_prefix_typeable ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 297 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.01s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287", kill_on_drop: false }`
[INFO] [stdout] 8feb2d39c122c12b5a12ddfb5d510945e67c8071fe7712a0f5a7685da9ee5287
