[INFO] fetching crate termiflow 0.2.8...
[INFO] testing termiflow-0.2.8 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate termiflow 0.2.8 into /workspace/builds/worker-4-tc1/source
[INFO] removed /workspace/builds/worker-4-tc1/source/rust-toolchain.toml
[INFO] started tweaking crates.io crate termiflow 0.2.8
[INFO] finished tweaking crates.io crate termiflow 0.2.8
[INFO] tweaked toml for crates.io crate termiflow 0.2.8 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate termiflow 0.2.8 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate termiflow 0.2.8 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded pest_meta v2.9.1
[INFO] [stderr]   Downloaded lru v0.18.4
[INFO] [stderr]   Downloaded pest_generator v2.9.1
[INFO] [stderr]   Downloaded pest_derive v2.9.1
[INFO] [stderr]   Downloaded pest v2.9.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351
[INFO] running `Command { std: "docker" "start" "e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling either v1.18.0
[INFO] [stderr]    Compiling instability v0.3.13
[INFO] [stderr]    Compiling lru v0.18.4
[INFO] [stderr]    Compiling smallvec v1.16.1
[INFO] [stderr]    Compiling syn v3.0.5
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling mio v1.2.3
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling line-clipping v0.3.8
[INFO] [stderr]    Compiling time v0.3.55
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling const-oid v0.10.2
[INFO] [stderr]    Compiling compact_str v0.9.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling cpufeatures v0.3.1
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling dirs v7.0.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling toml v1.1.6+spec-1.1.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling darling_core v0.24.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling clap_derive v4.6.7
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling ratatui-core v0.1.2
[INFO] [stderr]    Compiling clap v4.6.7
[INFO] [stderr]    Compiling darling_macro v0.24.1
[INFO] [stderr]    Compiling darling v0.24.1
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling ratatui-widgets v0.3.2
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.2
[INFO] [stderr]    Compiling ratatui-macros v0.7.2
[INFO] [stderr]    Compiling ratatui v0.30.2
[INFO] [stderr]    Compiling termiflow v0.2.8 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.89s
[INFO] running `Command { std: "docker" "inspect" "e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling crossbeam-utils v0.8.23
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.21
[INFO] [stderr]    Compiling zerocopy v0.8.57
[INFO] [stderr]    Compiling find-msvc-tools v0.1.12
[INFO] [stderr]    Compiling crossbeam-deque v0.8.8
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling cc v1.4.6
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling criterion-plot v0.8.2
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling bstr v1.13.1
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling zerocopy-derive v0.8.57
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling ratatui-core v0.1.2
[INFO] [stderr]    Compiling ratatui-widgets v0.3.2
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.2
[INFO] [stderr]    Compiling ratatui-macros v0.7.2
[INFO] [stderr]    Compiling ratatui v0.30.2
[INFO] [stderr]    Compiling termiflow v0.2.8 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling criterion v0.8.2
[INFO] [stdout] warning: unused import: `std::collections::BTreeSet`
[INFO] [stdout]     --> src/render/edge/subgraph.rs:4600:9
[INFO] [stdout]      |
[INFO] [stdout] 4600 |     use std::collections::BTreeSet;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FallbackAxis`
[INFO] [stdout]     --> src/render/edge/subgraph.rs:4610:41
[INFO] [stdout]      |
[INFO] [stdout] 4610 |     use crate::render::fallback_route::{FallbackAxis, FallbackRoutePlan};
[INFO] [stdout]      |                                         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fallback_routes_for_test` is never used
[INFO] [stdout]    --> src/render/trace.rs:128:19
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl PortalTrace {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] 127 |     #[cfg(test)]
[INFO] [stdout] 128 |     pub(crate) fn fallback_routes_for_test(&self) -> &[FallbackRouteTrace] {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 47.80s
[INFO] running `Command { std: "docker" "inspect" "e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `std::collections::BTreeSet`
[INFO] [stderr]     --> src/render/edge/subgraph.rs:4600:9
[INFO] [stderr]      |
[INFO] [stderr] 4600 |     use std::collections::BTreeSet;
[INFO] [stderr]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `FallbackAxis`
[INFO] [stderr]     --> src/render/edge/subgraph.rs:4610:41
[INFO] [stderr]      |
[INFO] [stderr] 4610 |     use crate::render::fallback_route::{FallbackAxis, FallbackRoutePlan};
[INFO] [stderr]      |                                         ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `fallback_routes_for_test` is never used
[INFO] [stderr]    --> src/render/trace.rs:128:19
[INFO] [stderr]     |
[INFO] [stderr] 126 | impl PortalTrace {
[INFO] [stderr]     | ---------------- method in this implementation
[INFO] [stderr] 127 |     #[cfg(test)]
[INFO] [stderr] 128 |     pub(crate) fn fallback_routes_for_test(&self) -> &[FallbackRouteTrace] {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `termiflow` (lib test) generated 3 warnings (run `cargo fix --lib -p termiflow --tests` to apply 2 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.30s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/termiflow-bd1fc0081d879df9)
[INFO] [stdout] 
[INFO] [stdout] running 560 tests
[INFO] [stdout] test config::tests::resolver_normalizes_repair_passes_and_rejects_negative_file_values ... ok
[INFO] [stdout] test config::tests::parse_config_applies_spacing_mode ... ok
[INFO] [stdout] test config::tests::resolver_preserves_source_presence_and_precedence ... ok
[INFO] [stdout] test crossing::tests::test_empty_layers ... ok
[INFO] [stdout] test crossing::tests::test_barycenter_heuristic ... ok
[INFO] [stdout] test config::tests::parse_config_applies_render_feedback_settings ... ok
[INFO] [stdout] test crossing::tests::test_median_heuristic ... ok
[INFO] [stdout] test crossing::tests::test_convergence_detection ... ok
[INFO] [stdout] test display_profile::tests::profile_name_is_explicit ... ok
[INFO] [stdout] test graph::tests::edge_new_defaults ... ok
[INFO] [stdout] test crossing::tests::test_count_crossings_no_crossing ... ok
[INFO] [stdout] test graph::tests::graph_add_node_and_get ... ok
[INFO] [stdout] test graph::tests::graph_add_edge_no_dedup ... ok
[INFO] [stdout] test crossing::tests::test_minimize_reduces_crossings ... ok
[INFO] [stdout] test graph::tests::graph_add_subgraph_and_get ... ok
[INFO] [stdout] test crossing::tests::test_single_layer ... ok
[INFO] [stdout] test geom::tests::rect_union_and_inflate ... ok
[INFO] [stdout] test graph::tests::graph_associate_node_with_subgraph_reassigns_membership ... ok
[INFO] [stdout] test graph::tests::graph_edge_boundary_crossings_between_siblings_skip_common_parent ... ok
[INFO] [stdout] test display_profile::tests::display_profile_char_width_matches_renderer_expectation ... ok
[INFO] [stdout] test crossing::tests::test_count_crossings_with_crossing ... ok
[INFO] [stdout] test graph::tests::graph_add_subgraph_deduplicates_by_id ... ok
[INFO] [stdout] test graph::tests::graph_edge_boundary_crossings_child_to_parent_exit_only_child ... ok
[INFO] [stdout] test display_profile::tests::display_profile_splits_chunks_by_width_not_bytes ... ok
[INFO] [stdout] test graph::tests::graph_add_warning ... ok
[INFO] [stdout] test graph::tests::graph_get_node_mut_allows_mutation ... ok
[INFO] [stdout] test graph::tests::direction_default_is_td ... ok
[INFO] [stdout] test graph::tests::graph_get_node_subgraph_returns_none_for_unassociated ... ok
[INFO] [stdout] test graph::tests::edge_kind_default_is_arrow ... ok
[INFO] [stdout] test graph::tests::edge_with_label_stores_label ... ok
[INFO] [stdout] test graph::tests::graph_get_subgraph_mut_allows_mutation ... ok
[INFO] [stdout] test graph::tests::graph_is_node_in_subgraph_tree_checks_ancestor_chain ... ok
[INFO] [stdout] test graph::tests::graph_edge_boundary_crossings_external_to_nested_include_all_entered_ancestors ... ok
[INFO] [stdout] test graph::tests::graph_is_subgraph_ancestor_checks_parent_chain ... ok
[INFO] [stdout] test graph::tests::node_center_x_even_width ... ok
[INFO] [stdout] test config::tests::effective_policy_digest_binds_render_fields_but_not_unrelated_inputs ... ok
[INFO] [stdout] test graph::tests::node_bottom_y_enforces_min_height ... ok
[INFO] [stdout] test graph::tests::node_center_x_odd_width ... ok
[INFO] [stdout] test graph::tests::node_new_defaults ... ok
[INFO] [stdout] test graph::tests::graph_has_cycles_reflects_back_edges ... ok
[INFO] [stdout] test graph::tests::graph_associate_node_with_subgraph ... ok
[INFO] [stdout] test graph::tests::node_center_y_uses_height_max_box_height ... ok
[INFO] [stdout] test graph::tests::incoming_edge_clearance_is_direction_aware_for_flag ... ok
[INFO] [stdout] test graph::tests::node_with_shape_stores_shape ... ok
[INFO] [stdout] test graph::tests::padded_subgraph_title_span_keeps_a_two_sided_visual_gutter ... ok
[INFO] [stdout] test graph::tests::subgraph_add_and_contains_node ... ok
[INFO] [stdout] test graph::tests::graph_new_is_empty ... ok
[INFO] [stdout] test config::tests::parse_config_applies_wrap_and_max_lines ... ok
[INFO] [stdout] test graph::tests::rectangle_contains_inclusive_corners ... ok
[INFO] [stdout] test graph::tests::graph_node_subgraph_chain_orders_inner_to_outer ... ok
[INFO] [stdout] test graph::tests::node_shape_default_is_rectangle ... ok
[INFO] [stdout] test graph::tests::subgraph_contains_node_is_case_sensitive ... ok
[INFO] [stdout] test graph::tests::subgraph_no_title ... ok
[INFO] [stdout] test graph::tests::subgraph_title_text_span_excludes_wrapper_padding ... ok
[INFO] [stdout] test graph::tests::graph_add_node_deduplicates_by_id ... ok
[INFO] [stdout] test graph::tests::subgraph_tracks_children_without_duplicates ... ok
[INFO] [stdout] test graph::tests::subgraph_new_empty ... ok
[INFO] [stdout] test indexed_graph::tests::indexes_lookup_and_adjacency_without_scanning ... ok
[INFO] [stdout] test indexed_graph::tests::lossy_index_preserves_first_match_behavior ... ok
[INFO] [stdout] test graph::tests::rectangle_contains_zero_dimensions ... ok
[INFO] [stdout] test graph::tests::side_aware_title_padding_preserves_the_anchor_and_wall_gutter ... ok
[INFO] [stdout] test graph::tests::rectangle_is_valid ... ok
[INFO] [stdout] test graph::tests::subgraph_has_title ... ok
[INFO] [stdout] test indexed_graph::tests::unknown_edge_endpoints_have_empty_adjacency_side ... ok
[INFO] [stdout] test layout::envelope_stage::tests::td_parallel_selector_is_topology_scoped ... ok
[INFO] [stdout] test layout::envelope_stage::tests::bt_multi_entry_layout_prefers_source_aligned_title_safe_lanes ... ok
[INFO] [stdout] test layout::dual_junction::tests::safe_branch_alternative_is_used_when_context_collides ... ok
[INFO] [stdout] test layout::placement::tests::horizontal_density_compression_is_topology_gated ... ok
[INFO] [stdout] test layout::placement::tests::strict_database_scene_headroom_gives_the_source_tee_a_quiet_stem ... ok
[INFO] [stdout] test layout::placement::tests::titled_vertical_subgraph_labeled_boundary_headroom_is_topology_gated ... ok
[INFO] [stdout] test layout::placement::tests::titled_vertical_subgraph_multi_entry_headroom_is_local_and_direction_gated ... ok
[INFO] [stdout] test layout::placement::tests::strict_horizontal_subgraph_fan_in_reserves_one_target_run_cell ... ok
[INFO] [stdout] test layout::dual_junction::tests::dual_junctions_center_outgoing_targets_in_all_directions ... ok
[INFO] [stdout] test layout::dual_junction::tests::oversized_reverse_context_refuses_movement ... ok
[INFO] [stdout] test layout::placement::tests::vertical_diamond_target_headroom_is_local_and_direction_gated ... ok
[INFO] [stdout] test layout::pure_fan_in::tests::leaves_fan_in_target_with_outgoing_flow_unchanged ... ok
[INFO] [stdout] test layout::dual_junction::tests::boundary_crossing_refuses_dual_junction_movement ... ok
[INFO] [stdout] test layout::placement::tests::database_target_headroom_is_local_to_the_preceding_rank ... ok
[INFO] [stdout] test layout::pure_fan_in::tests::centers_pure_fan_in_targets_in_all_directions ... ok
[INFO] [stdout] test layout::pure_fan_in::tests::edge_order_does_not_change_pure_fan_in_result ... ok
[INFO] [stdout] test layout::dual_junction::tests::collision_refuses_context_and_branch_alternatives ... ok
[INFO] [stdout] test layout::dual_junction::tests::mixed_edge_kind_headroom_is_vertical_and_source_rank_gated ... ok
[INFO] [stdout] test layout::dual_junction::tests::pure_fan_in_and_pure_fan_out_are_unchanged ... ok
[INFO] [stdout] test indexed_graph::tests::precomputes_nested_ancestry_and_boundaries ... ok
[INFO] [stdout] test display_profile::tests::display_profile_preserves_grapheme_clusters ... ok
[INFO] [stdout] test layout::pure_fan_in::tests::rejects_declared_boundary_crossing ... ok
[INFO] [stdout] test layout::pure_fan_in::tests::rejects_same_rank_collision ... ok
[INFO] [stdout] test layout::dual_junction::tests::anchor_and_relations_are_stable_when_edges_are_reordered ... ok
[INFO] [stdout] test indexed_graph::tests::strict_index_rejects_duplicate_ids ... ok
[INFO] [stdout] test layout::tests::internal_route_span_budget_detects_centered_nested_fanin ... ok
[INFO] [stdout] test layout::tests::marks_back_edges_and_leaves_cycle_routing_to_renderer ... ok
[INFO] [stdout] test layout::pure_fan_in::tests::source_set_is_unique_and_back_edges_are_ignored ... ok
[INFO] [stdout] test layout::tests::declared_nested_child_route_pressure_shifts_right_partition_not_just_outgoing_sources ... ok
[INFO] [stdout] test layout::tests::prior_positions_nudge_nodes_with_parents ... ok
[INFO] [stdout] test layout::tests::route_budgeted_subgraphs_include_declared_nested_children ... ok
[INFO] [stdout] test layout::tests::inner_bounds_persist_on_graph ... ok
[INFO] [stdout] test layout_repair::tests::branch_context_ids_rejects_oversized_context ... ok
[INFO] [stdout] test layout::tests::gutter_avoids_external_edges ... ok
[INFO] [stdout] test layout::tests::widen_subgraph_for_internal_route_span_shifts_centered_nested_fanout_partition ... ok
[INFO] [stdout] test layout_repair::tests::branch_context_ids_is_deterministic ... ok
[INFO] [stdout] test layout::tests::routes_around_obstacle ... ok
[INFO] [stdout] test layout_repair::tests::branch_context_ids_rejects_subgraph_boundary ... ok
[INFO] [stdout] test layout_repair::tests::candidate_cap_is_deterministic ... ok
[INFO] [stdout] test layout_snapshot::tests::snapshot_copies_geometry_and_routes ... ok
[INFO] [stdout] test layout_snapshot::tests::snapshot_preserves_direction_cycle_state_and_minimum_node_height ... ok
[INFO] [stdout] test measure::tests::measure_wrap_increases_height ... ok
[INFO] [stdout] test measure::tests::split_long_word_preserves_emoji_graphemes ... ok
[INFO] [stdout] test measure::tests::wrap_can_shrink_default_width_for_manual_line_breaks ... ok
[INFO] [stdout] test measure::tests::explicit_width_is_honored ... ok
[INFO] [stdout] test measure::tests::wrapped_label_lines_preserve_combining_graphemes ... ok
[INFO] [stdout] test measure::tests::measure_default_is_single_line_fixed_height ... ok
[INFO] [stdout] test measure::tests::max_label_width_controls_box_width ... ok
[INFO] [stdout] test orientation::tests::horizontal_turns_use_physical_arms_for_lr_and_rl ... ok
[INFO] [stdout] test orientation::tests::test_lr_orientation ... ok
[INFO] [stdout] test orientation::tests::test_td_orientation ... ok
[INFO] [stdout] test parser::tests::decode_mermaid_label_combined ... ok
[INFO] [stdout] test parser::tests::decode_mermaid_label_lt_gt ... ok
[INFO] [stdout] test parser::tests::decode_mermaid_label_amp ... ok
[INFO] [stdout] test parser::tests::decode_mermaid_label_nbsp ... ok
[INFO] [stdout] test layout::tests::side_by_side_sibling_envelopes_keep_a_visual_gap_in_both_horizontal_directions ... ok
[INFO] [stdout] test parser::tests::decode_mermaid_label_passthrough ... ok
[INFO] [stdout] test parser::tests::decode_mermaid_label_quot_apos ... ok
[INFO] [stdout] test parser::tests::decode_mermaid_label_strips_inline_tags ... ok
[INFO] [stdout] test measure::tests::wrap_uses_single_ellipsis_when_truncated_by_max_lines ... ok
[INFO] [stdout] test parser::tests::classdef_lines_warn_without_creating_fake_nodes ... ok
[INFO] [stdout] test parser::tests::html_entity_node_label_roundtrip ... ok
[INFO] [stdout] test parser::tests::test_all_edge_kinds_together ... ok
[INFO] [stdout] test layout::dense_pipeline::tests::detector_rejects_a_near_miss_without_claiming_routes ... ok
[INFO] [stdout] test parser::tests::html_entity_edge_label_roundtrip ... ok
[INFO] [stdout] test parser::tests::bold_tag_stripped_from_node_label ... ok
[INFO] [stdout] test parser::tests::test_comments_ignored ... ok
[INFO] [stdout] test layout::tests::explicit_nested_horizontal_children_stay_contained_and_ordered_by_flow ... ok
[INFO] [stdout] test parser::tests::test_click_target_single_quotes ... ok
[INFO] [stdout] test layout::tests::explicit_nested_child_roots_follow_parent_direct_rank ... ok
[INFO] [stdout] test layout::tests::titled_vertical_labeled_terminal_exit_aligns_to_its_portal_lane ... ok
[INFO] [stdout] test parser::tests::test_config_render_repair_passes ... ok
[INFO] [stdout] test parser::tests::test_config_max_label ... ok
[INFO] [stdout] test layout::tests::explicit_nested_child_route_budget_adds_horizontal_border_clearance ... ok
[INFO] [stdout] test layout::dense_pipeline::tests::detector_accepts_the_layered_shape_without_fixture_names ... ok
[INFO] [stdout] test parser::tests::test_config_optimize_render ... ok
[INFO] [stdout] test parser::tests::test_config_layout_repair_passes ... ok
[INFO] [stdout] test parser::tests::test_config_style ... ok
[INFO] [stdout] test parser::tests::test_config_debug_critic ... ok
[INFO] [stdout] test layout::tests::nested_service_data_sample_populates_envelopes_and_portals ... ok
[INFO] [stdout] test parser::tests::test_config_max_label_lines ... ok
[INFO] [stdout] test layout::dense_pipeline::tests::bridge_routes_start_with_a_visible_primary_stem ... ok
[INFO] [stdout] test parser::tests::test_config_wrap_labels ... ok
[INFO] [stdout] test parser::tests::test_click_target ... ok
[INFO] [stdout] test parser::tests::test_direction_td ... ok
[INFO] [stdout] test parser::tests::test_direction_bt ... ok
[INFO] [stdout] test parser::tests::test_direction_flowchart_alias ... ok
[INFO] [stdout] test parser::tests::test_database_node ... ok
[INFO] [stdout] test parser::tests::test_direction_lr ... ok
[INFO] [stdout] test parser::tests::test_direction_tb ... ok
[INFO] [stdout] test parser::tests::test_edge_chain_simple ... ok
[INFO] [stdout] test layout::tests::rl_sibling_terminal_centerline_candidate_is_rejected_when_it_hits_peer_subgraph ... ok
[INFO] [stdout] test parser::tests::test_edge_chain_mixed_definitions ... ok
[INFO] [stdout] test parser::tests::test_double_circle_in_edge ... ok
[INFO] [stdout] test parser::tests::test_edge_chain_with_inline_labels ... ok
[INFO] [stdout] test parser::tests::test_edge_kind_open ... ok
[INFO] [stdout] test parser::tests::test_config_spacing_mode ... ok
[INFO] [stdout] test parser::tests::test_edge_kind_bidirectional ... ok
[INFO] [stdout] test parser::tests::test_edge_kind_dotted_with_label ... ok
[INFO] [stdout] test parser::tests::test_edge_cross_end_with_label ... ok
[INFO] [stdout] test parser::tests::test_edge_circle_end_with_label ... ok
[INFO] [stdout] test layout::tests::lr_sibling_terminal_target_aligns_to_source_envelope_centerline ... ok
[INFO] [stdout] test parser::tests::test_edge_kind_arrow_unchanged ... ok
[INFO] [stdout] test parser::tests::test_edge_kind_dotted ... ok
[INFO] [stdout] test parser::tests::test_edge_kind_thick_with_label ... ok
[INFO] [stdout] test parser::tests::test_edge_kind_open_with_label ... ok
[INFO] [stdout] test parser::tests::test_edge_kind_bidirectional_extended ... ok
[INFO] [stdout] test parser::tests::test_edge_kind_thick ... ok
[INFO] [stdout] test parser::tests::test_edge_kind_bidirectional_with_label ... ok
[INFO] [stdout] test parser::tests::test_edge_label_pipe_style ... ok
[INFO] [stdout] test parser::tests::test_edge_with_long_arrow ... ok
[INFO] [stdout] test parser::tests::test_edge_label_multiple ... ok
[INFO] [stdout] test parser::tests::test_edge_label_mixed_with_unlabeled ... ok
[INFO] [stdout] test parser::tests::test_forward_reference ... ok
[INFO] [stdout] test parser::tests::test_grouped_edge_with_label ... ok
[INFO] [stdout] test parser::tests::test_edge_label_text_style ... ok
[INFO] [stdout] test parser::tests::test_empty_input_fails ... ok
[INFO] [stdout] test parser::tests::test_multiple_directions_warns ... ok
[INFO] [stdout] test parser::tests::test_grouped_edge_multi_source ... ok
[INFO] [stdout] test parser::tests::test_grouped_edge_cartesian ... ok
[INFO] [stdout] test parser::tests::test_multiple_nodes ... ok
[INFO] [stdout] test parser::tests::test_multiple_edges ... ok
[INFO] [stdout] test parser::tests::test_node_shape_asymmetric ... ok
[INFO] [stdout] test parser::tests::test_no_direction_fails ... ok
[INFO] [stdout] test parser::tests::test_node_shape_database ... ok
[INFO] [stdout] test parser::tests::test_node_shape_parallelogram ... ok
[INFO] [stdout] test parser::tests::test_node_shape_circle ... ok
[INFO] [stdout] test parser::tests::test_grouped_edge_all_ids_registered ... ok
[INFO] [stdout] test parser::tests::test_edge_cross_end_plain ... ok
[INFO] [stdout] test parser::tests::test_edge_circle_end_plain ... ok
[INFO] [stdout] test parser::tests::test_edge_kind_mixed_in_same_graph ... ok
[INFO] [stdout] test parser::tests::test_double_circle_not_confused_with_circle ... ok
[INFO] [stdout] test parser::tests::test_node_double_circle_shape ... ok
[INFO] [stdout] test parser::tests::test_node_shape_rectangle ... ok
[INFO] [stdout] test parser::tests::test_single_edge ... ok
[INFO] [stdout] test parser::tests::test_node_shape_hexagon ... ok
[INFO] [stdout] test parser::tests::test_node_shape_rounded ... ok
[INFO] [stdout] test parser::tests::test_node_shape_parallelogram_alt ... ok
[INFO] [stdout] test parser::tests::test_node_shape_diamond ... ok
[INFO] [stdout] test parser::tests::test_subgraph_multiple ... ok
[INFO] [stdout] test parser::tests::test_style_unsupported ... ok
[INFO] [stdout] test parser::tests::test_node_shape_trapezoid ... ok
[INFO] [stdout] test parser::tests::test_grouped_edge_multi_target ... ok
[INFO] [stdout] test parser::tests::test_subgraph_explicit_node_definition_overrides_prior_outside_reference ... ok
[INFO] [stdout] test parser::tests::test_strict_mode_allows_auto_create ... ok
[INFO] [stdout] test parser::tests::test_nested_service_data_sample_preserves_parent_child_links ... ok
[INFO] [stdout] test parser::tests::test_subgraph_nested_parses_in_strict_mode ... ok
[INFO] [stdout] test parser::tests::test_subgraph_basic ... ok
[INFO] [stdout] test parser::tests::test_subgraph_nested_preserves_hierarchy_without_warning ... ok
[INFO] [stdout] test parser::tests::test_node_shape_subroutine ... ok
[INFO] [stdout] test parser::tests::test_subgraph_plain_title ... ok
[INFO] [stdout] test parser::tests::test_subgraph_unclosed_warns ... ok
[INFO] [stdout] test parser::tests::test_single_node ... ok
[INFO] [stdout] test parser::tests::test_subgraph_nested_bracket_syntax_preserves_parent_child_links ... ok
[INFO] [stdout] test parser::tests::test_whitespace_only_fails ... ok
[INFO] [stdout] test parser::tests::test_node_shape_stadium ... ok
[INFO] [stdout] test parser::tests::test_undefined_node_auto_create ... ok
[INFO] [stdout] test portals::envelopes::tests::labeled_horizontal_fanin_keeps_the_existing_side_budget ... ok
[INFO] [stdout] test parser::tests::test_strict_mode_unsupported_syntax ... ok
[INFO] [stdout] test parser::tests::test_undefined_node_default_rectangle ... ok
[INFO] [stdout] test parser::tests::test_unsupported_diagram_type_sequence ... ok
[INFO] [stdout] test parser::tests::test_node_shapes_with_edges ... ok
[INFO] [stdout] test portals::tests::compute_envelopes_builds_parent_from_child_when_parent_has_no_direct_nodes ... ok
[INFO] [stdout] test portals::tests::bt_title_margin_only_widens_exactly_two_parallel_edges ... ok
[INFO] [stdout] test parser::tests::test_node_with_spaces_in_label ... ok
[INFO] [stdout] test parser::tests::test_node_shapes_mixed ... ok
[INFO] [stdout] test parser::tests::test_node_shape_trapezoid_alt ... ok
[INFO] [stdout] test portals::envelopes::tests::strict_horizontal_fanin_reserves_one_extra_side_cell ... ok
[INFO] [stdout] test portals::tests::compute_envelopes_keep_parent_visibly_outside_nested_child ... ok
[INFO] [stdout] test portals::tests::portal_slots_collapse_shared_td_fanout_entry_to_single_top_slot ... ok
[INFO] [stdout] test portals::tests::portal_slots_cross_subgraph_td ... ok
[INFO] [stdout] test portals::tests::title_safe_portal_policy_handles_missing_titles_and_margin_zero ... ok
[INFO] [stdout] test portals::tests::portal_slots_child_to_external_open_all_exited_ancestors ... ok
[INFO] [stdout] test portals::tests::portal_slots_collapse_shared_td_fanin_exit_to_single_bottom_slot ... ok
[INFO] [stdout] test portals::tests::td_sibling_portal_lanes_alternate_title_safe_sides_for_linear_chain ... ok
[INFO] [stdout] test portals::tests::right_sibling_title_gutter_keeps_a_wall_blank_in_narrow_bounds ... ok
[INFO] [stdout] test portals::tests::portal_slots_td_visually_nested_child_can_use_left_side_entry ... ok
[INFO] [stdout] test portals::tests::compute_envelopes_counts_descendant_edges_as_parent_external_edges ... ok
[INFO] [stdout] test portals::tests::td_sibling_title_gutter_keeps_one_blank_cell_from_visible_text ... ok
[INFO] [stdout] test portals::tests::strict_bt_sibling_chain_gets_one_quiet_title_cell ... ok
[INFO] [stdout] test portals::tests::title_margin_is_zero_only_for_bt_until_other_directions_are_reviewed ... ok
[INFO] [stdout] test portals::tests::td_directional_portal_keeps_a_safe_one_cell_target_alignment ... ok
[INFO] [stdout] test portals::tests::title_safe_portal_policy_preserves_the_existing_margin_behavior ... ok
[INFO] [stdout] test portals::tests::portal_slots_td_side_entry_uses_live_node_rects_not_stale_graph_coords ... ok
[INFO] [stdout] test render::bt_parallel_identity::tests::selects_exact_scene_and_two_target_ports ... ok
[INFO] [stdout] test render::canvas::tests::endpoint_marker_role_is_protected_from_generic_edge_writes ... ok
[INFO] [stdout] test render::bt_parallel_identity::tests::rejects_extra_edge_outside_the_scene_contract ... ok
[INFO] [stdout] test portals::tests::td_sibling_title_padding_lanes_leave_a_wall_gutter ... ok
[INFO] [stdout] test render::canvas::tests::combining_marks_do_not_replace_their_base_cell ... ok
[INFO] [stdout] test render::canvas::tests::explicit_edge_meta_preserves_custom_fallback_markers ... ok
[INFO] [stdout] test render::canvas::tests::test_ascii_overlap_resolution ... ok
[INFO] [stdout] test portals::tests::portal_slots_external_to_nested_child_open_all_entered_ancestors ... ok
[INFO] [stdout] test render::canvas::tests::test_canvas_set_edge_char_with_overlap_resolution ... ok
[INFO] [stdout] test render::canvas::tests::test_canvas_new_filled_with_spaces ... ok
[INFO] [stdout] test render::canvas::tests::test_canvas_out_of_bounds_returns_space ... ok
[INFO] [stdout] test render::canvas::tests::test_canvas_display_trims_trailing_spaces ... ok
[INFO] [stdout] test render::canvas::tests::test_canvas_set_get ... ok
[INFO] [stdout] test render::canvas::tests::test_canvas_set_out_of_bounds_ignored ... ok
[INFO] [stdout] test render::canvas::tests::test_is_arrow ... ok
[INFO] [stdout] test render::canvas::tests::test_is_horizontal_unicode ... ok
[INFO] [stdout] test render::canvas::tests::test_is_corner ... ok
[INFO] [stdout] test render::canvas::tests::test_is_junction ... ok
[INFO] [stdout] test render::canvas::tests::test_is_styled_ascii_route_shaft ... ok
[INFO] [stdout] test render::canvas::tests::test_overlap_arrows_never_overwritten ... ok
[INFO] [stdout] test render::canvas::tests::test_overlap_box_content_preserved ... ok
[INFO] [stdout] test render::canvas::tests::test_canvas_is_visible ... ok
[INFO] [stdout] test render::canvas::tests::test_overlap_corner_plus_horizontal_creates_junction ... ok
[INFO] [stdout] test render::canvas::tests::test_overlap_corner_plus_vertical_creates_junction ... ok
[INFO] [stdout] test render::canvas::tests::test_overlap_empty_space_takes_new ... ok
[INFO] [stdout] test render::canvas::tests::test_overlap_junctions_preserved ... ok
[INFO] [stdout] test render::canvas::tests::test_overlap_perpendicular_lines_create_cross ... ok
[INFO] [stdout] test render::canvas::tests::test_is_vertical_unicode ... ok
[INFO] [stdout] test render::contract::tests::render_layer_contract_lists_expected_layers_in_order ... ok
[INFO] [stdout] test render::canvas::tests::test_overlap_two_corners_creates_junction ... ok
[INFO] [stdout] test render::contract::tests::render_layer_contract_has_modules_and_responsibilities ... ok
[INFO] [stdout] test render::critic::tests::analyze_accepts_styled_straight_route_variants ... ok
[INFO] [stdout] test render::critic::tests::analyze_does_not_report_branch_spacing_imbalance_for_even_fanout ... ok
[INFO] [stdout] test render::critic::tests::analyze_does_not_report_chain_too_cramped_for_visibly_separated_rl_nodes ... ok
[INFO] [stdout] test render::critic::tests::analyze_does_not_report_route_topology_mismatch_for_clean_lr_side_opening ... ok
[INFO] [stdout] test render::critic::tests::analyze_does_not_report_branch_crowding_for_roomy_fanout ... ok
[INFO] [stdout] test render::critic::tests::analyze_ignores_arrow_with_label_occluding_stem ... ok
[INFO] [stdout] test render::critic::tests::analyze_does_not_report_subgraph_title_corruption_for_title_text_with_v ... ok
[INFO] [stdout] test render::critic::tests::analyze_ignores_arrow_using_subgraph_border_pierce ... ok
[INFO] [stdout] test render::critic::tests::analyze_ignores_balanced_crossing_permutation_rows ... ok
[INFO] [stdout] test render::critic::tests::analyze_ignores_label_next_to_plain_foreign_route_segment ... ok
[INFO] [stdout] test render::critic::tests::analyze_reports_arrow_without_shaft ... ok
[INFO] [stdout] test render::critic::tests::analyze_reports_branch_crowding_for_dense_fanout ... ok
[INFO] [stdout] test render::critic::tests::analyze_reports_branch_spacing_imbalance_for_uneven_fanout ... ok
[INFO] [stdout] test render::critic::tests::analyze_reports_crowded_edge_label ... ok
[INFO] [stdout] test render::critic::tests::analyze_reports_edge_label_collision_with_node ... ok
[INFO] [stdout] test render::critic::tests::analyze_reports_route_crossing_node_interior ... ok
[INFO] [stdout] test render::critic::tests::analyze_reports_route_symmetry_imbalance_for_skewed_fanout ... ok
[INFO] [stdout] test render::critic::tests::analyze_reports_route_topology_mismatch_for_junction_like_lr_side_pierce ... ok
[INFO] [stdout] test render::critic::tests::analyze_reports_subgraph_title_corruption ... ok
[INFO] [stdout] test render::critic::tests::analyze_reports_route_topology_mismatch_for_wrong_corner ... ok
[INFO] [stdout] test render::critic::tests::ascii_plus_corner_is_not_flagged_as_junction_mismatch ... ok
[INFO] [stdout] test render::cycle::tests::center_x_calculates_correctly ... ok
[INFO] [stdout] test render::critic::tests::audit_summary_marks_empty_report_clean ... ok
[INFO] [stdout] test render::critic::tests::baseline_report_adds_empty_frame_finding_for_non_empty_graph ... ok
[INFO] [stdout] test render::cycle::tests::cycle_edge_invisible_nodes_is_noop ... ok
[INFO] [stdout] test render::cycle::tests::cycle_edge_lr_target_entry_uses_visible_arrow ... ok
[INFO] [stdout] test render::cycle::tests::cycle_self_loop_bt_places_visible_return_leg ... ok
[INFO] [stdout] test render::cycle::tests::cycle_edge_routes_through_gutter_td ... ok
[INFO] [stdout] test render::cycle::tests::cycle_self_loop_td_places_visible_return_leg ... ok
[INFO] [stdout] test render::cycle::tests::cycle_self_loop_lr_places_visible_arrow_below_box ... ok
[INFO] [stdout] test render::dedicated_fan_in::tests::database_dual_junction_is_structural_not_label_based ... ok
[INFO] [stdout] test render::dedicated_fan_in::tests::exact_horizontal_branch_rejoin_gets_one_port_per_sink_edge ... ok
[INFO] [stdout] test render::dedicated_fan_in::tests::exact_rectangle_dual_junction_shares_the_measurement_policy ... ok
[INFO] [stdout] test render::dedicated_fan_in::tests::layered_fan_in_family_requires_one_port_per_target_edge ... ok
[INFO] [stdout] test render::dedicated_fan_in::tests::ports_have_blank_separators ... ok
[INFO] [stdout] test render::dedicated_fan_in::tests::selects_internal_subgraph_nonterminal_fan_in_for_horizontal_routes ... ok
[INFO] [stdout] test render::dedicated_fan_in::tests::unrelated_small_fan_in_keeps_shared_merge_policy ... ok
[INFO] [stdout] test render::determinism::tests::geometry_snapshot_digest_is_stable_for_repeated_serialization ... ok
[INFO] [stdout] test render::dual_junction::tests::selects_the_exact_dual_junction_in_all_directions ... ok
[INFO] [stdout] test render::edge::boundary_fan_in::tests::horizontal_collector_center_keeps_both_source_and_target_arms ... ok
[INFO] [stdout] test render::dedicated_fan_in::tests::branch_rejoin_rejects_near_misses_and_keeps_generic_fan_in ... ok
[INFO] [stdout] test render::determinism::tests::canonical_edge_contract_is_invariant_to_equivalent_shuffle ... ok
[INFO] [stdout] test render::determinism::tests::route_dispositions_distinguish_fallback_empty_and_rejected ... ok
[INFO] [stdout] test render::dedicated_fan_in::tests::mixed_branch_rejoin_rejects_near_misses_and_vertical_policy ... ok
[INFO] [stdout] test render::dual_junction::tests::rejects_extra_edges_nodes_labels_shapes_and_subgraphs ... ok
[INFO] [stdout] test render::dedicated_fan_in::tests::exact_horizontal_mixed_junction_gets_one_port_per_sink_edge ... ok
[INFO] [stdout] test render::dual_junction::tests::rejects_terminal_and_non_dual_branching_shapes ... ok
[INFO] [stdout] test render::edge::bt_multi_entry::tests::lane_assignment_prefers_source_alignment_when_total_cost_ties ... ok
[INFO] [stdout] test render::determinism::tests::duplicate_nodes_are_first_wins_and_duplicate_edges_are_indexed_occurrences ... ok
[INFO] [stdout] test render::edge::diamond::tests::detector_rejects_parallel_direct_copies_and_subgraph_membership ... ok
[INFO] [stdout] test render::edge::boundary_fan_in::tests::horizontal_identity_turns_preserve_one_target_run_cell ... ok
[INFO] [stdout] test render::edge::convergence::tests::horizontal_merge_lanes_prefer_a_two_cell_stride ... ok
[INFO] [stdout] test render::edge::diamond::tests::detector_rejects_incomplete_fanin_and_fanout_shapes ... ok
[INFO] [stdout] test render::edge::database_fan_in::tests::horizontal_database_bypass_keeps_two_quiet_cells_before_terminal_arrow ... ok
[INFO] [stdout] test render::edge::convergence::tests::horizontal_merge_lanes_fall_back_when_stride_two_does_not_fit ... ok
[INFO] [stdout] test render::edge::convergence::tests::vertical_merge_lanes_remain_consecutive ... ok
[INFO] [stdout] test render::edge::database_fan_in::tests::horizontal_database_bypass_reserves_a_two_cell_source_tee_stem ... ok
[INFO] [stdout] test render::edge::dense_crossing::tests::horizontal_dense_ports_straddle_center_without_box_edges ... ok
[INFO] [stdout] test render::edge::dense_crossing::tests::vertical_dense_ports_are_interior ... ok
[INFO] [stdout] test render::edge::diamond::tests::unsafe_capacity_is_rejected_without_generic_fallback_claims ... ok
[INFO] [stdout] test render::edge::bt_multi_entry::tests::lane_assignment_keeps_three_entries_separate ... ok
[INFO] [stdout] test render::edge::diamond::tests::detector_accepts_only_oriented_simple_diamonds ... ok
[INFO] [stdout] test render::edge::bt_parallel::tests::detects_parallel_scene_from_topology_not_fixture_name ... ok
[INFO] [stdout] test render::edge::fan_in_identity::tests::bt_parallel_identity_uses_disjoint_shared_corridor_legs ... ok
[INFO] [stdout] test render::edge::fan_in_identity::tests::routes_two_horizontal_sources_to_distinct_target_ports ... ok
[INFO] [stdout] test render::edge::fan_in_identity::tests::routes_a_downstream_cascade_target_without_shared_arrow ... ok
[INFO] [stdout] test render::edge::fanout::mixed_branch_tests::mixed_role_predicate_rejects_labeled_variants ... ok
[INFO] [stdout] test render::edge::fanout::mixed_branch_tests::mixed_role_predicate_accepts_database_target_family ... ok
[INFO] [stdout] test render::edge::fanout::generic_fanout_tests::generic_vertical_fanout_records_a_clean_shared_route_plan ... ok
[INFO] [stdout] test render::edge::fanout::generic_fanout_tests::plan_helper_records_vertical_and_horizontal_segments ... ok
[INFO] [stdout] test render::edge::fanout::mixed_branch_tests::mixed_role_candidate_leaves_two_cells_between_foreign_junctions ... ok
[INFO] [stdout] test render::edge::subgraph::tests::bt_sibling_plan_rejects_full_span_external_node_keepout ... ok
[INFO] [stdout] test render::edge::subgraph::tests::bt_sibling_target_lane_candidates_keep_a_clear_border_cell ... ok
[INFO] [stdout] test render::edge::subgraph::tests::bt_title_safe_entry_row_is_strictly_above_the_title ... ok
[INFO] [stdout] test render::edge::bt_parallel_sibling::tests::lane_assignment_keeps_three_direct_edges_separate ... ok
[INFO] [stdout] test render::edge::subgraph::tests::preferred_portal_uses_the_shared_directional_policy ... ok
[INFO] [stdout] test render::edge::subgraph::tests::td_sibling_corridor_requires_clearance_on_both_sides ... ok
[INFO] [stdout] test render::edge::tests::asymmetric_lr_entry_point_separates_left_point_from_arrow ... ok
[INFO] [stdout] test render::edge::tests::entry_candidates_lr_starts_at_center ... ok
[INFO] [stdout] test render::edge::tests::entry_candidates_td_starts_at_center ... ok
[INFO] [stdout] test render::edge::tests::entry_candidates_no_duplicates ... ok
[INFO] [stdout] test render::edge::tests::entry_point_bt_is_below_center ... ok
[INFO] [stdout] test render::edge::tests::entry_point_lr_is_left_center ... ok
[INFO] [stdout] test render::edge::tests::entry_point_rl_is_right_center ... ok
[INFO] [stdout] test render::edge::tests::database_entry_point_uses_generic_one_cell_receiver_entry ... ok
[INFO] [stdout] test render::edge::tests::diamond_entry_point_has_one_cell_visual_clearance_in_all_directions ... ok
[INFO] [stdout] test render::edge::tests::exit_point_bt_is_top_center ... ok
[INFO] [stdout] test render::edge::tests::exit_point_lr_is_right_center ... ok
[INFO] [stdout] test render::edge::subgraph::tests::narrow_titled_bt_subgraph_fails_closed_without_a_safe_turn_row ... ok
[INFO] [stdout] test render::edge::subgraph::tests::nearest_nested_portal_uses_the_shared_nearest_policy ... ok
[INFO] [stdout] test render::edge::subgraph::tests::untitled_bt_entry_keeps_the_nearest_interior_row ... ok
[INFO] [stdout] test render::edge::tests::diamond_entry_point_clearance_saturates_at_canvas_origin ... ok
[INFO] [stdout] test render::edge::tests::exit_point_rl_at_x0_saturates ... ok
[INFO] [stdout] test render::edge::tests::exit_point_rl_is_left_center ... ok
[INFO] [stdout] test render::edge::tests::fallback_branch_style_preserves_thick_and_dotted_shafts ... ok
[INFO] [stdout] test render::edge::tests::hits_border_on_left_edge ... ok
[INFO] [stdout] test render::edge::tests::hits_border_on_top_edge ... ok
[INFO] [stdout] test render::edge::tests::no_hit_outside_subgraph ... ok
[INFO] [stdout] test render::edge::tests::entry_point_td_is_above_center ... ok
[INFO] [stdout] test render::edge::tests::exit_and_entry_points_are_symmetric ... ok
[INFO] [stdout] test render::edge::tests::exit_point_td_is_bottom_center ... ok
[INFO] [stdout] test render::edge::vertical_fan_in::tests::records_vertical_identity_fallback_evidence ... ok
[INFO] [stdout] test render::evidence::tests::evidence_serializes_with_versioned_schema ... ok
[INFO] [stdout] test render::edge::tests::no_hit_for_own_subgraph ... ok
[INFO] [stdout] test render::evidence::tests::raw_report_rejects_different_edge_label_before_arrow ... ok
[INFO] [stdout] test render::fallback_route::tests::connected_route_contract_accepts_complete_path ... ok
[INFO] [stdout] test render::fallback_route::tests::target_entry_decision_accepts_matching_claim_and_arrow ... ok
[INFO] [stdout] test render::evidence::tests::geometry_report_keeps_ownerless_generic_fallback_untraced ... ok
[INFO] [stdout] test render::evidence::tests::raw_report_accepts_same_edge_label_before_arrow ... ok
[INFO] [stdout] test render::evidence::tests::raw_report_catches_shaftless_arrow ... ok
[INFO] [stdout] test render::evidence::tests::geometry_report_accepts_semantically_owned_generic_fallback_route ... ok
[INFO] [stdout] test render::fallback_route::tests::connected_route_contract_rejects_disconnected_primitive ... ok
[INFO] [stdout] test render::fallback_route::tests::connected_route_contract_rejects_missing_boundary_claim ... ok
[INFO] [stdout] test render::evidence::tests::geometry_report_distinguishes_untraced_fallback_edges ... ok
[INFO] [stdout] test render::fallback_route::tests::target_entry_decision_requires_matching_claim ... ok
[INFO] [stdout] test render::fan_in_identity::tests::rejects_labels_unsupported_shapes_subgraphs_and_cycles ... ok
[INFO] [stdout] test render::fan_in_identity::tests::selects_terminal_database_targets_with_simple_sources ... ok
[INFO] [stdout] test render::fan_in_identity::tests::selects_two_three_and_four_source_ordinary_identity_targets ... ok
[INFO] [stdout] test render::fan_in_identity::tests::target_ports_are_centered_with_a_blank_separator ... ok
[INFO] [stdout] test render::portal_projection::tests::generic_portals_use_the_explicit_route_axis ... ok
[INFO] [stdout] test render::evidence::tests::raw_report_accepts_unicode_dotted_shaft_before_arrow ... ok
[INFO] [stdout] test render::provenance::tests::refresh_provenance_preserves_explicit_edge_owner_metadata ... ok
[INFO] [stdout] test render::portal_projection::tests::graph_direction_maps_ambiguous_portals_to_the_route_axis ... ok
[INFO] [stdout] test render::provenance::tests::refresh_provenance_preserves_portal_owner_when_route_crosses_boundary_cell ... ok
[INFO] [stdout] test render::repair::tests::normalize_routing_glyph_replaces_dangling_corner_with_vertical ... ok
[INFO] [stdout] test render::repair::tests::extend_arrow_shaft_backfills_missing_segment ... ok
[INFO] [stdout] test render::repair::tests::normalize_routing_glyph_replaces_cross_with_tee_when_only_three_arms_exist ... ok
[INFO] [stdout] test render::repair::tests::restore_subgraph_title_rewrites_corrupted_bt_bottom_title_cells ... ok
[INFO] [stdout] test render::repair::tests::restore_subgraph_title_rewrites_corrupted_title_cells ... ok
[INFO] [stdout] test render::edge::tests::no_hit_interior_of_subgraph ... ok
[INFO] [stdout] test render::scene::tests::empty_scene_is_a_noop ... ok
[INFO] [stdout] test render::scene::tests::recorder_marks_empty_and_clipped_primitives_without_claiming_success ... ok
[INFO] [stdout] test render::scene::tests::recorder_rejects_same_layer_explicit_owner_collisions ... ok
[INFO] [stdout] test render::scene::tests::owned_intents_keep_explicit_provenance ... ok
[INFO] [stdout] test render::scene::tests::scene_and_legacy_lowering_match_all_differential_surfaces ... ok
[INFO] [stdout] test render::edge::fan_in_identity::tests::routes_four_sources_to_distinct_target_ports_in_all_directions ... ok
[INFO] [stdout] test render::evidence::tests::geometry_report_accepts_cycle_owned_arrow_terminal ... ok
[INFO] [stdout] test render::portal_projection::tests::portals_use_directional_route_glyphs_and_semantic_ownership ... ok
[INFO] [stdout] test render::scene::tests::scene_resolution_is_deterministic_and_uses_canvas_overlap ... ok
[INFO] [stdout] test render::provenance::tests::refresh_provenance_marks_edge_label_cells ... ok
[INFO] [stdout] test render::edge::database_fan_in::tests::claims_only_the_three_edge_intermediate_database_scene ... ok
[INFO] [stdout] test render::fan_in_identity::tests::selects_four_source_identity_targets_in_every_supported_direction ... ok
[INFO] [stdout] test render::fan_in_identity::tests::selects_only_the_exact_labeled_terminal_fan_in ... ok
[INFO] [stdout] test render::semantic::tests::semantic_frame_snapshots_canvas_cells ... ok
[INFO] [stdout] test render::fan_in_identity::tests::recognizes_vertical_branch_rejoin_as_identity_target ... ok
[INFO] [stdout] test render::repair::tests::stabilize_arrow_shafts_repairs_owned_left_arrow ... ok
[INFO] [stdout] test render::fan_in_identity::tests::rejects_intermediate_database_targets_until_their_branch_is_proven ... ok
[INFO] [stdout] test render::repair::tests::topology_stabilization_preserves_endpoint_markers ... ok
[INFO] [stdout] test render::scene::tests::inferred_edge_intents_keep_canvas_metadata_inferred ... ok
[INFO] [stdout] test render::scene::tests::edge_owned_preserves_overlap_and_records_junction_provenance ... ok
[INFO] [stdout] test render::shapes::tests::boxlike_bt_junction_placed_on_top_border ... ok
[INFO] [stdout] test render::shapes::tests::boxlike_td_no_junction_without_down_arm ... ok
[INFO] [stdout] test render::shapes::tests::diamond_closed_contour_preserves_corners_when_route_is_adjacent ... ok
[INFO] [stdout] test render::shapes::tests::subgraph_draws_corners_ascii ... ok
[INFO] [stdout] test render::shapes::tests::subgraph_draws_corners_unicode ... ok
[INFO] [stdout] test render::shapes::tests::subgraph_invalid_rect_is_noop ... ok
[INFO] [stdout] test render::shapes::tests::subgraph_title_appears_in_td ... ok
[INFO] [stdout] test render::shapes::tests::draw_node_all_shapes_no_panic ... ok
[INFO] [stdout] test render::shapes::tests::draw_node_rectangle_corners_ascii ... ok
[INFO] [stdout] test render::shapes::tests::draw_node_rectangle_label_written ... ok
[INFO] [stdout] test render::fan_in_identity::tests::keeps_pure_terminal_vertical_fan_in_on_identity_ports ... ok
[INFO] [stdout] test render::shapes::tests::diamond_horizontal_uses_flow_aligned_closed_contour ... ok
[INFO] [stdout] test render::shapes::tests::boxlike_bt_no_junction_without_arm_above ... ok
[INFO] [stdout] test render::shapes::tests::draw_node_rounded_corners_ascii ... ok
[INFO] [stdout] test render::shapes::tests::boxlike_td_junction_placed_on_bottom_border ... ok
[INFO] [stdout] test render::shapes::tests::asymmetric_flag_preserves_point_and_shoulders_when_routes_are_adjacent ... ok
[INFO] [stdout] test render::shapes::tests::fanout_source_policy_preserves_horizontal_side_wall_in_both_directions_and_styles ... ok
[INFO] [stdout] test render::shapes::tests::parallelogram_variants_differ_at_top_left_corner ... ok
[INFO] [stdout] test render::sibling_subgraph_fan_in_identity::tests::rejects_nested_or_internal_source_topologies ... ok
[INFO] [stdout] test render::sibling_target_entry_identity::tests::rejects_horizontal_scene_negatives ... ok
[INFO] [stdout] test render::sibling_subgraph_fan_in_identity::tests::rejects_context_source_edges_and_nonterminal_targets ... ok
[INFO] [stdout] test render::sibling_target_entry_identity::tests::selects_exact_horizontal_mixed_target_topology ... ok
[INFO] [stdout] test render::subgraph_fan_in_identity::tests::selects_only_the_exact_internal_nonterminal_scene ... ok
[INFO] [stdout] test render::sibling_target_entry_identity::tests::selects_exact_mixed_target_topology ... ok
[INFO] [stdout] test render::subgraph_fan_in_identity::tests::selects_only_the_strict_three_port_scene ... ok
[INFO] [stdout] test render::scene::tests::scene_preserves_existing_arrowheads ... ok
[INFO] [stdout] test render::topology::tests::canonical_routing_glyph_prefers_cycle_verticals_for_cycle_edges ... ok
[INFO] [stdout] test render::tests::edge_label_truncation_preserves_combining_clusters ... ok
[INFO] [stdout] test render::topology::tests::frame_connections_detects_corner_turns ... ok
[INFO] [stdout] test render::topology::tests::topology_connections_recognize_styled_route_shafts ... ok
[INFO] [stdout] test render::vertical_fan_in::tests::rejects_non_terminal_and_non_simple_edges ... ok
[INFO] [stdout] test render::shapes::tests::subgraph_title_too_long_is_skipped ... ok
[INFO] [stdout] test render::shapes::tests::trapezoid_variants_differ_at_top_left_corner ... ok
[INFO] [stdout] test render::tests::cross_subgraph_edge_pierces_border_lr_as_clean_side_opening ... ok
[INFO] [stdout] test render::shapes::tests::wide_cjk_label_preserves_terminal_box_width ... ok
[INFO] [stdout] test render::sibling_subgraph_fan_in_identity::tests::selects_only_the_two_source_external_terminal_scene ... ok
[INFO] [stdout] test render::sibling_target_entry_identity::tests::rejects_other_directions_labels_and_extra_topology ... ok
[INFO] [stdout] test render::vertical_fan_in::tests::selects_only_the_exact_nonterminal_two_in_one_out_shape ... ok
[INFO] [stdout] test render::tests::td_labels_avoid_subgraph_border_text ... ok
[INFO] [stdout] test render::vertical_fan_in::tests::rejects_horizontal_labels_shapes_and_subgraphs ... ok
[INFO] [stdout] test render::tests::cross_subgraph_edge_uses_side_aware_top_border_portal_td ... ok
[INFO] [stdout] test render::wide_terminal_fan_in::tests::selects_only_four_to_eight_source_terminal_fan_in ... ok
[INFO] [stdout] test render::wide_terminal_fan_in::tests::rejects_wide_family_controls ... ok
[INFO] [stdout] test render::wide_terminal_fan_in::tests::reserves_a_channel_and_two_attachment_cells_per_source ... ok
[INFO] [stdout] test render::wide_terminal_fan_in::tests::reserves_one_direct_horizontal_target_row_per_source ... ok
[INFO] [stdout] test render::vertical_fan_in::tests::selects_internal_subgraph_nonterminal_fan_in_for_vertical_routes ... ok
[INFO] [stdout] test render::tests::diagonal_precomputed_route_falls_back_to_rendered_routing ... ok
[INFO] [stdout] test render::tests::precomputed_back_edge_renders_with_back_glyphs ... ok
[INFO] [stdout] test route_plan::tests::rejects_diagonal_route_without_mutating_graph ... ok
[INFO] [stdout] test runtime::tests::repair_overrides_normalize_zero_values ... ok
[INFO] [stdout] test render::tests::edge_label_truncation_preserves_grapheme_clusters ... ok
[INFO] [stdout] test render::vertical_fan_in::tests::selects_only_bounded_terminal_vertical_fan_in ... ok
[INFO] [stdout] test render::trace::tests::geometry_trace_captures_boundary_crossings_and_segments ... ok
[INFO] [stdout] test render::vertical_fan_in::tests::target_ports_are_centered_and_separated ... ok
[INFO] [stdout] test route_plan::tests::retains_valid_route_bytes_and_empty_entries ... ok
[INFO] [stdout] test route_clarity::tests::semantic_topology_profile_certifies_a_simple_directed_graph ... ok
[INFO] [stdout] test scaling::tests::test_canvas_budget_with_dimensions ... ok
[INFO] [stdout] test scaling::tests::test_metrics_from_empty_graph ... ok
[INFO] [stdout] test scaling::tests::test_recommended_spacing ... ok
[INFO] [stdout] test scaling::tests::test_scaling_mode_parse ... ok
[INFO] [stdout] test spacing::tests::test_builder ... ok
[INFO] [stdout] test scaling::tests::test_canvas_budget_default ... ok
[INFO] [stdout] test runtime::tests::scoped_context_is_restored_after_nested_operation ... ok
[INFO] [stdout] test spacing::tests::test_box_width_calculation ... ok
[INFO] [stdout] test scaling::tests::test_is_dense ... ok
[INFO] [stdout] test scaling::tests::test_metrics_from_simple_graph ... ok
[INFO] [stdout] test scaling::tests::test_complexity_scaling ... ok
[INFO] [stdout] test scaling::tests::test_compute_spacing_for_wide_diagram ... ok
[INFO] [stdout] test scaling::tests::test_width_estimation ... ok
[INFO] [stdout] test route_clarity::tests::semantic_topology_profile_classifies_cycles_labels_shapes_and_edge_kinds ... ok
[INFO] [stdout] test spacing::tests::test_directional_spacing_adjustment ... ok
[INFO] [stdout] test spacing::tests::test_default_matches_existing_constants ... ok
[INFO] [stdout] test spacing::tests::test_effective_dimensions ... ok
[INFO] [stdout] test style::tests::test_composite_style_parse_all_components ... ok
[INFO] [stdout] test style::tests::test_composite_style_parse_complex ... ok
[INFO] [stdout] test spacing::tests::test_compact_reduces_spacing ... ok
[INFO] [stdout] test style::tests::test_composite_style_parse_simple ... ok
[INFO] [stdout] test spacing::tests::test_spacious_increases_spacing ... ok
[INFO] [stdout] test style::tests::test_composite_style_to_style_chars ... ok
[INFO] [stdout] test style::tests::mixed_style_portal_pierce_follows_edge_component_not_arrow_component ... ok
[INFO] [stdout] test spacing::tests::test_from_mode ... ok
[INFO] [stdout] test style::tests::split_text_to_width_chunks_preserves_grapheme_clusters ... ok
[INFO] [stdout] test spacing::tests::test_spacing_mode_parse ... ok
[INFO] [stdout] test style::tests::test_box_width_simple ... ok
[INFO] [stdout] test style::tests::test_legacy_compatibility ... ok
[INFO] [stdout] test style::tests::test_new_styles ... ok
[INFO] [stdout] test style::tests::test_truncate_label ... ok
[INFO] [stdout] test route_clarity::tests::semantic_topology_profile_preserves_parallel_edge_identity ... ok
[INFO] [stdout] test style::tests::test_display_width ... ok
[INFO] [stdout] test route_clarity::tests::report_validation_rejects_a_mutated_topology_oracle ... ok
[INFO] [stdout] test style::tests::vertical_portal_seam_composes_supported_mixed_weights ... ok
[INFO] [stdout] test style::tests::vertical_portal_seam_fails_closed_for_unsupported_components ... ok
[INFO] [stdout] test style::tests::portal_pierce_follows_edge_shaft_and_stays_one_cell_wide ... ok
[INFO] [stdout] test tests::layout_repair_candidates_include_branch_spacing_positions ... ok
[INFO] [stdout] test tests::layout_repair_candidates_include_branch_recenter_positions ... ok
[INFO] [stdout] test tests::layout_repair_candidates_include_upstream_context_for_fanout ... ok
[INFO] [stdout] test style::tests::vertical_portal_seam_preserves_matching_style_components ... ok
[INFO] [stdout] test tests::layout_repair_candidates_include_branch_spread_positions ... ok
[INFO] [stdout] test tests::layout_repair_candidates_include_targeted_node_nudges ... ok
[INFO] [stdout] test tests::layout_repair_candidates_include_downstream_context_for_fanin ... ok
[INFO] [stdout] test tui::live::tests::clamp_viewport_limits_offsets_to_content_bounds ... ok
[INFO] [stdout] test tui::live::tests::clamp_viewport_uses_display_columns ... ok
[INFO] [stdout] test tui::live::tests::initial_viewport_keeps_narrow_content_left_aligned ... ok
[INFO] [stdout] test tui::live::tests::build_inline_frame_appends_status_row ... ok
[INFO] [stdout] test tui::live::tests::build_preview_frame_applies_viewport_crop ... ok
[INFO] [stdout] test tui::live::tests::build_inline_frame_tracks_wide_glyph_width ... ok
[INFO] [stdout] test route_clarity::tests::semantic_topology_profile_is_deterministic_across_repeated_preparation ... ok
[INFO] [stdout] test tui::frame::tests::diff_is_empty_for_identical_frames ... ok
[INFO] [stdout] test tui::frame::tests::from_lines_preserves_combining_graphemes ... ok
[INFO] [stdout] test tui::presenter::tests::diff_segments_preserve_column_span_for_wide_glyphs ... ok
[INFO] [stdout] test tui::presenter::tests::inline_presenter_first_render_writes_content ... ok
[INFO] [stdout] test tui::presenter::tests::inline_presenter_second_render_moves_cursor_up ... ok
[INFO] [stdout] test tui::presenter::tests::inline_presenter_skips_identical_frame_redraw ... ok
[INFO] [stdout] test tui::presenter::tests::inline_presenter_surplus_lines_are_cleared ... ok
[INFO] [stdout] test tui::presenter::tests::diff_segments_preserve_combining_graphemes ... ok
[INFO] [stdout] test tui::presenter::tests::presenter_updates_previous_frame ... ok
[INFO] [stdout] test tui::presenter::tests::presenter_emits_output_bytes ... ok
[INFO] [stdout] test tui::presenter::tests::inline_presenter_moves_by_display_columns_for_wide_glyphs ... ok
[INFO] [stdout] test tui::presenter::tests::inline_presenter_only_writes_changed_segments ... ok
[INFO] [stdout] test tui::presenter::tests::presenter_wraps_output_in_synchronized_update_sequences ... ok
[INFO] [stdout] test style::tests::truncate_label_preserves_combining_clusters ... ok
[INFO] [stdout] test style::tests::truncate_to_width_preserves_grapheme_clusters ... ok
[INFO] [stdout] test tests::layout_repair_candidates_include_targeted_edge_label_nudges ... ok
[INFO] [stdout] test tui::frame::tests::diff_detects_single_cell_change ... ok
[INFO] [stdout] test tui::presenter::tests::inline_presenter_updates_previous_frame ... ok
[INFO] [stdout] test tui::frame::tests::from_lines_tracks_wide_glyph_columns ... ok
[INFO] [stdout] test tui::presenter::tests::diff_segments_group_contiguous_changes ... ok
[INFO] [stdout] test route_clarity::tests::semantic_topology_profile_records_nested_and_sibling_boundaries ... ok
[INFO] [stdout] test tui::live::tests::initial_viewport_centers_wide_content_horizontally ... ok
[INFO] [stdout] test route_clarity::bt_boundary_rail_tests::bt_parallel_portals_remove_machine_junction_finding_when_projected_as_local_seams ... ok
[INFO] [stdout] test route_clarity::bt_boundary_rail_tests::bt_sibling_rails_are_not_machine_clean_when_one_trunk_crosses_boundaries ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 560 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.71s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/cargo_metadata_to_graph.rs (/opt/rustwide/target/debug/deps/cargo_metadata_to_graph-cc350b7df3455fd4)
[INFO] [stderr]      Running unittests src/bin/graph_to_mermaid.rs (/opt/rustwide/target/debug/deps/graph_to_mermaid-6e37230db87ce649)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/termiflow.rs (/opt/rustwide/target/debug/deps/termiflow-28c21746c6685229)
[INFO] [stdout] 
[INFO] [stdout] running 19 tests
[INFO] [stdout] test common::tests::apply_inverted_titles_to_tui_frame_respects_viewport_crop ... ok
[INFO] [stdout] test common::tests::printable_output_uses_display_aligned_semantic_frame ... ok
[INFO] [stdout] test common::tests::build_findings_frame_with_findings_shows_finding_code ... ok
[INFO] [stdout] test common::tests::wrap_text_breaks_at_space ... ok
[INFO] [stdout] test common::tests::invert_subgraph_titles_ansi_wraps_title_tokens ... ok
[INFO] [stdout] test common::tests::printable_output_inverts_titles_by_default_for_tty_print_mode ... ok
[INFO] [stdout] test common::tests::viewport_indicator_reports_line_and_column_position ... ok
[INFO] [stdout] test common::tests::build_findings_frame_clean_report_shows_clean_message ... ok
[INFO] [stdout] test common::tests::wrap_text_preserves_grapheme_clusters_on_hard_break ... ok
[INFO] [stdout] test common::tests::wrap_text_short_string_is_unchanged ... ok
[INFO] [stdout] test common::tests::cli_accepts_legacy_ansi_title_invert_flag ... ok
[INFO] [stdout] test common::tests::wrap_text_uses_display_width_for_cjk ... ok
[INFO] [stdout] test common::tests::build_watch_frame_includes_status_row ... ok
[INFO] [stdout] test common::tests::cli_help_mentions_live_preview_caveats ... ok
[INFO] [stdout] test common::tests::invert_subgraph_titles_ansi_only_styles_semantic_title_cells ... ok
[INFO] [stdout] test common::tests::tui_status_can_surface_horizontal_pan_state ... ok
[INFO] [stdout] test common::tests::build_watch_frame_inverts_subgraph_titles ... ok
[INFO] [stdout] test common::tests::wrap_text_falls_back_to_hard_break ... ok
[INFO] [stdout] test common::tests::cli_parses_render_feedback_flags ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/tw.rs (/opt/rustwide/target/debug/deps/tw-28f1e832eec36893)
[INFO] [stdout] 
[INFO] [stdout] running 19 tests
[INFO] [stdout] test common::tests::apply_inverted_titles_to_tui_frame_respects_viewport_crop ... ok
[INFO] [stdout] test common::tests::invert_subgraph_titles_ansi_wraps_title_tokens ... ok
[INFO] [stdout] test common::tests::build_findings_frame_clean_report_shows_clean_message ... ok
[INFO] [stdout] test common::tests::build_watch_frame_inverts_subgraph_titles ... ok
[INFO] [stdout] test common::tests::wrap_text_uses_display_width_for_cjk ... ok
[INFO] [stdout] test common::tests::cli_accepts_legacy_ansi_title_invert_flag ... ok
[INFO] [stdout] test common::tests::wrap_text_breaks_at_space ... ok
[INFO] [stdout] test common::tests::cli_help_mentions_live_preview_caveats ... ok
[INFO] [stdout] test common::tests::build_findings_frame_with_findings_shows_finding_code ... ok
[INFO] [stdout] test common::tests::build_watch_frame_includes_status_row ... ok
[INFO] [stdout] test common::tests::viewport_indicator_reports_line_and_column_position ... ok
[INFO] [stdout] test common::tests::wrap_text_falls_back_to_hard_break ... ok
[INFO] [stdout] test common::tests::cli_parses_render_feedback_flags ... ok
[INFO] [stdout] test common::tests::invert_subgraph_titles_ansi_only_styles_semantic_title_cells ... ok
[INFO] [stdout] test common::tests::printable_output_inverts_titles_by_default_for_tty_print_mode ... ok
[INFO] [stdout] test common::tests::printable_output_uses_display_aligned_semantic_frame ... ok
[INFO] [stdout] test common::tests::tui_status_can_surface_horizontal_pan_state ... ok
[INFO] [stdout] test common::tests::wrap_text_preserves_grapheme_clusters_on_hard_break ... ok
[INFO] [stdout] test common::tests::wrap_text_short_string_is_unchanged ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests termiflow
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test src/spacing.rs - spacing (line 16) ... ok
[INFO] [stdout] test src/lib.rs - render (line 268) ... ok
[INFO] [stdout] test src/lib.rs - (line 7) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.07s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351", kill_on_drop: false }`
[INFO] [stdout] e91650311c1cd6f1e1cc1e99e925f98930eb8b00a5589171a1ccd11551557351
