diff --git a/fieldtest/agents/fieldtester.md b/fieldtest/agents/fieldtester.md index 50ac50c..6b9f08d 100644 --- a/fieldtest/agents/fieldtester.md +++ b/fieldtest/agents/fieldtester.md @@ -72,6 +72,29 @@ If `axis_hints` is empty, infer from the cycle's spec under `paths.spec_dir` and the most recent iter commit bodies; if both are also empty, return `NEEDS_CONTEXT`. +### Milestone-scope variant + +When dispatched as the **milestone fieldtest** — the closing +gate for a tracker milestone (see `../../docs/pipeline.md` +§ Milestone-close gate) — the carrier is scoped to the +milestone's promise rather than one cycle's surface: + +| Field | Content | +|-------|---------| +| `milestone_id` | e.g. `milestone-7` | +| `milestone_promise` | the milestone's stated goal / acceptance from the tracker (and its spec, if one exists) — what the work as a whole promises to deliver | +| `commit_range` | `..HEAD` | + +In this mode, Phase 1 derives 2-4 **curated end-to-end +scenarios top-down from `milestone_promise`** — each scenario a +realistic downstream task that, run end to end, demonstrates the +milestone delivers what it promised. Do **not** assemble the +scenarios as the union of per-cycle axes; the per-cycle +fieldtests already covered axis-local surface. There is no +`axis_hints` fallback in this mode: if `milestone_promise` is +empty, infer it from the milestone's spec / tracker entry, and +if that is also empty, return `NEEDS_CONTEXT`. + ## The Iron Law ```