From 2dba07a7b3d584ef118fe5ce435c4cc2642cbe7f Mon Sep 17 00:00:00 2001 From: Alpamys Date: Mon, 23 Feb 2026 23:48:12 +0500 Subject: [PATCH] Fix run_id collision in CI: increase suffix from 4 to 8 hex chars The 4 hex char suffix (65536 possibilities) caused a collision when generating 100 IDs within the same second on fast CI runners. Increased to 8 hex chars (4 billion possibilities). Co-Authored-By: Claude Opus 4.6 --- soup_cli/experiment/tracker.py | 4 ++-- tests/test_tracker.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/soup_cli/experiment/tracker.py b/soup_cli/experiment/tracker.py index 6f58a4c..1d075ca 100644 --- a/soup_cli/experiment/tracker.py +++ b/soup_cli/experiment/tracker.py @@ -80,9 +80,9 @@ def _get_db_path() -> Path: def generate_run_id() -> str: - """Generate a unique, sortable run ID: run_YYYYMMDD_HHMMSS_xxxx.""" + """Generate a unique, sortable run ID: run_YYYYMMDD_HHMMSS_xxxxxxxx.""" ts = datetime.now().strftime("%Y%m%d_%H%M%S") - suffix = secrets.token_hex(2) + suffix = secrets.token_hex(4) return f"run_{ts}_{suffix}" diff --git a/tests/test_tracker.py b/tests/test_tracker.py index 35c3ec0..d7371b4 100644 --- a/tests/test_tracker.py +++ b/tests/test_tracker.py @@ -18,9 +18,9 @@ def test_generate_run_id(): """Run IDs should be unique and match expected format.""" rid = generate_run_id() assert rid.startswith("run_") - # run_ (4) + YYYYMMDD (8) + _ (1) + HHMMSS (6) + _ (1) + xxxx (4) = 24 - assert len(rid) == 24 - # Uniqueness + # run_ (4) + YYYYMMDD (8) + _ (1) + HHMMSS (6) + _ (1) + xxxxxxxx (8) = 28 + assert len(rid) == 28 + # Uniqueness (8 hex chars = 4 billion possibilities, no collisions in 100) ids = {generate_run_id() for _ in range(100)} assert len(ids) == 100