[INFO] cloning repository https://github.com/ilcors-dev/interactive-flashcards
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ilcors-dev/interactive-flashcards" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Filcors-dev%2Finteractive-flashcards", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Filcors-dev%2Finteractive-flashcards'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] cc89972bf791bd144768adf2c91476a51dba2e28
[INFO] testing ilcors-dev/interactive-flashcards 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%2Filcors-dev%2Finteractive-flashcards" "/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/ilcors-dev/interactive-flashcards
[INFO] finished tweaking git repo https://github.com/ilcors-dev/interactive-flashcards
[INFO] tweaked toml for git repo https://github.com/ilcors-dev/interactive-flashcards written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ilcors-dev/interactive-flashcards 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/ilcors-dev/interactive-flashcards 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 zmij v1.0.12
[INFO] [stderr]   Downloaded cc v1.2.51
[INFO] [stderr]   Downloaded time-core v0.1.7
[INFO] [stderr]   Downloaded find-msvc-tools v0.1.6
[INFO] [stderr]   Downloaded refinery-macros v0.9.0
[INFO] [stderr]   Downloaded time-macros v0.2.25
[INFO] [stderr]   Downloaded refinery v0.9.0
[INFO] [stderr]   Downloaded refinery-core v0.9.0
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.32
[INFO] [stderr]   Downloaded zerocopy v0.8.32
[INFO] [stderr]   Downloaded openrouter_api v0.3.2
[INFO] [stderr]   Downloaded time v0.3.45
[INFO] [stderr]   Downloaded ratatui v0.28.1
[INFO] [stderr]   Downloaded libc v0.2.179
[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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c
[INFO] running `Command { std: "docker" "start" "0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c", 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" "0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c" "/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" "0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c", 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" "0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.105
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling quote v1.0.43
[INFO] [stderr]    Compiling libc v0.2.179
[INFO] [stderr]    Compiling find-msvc-tools v0.1.6
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling litemap v0.8.1
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling writeable v0.6.2
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling zerocopy v0.8.32
[INFO] [stderr]    Compiling bytes v1.11.0
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling cc v1.2.51
[INFO] [stderr]    Compiling time-core v0.1.7
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling ryu v1.0.22
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling zmij v1.0.12
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling deranged v0.5.5
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling http v0.2.12
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling http-body v0.4.6
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling time v0.3.45
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]    Compiling webpki-roots v0.25.4
[INFO] [stderr]    Compiling sync_wrapper v0.1.2
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling cassowary v0.3.0
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling uuid v1.19.0
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling rustls-webpki v0.101.7
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling ratatui v0.28.1
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling refinery-core v0.9.0
[INFO] [stderr]    Compiling refinery-macros v0.9.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-rustls v0.24.1
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling refinery v0.9.0
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling hyper-rustls v0.24.2
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling openrouter_api v0.3.2
[INFO] [stderr]    Compiling interactive-flashcards v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 40s
[INFO] running `Command { std: "docker" "inspect" "0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c", 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" "0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c" "/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 getrandom v0.3.4
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling interactive-flashcards v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 8.04s
[INFO] running `Command { std: "docker" "inspect" "0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c", 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" "0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c" "/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.28s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/interactive_flashcards-9c1a5df28ece30d8)
[INFO] [stdout] 
[INFO] [stdout] running 198 tests
[INFO] [stdout] test ai::evaluator::tests::test_clean_json_response_markdown ... ok
[INFO] [stdout] test ai::evaluator::tests::test_clean_json_response_with_text ... ok
[INFO] [stdout] test ai::evaluator::tests::test_clean_json_response_simple ... ok
[INFO] [stdout] test ai::evaluator::tests::test_parse_invalid_score ... ok
[INFO] [stdout] test ai::evaluator::tests::test_parse_session_assessment_with_markdown ... ok
[INFO] [stdout] test ai::evaluator::tests::test_parse_valid_feedback ... ok
[INFO] [stdout] test csv::tests::test_load_csv_filters_empty_fields ... ok
[INFO] [stdout] test csv::tests::test_load_csv_with_empty_lines ... ok
[INFO] [stdout] test csv::tests::test_parse_csv_empty_fields ... ok
[INFO] [stdout] test csv::tests::test_get_csv_files_reads_from_data_dir ... ok
[INFO] [stdout] test csv::tests::test_get_flashcards_dir_uses_data_dir ... ok
[INFO] [stdout] test csv::tests::test_parse_csv_complex_example ... ok
[INFO] [stdout] test csv::tests::test_parse_csv_line_with_newlines_in_quoted_field ... ok
[INFO] [stdout] test csv::tests::test_parse_csv_only_answer_quoted ... ok
[INFO] [stdout] test csv::tests::test_parse_csv_only_question_quoted ... ok
[INFO] [stdout] test csv::tests::test_parse_csv_real_world_example ... ok
[INFO] [stdout] test csv::tests::test_parse_csv_simple ... ok
[INFO] [stdout] test csv::tests::test_parse_csv_with_commas_in_answer ... ok
[INFO] [stdout] test csv::tests::test_parse_csv_with_commas_in_question ... ok
[INFO] [stdout] test csv::tests::test_parse_csv_with_escaped_quotes ... ok
[INFO] [stdout] test ai::evaluator::tests::test_parse_session_assessment ... ok
[INFO] [stdout] test csv::tests::test_parse_csv_with_quotes ... ok
[INFO] [stdout] test db::chat::tests::test_chat_role_roundtrip ... ok
[INFO] [stdout] test csv::tests::test_parse_csv_multiple_quotes ... ok
[INFO] [stdout] test db::chat::tests::test_load_empty_chat ... ok
[INFO] [stdout] test db::chat::tests::test_message_ordering ... ok
[INFO] [stdout] test db::chat::tests::test_save_and_load_chat_messages ... ok
[INFO] [stdout] test db::flashcard::tests::test_update_ai_feedback_invalid_id ... ok
[INFO] [stdout] test db::session::tests::test_create_and_get_session ... ok
[INFO] [stdout] test db::session::tests::test_get_nonexistent_assessment ... ok
[INFO] [stdout] test db::flashcard::tests::test_save_answer_with_ai_feedback ... ok
[INFO] [stdout] test db::flashcard::tests::test_update_ai_feedback ... ok
[INFO] [stdout] test db::session::tests::test_get_nonexistent_session ... ok
[INFO] [stdout] test db::session::tests::test_complete_session ... ok
[INFO] [stdout] test db::flashcard::tests::test_initialize_and_save_answer ... ok
[INFO] [stdout] test db::session::tests::test_get_session_comparison ... ok
[INFO] [stdout] test db::session::tests::test_delete_session_removes_assessment ... ok
[INFO] [stdout] test db::flashcard::tests::test_get_answer_count ... ok
[INFO] [stdout] test file_io::tests::test_answer_restoration_on_navigation ... ok
[INFO] [stdout] test file_io::tests::test_answer_submission_empty ... ok
[INFO] [stdout] test file_io::tests::test_answer_submission_non_empty ... ok
[INFO] [stdout] test db::flashcard::tests::test_save_answer_out_of_order ... ok
[INFO] [stdout] test file_io::tests::test_input_buffer_backspace ... ok
[INFO] [stdout] test file_io::tests::test_input_buffer_character_addition ... ok
[INFO] [stdout] test file_io::tests::test_input_buffer_operations ... ok
[INFO] [stdout] test file_io::tests::test_no_answer_restoration_when_none ... ok
[INFO] [stdout] test file_io::tests::test_saturating_sub_index_bounds ... ok
[INFO] [stdout] test logger::tests::test_logger_init ... ok
[INFO] [stdout] test logger::tests::test_logger_log ... ok
[INFO] [stdout] test models::tests::test_calculate_stats_partial ... ok
[INFO] [stdout] test models::tests::test_calculate_stats_perfect ... ok
[INFO] [stdout] test models::tests::test_calculate_stats_unanswered ... ok
[INFO] [stdout] test models::tests::test_calculate_stats_zero_questions ... ok
[INFO] [stdout] test session::tests::test_ai_commands_only_work_when_enabled ... ok
[INFO] [stdout] test session::tests::test_answer_restoration_on_navigation ... ok
[INFO] [stdout] test session::tests::test_answer_submission_empty ... ok
[INFO] [stdout] test session::tests::test_answer_submission_non_empty ... ok
[INFO] [stdout] test session::tests::test_backspace_deletes_at_cursor_position ... ok
[INFO] [stdout] test session::tests::test_can_type_r_and_c_in_answers ... ok
[INFO] [stdout] test session::tests::test_chat_backspace ... ok
[INFO] [stdout] test db::flashcard::tests::test_complete_ai_feedback_cycle ... ok
[INFO] [stdout] test file_io::tests::test_empty_answer_submission ... ok
[INFO] [stdout] test session::tests::test_chat_close_on_ctrl_t ... ok
[INFO] [stdout] test session::tests::test_chat_backspace_at_position_zero ... ok
[INFO] [stdout] test session::tests::test_chat_close_on_esc ... ok
[INFO] [stdout] test session::tests::test_chat_enter_does_nothing_when_loading ... ok
[INFO] [stdout] test session::tests::test_chat_handle_input_when_no_chat_open ... ok
[INFO] [stdout] test session::tests::test_chat_insert_at_cursor_position ... ok
[INFO] [stdout] test session::tests::test_chat_cursor_movement ... ok
[INFO] [stdout] test session::tests::test_chat_read_only_allows_scroll ... ok
[INFO] [stdout] test session::tests::test_chat_read_only_blocks_typing ... ok
[INFO] [stdout] test session::tests::test_chat_read_only_esc_closes ... ok
[INFO] [stdout] test session::tests::test_chat_scroll ... ok
[INFO] [stdout] test session::tests::test_chat_typing ... ok
[INFO] [stdout] test session::tests::test_chat_typing_blocked_when_loading ... ok
[INFO] [stdout] test session::tests::test_close_chat ... ok
[INFO] [stdout] test session::tests::test_ctrl_e_x_without_ctrl_modifier_allows_typing ... ok
[INFO] [stdout] test session::tests::test_ctrl_t_does_nothing_in_input_mode ... ok
[INFO] [stdout] test session::tests::test_ctrl_e_triggers_ai_evaluation ... ok
[INFO] [stdout] test session::tests::test_ctrl_t_does_nothing_without_feedback ... ok
[INFO] [stdout] test session::tests::test_ctrl_t_does_nothing_when_ai_disabled ... ok
[INFO] [stdout] test session::tests::test_ctrl_x_cancels_ai_evaluation ... ok
[INFO] [stdout] test session::tests::test_ctrl_x_only_works_during_evaluation ... ok
[INFO] [stdout] test session::tests::test_cursor_edge_cases ... ok
[INFO] [stdout] test session::tests::test_cursor_left_right_movement ... ok
[INFO] [stdout] test session::tests::test_cursor_position_on_question_navigation ... ok
[INFO] [stdout] test session::tests::test_empty_answer_submission ... ok
[INFO] [stdout] test session::tests::test_enter_skips_empty_answer ... ok
[INFO] [stdout] test session::tests::test_input_buffer_backspace ... ok
[INFO] [stdout] test session::tests::test_input_buffer_backspace_basic ... ok
[INFO] [stdout] test session::tests::test_input_buffer_character_addition ... ok
[INFO] [stdout] test session::tests::test_input_buffer_operations ... ok
[INFO] [stdout] test session::tests::test_insert_character_at_cursor_position ... ok
[INFO] [stdout] test session::tests::test_multiline_answer_submission ... ok
[INFO] [stdout] test session::tests::test_navigation_shows_answer_screen_for_answered_questions ... ok
[INFO] [stdout] test session::tests::test_no_answer_restoration_when_none ... ok
[INFO] [stdout] test db::session::tests::test_get_last_session_status ... ok
[INFO] [stdout] test session::tests::test_process_chat_response_error ... ok
[INFO] [stdout] test session::tests::test_process_chat_response_no_chat_open ... ok
[INFO] [stdout] test db::session::tests::test_delete_session ... ok
[INFO] [stdout] test session::tests::test_process_chat_response_wrong_flashcard_id_ignored ... ok
[INFO] [stdout] test session::tests::test_saturating_sub_index_bounds ... ok
[INFO] [stdout] test session::tests::test_send_chat_message_empty_input_does_nothing ... ok
[INFO] [stdout] test session::tests::test_send_chat_message_read_only_does_nothing ... ok
[INFO] [stdout] test session::tests::test_send_chat_message_while_loading_does_nothing ... ok
[INFO] [stdout] test session::tests::test_shift_enter_in_middle_of_text ... ok
[INFO] [stdout] test session::tests::test_shift_enter_inserts_newline ... ok
[INFO] [stdout] test ui::chat_popup::tests::test_collapse_blank_lines_removes_duplicates ... ok
[INFO] [stdout] test ui::chat_popup::tests::test_push_blank_line_if_needed ... ok
[INFO] [stdout] test db::session::tests::test_get_session_detail ... ok
[INFO] [stdout] test ui::layout::tests::test_quiz_layout ... ok
[INFO] [stdout] test ui_tests::ui_integration_tests::test_ai_response_processing_triggers_ui_update ... ok
[INFO] [stdout] test ui_tests::ui_integration_tests::test_async_ai_channel_integration ... ok
[INFO] [stdout] test ui_tests::ui_integration_tests::test_input_validation_state_tracking ... ok
[INFO] [stdout] test ui_tests::ui_integration_tests::test_menu_delete_confirm_state_transition ... ok
[INFO] [stdout] test ui::layout::tests::test_summary_layout ... ok
[INFO] [stdout] test ui_tests::ui_integration_tests::test_menu_navigation_boundary_wrapping ... ok
[INFO] [stdout] test ui_tests::ui_integration_tests::test_menu_navigation_triggers_ui_update ... ok
[INFO] [stdout] test ui_tests::ui_integration_tests::test_rapid_state_changes_detected ... ok
[INFO] [stdout] test ui_tests::ui_integration_tests::test_ui_state_tracking_comprehensive ... ok
[INFO] [stdout] test utils::markdown::tests::test_bold_in_list ... ok
[INFO] [stdout] test utils::markdown::tests::test_code_rendering ... ok
[INFO] [stdout] test db::session::tests::test_deck_status_last_scores_limit ... ok
[INFO] [stdout] test utils::markdown::tests::test_heading ... ok
[INFO] [stdout] test utils::markdown::tests::test_italic_rendering ... ok
[INFO] [stdout] test utils::markdown::tests::test_markdown_styling_actually_preserved ... ok
[INFO] [stdout] test utils::markdown::tests::test_mixed_inline ... ok
[INFO] [stdout] test utils::markdown::tests::test_parse_table_row ... ok
[INFO] [stdout] test utils::markdown::tests::test_numbered_list ... ok
[INFO] [stdout] test utils::markdown::tests::test_render_markdown_multiline ... ok
[INFO] [stdout] test db::session::tests::test_list_sessions ... ok
[INFO] [stdout] test utils::markdown::tests::test_table_detection ... ok
[INFO] [stdout] test utils::markdown::tests::test_render_markdown_plain_text ... ok
[INFO] [stdout] test utils::markdown::tests::test_render_markdown_with_table ... ok
[INFO] [stdout] test db::tests::test_init_db_creates_directory ... ok
[INFO] [stdout] test utils::scroll_tests::test_calculate_content_height ... ok
[INFO] [stdout] test utils::scroll_tests::test_calculate_max_scroll ... ok
[INFO] [stdout] test utils::scroll_tests::test_render_text_to_string ... ok
[INFO] [stdout] test utils::tests::test_byte_to_char_ascii ... ok
[INFO] [stdout] test utils::tests::test_byte_to_char_mixed ... ok
[INFO] [stdout] test utils::tests::test_byte_to_char_multibyte ... ok
[INFO] [stdout] test utils::tests::test_cursor_at_end_of_first_word ... ok
[INFO] [stdout] test utils::tests::test_cursor_at_end_of_text ... ok
[INFO] [stdout] test utils::scroll_tests::test_apply_scroll_with_bounds ... ok
[INFO] [stdout] test utils::tests::test_cursor_at_space_between_words ... ok
[INFO] [stdout] test utils::tests::test_cursor_at_start ... ok
[INFO] [stdout] test utils::tests::test_cursor_at_start_of_second_word ... ok
[INFO] [stdout] test utils::tests::test_cursor_empty_text ... ok
[INFO] [stdout] test utils::tests::test_cursor_in_first_word ... ok
[INFO] [stdout] test utils::tests::test_cursor_in_long_word_break ... ok
[INFO] [stdout] test utils::tests::test_cursor_in_multiple_spaces_between_words ... ok
[INFO] [stdout] test utils::tests::test_cursor_in_second_line_after_newline ... ok
[INFO] [stdout] test utils::tests::test_cursor_leading_spaces ... ok
[INFO] [stdout] test utils::tests::test_cursor_multiple_spaces_no_wrapping ... ok
[INFO] [stdout] test utils::tests::test_cursor_multiple_spaces_with_wrapping ... ok
[INFO] [stdout] test utils::markdown::tests::test_empty_lines ... ok
[INFO] [stdout] test db::tests::test_complete_session ... ok
[INFO] [stdout] test utils::tests::test_cursor_only_spaces ... ok
[INFO] [stdout] test utils::tests::test_cursor_single_trailing_space ... ok
[INFO] [stdout] test utils::tests::test_cursor_trailing_spaces ... ok
[INFO] [stdout] test utils::tests::test_cursor_with_multibyte_chars ... ok
[INFO] [stdout] test db::session::tests::test_update_last_viewed_index ... ok
[INFO] [stdout] test utils::markdown::tests::test_table_mixed_with_text ... ok
[INFO] [stdout] test utils::tests::test_cursor_with_newline ... ok
[INFO] [stdout] test utils::tests::test_cursor_beyond_text ... ok
[INFO] [stdout] test utils::tests::test_cursor_with_no_wrap_needed ... ok
[INFO] [stdout] test utils::tests::test_exact_fit ... ok
[INFO] [stdout] test utils::tests::test_index_tracking_simple ... ok
[INFO] [stdout] test utils::tests::test_explicit_newline ... ok
[INFO] [stdout] test utils::tests::test_index_tracking_with_leading_spaces ... ok
[INFO] [stdout] test utils::tests::test_empty_input ... ok
[INFO] [stdout] test utils::tests::test_long_word_character_break ... ok
[INFO] [stdout] test utils::tests::test_leading_whitespace_trimmed ... ok
[INFO] [stdout] test db::session::tests::test_save_and_get_session_assessment ... ok
[INFO] [stdout] test utils::markdown::tests::test_unordered_list ... ok
[INFO] [stdout] test utils::tests::test_long_word_with_other_words ... ok
[INFO] [stdout] test utils::tests::test_multibyte_utf8_characters ... ok
[INFO] [stdout] test utils::tests::test_multiple_spaces_between_words ... ok
[INFO] [stdout] test utils::tests::test_multiple_words_wrap ... ok
[INFO] [stdout] test utils::tests::test_multiple_spaces_preserved_in_line_text ... ok
[INFO] [stdout] test utils::tests::test_trailing_whitespace_trimmed ... ok
[INFO] [stdout] test utils::tests::test_newline_with_wrapping ... ok
[INFO] [stdout] test utils::tests::test_two_words_fit_on_one_line ... ok
[INFO] [stdout] test utils::tests::test_single_word_fits ... ok
[INFO] [stdout] test utils::tests::test_word_boundary_preservation ... ok
[INFO] [stdout] test utils::tests::test_multiple_newlines ... ok
[INFO] [stdout] test utils::tests::test_wrapping_with_spaces_before_boundary ... ok
[INFO] [stdout] test utils::tests::test_zero_width ... ok
[INFO] [stdout] test utils::tests::test_wrapping_decision_with_multiple_spaces ... ok
[INFO] [stdout] test utils::tests::test_two_words_wrap_to_two_lines ... ok
[INFO] [stdout] test db::tests::test_update_progress ... ok
[INFO] [stdout] test db::session::tests::test_update_progress ... ok
[INFO] [stdout] test db::tests::test_create_session ... ok
[INFO] [stdout] test db::session::tests::test_soft_delete_session ... ok
[INFO] [stdout] test session::tests::test_process_ai_response_chat_reply ... ok
[INFO] [stdout] test session::tests::test_process_chat_response_success ... ok
[INFO] [stdout] test session::tests::test_ctrl_t_opens_chat_when_feedback_present ... ok
[INFO] [stdout] test session::tests::test_chat_enter_sends_message ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 198 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/interactive_flashcards-9d4c6b66f654d974)
[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] [stderr]    Doc-tests interactive_flashcards
[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" "0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c", kill_on_drop: false }`
[INFO] [stdout] 0b38a7d36a6bb61aed3f1a53238cc498d97bf1d9768d04258a1eed025b2d494c
