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

# Listings and delistings

> How a market opens, the states it passes through, how one is wound down, and where the announcements are published.

Listing a market, changing its state, and retiring it are **protocol operations**, not administrative actions taken somewhere off to the side. They execute inside a block, at the top of [block priority](/trading/tx-sequencing), and their effect is observable at a specific block height rather than announced and applied opaquely.

That has a practical consequence for anyone integrating: a market's state is chain state, and it is authoritative. A client does not need to be told a market opened — it can see it.

## The states a market can be in

A market is never simply "on" or "off". It carries a status that determines exactly which orders the book will accept.

<div className="dg" data-dg="market-states">
  <div className="dg-c" style={{aspectRatio:"720 / 354"}}>
    <svg className="dg-w" viewBox="0 0 720 354" aria-hidden="true">
      <path className="dg-wire" d="M 154.00 153.00 L 175.60 153.00" />

      <path className="dg-head" d="M 182.00 153.00 L 175.60 157.40 L 175.60 148.60 Z" />

      <path className="dg-wire dg--green" d="M 340.00 153.00 L 361.60 153.00" />

      <path className="dg-head dg--green" d="M 368.00 153.00 L 361.60 157.40 L 361.60 148.60 Z" />

      <path className="dg-wire dg--sky" d="M 526.00 153.00 L 554.05 65.10" />

      <path className="dg-head dg--sky" d="M 556.00 59.00 L 558.25 66.43 L 549.86 63.76 Z" />

      <path className="dg-wire dg--yellow" d="M 526.00 153.00 L 549.60 153.00" />

      <path className="dg-head dg--yellow" d="M 556.00 153.00 L 549.60 157.40 L 549.60 148.60 Z" />

      <path className="dg-wire dg--orange" d="M 526.00 153.00 L 554.05 240.90" />

      <path className="dg-head dg--orange" d="M 556.00 247.00 L 549.86 242.24 L 558.25 239.57 Z" />

      <path className="dg-wire dg--orange" d="M 556.00 247.00 L 532.40 247.00" />

      <path className="dg-head dg--orange" d="M 526.00 247.00 L 532.40 242.60 L 532.40 251.40 Z" />
    </svg>

    <div className="dg-b" style={{left:"0.0000%",top:"33.8983%",width:"20.8333%",height:"18.6441%"}}><span className="dg-t">Initializing</span><span className="dg-s">the book accepts nothing</span></div>
    <div className="dg-b dg--yellow" style={{left:"25.8333%",top:"33.8983%",width:"20.8333%",height:"18.6441%"}}><span className="dg-t">PreOpen</span><span className="dg-s">post-only, allowlisted accounts only</span></div>
    <div className="dg-b dg--green" style={{left:"51.6667%",top:"33.8983%",width:"20.8333%",height:"18.6441%"}}><span className="dg-t">Active</span><span className="dg-s">everything</span></div>
    <div className="dg-b dg--sky" style={{left:"77.7778%",top:"7.3446%",width:"22.2222%",height:"18.6441%"}}><span className="dg-t">PostOnly</span><span className="dg-s">every taker order is rejected</span></div>
    <div className="dg-b dg--yellow" style={{left:"77.7778%",top:"33.8983%",width:"22.2222%",height:"18.6441%"}}><span className="dg-t">Paused</span><span className="dg-s">nothing</span></div>
    <div className="dg-b dg--orange" style={{left:"77.7778%",top:"60.4520%",width:"22.2222%",height:"18.6441%"}}><span className="dg-t">ReduceOnly</span><span className="dg-s">only orders that reduce a position</span></div>
    <div className="dg-b dg--orange" style={{left:"51.6667%",top:"60.4520%",width:"20.8333%",height:"18.6441%"}}><span className="dg-t">FinalSettlement</span><span className="dg-s">nothing — the terminal state</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"84.7458%",width:"100.0000%"}}><div className="dg-s">PostOnly and Paused return to Active. ReduceOnly does not — it is the wind-down path.</div><div className="dg-n">A market's state is chain state, executed at the top of block priority. A client does not need to be told a market opened; it can see it.</div></div>
  </div>
</div>

| Status              | What the book accepts                                 |
| ------------------- | ----------------------------------------------------- |
| **Initializing**    | Nothing. The market exists but is not open            |
| **PreOpen**         | Post-only orders, from allowlisted accounts only      |
| **Active**          | Everything                                            |
| **PostOnly**        | Post-only orders only — every taker order is rejected |
| **ReduceOnly**      | Only orders that reduce an existing position          |
| **Paused**          | Nothing                                               |
| **FinalSettlement** | Nothing. The terminal state of a retiring market      |

These are not severity levels on a dial. Each one is a different answer to a different problem.

**PreOpen** is how a market gets a book before it gets a trade. Allowlisted makers can quote, and because only post-only orders are accepted, nothing can cross while the book is being built. The market opens with two sides already present instead of opening empty and letting the first taker set the price.

**PostOnly** stops the taking without stopping the quoting. It is the state for "price discovery is broken right now" — makers can still reposition, but nobody can lift a stale quote.

**ReduceOnly** lets everyone out and nobody in. It is the state a market enters when it is being wound down, or when its risk profile has changed enough that growing exposure is no longer appropriate.

## How a market opens

A listing is a configuration operation that writes the [contract specification](/trading/markets) on-chain: tick size, lot size, index composition, leverage tiers, funding parameters, position limits, and price bands. Nothing about the market's behavior lives outside that record.

The specification is written before the market accepts anything, and it is readable from the moment it exists. A client that polls the market list sees the new market — with its complete parameters — ahead of it becoming tradeable, which is the window an integration needs to configure itself.

Listing operations can be placed under a **multisig requirement**: the operation carries a proof satisfying a signer threshold, and execution rejects it otherwise. This is enforced by the protocol at execution rather than by a process around it, so it is not a policy someone can route around.

## How a market is retired

A delisting is the reverse sequence rather than a switch. A market moves to **ReduceOnly** so open positions can be closed and no new exposure can be created, and only then to **FinalSettlement**.

The order is operating procedure, not something the state machine enforces on its own — but it is the order that matters. Flipping a market off while positions are open would leave holders with exposure they cannot exit through the book — which converts a scheduled operational change into a forced settlement at whatever price the protocol picks. Passing through ReduceOnly gives every holder the chance to close at a market price first.

The settlement procedure for any position still open at final settlement is specific to the contract and published with the delisting notice, alongside the notice period.

<Warning>
  A delisting notice is the one announcement that requires action. If you hold a position in a market entering ReduceOnly, closing it yourself at a price you chose is materially different from whatever the final settlement procedure does. See [Rule changes](/programs/rule-changes) for how notice periods work.
</Warning>

## Pre-market contracts

Some markets list before the underlying has a liquid spot market — a token before its listing, an equity before its offering.

These are ordinary markets to the kernel and unusual markets to a trader. Their [index price](/trading/index-price) has fewer and thinner sources, which makes it easier to move and more likely to gap. Their specifications reflect that with lower leverage, wider funding caps, and tighter position limits. See [Markets](/trading/markets#pre-market-contracts).

## Building against listings

**Enumerate markets repeatedly, not once.** A client that reads the market list at startup and never again will silently miss everything listed afterwards. Listings are a normal, ongoing event.

**Read specifications rather than storing them.** Tick sizes, leverage tiers, and funding caps change on live markets. A client holding a stale copy submits orders the network rejects, or sizes positions against limits that no longer apply.

**Handle every status, not just Active.** An order rejected for market status is not a bug in your order — it is the market telling you what it is currently accepting. Treating PostOnly, ReduceOnly, and Paused as distinct is the difference between an integration that degrades gracefully and one that retries into a wall.

## Announcements

<Note>
  The announcement stream begins at public testnet on **20 September 2026**. Until then, markets on the [private testnet](/protocol/architecture/network-status) are listed and changed without notice, because nothing there carries value.
</Note>

Each listing and delisting notice will carry: the market and its full specification, the effective block or date, the notice period given, and — for a delisting — the settlement procedure for positions still open.

## Where to go next

<CardGroup cols={2}>
  <Card title="Markets" href="/trading/markets">
    What a contract specification contains.
  </Card>

  <Card title="Rule changes" href="/programs/rule-changes">
    Notice periods and how changes take effect.
  </Card>

  <Card title="Transaction sequencing" href="/trading/tx-sequencing">
    Why system operations run at the top of a block.
  </Card>

  <Card title="Protocol changelog" href="/protocol/roadmap/changelog">
    The dated record of what has shipped.
  </Card>
</CardGroup>
