fieldtester: add milestone-scope carrier variant

Authoritative carrier contract for the milestone fieldtest: scoped to
milestone_promise, scenarios derived top-down rather than as a union of
per-cycle axes.
This commit is contained in:
2026-05-31 12:21:50 +02:00
parent dfec82f841
commit d10fc83d5c
+23
View File
@@ -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` | `<milestone-start>..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
```