Robot Framework integration test suite for Specification Workflow Example 5:
Database Schema Migration with Safety Nets. Exercises the review automation
profile with custom resource types, custom skills with database tools,
phased child plan execution, checkpointing, and rollback.
- 7 test cases covering: custom resource type registration, review profile
behavior, custom skill with 3 database tools, action creation with
review profile, checkpoint/rollback via managers, 5-phase sequential
SubplanService.spawn with fail-fast, and plan lifecycle through
strategize-to-execute
- Uses mocked LLM providers (CLEVERAGENTS_TESTING_USE_MOCK_AI=true)
- All Run Process calls have timeout=60s on_timeout=kill
- Fix environment-dependent test failures: mock shutil.disk_usage in
disk space and diagnostics --check Behave steps so tests pass
regardless of CI runner disk space; Robot diagnostics test tolerates
disk-space errors
ISSUES CLOSED: #769
The format_output() function returned a string that callers passed to
Rich console.print(), which wraps long lines at terminal width. This
injected literal newline characters into JSON string values (e.g. in
definition_of_done fields), producing invalid JSON that downstream
parsers could not decode (JSONDecodeError: Invalid control character).
For machine-readable formats (json, yaml, plain), format_output() now
writes the rendered output directly to sys.stdout and returns an empty
string. This preserves the exact serialization from json.dumps/
yaml.dump without Rich text processing artifacts.
Refs: #746