471c687c2b
Follow-up to the salvaged #76252 addressing both review gaps: - New TestMinorLineFallForward class with a direct test of the explicit-patch fallback branch: bare '3.12' resolves to a VULNERABLE build while an explicit 3.12.x patch is fixed, so recovery must go through _list_available_patches on the next minor line. Asserts the exact `uv python install` request sequence. - New all-minors-exhausted test: everything vulnerable on 3.11-3.13 returns None with per-line attempts bounded by _MAX_PATCH_RETRIES and no requests beyond 3.13 (requires-python is <3.14). - test_retry_is_bounded_by_max_retries_constant now actually uses its counting wrapper and asserts the collected install calls (the previous version collected them into a dead variable). Also dedupes the fallback loop the same way the same-minor loop does: _attempt_install_generation can now record the probed candidate version into a caller-supplied tried_versions set, so the explicit-patch pass skips the version the bare-minor request already resolved to and rejected -- previously that wasted a full download+install+probe+delete cycle per minor line re-trying a known-vulnerable build.