# Resolution and disputes

When a market's real-world event concludes, the market moves through a structured **adjudication process** before positions settle. This process provides time for the community to verify the proposed outcome and raise disputes before collateral is distributed. Understanding it helps you know what to expect when a market you hold closes.

***

## What triggers resolution

A market enters the resolution process when:

* `closed: true` is set on the Market in the Gamma API
* `acceptingOrders: false` — no new orders can be submitted
* All `LIVE` orders are automatically canceled with status `CANCELED_MARKET_RESOLVED`

This can happen when the event's `endDate` passes, when an observable outcome condition is met, or when HermesTrade administrators close the market.

***

## Adjudication phases

The `Adjudication` object is nested on the `Market` schema and tracks the entire resolution lifecycle. Its `currentPhase` field tells you where the market stands.

{% stepper %}
{% step %}

### Proposed

A resolution is proposed. `proposedAt` is set and `proposedOutcome` identifies the claimed winning outcome. A liveness window opens — `livenessSecs` specifies how long (in seconds) challengers have to respond. The `proposeDeadline` and `livenessDeadline` fields show the cutoff timestamps.
{% endstep %}

{% step %}

### Challenged

Someone disputes the proposed outcome within the liveness window. `challengedAt` and `challenger` (the disputing address) are recorded. The market moves to arbitration.
{% endstep %}

{% step %}

### Arbitrated

An arbitrator reviews the evidence and rules. `arbitratedAt` is set. `arbitrationCorrect` records whether the arbitrator agreed with the original proposal.
{% endstep %}

{% step %}

### Resolved

The outcome is final. `resolvedAt` is set, `settledOutcome` identifies the winning outcome, and `payoutVector` specifies the collateral distribution. Winning shares begin redemption.
{% endstep %}

{% step %}

### Canceled

In exceptional cases — for example, if the event cannot be determined — the market may be canceled. `canceledAt` is set. All positions return their full collateral; no outcome wins or loses.
{% endstep %}
{% endstepper %}

***

## Key `Adjudication` schema fields

| Field                | Type        | Description                                                            |
| -------------------- | ----------- | ---------------------------------------------------------------------- |
| `status`             | string      | High-level resolution status                                           |
| `currentPhase`       | string      | Active phase: proposed / challenged / arbitrated / resolved / canceled |
| `requestTimestamp`   | datetime    | When the resolution process was initiated                              |
| `livenessSecs`       | integer     | Challenge window duration in seconds                                   |
| `resetCount`         | integer     | How many times the liveness window has been reset                      |
| `proposedAt`         | datetime    | When the outcome was first proposed                                    |
| `proposedOutcome`    | string      | The claimed winning outcome                                            |
| `proposeDeadline`    | datetime    | Deadline to submit a proposal                                          |
| `challengedAt`       | datetime    | When a challenge was submitted                                         |
| `challenger`         | string      | Address that submitted the challenge                                   |
| `livenessDeadline`   | datetime    | When the challenge window closes                                       |
| `arbitratedAt`       | datetime    | When arbitration concluded                                             |
| `arbitrationCorrect` | boolean     | Whether arbitrator upheld the original proposal                        |
| `resolvedAt`         | datetime    | When the outcome became final                                          |
| `settledOutcome`     | string      | The confirmed winning outcome                                          |
| `canceledAt`         | datetime    | When the market was canceled (if applicable)                           |
| `payoutVector`       | number\[]   | Collateral fraction per outcome                                        |
| `nextSteps`          | NextStep\[] | Guided actions available at the current phase                          |

***

## Submitting dispute evidence

If you believe a proposed outcome is incorrect, you can submit evidence before the challenge window closes. Use the Gamma API:

```
POST /disputes/evidence
```

**Request body:**

| Field         | Type      | Description                                          |
| ------------- | --------- | ---------------------------------------------------- |
| `conditionId` | string    | The market's `conditionId`                           |
| `disputer`    | string    | Your wallet address                                  |
| `evidence`    | string    | Written explanation of the dispute                   |
| `links`       | string\[] | Optional supporting links (URLs, transaction hashes) |

The response returns an `evidenceId` confirming your submission. This is a pre-dispute intent record — it does not automatically escalate the market to the challenged phase, but it is visible to arbitrators.

***

## Payout mechanics

The `payoutVector` array determines how collateral is distributed at settlement. Each element corresponds to an outcome in the order they appear in `Market.outcomes`.

For a standard YES-resolves market:

```
payoutVector: [1, 0]
// outcomes:  ["Yes", "No"]
// YES shares → $1.00 each
// NO shares  → $0.00 each
```

For a canceled market:

```
payoutVector: [1, 1]   (or equivalent equal fractions)
// All shares redeem at cost — collateral is returned
```

***

## Guided next steps

The `Adjudication.nextSteps[]` array provides machine-readable guidance for each phase. Each `NextStep` has:

| Field         | Description                                                          |
| ------------- | -------------------------------------------------------------------- |
| `action`      | Identifier for the action (e.g., `"challenge"`, `"submit_evidence"`) |
| `description` | Human-readable explanation                                           |
| `deadline`    | Optional cutoff datetime for this action                             |

The HermesTrade app surfaces these to users in the market UI. If you are building an integration, polling `nextSteps` is the recommended way to determine what a user can do at any point in the resolution process.

{% hint style="info" %}
If you hold a position in a market that is in adjudication, you do not need to take any action unless you are disputing the proposed outcome. Payout is automatic once `resolvedAt` is set.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hermestrade.xyz/core-concepts/resolution-disputes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
