diff --git a/loopx/control_plane/quota/settlement_plan.ts b/loopx/control_plane/quota/settlement_plan.ts index 3b8a637bcf..bd939a204b 100644 --- a/loopx/control_plane/quota/settlement_plan.ts +++ b/loopx/control_plane/quota/settlement_plan.ts @@ -81,7 +81,7 @@ export function turnScopedCliSettlementPlan(params: JsonObject): SettlementPlan validation.precondition = claimHint + "validate the original Todo deliverable; when complete, run ordinary Todo completion " + "with its original declaration and current lease before writeback/spend. Use --evidence for " + "an artifact pointer; --result-file requires approved Goal acceptance criteria bound to this Todo, " + - "not merely a Todo validator. No invented successor " + + "not merely a Todo validator. Link known follow-up work with --successor-todo-id . No invented successor " + "or --no-follow-up is required. Todo done does not settle the Turn. " + "Keep an unfinished Todo open with its original declaration."; } diff --git a/tests/control_plane/test_quota_settlement.py b/tests/control_plane/test_quota_settlement.py index 076fdfd50f..27bda4d22e 100644 --- a/tests/control_plane/test_quota_settlement.py +++ b/tests/control_plane/test_quota_settlement.py @@ -858,6 +858,8 @@ def test_cli_validation_projects_ordinary_completion_not_terminal_intent() -> No assert command is not None argv = shlex.split(command) assert "--no-follow-up" not in argv + assert "--successor-todo-id" in validation["precondition"] + assert "--successor-todo-id" not in argv assert "--next-agent-todo" not in argv assert argv[argv.index("--todo-id") + 1] == TODO_ID assert argv[argv.index("--agent-id") + 1] == AGENT_ID