|
100 | 100 | # test_ship_version_map_matches_table). |
101 | 101 | _SHIP_VERSION = {2: "3.9", 3: "3.9", 4: "3.9", 5: "4.0", 6: "4.1"} |
102 | 102 |
|
103 | | -# Release ladder (v4-design section 2): maps the CURRENT (major, minor) to the |
104 | | -# NEXT release. Keyed off diff_diff.__version__ so the Duty C lifecycle gate |
105 | | -# re-arms mechanically at each version bump; a missing key fails loudly. |
106 | | -_NEXT_RELEASE = {(3, 8): "3.9", (3, 9): "4.0", (4, 0): "4.1"} |
| 103 | +# Enforcement horizon (v4-design section 2 release ladder): maps the CURRENT |
| 104 | +# (major, minor) to the version whose deprecation windows must already be |
| 105 | +# enforced — NOT necessarily the literal next release (interim minors like |
| 106 | +# 3.10 keep the 4.0 horizon; "fixing" an entry to a nearer version would |
| 107 | +# silently disarm 4.0-window checks). Keyed off diff_diff.__version__ so the |
| 108 | +# Duty C lifecycle gate re-arms mechanically at each version bump; a missing |
| 109 | +# key fails loudly. |
| 110 | +_NEXT_RELEASE = {(3, 8): "3.9", (3, 9): "4.0", (3, 10): "4.0", (4, 0): "4.1"} |
107 | 111 |
|
108 | 112 | # Section-8 vocabulary predicate (Duty A). Every param/field rename token in |
109 | 113 | # the ledger - current and lifecycle-gated - must be matched here |
@@ -1542,6 +1546,8 @@ def test_lifecycle_gate_windows_and_loud_keyerror(): |
1542 | 1546 | assert _version_tuple("4.0") > horizon_38, "4.0-window rows defer at 3.8.x" |
1543 | 1547 | horizon_39 = _version_tuple(_NEXT_RELEASE[(3, 9)]) |
1544 | 1548 | assert _version_tuple("4.0") <= horizon_39, "4.0-window rows arm at the 3.9 bump" |
| 1549 | + horizon_310 = _version_tuple(_NEXT_RELEASE[(3, 10)]) |
| 1550 | + assert _version_tuple("4.0") <= horizon_310, "4.0-window rows stay armed at 3.10.x" |
1545 | 1551 | assert (99, 99) not in _NEXT_RELEASE, "unknown versions must fail the gate loudly" |
1546 | 1552 | current = _version_tuple(diff_diff.__version__)[:2] |
1547 | 1553 | assert current in _NEXT_RELEASE, f"extend _NEXT_RELEASE for __version__ {diff_diff.__version__}" |
|
0 commit comments