Skip to content

bug(core): parameterised experiment identifier causes exception #1283

Description

@VassilisVassiliadis

Issue Description

Running a RandomWalk that uses a parameterised experiment causes an exception due to malformed parameterised experiment identifiers.

sampleStoreIdentifier: ...
entitySpace: ...
experiments:
  - actuatorIdentifier: custom_experiments
    experimentIdentifier: my_experiment
    parameterization:
      - property:
          identifier: gpu_model
        value: "NVIDIA-A100-SXM4-80GB"
        valueType: STRING_VALUE_TYPE
      - property:
          identifier: number_gpus
        value: 1
        valueType: NUMERIC_VALUE_TYPE

How to reproduce

Steps to reproduce the behavior:

  1. Create the space
  2. Create the operation
  3. Observe that the operation fails

Expected behaviour

The operation should have completed normally.

Screenshots/Logs

2026-07-27 03:12:55,655 INFO      MainThread           orch           : graceful_orchestrate_shutdown: Graceful shutdown complete
ERROR:  An unexpected error occurred. Operation random_walk@2.0.0-3f374f did not run successfully:

Operation exited due to the following error: Invalid parameterization segment 'A100' in experiment reference string 'my_experiment-gpu_model.NVIDIA-A100-SXM4-80GB-number_gpus.1'. Expected 'propertyIdentifier.value'..

Traceback (most recent call last):
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/modules/operators/_orchestrate_core.py", line 161, in _run_operation_harness
    operation_output: OperationOutput | None = run_closure()
                                               ^^^^^^^^^^^^^
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/modules/operators/_explore_orchestration.py", line 150, in _run_explore_operation_core
    run_operation_live_updates(
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/modules/operators/console_output.py", line 358, in run_operation_live_updates
    results_table = output_operation_results(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/modules/operators/console_output.py", line 219, in output_operation_results
    discovery_space.complete_measurement_request_with_results_timeseries(
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/core/discoveryspace/space.py", line 102, in perform_checks
    return f(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/core/discoveryspace/space.py", line 1067, in complete_measurement_request_with_results_timeseries
    return self.sample_store.complete_measurement_request_with_results_timeseries(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/core/samplestore/sql.py", line 2173, in complete_measurement_request_with_results_timeseries
    measurement_requests = self.measurement_requests_for_operation(
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/core/samplestore/sql.py", line 1875, in measurement_requests_for_operation
    requests = self._measurement_requests_cursor_to_pydantic(db_cursor=cur)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/core/samplestore/sql.py", line 2082, in _measurement_requests_cursor_to_pydantic
    experimentReference=ExperimentReference.referenceFromString(
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/schema/reference.py", line 350, in referenceFromString
    ) = _parse_experiment_part_from_string(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/schema/reference.py", line 214, in _parse_experiment_part_from_string
    base_identifier, parameterization_suffix = _split_base_and_parameterization_suffix(
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/schema/reference.py", line 127, in _split_base_and_parameterization_suffix
    raise ValueError(
ValueError: Invalid parameterization segment 'A100' in experiment reference string 'my_experiment-gpu_model.NVIDIA-A100-SXM4-80GB-number_gpus.1'. Expected 'propertyIdentifier.value'.

2026-07-27 11:13:00,744 INFO sdk.py:519 -- WebSocket closed for job raysubmit_HMpvYuDyVDg9Mk6d with close code 1000

---------------------------------------
Job 'raysubmit_HMpvYuDyVDg9Mk6d' failed
---------------------------------------

Status message: Job entrypoint command failed with exit code 1, last available logs (truncated to 20,000 chars):
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/schema/reference.py", line 350, in referenceFromString
    ) = _parse_experiment_part_from_string(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/schema/reference.py", line 214, in _parse_experiment_part_from_string
    base_identifier, parameterization_suffix = _split_base_and_parameterization_suffix(
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/ray/session_2026-07-27_02-55-07_737123_1/runtime_resources/uv/5f926b2b24049d694b7d381f49a4a6c7bc4dbced/virtualenv/lib/python3.11/site-packages/ado/schema/reference.py", line 127, in _split_base_and_parameterization_suffix
    raise ValueError(
ValueError: Invalid parameterization segment 'A100' in experiment reference string 'my_experiment-gpu_model.NVIDIA-A100-SXM4-80GB-number_gpus.1'. Expected 'propertyIdentifier.value'.

Python/ado/system info

Please include the output of:

python --version==3.11.20
ado version==2.0.0
Your OS = linux

Additional information

I think this is due to the recent changes on experiment identifiers. For example, those in:

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions