Status
Three tests are currently broken on develop (discovered while re-enabling CI's unit-test job): block_merging::tests::order_json_round_trip_bundle_v2, block_merging::tests::order_json_untagged_disambiguates_bundle_from_bundle_v2, block_merging::tests::block_merging_data_json_round_trip_mixed_orders (all in crates/types/src/block_merging.rs).
Why
Order is a #[serde(untagged)] enum with variants Tx, Bundle, BundleV2. BundleOrder and BundleOrderV2 have overlapping/compatible field shapes (BundleOrderV2 added latest_only as a required field where BundleOrder has it as #[serde(default)]), so untagged deserialization doesn't reliably distinguish them — a BundleV2 payload can deserialize back as a plain Bundle, silently losing which variant was intended.
Affected surface
crates/types/src/block_merging.rs — Order, BundleOrder, BundleOrderV2, and the 3 tests, currently marked #[ignore] pointing here
Steps
Status
Three tests are currently broken on
develop(discovered while re-enabling CI's unit-test job):block_merging::tests::order_json_round_trip_bundle_v2,block_merging::tests::order_json_untagged_disambiguates_bundle_from_bundle_v2,block_merging::tests::block_merging_data_json_round_trip_mixed_orders(all incrates/types/src/block_merging.rs).Why
Orderis a#[serde(untagged)]enum with variantsTx,Bundle,BundleV2.BundleOrderandBundleOrderV2have overlapping/compatible field shapes (BundleOrderV2addedlatest_onlyas a required field whereBundleOrderhas it as#[serde(default)]), so untagged deserialization doesn't reliably distinguish them — aBundleV2payload can deserialize back as a plainBundle, silently losing which variant was intended.Affected surface
crates/types/src/block_merging.rs—Order,BundleOrder,BundleOrderV2, and the 3 tests, currently marked#[ignore]pointing hereSteps
BundleOrderV2thatBundleOrderstructurally cannot satisfy)