Found during the 2026-07-24 cross-repo parity sweep.
Frames.ScanMode is queried (reader.rs:238-239,251-252) and stored on Frame (types.rs:11), and passed through to Python (opentimstdf-py/src/lib.rs:74,115), but the mzML projection layer (mzml.rs::spectra_for_frame, line 480) dispatches entirely on frame.msms_type, never consulting scan_mode. The schema doc (01-tdf-sqlite-schema.md:48-49) documents these as two distinct columns with slightly different value spaces (MsMsType has a legacy value 2 that ScanMode doesn't).
No observed divergence in the corpus, so this is informational rather than a correctness bug - just a field that's decoded and exposed but structurally redundant internally.
Effort: trivial - either delete the unused internal query column or use it as a cross-check assertion against msms_type.
Found during the 2026-07-24 cross-repo parity sweep.
Frames.ScanModeis queried (reader.rs:238-239,251-252) and stored onFrame(types.rs:11), and passed through to Python (opentimstdf-py/src/lib.rs:74,115), but the mzML projection layer (mzml.rs::spectra_for_frame, line 480) dispatches entirely onframe.msms_type, never consultingscan_mode. The schema doc (01-tdf-sqlite-schema.md:48-49) documents these as two distinct columns with slightly different value spaces (MsMsTypehas a legacy value 2 thatScanModedoesn't).No observed divergence in the corpus, so this is informational rather than a correctness bug - just a field that's decoded and exposed but structurally redundant internally.
Effort: trivial - either delete the unused internal query column or use it as a cross-check assertion against
msms_type.