[INFO] cloning repository https://github.com/abdulwahed-sweden/rustio
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/abdulwahed-sweden/rustio" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabdulwahed-sweden%2Frustio", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabdulwahed-sweden%2Frustio'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f338a6096adcf4d15eb7d50555e693e1dbb824bf
[INFO] testing abdulwahed-sweden/rustio against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabdulwahed-sweden%2Frustio" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/abdulwahed-sweden/rustio
[INFO] finished tweaking git repo https://github.com/abdulwahed-sweden/rustio
[INFO] tweaked toml for git repo https://github.com/abdulwahed-sweden/rustio written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/abdulwahed-sweden/rustio on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/abdulwahed-sweden/rustio 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.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/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] b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50
[INFO] running `Command { std: "docker" "start" "b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50", 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" "b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50", 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" "b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling crc-catalog v2.4.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling base64ct v1.8.3
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling blake2 v0.10.6
[INFO] [stderr]    Compiling memo-map v0.3.3
[INFO] [stderr]    Compiling rustio-core v2.0.5 (/opt/rustwide/workdir/rustio-core)
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling fuzzy-matcher v0.3.7
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr] warning: rustio-core@2.0.5: admin.css served unprocessed: no tailwindcss binary or npx found in PATH; install via `brew install tailwindcss` (single binary) or `npm i -g @tailwindcss/cli`, or set RUSTIO_SKIP_TAILWIND=1
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling newline-converter v0.3.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling password-hash v0.5.0
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling crossterm v0.25.0
[INFO] [stderr]    Compiling argon2 v0.5.3
[INFO] [stderr]    Compiling inquire v0.7.5
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling rustio-macros v2.0.5 (/opt/rustwide/workdir/rustio-macros)
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling minijinja v2.19.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling sqlx-sqlite v0.8.6
[INFO] [stderr]    Compiling sqlx v0.8.6
[INFO] [stderr]    Compiling rustio-cli v2.0.5 (/opt/rustwide/workdir/rustio-cli)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 13s
[INFO] running `Command { std: "docker" "inspect" "b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50", 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" "b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustio-macros v2.0.5 (/opt/rustwide/workdir/rustio-macros)
[INFO] [stderr] warning: rustio-core@2.0.5: admin.css served unprocessed: no tailwindcss binary or npx found in PATH; install via `brew install tailwindcss` (single binary) or `npm i -g @tailwindcss/cli`, or set RUSTIO_SKIP_TAILWIND=1
[INFO] [stderr]    Compiling rustio-core v2.0.5 (/opt/rustwide/workdir/rustio-core)
[INFO] [stderr]    Compiling rustio-cli v2.0.5 (/opt/rustwide/workdir/rustio-cli)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 32.26s
[INFO] running `Command { std: "docker" "inspect" "b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50", 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" "b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: rustio-core@2.0.5: admin.css served unprocessed: no tailwindcss binary or npx found in PATH; install via `brew install tailwindcss` (single binary) or `npm i -g @tailwindcss/cli`, or set RUSTIO_SKIP_TAILWIND=1
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.32s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rustio-04173a6ea23481ef)
[INFO] [stdout] 
[INFO] [stdout] running 60 tests
[INFO] [stdout] test tests::capitalize_handles_simple ... ok
[INFO] [stdout] test tests::parse_doctor_command ... ok
[INFO] [stdout] test tests::parse_help_flag ... ok
[INFO] [stdout] test tests::ai_apply_force_defaults_to_false ... ok
[INFO] [stdout] test tests::parse_explain_requires_topic ... ok
[INFO] [stdout] test tests::ai_apply_parses_force_flag ... ok
[INFO] [stdout] test tests::parse_init_app_flag ... ok
[INFO] [stdout] test tests::parse_init_db_flag_is_accepted_but_ignored ... ok
[INFO] [stdout] test tests::parse_init_app_flag_without_preset ... ok
[INFO] [stdout] test tests::parse_init_app_flag_requires_value ... ok
[INFO] [stdout] test tests::parse_init_preset_before_name ... ok
[INFO] [stdout] test tests::no_saved_file_uses_derived_default ... ok
[INFO] [stdout] test tests::parse_init_with_name_and_preset ... ok
[INFO] [stdout] test tests::parse_init_rejects_stray_flags ... ok
[INFO] [stdout] test tests::parse_migrate_apply ... ok
[INFO] [stdout] test tests::parse_migrate_apply_rejects_unknown_flag ... ok
[INFO] [stdout] test tests::parse_migrate_apply_verbose ... ok
[INFO] [stdout] test tests::parse_migrate_status ... ok
[INFO] [stdout] test tests::parse_migrate_generate_requires_name ... ok
[INFO] [stdout] test tests::parse_new_app ... ok
[INFO] [stdout] test tests::parse_migrate_status_rejects_extra ... ok
[INFO] [stdout] test tests::parse_new_project ... ok
[INFO] [stdout] test tests::parse_migrate_generate ... ok
[INFO] [stdout] test tests::parse_new_unknown_kind ... ok
[INFO] [stdout] test tests::parse_migrate_unknown_subcommand ... ok
[INFO] [stdout] test tests::parse_unknown_command ... ok
[INFO] [stdout] test tests::parse_run ... ok
[INFO] [stdout] test tests::render_leaves_unknown_vars_alone ... ok
[INFO] [stdout] test tests::render_terminal_is_deterministic ... ok
[INFO] [stdout] test tests::singular_capitalize_leaves_singular_alone ... ok
[INFO] [stdout] test tests::singular_capitalize_keeps_single_s_name_intact ... ok
[INFO] [stdout] test tests::render_includes_title_value_and_omits_hidden ... ok
[INFO] [stdout] test tests::pluralize_leaves_trailing_s_alone ... ok
[INFO] [stdout] test tests::to_snake_case_handles_camel ... ok
[INFO] [stdout] test tests::save_writes_then_refuses_overwrite ... ok
[INFO] [stdout] test tests::pluralize_appends_s_when_missing ... ok
[INFO] [stdout] test tests::render_substitutes_vars ... ok
[INFO] [stdout] test tests::parse_init_without_args_triggers_wizard ... ok
[INFO] [stdout] test tests::parse_no_args_is_default_action ... ok
[INFO] [stdout] test tests::strip_why_flag_pulls_it_anywhere ... ok
[INFO] [stdout] test tests::parse_init_unknown_preset_errors ... ok
[INFO] [stdout] test tests::validate_name_rejects_bad_chars ... ok
[INFO] [stdout] test tests::singular_capitalize_strips_trailing_s ... ok
[INFO] [stdout] test tests::parse_init_with_name_is_non_interactive ... ok
[INFO] [stdout] test tests::validate_name_rejects_bad_start ... ok
[INFO] [stdout] test wizard::tests::plan_apps_uses_override_when_present ... ok
[INFO] [stdout] test wizard::tests::preset_from_str_accepts_known_names ... ok
[INFO] [stdout] test wizard::tests::preset_from_str_is_case_insensitive ... ok
[INFO] [stdout] test wizard::tests::preset_from_str_rejects_unknown ... ok
[INFO] [stdout] test wizard::tests::plan_apps_basic_is_empty_even_with_app_override ... ok
[INFO] [stdout] test wizard::tests::preset_labels_are_unique ... ok
[INFO] [stdout] test wizard::tests::plan_apps_falls_back_to_preset_default ... ok
[INFO] [stdout] test tests::parse_new_requires_kind_and_name ... ok
[INFO] [stdout] test wizard::tests::preset_apps_match_labels ... ok
[INFO] [stdout] test tests::ai_apply_force_composes_with_yes_and_dry_run ... ok
[INFO] [stdout] test tests::parse_run_rejects_extra ... ok
[INFO] [stdout] test tests::parse_version_flag ... ok
[INFO] [stdout] test tests::parse_view_command ... ok
[INFO] [stdout] test tests::validate_name_accepts_valid ... ok
[INFO] [stdout] test tests::validate_name_error_suggests_valid_form ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 60 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rustio_core-587d124c7d675f21)
[INFO] [stdout] 
[INFO] [stdout] running 621 tests
[INFO] [stdout] test admin::admin_intelligence_tests::booleans_are_booleans ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::balance_under_banking_is_money ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::classify_search_for_field_emits_relation_id_for_numeric ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::classify_search_for_field_without_target_falls_back ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::datetime_is_timestamp_regardless_of_context ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::email_detection_rejects_obvious_non_emails ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::datetime_ui_documents_utc ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::email_is_email_under_gdpr_context ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::email_ui_is_sensitive_only_under_gdpr ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::email_query_classifies_as_email ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::field_ui_metadata_with_relation_escalates_non_id_column_names ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::field_ui_metadata_without_relation_target_has_no_label ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::filters_include_status_bool_and_datetime ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::filters_preserve_field_order ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::field_ui_metadata_with_relation_carries_label_and_hint ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::money_ui_documents_minor_units ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::foreign_key_columns_end_in_underscore_id ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::negative_numbers_are_not_id_searches ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::foreign_key_filter_is_numeric_exact ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::id_is_classified_without_context ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::mask_pii_clamps_prefix_to_reasonable_bounds ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::infer_filters_with_relations_emits_relation_select ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::mask_pii_handles_empty_and_unicode ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::mask_pii_keeps_first_chars_and_replaces_the_rest ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::infer_filters_without_relation_lookup_keeps_numeric_exact ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::patient_id_under_healthcare_is_opaque_identifier ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::patient_id_ui_carries_opaque_hint_and_sensitivity ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::personnummer_is_classified_under_se ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::personnummer_filter_is_exact_match_under_se ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::personnummer_is_not_classified_without_country_context ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::whitespace_and_empty_become_empty_text ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::personnummer_ui_carries_placeholder_and_sensitivity ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::plain_text_is_the_default ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::status_string_is_classified_as_status ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::personnummer_query_classifies_correctly ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::sensitive_roles_flag_themselves ... ok
[INFO] [stdout] test admin::design::tests::default_palette_is_blue_as_of_0_10_1 ... ok
[INFO] [stdout] test admin::design::tests::default_values_are_reasonable ... ok
[INFO] [stdout] test admin::design::tests::density_serializes_as_snake_case ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::text_query_is_the_fallback ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::numeric_query_classifies_as_id ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::plain_field_has_no_extra_annotations ... ok
[INFO] [stdout] test admin::entry_builder::tests::build_admin_entries_mirrors_the_schema ... ok
[INFO] [stdout] test admin::design::tests::parse_accepts_partial_config ... ok
[INFO] [stdout] test admin::design::tests::parse_rejects_unknown_fields ... ok
[INFO] [stdout] test admin::entry_builder::tests::entry_from_admin_round_trips_compile_time_shape ... ok
[INFO] [stdout] test admin::entry_builder::tests::field_type_fallback_is_string_for_unknown ... ok
[INFO] [stdout] test admin::layout::tests::account_role_display_and_initials ... ok
[INFO] [stdout] test admin::layout::tests::build_edited_spec_changes_roles_preserves_everything_else ... ok
[INFO] [stdout] test admin::layout::tests::build_edited_spec_rejects_unknown_role ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::classify_search_for_field_rejects_non_integer ... ok
[INFO] [stdout] test admin::layout::tests::classify_filters_honors_view_filters_and_skips_empty ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::format_relation_cell_falls_back_when_target_unknown ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::format_relation_cell_renders_target_and_id ... ok
[INFO] [stdout] test admin::admin_intelligence_tests::mask_pii_is_deterministic ... ok
[INFO] [stdout] test admin::layout::tests::clearing_label_removes_entry_not_empty_string ... ok
[INFO] [stdout] test admin::layout::tests::editing_one_language_does_not_clobber_another ... ok
[INFO] [stdout] test admin::layout::tests::admin_guard_rejects_non_admin_and_unauthenticated ... ok
[INFO] [stdout] test admin::audit::tests::record_rejects_missing_model ... ok
[INFO] [stdout] test admin::audit::tests::record_rejects_missing_user_id ... ok
[INFO] [stdout] test admin::audit::tests::record_rejects_missing_object_id ... ok
[INFO] [stdout] test admin::layout::tests::en_labels_override_humanised_header ... ok
[INFO] [stdout] test admin::layout::tests::filter_edit_preserves_merge_and_spec_metadata ... ok
[INFO] [stdout] test admin::layout::tests::filter_composes_with_role_and_order_in_one_save ... ok
[INFO] [stdout] test admin::layout::tests::cards_layout_includes_meta_and_card_markup_live ... ok
[INFO] [stdout] test admin::layout::tests::filter_toggle_on_persists_and_off_removes ... ok
[INFO] [stdout] test admin::layout::tests::edited_label_renders_as_header_through_l2 ... ok
[INFO] [stdout] test admin::layout::tests::compact_layout_shows_only_title_and_badge_live ... ok
[INFO] [stdout] test admin::layout::tests::editor_discovers_status_values_and_inputs ... ok
[INFO] [stdout] test admin::layout::tests::filters_derived_in_display_order ... ok
[INFO] [stdout] test admin::layout::tests::editor_prefills_inputs_for_editing_language_only ... ok
[INFO] [stdout] test admin::layout::tests::headers_use_default_language_labels_sv ... ok
[INFO] [stdout] test admin::layout::tests::filter_option_uses_value_label_display ... ok
[INFO] [stdout] test admin::layout::tests::hidden_field_cannot_be_filter_server_enforced ... ok
[INFO] [stdout] test admin::layout::tests::humanize_field_label_cases ... ok
[INFO] [stdout] test admin::layout::tests::humanize_status_label_handles_edges ... ok
[INFO] [stdout] test admin::layout::tests::label_edit_preserves_roles_order_filters_merge ... ok
[INFO] [stdout] test admin::layout::tests::label_edit_composes_with_role_order_filter_merge ... ok
[INFO] [stdout] test admin::layout::tests::label_for_unknown_source_is_ignored ... ok
[INFO] [stdout] test admin::layout::tests::label_edit_persists_under_editing_language ... ok
[INFO] [stdout] test admin::layout::tests::editor_discovers_low_cardinality_non_status_string_field ... ok
[INFO] [stdout] test admin::layout::tests::label_less_headers_are_byte_identical_to_today ... ok
[INFO] [stdout] test admin::layout::tests::label_on_hidden_field_is_stored_harmlessly ... ok
[INFO] [stdout] test admin::layout::tests::label_preserved_when_only_role_changes ... ok
[INFO] [stdout] test admin::layout::tests::label_switch_without_set_as_default_keeps_stored_default ... ok
[INFO] [stdout] test admin::layout::tests::hidden_field_dropped_from_merge_value_absent ... ok
[INFO] [stdout] test admin::layout::tests::language_registry_has_endonyms_and_validates_codes ... ok
[INFO] [stdout] test admin::layout::tests::legacy_dashboard_walk_falls_back_to_zero_when_table_missing ... ok
[INFO] [stdout] test admin::layout::tests::legacy_dashboard_walk_skips_core_entries ... ok
[INFO] [stdout] test admin::layout::tests::legacy_dashboard_walk_dedupes_against_already_listed_slugs ... ok
[INFO] [stdout] test admin::layout::tests::filter_save_round_trips_and_keeps_hidden_guarantee ... ok
[INFO] [stdout] test admin::layout::tests::layout_toggle_links_preserve_filter_live ... ok
[INFO] [stdout] test admin::layout::tests::legacy_dashboard_walk_returns_one_entry_per_non_core_model ... ok
[INFO] [stdout] test admin::layout::tests::fk_label_preserved_in_cards_layout_live ... ok
[INFO] [stdout] test admin::layout::tests::list_layout_drops_meta_live ... ok
[INFO] [stdout] test admin::layout::tests::editor_value_label_prefill_is_strict_for_editing_language ... ok
[INFO] [stdout] test admin::layout::tests::list_render_hides_id_and_secret_columns_live ... ok
[INFO] [stdout] test admin::layout::tests::list_render_preserves_fk_label_live ... ok
[INFO] [stdout] test admin::layout::tests::hidden_secret_absent_in_all_four_layouts_live ... ok
[INFO] [stdout] test admin::layout::tests::merge_away_prunes_orphaned_label ... ok
[INFO] [stdout] test admin::layout::tests::merge_preserves_layout_version_model ... ok
[INFO] [stdout] test admin::layout::tests::merge_groups_anchor_and_removes_member ... ok
[INFO] [stdout] test admin::layout::tests::merge_composes_with_role_order_filter_in_one_save ... ok
[INFO] [stdout] test admin::layout::tests::load_saved_view_reads_valid_skips_missing_and_invalid ... ok
[INFO] [stdout] test admin::layout::tests::no_sentinel_preserves_filters_and_filterable ... ok
[INFO] [stdout] test admin::layout::tests::merge_chain_or_mutual_forms_no_group ... ok
[INFO] [stdout] test admin::layout::tests::non_default_language_label_falls_back_to_humanised ... ok
[INFO] [stdout] test admin::layout::tests::one_member_merge_rejected_by_validate_no_write ... ok
[INFO] [stdout] test admin::layout::tests::parse_layout_strict_rejects_unknown ... ok
[INFO] [stdout] test admin::layout::tests::parse_role_strict_round_trips_all_six ... ok
[INFO] [stdout] test admin::layout::tests::normalize_status_pill_humanizes_string_statuses ... ok
[INFO] [stdout] test admin::layout::tests::normalize_status_pill_maps_boolean_encodings ... ok
[INFO] [stdout] test admin::layout::tests::merged_column_header_uses_anchor_label ... ok
[INFO] [stdout] test admin::layout::tests::list_renders_filter_control_for_view_filter ... ok
[INFO] [stdout] test admin::layout::tests::editor_prefill_is_strict_no_default_language_fallback ... ok
[INFO] [stdout] test admin::layout::tests::list_render_translates_headers_data_unchanged ... ok
[INFO] [stdout] test admin::layout::tests::reorder_preserves_field_set_even_with_garbage_indices ... ok
[INFO] [stdout] test admin::layout::tests::reorder_composes_with_role_change_in_one_save ... ok
[INFO] [stdout] test admin::layout::tests::reorder_preserves_merge_filterable_and_spec_metadata ... ok
[INFO] [stdout] test admin::layout::tests::reorder_sequences_fields_by_submitted_index ... ok
[INFO] [stdout] test admin::layout::tests::reorder_with_no_order_keys_is_identity ... ok
[INFO] [stdout] test admin::layout::tests::reorder_with_original_indices_is_identity ... ok
[INFO] [stdout] test admin::layout::tests::resolve_effective_layout_precedence ... ok
[INFO] [stdout] test admin::layout::tests::require_csrf_rejects_missing_or_wrong_token ... ok
[INFO] [stdout] test admin::layout::tests::sanitize_return_rejects_malicious_targets ... ok
[INFO] [stdout] test admin::layout::tests::non_status_enum_label_persists_and_renders ... ok
[INFO] [stdout] test admin::layout::tests::merge_renders_one_joined_cell_in_list ... ok
[INFO] [stdout] test admin::layout::tests::save_layout_default_creates_file_when_none_exists ... ok
[INFO] [stdout] test admin::layout::tests::save_view_spec_preserves_an_existing_file_on_invalid_write ... ok
[INFO] [stdout] test admin::layout::tests::save_layout_default_changes_only_layout_on_existing_view ... ok
[INFO] [stdout] test admin::layout::tests::save_view_spec_rejects_inconsistent_filters_no_write ... ok
[INFO] [stdout] test admin::layout::tests::save_view_spec_rejects_invalid_and_writes_nothing ... ok
[INFO] [stdout] test admin::layout::tests::reorder_takes_effect_in_list_render ... ok
[INFO] [stdout] test admin::layout::tests::set_as_default_changes_stored_default_language ... ok
[INFO] [stdout] test admin::layout::tests::status_field_name_matches_known_patterns ... ok
[INFO] [stdout] test admin::layout::tests::status_field_name_rejects_non_status_columns ... ok
[INFO] [stdout] test admin::layout::tests::status_value_label_translates_text_keeps_color ... ok
[INFO] [stdout] test admin::layout::tests::unlabelled_value_renders_as_before ... ok
[INFO] [stdout] test admin::layout::tests::unmerge_restores_member_as_standalone_with_role ... ok
[INFO] [stdout] test admin::layout::tests::plain_value_label_translates_cell_text ... ok
[INFO] [stdout] test admin::layout::tests::role_edit_takes_effect_in_list_render ... ok
[INFO] [stdout] test admin::layout::tests::table_layout_unchanged_no_regression_live ... ok
[INFO] [stdout] test admin::layout::tests::value_label_composes_with_field_label_in_one_save ... ok
[INFO] [stdout] test admin::layout::tests::value_label_edit_no_cross_language_clobber ... ok
[INFO] [stdout] test admin::layout::tests::value_label_edit_persists_and_clears ... ok
[INFO] [stdout] test admin::layout::tests::value_label_preserved_on_non_value_save ... ok
[INFO] [stdout] test admin::layout::tests::value_label_pruned_when_field_merged_away ... ok
[INFO] [stdout] test admin::layout::tests::view_columns_headers_are_deterministic ... ok
[INFO] [stdout] test admin::layout::tests::view_columns_omits_hidden_in_schema_order ... ok
[INFO] [stdout] test admin::layout::tests::view_filter_applies_and_excludes_on_live_list ... ok
[INFO] [stdout] test admin::rbac::tests::admin_cannot_write_system_tables ... ok
[INFO] [stdout] test admin::rbac::tests::canonical_strings_round_trip ... ok
[INFO] [stdout] test admin::rbac::tests::display_name_is_humanised ... ok
[INFO] [stdout] test admin::rbac::tests::editor_cannot_delete_anywhere ... ok
[INFO] [stdout] test admin::rbac::tests::is_system_table_matches_prefix ... ok
[INFO] [stdout] test admin::rbac::tests::legacy_admin_resolves_to_super_admin ... ok
[INFO] [stdout] test admin::rbac::tests::legacy_user_and_unknown_resolve_to_none ... ok
[INFO] [stdout] test admin::rbac::tests::permission_set_allows_matches_field ... ok
[INFO] [stdout] test admin::rbac::tests::super_admin_can_do_everything_everywhere ... ok
[INFO] [stdout] test admin::rbac::tests::viewer_only_views ... ok
[INFO] [stdout] test admin::relations_tests::belongs_to_of_lists_every_fk_on_a_model ... ok
[INFO] [stdout] test admin::relations_tests::dangling_target_is_skipped_at_build_and_reported_by_validate ... ok
[INFO] [stdout] test admin::relations_tests::empty_registry_is_safe_default ... ok
[INFO] [stdout] test admin::relations_tests::empty_schema_produces_empty_registry ... ok
[INFO] [stdout] test admin::relations_tests::iter_belongs_to_is_deterministic ... ok
[INFO] [stdout] test admin::relations_tests::registry_indexes_belongs_to_entries ... ok
[INFO] [stdout] test admin::relations_tests::registry_inverts_every_stored_belongs_to ... ok
[INFO] [stdout] test admin::relations_tests::relation_filter_dropdown_cap_is_500 ... ok
[INFO] [stdout] test admin::relations_tests::relation_metadata_round_trips_through_json ... ok
[INFO] [stdout] test admin::relations_tests::relation_without_display_field_round_trips ... ok
[INFO] [stdout] test admin::relations_tests::resolved_relation_carries_admin_slug_and_table ... ok
[INFO] [stdout] test admin::relations_tests::unknown_display_field_is_skipped_at_build_and_reported_by_validate ... ok
[INFO] [stdout] test admin::schema_cache::tests::format_loaded_at_produces_stable_shape ... ok
[INFO] [stdout] test admin::schema_cache::tests::snapshot_returns_same_value_when_not_refreshed ... ok
[INFO] [stdout] test admin::suggestions_tests::core_models_are_skipped ... ok
[INFO] [stdout] test admin::suggestions_tests::find_rejects_crafted_urls ... ok
[INFO] [stdout] test admin::suggestions_tests::find_relation_suggestion_rejects_unknown_pair ... ok
[INFO] [stdout] test admin::suggestions_tests::find_returns_the_existing_suggestion ... ok
[INFO] [stdout] test admin::suggestions_tests::fully_covered_model_gets_no_suggestions ... ok
[INFO] [stdout] test admin::suggestions_tests::missing_field_triggers_exactly_one_suggestion ... ok
[INFO] [stdout] test admin::suggestions_tests::no_context_produces_no_suggestions ... ok
[INFO] [stdout] test admin::suggestions_tests::no_industry_schema_produces_no_suggestions ... ok
[INFO] [stdout] test admin::suggestions_tests::ordering_is_deterministic ... ok
[INFO] [stdout] test admin::suggestions_tests::relation_suggestion_disappears_once_relation_is_recorded ... ok
[INFO] [stdout] test admin::suggestions_tests::relation_suggestion_fires_for_orphan_fk_with_matching_target ... ok
[INFO] [stdout] test admin::suggestions_tests::relation_suggestion_ignores_plain_id_column ... ok
[INFO] [stdout] test admin::suggestions_tests::relation_suggestion_is_deterministic ... ok
[INFO] [stdout] test admin::suggestions_tests::relation_suggestion_refuses_on_ambiguous_target ... ok
[INFO] [stdout] test admin::suggestions_tests::relation_suggestion_refuses_when_target_model_missing ... ok
[INFO] [stdout] test admin::suggestions_tests::relation_suggestion_skips_core_models ... ok
[INFO] [stdout] test admin::suggestions_tests::schema_driven_and_compile_time_derivations_agree_when_shapes_match ... ok
[INFO] [stdout] test admin::suggestions_tests::schema_driven_find_rejects_crafted_urls ... ok
[INFO] [stdout] test admin::suggestions_tests::schema_driven_skips_core_models ... ok
[INFO] [stdout] test admin::suggestions_tests::schema_driven_suggestion_disappears_when_field_present ... ok
[INFO] [stdout] test admin::suggestions_tests::schema_driven_suggestion_fires_for_missing_field ... ok
[INFO] [stdout] test admin::suggestions_tests::unrelated_model_gets_no_suggestions ... ok
[INFO] [stdout] test admin::layout::tests::saved_layout_is_used_by_list_render_without_param ... ok
[INFO] [stdout] test admin::suggestions_tests::url_path_uses_admin_name_and_field ... ok
[INFO] [stdout] test admin::templating::tests::bundled_assets_are_non_empty ... ok
[INFO] [stdout] test admin::templating::tests::admin_formatter_keeps_url_slashes_but_escapes_dangerous_chars ... ok
[INFO] [stdout] test admin::templating::tests::env_accessor_is_cached ... ok
[INFO] [stdout] test admin::templating::tests::dashboard_renders_with_minimum_context ... ok
[INFO] [stdout] test admin::templating::tests::html_escape_no_slash_escapes_markup_but_keeps_slash ... ok
[INFO] [stdout] test admin::templating::tests::safe_join_blocks_traversal ... ok
[INFO] [stdout] test admin::templating::tests::t_function_translates_from_active_language ... ok
[INFO] [stdout] test admin::tests::bool_field_never_marks_required ... ok
[INFO] [stdout] test admin::tests::datetime_field_renders_existing_value ... ok
[INFO] [stdout] test admin::tests::datetime_field_uses_datetime_local_input ... ok
[INFO] [stdout] test admin::tests::default_columns_doctor_yields_four_rule_matches ... ok
[INFO] [stdout] test admin::tests::default_columns_returns_fewer_than_five_when_rules_match_fewer ... ok
[INFO] [stdout] test admin::tests::default_list_columns_caps_at_five ... ok
[INFO] [stdout] test admin::tests::default_list_columns_rule_3_first_name_like_wins ... ok
[INFO] [stdout] test admin::tests::escape_css_color_accepts_hex_tokens ... ok
[INFO] [stdout] test admin::tests::escape_css_color_rejects_injection_attempts ... ok
[INFO] [stdout] test admin::tests::escape_html_escapes_dangerous_chars ... ok
[INFO] [stdout] test admin::tests::field_display_returning_none_renders_empty_value ... ok
[INFO] [stdout] test admin::tests::humanise_converts_snake_case_to_title_case ... ok
[INFO] [stdout] test admin::tests::non_nullable_string_field_marks_required ... ok
[INFO] [stdout] test admin::tests::nullable_field_with_none_value_does_not_panic ... ok
[INFO] [stdout] test admin::tests::nullable_string_field_omits_required_attribute ... ok
[INFO] [stdout] test admin::tests::parse_datetime_local_accepts_minute_precision ... ok
[INFO] [stdout] test admin::tests::parse_datetime_local_accepts_second_precision ... ok
[INFO] [stdout] test admin::tests::parse_datetime_local_enforces_utc_for_every_valid_input ... ok
[INFO] [stdout] test admin::tests::parse_datetime_local_rejects_empty_string ... ok
[INFO] [stdout] test admin::tests::parse_datetime_local_rejects_free_text ... ok
[INFO] [stdout] test admin::tests::parse_datetime_local_rejects_out_of_range_date ... ok
[INFO] [stdout] test admin::templating::tests::every_embedded_template_parses ... ok
[INFO] [stdout] test admin::tests::parse_datetime_local_rejects_partial_date ... ok
[INFO] [stdout] test admin::tests::parse_datetime_local_rejects_surrounding_whitespace ... ok
[INFO] [stdout] test admin::tests::parse_datetime_local_rejects_timezone_suffix ... ok
[INFO] [stdout] test admin::tests::primary_rule_1_id_always_primary ... ok
[INFO] [stdout] test admin::tests::primary_rule_4_fk_ending_in_id ... ok
[INFO] [stdout] test admin::tests::primary_rule_5_is_prefix_bool ... ok
[INFO] [stdout] test admin::tests::primary_rule_6_status_state_priority ... ok
[INFO] [stdout] test admin::tests::parse_datetime_local_rejects_out_of_range_time ... ok
[INFO] [stdout] test admin::tests::primary_rule_7_plain_fields_not_primary ... ok
[INFO] [stdout] test admin::tests::session_cookie_dev_has_no_secure_flag ... ok
[INFO] [stdout] test admin::tests::session_cookie_expiration_shape_is_stable ... ok
[INFO] [stdout] test admin::tests::session_cookie_production_has_secure_flag ... ok
[INFO] [stdout] test admin::uilang::tests::catalog_languages_includes_builtin_and_endonyms_resolve ... ok
[INFO] [stdout] test admin::uilang::tests::rtl_languages_are_flagged ... ok
[INFO] [stdout] test admin::uilang::tests::translates_known_strings_and_falls_back_to_english ... ok
[INFO] [stdout] test ai::context_tests::banking_account_number_becomes_string ... ok
[INFO] [stdout] test ai::context_tests::domain_key_from_old_format_is_rejected_after_0_6_0 ... ok
[INFO] [stdout] test ai::context_tests::executor_allows_non_pii_changes_under_se ... ok
[INFO] [stdout] test ai::context_tests::executor_refuses_to_remove_personnummer_under_se ... ok
[INFO] [stdout] test ai::context_tests::explicit_gdpr_entry_wins_even_for_non_eu_country ... ok
[INFO] [stdout] test ai::context_tests::healthcare_patient_id_becomes_string_not_integer ... ok
[INFO] [stdout] test admin::ui::tests::html_escape_handles_specials ... ok
[INFO] [stdout] test ai::context_tests::industry_registry_has_housing_healthcare_and_banking ... ok
[INFO] [stdout] test ai::context_tests::pii_fields_are_country_and_gdpr_aware ... ok
[INFO] [stdout] test ai::context_tests::none_context_reproduces_0_5_x_behaviour ... ok
[INFO] [stdout] test ai::context_tests::removing_personnummer_in_se_context_is_critical ... ok
[INFO] [stdout] test ai::context_tests::renaming_personnummer_in_se_context_is_critical ... ok
[INFO] [stdout] test ai::context_tests::same_prompt_produces_different_plan_with_se_context ... ok
[INFO] [stdout] test ai::context_tests::se_country_infers_eu_region_and_requires_gdpr ... ok
[INFO] [stdout] test ai::context_tests::unknown_key_in_context_json_fails_loudly ... ok
[INFO] [stdout] test ai::context_tests::us_country_does_not_infer_eu ... ok
[INFO] [stdout] test ai::executor_tests::add_field_numbering_picks_next_migration_number ... ok
[INFO] [stdout] test ai::executor_tests::add_nullable_datetime_adds_chrono_import_and_uses_optional_accessor ... ok
[INFO] [stdout] test ai::executor_tests::add_relation_cascade_emits_on_delete_cascade ... ok
[INFO] [stdout] test ai::executor_tests::add_relation_column_is_nullable_in_the_struct ... ok
[INFO] [stdout] test ai::executor_tests::add_relation_emits_references_and_pragma ... ok
[INFO] [stdout] test ai::executor_tests::add_relation_generates_fk_column_with_references_clause ... ok
[INFO] [stdout] test ai::context_tests::removing_industry_required_field_adds_warning ... ok
[INFO] [stdout] test ai::executor_tests::add_relation_idempotent_when_column_already_present ... ok
[INFO] [stdout] test ai::executor_tests::add_relation_required_is_refused_with_retrofit_hint ... ok
[INFO] [stdout] test ai::executor_tests::add_relation_set_null_emits_on_delete_set_null ... ok
[INFO] [stdout] test ai::executor_tests::critical_risk_blocks_execution ... ok
[INFO] [stdout] test ai::executor_tests::developer_only_primitive_is_refused ... ok
[INFO] [stdout] test ai::executor_tests::integration::execute_plan_document_writes_models_and_migration_atomically ... ok
[INFO] [stdout] test ai::executor_tests::integration::execute_refuses_if_models_file_already_has_the_field ... ok
[INFO] [stdout] test ai::executor_tests::integration::execute_refuses_if_target_migration_already_exists ... ok
[INFO] [stdout] test ai::executor_tests::integration::retrofit_is_a_noop_for_schemas_already_annotated ... ok
[INFO] [stdout] test ai::executor_tests::integration::retrofit_reports_every_unannotated_belongs_to ... ok
[INFO] [stdout] test ai::executor_tests::planning_same_document_twice_produces_identical_previews ... ok
[INFO] [stdout] test ai::executor_tests::remove_field_is_refused_as_destructive ... ok
[INFO] [stdout] test ai::executor_tests::remove_field_with_allow_destructive_drops_column_and_writes_migration ... ok
[INFO] [stdout] test ai::executor_tests::remove_model_still_refused_with_force ... ok
[INFO] [stdout] test ai::executor_tests::remove_primary_key_id_is_refused_even_with_force ... ok
[INFO] [stdout] test ai::executor_tests::remove_relation_primitive_is_refused_with_clear_reason ... ok
[INFO] [stdout] test ai::executor_tests::rename_field_patches_struct_columns_and_accessors ... ok
[INFO] [stdout] test ai::executor_tests::rename_refuses_when_source_field_missing_from_file ... ok
[INFO] [stdout] test ai::executor_tests::render_preview_human_reads_like_a_changelog ... ok
[INFO] [stdout] test ai::executor_tests::simple_add_field_produces_two_file_changes ... ok
[INFO] [stdout] test ai::executor_tests::stale_plan_is_refused_with_clear_reason ... ok
[INFO] [stdout] test ai::executor_tests::unsupported_primitives_fail_with_named_reasons ... ok
[INFO] [stdout] test ai::executor_tests::validation_failure_blocks_execution ... ok
[INFO] [stdout] test ai::executor_tests::applying_same_plan_twice_against_patched_source_fails_cleanly ... ok
[INFO] [stdout] test ai::executor_tests_advanced::change_type_i32_to_string_uses_cast_and_rewrites_models ... ok
[INFO] [stdout] test ai::executor_tests_advanced::change_type_refuses_on_foreign_key_tables ... ok
[INFO] [stdout] test ai::executor_tests_advanced::change_type_unsafe_cast_is_refused ... ok
[INFO] [stdout] test ai::executor_tests_advanced::field_spec_is_used_as_a_sentinel_for_unused_import ... ok
[INFO] [stdout] test ai::executor_tests_advanced::change_type_idempotent_same_type_is_refused ... ok
[INFO] [stdout] test ai::executor_tests_advanced::large_schema_simulation_holds_determinism ... ok
[INFO] [stdout] test ai::executor_tests_advanced::nullability_required_to_nullable_is_safe ... ok
[INFO] [stdout] test ai::executor_tests_advanced::nullability_nullable_to_required_uses_coalesce ... ok
[INFO] [stdout] test ai::executor_tests_advanced::nullability_same_state_is_refused ... ok
[INFO] [stdout] test ai::executor_tests_advanced::recreate_table_migration_is_deterministic ... ok
[INFO] [stdout] test ai::executor_tests_advanced::rename_model_integration::rename_model_updates_models_admin_views_and_emits_migration ... ok
[INFO] [stdout] test ai::executor_tests_advanced::rename_model_integration::rename_model_refuses_if_new_struct_already_present ... ok
[INFO] [stdout] test ai::industry::tests::housing_has_personnummer_as_a_required_field ... ok
[INFO] [stdout] test ai::industry::tests::unknown_industry_returns_none ... ok
[INFO] [stdout] test ai::intake::tests::ambiguous_input_refuses ... ok
[INFO] [stdout] test ai::intake::tests::belongs_to_targets_an_earlier_model ... ok
[INFO] [stdout] test ai::intake::tests::clinic_keyword_yields_clinic_sketch ... ok
[INFO] [stdout] test ai::intake::tests::plan_for_full_sketch_validates_against_empty_schema ... ok
[INFO] [stdout] test ai::intake::tests::primitives_for_emits_add_model_then_relations ... ok
[INFO] [stdout] test ai::intake::tests::shop_template_uses_only_valid_types ... ok
[INFO] [stdout] test ai::planner_tests::add_due_date_infers_datetime_and_nullable_on_hint ... ok
[INFO] [stdout] test ai::planner_tests::add_field_that_already_exists_is_rejected ... ok
[INFO] [stdout] test ai::planner_tests::add_field_with_explicit_type_wins_over_heuristics ... ok
[INFO] [stdout] test ai::planner_tests::add_relation_from_to_emits_belongs_to ... ok
[INFO] [stdout] test ai::planner_tests::change_field_type_accepts_synonyms ... ok
[INFO] [stdout] test ai::industry::tests::case_insensitive_lookup ... ok
[INFO] [stdout] test ai::planner_tests::change_field_type_unknown_type_is_rejected ... ok
[INFO] [stdout] test ai::planner_tests::connect_verb_is_synonymous_with_add_relation ... ok
[INFO] [stdout] test ai::planner_tests::core_models_are_protected ... ok
[INFO] [stdout] test ai::planner_tests::count_suffix_still_infers_i32 ... ok
[INFO] [stdout] test ai::planner_tests::developer_only_requests_are_rejected_loudly ... ok
[INFO] [stdout] test ai::planner_tests::emitted_plan_always_passes_plan_validate ... ok
[INFO] [stdout] test ai::planner_tests::empty_prompt_is_rejected ... ok
[INFO] [stdout] test ai::planner_tests::link_accepts_trailing_on_delete_cascade ... ok
[INFO] [stdout] test ai::planner_tests::link_combines_required_and_on_delete_set_null ... ok
[INFO] [stdout] test ai::planner_tests::link_rejects_unknown_on_delete_policy ... ok
[INFO] [stdout] test ai::planner_tests::link_accepts_trailing_required_option ... ok
[INFO] [stdout] test ai::planner_tests::link_verb_is_synonymous_with_add_relation ... ok
[INFO] [stdout] test ai::planner_tests::make_optional_emits_change_nullability ... ok
[INFO] [stdout] test ai::planner_tests::monetary_names_infer_i64 ... ok
[INFO] [stdout] test ai::planner_tests::planner_never_emits_create_migration ... ok
[INFO] [stdout] test ai::planner_tests::relation_already_exists_is_refused ... ok
[INFO] [stdout] test ai::planner_tests::relation_from_unknown_source_is_refused ... ok
[INFO] [stdout] test ai::planner_tests::relation_kind_symbol_is_linked_for_future_use ... ok
[INFO] [stdout] test ai::planner_tests::relation_to_unknown_target_is_refused ... ok
[INFO] [stdout] test ai::planner_tests::link_rejects_unknown_option_instead_of_guessing ... ok
[INFO] [stdout] test ai::planner_tests::remove_field_refuses_on_missing_field ... ok
[INFO] [stdout] test ai::planner_tests::remove_model_is_developer_only_not_a_plan ... ok
[INFO] [stdout] test ai::planner_tests::rename_field_collides_with_existing_target ... ok
[INFO] [stdout] test ai::planner_tests::rename_field_emits_rename_primitive_not_remove_plus_add ... ok
[INFO] [stdout] test ai::planner_tests::rename_missing_field_errors ... ok
[INFO] [stdout] test ai::planner_tests::rename_model_emits_schema_level_rename ... ok
[INFO] [stdout] test ai::planner_tests::rename_then_change_type_composes_as_two_validated_plans ... ok
[INFO] [stdout] test ai::planner_tests::render_plan_human_reads_like_a_changelog ... ok
[INFO] [stdout] test ai::planner_tests::same_prompt_produces_byte_for_byte_same_plan_json ... ok
[INFO] [stdout] test ai::planner_tests::render_plan_json_matches_documented_shape ... ok
[INFO] [stdout] test ai::planner_tests::simple_add_field_infers_i32_for_priority ... ok
[INFO] [stdout] test ai::planner_tests::swedish_context_upgrades_personnummer_to_string ... ok
[INFO] [stdout] test ai::planner_tests::unknown_intent_returns_supported_forms_list ... ok
[INFO] [stdout] test ai::planner_tests::unknown_model_is_reported_with_hint ... ok
[INFO] [stdout] test ai::planner_tests::without_context_personnummer_still_parses_but_has_generic_rationale ... ok
[INFO] [stdout] test ai::review_tests::add_model_primitive_is_low_risk_and_not_core ... ok
[INFO] [stdout] test ai::review_tests::add_relation_is_low_risk ... ok
[INFO] [stdout] test ai::review_tests::add_relation_to_non_pii_target_does_not_raise_gdpr_warning ... ok
[INFO] [stdout] test ai::review_tests::add_relation_to_pii_target_raises_gdpr_warning ... ok
[INFO] [stdout] test ai::review_tests::build_document_from_simple_add_field ... ok
[INFO] [stdout] test ai::review_tests::build_document_rejects_invalid_plan ... ok
[INFO] [stdout] test ai::review_tests::classify_risk_is_pure_over_plan_plus_impact_plus_validation ... ok
[INFO] [stdout] test ai::review_tests::compute_impact_counts_each_kind ... ok
[INFO] [stdout] test ai::review_tests::developer_only_primitive_in_plan_is_critical_and_warned ... ok
[INFO] [stdout] test ai::review_tests::add_relation_warns_about_missing_fk_constraint ... ok
[INFO] [stdout] test ai::review_tests::high_risk_for_tightening_nullability ... ok
[INFO] [stdout] test ai::review_tests::high_risk_for_remove_field ... ok
[INFO] [stdout] test ai::review_tests::human_render_reads_like_changelog ... ok
[INFO] [stdout] test ai::review_tests::load_full_plan_document_round_trips ... ok
[INFO] [stdout] test ai::review_tests::load_raw_plan_also_works ... ok
[INFO] [stdout] test ai::review_tests::load_refuses_garbage ... ok
[INFO] [stdout] test ai::review_tests::load_refuses_unknown_document_version ... ok
[INFO] [stdout] test ai::review_tests::load_refuses_unknown_fields_in_document ... ok
[INFO] [stdout] test ai::review_tests::low_risk_for_nonnull_add_field_too ... ok
[INFO] [stdout] test ai::review_tests::invalid_plan_is_critical ... ok
[INFO] [stdout] test ai::review_tests::low_risk_for_nullable_change ... ok
[INFO] [stdout] test ai::review_tests::low_risk_for_plain_nullable_add_field ... ok
[INFO] [stdout] test ai::review_tests::medium_risk_for_rename_model ... ok
[INFO] [stdout] test ai::review_tests::medium_risk_for_type_change ... ok
[INFO] [stdout] test ai::review_tests::medium_risk_for_rename_field ... ok
[INFO] [stdout] test ai::review_tests::mixed_add_and_remove_bumps_to_high ... ok
[INFO] [stdout] test ai::review_tests::plan_valid_today_becomes_stale_after_schema_change ... ok
[INFO] [stdout] test ai::review_tests::plan_with_multiple_ops_gets_warning ... ok
[INFO] [stdout] test ai::review_tests::render_plan_document_json_is_deterministic ... ok
[INFO] [stdout] test ai::review_tests::review_default_fk_is_low_risk ... ok
[INFO] [stdout] test ai::review_tests::review_required_fk_warns_about_retrofit ... ok
[INFO] [stdout] test ai::review_tests::review_cascade_policy_warns_about_blast_radius ... ok
[INFO] [stdout] test ai::review_tests::review_required_plus_cascade_is_high_risk ... ok
[INFO] [stdout] test ai::review_tests::reviewing_same_plan_twice_is_byte_identical ... ok
[INFO] [stdout] test ai::review_tests::stale_detection_points_at_correct_step ... ok
[INFO] [stdout] test ai::review_tests::touching_core_model_is_critical ... ok
[INFO] [stdout] test ai::review_tests::warnings_for_is_free_standing_and_deterministic ... ok
[INFO] [stdout] test ai::tests::add_field_round_trips_through_json ... ok
[INFO] [stdout] test ai::tests::add_relation_with_belongs_to_serialises_snake_case ... ok
[INFO] [stdout] test ai::tests::change_field_type_rejects_unknown_type ... ok
[INFO] [stdout] test ai::tests::create_migration_is_developer_only ... ok
[INFO] [stdout] test ai::tests::missing_required_field_is_rejected ... ok
[INFO] [stdout] test ai::tests::plan_chains_rename_field_then_change_nullability ... ok
[INFO] [stdout] test ai::tests::plan_chains_rename_then_change_type_correctly ... ok
[INFO] [stdout] test ai::tests::plan_json_round_trip ... ok
[INFO] [stdout] test ai::tests::empty_plan_is_always_valid ... ok
[INFO] [stdout] test ai::tests::plan_rejects_create_migration_at_the_offending_step ... ok
[INFO] [stdout] test ai::tests::plan_rejects_create_migration_even_when_structurally_valid ... ok
[INFO] [stdout] test ai::tests::plan_rejects_field_add_after_model_removed ... ok
[INFO] [stdout] test ai::tests::plan_validates_sequential_additions ... ok
[INFO] [stdout] test ai::tests::plan_rejects_second_add_of_same_model ... ok
[INFO] [stdout] test ai::tests::rename_field_rejects_noop ... ok
[INFO] [stdout] test ai::tests::rename_model_rejects_noop ... ok
[INFO] [stdout] test ai::tests::rename_model_rejects_empty_names ... ok
[INFO] [stdout] test ai::tests::unknown_field_on_known_op_is_rejected ... ok
[INFO] [stdout] test ai::tests::unknown_op_is_rejected_not_swallowed ... ok
[INFO] [stdout] test ai::tests::rename_primitives_round_trip_through_json ... ok
[INFO] [stdout] test ai::tests::validate_against_rejects_add_field_to_missing_model ... ok
[INFO] [stdout] test ai::tests::update_admin_rejects_unknown_attribute ... ok
[INFO] [stdout] test ai::tests::validate_against_rejects_change_nullability_on_missing_field ... ok
[INFO] [stdout] test ai::tests::validate_against_rejects_change_type_on_missing_field ... ok
[INFO] [stdout] test ai::tests::validate_against_rejects_duplicate_field_add ... ok
[INFO] [stdout] test ai::tests::validate_against_rejects_relation_to_missing_model ... ok
[INFO] [stdout] test ai::tests::validate_against_rejects_remove_of_nonexistent_model ... ok
[INFO] [stdout] test ai::tests::validate_against_rejects_rename_field_to_existing_name ... ok
[INFO] [stdout] test ai::tests::validate_against_rejects_rename_of_missing_model ... ok
[INFO] [stdout] test ai::tests::validate_primitive_rejects_duplicate_fields_in_add_model ... ok
[INFO] [stdout] test ai::tests::validate_primitive_rejects_empty_names ... ok
[INFO] [stdout] test ai::tests::validate_against_rejects_rename_to_existing_model ... ok
[INFO] [stdout] test ai::tests::validate_primitive_rejects_unknown_type ... ok
[INFO] [stdout] test ai::tests::validate_primitive_still_accepts_create_migration_for_direct_use ... ok
[INFO] [stdout] test auth::tests::compose_key_distinct_ips_produce_distinct_keys ... ok
[INFO] [stdout] test auth::tests::compose_key_email_only_is_stable ... ok
[INFO] [stdout] test auth::tests::compose_key_with_ip_is_distinct_from_email_only ... ok
[INFO] [stdout] test auth::tests::csrf_generate_produces_unique_tokens ... ok
[INFO] [stdout] test auth::tests::csrf_generate_returns_hex_of_expected_length ... ok
[INFO] [stdout] test auth::tests::csrf_verify_empty_either_side_returns_false ... ok
[INFO] [stdout] test auth::tests::csrf_verify_matching_returns_true ... ok
[INFO] [stdout] test auth::tests::csrf_verify_mismatched_returns_false ... ok
[INFO] [stdout] test auth::tests::csrf_verify_rejects_different_lengths ... ok
[INFO] [stdout] test auth::tests::csrf_verify_rejects_single_byte_difference ... ok
[INFO] [stdout] test admin::layout::tests::user_preference_overrides_default_language_in_headers ... ok
[INFO] [stdout] test admin::audit::tests::recent_filters_by_model ... ok
[INFO] [stdout] test admin::audit::tests::deleting_a_user_cascades_to_their_actions ... ok
[INFO] [stdout] test admin::audit::tests::record_round_trip_returns_through_recent ... ok
[INFO] [stdout] test admin::audit::tests::recent_filters_by_action_type ... ok
[INFO] [stdout] test auth::tests::ensure_core_tables_is_idempotent ... ok
[INFO] [stdout] test auth::tests::generate_token_does_not_repeat ... ok
[INFO] [stdout] test auth::tests::generate_token_is_stable_length_and_hex ... ok
[INFO] [stdout] test admin::audit::tests::for_object_returns_newest_first ... ok
[INFO] [stdout] test auth::tests::hash_rejects_empty_password ... ok
[INFO] [stdout] test admin::layout::tests::resolve_active_language_precedence ... ok
[INFO] [stdout] test auth::tests::identity_returns_none_when_absent ... ok
[INFO] [stdout] test auth::tests::identity_returns_reference_when_attached ... ok
[INFO] [stdout] test auth::tests::is_admin_recognises_0_10_role_strings ... ok
[INFO] [stdout] test admin::layout::tests::user_preference_drives_value_label_language ... ok
[INFO] [stdout] test auth::tests::normalise_email_trims_and_lowercases ... ok
[INFO] [stdout] test auth::tests::rate_limiter_allows_up_to_threshold ... ok
[INFO] [stdout] test auth::tests::rate_limiter_lockout_expires_after_duration ... ok
[INFO] [stdout] test auth::tests::rate_limiter_locks_out_at_threshold ... ok
[INFO] [stdout] test auth::tests::rate_limiter_resets_on_successful_login ... ok
[INFO] [stdout] test auth::tests::rate_limiter_tracks_keys_independently ... ok
[INFO] [stdout] test auth::tests::require_admin_admin_returns_identity ... ok
[INFO] [stdout] test auth::tests::require_admin_non_admin_returns_forbidden ... ok
[INFO] [stdout] test auth::tests::require_auth_missing_returns_unauthorized ... ok
[INFO] [stdout] test admin::layout::tests::user_view_builds_switcher_options ... ok
[INFO] [stdout] test admin::layout::tests::no_preference_renders_byte_identical_to_l3 ... ok
[INFO] [stdout] test admin::layout::tests::set_preferred_language_round_trips_and_clears ... ok
[INFO] [stdout] test auth::tests::resolve_identity_none_cookie_returns_none ... ok
[INFO] [stdout] test auth::tests::resolve_identity_unknown_token_returns_none ... ok
[INFO] [stdout] test auth::tests::deleting_user_cascades_to_sessions ... ok
[INFO] [stdout] test auth::tests::changing_password_invalidates_all_user_sessions ... ok
[INFO] [stdout] test admin::layout::tests::rbac_gates_list_actions_by_role ... ok
[INFO] [stdout] test auth::tests::find_valid_cleans_up_expired_row_inline ... ok
[INFO] [stdout] test auth::tests::dummy_password_hash_is_a_valid_phc_string ... ok
[INFO] [stdout] test auth::tests::dummy_password_hash_is_stable_across_calls ... ok
[INFO] [stdout] test auth::tests::delete_others_keeps_current_session_only ... ok
[INFO] [stdout] test admin::layout::tests::account_view_reflects_real_role_permissions ... ok
[INFO] [stdout] test auth::tests::session_lookup_rejects_unknown_token ... ok
[INFO] [stdout] test auth::tests::resolve_identity_expired_session_returns_none ... ok
[INFO] [stdout] test auth::tests::resolve_identity_deleted_user_returns_none ... ok
[INFO] [stdout] test auth::tests::resolve_identity_inactive_user_returns_none ... ok
[INFO] [stdout] test auth::tests::logout_deletes_session_so_later_requests_are_anonymous ... ok
[INFO] [stdout] test auth::tests::user_create_rejects_unknown_role ... ok
[INFO] [stdout] test admin::layout::tests::preference_is_per_user_not_global ... ok
[INFO] [stdout] test auth::tests::validate_email_accepts_reasonable_forms ... ok
[INFO] [stdout] test auth::tests::validate_email_rejects_bad_forms ... ok
[INFO] [stdout] test auth::tests::resolve_identity_valid_admin_session_attaches_admin_identity ... ok
[INFO] [stdout] test auth::tests::verify_invalid_hash_returns_false_without_panic ... ok
[INFO] [stdout] test auth::tests::resolve_identity_valid_user_session_attaches_non_admin_identity ... ok
[INFO] [stdout] test context::tests::absent_type_returns_none ... ok
[INFO] [stdout] test context::tests::different_types_coexist ... ok
[INFO] [stdout] test context::tests::get_mut_permits_mutation_in_place ... ok
[INFO] [stdout] test context::tests::insert_and_get_by_type ... ok
[INFO] [stdout] test context::tests::insert_replaces_same_type_and_returns_prev ... ok
[INFO] [stdout] test context::tests::non_clone_types_are_allowed ... ok
[INFO] [stdout] test context::tests::remove_returns_owned_value_and_clears ... ok
[INFO] [stdout] test defaults::tests::content_length_at_limit_is_accepted ... ok
[INFO] [stdout] test defaults::tests::content_length_over_limit_is_rejected ... ok
[INFO] [stdout] test defaults::tests::content_length_way_over_limit_is_rejected ... ok
[INFO] [stdout] test defaults::tests::homepage_stamps_all_placeholders_and_marks_itself_a_dev_page ... ok
[INFO] [stdout] test defaults::tests::project_slug_is_cli_safe ... ok
[INFO] [stdout] test defaults::tests::stamp_home_fills_every_placeholder ... ok
[INFO] [stdout] test error::tests::display_shows_status_and_message ... ok
[INFO] [stdout] test error::tests::internal_display_and_message_retain_detail_for_logging ... ok
[INFO] [stdout] test error::tests::internal_response_body_is_sanitized ... ok
[INFO] [stdout] test error::tests::into_response_uses_variant_status ... ok
[INFO] [stdout] test error::tests::parameterised_variants_carry_their_message ... ok
[INFO] [stdout] test error::tests::parameterless_variants_use_status_phrase_as_message ... ok
[INFO] [stdout] test error::tests::public_error_bodies_use_status_phrase_or_message ... ok
[INFO] [stdout] test error::tests::resolve_converts_err_to_response ... ok
[INFO] [stdout] test error::tests::resolve_passes_ok_through ... ok
[INFO] [stdout] test error::tests::status_codes_match_variant ... ok
[INFO] [stdout] test http::tests::form_missing_key_is_none ... ok
[INFO] [stdout] test http::tests::form_parse_decodes_basic_pairs ... ok
[INFO] [stdout] test http::tests::form_parse_decodes_percent_encoded ... ok
[INFO] [stdout] test http::tests::form_parse_decodes_plus_as_space ... ok
[INFO] [stdout] test http::tests::form_parse_handles_empty_values ... ok
[INFO] [stdout] test http::tests::form_parse_ignores_empty_pairs ... ok
[INFO] [stdout] test http::tests::percent_decode_handles_lowercase_and_uppercase_hex ... ok
[INFO] [stdout] test http::tests::percent_decode_leaves_invalid_percent_sequences_alone ... ok
[INFO] [stdout] test http::tests::percent_decode_passes_through_unreserved ... ok
[INFO] [stdout] test migrations::tests::apply_creates_tracking_table_even_with_no_migrations ... ok
[INFO] [stdout] test migrations::tests::apply_picks_up_new_migration_added_later ... ok
[INFO] [stdout] test migrations::tests::apply_runs_pending_and_is_idempotent ... ok
[INFO] [stdout] test migrations::tests::failed_migration_rolls_back_and_is_not_marked_applied ... ok
[INFO] [stdout] test migrations::tests::generate_creates_files_with_numbered_prefixes ... ok
[INFO] [stdout] test migrations::tests::generate_rejects_empty_name_after_sanitization ... ok
[INFO] [stdout] test migrations::tests::next_number_follows_highest ... ok
[INFO] [stdout] test migrations::tests::next_number_ignores_non_numeric_prefixes ... ok
[INFO] [stdout] test migrations::tests::next_number_starts_at_one ... ok
[INFO] [stdout] test migrations::tests::sanitize_empty_returns_empty ... ok
[INFO] [stdout] test migrations::tests::sanitize_lowercases_and_underscores ... ok
[INFO] [stdout] test migrations::tests::sanitize_trims_outer_separators ... ok
[INFO] [stdout] test migrations::tests::split_sql_handles_escaped_single_quote ... ok
[INFO] [stdout] test migrations::tests::split_sql_handles_multiple_statements ... ok
[INFO] [stdout] test migrations::tests::split_sql_ignores_empty_trailing ... ok
[INFO] [stdout] test migrations::tests::split_sql_preserves_semicolon_inside_string_literal ... ok
[INFO] [stdout] test migrations::tests::split_sql_skips_semicolons_inside_block_comment ... ok
[INFO] [stdout] test migrations::tests::split_sql_skips_semicolons_inside_line_comment ... ok
[INFO] [stdout] test migrations::tests::status_on_empty_project_returns_empty_both ... ok
[INFO] [stdout] test migrations::tests::status_reports_applied_and_pending_separately ... ok
[INFO] [stdout] test orm::tests::all_returns_every_row ... ok
[INFO] [stdout] test orm::tests::create_assigns_new_id_and_find_reads_it_back ... ok
[INFO] [stdout] test orm::tests::delete_removes_row ... ok
[INFO] [stdout] test orm::tests::find_missing_returns_none ... ok
[INFO] [stdout] test orm::tests::option_none_round_trips_as_null ... ok
[INFO] [stdout] test orm::tests::option_some_round_trips_without_data_loss ... ok
[INFO] [stdout] test orm::tests::option_update_flips_null_to_some_and_back ... ok
[INFO] [stdout] test orm::tests::row_getters_handle_wrong_type_gracefully ... ok
[INFO] [stdout] test orm::tests::update_modifies_row_in_place ... ok
[INFO] [stdout] test router::tests::has_route_detects_registered_path ... ok
[INFO] [stdout] test router::tests::length_mismatch_does_not_match ... ok
[INFO] [stdout] test router::tests::literal_match ... ok
[INFO] [stdout] test router::tests::multiple_params_captured_by_name ... ok
[INFO] [stdout] test router::tests::param_captures_value ... ok
[INFO] [stdout] test router::tests::root_path_is_empty_segment_list ... ok
[INFO] [stdout] test schema::tests::core_user_model_is_always_present ... ok
[INFO] [stdout] test schema::tests::parse_rejects_missing_required_field ... ok
[INFO] [stdout] test schema::tests::parse_rejects_unknown_top_level_field ... ok
[INFO] [stdout] test schema::tests::parse_rejects_version_mismatch ... ok
[INFO] [stdout] test schema::tests::same_registry_produces_identical_bytes ... ok
[INFO] [stdout] test schema::tests::schema_fields_are_sorted_by_name ... ok
[INFO] [stdout] test schema::tests::schema_models_are_sorted_by_name ... ok
[INFO] [stdout] test schema::tests::schema_reflects_admin_registry ... ok
[INFO] [stdout] test schema::tests::schema_snapshot_is_byte_for_byte_stable ... ok
[INFO] [stdout] test schema::tests::to_pretty_json_ends_with_newline ... ok
[INFO] [stdout] test schema::tests::to_pretty_json_round_trips ... ok
[INFO] [stdout] test schema::tests::validate_accepts_clean_schema ... ok
[INFO] [stdout] test schema::tests::validate_accepts_self_referencing_relation ... ok
[INFO] [stdout] test schema::tests::validate_rejects_dangling_relation ... ok
[INFO] [stdout] test schema::tests::validate_rejects_duplicate_fields ... ok
[INFO] [stdout] test schema::tests::validate_rejects_duplicate_models ... ok
[INFO] [stdout] test schema::tests::validate_rejects_unknown_type ... ok
[INFO] [stdout] test schema::tests::validate_rejects_version_mismatch ... ok
[INFO] [stdout] test schema::tests::write_to_is_atomic_no_tmp_left_behind ... ok
[INFO] [stdout] test viewspec::render::tests::bool_and_null_format_as_documented ... ok
[INFO] [stdout] test viewspec::render::tests::each_layout_surfaces_exactly_its_roles ... ok
[INFO] [stdout] test viewspec::render::tests::hidden_value_never_reaches_output_in_any_layout ... ok
[INFO] [stdout] test viewspec::render::tests::merged_cell_drops_empty_values ... ok
[INFO] [stdout] test viewspec::render::tests::merged_cell_joins_sources_and_values ... ok
[INFO] [stdout] test viewspec::render::tests::never_empty_row_falls_back_to_first_visible_field ... ok
[INFO] [stdout] test viewspec::render::tests::render_uses_specs_default_layout ... ok
[INFO] [stdout] test viewspec::render::tests::rendering_is_deterministic ... ok
[INFO] [stdout] test viewspec::render::tests::timestamp_formats_to_exact_expected_string ... ok
[INFO] [stdout] test viewspec::render::tests::unparseable_timestamp_passes_through ... ok
[INFO] [stdout] test viewspec::tests::derivation_is_deterministic ... ok
[INFO] [stdout] test viewspec::tests::derived_roles_match_the_agreed_mapping ... ok
[INFO] [stdout] test viewspec::tests::derived_spec_passes_validate ... ok
[INFO] [stdout] test viewspec::tests::filterable_defaults_to_false_when_absent ... ok
[INFO] [stdout] test viewspec::tests::hidden_role_round_trips ... ok
[INFO] [stdout] test viewspec::tests::iron_rule_label_never_mutates_source ... ok
[INFO] [stdout] test viewspec::tests::label_for_is_explicit_only_no_humanize ... ok
[INFO] [stdout] test viewspec::tests::label_less_spec_is_backward_compatible ... ok
[INFO] [stdout] test viewspec::tests::label_map_serialises_deterministically ... ok
[INFO] [stdout] test viewspec::tests::label_precedence_chain_never_empty ... ok
[INFO] [stdout] test viewspec::tests::labels_round_trip_unchanged ... ok
[INFO] [stdout] test viewspec::tests::layout_serialises_lowercase ... ok
[INFO] [stdout] test viewspec::tests::no_value_labels_serialises_without_the_key ... ok
[INFO] [stdout] test viewspec::tests::parse_rejects_unknown_field ... ok
[INFO] [stdout] test viewspec::tests::password_hash_is_hidden ... ok
[INFO] [stdout] test viewspec::tests::round_trips_through_pretty_json ... ok
[INFO] [stdout] test viewspec::tests::serialisation_is_byte_stable ... ok
[INFO] [stdout] test viewspec::tests::to_pretty_json_ends_with_newline ... ok
[INFO] [stdout] test viewspec::tests::validate_accepts_clean_spec ... ok
[INFO] [stdout] test viewspec::tests::validate_rejects_bad_value_labels ... ok
[INFO] [stdout] test viewspec::tests::validate_rejects_duplicate_source ... ok
[INFO] [stdout] test viewspec::tests::validate_rejects_empty_default_language ... ok
[INFO] [stdout] test viewspec::tests::validate_rejects_empty_fields ... ok
[INFO] [stdout] test viewspec::tests::validate_rejects_empty_label_language ... ok
[INFO] [stdout] test viewspec::tests::validate_rejects_empty_label_value ... ok
[INFO] [stdout] test viewspec::tests::validate_rejects_filter_naming_unknown_field ... ok
[INFO] [stdout] test viewspec::tests::validate_rejects_filter_on_non_filterable_field ... ok
[INFO] [stdout] test viewspec::tests::validate_rejects_label_for_unknown_source ... ok
[INFO] [stdout] test viewspec::tests::validate_rejects_merge_with_one_entry ... ok
[INFO] [stdout] test viewspec::tests::value_label_for_precedence_and_round_trip ... ok
[INFO] [stdout] test auth::tests::session_create_generates_unique_csrf_per_session ... ok
[INFO] [stdout] test auth::tests::resolve_identity_with_session_exposes_csrf ... ok
[INFO] [stdout] test auth::tests::session_create_and_find_returns_live_session ... ok
[INFO] [stdout] test auth::tests::session_find_valid_returns_csrf_token ... ok
[INFO] [stdout] test auth::tests::session_lookup_rejects_expired_session ... ok
[INFO] [stdout] test auth::tests::session_delete_invalidates_lookup ... ok
[INFO] [stdout] test auth::tests::set_active_toggles_flag ... ok
[INFO] [stdout] test auth::tests::hash_then_verify_succeeds ... ok
[INFO] [stdout] test auth::tests::sweep_expired_removes_only_expired ... ok
[INFO] [stdout] test auth::tests::user_create_rejects_duplicate_email ... ok
[INFO] [stdout] test auth::tests::verify_wrong_password_fails ... ok
[INFO] [stdout] test auth::tests::verify_against_dummy_hash_rejects_arbitrary_inputs ... ok
[INFO] [stdout] test auth::tests::user_create_round_trips ... ok
[INFO] [stdout] test auth::tests::hash_is_salted_so_same_input_produces_different_hash ... ok
[INFO] [stdout] test auth::tests::set_password_changes_verifiable_hash ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 621 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 24.37s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/admin_form_csrf.rs (/opt/rustwide/target/debug/deps/admin_form_csrf-ce9c0567b34bbc1e)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test language_switcher_renders_in_topbar_and_sidebar ... ok
[INFO] [stdout] test create_form_renders_csrf_and_enforces_it ... ok
[INFO] [stdout] test set_language_csrf_and_validation ... ok
[INFO] [stdout] test delete_form_renders_csrf_and_enforces_it ... ok
[INFO] [stdout] test view_editor_csrf_permission_and_reject ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.61s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/login_flow.rs (/opt/rustwide/target/debug/deps/login_flow-fe1e7f0a46e50218)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test admin_response_headers_are_present ... ok
[INFO] [stdout] test oversized_form_body_returns_413 ... ok
[INFO] [stdout] test global_body_limit_rejects_large_non_admin_post ... ok
[INFO] [stdout] test anonymous_post_admin_logout_is_rejected ... ok
[INFO] [stdout] test logout_without_csrf_returns_403 ... ok
[INFO] [stdout] test full_login_flow_admin_cookie_auth_logout ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rustio_macros-24cf44ef863fbe0c)
[INFO] [stdout] test login_rate_limiter_triggers_lockout ... ok
[INFO] [stderr]    Doc-tests rustio_core
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.58s
[INFO] [stdout] 
[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 rustio_macros
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test rustio-core/src/admin/admin_generator.rs - admin::admin_generator (line 12) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[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" "b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50", kill_on_drop: false }`
[INFO] [stdout] b33b9fd2708119a1584a989d9cc110b3d0fbc6b6370cd5009171842260ccca50
