What's New
Breaking: plans must end with an explicit return statement
Plans now specify their result via an explicit return <expr> instead of the implicit "last assigned variable is the result" convention. This is consistent across all three blueprints (PlanExecute, DesignExecute, GoalSeeking).
# Before — implicit last-variable-as-result
result = add(a, b)
# Now — explicit return
result = add(a, b)
return result- PlanExecute: validation requires the plan to end with a return; the return is its own execution step (step counts increase by one) and
ExecutionResult.value_nameis now"". - DesignExecute: validation requires a return anywhere (top-level or nested for early returns);
value_nameis"return"when a return fires. - GoalSeeking: inherits the above; step-plan prompts updated accordingly.
- Prompts for all blueprints updated to instruct ending with
return.
Migration: append return <result> to any hand-written plans. Plans without a return statement are now rejected by validation.
Fixes & maintenance
- Add retry logic with exponential backoff to all LLM providers
- Simplify the PyPI readme
Full Changelog: v0.7.0...v0.8.0