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