-
Notifications
You must be signed in to change notification settings - Fork 739
Open
Description
Fix ROMAConfig serialization in ExecutionService + add free_tier profile
Summary
Fixes #71
This PR fixes an error that occurs when creating executions using the API:
‘ROMAConfig’ object is not iterable
The root cause is that ExecutionService was attempting to serialize the full
ROMAConfig object using dict(config), which does not work for ROMAConfig
(Pydantic / OmegaConf-backed). This results in a 500 error during execution
initialization.
✔ Fix
Instead of calling:
dict(config)
The PR switches to:
from roma_dspy.config.utils import config_to_dict
config_to_dict(config)
This is consistent with how other components serialize structured configs in ROMA
and avoids the 'ROMAConfig' object is not iterable' crash.
✔ Added: free_tier profile
The README uses "config_profile": "free_tier" in its example API call, but the
repository does not contain a corresponding YAML profile.
This PR adds:
config/profiles/free_tier.yaml
based on general.yaml, allowing:
POST /api/v1/executions
to resolve the profile correctly.
⚠️ Note: A separate issue still remains regarding serialization of nested resilience configs (CheckpointConfig). This PR does not attempt to fix that.
After this fix, config loading and validation work, but execution creation still
fails with:
Value 'CheckpointConfig' is not a supported primitive type
full_key: checkpoint
object_type=ResilienceConfig
This appears to come from the serialization of nested resilience configs
(ResilienceConfig → CheckpointConfig) when saving into execution metadata.
A separate issue has been opened with full logs and reproduction steps.
Reproduction
git clone https://github.com/sentient-agi/ROMA.git
cd ROMA
python3.12 -m venv .venv
source .venv/bin/activate
pip install -e ".[api]"
cp config/profiles/general.yaml config/profiles/free_tier.yaml
docker compose up -d
curl http://localhost:8000/health
curl -X POST http://localhost:8000/api/v1/executions \
-H "Content-Type: application/json" \
-d '{"goal": "test", "config_profile": "free_tier"}'
Status
• Fix applied and verified.
• Docker environment tested.
• Tests unrelated to resilience continue passing.Metadata
Metadata
Assignees
Labels
No labels