From 150b9084fb55d89b6045411cfc20d9d0ebf87388 Mon Sep 17 00:00:00 2001 From: j Date: Mon, 29 Jun 2026 01:48:25 +0700 Subject: [PATCH] test(qc): regression guard for SEED-009_VAR_033 dual MET+PROLINE flags MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VAR_033 (RRLPRPGYMPRP) is the only SEED-009 pilot variant with Met at position 9. Both MET×1 (Nle recommendation) and PROLINE_RICH_INTRACELLULAR must fire simultaneously. Test prevents future code changes from silently dropping either flag for this sequence (regression guard for PR #106 fix). --- tests/test_presynth_qc.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/test_presynth_qc.py b/tests/test_presynth_qc.py index 6d48f1d8..ed155198 100644 --- a/tests/test_presynth_qc.py +++ b/tests/test_presynth_qc.py @@ -834,6 +834,17 @@ def test_seed009_pilot_sequences_get_flag(self): qc = check_sequence("s9", seq) assert any("PROLINE_RICH" in f for f in qc.flags), f"missing flag for {seq}" + def test_seed009_var033_gets_met_and_proline_flags_simultaneously(self): + # VAR_033 (RRLPRPGYMPRP) is the only SEED-009 pilot with Met at position 9. + # Both MET×1 (Nle recommendation) and PROLINE_RICH_INTRACELLULAR must fire together. + # Regression guard for WET_LAB_HANDOFF correction in PR #106. + qc = check_sequence("SEED-009_VAR_033", "RRLPRPGYMPRP") + flag_texts = " ".join(qc.flags) + assert "MET" in flag_texts, "VAR_033 must carry Met oxidation flag" + assert "Nle" in flag_texts, "VAR_033 Met flag must recommend Nle substitution" + assert "PROLINE_RICH" in flag_texts, "VAR_033 must carry PROLINE_RICH_INTRACELLULAR flag" + assert qc.methionine_count == 1 + # --------------------------------------------------------------------------- # LONG_PEPTIDE flag (> 30 AA)