[INFO] cloning repository https://github.com/bengal/netfyr-test-impl
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bengal/netfyr-test-impl" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbengal%2Fnetfyr-test-impl", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbengal%2Fnetfyr-test-impl'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] cb8d8674095e6aaa31bf1115238f0c5c17f9965c
[INFO] testing bengal/netfyr-test-impl against try#33835004928d3bf65db4d4712e1330766263b0bd for pr-155739
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbengal%2Fnetfyr-test-impl" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-0-tc2/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/bengal/netfyr-test-impl
[INFO] finished tweaking git repo https://github.com/bengal/netfyr-test-impl
[INFO] tweaked toml for git repo https://github.com/bengal/netfyr-test-impl written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/bengal/netfyr-test-impl on toolchain 33835004928d3bf65db4d4712e1330766263b0bd
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/bengal/netfyr-test-impl 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" "+33835004928d3bf65db4d4712e1330766263b0bd" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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" "+33835004928d3bf65db4d4712e1330766263b0bd" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5b58eb1972331d57c0d0f25a7ea436ee45849dcd69b71140df23aaa9496b5a9f
[INFO] running `Command { std: "docker" "start" "-a" "5b58eb1972331d57c0d0f25a7ea436ee45849dcd69b71140df23aaa9496b5a9f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5b58eb1972331d57c0d0f25a7ea436ee45849dcd69b71140df23aaa9496b5a9f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5b58eb1972331d57c0d0f25a7ea436ee45849dcd69b71140df23aaa9496b5a9f", kill_on_drop: false }`
[INFO] [stdout] 5b58eb1972331d57c0d0f25a7ea436ee45849dcd69b71140df23aaa9496b5a9f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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" "+33835004928d3bf65db4d4712e1330766263b0bd" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b9d3c92be2ff5db6e2222c21935d9901948471beb37c4430d1c0b7e47987bebb
[INFO] running `Command { std: "docker" "start" "-a" "b9d3c92be2ff5db6e2222c21935d9901948471beb37c4430d1c0b7e47987bebb", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling critical-section v1.2.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling borrow-or-share v0.2.4
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling iri-string v0.7.12
[INFO] [stderr]    Compiling num v0.4.3
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling uuid v1.23.0
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling vsimd v0.8.0
[INFO] [stderr]    Compiling outref v0.5.2
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling fraction v0.15.3
[INFO] [stderr]    Compiling uuid-simd v0.8.0
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling num-cmp v0.1.0
[INFO] [stderr]    Compiling bytecount v0.6.9
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling netlink-packet-core v0.8.1
[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 futures-macro v0.3.32
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling tokio v1.52.0
[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_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling fancy-regex v0.14.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[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 rand_core v0.9.5
[INFO] [stderr]    Compiling tinyvec_macros v0.1.1
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling tinyvec v1.11.0
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling netlink-packet-route v0.28.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling fluent-uri v0.3.2
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling email_address v0.2.9
[INFO] [stderr]    Compiling referencing v0.26.2
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling ipnetwork v0.20.0
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling netlink-sys v0.8.8
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling enum-as-inner v0.6.1
[INFO] [stderr]    Compiling netlink-proto v0.12.0
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling data-encoding v2.10.0
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling hickory-proto v0.25.2
[INFO] [stderr]    Compiling dhcproto-macros v0.2.0
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling jsonschema v0.26.2
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling rtnetlink v0.20.0
[INFO] [stderr]    Compiling dhcproto v0.14.0
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling clap_complete v4.6.2
[INFO] [stderr]    Compiling netfyr-state v0.1.0 (/opt/rustwide/workdir/crates/netfyr-state)
[INFO] [stderr]    Compiling terminal_size v0.4.4
[INFO] [stderr]    Compiling colored v2.2.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling netfyr-policy v0.1.0 (/opt/rustwide/workdir/crates/netfyr-policy)
[INFO] [stderr]    Compiling netfyr-reconcile v0.1.0 (/opt/rustwide/workdir/crates/netfyr-reconcile)
[INFO] [stderr]    Compiling netfyr-backend v0.1.0 (/opt/rustwide/workdir/crates/netfyr-backend)
[INFO] [stderr]    Compiling roff v1.1.1
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling netfyr-journal v0.1.0 (/opt/rustwide/workdir/crates/netfyr-journal)
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling clap_mangen v0.2.33
[INFO] [stderr]    Compiling sd-notify v0.4.5
[INFO] [stderr]    Compiling netfyr-test-utils v0.1.0 (/opt/rustwide/workdir/crates/netfyr-test-utils)
[INFO] [stderr]    Compiling netfyr-varlink v0.1.0 (/opt/rustwide/workdir/crates/netfyr-varlink)
[INFO] [stderr]    Compiling netfyr-cli v0.1.0 (/opt/rustwide/workdir/crates/netfyr-cli)
[INFO] [stderr]    Compiling netfyr-daemon v0.1.0 (/opt/rustwide/workdir/crates/netfyr-daemon)
[INFO] [stderr]    Compiling xtask v0.1.0 (/opt/rustwide/workdir/xtask)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 19s
[INFO] running `Command { std: "docker" "inspect" "b9d3c92be2ff5db6e2222c21935d9901948471beb37c4430d1c0b7e47987bebb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b9d3c92be2ff5db6e2222c21935d9901948471beb37c4430d1c0b7e47987bebb", kill_on_drop: false }`
[INFO] [stdout] b9d3c92be2ff5db6e2222c21935d9901948471beb37c4430d1c0b7e47987bebb
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5f448fde62bc12f6e7c92e272659c88b887494251f6bf65d5b512e54ac92f8a8
[INFO] running `Command { std: "docker" "start" "-a" "5f448fde62bc12f6e7c92e272659c88b887494251f6bf65d5b512e54ac92f8a8", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.52.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling terminal_size v0.4.4
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling netlink-sys v0.8.8
[INFO] [stderr]    Compiling netlink-proto v0.12.0
[INFO] [stderr]    Compiling rtnetlink v0.20.0
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling netfyr-test-utils v0.1.0 (/opt/rustwide/workdir/crates/netfyr-test-utils)
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling jsonschema v0.26.2
[INFO] [stderr]    Compiling netfyr-state v0.1.0 (/opt/rustwide/workdir/crates/netfyr-state)
[INFO] [stderr]    Compiling netfyr-backend v0.1.0 (/opt/rustwide/workdir/crates/netfyr-backend)
[INFO] [stderr]    Compiling netfyr-policy v0.1.0 (/opt/rustwide/workdir/crates/netfyr-policy)
[INFO] [stderr]    Compiling netfyr-reconcile v0.1.0 (/opt/rustwide/workdir/crates/netfyr-reconcile)
[INFO] [stderr]    Compiling netfyr-journal v0.1.0 (/opt/rustwide/workdir/crates/netfyr-journal)
[INFO] [stderr]    Compiling netfyr-varlink v0.1.0 (/opt/rustwide/workdir/crates/netfyr-varlink)
[INFO] [stderr]    Compiling netfyr-cli v0.1.0 (/opt/rustwide/workdir/crates/netfyr-cli)
[INFO] [stderr]    Compiling netfyr-daemon v0.1.0 (/opt/rustwide/workdir/crates/netfyr-daemon)
[INFO] [stderr]    Compiling xtask v0.1.0 (/opt/rustwide/workdir/xtask)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 2m 11s
[INFO] running `Command { std: "docker" "inspect" "5f448fde62bc12f6e7c92e272659c88b887494251f6bf65d5b512e54ac92f8a8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5f448fde62bc12f6e7c92e272659c88b887494251f6bf65d5b512e54ac92f8a8", kill_on_drop: false }`
[INFO] [stdout] 5f448fde62bc12f6e7c92e272659c88b887494251f6bf65d5b512e54ac92f8a8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 2bd3682c5c5b17a2b95a0b167094fef6528d06fa4f2d725a357f1368eae9e7df
[INFO] running `Command { std: "docker" "start" "-a" "2bd3682c5c5b17a2b95a0b167094fef6528d06fa4f2d725a357f1368eae9e7df", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.61s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/netfyr_backend-9d0231c94d1d1dbe)
[INFO] [stdout] 
[INFO] [stdout] running 157 tests
[INFO] [stdout] test dhcp::lease::tests::test_subnet_mask_to_prefix_255_0_0_0_returns_8 ... ok
[INFO] [stdout] test dhcp::lease::tests::test_is_expired_returns_false_for_fresh_lease ... ok
[INFO] [stdout] test dhcp::lease::tests::test_is_expired_returns_true_when_past_lease_time ... ok
[INFO] [stdout] test dhcp::lease::tests::test_subnet_mask_to_prefix_255_255_255_0_returns_24 ... ok
[INFO] [stdout] test dhcp::lease::tests::test_subnet_mask_to_prefix_255_255_255_128_returns_25 ... ok
[INFO] [stdout] test dhcp::lease::tests::test_time_until_expiry_returns_positive_for_fresh_lease ... ok
[INFO] [stdout] test dhcp::lease::tests::test_time_until_rebind_returns_positive_for_fresh_lease ... ok
[INFO] [stdout] test dhcp::lease::tests::test_time_until_rebind_returns_zero_when_t2_passed ... ok
[INFO] [stdout] test dhcp::lease::tests::test_dhcp_lease_clone_and_debug ... ok
[INFO] [stdout] test dhcp::lease::tests::test_time_until_renewal_returns_positive_for_fresh_lease ... ok
[INFO] [stdout] test dhcp::lease::tests::test_is_expired_returns_false_just_before_expiry ... ok
[INFO] [stdout] test dhcp::lease::tests::test_subnet_mask_to_prefix_all_ones_returns_32 ... ok
[INFO] [stdout] test dhcp::lease::tests::test_subnet_mask_to_prefix_all_zeros_returns_0 ... ok
[INFO] [stdout] test dhcp::lease::tests::test_time_until_renewal_returns_zero_when_t1_passed ... ok
[INFO] [stdout] test dhcp::lease::tests::test_timer_ordering_t1_before_t2_before_expiry_for_fresh_lease ... ok
[INFO] [stdout] test dhcp::tests::test_factory_event_error_carries_policy_name_and_message ... ok
[INFO] [stdout] test dhcp::tests::test_factory_event_lease_expired_has_policy_name ... ok
[INFO] [stdout] test dhcp::tests::test_factory_event_lease_renewed_has_policy_name_and_state ... ok
[INFO] [stdout] test dhcp::tests::test_factory_event_lease_acquired_has_policy_name_and_state ... ok
[INFO] [stdout] test dhcp::tests::test_factory_interface_returns_configured_name ... ok
[INFO] [stdout] test dhcp::tests::test_current_state_returns_pending_state_before_lease_acquired ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_enabled_is_always_true_full_lease ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_enabled_is_always_true_minimal_lease ... ok
[INFO] [stdout] test dhcp::tests::test_factory_error_event_sent_and_channel_closes_for_nonexistent_iface ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_multiple_dns_servers ... ok
[INFO] [stdout] test dhcp::tests::test_factory_stop_is_idempotent ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_dns_servers_field ... ok
[INFO] [stdout] test dhcp::lease::tests::test_subnet_mask_to_prefix_255_255_0_0_returns_16 ... ok
[INFO] [stdout] test dhcp::tests::test_factory_sends_error_event_when_interface_not_found ... ok
[INFO] [stdout] test dhcp::lease::tests::test_time_until_expiry_returns_zero_when_expired ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_entity_type_is_ethernet ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_no_dns_produces_no_dns_servers_field ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_satisfies_scenario8_all_required_fields_present ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_no_gateway_produces_no_routes_field ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_policy_ref_matches_policy_name ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_priority_is_stored ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_addresses_contains_cidr ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_selector_name_matches_interface ... ok
[INFO] [stdout] test dhcp::tests::test_pending_state_policy_ref_matches_policy_name ... ok
[INFO] [stdout] test netlink::apply::tests::test_addr_to_cidr_from_ip_addr ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_provenance_is_user_configured ... ok
[INFO] [stdout] test dhcp::tests::test_lease_to_state_routes_contain_default_gateway ... ok
[INFO] [stdout] test netlink::apply::tests::test_addr_to_cidr_from_non_address ... ok
[INFO] [stdout] test netlink::apply::tests::test_addr_to_cidr_from_string ... ok
[INFO] [stdout] test netlink::apply::tests::test_build_planned_changes_add_op_produces_set_kind_no_current ... ok
[INFO] [stdout] test netlink::apply::tests::test_build_planned_changes_modify_existing_field_produces_modify_kind ... ok
[INFO] [stdout] test netlink::apply::tests::test_build_planned_changes_removed_field_produces_unset_kind ... ok
[INFO] [stdout] test netlink::apply::tests::test_extract_route_fields_default_route_with_gateway ... ok
[INFO] [stdout] test netlink::apply::tests::test_extract_route_fields_explicit_metric ... ok
[INFO] [stdout] test netlink::apply::tests::test_extract_route_fields_invalid_destination_returns_error ... ok
[INFO] [stdout] test netlink::apply::tests::test_extract_route_fields_invalid_gateway_returns_error ... ok
[INFO] [stdout] test netlink::apply::tests::test_build_planned_changes_modify_new_field_produces_set_kind ... ok
[INFO] [stdout] test netlink::apply::tests::test_extract_route_fields_valid_without_gateway ... ok
[INFO] [stdout] test netlink::apply::tests::test_parse_cidr_default_route ... ok
[INFO] [stdout] test netlink::apply::tests::test_extract_route_fields_valid_with_gateway ... ok
[INFO] [stdout] test netlink::apply::tests::test_parse_cidr_invalid_prefix_returns_error ... ok
[INFO] [stdout] test netlink::apply::tests::test_extract_route_fields_missing_destination_returns_error ... ok
[INFO] [stdout] test netlink::apply::tests::test_parse_cidr_invalid_ip_returns_error ... ok
[INFO] [stdout] test netlink::apply::tests::test_parse_cidr_missing_slash_returns_error ... ok
[INFO] [stdout] test netlink::apply::tests::test_build_planned_changes_remove_op_empty_current_produces_empty_changes ... ok
[INFO] [stdout] test netlink::apply::tests::test_parse_cidr_valid_ipv6 ... ok
[INFO] [stdout] test netlink::apply::tests::test_parse_cidr_valid_ipv4 ... ok
[INFO] [stdout] test netlink::apply::tests::test_value_to_str_empty_string_variant_returns_some_empty ... ok
[INFO] [stdout] test netlink::apply::tests::test_value_to_str_ipaddr_variant_returns_dotted_decimal ... ok
[INFO] [stdout] test netlink::apply::tests::test_value_to_str_list_variant_returns_none ... ok
[INFO] [stdout] test netlink::apply::tests::test_value_to_str_u64_variant_returns_none ... ok
[INFO] [stdout] test netlink::apply::tests::test_value_to_str_string_variant_returns_inner_string ... ok
[INFO] [stdout] test netlink::apply::tests::test_value_to_str_map_variant_returns_none ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_build_route_value_with_gateway ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_build_route_value_metric_preserved ... ok
[INFO] [stdout] test netlink::apply::tests::test_value_to_str_i64_variant_returns_none ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_build_route_value_without_gateway ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_carrier_byte_one_maps_to_true ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_carrier_byte_zero_maps_to_false ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_carrier_none_defaults_to_false ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_carrier_nonzero_values_map_to_true ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_format_mac_all_ff ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_format_mac_all_zeros ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_format_mac_has_five_colons ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_format_mac_mixed_bytes_produces_lowercase ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_format_mac_length_is_17 ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_is_excluded_kind_excludes_dummy ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_is_excluded_kind_excludes_bridge ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_is_excluded_kind_excludes_macvlan ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_is_excluded_kind_excludes_bond ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_is_excluded_kind_excludes_tun ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_is_excluded_kind_excludes_vlan ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_is_excluded_kind_excludes_wireguard ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_is_excluded_kind_includes_veth ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_kd_list_value_has_kernel_default_provenance ... ok
[INFO] [stdout] test netlink::apply::tests::test_build_planned_changes_remove_op_produces_unset_for_each_current_field ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_build_route_value_gateway_field_absent_when_none ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_is_excluded_kind_excludes_vxlan ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_kd_string_value_has_kernel_default_provenance ... ok
[INFO] [stdout] test netlink::apply::tests::test_addr_to_cidr_from_map ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_kd_u64_value_has_kernel_default_provenance ... ok
[INFO] [stdout] test netlink::apply::tests::test_value_to_str_bool_variant_returns_none ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_kd_bool_value_has_kernel_default_provenance ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_route_address_to_ip_v4 ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_route_address_to_ip_v6 ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_and_logic_both_match ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_and_logic_mac_mismatch_fails ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_driver_match ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_driver_mismatch_does_not_match ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_and_logic_driver_and_name ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_entity_type_match ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_mac_match ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_entity_type_mismatch_does_not_match ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_mac_mismatch_does_not_match ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_name_match ... ok
[INFO] [stdout] test netlink::ethernet::tests::test_route_address_to_ip_other_returns_none ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_name_mismatch_does_not_match ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_pci_path_match ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_pci_path_mismatch_does_not_match ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_sets_driver ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_sets_mac ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_with_all_fields ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_sets_name ... ok
[INFO] [stdout] test netlink::query::tests::test_read_sysfs_driver_nonexistent_interface_returns_none ... ok
[INFO] [stdout] test netlink::query::tests::test_read_sysfs_pci_path_nonexistent_interface_returns_none ... ok
[INFO] [stdout] test netlink::tests::test_netlink_backend_default_has_same_supported_entities_as_new ... ok
[INFO] [stdout] test netlink::tests::test_netlink_backend_new_supports_ethernet_entity_type ... ok
[INFO] [stdout] test report::tests::test_apply_report_is_partial_false_when_only_failed ... ok
[INFO] [stdout] test netlink::query::tests::test_build_discovered_selector_sets_pci_path ... ok
[INFO] [stdout] test report::tests::test_apply_report_is_partial_false_when_only_succeeded ... ok
[INFO] [stdout] test netlink::query::tests::test_read_sysfs_speed_nonexistent_interface_returns_none ... ok
[INFO] [stdout] test report::tests::test_apply_report_is_partial_ignores_skipped ... ok
[INFO] [stdout] test report::tests::test_apply_report_is_partial_when_some_succeed_and_some_fail ... ok
[INFO] [stdout] test netlink::tests::test_netlink_backend_supported_entities_has_exactly_one_ethernet_entry ... ok
[INFO] [stdout] test report::tests::test_apply_report_merge_into_empty ... ok
[INFO] [stdout] test report::tests::test_apply_report_is_success_when_no_failures ... ok
[INFO] [stdout] test report::tests::test_apply_report_new_is_empty ... ok
[INFO] [stdout] test report::tests::test_apply_report_is_success_with_skipped_but_no_failures ... ok
[INFO] [stdout] test netlink::tests::test_query_unsupported_entity_type_returns_error ... ok
[INFO] [stdout] test report::tests::test_apply_report_summary_format ... ok
[INFO] [stdout] test report::tests::test_diff_op_kind_display_add ... ok
[INFO] [stdout] test report::tests::test_apply_report_merge_combines_reports ... ok
[INFO] [stdout] test report::tests::test_diff_op_kind_display_modify ... ok
[INFO] [stdout] test report::tests::test_apply_report_is_total_failure_when_all_fail ... ok
[INFO] [stdout] test report::tests::test_apply_report_summary_all_zeros ... ok
[INFO] [stdout] test report::tests::test_diff_op_kind_display_remove ... ok
[INFO] [stdout] test report::tests::test_dry_run_report_summary_with_changes ... ok
[INFO] [stdout] test report::tests::test_diff_op_kind_from_diff_op_add ... ok
[INFO] [stdout] test report::tests::test_diff_op_kind_from_diff_op_modify ... ok
[INFO] [stdout] test report::tests::test_field_change_set_kind_has_no_current ... ok
[INFO] [stdout] test report::tests::test_diff_op_kind_from_diff_op_remove ... ok
[INFO] [stdout] test report::tests::test_field_change_clone ... ok
[INFO] [stdout] test report::tests::test_field_change_stores_before_and_after_values ... ok
[INFO] [stdout] test report::tests::test_dry_run_report_is_not_empty_when_changes_exist ... ok
[INFO] [stdout] test report::tests::test_dry_run_report_new_is_empty ... ok
[INFO] [stdout] test report::tests::test_field_change_unset_kind_has_no_desired ... ok
[INFO] [stdout] test tests::test_backend_error_internal_display_contains_detail ... ok
[INFO] [stdout] test tests::test_backend_error_permission_denied_display_contains_reason ... ok
[INFO] [stdout] test tests::test_backend_error_not_found_display_contains_entity_type ... ok
[INFO] [stdout] test tests::test_backend_error_unsupported_entity_type_display_contains_name ... ok
[INFO] [stdout] test tests::test_backend_error_variants_are_debug_formattable ... ok
[INFO] [stdout] test report::tests::test_dry_run_report_summary_empty_is_no_changes ... ok
[INFO] [stdout] 
[INFO] [stderr]      Running tests/backend_tests.rs (/opt/rustwide/target/debug/deps/backend_tests-786a841ca0c096cd)
[INFO] [stdout] test result: ok. 157 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 27 tests
[INFO] [stdout] test test_backend_apply_returns_report_with_partial_success ... ok
[INFO] [stdout] test test_apply_report_failed_entry_has_entity_type_selector_and_error ... ok
[INFO] [stdout] test test_apply_report_succeeded_entry_has_entity_type_and_selector ... ok
[INFO] [stdout] test test_backend_apply_all_fail_report_is_total_failure ... ok
[INFO] [stdout] test test_apply_report_skipped_entry_has_entity_type_selector_and_reason ... ok
[INFO] [stdout] test test_backend_apply_all_succeed_report_is_success ... ok
[INFO] [stdout] test test_backend_apply_with_mixed_succeeded_failed_skipped ... ok
[INFO] [stdout] test test_backend_dry_run_returns_dry_run_report_with_all_op_kinds ... ok
[INFO] [stdout] test test_backend_query_returns_empty_stateset_when_no_data ... ok
[INFO] [stdout] test test_dry_run_planned_change_records_operation_kind_and_entity_type ... ok
[INFO] [stdout] test test_backend_query_unsupported_entity_type_returns_error ... ok
[INFO] [stdout] test test_dry_run_report_field_changes_show_current_and_desired ... ok
[INFO] [stdout] test test_backend_query_with_selector_filters_to_single_entity ... ok
[INFO] [stdout] test test_mock_backend_implements_all_trait_methods_and_compiles ... ok
[INFO] [stdout] test test_backend_query_returns_stateset_for_supported_type ... ok
[INFO] [stderr]      Running tests/dhcp_factory.rs (/opt/rustwide/target/debug/deps/dhcp_factory-c81feca35b3d034a)
[INFO] [stdout] test test_dry_run_report_is_empty_for_empty_diff ... ok
[INFO] [stdout] test test_registry_register_and_lookup_by_entity_type ... ok
[INFO] [stdout] test test_registry_apply_unknown_entity_type_fails_others_still_applied ... ok
[INFO] [stdout] test test_registry_query_unregistered_type_returns_unsupported_error ... ok
[INFO] [stdout] test test_registry_apply_dispatches_ops_to_correct_backend ... ok
[INFO] [stdout] test test_registry_query_all_queries_every_backend_and_merges_results ... ok
[INFO] [stdout] test test_registry_query_delegates_to_registered_backend ... ok
[INFO] [stdout] test test_registry_register_conflicting_entity_type_fails ... ok
[INFO] [stdout] test test_registry_supported_entities_empty_when_no_backends_registered ... ok
[INFO] [stdout] test test_registry_register_same_arc_twice_is_noop ... ok
[INFO] [stdout] test test_registry_supported_entities_returns_all_registered_types ... ok
[INFO] [stdout] test test_registry_two_backends_different_entity_types_each_routed_correctly ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 27 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test test_factory_retries_on_discovery_timeout ... ok
[INFO] [stderr]      Running tests/netlink_apply.rs (/opt/rustwide/target/debug/deps/netlink_apply-6a7fb2dc565fb757)
[INFO] [stdout] test test_lease_renewal_in_namespace ... ok
[INFO] [stdout] test test_acquire_dhcp_lease_in_unprivileged_namespace ... ok
[INFO] [stdout] test test_current_state_returns_some_after_lease_acquired ... ok
[INFO] [stdout] test test_current_state_full_fields_after_lease_acquired ... ok
[INFO] [stdout] test test_factory_stop_releases_lease_in_namespace ... ok
[INFO] [stdout] test test_rebind_succeeds_after_server_restart ... ok
[INFO] [stdout] test test_lease_expired_event_when_dhcp_server_stops ... ok
[INFO] [stdout] test test_renew_succeeds_after_server_restart ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 33 tests
[INFO] [stdout] test test_apply_field_order_link_mtu_addresses_routes ... ok
[INFO] [stdout] test test_apply_add_existing_address_is_idempotent ... ok
[INFO] [stdout] test test_apply_add_ip_address_to_interface ... ok
[INFO] [stdout] test test_apply_add_existing_address_no_failure_idempotent ... ok
[INFO] [stdout] test test_apply_add_route_in_namespace ... ok
[INFO] [stdout] test test_apply_failed_operation_for_nonexistent_interface_names_it ... ok
[INFO] [stdout] test test_apply_add_existing_address_idempotent_is_success_true ... ok
[INFO] [stdout] test test_apply_add_then_remove_address_roundtrip ... ok
[INFO] [stdout] test test_apply_mtu_skipped_when_already_at_desired_value ... ok
[INFO] [stdout] test test_apply_ignores_non_ethernet_entity_types ... ok
[INFO] [stdout] test test_apply_partial_failure_is_partial_true ... ok
[INFO] [stdout] test test_apply_remove_ip_address_from_interface ... ok
[INFO] [stdout] test test_apply_preserves_kernel_prefix_route_static_policy ... ok
[INFO] [stdout] test test_apply_preserves_kernel_prefix_route_dhcp_policy ... ok
[INFO] [stdout] test test_apply_nonexistent_interface_reports_failure_with_not_found ... ok
[INFO] [stdout] test test_apply_prefix_route_updates_on_static_address_change ... ok
[INFO] [stdout] test test_apply_permission_denied_when_not_root_outside_namespace ... ok
[INFO] [stdout] test test_apply_remove_nonexistent_address_idempotent_is_success_true ... ok
[INFO] [stdout] test test_apply_remove_nonexistent_address_is_idempotent ... ok
[INFO] [stdout] test test_apply_modify_mtu_sets_mtu_to_desired_value ... ok
[INFO] [stdout] test test_apply_remove_nonexistent_route_counts_as_success ... ok
[INFO] [stdout] test test_apply_remove_route_from_interface ... ok
[INFO] [stdout] test test_apply_remove_operation_deconfigures_but_keeps_interface ... ok
[INFO] [stdout] test test_apply_single_failure_is_total_failure ... ok
[INFO] [stdout] test test_dry_run_empty_diff_produces_empty_report ... ok
[INFO] [stderr]      Running tests/netlink_ethernet.rs (/opt/rustwide/target/debug/deps/netlink_ethernet-153ae40af63bd8e8)
[INFO] [stdout] test test_apply_report_summary_format_for_successful_operation ... ok
[INFO] [stdout] test test_dry_run_shows_planned_mtu_change_without_modifying_system ... ok
[INFO] [stdout] test test_dry_run_ignores_non_ethernet_entity_types ... ok
[INFO] [stdout] test test_dry_run_multiple_ops_each_get_planned_change ... ok
[INFO] [stdout] test test_dry_run_planned_mtu_change_has_correct_field_change_kind ... ok
[INFO] [stdout] test test_apply_skips_readonly_fields_carrier_and_speed ... ok
[INFO] [stdout] test test_apply_then_query_shows_updated_state ... ok
[INFO] [stdout] test test_dry_run_nonexistent_interface_appears_in_skipped ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 35 tests
[INFO] [stdout] test test_addresses_field_is_always_a_list ... ok
[INFO] [stdout] test test_enabled_false_carrier_false_after_admin_down ... ok
[INFO] [stdout] test test_all_fields_have_kernel_default_provenance ... ok
[INFO] [stdout] test test_and_selector_logic ... ok
[INFO] [stdout] test test_enabled_false_carrier_false_when_both_down ... ok
[INFO] [stdout] test test_carrier_is_true_when_both_veth_ends_are_up ... ok
[INFO] [stdout] test test_netlinkbackend_supports_ethernet_entity_type ... ok
[INFO] [stdout] test test_netlinkbackend_query_unsupported_entity_type_returns_error ... ok
[INFO] [stdout] test test_enabled_field_is_present_and_is_valid_bool ... ok
[INFO] [stdout] test test_driver_selector_no_match_when_veth_has_no_driver ... ok
[INFO] [stdout] test test_mtu_reported_correctly ... ok
[INFO] [stdout] test test_enabled_true_carrier_false_when_peer_down ... ok
[INFO] [stdout] test test_link_down_carrier_false_and_no_speed ... ok
[INFO] [stdout] test test_netlinkbackend_trait_query_with_name_selector ... ok
[INFO] [stdout] test test_netlinkbackend_trait_query_not_found_for_missing_interface ... ok
[INFO] [stdout] test test_query_all_returns_ethernet_interfaces ... ok
[INFO] [stdout] test test_enabled_true_carrier_true_when_both_up ... ok
[INFO] [stdout] test test_query_all_returned_entities_have_ethernet_type ... ok
[INFO] [stdout] test test_query_by_name_selector_returns_one_entity ... ok
[INFO] [stdout] test test_query_all_veth_pair_returns_two_entities ... ok
[INFO] [stdout] test test_query_all_via_backend_matches_direct_query ... ok
[INFO] [stdout] test test_query_excludes_ipv6_addresses ... ok
[INFO] [stdout] test test_query_by_mac_address ... ok
[INFO] [stdout] test test_query_excludes_bond_interface ... ok
[INFO] [stdout] test test_query_excludes_bridge_interface ... ok
[INFO] [stdout] test test_query_by_mac_selects_second_veth_excludes_first ... ok
[INFO] [stdout] test test_query_excludes_loopback_interface_in_fresh_namespace ... ok
[INFO] [stdout] test test_query_excludes_vlan_interface ... ok
[INFO] [stdout] test test_query_includes_ip_addresses ... ok
[INFO] [stdout] test test_query_nonexistent_interface_error_captures_entity_type ... ok
[INFO] [stdout] test test_query_veth_spec_comprehensive_scenario ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/netfyr_cli-8e02dd8400b5f991)
[INFO] [stdout] test test_query_includes_route_with_gateway_field ... ok
[INFO] [stdout] test test_query_nonexistent_interface_returns_not_found ... ok
[INFO] [stdout] test test_routes_field_is_always_a_list ... ok
[INFO] [stdout] test test_query_includes_connected_subnet_route ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 35 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 392 tests
[INFO] [stdout] test apply::tests::test_apply_outcomes_empty_diff_and_empty_report_no_panic ... ok
[INFO] [stdout] test apply::tests::test_apply_outcomes_unmatched_operations_default_to_skipped ... ok
[INFO] [stdout] test apply::tests::test_apply_outcomes_maps_per_entity_results_to_field_outcomes ... ok
[INFO] [stdout] test apply::tests::test_apply_outcomes_sets_all_field_changes_in_entity_to_same_outcome ... ok
[INFO] [stdout] test apply::tests::test_apply_outcomes_entity_type_is_used_in_matching ... ok
[INFO] [stdout] test apply::tests::test_daemon_exit_code_all_succeeded_no_conflicts_returns_exit_0 ... ok
[INFO] [stdout] test apply::tests::test_daemon_exit_code_conflicts_present_returns_exit_1 ... ok
[INFO] [stdout] test apply::tests::test_daemon_exit_code_total_failure_returns_exit_2 ... ok
[INFO] [stdout] test apply::tests::test_daemon_exit_code_partial_failure_with_conflicts_returns_exit_1 ... ok
[INFO] [stdout] test apply::tests::test_daemon_exit_code_zero_changes_no_conflicts_returns_exit_0 ... ok
[INFO] [stdout] test apply::tests::test_determine_exit_code_all_succeeded_no_conflicts_returns_exit_0 ... ok
[INFO] [stdout] test apply::tests::test_daemon_exit_code_partial_failure_returns_exit_1 ... ok
[INFO] [stdout] test apply::tests::test_determine_exit_code_partial_failure_returns_exit_1 ... ok
[INFO] [stdout] test apply::tests::test_determine_exit_code_conflicts_but_no_failures_returns_exit_1 ... ok
[INFO] [stdout] test apply::tests::test_determine_exit_code_total_failure_returns_exit_2 ... ok
[INFO] [stdout] test apply::tests::test_determine_exit_code_empty_report_no_conflicts_returns_exit_0 ... ok
[INFO] [stdout] test apply::tests::test_display_apply_report_no_panic_empty_report_no_conflicts ... ok
[INFO] [stdout] test apply::tests::test_determine_exit_code_only_conflicts_no_failures_returns_exit_1_not_2 ... ok
[INFO] [stdout] test apply::tests::test_display_apply_report_no_panic_mixed_operation_types ... ok
[INFO] [stdout] test apply::tests::test_display_apply_report_no_panic_operation_with_empty_fields_changed ... ok
[INFO] [stdout] test apply::tests::test_display_apply_report_no_panic_single_add_operation ... ok
[INFO] [stdout] test apply::tests::test_display_apply_report_no_panic_single_remove_operation ... ok
[INFO] [stdout] test apply::tests::test_display_apply_report_no_panic_partial_failure ... ok
[INFO] [stdout] test apply::tests::test_display_apply_report_no_panic_total_failure ... ok
[INFO] [stdout] test apply::tests::test_display_apply_report_no_panic_with_conflict_warning ... ok
[INFO] [stdout] test apply::tests::test_load_policies_bare_state_yaml_factory_type_is_static ... ok
[INFO] [stdout] test apply::tests::test_load_policies_bare_state_policy_name_derived_from_filename ... ok
[INFO] [stdout] test apply::tests::test_load_policies_directory_each_policy_accessible_by_name ... ok
[INFO] [stdout] test apply::tests::test_load_policies_bare_state_yaml_default_priority_is_100 ... ok
[INFO] [stdout] test apply::tests::test_load_policies_dhcpv4_policy_file_loads_with_dhcpv4_factory_type ... ok
[INFO] [stdout] test apply::tests::test_load_policies_duplicate_policy_name_across_paths_returns_error ... ok
[INFO] [stdout] test apply::tests::test_load_policies_directory_loads_multiple_yaml_files ... ok
[INFO] [stdout] test apply::tests::test_load_policies_empty_directory_returns_empty_policy_set ... ok
[INFO] [stdout] test apply::tests::test_load_policies_nonexistent_path_returns_error_with_path_not_found ... ok
[INFO] [stdout] test apply::tests::test_load_policies_invalid_yaml_returns_error ... ok
[INFO] [stdout] test apply::tests::test_load_policies_nonexistent_path_error_includes_path_in_message ... ok
[INFO] [stdout] test apply::tests::test_load_policies_single_valid_file_returns_one_policy ... ok
[INFO] [stdout] test apply::tests::test_load_policies_two_file_paths_combined_into_single_policy_set ... ok
[INFO] [stdout] test apply::tests::test_display_dry_run_report_no_panic_empty_diff_is_empty_false ... ok
[INFO] [stdout] test apply::tests::test_display_dry_run_report_no_panic_when_no_changes ... ok
[INFO] [stdout] test apply::tests::test_display_dry_run_report_no_panic_with_diff_operations ... ok
[INFO] [stdout] test apply::tests::test_validate_policies_unknown_field_returns_error_with_policy_name_and_field_name ... ok
[INFO] [stdout] test apply::tests::test_run_apply_dhcp_policy_without_daemon_returns_error_with_daemon_message ... ok
[INFO] [stdout] test apply::tests::test_validate_policies_mtu_below_schema_minimum_returns_error ... ok
[INFO] [stdout] test apply::tests::test_validate_policies_empty_policy_set_returns_ok ... ok
[INFO] [stdout] test apply::tests::test_validate_policies_error_message_uses_policy_name_and_field_prefix_format ... ok
[INFO] [stdout] test apply::tests::test_validate_policies_multiple_invalid_states_collects_all_errors ... ok
[INFO] [stdout] test apply::tests::test_validate_policies_valid_ethernet_state_returns_ok ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_absolute_timestamps_flag ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_apply_subcommand ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_color_enum_values ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_count_flag ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_dry_run_flag ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_output_flag ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_command_name_netfyr ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_color_global_flag ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_output_format_enum_values ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_history_subcommand ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_completions_subcommand ... ok
[INFO] [stdout] _netfyr() {
[INFO] [stdout]     local i cur prev opts cmd
[INFO] [stdout]     COMPREPLY=()
[INFO] [stdout]     if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
[INFO] [stdout]         cur="$2"
[INFO] [stdout]     else
[INFO] [stdout]         cur="${COMP_WORDS[COMP_CWORD]}"
[INFO] [stdout]     fi
[INFO] [stdout]     prev="$3"
[INFO] [stdout]     cmd=""
[INFO] [stdout]     opts=""
[INFO] [stdout] 
[INFO] [stdout]     for i in "${COMP_WORDS[@]:0:COMP_CWORD}"
[INFO] [stdout]     do
[INFO] [stdout]         case "${cmd},${i}" in
[INFO] [stdout]             ",$1")
[INFO] [stdout]                 cmd="netfyr"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr,apply)
[INFO] [stdout]                 cmd="netfyr__subcmd__apply"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr,completions)
[INFO] [stdout]                 cmd="netfyr__subcmd__completions"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr,diagnose)
[INFO] [stdout]                 cmd="netfyr__subcmd__diagnose"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr,help)
[INFO] [stdout]                 cmd="netfyr__subcmd__help"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr,history)
[INFO] [stdout]                 cmd="netfyr__subcmd__history"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr,query)
[INFO] [stdout]                 cmd="netfyr__subcmd__query"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr,revert)
[INFO] [stdout]                 cmd="netfyr__subcmd__revert"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr,show)
[INFO] [stdout]                 cmd="netfyr__subcmd__show"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr__subcmd__help,apply)
[INFO] [stdout]                 cmd="netfyr__subcmd__help__subcmd__apply"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr__subcmd__help,completions)
[INFO] [stdout]                 cmd="netfyr__subcmd__help__subcmd__completions"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr__subcmd__help,diagnose)
[INFO] [stdout]                 cmd="netfyr__subcmd__help__subcmd__diagnose"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr__subcmd__help,help)
[INFO] [stdout]                 cmd="netfyr__subcmd__help__subcmd__help"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr__subcmd__help,history)
[INFO] [stdout]                 cmd="netfyr__subcmd__help__subcmd__history"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr__subcmd__help,query)
[INFO] [stdout]                 cmd="netfyr__subcmd__help__subcmd__query"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr__subcmd__help,revert)
[INFO] [stdout]                 cmd="netfyr__subcmd__help__subcmd__revert"
[INFO] [stdout]                 ;;
[INFO] [stdout]             netfyr__subcmd__help,show)
[INFO] [stdout]                 cmd="netfyr__subcmd__help__subcmd__show"
[INFO] [stdout]                 ;;
[INFO] [stdout]             *)
[INFO] [stdout]                 ;;
[INFO] [stdout]         esac
[INFO] [stdout]     done
[INFO] [stdout] 
[INFO] [stdout]     case "${cmd}" in
[INFO] [stdout]         netfyr)
[INFO] [stdout]             opts="-h --color --help apply query history revert diagnose show completions help"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 --color)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "auto always never" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__apply)
[INFO] [stdout]             opts="-h --dry-run --color --help [PATHS]..."
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 --color)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "auto always never" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__completions)
[INFO] [stdout]             opts="-h --color --help bash elvish fish powershell zsh"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 --color)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "auto always never" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__diagnose)
[INFO] [stdout]             opts="-s -o -h --selector --since --output --color --help"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 --selector)
[INFO] [stdout]                     COMPREPLY=($(compgen -f "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 -s)
[INFO] [stdout]                     COMPREPLY=($(compgen -f "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 --since)
[INFO] [stdout]                     COMPREPLY=($(compgen -f "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 --output)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "text json" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 -o)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "text json" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 --color)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "auto always never" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__help)
[INFO] [stdout]             opts="apply query history revert diagnose show completions help"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__help__subcmd__apply)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__help__subcmd__completions)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__help__subcmd__diagnose)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__help__subcmd__help)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__help__subcmd__history)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__help__subcmd__query)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__help__subcmd__revert)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__help__subcmd__show)
[INFO] [stdout]             opts=""
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__history)
[INFO] [stdout]             opts="-n -s -o -h --count --since --trigger --selector --show --output --absolute-timestamps --color --help"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 --count)
[INFO] [stdout]                     COMPREPLY=($(compgen -f "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 -n)
[INFO] [stdout]                     COMPREPLY=($(compgen -f "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 --since)
[INFO] [stdout]                     COMPREPLY=($(compgen -f "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 --trigger)
[INFO] [stdout]                     COMPREPLY=($(compgen -f "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 --selector)
[INFO] [stdout]                     COMPREPLY=($(compgen -f "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 -s)
[INFO] [stdout]                     COMPREPLY=($(compgen -f "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 --show)
[INFO] [stdout]                     COMPREPLY=($(compgen -f "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 --output)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "text json" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 -o)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "text json" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 --color)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "auto always never" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__query)
[INFO] [stdout]             opts="-s -o -h --selector --output --color --help"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 --selector)
[INFO] [stdout]                     COMPREPLY=($(compgen -f "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 -s)
[INFO] [stdout]                     COMPREPLY=($(compgen -f "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 --output)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "yaml json" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 -o)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "yaml json" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 --color)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "auto always never" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__revert)
[INFO] [stdout]             opts="-h --dry-run --color --help <TARGET>"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 --color)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "auto always never" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]         netfyr__subcmd__show)
[INFO] [stdout]             opts="-o -h --output --color --help"
[INFO] [stdout]             if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
[INFO] [stdout]                 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]                 return 0
[INFO] [stdout]             fi
[INFO] [stdout]             case "${prev}" in
[INFO] [stdout]                 --output)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "text json" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 -o)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "text json" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 --color)
[INFO] [stdout]                     COMPREPLY=($(compgen -W "auto always never" -- "${cur}"))
[INFO] [stdout]                     return 0
[INFO] [stdout]                     ;;
[INFO] [stdout]                 *)
[INFO] [stdout]                     COMPREPLY=()
[INFO] [stdout]                     ;;
[INFO] [stdout]             esac
[INFO] [stdout]             COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
[INFO] [stdout]             return 0
[INFO] [stdout]             ;;
[INFO] [stdout]     esac
[INFO] [stdout] }
[INFO] [stdout] 
[INFO] [stdout] if [[ "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 || "${BASH_VERSINFO[0]}" -gt 4 ]]; then
[INFO] [stdout]     complete -F _netfyr -o nosort -o bashdefault -o default netfyr
[INFO] [stdout] else
[INFO] [stdout]     complete -F _netfyr -o bashdefault -o default netfyr
[INFO] [stdout] fi
[INFO] [stdout] test completions::tests::test_generate_bash_completion_exit_code_success ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_selector_flag ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_query_subcommand ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_revert_subcommand ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_trigger_flag ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_output_is_non_empty ... ok
[INFO] [stdout] test diagnose::tests::test_carrier_loss_details_include_seq_and_time ... ok
[INFO] [stdout] test diagnose::tests::test_carrier_loss_outside_window_not_reported_when_carrier_recovered ... ok
[INFO] [stdout] test diagnose::tests::test_carrier_loss_suggests_checking_cable_or_switch_port ... ok
[INFO] [stdout] test diagnose::tests::test_carrier_loss_within_wider_window_is_reported ... ok
[INFO] [stdout] test completions::tests::test_invalid_shell_argument_is_rejected_by_clap_with_error ... ok
[INFO] [stdout] test diagnose::tests::test_dhcp_lease_lost_suggests_checking_server_reachability ... ok
[INFO] [stdout] test diagnose::tests::test_dhcp_lease_lost_when_expire_without_acquire ... ok
[INFO] [stdout] test diagnose::tests::test_discover_entities_empty_when_no_data ... ok
[INFO] [stdout] test diagnose::tests::test_discover_entities_from_last_applied_state_after ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_since_flag ... ok
[INFO] [stdout] test completions::tests::test_invalid_shell_argument_error_message_indicates_invalid_value ... ok
[INFO] [stdout] test diagnose::tests::test_drift_no_finding_when_no_last_applied ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_output_is_a_bash_script ... ok
[INFO] [stdout] test completions::tests::test_generate_bash_completion_contains_show_flag ... ok
[INFO] [stdout] test diagnose::tests::test_discover_entities_falls_back_to_window_entries ... ok
[INFO] [stdout] test diagnose::tests::test_drift_mtu_mismatch_produces_warning_finding ... ok
[INFO] [stdout] test diagnose::tests::test_carrier_loss_detected_when_current_state_has_carrier_false ... ok
[INFO] [stdout] test diagnose::tests::test_drift_multiple_fields_all_appear_in_details ... ok
[INFO] [stdout] test diagnose::tests::test_drift_no_finding_when_state_matches_policy ... ok
[INFO] [stdout] test diagnose::tests::test_drift_skips_read_only_carrier_field ... ok
[INFO] [stdout] test diagnose::tests::test_exit_code_0_when_only_info_findings ... ok
[INFO] [stdout] test diagnose::tests::test_exit_code_0_when_no_findings ... ok
[INFO] [stdout] test diagnose::tests::test_drift_suggests_apply_action ... ok
[INFO] [stdout] test diagnose::tests::test_drift_suggests_revert_with_correct_seq ... ok
[INFO] [stdout] test diagnose::tests::test_exit_code_2_when_critical_findings ... ok
[INFO] [stdout] test diagnose::tests::test_exit_code_2_when_mixed_critical_and_warning ... ok
[INFO] [stdout] test diagnose::tests::test_exit_code_1_when_only_warning_findings ... ok
[INFO] [stdout] test diagnose::tests::test_failed_apply_detected_when_outcome_has_failures ... ok
[INFO] [stdout] test diagnose::tests::test_failed_apply_suggests_history_show_with_seq ... ok
[INFO] [stdout] test diagnose::tests::test_format_text_critical_before_warning_before_healthy ... ok
[INFO] [stdout] test diagnose::tests::test_format_text_includes_severity_label_in_header ... ok
[INFO] [stdout] test diagnose::tests::test_format_text_healthy_entity_shows_healthy_and_no_drift ... ok
[INFO] [stdout] test diagnose::tests::test_filter_entities_by_name_selector ... ok
[INFO] [stdout] test diagnose::tests::test_format_json_related_entries_is_array_of_u64 ... ok
[INFO] [stdout] test diagnose::tests::test_format_json_produces_valid_array_with_required_fields ... ok
[INFO] [stdout] test diagnose::tests::test_format_json_severity_and_pattern_are_snake_case ... ok
[INFO] [stdout] test diagnose::tests::test_no_carrier_loss_when_carrier_has_recovered ... ok
[INFO] [stdout] test diagnose::tests::test_format_text_suggested_actions_have_arrow_prefix ... ok
[INFO] [stdout] test diagnose::tests::test_no_dhcp_lease_lost_when_acquire_follows_expire ... ok
[INFO] [stdout] test diagnose::tests::test_no_recent_activity_not_reported_when_entity_in_window ... ok
[INFO] [stdout] test diagnose::tests::test_no_failed_apply_when_all_succeed ... ok
[INFO] [stdout] test diagnose::tests::test_no_dhcp_lease_lost_when_renewal_follows_expire ... ok
[INFO] [stdout] test diagnose::tests::test_no_selector_returns_all_entities ... ok
[INFO] [stdout] test diagnose::tests::test_no_recurring_flaps_without_oscillation ... ok
[INFO] [stdout] test diagnose::tests::test_no_recurring_flaps_with_three_or_fewer_changes ... ok
[INFO] [stdout] test diagnose::tests::test_parse_diagnose_selector_invalid_key_returns_error ... ok
[INFO] [stdout] test diagnose::tests::test_parse_diagnose_selector_valid_name ... ok
[INFO] [stdout] test diagnose::tests::test_parse_diagnose_selector_no_equals_returns_error ... ok
[INFO] [stdout] test diagnose::tests::test_no_recent_activity_when_entity_not_in_window ... ok
[INFO] [stdout] test diagnose::tests::test_recurring_flaps_mentions_affected_field_and_count ... ok
[INFO] [stdout] test diagnose::tests::test_run_analysis_empty_journal_returns_success ... ok
[INFO] [stdout] test diagnose::tests::test_run_analysis_exit_code_2_with_carrier_loss_finding ... ok
[INFO] [stdout] test history::tests::test_changes_summary_10_plus_10_addresses_shows_only_counts ... ok
[INFO] [stdout] test diagnose::tests::test_recurring_flaps_detected_with_oscillating_carrier ... ok
[INFO] [stdout] test history::tests::test_changes_summary_3_addresses_no_abbreviation ... ok
[INFO] [stdout] test history::tests::test_changes_summary_address_string_vs_object_not_double_counted ... ok
[INFO] [stdout] test history::tests::test_changes_summary_5_addr_additions_3_removals_shows_all ... ok
[INFO] [stdout] test history::tests::test_changes_summary_default_route_addition_shown_by_value ... ok
[INFO] [stdout] test history::tests::test_changes_summary_default_route_and_non_default_routes_mixed ... ok
[INFO] [stdout] test history::tests::test_changes_summary_default_route_removal_shown_by_value ... ok
[INFO] [stdout] test diagnose::tests::test_severity_ordering_is_critical_warning_info_healthy ... ok
[INFO] [stdout] test history::tests::test_changes_summary_address_priority_prefers_non_link_local ... ok
[INFO] [stdout] test history::tests::test_changes_summary_dns_nameserver_addition_shows_ns_shorthand ... ok
[INFO] [stdout] test history::tests::test_changes_summary_dns_nameserver_removal_shows_ns_shorthand ... ok
[INFO] [stdout] test history::tests::test_changes_summary_dns_search_domain_change_shows_scalar_notation ... ok
[INFO] [stdout] test diagnose::tests::test_run_analysis_selector_limits_analysis_to_matching_entity ... ok
[INFO] [stdout] test diagnose::tests::test_run_analysis_json_output_with_drift_returns_exit_code_1 ... ok
[INFO] [stdout] test history::tests::test_changes_summary_empty_ops_returns_none_string ... ok
[INFO] [stdout] test history::tests::test_changes_summary_list_field_additions_shows_plus_n_notation ... ok
[INFO] [stdout] test history::tests::test_changes_summary_list_field_removals_shows_minus_n_notation ... ok
[INFO] [stdout] test history::tests::test_changes_summary_list_field_unchanged_content_produces_no_changes ... ok
[INFO] [stdout] test history::tests::test_changes_summary_modify_with_existing_field_shows_tilde_field ... ok
[INFO] [stdout] test history::tests::test_changes_summary_multiple_add_ops_returns_plus_n_entities ... ok
[INFO] [stdout] test history::tests::test_changes_summary_mixed_add_and_remove_entity_ops_shows_individual_tokens ... ok
[INFO] [stdout] test diagnose::tests::test_run_analysis_exit_code_0_when_all_healthy ... ok
[INFO] [stdout] test history::tests::test_changes_summary_mtu_scalar_change_from_1500_to_9000 ... ok
[INFO] [stdout] test history::tests::test_changes_summary_new_field_set_shows_plus_field ... ok
[INFO] [stdout] test history::tests::test_changes_summary_non_default_routes_show_destinations ... ok
[INFO] [stdout] test history::tests::test_changes_summary_list_field_additions_and_removals_shows_combined_notation ... ok
[INFO] [stdout] test history::tests::test_changes_summary_single_add_op_returns_plus_entity ... ok
[INFO] [stdout] test history::tests::test_changes_summary_orders_fields_canonically ... ok
[INFO] [stdout] test diagnose::tests::test_run_analysis_exit_code_1_with_drift_finding ... ok
[INFO] [stdout] test history::tests::test_changes_summary_single_remove_op_returns_minus_entity ... ok
[INFO] [stdout] test history::tests::test_changes_summary_two_address_changes_show_both_values ... ok
[INFO] [stdout] test history::tests::test_changes_summary_unset_field_shows_minus_field ... ok
[INFO] [stdout] test history::tests::test_entities_summary_4_to_6_entities_prioritizes_lifecycle_over_modify ... ok
[INFO] [stdout] test history::tests::test_entities_summary_dns_entity_shows_sys_prefix ... ok
[INFO] [stdout] test history::tests::test_entities_summary_add_op_shows_plus_prefix ... ok
[INFO] [stdout] test history::tests::test_entities_summary_fitted_already_compact_passes_through ... ok
[INFO] [stdout] test history::tests::test_entities_summary_empty_ops_returns_none_string ... ok
[INFO] [stdout] test history::tests::test_entities_summary_fitted_narrow_degrades_to_pure_count ... ok
[INFO] [stdout] test history::tests::test_entities_summary_fitted_three_entities_degrades_to_two_plus_count ... ok
[INFO] [stdout] test history::tests::test_entities_summary_hostname_entity_shows_sys_prefix ... ok
[INFO] [stdout] test history::tests::test_entities_summary_ntp_entity_shows_sys_prefix ... ok
[INFO] [stdout] test history::tests::test_entities_summary_modify_op_shows_no_prefix ... ok
[INFO] [stdout] test history::tests::test_entities_summary_many_entities_truncated_with_plus_n_more ... ok
[INFO] [stdout] test history::tests::test_entities_summary_remove_op_shows_minus_prefix ... ok
[INFO] [stdout] test history::tests::test_entities_summary_mixed_interface_and_system_entities ... ok
[INFO] [stdout] test history::tests::test_entities_summary_seven_plus_entities_shows_aggregate_counts ... ok
[INFO] [stdout] test history::tests::test_changes_summary_single_address_addition_shows_actual_value ... ok
[INFO] [stdout] test history::tests::test_filter_entries_30_entries_count_20_returns_exactly_20 ... ok
[INFO] [stdout] test history::tests::test_entities_summary_single_entity_returns_name ... ok
[INFO] [stdout] test history::tests::test_entities_summary_two_entities_returns_comma_separated ... ok
[INFO] [stdout] test history::tests::test_entities_summary_three_short_entities_shown_in_full ... ok
[INFO] [stdout] test history::tests::test_entities_summary_fitted_returns_full_when_fits ... ok
[INFO] [stdout] test history::tests::test_filter_entries_all_three_filters_combined_and_logic ... ok
[INFO] [stdout] test history::tests::test_filter_entries_default_count_20_returns_20_from_30_entries_without_filters ... ok
[INFO] [stdout] test history::tests::test_filter_entries_count_limits_number_of_results ... ok
[INFO] [stdout] test history::tests::test_filter_entries_selector_filter_shows_only_entities_matching_name ... ok
[INFO] [stdout] test history::tests::test_format_json_detail_produces_valid_json_object_with_correct_seq ... ok
[INFO] [stdout] test history::tests::test_format_json_list_each_element_has_journal_entry_fields ... ok
[INFO] [stdout] test history::tests::test_filter_entries_combined_filters_use_and_logic ... ok
[INFO] [stdout] test history::tests::test_filter_entries_trigger_filter_shows_only_matching_entries ... ok
[INFO] [stdout] test history::tests::test_format_json_list_produces_valid_json_array_with_correct_count ... ok
[INFO] [stdout] test history::tests::test_filter_entries_since_1h_filters_out_older_entries ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_annotation_colors_are_correct ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_applied_annotation_shown_only_with_mixed_outcomes ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_empty_diff_shows_no_changes ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_external_change_outcome_is_observed ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_external_change_has_no_field_outcome_annotations ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_external_change_trigger_line_includes_changed_entity_names ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_no_annotations_when_all_fields_succeeded ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_list_field_annotation_per_element ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_no_active_policies_omits_policies_section ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_outcome_shows_full_breakdown_with_skipped ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_per_field_annotations_on_mixed_outcomes ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_shows_entry_number_and_timestamp ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_shows_list_field_as_per_element_diff ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_shows_active_policies_section ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_shows_outcome_section ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_route_with_zero_metric_omits_metric_suffix ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_route_with_nonzero_metric_shows_metric ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_scalar_change_colors_entire_line_not_just_prefix ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_shows_route_element_readable_format ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_shows_scalar_change_as_unified_diff ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_shows_state_after_section ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_shows_trigger_with_source ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_timestamp_always_full_iso8601_format ... ok
[INFO] [stdout] test history::tests::test_format_text_list_absolute_timestamps_shows_full_format ... ok
[INFO] [stdout] test history::tests::test_format_text_list_contains_header_with_all_column_names ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_state_after_addresses_yaml_block_sequence ... ok
[INFO] [stdout] test history::tests::test_format_text_list_entities_column_width_adapts_to_content ... ok
[INFO] [stdout] test history::tests::test_format_text_list_daemon_startup_separator_placed_between_sessions ... ok
[INFO] [stdout] test history::tests::test_format_text_detail_state_after_routes_yaml_block_sequence ... ok
[INFO] [stdout] test history::tests::test_format_text_list_empty_entries_produces_only_header ... ok
[INFO] [stdout] test history::tests::test_format_text_list_daemon_startup_separator_appears_after_startup_entry ... ok
[INFO] [stdout] test history::tests::test_format_text_list_entries_shown_in_reverse_chronological_order ... ok
[INFO] [stdout] test history::tests::test_format_text_list_external_change_has_no_fail_prefix ... ok
[INFO] [stdout] test history::tests::test_format_text_list_has_one_header_plus_one_row_per_entry ... ok
[INFO] [stdout] test history::tests::test_format_text_list_fail_count_1_when_only_1_field_failed_and_2_skipped ... ok
[INFO] [stdout] test history::tests::test_format_text_list_row_no_fail_prefix_when_no_failures ... ok
[INFO] [stdout] test history::tests::test_format_text_list_no_separator_when_daemon_startup_is_last_entry ... ok
[INFO] [stdout] test history::tests::test_format_text_list_no_separator_below_oldest_daemon_startup_entry ... ok
[INFO] [stdout] test history::tests::test_format_text_list_fail_count_reflects_per_field_failures ... ok
[INFO] [stdout] test history::tests::test_format_text_list_seq_column_width_adapts_to_content_not_capped ... ok
[INFO] [stdout] test history::tests::test_format_text_list_row_shows_entity_name_from_diff ... ok
[INFO] [stdout] test history::tests::test_format_text_list_row_shows_fail_prefix_when_failures ... ok
[INFO] [stdout] test history::tests::test_format_text_list_row_shows_trigger_display_name ... ok
[INFO] [stdout] test history::tests::test_format_text_list_trigger_column_truncated_when_exceeds_allocated_width ... ok
[INFO] [stdout] test history::tests::test_format_text_list_trigger_column_smart_truncated_on_narrow_terminal ... ok
[INFO] [stdout] test history::tests::test_format_text_list_shows_correct_seq_numbers_for_multiple_entries ... ok
[INFO] [stdout] test history::tests::test_format_text_list_shows_seq_number_for_each_entry ... ok
[INFO] [stdout] test history::tests::test_format_text_list_with_width_200_cap_respected ... ok
[INFO] [stdout] test history::tests::test_format_text_list_with_width_wide_terminal_no_truncation ... ok
[INFO] [stdout] test history::tests::test_format_timestamp_absolute_mode_shows_full_datetime ... ok
[INFO] [stdout] test history::tests::test_format_text_list_with_width_trigger_gets_more_space_on_wide_terminal ... ok
[INFO] [stdout] test history::tests::test_format_timestamp_today_30min_shows_30_min_ago ... ok
[INFO] [stdout] test history::tests::test_format_timestamp_today_2h_shows_h_ago ... ok
[INFO] [stdout] test history::tests::test_format_text_list_with_width_narrow_terminal_all_columns_present ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_daemon_startup ... ok
[INFO] [stdout] test history::tests::test_format_timestamp_today_5min_shows_min_ago ... ok
[INFO] [stdout] test history::tests::test_format_timestamp_today_under_60s_shows_sec_ago ... ok
[INFO] [stdout] test history::tests::test_format_timestamp_yesterday_shows_yesterday_hhmm ... ok
[INFO] [stdout] test history::tests::test_format_timestamp_3_days_ago_shows_full_date ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_dhcp_acquire ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_dhcp_expire ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_external_change ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_fitted_multiple_policies_expands_when_room ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_fitted_multiple_policies_shows_count ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_dhcp_renew ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_fitted_non_apply_unchanged ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_policy_apply_multiple_policies_shows_plus_n ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_fitted_returns_full_when_fits ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_policy_apply_no_policies ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_policy_apply_single_policy ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_fitted_single_policy_truncates_name ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_revert_shows_target_seq ... ok
[INFO] [stdout] test history::tests::test_journal_dir_path_returns_default_when_env_var_not_set ... ok
[INFO] [stdout] test history::tests::test_matches_selector_empty_diff_does_not_match_name_selector ... ok
[INFO] [stdout] test history::tests::test_journal_dir_path_returns_netfyr_journal_dir_env_var_when_set ... ok
[INFO] [stdout] test history::tests::test_format_trigger_column_fitted_very_narrow_falls_back ... ok
[INFO] [stdout] test history::tests::test_matches_trigger_apply_matches_policy_apply ... ok
[INFO] [stdout] test history::tests::test_matches_selector_name_eth0_does_not_match_entry_with_only_eth1 ... ok
[INFO] [stdout] test history::tests::test_matches_trigger_dhcp_matches_dhcp_event ... ok
[INFO] [stdout] test history::tests::test_matches_trigger_external_matches_external_change ... ok
[INFO] [stdout] test history::tests::test_matches_selector_empty_selectors_matches_any_entry ... ok
[INFO] [stdout] test history::tests::test_matches_trigger_is_case_insensitive ... ok
[INFO] [stdout] test history::tests::test_matches_trigger_non_matching_returns_false ... ok
[INFO] [stdout] test history::tests::test_matches_trigger_revert_matches_revert ... ok
[INFO] [stdout] test history::tests::test_matches_selector_name_eth0_matches_entry_with_eth0_in_diff ... ok
[INFO] [stdout] test history::tests::test_matches_trigger_startup_matches_daemon_startup ... ok
[INFO] [stdout] test history::tests::test_outcome_detail_observed_shows_observed ... ok
[INFO] [stdout] test history::tests::test_outcome_detail_shows_full_breakdown ... ok
[INFO] [stdout] test history::tests::test_outcome_detail_applied_with_all_counts ... ok
[INFO] [stdout] test history::tests::test_outcome_summary_applied_with_failures_shows_fail_count ... ok
[INFO] [stdout] test history::tests::test_outcome_summary_applied_with_only_successes_shows_applied ... ok
[INFO] [stdout] test history::tests::test_outcome_summary_applied_with_skips_no_failures_shows_applied ... ok
[INFO] [stdout] test history::tests::test_outcome_summary_applied_with_2_failures_shows_applied_2_fail ... ok
[INFO] [stdout] test history::tests::test_parse_since_0s_is_valid_and_returns_approximately_now ... ok
[INFO] [stdout] test history::tests::test_parse_since_5m_returns_time_5_minutes_ago ... ok
[INFO] [stdout] test history::tests::test_outcome_summary_observed_returns_observed ... ok
[INFO] [stdout] test history::tests::test_parse_since_1h_returns_time_1_hour_ago ... ok
[INFO] [stdout] test history::tests::test_parse_since_7d_returns_time_7_days_ago ... ok
[INFO] [stdout] test history::tests::test_outcome_summary_applied_zero_failures_shows_applied_no_counts ... ok
[INFO] [stdout] test history::tests::test_parse_since_30s_returns_time_30_seconds_ago ... ok
[INFO] [stdout] test history::tests::test_parse_since_iso8601_timestamp_returns_exact_time ... ok
[INFO] [stdout] test history::tests::test_read_recent_beyond_journal_size_returns_fewer_entries_than_requested ... ok
[INFO] [stdout] test history::tests::test_read_recent_returns_most_recent_entries_first_via_journal ... ok
[INFO] [stdout] test history::tests::test_run_history_local_empty_journal_returns_exit_code_0 ... ok
[INFO] [stdout] test history::tests::test_run_history_local_no_journal_dir_returns_exit_code_1 ... ok
[INFO] [stdout] test history::tests::test_run_history_local_show_existing_entry_returns_exit_code_0 ... ok
[INFO] [stdout] test history::tests::test_negative_offset_3_read_recent_returns_third_to_last_seq ... ok
[INFO] [stdout] test history::tests::test_negative_offset_1_read_recent_returns_most_recent_seq ... ok
[INFO] [stdout] test history::tests::test_run_history_local_show_negative_1_returns_exit_code_0 ... ok
[INFO] [stdout] test history::tests::test_read_recent_with_n_5_returns_exactly_5_from_30_entry_journal ... ok
[INFO] [stdout] test history::tests::test_run_history_local_show_negative_3_returns_exit_code_0 ... ok
[INFO] [stdout] test history::tests::test_run_history_local_show_negative_offset_beyond_journal_size_returns_exit_code_1 ... ok
[INFO] [stdout] test history::tests::test_run_history_local_show_nonexistent_entry_returns_exit_code_1 ... ok
[INFO] [stdout] test history::tests::test_serializable_state_to_flat_map_puts_type_first_name_second ... ok
[INFO] [stdout] test history::tests::test_trigger_detail_str_external_change_formats_entity_names_in_parentheses ... ok
[INFO] [stdout] test history::tests::test_trigger_display_name_all_variants_return_correct_names ... ok
[INFO] [stdout] test history::tests::test_run_history_local_show_seq_0_returns_exit_code_1 ... ok
[INFO] [stdout] test query::tests::test_build_varlink_selector_both_none_returns_none ... ok
[INFO] [stdout] test query::tests::test_build_varlink_selector_driver_selector_sets_driver ... ok
[INFO] [stdout] test query::tests::test_build_varlink_selector_entity_type_only_sets_entity_type ... ok
[INFO] [stdout] test query::tests::test_build_varlink_selector_mac_in_selector_serialized_to_string ... ok
[INFO] [stdout] test query::tests::test_build_varlink_selector_name_selector_only_sets_name ... ok
[INFO] [stdout] test query::tests::test_build_varlink_selector_pci_path_is_forwarded ... ok
[INFO] [stdout] test query::tests::test_daemon_socket_path_returns_default_when_env_not_set ... ok
[INFO] [stdout] test query::tests::test_daemon_socket_path_uses_env_var_when_set ... ok
[INFO] [stdout] test query::tests::test_empty_flat_maps_serializes_to_empty_json_array ... ok
[INFO] [stdout] test query::tests::test_empty_flat_maps_serializes_to_empty_yaml_sequence ... ok
[INFO] [stdout] test query::tests::test_extract_type_and_selector_driver_builds_selector_with_driver ... ok
[INFO] [stdout] test query::tests::test_extract_type_and_selector_empty_list_returns_none_none ... ok
[INFO] [stdout] test query::tests::test_build_varlink_selector_entity_type_and_selector_merged ... ok
[INFO] [stdout] test history::tests::test_trigger_detail_str_external_change_with_no_entities_returns_empty_string ... ok
[INFO] [stdout] test query::tests::test_extract_type_and_selector_multiple_non_type_fields_builds_combined_selector ... ok
[INFO] [stdout] test query::tests::test_extract_type_and_selector_mac_parses_correctly ... ok
[INFO] [stdout] test query::tests::test_extract_type_and_selector_pci_path_builds_selector ... ok
[INFO] [stdout] test query::tests::test_extract_type_and_selector_type_and_name_splits_correctly ... ok
[INFO] [stdout] test query::tests::test_extract_type_and_selector_type_only_returns_entity_type_none_selector ... ok
[INFO] [stdout] test query::tests::test_json_output_is_pretty_printed_array_for_jq_compatibility ... ok
[INFO] [stdout] test query::tests::test_json_serialization_of_flat_maps_produces_valid_json_array ... ok
[INFO] [stdout] test query::tests::test_extract_type_and_selector_name_only_builds_named_selector ... ok
[INFO] [stdout] test query::tests::test_parse_selector_driver_key_returns_tuple ... ok
[INFO] [stdout] test query::tests::test_parse_selector_empty_value_is_valid ... ok
[INFO] [stdout] test query::tests::test_parse_selector_invalid_key_returns_error_listing_valid_keys ... ok
[INFO] [stdout] test query::tests::test_parse_selector_missing_equals_returns_error ... ok
[INFO] [stdout] test query::tests::test_parse_selector_name_key_returns_tuple ... ok
[INFO] [stdout] test query::tests::test_parse_selector_pci_path_key_returns_tuple ... ok
[INFO] [stdout] test query::tests::test_parse_selector_mac_key_returns_tuple ... ok
[INFO] [stdout] test query::tests::test_parse_selector_type_key_returns_tuple ... ok
[INFO] [stdout] test query::tests::test_state_to_flat_map_does_not_include_provenance ... ok
[INFO] [stdout] test query::tests::test_state_to_flat_map_includes_all_field_values_at_top_level ... ok
[INFO] [stdout] test query::tests::test_state_to_flat_map_type_is_the_first_key ... ok
[INFO] [stdout] test query::tests::test_state_to_flat_map_type_value_matches_entity_type ... ok
[INFO] [stdout] test query::tests::test_varlink_state_to_flat_map_empty_fields_yields_only_type ... ok
[INFO] [stdout] test query::tests::test_varlink_state_to_flat_map_includes_all_fields_at_top_level ... ok
[INFO] [stdout] test query::tests::test_varlink_state_to_flat_map_type_is_first_key ... ok
[INFO] [stdout] test query::tests::test_varlink_state_to_flat_map_type_value_matches_entity_type ... ok
[INFO] [stdout] test query::tests::test_yaml_serialization_of_flat_maps_produces_valid_yaml_sequence ... ok
[INFO] [stdout] test show::tests::test_format_json_daemon_not_running_has_status_not_running ... ok
[INFO] [stdout] test show::tests::test_format_json_daemon_not_running_interfaces_have_only_name ... ok
[INFO] [stdout] test show::tests::test_format_json_daemon_not_running_omits_uptime_seconds ... ok
[INFO] [stdout] test show::tests::test_format_json_daemon_running_has_status_running ... ok
[INFO] [stdout] test show::tests::test_format_json_daemon_running_has_uptime_seconds ... ok
[INFO] [stdout] test show::tests::test_format_json_dhcp_running_has_correct_lease_time_secs ... ok
[INFO] [stdout] test query::tests::test_state_to_flat_map_no_fields_yields_only_type ... ok
[INFO] [stdout] test show::tests::test_format_json_dhcp_running_has_non_negative_lease_remaining ... ok
[INFO] [stdout] test show::tests::test_format_json_dhcp_running_state_is_running ... ok
[INFO] [stdout] test show::tests::test_format_json_interfaces_is_array ... ok
[INFO] [stdout] test show::tests::test_format_json_dhcp_running_interface_has_policies_and_dhcp_fields ... ok
[INFO] [stdout] test show::tests::test_format_json_managed_interface_policies_array_has_name_and_type ... ok
[INFO] [stdout] test show::tests::test_format_json_multiple_policies_appear_in_policies_array ... ok
[INFO] [stdout] test show::tests::test_format_json_produces_valid_json ... ok
[INFO] [stdout] test show::tests::test_format_json_unmanaged_interface_omits_policies_and_dhcp_fields ... ok
[INFO] [stdout] test show::tests::test_format_json_waiting_factory_has_dhcp_state_waiting ... ok
[INFO] [stdout] test show::tests::test_format_json_waiting_factory_omits_lease_fields ... ok
[INFO] [stdout] test show::tests::test_format_text_all_interfaces_listed_including_unmanaged ... ok
[INFO] [stdout] test show::tests::test_format_text_always_shows_interfaces_header ... ok
[INFO] [stdout] test show::tests::test_format_text_daemon_not_running_interfaces_are_bare_names ... ok
[INFO] [stdout] test show::tests::test_format_text_daemon_not_running_omits_uptime_line ... ok
[INFO] [stdout] test show::tests::test_format_text_daemon_not_running_shows_not_running_status ... ok
[INFO] [stdout] test show::tests::test_format_text_daemon_running_shows_uptime_line ... ok
[INFO] [stdout] test show::tests::test_format_text_daemon_running_shows_status_running ... ok
[INFO] [stdout] test show::tests::test_format_text_dhcp_interface_shows_dhcpv4_policy_type ... ok
[INFO] [stdout] test show::tests::test_format_text_managed_interface_shows_policies_line ... ok
[INFO] [stdout] test history::tests::test_run_history_local_with_30_entries_and_default_count_returns_exit_code_0 ... ok
[INFO] [stdout] test show::tests::test_format_text_lease_remaining_600_secs_shows_10m ... ok
[INFO] [stdout] test show::tests::test_format_text_running_dhcp_factory_shows_lease_line_with_total_and_remaining ... ok
[INFO] [stdout] test show::tests::test_format_text_static_only_interface_omits_dhcp_and_lease_lines ... ok
[INFO] [stdout] test show::tests::test_format_text_static_policy_shows_type_static ... ok
[INFO] [stdout] test show::tests::test_format_text_running_dhcp_factory_shows_dhcp_running ... ok
[INFO] [stdout] test show::tests::test_format_text_multiple_policies_listed_comma_separated ... ok
[INFO] [stdout] test show::tests::test_format_text_uptime_7385_seconds_shows_2h_3m ... ok
[INFO] [stdout] test show::tests::test_format_text_waiting_dhcp_factory_omits_lease_line ... ok
[INFO] [stdout] test show::tests::test_format_text_unmanaged_interface_appears_as_bare_name ... ok
[INFO] [stdout] test show::tests::test_format_text_waiting_dhcp_factory_shows_dhcp_waiting ... ok
[INFO] [stdout] test show::tests::test_show_args_default_output_is_text ... ok
[INFO] [stdout] test show::tests::test_show_args_output_json_flag_parses_correctly ... ok
[INFO] [stdout] test tests::test_cli_color_flag_before_subcommand_is_accepted ... ok
[INFO] [stdout] test tests::test_cli_apply_no_paths_parses_with_empty_vec ... ok
[INFO] [stdout] test tests::test_cli_color_flag_after_subcommand_is_accepted ... ok
[INFO] [stdout] test tests::test_cli_no_subcommand_produces_clap_error ... ok
[INFO] [stdout] test tests::test_cli_color_flag_invalid_value_is_rejected ... ok
[INFO] [stdout] test tests::test_cli_color_flag_default_is_auto ... ok
[INFO] [stdout] test tests::test_resolve_color_mode_always_does_not_panic ... ok
[INFO] [stdout] test tests::test_resolve_color_mode_always_enables_colored_output ... ok
[INFO] [stdout] test tests::test_resolve_color_mode_never_disables_colored_output ... ok
[INFO] [stdout] test tests::test_resolve_color_mode_never_does_not_panic ... ok
[INFO] [stdout] test tests::test_resolve_color_mode_no_color_env_var_disables_colors_even_with_always_flag ... ok
[INFO] [stdout] test tests::test_resolve_color_mode_auto_does_not_panic ... ok
[INFO] [stdout] test history::tests::test_parse_since_empty_string_returns_error ... ok
[INFO] [stdout] test history::tests::test_parse_since_unknown_unit_returns_error ... ok
[INFO] [stdout] test query::tests::test_extract_type_and_selector_invalid_mac_returns_error ... ok
[INFO] [stdout] test history::tests::test_format_timestamp_today_5h_shows_5h_ago ... FAILED
[INFO] [stdout] test history::tests::test_parse_since_invalid_input_returns_error ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- history::tests::test_format_timestamp_today_5h_shows_5h_ago stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'history::tests::test_format_timestamp_today_5h_shows_5h_ago' (1047) panicked at crates/netfyr-cli/src/history.rs:2917:9:
[INFO] [stdout] assertion `left == right` failed: entry from 5h ago should show '5h ago', got: yesterday 23:39
[INFO] [stdout]   left: "yesterday 23:39"
[INFO] [stdout]  right: "5h ago"
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x556d05138e6a - std[ec419fa8110287d5]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x556d05138e6a - std[ec419fa8110287d5]::backtrace_rs::backtrace::trace_unsynchronized::<std[ec419fa8110287d5]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x556d05138e6a - std[ec419fa8110287d5]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x556d05138e6a - <<std[ec419fa8110287d5]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[35159d6ffb30e017]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x556d051523fa - <core[35159d6ffb30e017]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x556d051523fa - core[35159d6ffb30e017]::fmt::write
[INFO] [stdout]    6:     0x556d0513f042 - std[ec419fa8110287d5]::io::default_write_fmt::<alloc[a8a7aba520129d98]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/io/mod.rs:621:11
[INFO] [stdout]    7:     0x556d0513f042 - <alloc[a8a7aba520129d98]::vec::Vec<u8> as std[ec419fa8110287d5]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/io/mod.rs:1976:13
[INFO] [stdout]    8:     0x556d05113acf - <std[ec419fa8110287d5]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x556d05113acf - std[ec419fa8110287d5]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x556d0512f6a9 - std[ec419fa8110287d5]::panicking::default_hook
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x556d04401f2c - <alloc[a8a7aba520129d98]::boxed::Box<dyn for<'a, 'b> core[35159d6ffb30e017]::ops::function::Fn<(&'a std[ec419fa8110287d5]::panic::PanicHookInfo<'b>,), Output = ()> + core[35159d6ffb30e017]::marker::Sync + core[35159d6ffb30e017]::marker::Send> as core[35159d6ffb30e017]::ops::function::Fn<(&std[ec419fa8110287d5]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   12:     0x556d04401f2c - test[a8007afcd3effadc]::test_main_inner::<test[a8007afcd3effadc]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x556d0512f922 - <alloc[a8a7aba520129d98]::boxed::Box<dyn for<'a, 'b> core[35159d6ffb30e017]::ops::function::Fn<(&'a std[ec419fa8110287d5]::panic::PanicHookInfo<'b>,), Output = ()> + core[35159d6ffb30e017]::marker::Sync + core[35159d6ffb30e017]::marker::Send> as core[35159d6ffb30e017]::ops::function::Fn<(&std[ec419fa8110287d5]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   14:     0x556d0512f922 - std[ec419fa8110287d5]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x556d05113b88 - std[ec419fa8110287d5]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x556d0510aa49 - std[ec419fa8110287d5]::sys::backtrace::__rust_end_short_backtrace::<std[ec419fa8110287d5]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x556d05114e4d - __rustc[cfb3622dd870db93]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x556d05152c6c - core[35159d6ffb30e017]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x556d05152b53 - core[35159d6ffb30e017]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x556d042c8814 - core[35159d6ffb30e017]::panicking::assert_failed::<alloc[a8a7aba520129d98]::string::String, &str>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x556d0420bd19 - netfyr_cli[e73b2cdc39a1c87e]::history::tests::test_format_timestamp_today_5h_shows_5h_ago
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/netfyr-cli/src/history.rs:2917:9
[INFO] [stdout]   22:     0x556d04201b57 - netfyr_cli[e73b2cdc39a1c87e]::history::tests::test_format_timestamp_today_5h_shows_5h_ago::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/netfyr-cli/src/history.rs:2913:53
[INFO] [stdout]   23:     0x556d042edd66 - <netfyr_cli[e73b2cdc39a1c87e]::history::tests::test_format_timestamp_today_5h_shows_5h_ago::{closure#0} as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x556d043f520b - <fn() -> core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String> as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x556d043f520b - test[a8007afcd3effadc]::__rust_begin_short_backtrace::<core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>, fn() -> core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/test/src/lib.rs:724:18
[INFO] [stdout]   26:     0x556d044029fb - test[a8007afcd3effadc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/test/src/lib.rs:747:74
[INFO] [stdout]   27:     0x556d044029fb - <core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<test[a8007afcd3effadc]::run_test_in_process::{closure#0}> as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x556d044029fb - std[ec419fa8110287d5]::panicking::catch_unwind::do_call::<core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<test[a8007afcd3effadc]::run_test_in_process::{closure#0}>, core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x556d044029fb - std[ec419fa8110287d5]::panicking::catch_unwind::<core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>, core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<test[a8007afcd3effadc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x556d044029fb - std[ec419fa8110287d5]::panic::catch_unwind::<core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<test[a8007afcd3effadc]::run_test_in_process::{closure#0}>, core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x556d044029fb - test[a8007afcd3effadc]::run_test_in_process
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/test/src/lib.rs:747:27
[INFO] [stdout]   32:     0x556d044029fb - test[a8007afcd3effadc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/test/src/lib.rs:668:43
[INFO] [stdout]   33:     0x556d043fd3d4 - test[a8007afcd3effadc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/test/src/lib.rs:698:41
[INFO] [stdout]   34:     0x556d043fd3d4 - std[ec419fa8110287d5]::sys::backtrace::__rust_begin_short_backtrace::<test[a8007afcd3effadc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x556d04405602 - std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked::<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x556d04405602 - <core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x556d04405602 - std[ec419fa8110287d5]::panicking::catch_unwind::do_call::<core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x556d04405602 - std[ec419fa8110287d5]::panicking::catch_unwind::<(), core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x556d04405602 - std[ec419fa8110287d5]::panic::catch_unwind::<core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x556d04405602 - std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked::<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x556d04405602 - <std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1} as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x556d05137d5f - <alloc[a8a7aba520129d98]::boxed::Box<dyn core[35159d6ffb30e017]::ops::function::FnOnce<(), Output = ()> + core[35159d6ffb30e017]::marker::Send> as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/alloc/src/boxed.rs:2271:9
[INFO] [stdout]   43:     0x556d05137d5f - <std[ec419fa8110287d5]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   44:     0x791355eceaa4 - <unknown>
[INFO] [stdout]   45:     0x791355f5ba64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     history::tests::test_format_timestamp_today_5h_shows_5h_ago
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 391 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.46s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `-p netfyr-cli --lib`
[INFO] running `Command { std: "docker" "inspect" "2bd3682c5c5b17a2b95a0b167094fef6528d06fa4f2d725a357f1368eae9e7df", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2bd3682c5c5b17a2b95a0b167094fef6528d06fa4f2d725a357f1368eae9e7df", kill_on_drop: false }`
[INFO] [stdout] 2bd3682c5c5b17a2b95a0b167094fef6528d06fa4f2d725a357f1368eae9e7df
