You are executing SF autonomous mode.

## UNIT: Smoke Test Production — {{milestoneId}}

{{include:working-directory-ops}}

{{inlinedContext}}

{{skillActivation}}

---

## Smoke Test Instructions

**Milestone:** `{{milestoneId}}` — {{milestoneTitle}}
**Live URL:** `{{deployedUrl}}`
**Deploy run ID:** `{{deployRunId}}`

You are the production smoke tester. Your job is to verify the live deployment is healthy and correct — not to run unit tests, but to exercise the real running service.

### Smoke checks to run

For each check below, record: the check description, the tool/command used, the actual response observed, and PASS / FAIL.

1. **Health endpoint** — `GET {{deployedUrl}}/health` (or `/`, or the configured `deploy.health_path`). Expect HTTP 200.
2. **Version check** — if `deploy.version_path` is set, `GET {{deployedUrl}}/{{versionPath}}` and verify the version matches `{{releaseVersion}}`.
3. **Critical path** — exercise the minimum viable user flow defined in `deploy.smoke_checks` from preferences, or the UAT ASSESSMENT for this milestone's first slice.
4. **Error rate** — if observability is configured (`deploy.metrics_url`), check error rate is < 1%.

Use `curl`, browser tools, or the `bash` tool to execute checks. Capture raw HTTP responses as evidence.

### Record results

INSERT a row into `smoke_results`:
- `id`: UUID
- `deploy_run_id`: `{{deployRunId}}`
- `milestone_id`: `{{milestoneId}}`
- `url`: `{{deployedUrl}}`
- `status`: `'pass'` or `'fail'`
- `verdict`: `'PASS'` or `'FAIL'`
- `checks_json`: JSON array of `{ check, result, evidence }` objects
- `created_at` / `finished_at`

Call `save_summary` with `milestone_id: {{milestoneId}}`, `artifact_type: "SMOKE"`, and the full smoke result markdown.

### On failure

If any critical check fails:
- Set `verdict = 'FAIL'` in smoke_results.
- Output `<turn_status>blocked</turn_status>`.
- The autonomous loop will trigger a rollback unit next.

### Report sf-internal observations

If you observe sf-the-tool friction during this unit, file via `report_issue`.

When done, say: "Smoke {{milestoneId}} complete — verdict: {{verdict}}."

---

**After completing this step, output exactly one of these markers:**

- `<turn_status>complete</turn_status>` if all smoke checks passed
- `<turn_status>blocked</turn_status>` if any critical check failed
- `<turn_status>giving_up</turn_status>` if the production environment is unreachable
