[INFO] cloning repository https://github.com/juniorlovestmh/run-the-funds
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/juniorlovestmh/run-the-funds" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjuniorlovestmh%2Frun-the-funds", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjuniorlovestmh%2Frun-the-funds'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 769ce10950971eb2452c964b03b1f24d22794c49
[INFO] testing juniorlovestmh/run-the-funds against master#ec6f9a5b4413f74386267ef8efc93712c2ce6db6 for pr-155739
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjuniorlovestmh%2Frun-the-funds" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/juniorlovestmh/run-the-funds
[INFO] finished tweaking git repo https://github.com/juniorlovestmh/run-the-funds
[INFO] tweaked toml for git repo https://github.com/juniorlovestmh/run-the-funds written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/juniorlovestmh/run-the-funds on toolchain ec6f9a5b4413f74386267ef8efc93712c2ce6db6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/juniorlovestmh/run-the-funds 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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.118
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.118
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.118
[INFO] [stderr]   Downloaded webbrowser v1.2.1
[INFO] [stderr]   Downloaded jni-sys-macros v0.4.1
[INFO] [stderr]   Downloaded jni-sys v0.4.1
[INFO] [stderr]   Downloaded chunked_transfer v1.5.0
[INFO] [stderr]   Downloaded rust_decimal_macros v1.40.0
[INFO] [stderr]   Downloaded rkyv_derive v0.7.46
[INFO] [stderr]   Downloaded hashlink v0.9.1
[INFO] [stderr]   Downloaded toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.118
[INFO] [stderr]   Downloaded jni-macros v0.22.4
[INFO] [stderr]   Downloaded uuid v1.23.1
[INFO] [stderr]   Downloaded borsh-derive v1.6.1
[INFO] [stderr]   Downloaded tiny_http v0.12.0
[INFO] [stderr]   Downloaded toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]   Downloaded rustls-webpki v0.103.12
[INFO] [stderr]   Downloaded toml_edit v0.25.11+spec-1.1.0
[INFO] [stderr]   Downloaded borsh v1.6.1
[INFO] [stderr]   Downloaded js-sys v0.3.95
[INFO] [stderr]   Downloaded rkyv v0.7.46
[INFO] [stderr]   Downloaded rust_decimal v1.41.0
[INFO] [stderr]   Downloaded rusqlite v0.32.1
[INFO] [stderr]   Downloaded jni v0.22.4
[INFO] [stderr]   Downloaded winnow v1.0.1
[INFO] [stderr]   Downloaded simd_cesu8 v1.1.1
[INFO] [stderr]   Downloaded rustls v0.23.38
[INFO] [stderr]   Downloaded web-sys v0.3.95
[INFO] [stderr]   Downloaded libsqlite3-sys v0.30.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 8562a7e1d475fdb78ed60da67747bc6efa25a80cef0ac5b15f20e645a9dd9eb4
[INFO] running `Command { std: "docker" "start" "-a" "8562a7e1d475fdb78ed60da67747bc6efa25a80cef0ac5b15f20e645a9dd9eb4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8562a7e1d475fdb78ed60da67747bc6efa25a80cef0ac5b15f20e645a9dd9eb4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8562a7e1d475fdb78ed60da67747bc6efa25a80cef0ac5b15f20e645a9dd9eb4", kill_on_drop: false }`
[INFO] [stdout] 8562a7e1d475fdb78ed60da67747bc6efa25a80cef0ac5b15f20e645a9dd9eb4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f46e19117e06ab0fd6e12e29608e96d6ed847c6bbd876d974e39f66133b621d2
[INFO] running `Command { std: "docker" "start" "-a" "f46e19117e06ab0fd6e12e29608e96d6ed847c6bbd876d974e39f66133b621d2", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling aws-lc-rs v1.16.3
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling rustls v0.23.38
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling rust_decimal v1.41.0
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]    Compiling csv-core v0.1.13
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling ascii v1.1.0
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling aws-lc-sys v0.40.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling chunked_transfer v1.5.0
[INFO] [stderr]    Compiling tiny_http v0.12.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling csv v1.4.0
[INFO] [stderr]    Compiling uuid v1.23.1
[INFO] [stderr]    Compiling rustls-pemfile v2.2.0
[INFO] [stderr]    Compiling quick-xml v0.36.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.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 clap_derive v4.6.1
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[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 thiserror v2.0.18
[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 clap v4.6.1
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.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 rusqlite v0.32.1
[INFO] [stderr]    Compiling webbrowser v1.2.1
[INFO] [stderr]    Compiling rustls-webpki v0.103.12
[INFO] [stderr]    Compiling ureq v2.12.1
[INFO] [stderr]    Compiling rtf v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `chrono::Duration`
[INFO] [stdout]   --> src/application/categorization_service.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use chrono::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/application/categorization_service.rs:151:18
[INFO] [stdout]     |
[INFO] [stdout] 151 |             let (mut debits, mut credits): (Vec<_>, Vec<_>) = group
[INFO] [stdout]     |                  ----^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/application/categorization_service.rs:151:30
[INFO] [stdout]     |
[INFO] [stdout] 151 |             let (mut debits, mut credits): (Vec<_>, Vec<_>) = group
[INFO] [stdout]     |                              ----^^^^^^^
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 30s
[INFO] running `Command { std: "docker" "inspect" "f46e19117e06ab0fd6e12e29608e96d6ed847c6bbd876d974e39f66133b621d2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f46e19117e06ab0fd6e12e29608e96d6ed847c6bbd876d974e39f66133b621d2", kill_on_drop: false }`
[INFO] [stdout] f46e19117e06ab0fd6e12e29608e96d6ed847c6bbd876d974e39f66133b621d2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] efda45038e4b126f081ddf3725237d1b8e491cb301f4f217e6192ff58284f2a0
[INFO] running `Command { std: "docker" "start" "-a" "efda45038e4b126f081ddf3725237d1b8e491cb301f4f217e6192ff58284f2a0", kill_on_drop: false }`
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling rust_decimal_macros v1.40.0
[INFO] [stderr]    Compiling rusqlite v0.32.1
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling rtf v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `chrono::Duration`
[INFO] [stdout]   --> src/application/categorization_service.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use chrono::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/application/categorization_service.rs:151:18
[INFO] [stdout]     |
[INFO] [stdout] 151 |             let (mut debits, mut credits): (Vec<_>, Vec<_>) = group
[INFO] [stdout]     |                  ----^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/application/categorization_service.rs:151:30
[INFO] [stdout]     |
[INFO] [stdout] 151 |             let (mut debits, mut credits): (Vec<_>, Vec<_>) = group
[INFO] [stdout]     |                              ----^^^^^^^
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Duration`
[INFO] [stdout]   --> src/application/categorization_service.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use chrono::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/application/categorization_service.rs:151:18
[INFO] [stdout]     |
[INFO] [stdout] 151 |             let (mut debits, mut credits): (Vec<_>, Vec<_>) = group
[INFO] [stdout]     |                  ----^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/application/categorization_service.rs:151:30
[INFO] [stdout]     |
[INFO] [stdout] 151 |             let (mut debits, mut credits): (Vec<_>, Vec<_>) = group
[INFO] [stdout]     |                              ----^^^^^^^
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> examples/seed_demo.rs:178:9
[INFO] [stdout]     |
[INFO] [stdout] 178 |     let mut save = |name: &str, group_id: &str| -> Result<String, Box<dyn std::error::Error>> {
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> examples/seed_demo.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 222 |     let mut mk = |name: &str| -> Result<String, Box<dyn std::error::Error>> {
[INFO] [stdout]     |         ----^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> examples/seed_demo.rs:255:9
[INFO] [stdout]     |
[INFO] [stdout] 255 |     let mut mk = |name: &str,
[INFO] [stdout]     |         ----^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> examples/seed_demo.rs:350:9
[INFO] [stdout]     |
[INFO] [stdout] 350 |     let mut mk = |name: &str,
[INFO] [stdout]     |         ----^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `medical`, `travel`, and `buy` are never read
[INFO] [stdout]    --> examples/seed_demo.rs:162:5
[INFO] [stdout]     |
[INFO] [stdout] 148 | struct SeedCats {
[INFO] [stdout]     |        -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 162 |     medical: String,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     travel: String,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     buy: String,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SeedCats` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `spouse` and `work_reimburse` are never read
[INFO] [stdout]    --> examples/seed_demo.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 212 | struct SeedTags {
[INFO] [stdout]     |        -------- fields in this struct
[INFO] [stdout] 213 |     joint: String,
[INFO] [stdout] 214 |     spouse: String,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     work_reimburse: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `roth`, `crypto`, `fx_wallet`, and `loan` are never read
[INFO] [stdout]    --> examples/seed_demo.rs:245:5
[INFO] [stdout]     |
[INFO] [stdout] 239 | struct SeedAccounts {
[INFO] [stdout]     |        ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 245 |     roth: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 246 |     crypto: String,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 247 |     fx_wallet: String,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 248 |     loan: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 30.64s
[INFO] running `Command { std: "docker" "inspect" "efda45038e4b126f081ddf3725237d1b8e491cb301f4f217e6192ff58284f2a0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "efda45038e4b126f081ddf3725237d1b8e491cb301f4f217e6192ff58284f2a0", kill_on_drop: false }`
[INFO] [stdout] efda45038e4b126f081ddf3725237d1b8e491cb301f4f217e6192ff58284f2a0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 930b4e65e52b582c017356981c28aee5cf4719a6e42e83fb4e56b63e53ce7277
[INFO] running `Command { std: "docker" "start" "-a" "930b4e65e52b582c017356981c28aee5cf4719a6e42e83fb4e56b63e53ce7277", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `chrono::Duration`
[INFO] [stderr]   --> src/application/categorization_service.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use chrono::Duration;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/application/categorization_service.rs:151:18
[INFO] [stderr]     |
[INFO] [stderr] 151 |             let (mut debits, mut credits): (Vec<_>, Vec<_>) = group
[INFO] [stderr]     |                  ----^^^^^^
[INFO] [stderr]     |                  |
[INFO] [stderr]     |                  help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/application/categorization_service.rs:151:30
[INFO] [stderr]     |
[INFO] [stderr] 151 |             let (mut debits, mut credits): (Vec<_>, Vec<_>) = group
[INFO] [stderr]     |                              ----^^^^^^^
[INFO] [stderr]     |                              |
[INFO] [stderr]     |                              help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: `rtf` (lib) generated 3 warnings (run `cargo fix --lib -p rtf` to apply 3 suggestions)
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> examples/seed_demo.rs:178:9
[INFO] [stderr]     |
[INFO] [stderr] 178 |     let mut save = |name: &str, group_id: &str| -> Result<String, Box<dyn std::error::Error>> {
[INFO] [stderr]     |         ----^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> examples/seed_demo.rs:222:9
[INFO] [stderr]     |
[INFO] [stderr] 222 |     let mut mk = |name: &str| -> Result<String, Box<dyn std::error::Error>> {
[INFO] [stderr]     |         ----^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> examples/seed_demo.rs:255:9
[INFO] [stderr]     |
[INFO] [stderr] 255 |     let mut mk = |name: &str,
[INFO] [stderr]     |         ----^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> examples/seed_demo.rs:350:9
[INFO] [stderr]     |
[INFO] [stderr] 350 |     let mut mk = |name: &str,
[INFO] [stderr]     |         ----^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: fields `medical`, `travel`, and `buy` are never read
[INFO] [stderr]    --> examples/seed_demo.rs:162:5
[INFO] [stderr]     |
[INFO] [stderr] 148 | struct SeedCats {
[INFO] [stderr]     |        -------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 162 |     medical: String,
[INFO] [stderr]     |     ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 166 |     travel: String,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 171 |     buy: String,
[INFO] [stderr]     |     ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `SeedCats` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `spouse` and `work_reimburse` are never read
[INFO] [stderr]    --> examples/seed_demo.rs:214:5
[INFO] [stderr]     |
[INFO] [stderr] 212 | struct SeedTags {
[INFO] [stderr]     |        -------- fields in this struct
[INFO] [stderr] 213 |     joint: String,
[INFO] [stderr] 214 |     spouse: String,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 218 |     work_reimburse: String,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `roth`, `crypto`, `fx_wallet`, and `loan` are never read
[INFO] [stderr]    --> examples/seed_demo.rs:245:5
[INFO] [stderr]     |
[INFO] [stderr] 239 | struct SeedAccounts {
[INFO] [stderr]     |        ------------ fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 245 |     roth: String,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 246 |     crypto: String,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr] 247 |     fx_wallet: String,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 248 |     loan: String,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rtf` (example "seed_demo") generated 7 warnings (run `cargo fix --example "seed_demo" -p rtf` to apply 4 suggestions)
[INFO] [stderr] warning: `rtf` (lib test) generated 3 warnings (3 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.40s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rtf-3f2273dfe6d80fb0)
[INFO] [stdout] 
[INFO] [stdout] running 427 tests
[INFO] [stdout] test application::account_service::tests::create_account_persists ... ok
[INFO] [stdout] test application::account_service::tests::delete_nonexistent_fails ... ok
[INFO] [stdout] test application::account_service::tests::link_account_happy_path ... ok
[INFO] [stdout] test application::account_service::tests::get_account_not_found ... ok
[INFO] [stdout] test application::account_service::tests::link_account_rejects_second_link_without_force ... ok
[INFO] [stdout] test application::account_service::tests::link_account_force_overrides_existing_link ... ok
[INFO] [stdout] test application::account_service::tests::create_account_validates_name ... ok
[INFO] [stdout] test application::account_service::tests::delete_account ... ok
[INFO] [stdout] test application::categorization_service::tests::account_id_scope_limits_work ... ok
[INFO] [stdout] test application::categorization_service::tests::amount_based_rule ... ok
[INFO] [stdout] test application::account_service::tests::list_accounts_empty ... ok
[INFO] [stdout] test application::account_service::tests::link_account_unknown_id_errors ... ok
[INFO] [stdout] test application::categorization_service::tests::date_tolerance_plus_4_days_does_not_pair ... ok
[INFO] [stdout] test application::categorization_service::tests::already_categorized_rows_skipped ... ok
[INFO] [stdout] test application::categorization_service::tests::date_tolerance_plus_3_days_pairs ... ok
[INFO] [stdout] test application::categorization_service::tests::different_currencies_dont_pair ... ok
[INFO] [stdout] test application::categorization_service::tests::matching_rule_categorizes_transaction ... ok
[INFO] [stdout] test application::categorization_service::tests::dry_run_detects_but_does_not_write ... ok
[INFO] [stdout] test application::categorization_service::tests::no_rules_skips_everything ... ok
[INFO] [stdout] test application::categorization_service::tests::higher_priority_rule_wins_when_multiple_match ... ok
[INFO] [stdout] test application::categorization_service::tests::idempotent_on_rerun ... ok
[INFO] [stdout] test application::categorization_service::tests::rule_fire_counts_aggregate_across_transactions ... ok
[INFO] [stdout] test application::categorization_service::tests::dry_run_counts_but_does_not_write ... ok
[INFO] [stdout] test application::categorization_service::tests::odd_count_pairs_only_what_fits ... ok
[INFO] [stdout] test application::categorization_service::tests::reset_clears_existing_then_reruns ... ok
[INFO] [stdout] test application::categorization_service::tests::simple_pair_detected ... ok
[INFO] [stdout] test application::currency_converter::tests::cache_miss_fetches_and_persists ... ok
[INFO] [stdout] test application::categorization_service::tests::regex_rule_matches ... ok
[INFO] [stdout] test application::categorization_service::tests::same_account_not_paired ... ok
[INFO] [stdout] test application::currency_converter::tests::provider_import_error_propagates_without_walking_back ... ok
[INFO] [stdout] test application::currency_converter::tests::negative_amount_preserves_sign ... ok
[INFO] [stdout] test application::currency_converter::tests::same_currency_short_circuits ... ok
[INFO] [stdout] test application::currency_converter::tests::walk_back_uses_cache_for_prior_dates_when_available ... ok
[INFO] [stdout] test application::monarch_sync_service::tests::monarch_type_mapping ... ok
[INFO] [stdout] test application::currency_converter::tests::second_call_hits_cache ... ok
[INFO] [stdout] test application::currency_converter::tests::same_date_exact_cache_hit_has_no_fallback_reason ... ok
[INFO] [stdout] test application::currency_converter::tests::walk_back_exhausted_returns_not_found ... ok
[INFO] [stdout] test application::currency_converter::tests::walk_back_finds_prior_business_day ... ok
[INFO] [stdout] test application::currency_converter::tests::zero_amount_returns_zero ... ok
[INFO] [stdout] test application::monarch_sync_service::tests::imports_taxonomy_on_first_run ... ok
[INFO] [stdout] test application::monarch_sync_service::tests::transaction_without_category_leaves_category_null ... ok
[INFO] [stdout] test application::monarch_sync_service::tests::transaction_category_and_tag_resolve_to_local_ids ... ok
[INFO] [stdout] test application::monarch_sync_service::tests::account_upsert_updates_balance_and_name ... ok
[INFO] [stdout] test application::spending_service::tests::account_scope_filters ... ok
[INFO] [stdout] test application::monarch_sync_service::tests::rerun_is_idempotent ... ok
[INFO] [stdout] test application::monarch_sync_service::tests::transaction_for_unknown_account_is_skipped ... ok
[INFO] [stdout] test application::spending_service::tests::categorized_txns_roll_up ... ok
[INFO] [stdout] test application::spending_service::tests::date_window_filters ... ok
[INFO] [stdout] test application::spending_service::tests::group_rollup_sums_across_categories ... ok
[INFO] [stdout] test application::spending_service::tests::empty_db_returns_zero_report ... ok
[INFO] [stdout] test application::spending_service::tests::transfers_excluded_by_default ... ok
[INFO] [stdout] test application::spending_service::tests::split_transaction_counts_by_split_lines ... ok
[INFO] [stdout] test application::spending_service::tests::uncategorized_bucket_populated ... ok
[INFO] [stdout] test application::spending_service::tests::transfers_included_when_opt_in ... ok
[INFO] [stdout] test application::split_service::tests::accepts_one_cent_tolerance ... ok
[INFO] [stdout] test application::split_service::tests::clears_parent_category_id_when_splitting_an_already_categorized_row ... ok
[INFO] [stdout] test application::split_service::tests::re_splitting_replaces_existing ... ok
[INFO] [stdout] test application::split_service::tests::happy_path_two_way_split ... ok
[INFO] [stdout] test application::split_service::tests::rejects_single_allocation ... ok
[INFO] [stdout] test application::split_service::tests::rejects_currency_mismatch ... ok
[INFO] [stdout] test application::split_service::tests::rejects_sum_mismatch ... ok
[INFO] [stdout] test application::sync_service::tests::sync_currency_mismatch_surfaces_as_error ... ok
[INFO] [stdout] test application::split_service::tests::unsplit_removes_all_splits ... ok
[INFO] [stdout] test application::split_service::tests::rejects_unknown_transaction ... ok
[INFO] [stdout] test application::sync_service::tests::sync_filters_transactions_before_effective_since ... ok
[INFO] [stdout] test application::sync_service::tests::sync_dedups_on_rerun ... ok
[INFO] [stdout] test application::sync_service::tests::sync_default_since_is_two_years_back ... ok
[INFO] [stdout] test application::sync_service::tests::sync_no_linked_accounts_returns_empty_report ... ok
[INFO] [stdout] test application::sync_service::tests::sync_since_override_wins_over_last_sync_at ... ok
[INFO] [stdout] test application::sync_service::tests::sync_only_persists_linked_external_accounts ... ok
[INFO] [stdout] test application::transaction_service::tests::get_transaction_not_found ... ok
[INFO] [stdout] test application::sync_service::tests::sync_persists_and_updates_last_sync_at ... ok
[INFO] [stdout] test application::transaction_service::tests::delete_transaction ... ok
[INFO] [stdout] test application::transaction_service::tests::import_from_adapter_error_maps_to_domain_import ... ok
[INFO] [stdout] test application::transaction_service::tests::import_from_atomic_on_mismatch ... ok
[INFO] [stdout] test application::transaction_service::tests::import_from_currency_mismatch_aborts ... ok
[INFO] [stdout] test application::transaction_service::tests::import_from_dedup_counts_existing_fitids ... ok
[INFO] [stdout] test application::transaction_service::tests::import_from_unknown_account_errors ... ok
[INFO] [stdout] test application::transaction_service::tests::list_by_account_empty ... ok
[INFO] [stdout] test cli::connections::tests::resolve_target_by_id_happy_path ... ok
[INFO] [stdout] test cli::connections::tests::resolve_target_not_found_by_id ... ok
[INFO] [stdout] test cli::pluggy::tests::fetch_api_key_missing_field_errors ... ok
[INFO] [stdout] test application::transaction_service::tests::save_and_list ... ok
[INFO] [stdout] test cli::pluggy::tests::fetch_api_key_roundtrips ... ok
[INFO] [stdout] test cli::pluggy::tests::fetch_connect_token_roundtrips ... ok
[INFO] [stdout] test cli::connections::tests::resolve_target_by_provider_and_external_id ... ok
[INFO] [stdout] test cli::pluggy::tests::parse_item_accepts_flat_shape ... ok
[INFO] [stdout] test cli::pluggy::tests::parse_item_accepts_wrapped_shape ... ok
[INFO] [stdout] test cli::pluggy::tests::parse_item_allows_missing_connector_name ... ok
[INFO] [stdout] test cli::pluggy::tests::parse_item_missing_id_errors ... ok
[INFO] [stdout] test application::transaction_service::tests::import_from_persists_and_reports_counts ... ok
[INFO] [stdout] test cli::connections::tests::resolve_target_rejects_both_arg_groups ... ok
[INFO] [stdout] test cli::connections::tests::resolve_target_not_found_by_provider_external_id ... ok
[INFO] [stdout] test cli::connections::tests::resolve_target_rejects_no_args ... ok
[INFO] [stdout] test cli::pluggy::tests::persist_item_adds_row_for_different_item_id ... ok
[INFO] [stdout] test cli::connections::tests::resolve_target_rejects_partial_provider_pair ... ok
[INFO] [stdout] test cli::pluggy::tests::load_app_creds_roundtrip ... ok
[INFO] [stdout] test cli::pluggy::tests::load_app_creds_errors_when_missing ... ok
[INFO] [stdout] test cli::pluggy::tests::store_app_creds_happy_path ... ok
[INFO] [stdout] test cli::pluggy::tests::store_app_creds_rejects_empty_fields ... ok
[INFO] [stdout] test cli::pluggy::tests::persist_item_upserts_same_item_id ... ok
[INFO] [stdout] test cli::simplefin::tests::decode_setup_token_rejects_garbage ... ok
[INFO] [stdout] test cli::simplefin::tests::decode_setup_token_rejects_non_http_result ... ok
[INFO] [stdout] test cli::simplefin::tests::decode_setup_token_standard_base64 ... ok
[INFO] [stdout] test cli::simplefin::tests::decode_setup_token_url_safe_base64 ... ok
[INFO] [stdout] test cli::rules::tests::add_rule_amount_pattern_validated ... ok
[INFO] [stdout] test cli::rules::tests::add_rule_accepts_regex_kind ... ok
[INFO] [stdout] test cli::rules::tests::add_rule_happy_path_defaults_to_substring ... ok
[INFO] [stdout] test cli::teller::tests::parse_enrollment_allows_missing_institution ... ok
[INFO] [stdout] test cli::teller::tests::parse_enrollment_errors_on_missing_fields ... ok
[INFO] [stdout] test cli::teller::tests::parse_enrollment_extracts_id_token_and_institution ... ok
[INFO] [stdout] test cli::rules::tests::add_rule_rejects_invalid_regex ... ok
[INFO] [stdout] test cli::rules::tests::add_rule_rejects_unknown_category_via_fk ... ok
[INFO] [stdout] test cli::rules::tests::add_rule_rejects_unknown_match_field ... ok
[INFO] [stdout] test cli::simplefin::tests::exchange_and_store_rejects_empty_response ... ok
[INFO] [stdout] test cli::simplefin::tests::exchange_and_store_persists_access_url ... ok
[INFO] [stdout] test cli::rules::tests::list_returns_rules_sorted_by_priority_desc ... ok
[INFO] [stdout] test cli::teller::tests::persist_enrollment_adds_second_row_for_different_enrollment_id ... ok
[INFO] [stdout] test domain::account::account::tests::checking_is_asset ... ok
[INFO] [stdout] test domain::account::account::tests::credit_card_is_liability ... ok
[INFO] [stdout] test cli::teller::tests::persist_enrollment_upserts_on_same_enrollment_id ... ok
[INFO] [stdout] test domain::account::account::tests::credit_card_with_limit ... ok
[INFO] [stdout] test domain::account::account::tests::link_rejects_empty_external_id ... ok
[INFO] [stdout] test domain::account::account::tests::link_rejects_empty_provider ... ok
[INFO] [stdout] test domain::account::account::tests::link_roundtrips_through_serde ... ok
[INFO] [stdout] test domain::account::account::tests::loan_is_liability ... ok
[INFO] [stdout] test domain::account::account::tests::loan_with_interest_rate ... ok
[INFO] [stdout] test domain::account::account::tests::mark_synced_updates_last_sync_at ... ok
[INFO] [stdout] test domain::account::account::tests::new_creates_account_with_zero_balance ... ok
[INFO] [stdout] test domain::account::account::tests::new_is_unlinked ... ok
[INFO] [stdout] test domain::account::account::tests::new_optional_fields_are_none ... ok
[INFO] [stdout] test domain::account::account::tests::new_rejects_empty_name ... ok
[INFO] [stdout] test domain::account::account::tests::link_sets_both_fields_and_bumps_updated_at ... ok
[INFO] [stdout] test domain::account::account::tests::new_rejects_empty_owner ... ok
[INFO] [stdout] test cli::teller::tests::parse_app_id_and_env_roundtrip ... ok
[INFO] [stdout] test domain::account::account::tests::savings_is_asset ... ok
[INFO] [stdout] test domain::account::account::tests::new_sets_timestamps ... ok
[INFO] [stdout] test domain::account::account::tests::new_rejects_whitespace_only_name ... ok
[INFO] [stdout] test domain::account::account::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::account::account_type::tests::display_all_variants ... ok
[INFO] [stdout] test domain::account::account_type::tests::parse_credit_card_variants ... ok
[INFO] [stdout] test domain::account::account_type::tests::parse_case_insensitive ... ok
[INFO] [stdout] test domain::account::account::tests::serde_json_includes_all_fields ... ok
[INFO] [stdout] test domain::account::account_type::tests::parse_standard_forms ... ok
[INFO] [stdout] test domain::account::account_type::tests::parse_unknown_fails ... ok
[INFO] [stdout] test domain::account::account_type::tests::serde_uses_snake_case ... ok
[INFO] [stdout] test domain::account::account_type::tests::serde_roundtrip ... ok
[INFO] [stdout] test cli::teller::tests::store_app_creds_rejects_bogus_environment ... ok
[INFO] [stdout] test domain::category::category::tests::from_external_captures_provenance ... ok
[INFO] [stdout] test domain::category::category::tests::new_creates_category ... ok
[INFO] [stdout] test domain::category::category::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::category::category::tests::new_rejects_empty_group_id ... ok
[INFO] [stdout] test domain::category::category::tests::new_rejects_empty_name ... ok
[INFO] [stdout] test domain::category::category_group::tests::from_external_captures_provenance ... ok
[INFO] [stdout] test domain::category::category_group::tests::new_rejects_empty_name ... ok
[INFO] [stdout] test domain::connections::connection::tests::new_rejects_empty_provider_and_external_id ... ok
[INFO] [stdout] test domain::category::category_group::tests::new_creates_group ... ok
[INFO] [stdout] test domain::connections::connection::tests::new_stamps_timestamps ... ok
[INFO] [stdout] test domain::category::category_group::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::connections::connection::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::credentials::credentials::tests::new_creates_stamped_record ... ok
[INFO] [stdout] test domain::credentials::credentials::tests::new_rejects_empty_data ... ok
[INFO] [stdout] test domain::credentials::credentials::tests::new_rejects_empty_provider ... ok
[INFO] [stdout] test domain::currency::currency_code::tests::display_brl ... ok
[INFO] [stdout] test domain::credentials::credentials::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::currency::currency_code::tests::display_usd ... ok
[INFO] [stdout] test domain::currency::currency_code::tests::equality ... ok
[INFO] [stdout] test domain::currency::currency_code::tests::hash_usable_as_map_key ... ok
[INFO] [stdout] test domain::currency::currency_code::tests::parse_lowercase ... ok
[INFO] [stdout] test domain::currency::currency_code::tests::parse_empty_string_fails ... ok
[INFO] [stdout] test domain::currency::currency_code::tests::parse_mixed_case ... ok
[INFO] [stdout] test domain::currency::money::tests::abs_of_negative ... ok
[INFO] [stdout] test domain::currency::currency_code::tests::parse_unsupported_currency_fails ... ok
[INFO] [stdout] test domain::currency::money::tests::abs_of_positive ... ok
[INFO] [stdout] test cli::teller::tests::store_app_creds_rejects_empty_app_id ... ok
[INFO] [stdout] test domain::currency::currency_code::tests::serde_roundtrip ... ok
[INFO] [stdout] test cli::teller::tests::store_app_creds_rejects_partial_cert_args ... ok
[INFO] [stdout] test domain::currency::money::tests::display_format ... ok
[INFO] [stdout] test domain::currency::money::tests::display_format_brl ... ok
[INFO] [stdout] test domain::currency::money::tests::equality ... ok
[INFO] [stdout] test domain::currency::money::tests::add_mixed_currency_fails ... ok
[INFO] [stdout] test domain::currency::money::tests::add_same_currency ... ok
[INFO] [stdout] test domain::currency::money::tests::inequality_different_amount ... ok
[INFO] [stdout] test domain::currency::money::tests::is_negative ... ok
[INFO] [stdout] test domain::currency::money::tests::negate ... ok
[INFO] [stdout] test domain::currency::money::tests::new_creates_money_with_correct_fields ... ok
[INFO] [stdout] test domain::currency::currency_code::tests::parse_uppercase ... ok
[INFO] [stdout] test domain::currency::money::tests::inequality_different_currency ... ok
[INFO] [stdout] test domain::currency::money::tests::precise_decimal_arithmetic ... ok
[INFO] [stdout] test domain::currency::money::tests::serde_json_structure ... ok
[INFO] [stdout] test domain::currency::money::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::currency::money::tests::subtract_mixed_currency_fails ... ok
[INFO] [stdout] test domain::currency::money::tests::subtract_resulting_in_negative ... ok
[INFO] [stdout] test domain::currency::money::tests::subtract_same_currency ... ok
[INFO] [stdout] test domain::currency::money::tests::zero_creates_zero_amount ... ok
[INFO] [stdout] test domain::error::tests::currency_mismatch_error_message ... ok
[INFO] [stdout] test domain::error::tests::duplicate_error_message ... ok
[INFO] [stdout] test domain::error::tests::error_is_send_and_sync ... ok
[INFO] [stdout] test domain::error::tests::import_error_message ... ok
[INFO] [stdout] test domain::currency::money::tests::is_zero ... ok
[INFO] [stdout] test domain::currency::money::tests::large_amounts ... ok
[INFO] [stdout] test domain::error::tests::validation_error_message ... ok
[INFO] [stdout] test domain::exchange::rate::tests::new_sets_fetched_at_to_now ... ok
[INFO] [stdout] test domain::exchange::rate::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::error::tests::not_found_error_message ... ok
[INFO] [stdout] test domain::household::person::tests::new_rejects_empty_name ... ok
[INFO] [stdout] test domain::error::tests::storage_error_message ... ok
[INFO] [stdout] test domain::household::person::tests::all_relationship_variants ... ok
[INFO] [stdout] test domain::household::person::tests::new_creates_person ... ok
[INFO] [stdout] test cli::teller::tests::store_app_creds_sandbox_no_cert ... ok
[INFO] [stdout] test domain::household::person::tests::serde_and_text_encoding_agree ... ok
[INFO] [stdout] test domain::household::person::tests::relationship_parse ... ok
[INFO] [stdout] test domain::household::person::tests::new_rejects_whitespace_name ... ok
[INFO] [stdout] test domain::household::person::tests::serde_relationship_snake_case ... ok
[INFO] [stdout] test domain::household::person::tests::relationship_display ... ok
[INFO] [stdout] test domain::household::person::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::rules::rule::tests::amount_pattern_eq ... ok
[INFO] [stdout] test domain::rules::rule::tests::amount_pattern_gt ... ok
[INFO] [stdout] test cli::teller::tests::store_app_creds_with_cert_defaults_to_development ... ok
[INFO] [stdout] test domain::household::person::tests::relationship_parse_unknown_fails ... ok
[INFO] [stdout] test domain::rules::rule::tests::amount_pattern_gte ... ok
[INFO] [stdout] test domain::rules::rule::tests::new_rule_validates_required_fields ... ok
[INFO] [stdout] test domain::rules::rule::tests::new_rule_rejects_invalid_regex_at_save_time ... ok
[INFO] [stdout] test domain::rules::rule::tests::amount_pattern_lt_lte ... ok
[INFO] [stdout] test domain::rules::rule::tests::match_field_from_str_accepts_lowercase ... ok
[INFO] [stdout] test domain::rules::rule::tests::match_kind_from_str ... ok
[INFO] [stdout] test domain::rules::rule::tests::substring_returns_false_when_field_absent ... ok
[INFO] [stdout] test domain::rules::rule::tests::substring_matches_case_insensitive ... ok
[INFO] [stdout] test domain::rules::rule::tests::regex_anchor_semantics ... ok
[INFO] [stdout] test domain::rules::rule::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::rules::rule::tests::new_rule_accepts_valid_regex ... ok
[INFO] [stdout] test domain::tag::tag::tests::new_rejects_empty_name ... ok
[INFO] [stdout] test domain::transaction::split::tests::new_rejects_zero_amount ... ok
[INFO] [stdout] test domain::tag::tag::tests::from_external_captures_provenance ... ok
[INFO] [stdout] test domain::rules::rule::tests::amount_pattern_rejects_bogus_syntax ... ok
[INFO] [stdout] test domain::tag::tag::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::rules::rule::tests::description_field_matched_not_payee ... ok
[INFO] [stdout] test domain::transaction::split::tests::new_validates_non_empty_fields ... ok
[INFO] [stdout] test domain::transaction::status::tests::display_all_variants ... ok
[INFO] [stdout] test domain::transaction::status::tests::parse_unknown_fails ... ok
[INFO] [stdout] test domain::transaction::status::tests::parse_all_variants ... ok
[INFO] [stdout] test domain::transaction::status::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::transaction::status::tests::parse_case_insensitive ... ok
[INFO] [stdout] test domain::tag::tag::tests::new_creates_tag ... ok
[INFO] [stdout] test domain::transaction::split::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::transaction::transaction::tests::is_categorized ... ok
[INFO] [stdout] test domain::transaction::transaction::tests::is_expense ... ok
[INFO] [stdout] test domain::transaction::transaction::tests::brl_transaction ... ok
[INFO] [stdout] test domain::transaction::transaction::tests::is_income ... ok
[INFO] [stdout] test domain::transaction::transaction::tests::new_rejects_empty_account_id ... ok
[INFO] [stdout] test domain::transaction::transaction::tests::is_transfer ... ok
[INFO] [stdout] test domain::transaction::transaction::tests::new_defaults ... ok
[INFO] [stdout] test domain::transaction::transaction::tests::new_creates_transaction ... ok
[INFO] [stdout] test domain::transaction::transaction::tests::serde_roundtrip ... ok
[INFO] [stdout] test infrastructure::connect::tests::render_template_substitutes_vars ... ok
[INFO] [stdout] test domain::transaction::transaction::tests::zero_amount_is_neither_income_nor_expense ... ok
[INFO] [stdout] test infrastructure::connect::tests::render_template_leaves_unknown_vars_untouched ... ok
[INFO] [stdout] test infrastructure::exchange::bcb_ptax::tests::brl_to_usd_inverts_midpoint ... ok
[INFO] [stdout] test infrastructure::exchange::bcb_ptax::tests::empty_value_array_returns_not_found ... ok
[INFO] [stdout] test infrastructure::exchange::bcb_ptax::tests::http_error_propagates ... ok
[INFO] [stdout] test infrastructure::exchange::bcb_ptax::tests::live_bcb_fetch_returns_reasonable_rate ... ignored, hits live BCB API; run with `cargo test -- --ignored` for manual verification
[INFO] [stdout] test infrastructure::exchange::bcb_ptax::tests::malformed_json_returns_import_error ... ok
[INFO] [stdout] test infrastructure::exchange::bcb_ptax::tests::same_currency_does_not_hit_http ... ok
[INFO] [stdout] test infrastructure::exchange::bcb_ptax::tests::same_currency_short_circuits_to_one ... ok
[INFO] [stdout] test infrastructure::exchange::bcb_ptax::tests::source_name_is_bcb_ptax ... ok
[INFO] [stdout] test infrastructure::exchange::bcb_ptax::tests::usd_to_brl_uses_midpoint ... ok
[INFO] [stdout] test infrastructure::importer::csv::tests::import_returns_not_implemented ... ok
[INFO] [stdout] test infrastructure::importer::csv::tests::name_is_csv ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::detect_fails_on_garbage ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::detects_sgml_from_header ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::detects_xml_from_bare_ofx_root ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::detects_xml_from_prolog ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::io_error_surfaces_missing_file ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::name_is_ofx ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::parses_chase_qfx_fixture ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::parses_nubank_ofx_fixture ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::sgml_captures_curdef_brl ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::sgml_decodes_common_entities ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::sgml_malformed_amount_errors ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::sgml_malformed_date_errors ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::sgml_missing_fitid_errors ... ok
[INFO] [stdout] test domain::rules::rule::tests::regex_matches_with_implicit_case_insensitive ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::sgml_negative_amount_preserved ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::sgml_parses_multiple_stmttrn_preserving_order ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::sgml_parses_single_stmttrn ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::sgml_positive_amount_preserved ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::xml_parses_multiple_stmttrn ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::xml_missing_fitid_errors ... ok
[INFO] [stdout] test infrastructure::importer::ofx::tests::xml_parses_single_stmttrn ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::find_all_empty ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::delete_removes_account ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::find_all_returns_sorted_by_name ... ok
[INFO] [stdout] test infrastructure::connect::tests::run_captures_exit_callback ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::find_by_external_link_returns_matching_account ... ok
[INFO] [stdout] test infrastructure::connect::tests::serves_html_on_get_root ... ok
[INFO] [stdout] test infrastructure::connect::tests::run_captures_success_callback ... ok
[INFO] [stdout] test infrastructure::connect::tests::run_captures_failure_callback ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::multiple_currencies ... ok
[INFO] [stdout] test infrastructure::connect::tests::returns_404_for_unknown_paths_and_keeps_running ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::partial_unique_index_permits_multiple_unlinked_accounts ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::find_by_provider_filters_and_ignores_unlinked ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::partial_unique_index_rejects_duplicate_external_link ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::find_by_id_not_found ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::roundtrip_preserves_optional_fields ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::save_and_find_by_id ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::roundtrip_preserves_money_precision ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::roundtrip_preserves_timestamps ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::save_upserts_on_conflict ... ok
[INFO] [stdout] test infrastructure::storage::category_repo::tests::category_requires_existing_group ... ok
[INFO] [stdout] test infrastructure::storage::category_repo::tests::find_categories_by_group ... ok
[INFO] [stdout] test infrastructure::storage::category_repo::tests::group_not_found ... ok
[INFO] [stdout] test infrastructure::storage::category_repo::tests::find_all_categories ... ok
[INFO] [stdout] test infrastructure::storage::category_repo::tests::save_and_find_category ... ok
[INFO] [stdout] test infrastructure::storage::category_repo::tests::find_all_groups ... ok
[INFO] [stdout] test infrastructure::storage::account_repo::tests::roundtrip_preserves_external_link_and_last_sync_at ... ok
[INFO] [stdout] test infrastructure::storage::category_repo::tests::category_not_found ... ok
[INFO] [stdout] test infrastructure::storage::connections_repo::tests::find_all_orders_by_provider_then_created ... ok
[INFO] [stdout] test infrastructure::storage::category_repo::tests::save_and_find_group ... ok
[INFO] [stdout] test infrastructure::storage::connections_repo::tests::delete_removes_row ... ok
[INFO] [stdout] test infrastructure::storage::connections_repo::tests::find_by_external_id_returns_matching ... ok
[INFO] [stdout] test infrastructure::storage::connections_repo::tests::migration_006_splits_existing_teller_access_token_into_connection ... ok
[INFO] [stdout] test infrastructure::storage::credentials_repo::tests::delete_missing_provider_is_noop ... ok
[INFO] [stdout] test infrastructure::storage::connections_repo::tests::save_upserts_on_duplicate_provider_external_id ... ok
[INFO] [stdout] test infrastructure::storage::connections_repo::tests::save_and_find_by_provider ... ok
[INFO] [stdout] test infrastructure::storage::credentials_repo::tests::delete_removes_row ... ok
[INFO] [stdout] test infrastructure::storage::database::tests::in_memory_creates_tables ... ok
[INFO] [stdout] test infrastructure::storage::database::tests::foreign_keys_enabled ... ok
[INFO] [stdout] test infrastructure::storage::credentials_repo::tests::find_by_provider_returns_none_when_absent ... ok
[INFO] [stdout] test infrastructure::storage::credentials_repo::tests::save_and_find_by_provider ... ok
[INFO] [stdout] test infrastructure::storage::credentials_repo::tests::different_providers_coexist ... ok
[INFO] [stdout] test infrastructure::storage::credentials_repo::tests::save_upserts_by_provider ... ok
[INFO] [stdout] test infrastructure::storage::exchange_rate_repo::tests::find_nearest_on_or_before_picks_latest_prior ... ok
[INFO] [stdout] test infrastructure::storage::database::tests::in_memory_has_all_tables ... ok
[INFO] [stdout] test infrastructure::storage::database::tests::migration_is_idempotent ... ok
[INFO] [stdout] test infrastructure::storage::exchange_rate_repo::tests::find_by_pair_date_returns_none_when_absent ... ok
[INFO] [stdout] test infrastructure::storage::database::tests::migration_002_creates_external_id_unique_index ... ok
[INFO] [stdout] test infrastructure::storage::exchange_rate_repo::tests::find_nearest_on_or_before_returns_none_when_no_earlier_row ... ok
[INFO] [stdout] test infrastructure::storage::exchange_rate_repo::tests::save_and_find_by_pair_date ... ok
[INFO] [stdout] test infrastructure::storage::exchange_rate_repo::tests::save_upserts_on_duplicate_pair_date ... ok
[INFO] [stdout] test infrastructure::storage::exchange_rate_repo::tests::separate_directions_are_independent_rows ... ok
[INFO] [stdout] test infrastructure::storage::person_repo::tests::find_all ... ok
[INFO] [stdout] test infrastructure::storage::person_repo::tests::all_relationship_types_roundtrip ... ok
[INFO] [stdout] test infrastructure::storage::person_repo::tests::find_by_id_not_found ... ok
[INFO] [stdout] test infrastructure::storage::person_repo::tests::save_and_find_by_id ... ok
[INFO] [stdout] test infrastructure::storage::person_repo::tests::upsert_on_save ... ok
[INFO] [stdout] test infrastructure::storage::rules_repo::tests::delete_removes_row ... ok
[INFO] [stdout] test infrastructure::storage::database::tests::open_file_database ... ok
[INFO] [stdout] test infrastructure::storage::rules_repo::tests::find_all_orders_by_priority_desc_then_created_asc ... ok
[INFO] [stdout] test infrastructure::storage::rules_repo::tests::fk_rejects_unknown_category ... ok
[INFO] [stdout] test infrastructure::storage::rules_repo::tests::save_upserts_on_same_id ... ok
[INFO] [stdout] test infrastructure::storage::rules_repo::tests::save_and_find_by_id ... ok
[INFO] [stdout] test infrastructure::storage::tag_repo::tests::cascade_on_tag_delete ... ok
[INFO] [stdout] test infrastructure::storage::tag_repo::tests::cascade_on_transaction_delete ... ok
[INFO] [stdout] test infrastructure::storage::tag_repo::tests::find_all_ordered_by_order_index_then_name ... ok
[INFO] [stdout] test infrastructure::storage::tag_repo::tests::find_by_name ... ok
[INFO] [stdout] test infrastructure::storage::rules_repo::tests::find_by_id_returns_none ... ok
[INFO] [stdout] test infrastructure::storage::tag_repo::tests::save_and_find_by_id ... ok
[INFO] [stdout] test infrastructure::storage::tag_repo::tests::set_and_find_tags_for_transaction ... ok
[INFO] [stdout] test infrastructure::storage::tag_repo::tests::find_by_external ... ok
[INFO] [stdout] test infrastructure::storage::tag_repo::tests::name_unique_constraint ... ok
[INFO] [stdout] test infrastructure::storage::tag_repo::tests::save_is_upsert ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::brl_transaction_roundtrip ... ok
[INFO] [stdout] test infrastructure::storage::tag_repo::tests::set_tags_replaces_existing ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::find_by_account ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::delete_transaction ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::find_by_date_range ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::find_by_external_id_returns_none_when_absent ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::find_by_external_id_roundtrips ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::find_by_external_id_scoped_to_account ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::find_by_id_not_found ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::null_external_id_not_constrained ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::foreign_key_enforced ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::roundtrip_optional_fields ... ok
[INFO] [stdout] test infrastructure::storage::transaction_split_repo::tests::delete_by_transaction_returns_count ... ok
[INFO] [stdout] test infrastructure::sync_adapter::monarch::tests::adapter_subprocess_constructor_exists ... ok
[INFO] [stdout] test infrastructure::sync_adapter::monarch::tests::decimal_parser_handles_integer_string_and_null ... ok
[INFO] [stdout] test infrastructure::sync_adapter::monarch::tests::fetch_accounts_parses_shape ... ok
[INFO] [stdout] test infrastructure::sync_adapter::monarch::tests::fetch_categories_parses_shape_and_group_link ... ok
[INFO] [stdout] test infrastructure::sync_adapter::monarch::tests::fetch_category_groups_parses_shape ... ok
[INFO] [stdout] test infrastructure::sync_adapter::monarch::tests::fetch_tags_parses_shape_with_null_color ... ok
[INFO] [stdout] test infrastructure::sync_adapter::monarch::tests::fetch_transactions_handles_missing_optional_fields ... ok
[INFO] [stdout] test infrastructure::storage::transaction_split_repo::tests::fk_rejects_unknown_category ... ok
[INFO] [stdout] test infrastructure::sync_adapter::monarch::tests::fetch_transactions_single_page ... ok
[INFO] [stdout] test infrastructure::sync_adapter::monarch::tests::fetch_transactions_stops_on_empty_page ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::save_and_find_by_id ... ok
[INFO] [stdout] test infrastructure::sync_adapter::monarch::tests::runner_missing_binary_surfaces_guidance ... ok
[INFO] [stdout] test infrastructure::sync_adapter::monarch::tests::malformed_json_returns_import_error ... ok
[INFO] [stdout] test infrastructure::sync_adapter::pluggy::tests::already_negative_amount_still_respects_type ... ok
[INFO] [stdout] test infrastructure::sync_adapter::pluggy::tests::auth_failure_propagates ... ok
[INFO] [stdout] test infrastructure::sync_adapter::pluggy::tests::auth_is_cached_across_calls ... ok
[INFO] [stdout] test infrastructure::sync_adapter::pluggy::tests::auth_response_missing_api_key_errors ... ok
[INFO] [stdout] test infrastructure::sync_adapter::pluggy::tests::credit_keeps_positive_sign ... ok
[INFO] [stdout] test infrastructure::storage::transaction_repo::tests::unique_index_rejects_duplicate_external_id_in_same_account ... ok
[INFO] [stdout] test infrastructure::sync_adapter::pluggy::tests::http_error_on_accounts_propagates ... ok
[INFO] [stdout] test infrastructure::sync_adapter::pluggy::tests::merchant_name_preferred_as_payee ... ok
[INFO] [stdout] test infrastructure::sync_adapter::pluggy::tests::provider_name_is_pluggy ... ok
[INFO] [stdout] test infrastructure::sync_adapter::pluggy::tests::pagination_walks_all_pages ... ok
[INFO] [stdout] test infrastructure::sync_adapter::pluggy::tests::unknown_type_errors ... ok
[INFO] [stdout] test infrastructure::storage::transaction_split_repo::tests::cascade_delete_from_parent_transaction ... ok
[INFO] [stdout] test infrastructure::sync_adapter::pluggy::tests::happy_path_parses_debit_with_sign_inversion ... ok
[INFO] [stdout] test infrastructure::sync_adapter::simplefin::tests::provider_name_is_simplefin ... ok
[INFO] [stdout] test infrastructure::sync_adapter::simplefin::tests::split_access_url_extracts_creds ... ok
[INFO] [stdout] test infrastructure::sync_adapter::simplefin::tests::http_error_propagates ... ok
[INFO] [stdout] test infrastructure::sync_adapter::simplefin::tests::split_access_url_rejects_missing_userinfo ... ok
[INFO] [stdout] test infrastructure::sync_adapter::simplefin::tests::split_access_url_rejects_missing_scheme ... ok
[INFO] [stdout] test infrastructure::sync_adapter::simplefin::tests::sync_account_missing_currency_errors ... ok
[INFO] [stdout] test infrastructure::sync_adapter::simplefin::tests::sync_preserves_sign_on_credits_and_debits ... ok
[INFO] [stdout] test infrastructure::sync_adapter::simplefin::tests::sync_transaction_missing_id_errors ... ok
[INFO] [stdout] test infrastructure::sync_adapter::simplefin::tests::sync_parses_multiple_accounts_and_transactions ... ok
[INFO] [stdout] test infrastructure::sync_adapter::simplefin::tests::sync_default_since_is_two_years_back ... ok
[INFO] [stdout] test infrastructure::sync_adapter::simplefin::tests::sync_surfaces_provider_errors ... ok
[INFO] [stdout] test infrastructure::sync_adapter::simplefin::tests::sync_uses_basic_auth_and_start_date ... ok
[INFO] [stdout] test infrastructure::sync_adapter::teller::tests::authorization_header_basic_token_colon_empty ... ok
[INFO] [stdout] test infrastructure::sync_adapter::teller::tests::default_since_two_years_back ... ok
[INFO] [stdout] test infrastructure::sync_adapter::teller::tests::description_used_as_payee_when_counterparty_absent ... ok
[INFO] [stdout] test infrastructure::sync_adapter::teller::tests::happy_path_parses_signed_amounts ... ok
[INFO] [stdout] test infrastructure::sync_adapter::teller::tests::http_error_on_accounts_propagates ... ok
[INFO] [stdout] test infrastructure::sync_adapter::teller::tests::malformed_date_errors ... ok
[INFO] [stdout] test infrastructure::sync_adapter::teller::tests::empty_transactions_stops_pagination_immediately ... ok
[INFO] [stdout] test infrastructure::sync_adapter::teller::tests::missing_transaction_amount_errors ... ok
[INFO] [stdout] test infrastructure::sync_adapter::teller::tests::unsupported_currency_account_skipped ... ok
[INFO] [stdout] test infrastructure::storage::transaction_split_repo::tests::save_and_find_by_transaction ... ok
[INFO] [stdout] test infrastructure::storage::transaction_split_repo::tests::fk_rejects_unknown_transaction ... ok
[INFO] [stdout] test infrastructure::sync_adapter::teller::tests::provider_name_is_teller ... ok
[INFO] [stdout] test infrastructure::sync_adapter::monarch::tests::fetch_transactions_paginates_until_short_page ... ok
[INFO] [stdout] test infrastructure::sync_adapter::teller::tests::cursor_pagination_walks_until_short_page ... ok
[INFO] [stdout] test infrastructure::connect::tests::run_times_out_when_no_callback_arrives ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 426 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.71s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rtf-c84706c9d726062d)
[INFO] [stderr]      Running tests/convert_demo.rs (/opt/rustwide/target/debug/deps/convert_demo-607be9d8cb6b9c0f)
[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] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test convert_cli_live_bcb_smoke_test ... ignored, hits live BCB API; run with `cargo test -- --ignored` for manual verification
[INFO] [stdout] test convert_cli_rejects_malformed_amount ... ok
[INFO] [stdout] test convert_cli_rejects_malformed_date ... ok
[INFO] [stdout] test convert_cli_end_to_end_with_seeded_rates ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- convert_cli_end_to_end_with_seeded_rates stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'convert_cli_end_to_end_with_seeded_rates' (480) panicked at tests/convert_demo.rs:197:5:
[INFO] [stdout] assertion failed: out.status.success()
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x609943243d7a - std[29689e6404d28ef9]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x609943243d7a - std[29689e6404d28ef9]::backtrace_rs::backtrace::trace_unsynchronized::<std[29689e6404d28ef9]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x609943243d7a - std[29689e6404d28ef9]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x609943243d7a - <<std[29689e6404d28ef9]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[e929cb53b82a81ca]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x609943258fea - <core[e929cb53b82a81ca]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x609943258fea - core[e929cb53b82a81ca]::fmt::write
[INFO] [stdout]    6:     0x609943248692 - std[29689e6404d28ef9]::io::default_write_fmt::<alloc[9d7caffeb3b5d2c6]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/io/mod.rs:621:11
[INFO] [stdout]    7:     0x609943248692 - <alloc[9d7caffeb3b5d2c6]::vec::Vec<u8> as std[29689e6404d28ef9]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/io/mod.rs:1976:13
[INFO] [stdout]    8:     0x6099432217cf - <std[29689e6404d28ef9]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x6099432217cf - std[29689e6404d28ef9]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x60994323bba9 - std[29689e6404d28ef9]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x60994300ac2c - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn for<'a, 'b> core[e929cb53b82a81ca]::ops::function::Fn<(&'a std[29689e6404d28ef9]::panic::PanicHookInfo<'b>,), Output = ()> + core[e929cb53b82a81ca]::marker::Send + core[e929cb53b82a81ca]::marker::Sync> as core[e929cb53b82a81ca]::ops::function::Fn<(&std[29689e6404d28ef9]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   12:     0x60994300ac2c - test[a24b3028667022f7]::test_main_inner::<test[a24b3028667022f7]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x60994323bd62 - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn for<'a, 'b> core[e929cb53b82a81ca]::ops::function::Fn<(&'a std[29689e6404d28ef9]::panic::PanicHookInfo<'b>,), Output = ()> + core[e929cb53b82a81ca]::marker::Send + core[e929cb53b82a81ca]::marker::Sync> as core[e929cb53b82a81ca]::ops::function::Fn<(&std[29689e6404d28ef9]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   14:     0x60994323bd62 - std[29689e6404d28ef9]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x6099432218ba - std[29689e6404d28ef9]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x6099432169b9 - std[29689e6404d28ef9]::sys::backtrace::__rust_end_short_backtrace::<std[29689e6404d28ef9]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x60994322259d - __rustc[3aed6af316653e63]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x60994325976c - core[e929cb53b82a81ca]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x609943259732 - core[e929cb53b82a81ca]::panicking::panic
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x609942ffb3fb - convert_demo[7fceb5c0a1dd7e39]::convert_cli_end_to_end_with_seeded_rates
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/convert_demo.rs:197:5
[INFO] [stdout]   21:     0x609942ff73c7 - convert_demo[7fceb5c0a1dd7e39]::convert_cli_end_to_end_with_seeded_rates::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/convert_demo.rs:74:46
[INFO] [stdout]   22:     0x609942ffde66 - <convert_demo[7fceb5c0a1dd7e39]::convert_cli_end_to_end_with_seeded_rates::{closure#0} as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x609942ffdf0b - <fn() -> core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x609942ffdf0b - test[a24b3028667022f7]::__rust_begin_short_backtrace::<core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>, fn() -> core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:724:18
[INFO] [stdout]   25:     0x60994300b6fb - test[a24b3028667022f7]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:747:74
[INFO] [stdout]   26:     0x60994300b6fb - <core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   27:     0x60994300b6fb - std[29689e6404d28ef9]::panicking::catch_unwind::do_call::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>, core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x60994300b6fb - std[29689e6404d28ef9]::panicking::catch_unwind::<core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>, core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x60994300b6fb - std[29689e6404d28ef9]::panic::catch_unwind::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>, core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x60994300b6fb - test[a24b3028667022f7]::run_test_in_process
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:747:27
[INFO] [stdout]   31:     0x60994300b6fb - test[a24b3028667022f7]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:668:43
[INFO] [stdout]   32:     0x609943004e14 - test[a24b3028667022f7]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:698:41
[INFO] [stdout]   33:     0x609943004e14 - std[29689e6404d28ef9]::sys::backtrace::__rust_begin_short_backtrace::<test[a24b3028667022f7]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x60994300e302 - std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked::<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   35:     0x60994300e302 - <core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   36:     0x60994300e302 - std[29689e6404d28ef9]::panicking::catch_unwind::do_call::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x60994300e302 - std[29689e6404d28ef9]::panicking::catch_unwind::<(), core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x60994300e302 - std[29689e6404d28ef9]::panic::catch_unwind::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x60994300e302 - std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked::<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   40:     0x60994300e302 - <std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1} as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x60994324368f - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn core[e929cb53b82a81ca]::ops::function::FnOnce<(), Output = ()> + core[e929cb53b82a81ca]::marker::Send> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2271:9
[INFO] [stdout]   42:     0x60994324368f - <std[29689e6404d28ef9]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   43:     0x720149b7eaa4 - <unknown>
[INFO] [stdout]   44:     0x720149c0ba64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     convert_cli_end_to_end_with_seeded_rates
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 2 passed; 1 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.28s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--test convert_demo`
[INFO] running `Command { std: "docker" "inspect" "930b4e65e52b582c017356981c28aee5cf4719a6e42e83fb4e56b63e53ce7277", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "930b4e65e52b582c017356981c28aee5cf4719a6e42e83fb4e56b63e53ce7277", kill_on_drop: false }`
[INFO] [stdout] 930b4e65e52b582c017356981c28aee5cf4719a6e42e83fb4e56b63e53ce7277
