> ## Documentation Index
> Fetch the complete documentation index at: https://docs.withmithras.com/llms.txt
> Use this file to discover all available pages before exploring further.

# FYP Warmup

> Build valid FYP warmup requests and understand the current watch-only unattended gate.

# FYP Warmup

`fyp_warmup` is live-verified for watch-only unattended use on the current default phone path.

## Current Restriction

The current code treats `fyp_warmup` as:

* implemented
* `live_verified`
* allowed for unattended execution only when engagement probabilities are explicitly zero

That means:

* `mode: "manual"` is allowed
* `mode: "unattended"` is allowed for watch-only payloads
* unattended requests are rejected unless `like_probability`, `save_probability`, and `comment_probability` are each explicitly `0`

## What It Does

Phonefarm turns an `fyp_warmup` capability request into a `fyp_warmup_session` execution plan that scans the For You feed and applies OpenClaw-style judging policy using caller-provided prompts.

## Minimal Valid Request

```json theme={null}
{
  "request_id": "fyp-2026-03-22-001",
  "capability": "fyp_warmup",
  "mode": "unattended",
  "target": {
    "routing": "direct",
    "phone_id": "phone_01",
    "account_id": "account_user095916355"
  },
  "inputs": {
    "good_quota": 3,
    "bad_quota": 6,
    "max_scans": 18,
    "like_probability": 0,
    "save_probability": 0,
    "comment_probability": 0,
    "fyp_judge_prompt": {
      "prompt_id": "ugc.fyp.judge.relationship.v1",
      "name": "FYP Judge Relationship V1",
      "version": "1",
      "system_prompt": "You are judging TikTok FYP warmup fit.",
      "task_prompt": "Return yes only for target-fit content.",
      "output_contract": {
        "type": "json_object"
      }
    }
  },
  "callback": {
    "url": "https://ugc-tracker.example.com/phonefarm/process-updates",
    "metadata": {}
  },
  "requested_by": {
    "system": "ugc-tracker",
    "user": "operator@example.com",
    "metadata": {}
  }
}
```

## Inputs

| Field                     | Type      | Notes                                                                                                                                                |
| ------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `good_quota`              | integer   | Defaults to `3`.                                                                                                                                     |
| `bad_quota`               | integer   | Defaults to `6`.                                                                                                                                     |
| `max_scans`               | integer   | Defaults to `18`. Must cover total quotas.                                                                                                           |
| `comment_pool`            | string\[] | Optional explicit comment pool.                                                                                                                      |
| `fyp_profile_override`    | object    | Optional local profile override.                                                                                                                     |
| `fyp_judge_prompt`        | object    | Required.                                                                                                                                            |
| `fyp_comment_pool_prompt` | object    | Required when comments are enabled. An explicit `comment_pool` is accepted as a seed, but the prompt remains required for runtime refill/provenance. |
| `like_probability`        | number    | Optional override for manual runs. Required as explicit `0` for unattended watch-only runs.                                                          |
| `save_probability`        | number    | Optional override for manual runs. Required as explicit `0` for unattended watch-only runs.                                                          |
| `comment_probability`     | number    | Optional override. Defaults to `0.08` when omitted, so unattended watch-only requests must explicitly set it to `0`.                                 |
| `dismiss_app_on_finish`   | boolean   | Defaults to `true`.                                                                                                                                  |
| `debug_trace`             | boolean   | Defaults to `false`.                                                                                                                                 |

## Validation Rules

* at least one of `good_quota` or `bad_quota` must be positive
* `max_scans` must be greater than or equal to `good_quota + bad_quota`
* `fyp_judge_prompt` is always required
* unattended runs must explicitly set `like_probability`, `save_probability`, and `comment_probability` to `0`
* when effective comment probability is greater than `0`, provide `fyp_comment_pool_prompt`

## Comment Guidance

If you already have a controlled comment pool, send it directly.

If Phonefarm needs to generate or refill comment text at runtime, send `fyp_comment_pool_prompt`.

## Read Next

* [Capability Requests](../api/capability-requests)
* [Capability Registry](../reference/capability-registry)
* [Webhooks](./webhooks)
