Skip to content

Conversation

@srivtx
Copy link

@srivtx srivtx commented Dec 30, 2025

Summary

Fixes #71 - "API calls don't work"

This PR fixes the 'ROMAConfig' object is not iterable error that occurs when creating executions via the API.

Root Cause

ExecutionService was using dict(config) which fails on Pydantic dataclasses. Additionally, the existing config_to_dict() used OmegaConf.structured() which couldn't handle nested Pydantic BaseModel objects like CheckpointConfig.

Changes

Serialization Fixes

  • execution_service.py: Use config_to_dict() instead of dict(config)
  • config/utils.py: Add _convert_to_serializable() helper to recursively handle nested Pydantic models and dataclasses

Configuration Fixes

  • config/profiles/free_tier.yaml: Add missing profile referenced in README
  • config/profiles/general.yaml: Fix runtime timeout (120s → 700s) to pass validation

Test Fixes

  • tests/unit/test_execution_service.py: Update mocks to use OmegaConf.create() instead of MagicMock

Testing

  • ✅ All 16 unit tests pass
  • ✅ Docker API tested with both free_tier and general profiles

- Fix ExecutionService to use config_to_dict() instead of dict(config)
- Add _convert_to_serializable() to handle nested Pydantic models
- Add missing free_tier.yaml profile
- Fix general.yaml runtime timeout validation
- Update test mocks to use OmegaConf
Fixes sentient-agi#71
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

API calls don't work

1 participant