<scenario schemaVersion="3" id="project_plan_tests" title="Prepare a validated frozen test plan">
  <inputs><input name="id" required="true"/></inputs>
  <systemPrompt>Prepare tests only; do not execute code or publish files. Host rejects malformed/vacuous assertions and returns validation diagnostics for bounded planning retries.</systemPrompt>
  <tools><allow name="project_draft_read_operation"/><allow name="project_draft_source_operation"/><allow name="project_set_tests_operation"/><allow name="project_tests_require_operation"/></tools>
  <steps>
    <tool name="project_draft_read_operation" result="draft"><input name="id" value="{{id}}"/></tool>
    <foreach items="draft.editAttempts" item="attempt" collect="planned" result="planning" limit="1" attempts="3" successProperty="planned">
      <tool name="project_draft_read_operation" result="current"><input name="id" value="{{id}}"/></tool>
      <tool name="project_draft_source_operation" result="currentSource"><input name="id" value="{{id}}"/></tool>
      <run scenario="project_test_plan" result="plan"><input name="kind" value="{{current.kind}}"/><input name="prd" value="{{current.prd}}"/><input name="request" value="{{current.request}}"/><input name="source" value="{{currentSource.source}}"/><input name="diagnostics" value="{{current.diagnostics}}"/></run>
      <run scenario="project_review_tests" result="reviewedPlan"><input name="kind" value="{{current.kind}}"/><input name="prd" value="{{current.prd}}"/><input name="request" value="{{current.request}}"/><input name="source" value="{{currentSource.source}}"/><input name="plan" value="{{plan}}"/></run>
      <tool name="project_set_tests_operation" result="planned"><input name="id" value="{{id}}"/><input name="plan" value="{{reviewedPlan}}"/></tool>
    </foreach>
    <tool name="project_tests_require_operation" result="receipt"><input name="id" value="{{id}}"/></tool>
  </steps>
  <exit mode="copy">Return the actual private-draft receipt or planning failure, never execution success.</exit>
</scenario>
