*** Settings *** Documentation Test !next command with fresh context (writing_stage: null) Library Process Library OperatingSystem Library String Resource ${CURDIR}/v2_paths.resource Suite Setup Setup Test Environment Suite Teardown Cleanup Test Environment *** Variables *** ${CONFIG_FILE} ${CURDIR}/../examples/scientific_paper_writer.yaml ${CONTEXT_DIR} ${TEMPDIR}/initial_next_test_contexts ${TEST_ID} ${EMPTY} *** Test Cases *** Test Next Command With Null Writing Stage [Documentation] Test that !next works when writing_stage is null (fresh context) [Tags] integration bugfix commands slow [Timeout] 1 minute ${ctx}= Set Variable initial_next_${TEST_ID} # Run !next as the very first command with a fresh context # This should advance from null (default intro) to discovery stage Log Running !next command with fresh context... ${result}= Run Process ${PYTHON} -m cleveragents actor run ... -c ${CONFIG_FILE} ... --context ${ctx} ... --context-dir ${CONTEXT_DIR} ... --unsafe ... --allow-rxpy-in-run-mode ... test-actor !next discovery ... stderr=STDOUT ... timeout=120s on_timeout=kill # Should not produce an error Should Not Contain ${result.stdout} Error: Current stage 'None' is invalid Should Be Equal As Integers ${result.rc} 0 # Verify stage was updated in the context by checking !stage command ${result}= Run Process ${PYTHON} -m cleveragents actor run ... -c ${CONFIG_FILE} ... --context ${ctx} ... --context-dir ${CONTEXT_DIR} ... --unsafe ... --allow-rxpy-in-run-mode ... test-actor !stage ... stderr=STDOUT ... timeout=120s on_timeout=kill Should Contain ${result.stdout} discovery Log Test completed successfully *** Keywords *** Setup Test Environment ${timestamp}= Get Time epoch Set Suite Variable ${TEST_ID} ${timestamp} Create Directory ${CONTEXT_DIR} Log Test environment setup complete with ID: ${TEST_ID} Cleanup Test Environment Run Keyword And Ignore Error Remove Directory ${CONTEXT_DIR} recursive=True Log Test environment cleaned up Should Contain Any [Arguments] ${text} @{patterns} [Documentation] Check if text contains at least one of the patterns FOR ${pattern} IN @{patterns} ${status}= Run Keyword And Return Status Should Contain ${text} ${pattern} ignore_case=True IF ${status} RETURN END Fail Text does not contain any of: @{patterns}