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

# confirm_ready

> Run the affected-test gate before handing off

## Overview

`confirm_ready` is Enagrams' test gate. Before you declare your change-set complete, it computes the **affected test set** from the [symbol graph](/concepts/symbol-graph) — tests that transitively depend on the symbols you touched — and asks you to run them. On pass the gate writes a `sync_log` receipt that the auto-sync watcher uses to fan the commit out to other machines.

Two phases:

1. **First call, no `test_results`** — gate returns the affected test files + test names. Run them locally.
2. **Second call with `test_results[]`** — gate evaluates. On pass it records a `sync_log` receipt and (if `completes_task_id` was provided) marks the task `done` and cascade-unblocks its dependents. On fail it returns structured `failures[]` including flake status.

## Parameters

| Parameter           | Type      | Required | Description                                                                                                            |
| ------------------- | --------- | -------- | ---------------------------------------------------------------------------------------------------------------------- |
| `workstream_slug`   | string    | No\*     | Recommended so the gate can write `sync_log`                                                                           |
| `session_id`        | string    | No       | Your `agent_sessions.id`                                                                                               |
| `machine_id`        | string    | No       | Stable machine id for flake tracking                                                                                   |
| `touched_files`     | string\[] | No       | Files you changed                                                                                                      |
| `touched_symbols`   | string\[] | No       | `symbol_graph_nodes.id` values you changed                                                                             |
| `commit_sha`        | string    | No       | Commit the tests were run against                                                                                      |
| `completes_task_id` | string    | No       | If set, closes the task and unblocks dependents on pass                                                                |
| `test_results`      | object\[] | No       | Omit on first call; on second call each entry is `{test_file,test_name,status,duration_ms?,error_message?,traceback?}` |

<Note>
  `workstream_slug` is not strictly required but without it the gate cannot write a `sync_log` receipt, so the auto-sync watcher won't fan the commit out to other machines.
</Note>

## Example — Phase 1 (discover affected tests)

```json theme={null}
{
  "tool": "confirm_ready",
  "arguments": {
    "workstream_slug": "stripe-subscription-upgrades",
    "session_id": "sess_abc",
    "touched_files": ["src/billing/stripe.ts", "src/billing/proration.ts"]
  }
}
```

Response:

```json theme={null}
{
  "phase": "discover",
  "affected_tests": [
    { "test_file": "tests/billing.test.ts", "test_names": ["proration covers mid-cycle upgrades"] }
  ]
}
```

## Example — Phase 2 (submit results)

```json theme={null}
{
  "tool": "confirm_ready",
  "arguments": {
    "workstream_slug": "stripe-subscription-upgrades",
    "session_id": "sess_abc",
    "machine_id": "mbp-aaron",
    "commit_sha": "9f3c1a2",
    "completes_task_id": "task_xyz",
    "test_results": [
      {
        "test_file": "tests/billing.test.ts",
        "test_name": "proration covers mid-cycle upgrades",
        "status": "pass",
        "duration_ms": 412
      }
    ]
  }
}
```

Response on pass includes `sync_log_id` — pass it to [`sync_commit`](/mcp/sync-commit) to link the gate receipt to the git commit.

See [test gate](/concepts/test-gate) for the full model including flake handling.
