[INFO] fetching crate cosmolkit-reaction 0.5.1-rc.3...
[INFO] testing cosmolkit-reaction-0.5.1-rc.3 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate cosmolkit-reaction 0.5.1-rc.3 into /workspace/builds/worker-0-tc2/source
[INFO] started tweaking crates.io crate cosmolkit-reaction 0.5.1-rc.3
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate cosmolkit-reaction 0.5.1-rc.3
[INFO] tweaked toml for crates.io crate cosmolkit-reaction 0.5.1-rc.3 written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate cosmolkit-reaction 0.5.1-rc.3 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate cosmolkit-reaction 0.5.1-rc.3 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.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468
[INFO] running `Command { std: "docker" "start" "a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468", 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" "a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468", 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" "a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling thiserror v2.0.21
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling serde_json v1.0.154
[INFO] [stderr]    Compiling libc v0.2.190
[INFO] [stderr]    Compiling syn v3.0.9
[INFO] [stderr]    Compiling thiserror-impl v2.0.21
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling hashify v0.3.1
[INFO] [stderr]    Compiling cosmolkit-ringdecomposer v0.5.1-rc.3
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling cosmolkit-types v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-model v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-core v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-cx v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-smiles v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-search v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-reaction v0.5.1-rc.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `QueryAtom`
[INFO] [stdout]  --> src/validation.rs:2:51
[INFO] [stdout]   |
[INFO] [stdout] 2 | use cosmolkit_model::{AtomId, AtomQueryPredicate, QueryAtom, QueryNode};
[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: `BondDirection`
[INFO] [stdout]   --> src/product_stereo.rs:11:23
[INFO] [stdout]    |
[INFO] [stdout] 11 | use cosmolkit_types::{BondDirection, BondOrder, BondStereo, ChiralTag};
[INFO] [stdout]    |                       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/reaction.rs:313:8
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl Reaction {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 313 |     fn begin_reactant_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     fn end_reactant_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     fn begin_product_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 349 |     fn end_product_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     fn begin_agent_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     fn end_agent_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 385 |     fn begin_reactant_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     fn end_reactant_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     fn begin_product_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     fn end_product_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     fn begin_agent_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 445 |     fn end_agent_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `bond_between` is never used
[INFO] [stdout]   --> src/materialize.rs:29:19
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ProductBuilder {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub(crate) fn bond_between(&self, begin: usize, end: usize) -> Option<BondId> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `product_atom_bond` is never read
[INFO] [stdout]   --> src/materialize.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub(crate) struct ReactantProductMapping {
[INFO] [stdout]    |                   ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub product_atom_bond: BTreeMap<usize, usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `atom_mappings` is never used
[INFO] [stdout]    --> src/materialize.rs:761:15
[INFO] [stdout]     |
[INFO] [stdout] 761 | pub(crate) fn atom_mappings(
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `outputs` is never read
[INFO] [stdout]  --> src/write.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub(crate) struct SmirksBase {
[INFO] [stdout]   |                   ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 8 |     pub outputs: Vec<SmartsWriteOutput>,
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 13s
[INFO] running `Command { std: "docker" "inspect" "a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468", 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" "a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling cosmolkit-model v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-core v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-cx v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-smiles v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-search v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-reaction v0.5.1-rc.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `QueryAtom`
[INFO] [stdout]  --> src/validation.rs:2:51
[INFO] [stdout]   |
[INFO] [stdout] 2 | use cosmolkit_model::{AtomId, AtomQueryPredicate, QueryAtom, QueryNode};
[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: `BondDirection`
[INFO] [stdout]   --> src/product_stereo.rs:11:23
[INFO] [stdout]    |
[INFO] [stdout] 11 | use cosmolkit_types::{BondDirection, BondOrder, BondStereo, ChiralTag};
[INFO] [stdout]    |                       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/reaction.rs:313:8
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl Reaction {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 313 |     fn begin_reactant_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     fn end_reactant_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     fn begin_product_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 349 |     fn end_product_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     fn begin_agent_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     fn end_agent_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 385 |     fn begin_reactant_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     fn end_reactant_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     fn begin_product_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     fn end_product_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     fn begin_agent_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 445 |     fn end_agent_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `bond_between` is never used
[INFO] [stdout]   --> src/materialize.rs:29:19
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ProductBuilder {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub(crate) fn bond_between(&self, begin: usize, end: usize) -> Option<BondId> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `product_atom_bond` is never read
[INFO] [stdout]   --> src/materialize.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub(crate) struct ReactantProductMapping {
[INFO] [stdout]    |                   ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub product_atom_bond: BTreeMap<usize, usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `atom_mappings` is never used
[INFO] [stdout]    --> src/materialize.rs:761:15
[INFO] [stdout]     |
[INFO] [stdout] 761 | pub(crate) fn atom_mappings(
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `outputs` is never read
[INFO] [stdout]  --> src/write.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub(crate) struct SmirksBase {
[INFO] [stdout]   |                   ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 8 |     pub outputs: Vec<SmartsWriteOutput>,
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 37s
[INFO] running `Command { std: "docker" "inspect" "a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468", 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" "a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `QueryAtom`
[INFO] [stderr]  --> src/validation.rs:2:51
[INFO] [stderr]   |
[INFO] [stderr] 2 | use cosmolkit_model::{AtomId, AtomQueryPredicate, QueryAtom, QueryNode};
[INFO] [stderr]   |                                                   ^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `BondDirection`
[INFO] [stderr]   --> src/product_stereo.rs:11:23
[INFO] [stderr]    |
[INFO] [stderr] 11 | use cosmolkit_types::{BondDirection, BondOrder, BondStereo, ChiralTag};
[INFO] [stderr]    |                       ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/reaction.rs:313:8
[INFO] [stderr]     |
[INFO] [stderr]  44 | impl Reaction {
[INFO] [stderr]     | ------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 313 |     fn begin_reactant_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 325 |     fn end_reactant_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 337 |     fn begin_product_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 349 |     fn end_product_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 361 |     fn begin_agent_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 373 |     fn end_agent_templates_source(&self) -> (&[QueryGraph], usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 385 |     fn begin_reactant_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 397 |     fn end_reactant_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 409 |     fn begin_product_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 421 |     fn end_product_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 433 |     fn begin_agent_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 445 |     fn end_agent_templates_mut_source(&mut self) -> (&mut [QueryGraph], usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `bond_between` is never used
[INFO] [stderr]   --> src/materialize.rs:29:19
[INFO] [stderr]    |
[INFO] [stderr] 20 | impl ProductBuilder {
[INFO] [stderr]    | ------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 29 |     pub(crate) fn bond_between(&self, begin: usize, end: usize) -> Option<BondId> {
[INFO] [stderr]    |                   ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `product_atom_bond` is never read
[INFO] [stderr]   --> src/materialize.rs:67:9
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub(crate) struct ReactantProductMapping {
[INFO] [stderr]    |                   ---------------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 67 |     pub product_atom_bond: BTreeMap<usize, usize>,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `atom_mappings` is never used
[INFO] [stderr]    --> src/materialize.rs:761:15
[INFO] [stderr]     |
[INFO] [stderr] 761 | pub(crate) fn atom_mappings(
[INFO] [stderr]     |               ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `outputs` is never read
[INFO] [stderr]  --> src/write.rs:8:9
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub(crate) struct SmirksBase {
[INFO] [stderr]   |                   ---------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 8 |     pub outputs: Vec<SmartsWriteOutput>,
[INFO] [stderr]   |         ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `cosmolkit-reaction` (lib) generated 7 warnings (run `cargo fix --lib -p cosmolkit-reaction` to apply 2 suggestions)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.05s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/cosmolkit-reaction/4009d3444cd965da/out/cosmolkit_reaction-4009d3444cd965da)
[INFO] [stdout] 
[INFO] [stdout] running 461 tests
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::native_one_match_cap_precedes_protection_filter_without_refilling ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::no_match_returns_no_detached_copy_and_never_reads_unreached_coordinate_shape ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::remove_unmatched_option_keeps_reachable_sidechain_and_controls_disconnected_fragment ... ok
[INFO] [stdout] test apply::complete_identify_removed_source_tests::negative_and_positive_out_of_range_bit_indices_fail_at_reached_set_with_prefix_retained ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::new_bond_then_atom_removal_preserves_appended_bond_mapping_and_endpoint_renumbering ... ok
[INFO] [stdout] test apply::complete_identify_removed_source_tests::physical_template_order_indexes_match_by_actual_atom_id_and_ignores_pair_first_fields ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::actual_atomic_change_returns_source_bool_and_identity_mapping_without_cache_recompute ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::template_properties_determine_source_modified_bool_and_identity_keeps_no_change ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::source_removal_commits_dense_mapping_clears_computed_props_and_keeps_original_immutable ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::source_commit_endpoint_parse_error_is_structural_and_preserves_caller_blocks ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::unmapped_and_new_product_atoms_reject_before_input_matching ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::helper_failure_after_private_atom_write_keeps_original_input_unchanged ... ok
[INFO] [stdout] test apply::complete_identify_removed_source_tests::preserved_positive_and_negative_maps_use_unsigned_map_keys_without_reached_match_reads ... ok
[INFO] [stdout] test apply::complete_identify_removed_source_tests::property_conversion_error_keeps_prior_removed_bits_and_precedes_later_match_read ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::product_map_reads_precede_reactant_map_reads_and_duplicate_product_keys_keep_last_atom ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::approved_public_initialization_uses_private_copy_and_source_keeps_native_gate ... ok
[INFO] [stdout] test apply::complete_identify_removed_source_tests::canonical_index_adapter_converts_only_reached_removed_atoms_and_rejects_source_uint_overflow ... ok
[INFO] [stdout] test apply::complete_traverse_removed_source_tests::fifo_physical_neighbor_order_selects_first_reached_branch_error_without_mask_commit ... ok
[INFO] [stdout] test apply::complete_traverse_removed_source_tests::later_template_property_error_discards_all_temporary_traversal_changes ... ok
[INFO] [stdout] test apply::complete_traverse_removed_source_tests::no_matches_marks_entire_mask_even_when_source_graph_shape_is_unreached ... ok
[INFO] [stdout] test apply::complete_traverse_removed_source_tests::reached_missing_neighbor_pointer_preserves_mask_before_final_or ... ok
[INFO] [stdout] test apply::complete_traverse_removed_source_tests::reached_missing_seed_pointer_preserves_mask_before_final_or ... ok
[INFO] [stdout] test apply::complete_traverse_removed_source_tests::retained_mapped_component_cycle_and_duplicate_paths_preserve_removed_barrier_and_drop_disconnected_atoms ... ok
[INFO] [stdout] test apply::complete_traverse_removed_source_tests::all_match_resets_precede_any_template_lookup_and_fail_without_committing_original_mask ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::creation_find_if_keeps_first_duplicate_and_never_dereferences_later_invalid_query_index ... ok
[INFO] [stdout] test apply::complete_traverse_removed_source_tests::canonical_adapter_preserves_source_signed_bit_width_and_reports_larger_usize_overflow ... ok
[INFO] [stdout] test apply::complete_traverse_removed_source_tests::actual_source_atom_ids_drive_reset_and_neighbor_identity_without_eager_id_canonicalization ... ok
[INFO] [stdout] test apply::complete_traverse_removed_source_tests::reached_missing_csr_row_is_error_instead_of_empty_neighbor_fallback ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::creation_skips_unmapped_neighbors_and_unequal_lengths_but_propagates_equal_length_permutation_error_after_set_tag ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::creation_checks_product_neighbors_then_actual_working_atom_csr_after_assigning_chiral_tag ... ok
[INFO] [stdout] test apply::complete_identify_removed_source_tests::empty_template_skips_all_match_access_and_preserves_existing_mask ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::dummy_query_preserves_actual_element_but_ordinary_dummy_carrier_sets_zero ... ok
[INFO] [stdout] test apply::complete_traverse_removed_source_tests::signed_sparse_reordered_query_pairs_control_which_matched_component_can_seed ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::canonical_adapter_leaves_unused_match_rows_unconverted_and_inversion_error_retains_prior_atomic_change ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::checked_lookup_order_is_reactant_then_product_map_then_product_atom_then_match_then_actual_atom ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::element_change_decision_compares_template_atoms_and_reports_assignment_even_if_actual_element_same ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::inversion_flags_cover_all_chiral_tags_with_source_modified_bool_independent_of_equality ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::non_tetrahedral_permutation_inversion_uses_sole_core_tables ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::empty_preserved_map_never_reads_templates_matches_or_working_atoms ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::source_template_properties_and_errors_preserve_scalar_write_order_before_chirality ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::actual_id_conversion_is_reached_only_for_removal_and_query_edge_adapter_keeps_range_check_order ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::canonical_match_adapter_converts_only_reached_rows_and_unsigned_map_order_keeps_write_prefix ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::differing_template_bond_requires_actual_edge_and_retains_prior_updates_on_later_error ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::same_template_order_and_unspecified_product_never_read_actual_bond_endpoints ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::unsigned_map_order_preserves_earlier_atom_write_before_later_missing_map_key ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::lookup_precedence_and_signed_target_failures_do_not_panic_or_write ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::actual_atom_id_controls_removal_endpoint_and_source_template_ids_control_neighbors ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::existing_template_bond_compares_templates_and_modified_bool_even_if_actual_order_equal ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::new_ordinary_bond_uses_product_endpoint_order_and_source_cache_aromatic_and_pending_masks ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::unmapped_or_unpreserved_neighbors_skip_later_match_and_edge_reads_but_property_errors_propagate ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::new_query_bond_deep_copies_only_predicate_preserves_cache_and_does_not_inherit_atom_removal ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::no_template_edge_updates_existing_actual_edge_including_unspecified_order_without_copying_query ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::removal_keeps_pending_edge_visible_duplicate_visits_and_modified_bool_for_absent_edge ... ok
[INFO] [stdout] test management::complete_remove_agents_source::source_empty_role_keeps_target_prefix_and_unvalidated_template_state_is_copied ... ok
[INFO] [stdout] test management::complete_remove_agents_source::source_optional_target_appends_before_clear_preserving_vector_capacity_and_other_state ... ok
[INFO] [stdout] test management::complete_remove_unmapped_products_source::source_options_append_to_existing_outputs_and_preserve_kept_storage_flags_and_order ... ok
[INFO] [stdout] test management::complete_remove_unmapped_products_source::immutable_projection_keeps_original_and_delegates_complete_source_removal ... ok
[INFO] [stdout] test management::complete_remove_unmapped_products_source::source_accepts_nonfinite_threshold_and_does_not_add_graph_validation_or_init_reset ... ok
[INFO] [stdout] test management::complete_remove_unmapped_reactants_source::immutable_projection_keeps_original_and_delegates_complete_source_removal ... ok
[INFO] [stdout] test management::complete_remove_unmapped_reactants_source::source_accepts_nonfinite_threshold_and_does_not_add_graph_validation_or_init_reset ... ok
[INFO] [stdout] test management::source574_property_presence_tests::source574_counts_atoms_even_when_values_repeat_or_have_different_tags ... ok
[INFO] [stdout] test management::complete_remove_unmapped_reactants_source::source_options_append_to_existing_outputs_and_preserve_kept_storage_flags_and_order ... ok
[INFO] [stdout] test apply::complete_update_bonds_source_tests::empty_map_reads_no_templates_matches_or_editor ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::arity_precedes_initialization_and_initialization_precedes_template_properties ... ok
[INFO] [stdout] test management::source574_property_presence_tests::source574_byte_property_names_and_explicit_option_presence ... ok
[INFO] [stdout] test management::source574_property_presence_tests::source574_zero_map_and_duplicate_raw_typed_presence_count_once_per_atom ... ok
[INFO] [stdout] test matching::complete_matches_to_template_source_tests::any_protected_atom_rejects_the_whole_mapping_without_reordering_survivors ... ok
[INFO] [stdout] test matching::complete_matches_to_template_source_tests::complete_get_reactant_matches_source_tests::arity_precondition_precedes_output_clear ... ok
[INFO] [stdout] test matching::complete_matches_to_template_source_tests::complete_get_reactant_matches_source_tests::first_empty_selected_match_keeps_prior_output_and_does_not_evaluate_later_template ... ok
[INFO] [stdout] test matching::complete_matches_to_template_source_tests::complete_get_reactant_matches_source_tests::output_resets_and_matches_without_extra_initialization_gate ... ok
[INFO] [stdout] test matching::complete_matches_to_template_source_tests::complete_get_reactant_matches_source_tests::reached_search_error_keeps_prior_slots_and_exact_reactant_context ... ok
[INFO] [stdout] test matching::complete_matches_to_template_source_tests::complete_get_reactant_matches_source_tests::single_selection_skips_all_other_templates_and_out_of_range_is_no_selection ... ok
[INFO] [stdout] test matching::complete_matches_to_template_source_tests::protected_is_exact_property_presence_for_false_zero_and_wrong_tag_values ... ok
[INFO] [stdout] test apply::complete_update_atoms_source_tests::creation_uses_signed_pair_first_for_neighbor_template_lookup_and_swaps_odd_permutation ... ok
[INFO] [stdout] test matching::complete_matches_to_template_source_tests::symmetry_is_not_uniquified_and_native_max_overrides_caller_options ... ok
[INFO] [stdout] test matching::complete_matches_to_template_source_tests::remaining_match_options_and_final_callback_are_forwarded_to_the_single_search_owner ... ok
[INFO] [stdout] test apply::complete_traverse_removed_source_tests::absent_map_and_already_removed_seeds_skip_missing_input_pointers_and_csr_rows ... ok
[INFO] [stdout] test matching::complete_recurse_combinations_source_tests::encounter_order_duplicates_and_empty_mappings_survive_cartesian_recursion ... ok
[INFO] [stdout] test apply::complete_apply_reaction_source_tests::bond_type_update_keeps_cache_and_computed_state_without_a_removal_effect ... ok
[INFO] [stdout] test materialize::complete_add_missing_atom_source_tests::missing_original_bond_retains_added_atom_and_bidirectional_mapping_before_structural_null_error ... ok
[INFO] [stdout] test matching::complete_generate_reactant_combinations_source_tests::cap_truncation_returns_normally_with_exact_prefix_and_no_deduplication ... ok
[INFO] [stdout] test materialize::complete_add_missing_atom_source_tests::original_endpoint_range_failure_occurs_after_atom_mapping_writes_with_begin_checked_first ... ok
[INFO] [stdout] test matching::complete_generate_reactant_combinations_source_tests::empty_match_level_and_empty_mapping_value_have_distinct_native_results ... ok
[INFO] [stdout] test apply::complete_identify_removed_source_tests::reached_missing_match_slot_is_structural_after_prior_bit_writes ... ok
[INFO] [stdout] test matching::complete_recurse_combinations_source_tests::source_keep_going_reports_attempted_extra_candidate_not_merely_reaching_cap ... ok
[INFO] [stdout] test matching::complete_generate_reactant_combinations_source_tests::native_clear_precedes_zero_level_recursion_error_and_preserves_output_allocation ... ok
[INFO] [stdout] test matching::complete_generate_reactant_combinations_source_tests::native_output_reset_retains_order_and_duplicates_in_real_caller_storage ... ok
[INFO] [stdout] test apply::complete_identify_removed_source_tests::duplicate_target_bits_are_reached_in_each_physical_template_iteration ... ok
[INFO] [stdout] test materialize::complete_add_missing_atom_source_tests::repeated_atom_add_appends_mapping_rows_and_never_changes_mapped_or_skipped_bits ... ok
[INFO] [stdout] test matching::complete_recurse_combinations_source_tests::source_preconditions_precede_existing_output_cap_and_keep_output_unchanged ... ok
[INFO] [stdout] test management::complete_is_agent_source_tests::heavy_denominator_mapped_hydrogens_zero_guard_and_nonfinite_thresholds_follow_source ... ok
[INFO] [stdout] test materialize::complete_add_missing_atom_source_tests::source_double_either_direction_and_query_copy_use_shared_bond_kernel ... ok
[INFO] [stdout] test materialize::complete_add_missing_bonds_source_tests::aligned_lists_pair_by_physical_position_without_cartesian_product_or_sorting ... ok
[INFO] [stdout] test management::complete_remove_agents_source::immutable_projection_preserves_original_templates_and_initialization ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::both_property_presence_checks_precede_either_numeric_conversion ... ok
[INFO] [stdout] test materialize::complete_add_missing_bonds_source_tests::later_add_failure_keeps_prior_bond_neighbor_and_origin_prefix_without_visiting_later_pair ... ok
[INFO] [stdout] test materialize::complete_add_missing_bonds_source_tests::query_bond_pairs_use_the_shared_pointer_overload_and_retain_construction_defaults ... ok
[INFO] [stdout] test materialize::complete_add_missing_atom_source_tests::product_bond_failure_occurs_after_atom_append_without_undoing_origin_or_mapping_prefix ... ok
[INFO] [stdout] test materialize::complete_add_missing_bonds_source_tests::absent_keys_are_inserted_even_when_both_lists_empty_and_same_key_is_inserted_once ... ok
[INFO] [stdout] test materialize::complete_add_missing_bonds_source_tests::size_invariant_runs_after_both_insertions_and_before_product_or_bond_access ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::mapped_neighbors_not_bonded_in_template_get_aligned_missing_bond ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::one_to_many_current_snapshot_preserves_physical_copy_order_across_new_mapping_updates ... ok
[INFO] [stdout] test matching::complete_matches_to_template_source_tests::native_match_cap_precedes_protection_filter_without_refilling ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::intentional_template_bond_break_uses_signed_sort_then_unsigned_key_and_defers_original_read ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::later_copy_failure_keeps_prior_atom_mapping_bond_prefix_but_does_not_enqueue_neighbor ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::cycle_adds_cross_bond_once_using_already_added_unvisited_neighbor_case ... ok
[INFO] [stdout] test materialize::complete_add_missing_atom_source_tests::ordinary_atom_copy_origin_maps_and_source_bond_orientation_are_preserved ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::empty_product_snapshot_still_enqueues_neighbor_and_chiral_check_then_hits_stack_invariant ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::already_added_unmapped_neighbor_adds_bond_without_atom_or_queue_chiral_insertions ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::existing_product_bond_skips_original_edge_lookup_and_all_map_property_reads ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::fifo_neighbor_encounter_order_controls_product_rows_and_chiral_check_order ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::mapped_neighbor_invariant_precedes_original_edge_access_when_current_is_unmapped ... ok
[INFO] [stdout] test materialize::complete_add_source_bond_source_tests::aromatic_query_uses_pointer_overload_without_atom_flags_or_cache_effects ... ok
[INFO] [stdout] test materialize::complete_add_source_bond_source_tests::ordinary_aromatic_type_sets_only_source_endpoint_aromatic_flags ... ok
[INFO] [stdout] test materialize::complete_check_product_chirality_source_tests::inversion_only_accepts_cw_ccw_and_other_reactant_tags_leave_existing_product_tag ... ok
[INFO] [stdout] test materialize::complete_check_product_chirality_source_tests::required_flag_missing_or_wrong_kind_errors_before_any_chiral_write ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::target_operator_index_inserts_missing_key_after_begin_first_element_access ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_atom_mappings_source_tests::existing_empty_bookmark_does_not_access_even_negative_target_bit_or_mark_skipped ... ok
[INFO] [stdout] test materialize::complete_check_product_chirality_source_tests::zero_and_two_copy_every_source_chiral_tag_including_non_tetrahedral_tags ... ok
[INFO] [stdout] test matching::complete_recurse_combinations_source_tests::empty_level_produces_no_product_and_returns_true_without_clearing_prior_output ... ok
[INFO] [stdout] test materialize::complete_check_product_chirality_source_tests::destruction_creation_and_unrecognized_flags_have_literal_source_effects ... ok
[INFO] [stdout] test materialize::complete_check_product_chirality_source_tests::existing_typed_projection_and_raw_numeric_conversion_preserve_other_atom_state ... ok
[INFO] [stdout] test materialize::complete_add_source_bond_source_tests::both_overloads_preserve_rows_neighbors_and_origins_on_range_self_or_duplicate_error ... ok
[INFO] [stdout] test materialize::complete_add_source_bond_source_tests::ordinary_bond_only_inherits_type_and_uses_source_order_overload_cache_reset ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_atom_mappings_source_tests::reached_bit_access_precedes_product_check_and_query_range_precedes_both ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_atom_mappings_source_tests::template_bond_begin_property_is_read_before_end_atom_lookup ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_atom_mappings_source_tests::template_bonds_are_built_before_empty_match_with_signed_sort_then_unsigned_key_conversion ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_transfer_bond_properties_source_tests::ordinary_unmarked_bond_skips_transfer_even_when_reactant_order_and_properties_differ ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_atom_mappings_source_tests::template_property_error_precedes_unreached_invalid_target_access ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_transfer_bond_properties_source_tests::source_endpoint_range_checks_precede_edge_lookup_and_transfer_branch_selection ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_transfer_bond_properties_source_tests::query_replace_order_read_failure_precedes_replacement_and_keeps_product_state ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_transfer_bond_properties_source_tests::query_replacement_copies_query_resets_old_metadata_and_adjusts_fractional_hydrogens ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_transfer_bond_properties_source_tests::unmapped_endpoints_and_missing_reactant_bond_skip_all_mutations ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::unknown_double_stereo_requires_both_degrees_and_missing_direction_on_either_side ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::zero_negative_and_duplicate_maps_create_ordered_bookmarks_then_clear_maps_and_write_old_mapno ... ok
[INFO] [stdout] test matching::complete_recurse_combinations_source_tests::nonzero_start_level_preserves_supplied_combination_prefix ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::map_clear_error_propagates_before_reaction_map_write_instead_of_being_discarded ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_transfer_bond_properties_source_tests::malformed_null_clear_propagates_after_native_prior_writes_and_before_provenance ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::native_property_update_overwrites_new_null_and_unknown_flags_with_existing_source_values ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::ordinary_bond_projection_copies_direction_and_dictionary_but_not_template_stereo_or_conjugation ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_transfer_bond_properties_source_tests::only_double_either_direction_is_inherited_for_ordinary_and_query_branches ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::self_alias_annotation_reads_apply_to_the_copied_atom_in_source_order ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_transfer_bond_properties_source_tests::presence_only_markers_trigger_order_and_dictionary_transfer_without_hydrogen_adjustment ... ok
[INFO] [stdout] test materialize::complete_reactant_product_mapping_constructor_source_tests::mapped_and_skipped_bits_and_separate_instances_have_independent_storage ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::bond_or_uses_destination_aromaticity_and_negated_description_while_carrier_query_stays_absent ... ok
[INFO] [stdout] test materialize::complete_add_source_bond_source_tests::appends_keep_stable_rows_origin_alignment_and_query_other_order_without_valence_read ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_atom_mappings_source_tests::duplicated_matches_preserve_all_rows_last_reverse_mapping_and_independent_skip_bits ... ok
[INFO] [stdout] test materialize::complete_reactant_product_mapping_constructor_source_tests::zero_width_has_no_bits_and_all_default_maps_are_empty ... ok
[INFO] [stdout] test materialize::complete_transfer_atom_properties_source_tests::concrete_identity_clears_only_present_bookkeeping_and_identity_change_prevents_implicit_inheritance ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_atom_mappings_source_tests::sparse_and_reordered_pair_indices_keep_one_to_many_bookmark_order ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::complete_atom_mappings_source_tests::dense_match_projection_delegates_source_pair_kernel_without_a_second_mapping_algorithm ... ok
[INFO] [stdout] test materialize::complete_transfer_atom_properties_source_tests::dummy_and_presence_only_query_marker_replace_identity_and_apply_implicit_source_rules ... ok
[INFO] [stdout] test materialize::complete_update_from_template_source_tests::absent_properties_and_valid_mass_only_leave_fields_and_changed_false ... ok
[INFO] [stdout] test materialize::complete_transfer_atom_properties_source_tests::typed_flag_presence_reuses_canonical_checker_and_residue_copy_occurs_only_when_present ... ok
[INFO] [stdout] test materialize::complete_update_from_template_source_tests::conversion_failure_order_retains_exact_prior_mutation_prefix_including_unused_mass_read ... ok
[INFO] [stdout] test materialize::complete_update_from_template_source_tests::native_compare_precedes_narrow_scalar_assignment_and_repeated_call_can_still_report_changed ... ok
[INFO] [stdout] test materialize::complete_convert_template_source_tests::inversion_set_four_alone_keeps_template_chirality_and_other_flags_clear_it ... ok
[INFO] [stdout] test materialize::complete_update_implicit_atom_properties_source_tests::every_presence_guard_combination_preserves_native_independent_copy_rules_without_value_casts ... ok
[INFO] [stdout] test materialize::complete_transfer_atom_properties_source_tests::reached_dummy_label_clear_errors_preserve_identity_isotope_prefix_and_prevent_bookkeeping ... ok
[INFO] [stdout] test materialize::complete_transfer_atom_properties_source_tests::reached_concrete_bookkeeping_clear_failure_precedes_origin_and_implicit_writes ... ok
[INFO] [stdout] test materialize::complete_update_from_template_source_tests::query_atom_and_atom_templates_share_canonical_typed_property_conversion ... ok
[INFO] [stdout] test materialize::complete_update_from_template_source_tests::equal_hydrogen_count_still_sets_no_implicit_then_second_call_is_unchanged ... ok
[INFO] [stdout] test materialize::complete_transfer_atom_properties_source_tests::absent_clear_keys_do_not_read_malformed_computed_membership ... ok
[INFO] [stdout] test materialize::complete_transfer_atom_properties_source_tests::source_origin_indices_are_unsigned_and_overflow_errors_retain_reached_prefix ... ok
[INFO] [stdout] test materialize::complete_add_neighbors_source_tests::visited_then_skipped_short_circuit_never_reads_later_bitsets_or_invalid_edge_row ... ok
[INFO] [stdout] test materialize::complete_reactant_product_mapping_constructor_source_tests::source_resize_initializes_all_bits_false_across_block_boundaries ... ok
[INFO] [stdout] test parse::complete_construct_component_source_tests::dispatch_replacements_and_native_query_presence_follow_selected_parser ... ok
[INFO] [stdout] test materialize::complete_update_implicit_atom_properties_source_tests::reactant_query_annotations_do_not_guard_product_or_copy_generic_properties ... ok
[INFO] [stdout] test parse::complete_construct_component_source_tests::source_disables_component_name_and_cx_parsing_without_fallback_or_context_loss ... ok
[INFO] [stdout] test materialize::complete_update_implicit_atom_properties_source_tests::source_zero_values_clear_previous_fields_including_no_implicit_and_isotope ... ok
[INFO] [stdout] test materialize::complete_transfer_atom_properties_source_tests::chirality_guards_skip_bad_flags_for_unspecified_other_and_error_before_residue_copy_when_reached ... ok
[INFO] [stdout] test materialize::source_add_bond_consumer_tests::source_add_bond_consumer_resets_native_cached_valences_and_retains_provenance ... ok
[INFO] [stdout] test parse::complete_construct_component_source_tests::detached_carrier_projection_preserves_ordered_byte_properties_and_mixed_conformer_order ... ok
[INFO] [stdout] test materialize::complete_update_implicit_atom_properties_source_tests::identity_change_returns_before_all_inheritance_and_retains_product_annotations ... ok
[INFO] [stdout] test parse::complete_parse_reaction_source_tests::c_locale_edge_trim_includes_vertical_tab_and_preserves_unicode_space ... ok
[INFO] [stdout] test parse::complete_reaction_from_smiles_source_tests::native_smiles_selector_is_true_for_both_combined_projection_mode_values ... ok
[INFO] [stdout] test parse::complete_parse_reaction_source_tests::component_byte_slices_reach_smarts_owner_without_utf8_repair ... ok
[INFO] [stdout] test parse::complete_construct_component_source_tests::sanitize_flag_is_forwarded_only_to_smiles ... ok
[INFO] [stdout] test parse::complete_construct_component_source_tests::source_keeps_explicit_hydrogens_in_both_modes ... ok
[INFO] [stdout] test parse::complete_parse_reaction_source_tests::grouping_dots_and_adjacent_whitespace_keep_source_component_order ... ok
[INFO] [stdout] test parse::complete_reaction_from_smiles_source_tests::native_smiles_overload_forwards_replacements_and_sanitize_options ... ok
[INFO] [stdout] test parse::complete_remove_spaces_source_tests::undefined_source_index_is_structured_and_keeps_prior_erase_effects ... ok
[INFO] [stdout] test parse::complete_reaction_from_smarts_source_tests::full_options_reference_is_forwarded_to_the_one_parser_body ... ok
[INFO] [stdout] test product_stereo::complete_anchor_index_source_tests::empty_candidates_never_read_adjacency_but_still_report_source_match_invariant ... ok
[INFO] [stdout] test product_stereo::complete_anchor_index_source_tests::first_bonded_candidate_in_given_order_wins_over_neighbor_order_and_duplicates ... ok
[INFO] [stdout] test parse::complete_remove_spaces_source_tests::removes_only_adjacent_space_and_tab_in_source_order ... ok
[INFO] [stdout] test product_stereo::complete_anchor_index_source_tests::no_connected_candidate_reports_match_failure_without_zero_or_first_candidate_fallback ... ok
[INFO] [stdout] test parse::complete_parse_reaction_source_tests::name_truncation_refinds_separators_and_dative_arrows_are_not_separators ... ok
[INFO] [stdout] test parse::complete_split_components_source_tests::native_substr_count_clamp_and_existing_checked_utf8_projection_are_explicit ... ok
[INFO] [stdout] test parse::complete_parse_reaction_source_tests::source_cx_guard_ignores_strict_flag_and_empty_template_loops_skip_invalid_cx ... ok
[INFO] [stdout] test product_stereo::complete_copy_enhanced_groups_source_tests::every_flag_other_than_four_keeps_nonunspecified_atom_without_tetrahedral_restriction ... ok
[INFO] [stdout] test parse::complete_parse_reaction_source_tests::source_role_failure_order_is_reactants_then_products_then_agents ... ok
[INFO] [stdout] test product_stereo::complete_copy_enhanced_groups_source_tests::mapping_key_and_encoded_product_pointer_use_actual_atom_index_fields ... ok
[INFO] [stdout] test parse::complete_reaction_from_smarts_source_tests::source_smarts_selector_is_false_independent_of_projection_mode_field ... ok
[INFO] [stdout] test parse::complete_split_components_source_tests::unsigned_parenthesis_underflow_and_closed_block_state_are_not_repaired ... ok
[INFO] [stdout] test parse::complete_parse_reaction_source_tests::agents_fragment_before_global_cx_reactant_agent_product_windows ... ok
[INFO] [stdout] test product_stereo::complete_copy_enhanced_groups_source_tests::new_nonabsolute_groups_prepend_and_existing_groups_keep_full_read_write_and_bond_state ... ok
[INFO] [stdout] test product_stereo::complete_anchor_index_source_tests::actual_atom_index_is_used_and_its_source_range_check_precedes_candidate_range_check ... ok
[INFO] [stdout] test parse::complete_remove_spaces_source_tests::source_endpoint_nul_is_defined_even_one_past_delimiter_position ... ok
[INFO] [stdout] test parse::complete_split_components_source_tests::counted_nul_and_non_utf8_component_bytes_survive_exact_source_substrings ... ok
[INFO] [stdout] test product_stereo::complete_copy_enhanced_groups_source_tests::reached_missing_source_or_product_group_atom_is_structural_error_before_assignment ... ok
[INFO] [stdout] test parse::complete_parse_reaction_source_tests::both_parser_modes_finish_cleanup_then_enable_implicit_properties_without_init ... ok
[INFO] [stdout] test product_stereo::complete_copy_enhanced_groups_source_tests::read_id_none_explicit_zero_and_nonzero_preserve_existing_model_projection_and_new_write_id_zero ... ok
[INFO] [stdout] test parse::complete_split_components_source_tests::grouped_dots_empty_components_and_source_trailing_rules ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::existing_group_read_error_after_new_group_staging_preserves_original_group_set ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::final_absolute_merge_retains_source_reverse_concatenation_and_duplicate_members ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::no_product_matches_or_empty_template_members_do_not_trigger_existing_group_merge ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::existing_no_overlap_is_copied_partial_overlap_is_split_and_full_overlap_is_removed ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::out_of_signed_range_template_map_is_not_wrapped_or_treated_as_absent ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::zero_map_abandons_group_but_earlier_marks_still_remove_overlapping_existing_group ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::zero_or_absent_first_map_skips_product_property_casts_and_keeps_existing_groups_when_none_new ... ok
[INFO] [stdout] test product_stereo::complete_anchor_index_source_tests::singleton_returns_candidate_without_owner_atom_or_connectivity_lookup ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::template_member_and_matched_product_bit_range_failures_are_structural_before_assignment ... ok
[INFO] [stdout] test product_stereo::complete_copy_enhanced_groups_source_tests::absolute_groups_use_sole_source_reverse_concatenation_without_sorting_or_deduplication ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::template_member_order_expands_all_matching_product_atoms_without_filtering_or_deduplication ... ok
[INFO] [stdout] test product_stereo::complete_correct_matched_chirality_source_tests::degree_guards_preserve_source_short_circuit_and_skip_chiral_assignment ... ok
[INFO] [stdout] test product_stereo::complete_correct_matched_chirality_source_tests::chiral_tag_assignment_precedes_permutation_failure_without_swallowing_error ... ok
[INFO] [stdout] test product_stereo::complete_correct_matched_chirality_source_tests::lost_reactant_bond_is_removed_in_source_order_only_until_lengths_agree ... ok
[INFO] [stdout] test product_stereo::complete_correct_matched_chirality_source_tests::missing_mapped_key_is_value_initialized_empty_without_any_product_read ... ok
[INFO] [stdout] test product_stereo::complete_correct_matched_chirality_source_tests::one_extra_unknown_product_bond_is_removed_before_permutation ... ok
[INFO] [stdout] test product_stereo::complete_correct_matched_chirality_source_tests::signed_unmatched_bond_guard_rejects_high_bit_source_index_before_substitution ... ok
[INFO] [stdout] test product_stereo::complete_correct_matched_chirality_source_tests::one_to_many_rows_preserve_earlier_chiral_write_when_later_flag_read_fails ... ok
[INFO] [stdout] test product_stereo::complete_correct_matched_chirality_source_tests::source_tag_and_flag_guards_skip_missing_adjacency_but_flag_cast_is_first ... ok
[INFO] [stdout] test product_stereo::complete_correct_matched_chirality_source_tests::two_unknowns_break_before_later_bad_mapping_and_one_unknown_with_lost_bond_skips ... ok
[INFO] [stdout] test product_stereo::complete_copy_enhanced_groups_source_tests::source_signed_flag_conversion_is_not_lossy_unsigned_cast_or_presence_only_filter ... ok
[INFO] [stdout] test product_stereo::complete_correct_matched_chirality_source_tests::reached_original_edge_range_error_does_not_become_an_unknown_bond ... ok
[INFO] [stdout] test product_stereo::complete_correct_matched_chirality_source_tests::one_unknown_same_degree_substitutes_first_unmatched_source_bond_in_place ... ok
[INFO] [stdout] test product_stereo::complete_copy_enhanced_groups_source_tests::absent_and_empty_mapping_or_bond_only_source_groups_leave_existing_groups_untouched ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::empty_template_groups_skip_all_product_rows_properties_and_existing_members ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::negative_nonzero_map_numbers_are_compared_as_signed_source_ints ... ok
[INFO] [stdout] test product_stereo::complete_correct_matched_chirality_source_tests::permutation_parity_and_source_inversion_flags_combine_by_xor ... ok
[INFO] [stdout] test product_stereo::complete_correct_unmatched_chirality_source_tests::equal_degree_non_cw_ccw_tags_skip_source_bonds_other_mapping_and_inversion_metadata ... ok
[INFO] [stdout] test product_stereo::complete_correct_unmatched_chirality_source_tests::absent_center_mapping_inserts_empty_after_reactant_degree_read_and_skips_product ... ok
[INFO] [stdout] test product_stereo::complete_copy_enhanced_groups_source_tests::recovery_chem29_final_abs_merge_failure_preserves_original_product_groups ... ok
[INFO] [stdout] test product_stereo::complete_copy_enhanced_groups_source_tests::flag_conversion_failure_after_staged_groups_preserves_entire_existing_group_set ... ok
[INFO] [stdout] test product_stereo::complete_copy_enhanced_groups_source_tests::mapped_group_members_preserve_source_atom_copy_order_duplicates_and_literal_flag_four_filter ... ok
[INFO] [stdout] test product_stereo::complete_correct_unmatched_chirality_source_tests::nonincident_source_bond_fails_checked_other_atom_helper_before_mapping ... ok
[INFO] [stdout] test product_stereo::complete_correct_unmatched_chirality_source_tests::one_to_many_uses_aligned_copy_index_and_preserves_earlier_inversion_on_later_error ... ok
[INFO] [stdout] test product_stereo::complete_correct_unmatched_chirality_source_tests::other_neighbor_index_comes_from_actual_reactant_bond_not_csr_atom_projection ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::reached_bad_product_property_after_staging_keeps_original_groups_without_partial_commit ... ok
[INFO] [stdout] test product_stereo::complete_correct_unmatched_chirality_source_tests::missing_product_edge_or_out_of_range_neighbor_is_not_silently_ignored ... ok
[INFO] [stdout] test product_stereo::complete_copy_template_groups_source_tests::recovery_chem29_template_distinct_members_with_repeated_map_reject_generated_duplicate_before_commit ... ok
[INFO] [stdout] test product_stereo::complete_correct_unmatched_chirality_source_tests::missing_neighbor_key_and_short_copy_vector_remain_distinct_structural_failures ... ok
[INFO] [stdout] test product_stereo::complete_forward_bond_stereo_source_tests::all_defined_stereo_codes_forward_with_primary_secondary_parity_and_reversed_bond_ends ... ok
[INFO] [stdout] test product_stereo::complete_forward_bond_stereo_source_tests::connected_start_reaches_invalid_end_range_check_before_any_product_write ... ok
[INFO] [stdout] test product_stereo::complete_anchor_index_source_tests::reached_out_of_range_candidate_errors_before_later_match_but_unreached_bad_candidate_is_ignored ... ok
[INFO] [stdout] test product_stereo::complete_correct_unmatched_chirality_source_tests::missing_reactant_chirality_precedes_degree_or_mapping_and_mismatched_product_precedes_degree ... ok
[INFO] [stdout] test product_stereo::complete_correct_unmatched_chirality_source_tests::zero_degree_source_cw_atom_has_empty_perturbation_without_added_degree_guard ... ok
[INFO] [stdout] test product_stereo::complete_product_anchor_candidates_source_tests::absent_secondary_pointer_does_not_use_zero_key_or_dereference_it ... ok
[INFO] [stdout] test product_stereo::complete_forward_bond_stereo_source_tests::absent_begin_map_key_inserts_zero_before_endpoint_mismatch_error ... ok
[INFO] [stdout] test product_stereo::complete_forward_bond_stereo_source_tests::multiple_candidates_choose_first_connected_in_given_order_without_relabeling_swap ... ok
[INFO] [stdout] test product_stereo::complete_forward_bond_stereo_source_tests::stored_references_skip_bad_cip_rank_but_reached_constructor_fact_error_precedes_map_insertion ... ok
[INFO] [stdout] test product_stereo::complete_forward_bond_stereo_source_tests::default_zero_begin_mapping_is_a_real_source_endpoint_and_can_forward ... ok
[INFO] [stdout] test product_stereo::complete_forward_bond_stereo_source_tests::disconnected_start_warning_short_circuits_invalid_end_index_without_writes ... ok
[INFO] [stdout] test product_stereo::complete_forward_bond_stereo_source_tests::undefined_stereo_precondition_precedes_lazy_valence_or_mapping_work ... ok
[INFO] [stdout] test product_stereo::complete_correct_unmatched_chirality_source_tests::degree_change_clears_only_chiral_tag_for_every_nonunspecified_source_tag ... ok
[INFO] [stdout] test product_stereo::complete_correct_unmatched_chirality_source_tests::physical_product_bond_order_uses_source_perturbation_parity_for_both_cw_and_ccw ... ok
[INFO] [stdout] test product_stereo::complete_correct_unmatched_chirality_source_tests::repeated_source_atom_is_processed_again_and_observes_first_inversion ... ok
[INFO] [stdout] test product_stereo::complete_propagate_coordinates_source_tests::mixed_source_order_and_explicit_dimension_selection_reuse_sole_conformer_selector ... ok
[INFO] [stdout] test product_stereo::complete_product_anchor_candidates_source_tests::present_empty_primary_key_still_wins_over_present_nonempty_secondary_key ... ok
[INFO] [stdout] test product_stereo::complete_product_anchor_candidates_source_tests::selection_is_read_only_and_borrows_the_exact_selected_map_vector ... ok
[INFO] [stdout] test product_stereo::complete_propagate_coordinates_source_tests::empty_product_copy_vector_never_reads_source_index_or_owning_shape ... ok
[INFO] [stdout] test product_stereo::complete_product_anchor_candidates_source_tests::primary_anchor_takes_precedence_and_preserves_duplicate_encounter_order ... ok
[INFO] [stdout] test product_stereo::complete_propagate_coordinates_source_tests::ascending_source_keys_and_product_copy_order_overwrite_and_zero_extend_exactly ... ok
[INFO] [stdout] test product_stereo::complete_product_anchor_candidates_source_tests::secondary_index_zero_is_present_and_sets_swap_even_for_empty_matches ... ok
[INFO] [stdout] test product_stereo::complete_propagate_coordinates_source_tests::auto_uses_actual_source_front_not_minimum_conformer_identifier ... ok
[INFO] [stdout] test product_stereo::complete_propagate_coordinates_source_tests::source_getter_error_precedes_destination_setter_overflow ... ok
[INFO] [stdout] test product_stereo::complete_propagate_coordinates_source_tests::destination_unsigned_max_error_preserves_earlier_copy_and_flag_prefix_without_allocation ... ok
[INFO] [stdout] test product_stereo::complete_stereo_end_cap_source_tests::explicit_and_implicit_hydrogens_participate_in_source_total_degree_precondition ... ok
[INFO] [stdout] test product_stereo::complete_stereo_end_cap_source_tests::first_non_anchor_neighbor_wins_in_physical_order_and_zero_is_present ... ok
[INFO] [stdout] test product_stereo::complete_propagate_coordinates_source_tests::source_position_copy_preserves_nan_payload_infinity_and_signed_zero_bits ... ok
[INFO] [stdout] test product_stereo::complete_stereo_end_cap_source_tests::actual_atom_other_and_selected_atom_ids_are_used_instead_of_projected_rows ... ok
[INFO] [stdout] test product_stereo::complete_stereo_end_cap_source_tests::missing_implicit_valence_is_propagated_and_no_implicit_bypasses_it ... ok
[INFO] [stdout] test product_stereo::complete_stereo_end_cap_source_tests::unsigned_anchor_boundary_preserves_maximum_and_rejects_unrepresentable_projection ... ok
[INFO] [stdout] test product_stereo::complete_translate_directions_source_tests::nonincident_start_or_end_reports_source_bad_index_before_stereo_write ... ok
[INFO] [stdout] test product_stereo::complete_translate_directions_source_tests::row_projection_errors_are_structural_and_product_pointer_check_is_first ... ok
[INFO] [stdout] test product_stereo::complete_translate_directions_source_tests::all_non_stereo_directions_fail_before_anchor_graph_access_or_writes ... ok
[INFO] [stdout] test product_stereo::complete_translate_directions_source_tests::sixteen_direction_and_endpoint_orientations_follow_source_two_toggles ... ok
[INFO] [stdout] test product_stereo::complete_translate_directions_source_tests::connected_start_reaches_end_connectedness_and_range_errors_before_writes ... ok
[INFO] [stdout] test product_stereo::complete_translate_directions_source_tests::source_does_not_require_central_or_neighbor_bond_order_to_be_double_or_single ... ok
[INFO] [stdout] test product_stereo::complete_propagate_coordinates_source_tests::explicit_missing_selection_errors_before_flag_or_coordinate_writes_on_nonempty_input ... ok
[INFO] [stdout] test product_stereo::complete_propagate_coordinates_source_tests::no_source_conformers_return_before_explicit_selection_mapping_flags_or_resize ... ok
[INFO] [stdout] test product_stereo::complete_translate_directions_source_tests::start_connectedness_failure_precedes_end_and_retains_previous_reference_atoms ... ok
[INFO] [stdout] test product_stereo::complete_update_stereo_bonds_source_tests::earlier_bond_writes_remain_when_a_later_double_bond_fails_its_clear ... ok
[INFO] [stdout] test product_stereo::complete_update_stereo_bonds_source_tests::absent_unknown_property_does_not_read_bad_computed_membership_metadata ... ok
[INFO] [stdout] test product_stereo::complete_propagate_coordinates_source_tests::non_three_d_sources_never_clear_existing_three_d_flag_and_two_d_adds_zero_z ... ok
[INFO] [stdout] test product_stereo::complete_update_stereo_bonds_source_tests::absent_or_non_double_or_no_stereo_source_bond_retains_existing_product_stereo ... ok
[INFO] [stdout] test product_stereo::complete_update_stereo_bonds_source_tests::reached_clear_error_retains_stereo_none_prefix_and_original_property_then_stops ... ok
[INFO] [stdout] test product_stereo::complete_propagate_coordinates_source_tests::owning_conformer_shape_precondition_precedes_source_index_and_destination_overflow ... ok
[INFO] [stdout] test product_stereo::complete_propagate_coordinates_source_tests::source_three_d_flag_is_written_before_first_reached_position_error ... ok
[INFO] [stdout] test product_stereo::complete_update_stereo_bonds_source_tests::source_neighbor_helper_stops_at_first_directed_non_double_and_skips_later_bad_rows ... ok
[INFO] [stdout] test product_stereo::complete_update_stereo_bonds_source_tests::two_product_directions_take_priority_over_all_reactant_mapping_and_fact_work ... ok
[INFO] [stdout] test product_stereo::complete_update_stereo_bonds_source_tests::unknown_property_presence_clears_stereo_and_property_without_reading_its_value_or_graph ... ok
[INFO] [stdout] test reaction::complete_add_agent_template_tests::explicit_model_audit_does_not_become_a_source_append_precondition ... ok
[INFO] [stdout] test product_stereo::complete_update_stereo_bonds_source_tests::end_directed_neighbor_is_evaluated_even_when_start_has_no_match ... ok
[INFO] [stdout] test reaction::complete_add_agent_template_tests::source_append_moves_template_returns_counts_and_preserves_both_init_states ... ok
[INFO] [stdout] test product_stereo::complete_forward_bond_stereo_source_tests::no_source_reference_atoms_clears_only_stereo_before_constructor_and_map_access ... ok
[INFO] [stdout] test product_stereo::complete_forward_bond_stereo_source_tests::present_empty_primary_or_absent_both_candidates_retains_entire_product_bond ... ok
[INFO] [stdout] test product_stereo::complete_update_stereo_bonds_source_tests::non_double_bond_skips_unknown_property_adjacency_and_input_mapping_access ... ok
[INFO] [stdout] test product_stereo::complete_product_anchor_candidates_source_tests::absent_both_keys_and_identical_anchor_indices_preserve_source_false_flag ... ok
[INFO] [stdout] test reaction::complete_add_product_template_tests::immutable_projection_keeps_original_and_initialized_state_without_reordering ... ok
[INFO] [stdout] test product_stereo::complete_update_stereo_bonds_source_tests::source_any_changes_only_label_while_defined_stereo_dispatches_full_forwarder ... ok
[INFO] [stdout] test reaction::complete_begin_agent_templates_source::cursor_preserves_storage_position_order_and_init_without_copy_or_validation ... ok
[INFO] [stdout] test product_stereo::complete_update_stereo_bonds_source_tests::reached_source_range_and_missing_csr_are_errors_instead_of_missing_bond_fallback ... ok
[INFO] [stdout] test reaction::complete_begin_product_templates_mut_source::cursor_preserves_storage_position_order_and_init_without_copy_or_validation ... ok
[INFO] [stdout] test reaction::complete_begin_product_templates_source::cursor_preserves_storage_position_order_and_init_without_copy_or_validation ... ok
[INFO] [stdout] test reaction::complete_begin_reactant_templates_source::cursor_preserves_storage_position_order_and_init_without_copy_or_validation ... ok
[INFO] [stdout] test reaction::complete_end_agent_templates_mut_source::cursor_preserves_storage_position_order_and_init_without_copy_or_validation ... ok
[INFO] [stdout] test reaction::complete_end_agent_templates_source::cursor_preserves_storage_position_order_and_init_without_copy_or_validation ... ok
[INFO] [stdout] test reaction::complete_end_product_templates_mut_source::cursor_preserves_storage_position_order_and_init_without_copy_or_validation ... ok
[INFO] [stdout] test product_stereo::complete_update_stereo_bonds_source_tests::missing_endpoint_mapping_skips_source_graph_access_without_inserting_keys ... ok
[INFO] [stdout] test product_stereo::complete_stereo_end_cap_source_tests::missing_rows_and_missing_adjacency_are_structural_errors_without_empty_fallback ... ok
[INFO] [stdout] test product_stereo::complete_stereo_end_cap_source_tests::only_other_and_anchor_or_no_neighbors_leaves_non_anchor_absent ... ok
[INFO] [stdout] test product_stereo::complete_stereo_end_cap_source_tests::only_selected_neighbor_pointer_is_resolved_and_source_degree_check_precedes_it ... ok
[INFO] [stdout] test reaction::complete_end_product_templates_source::cursor_preserves_storage_position_order_and_init_without_copy_or_validation ... ok
[INFO] [stdout] test reaction::complete_add_product_template_tests::source_append_moves_template_returns_counts_and_preserves_both_init_states ... ok
[INFO] [stdout] test reaction::complete_end_reactant_templates_mut_source::cursor_preserves_storage_position_order_and_init_without_copy_or_validation ... ok
[INFO] [stdout] test reaction::complete_add_agent_template_tests::immutable_projection_keeps_original_and_initialized_state_without_reordering ... ok
[INFO] [stdout] test reaction::complete_add_product_template_tests::explicit_model_audit_does_not_become_a_source_append_precondition ... ok
[INFO] [stdout] test reaction::complete_end_reactant_templates_source::cursor_preserves_storage_position_order_and_init_without_copy_or_validation ... ok
[INFO] [stdout] test reaction::complete_add_reactant_template_tests::explicit_model_audit_does_not_become_a_source_append_precondition ... ok
[INFO] [stdout] test reaction::complete_reaction_copy_source_tests::assignment_replaces_existing_roles_and_properties_but_reuses_each_role_buffer ... ok
[INFO] [stdout] test reaction::complete_begin_reactant_templates_mut_source::cursor_preserves_storage_position_order_and_init_without_copy_or_validation ... ok
[INFO] [stdout] test reaction::complete_reaction_copy_source_tests::copies_flags_all_roles_and_parameters_without_initializing_or_validating_chemistry ... ok
[INFO] [stdout] test reaction::complete_add_reactant_template_tests::source_append_moves_exact_template_and_sets_init_before_returning_monotonic_counts ... ok
[INFO] [stdout] test reaction::complete_reaction_copy_source_tests::deep_template_copies_retain_coordinates_and_computed_props_without_shared_mutable_values ... ok
[INFO] [stdout] test reaction::complete_reaction_copy_source_tests::typed_ordered_properties_preserve_empty_nul_non_utf8_keys_and_computed_metadata ... ok
[INFO] [stdout] test reaction::complete_begin_agent_templates_mut_source::cursor_preserves_storage_position_order_and_init_without_copy_or_validation ... ok
[INFO] [stdout] test reaction::complete_reaction_copy_source_tests::empty_source_clears_all_existing_templates_and_overwrites_every_flag_and_parameter ... ok
[INFO] [stdout] test reaction::complete_template_public_value_queries::queries_follow_role_append_copy_and_configuration_without_changing_original ... ok
[INFO] [stdout] test reaction::complete_template_sequence_access_tests::sequence_access_borrows_actual_storage_in_order_without_validating_or_initializing ... ok
[INFO] [stdout] test runner::complete_add_reactant_source_tests::duplicate_match_pairs_are_not_deduplicated_or_rejected_and_share_reached_mapping_rows ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::later_product_failure_retains_exact_set_and_template_context_and_input_state ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::add_conformer_atom_count_precondition_runs_even_without_reaction_template_iterations ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::later_reactant_growth_preserves_earlier_coordinates_and_new_template_rows_stay_zero ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::absent_source_coordinates_do_not_create_conformer_for_explicit_selection ... ok
[INFO] [stdout] test reaction::complete_add_reactant_template_tests::immutable_projection_keeps_source_and_reuses_the_same_template_append_owner ... ok
[INFO] [stdout] test runner::complete_add_reactant_source_tests::mapping_failure_precedes_atom_transfer_and_final_coordinate_resize ... ok
[INFO] [stdout] test runner::complete_add_reactant_source_tests::traversal_adds_neighbors_once_before_later_matched_atom_and_keeps_source_bond_origins ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::final_property_cache_uses_source_nonstrict_valence_and_canonical_adjacency ... ok
[INFO] [stdout] test runner::complete_add_reactant_source_tests::earlier_match_properties_and_provenance_survive_later_transfer_error_without_coordinate_resize ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::missing_source_vector_slot_reports_reached_product_context_without_panicking ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::no_products_never_reaches_missing_reaction_template_inputs ... ok
[INFO] [stdout] test runner::complete_add_reactant_source_tests::enhanced_groups_copy_after_chirality_and_before_coordinate_failure ... ok
[INFO] [stdout] test runner::complete_add_reactant_source_tests::no_source_conformers_still_resizes_existing_product_buffer_only_at_final_phase ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::product_template_order_and_input_origins_are_independent_and_inputs_unchanged ... ok
[INFO] [stdout] test runner::complete_add_reactant_source_tests::reordered_sparse_signed_pairs_keep_query_keys_and_source_target_origins ... ok
[INFO] [stdout] test runner::complete_add_reactant_source_tests::replicated_product_atoms_receive_properties_and_one_coordinate_per_copy_after_growth ... ok
[INFO] [stdout] test runner::complete_run_reactant_source_tests::approved_d1_initialization_does_not_change_original_reaction_or_source_topology ... ok
[INFO] [stdout] test reaction::complete_substruct_params_access::params_borrow_stored_value_and_immutable_replacement_preserves_original_without_validation ... ok
[INFO] [stdout] test runner::complete_add_reactant_source_tests::absent_output_conformer_does_not_read_malformed_source_coordinate_rows ... ok
[INFO] [stdout] test runner::complete_run_reactant_source_tests::detached_origin_projection_changes_atom_and_bond_input_slots_but_preserves_source_properties ... ok
[INFO] [stdout] test runner::complete_add_reactant_source_tests::signed_bit_index_with_empty_bookmark_fails_when_loop_reaches_bit_not_in_mapping ... ok
[INFO] [stdout] test runner::complete_add_reactant_source_tests::skipped_matched_atoms_and_their_attached_components_are_not_added ... ok
[INFO] [stdout] test runner::complete_run_reactant_source_tests::initialization_precondition_precedes_zero_products_and_selected_index ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::only_directed_single_input_bonds_trigger_source_direction_restoration ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::selector_projection_has_its_own_arity_error_after_source_vector_precondition ... ok
[INFO] [stdout] test runner::complete_run_reactant_source_tests::empty_slots_before_and_after_selected_reagent_preserve_source_coordinates_and_zero_new_rows ... ok
[INFO] [stdout] test runner::complete_run_reactant_source_tests::later_product_failure_preserves_source_product_context_and_caller_input ... ok
[INFO] [stdout] test runner::complete_run_reactant_source_tests::selected_no_match_returns_before_template_conversion_and_coordinate_selection ... ok
[INFO] [stdout] test runner::complete_run_reactants_source_tests::approved_d1_public_projection_initializes_only_private_temporary_and_preserves_inputs ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::source_dimension_is_projected_into_one_fresh_id_zero_conformer ... ok
[INFO] [stdout] test runner::complete_run_reactants_source_tests::reached_empty_reactant_combination_error_is_propagated_without_fabricating_product ... ok
[INFO] [stdout] test runner::complete_run_reactants_source_tests::copied_user_atom_properties_use_origins_and_preserve_template_priority ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::source_input_match_vector_precondition_precedes_zero_products ... ok
[INFO] [stdout] test template_stereo::complete_neighbor_order_source_tests::absent_zero_negative_and_degree_difference_add_source_minus_one_slots ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::template_stereo_groups_are_copied_after_all_reactants_with_map_order_and_read_id ... ok
[INFO] [stdout] test runner::complete_run_reactants_source_tests::selector_projection_arity_reports_its_exact_count_after_source_arity ... ok
[INFO] [stdout] test runner::complete_run_reactant_source_tests::symmetric_matching_products_are_kept_in_source_order_without_deduplication ... ok
[INFO] [stdout] test runner::complete_run_reactants_source_tests::first_unmatched_reactant_prevents_later_search_and_coordinate_selection ... ok
[INFO] [stdout] test runner::complete_one_product_set_source_tests::template_conversion_error_precedes_reached_missing_input_slot ... ok
[INFO] [stdout] test runner::complete_run_reactants_source_tests::source_initialization_precondition_precedes_arity_and_zero_products ... ok
[INFO] [stdout] test template_stereo::complete_neighbor_order_source_tests::follows_incident_edge_order_and_retains_duplicate_positive_maps ... ok
[INFO] [stdout] test runner::complete_run_reactant_source_tests::zero_products_return_before_index_search_or_coordinate_reads ... ok
[INFO] [stdout] test runner::complete_run_reactants_source_tests::no_product_templates_return_before_search_and_coordinate_reads ... ok
[INFO] [stdout] test runner::complete_run_reactants_source_tests::reached_coordinate_selection_error_keeps_product_set_and_template_context ... ok
[INFO] [stdout] test runner::complete_run_reactant_source_tests::only_selected_template_is_matched_and_unselected_slots_materialize_as_empty_reagents ... ok
[INFO] [stdout] test template_stereo::complete_order_overlap_source_tests::failed_overlap_keeps_prior_replacements_and_stops_at_first_missing ... ok
[INFO] [stdout] test template_stereo::complete_products_stereo_source_tests::absent_or_new_mapping_creates_flag_even_without_product_stereo ... ok
[INFO] [stdout] test template_stereo::complete_products_stereo_source_tests::every_modeled_chiral_tag_follows_literal_source_unspecified_other_exclusions ... ok
[INFO] [stdout] test template_stereo::complete_products_stereo_source_tests::product_encounter_order_retains_prefix_writes_on_first_map_error ... ok
[INFO] [stdout] test runner::complete_run_reactants_source_tests::physical_match_order_and_cartesian_product_order_survive_all_finite_and_unlimited_limits ... ok
[INFO] [stdout] test runner::complete_run_reactant_source_tests::source_index_precondition_precedes_search_of_invalid_input ... ok
[INFO] [stdout] test runner::complete_run_reactants_source_tests::source_reactant_arity_precedes_zero_products_and_selector_projection_validation ... ok
[INFO] [stdout] test runner::complete_run_reactants_source_tests::protected_presence_filters_after_source_matching_limit_without_refilling ... ok
[INFO] [stdout] test template_stereo::complete_neighbor_order_source_tests::neighbor_property_error_precedes_other_atom_degree_read ... ok
[INFO] [stdout] test template_stereo::complete_reactant_mapping_source_tests::empty_reactants_leave_target_untouched_and_typed_overflow_propagates ... ok
[INFO] [stdout] test template_stereo::complete_reactant_mapping_source_tests::property_failure_preserves_preceding_updates_without_clearing_target ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::breadth_first_annotations_keep_negation_flags_and_native_repeated_mass_warning ... ok
[INFO] [stdout] test template_stereo::complete_order_overlap_source_tests::negative_reference_values_are_ignored_and_existing_duplicates_are_membership ... ok
[INFO] [stdout] test template_stereo::complete_products_stereo_source_tests::existing_typed_or_wrong_tag_raw_flag_skips_map_reads_and_normalization ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::cache_clear_only_when_present_and_propagates_real_computed_metadata_error ... ok
[INFO] [stdout] test template_stereo::complete_order_overlap_source_tests::source_nonzero_unmapped_flag_is_not_a_consumable_slot_budget ... ok
[INFO] [stdout] test template_stereo::complete_template_swaps_source_tests::degree_change_uses_one_placeholder_and_two_way_overlap ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::complete_init_reactant_matchers_source_tests::each_initialization_resets_previous_validation_outputs ... ok
[INFO] [stdout] test template_stereo::complete_products_stereo_source_tests::initial_inversion_write_survives_later_swap_property_failure ... ok
[INFO] [stdout] test template_stereo::complete_products_stereo_source_tests::last_duplicate_reactant_mapping_including_zero_and_negative_wins ... ok
[INFO] [stdout] test template_stereo::complete_products_stereo_source_tests::swap_parity_toggles_equal_and_unequal_tags_only_for_nonnegative_odd_counts ... ok
[INFO] [stdout] test template_stereo::complete_template_swaps_source_tests::delegates_first_match_swap_count_without_sorting_or_parity_shortcut ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::complete_init_reactant_matchers_source_tests::immutable_projection_delegates_and_returns_structured_invalid_without_mutating_input ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::conflicting_negative_minimum_does_not_eagerly_evaluate_source_skipped_write ... ok
[INFO] [stdout] test template_stereo::complete_template_swaps_source_tests::duplicate_membership_does_not_hide_source_swap_invariant_failure ... ok
[INFO] [stdout] test template_stereo::complete_template_swaps_source_tests::signed_source_degree_arithmetic_keeps_pinned_cast_and_undefined_state_errors ... ok
[INFO] [stdout] test template_stereo::complete_template_swaps_source_tests::source_short_circuits_degree_then_reactant_unmapped_before_product_properties ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::degree_change_is_written_for_every_duplicate_and_existing_equal_degree_flag_is_kept ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::complete_init_reactant_matchers_source_tests::normal_validation_false_returns_success_and_keeps_annotations_from_either_prior_state ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::derived_carrier_placeholder_is_not_a_source_query ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::complete_init_reactant_matchers_source_tests::normal_validation_success_resets_the_flag_from_either_prior_state ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::complete_init_reactant_matchers_source_tests::validation_exception_preserves_prior_flag_and_actual_annotation_prefix ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::duplicate_product_missing_reactant_retains_output_warning_prefix_on_invariant_error ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::entire_current_product_cache_clear_precedes_map_read_but_later_templates_are_untouched ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::remaining_map_numbers_keep_first_occurrence_and_vector_erase_order ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::resets_existing_outputs_and_preserves_source_missing_role_error_order ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::source_query_write_is_immediate_before_later_undefined_arithmetic_error ... ok
[INFO] [stdout] test write::get_end_iterator_source_tests::each_end_matches_its_selected_template_vector ... ok
[INFO] [stdout] test template_stereo::complete_reactant_mapping_source_tests::retains_prefix_and_last_encountered_atom_for_all_present_maps ... ok
[INFO] [stdout] test write::get_end_iterator_source_tests::empty_reaction_has_all_begin_end_pairs_equal ... ok
[INFO] [stdout] test write::get_start_iterator_source_tests::iteration_keeps_physical_order_and_does_not_change_initialization ... ok
[INFO] [stdout] test write::get_start_iterator_source_tests::empty_selected_role_does_not_fall_back_to_other_roles ... ok
[INFO] [stdout] test write::get_start_iterator_source_tests::product_begin_borrows_selected_vector ... ok
[INFO] [stdout] test write::reaction_smarts_wrapper_source_tests::source_literal_false_skips_empty_template_cx_order_requirement ... ok
[INFO] [stdout] test write::reaction_smarts_wrapper_source_tests::source_wrapper_propagates_role_and_index_of_first_writer_error ... ok
[INFO] [stdout] test write::reaction_smarts_wrapper_source_tests::wrapper_forwards_canonical_role_sort ... ok
[INFO] [stdout] test write::get_start_iterator_source_tests::reactant_begin_borrows_selected_vector ... ok
[INFO] [stdout] test write::reaction_cx_wrapper_source_tests::empty_reaction_reaches_cx_without_inventing_a_template ... ok
[INFO] [stdout] test write::reaction_cx_wrapper_source_tests::empty_template_failure_is_forwarded_as_structural_cx_error ... ok
[INFO] [stdout] test template_stereo::complete_products_stereo_source_tests::reactant_map_failure_precedes_any_product_mutation ... ok
[INFO] [stdout] test write::reaction_writer_complete_source_tests::canonical_role_sort_does_not_sort_cx_template_order ... ok
[INFO] [stdout] test write::get_end_iterator_source_tests::empty_role_end_is_not_another_roles_length ... ok
[INFO] [stdout] test write::reaction_writer_complete_source_tests::coordinate_flags_forward_to_single_native_front_frame_writer ... ok
[INFO] [stdout] test write::reaction_cx_wrapper_source_tests::literal_true_emits_cx_with_default_non_cx_parameter_flag ... ok
[INFO] [stdout] test validation::complete_reaction_validate_source_tests::duplicate_reactant_uses_first_atom_object_for_later_degree_comparison ... ok
[INFO] [stdout] test write::reaction_writer_complete_source_tests::cx_collection_keeps_reactant_agent_product_order ... ok
[INFO] [stdout] test write::get_end_iterator_source_tests::end_lookup_keeps_template_storage_and_lifecycle_unchanged ... ok
[INFO] [stdout] test write::reaction_writer_complete_source_tests::empty_roles_keep_two_separators_with_or_without_cx ... ok
[INFO] [stdout] test write::reaction_writer_complete_source_tests::false_include_cx_does_not_read_molecule_cx_properties ... ok
[INFO] [stdout] test write::reaction_writer_complete_source_tests::flags_none_does_not_append_space_or_skip_cx_presence_checks ... ok
[INFO] [stdout] test write::role_to_string_source_tests::template_errors_precede_sorting_and_keep_original_role_index ... ok
[INFO] [stdout] test write::reaction_writer_complete_source_tests::roles_emit_r_then_a_then_p_without_initialization ... ok
[INFO] [stdout] test write::reaction_cx_wrapper_source_tests::template_writer_error_precedes_requested_cx_and_leaves_lifecycle_unchanged ... ok
[INFO] [stdout] test write::role_to_string_source_tests::writer_options_are_forwarded_before_role_joining ... ok
[INFO] [stdout] test write::get_start_iterator_source_tests::agent_begin_borrows_selected_vector ... ok
[INFO] [stdout] test write::reaction_smarts_wrapper_source_tests::empty_source_wrapper_returns_both_separators ... ok
[INFO] [stdout] test write::template_to_string_source_tests::binary_non_utf8_and_nul_symbol_is_wrapped_as_counted_bytes ... ok
[INFO] [stdout] test write::reaction_writer_complete_source_tests::source_counted_atom_labels_survive_role_and_cx_joining ... ok
[INFO] [stdout] test write::role_to_string_source_tests::empty_templates_keep_their_source_separator_positions ... ok
[INFO] [stdout] test write::role_to_string_source_tests::every_role_uses_its_canonical_begin_end_pair ... ok
[INFO] [stdout] test write::role_to_string_source_tests::noncanonical_role_preserves_insertion_order ... ok
[INFO] [stdout] test write::template_to_string_source_tests::connected_template_uses_no_outer_template_parentheses ... ok
[INFO] [stdout] test write::role_to_string_source_tests::canonical_sort_keeps_duplicate_text_and_original_output_evidence ... ok
[INFO] [stdout] test write::template_to_string_source_tests::disconnected_components_wrap_once_and_keep_exact_source_orders ... ok
[INFO] [stdout] test write::reaction_cx_wrapper_source_tests::explicit_none_flags_retain_base_without_trailing_space ... ok
[INFO] [stdout] test write::role_to_string_source_tests::empty_selected_role_does_not_visit_other_role_errors ... ok
[INFO] [stdout] test write::template_to_string_source_tests::empty_graph_stays_empty_and_does_not_claim_source_output_order_properties ... ok
[INFO] [stdout] test write::template_to_string_source_tests::rooted_atom_parameter_changes_source_order_before_template_wrapping ... ok
[INFO] [stdout] test write::template_to_string_source_tests::source_dative_option_and_atom_to_left_order_are_forwarded ... ok
[INFO] [stdout] test write::template_to_string_source_tests::source_writer_error_retains_role_and_template_index ... ok
[INFO] [stdout] test write::template_to_string_source_tests::dot_bytes_in_atom_symbol_never_infer_disconnected_topology ... ok
[INFO] [stdout] test write::role_to_string_source_tests::canonical_text_order_compares_unsigned_bytes_after_nul ... ok
[INFO] [stdout] test write::template_to_string_source_tests::writer_flags_reach_sole_smarts_writer_without_canonicalizing_template_components ... ok
[INFO] [stdout] test runner::complete_run_reactant_source_tests::source_fixed_thousand_match_limit_overrides_stored_match_options_without_reordering ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 461 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/stereo_flag_event.rs (/opt/rustwide/target/release/build/cosmolkit-reaction/a593643d596a657b/out/stereo_flag_event-a593643d596a657b)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test actual_reaction_product_retains_executed_source_stereo_flag ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests cosmolkit_reaction
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468", kill_on_drop: false }`
[INFO] [stdout] a071e1a07569eef3370688b53a0a9048ace1c48e54d3c416c9c6d90ddc59b468
