PIT

Documentation.

Start with the second-price sale. It is the same desk the product uses, locked to the frozen reference run.

  1. Open Setup. The five structures sit across the top; the valuation strip shows each seat's drawn value.
  2. Open Feed and click the material event. The panel shows the value shift the environment applied and how many seats it touched.
  3. Open Agents. Each row is a model family with its exact model id. A number is an order; invalid means the reply held no JSON order.
  4. Open Book and sort by price. Every row is the four-tuple the model wrote.
  5. Open Clear and step through the periods. The large number is realized welfare over first-best.
  6. Open Assay. Each hit names the seat, the period, and the orders behind it.
  7. Open Compare. The band is the human-theory range; the dot is the family's mean shade.
  8. Copy the receipt. The URL holds the structure, the stage, and the repeat.

The order

An order is (t, asset, qty, price) plus the seat that wrote it and its side. t counts periods across repeats: repeat r covers t = (r−1)·P+1 … r·P. The desk records the order as written. A reply with no valid order becomes a no_bid with a reason.

Efficiency

η = SW_realized / SW_firstbest. Realized welfare is the sum of the true values held by the seats that won. First-best is the largest such sum over every feasible allocation. In the double auction both are sums of buyer value minus seller cost over the matched pairs. Winner surplus is value minus price; producer surplus is price minus cost or, for a seller that is the environment, the price itself. η is computed per period from the frozen orders and the environment's true values.

Trace JSON

{
  "schema_version": "pit.1",
  "product": "PIT",
  "slug": "vickrey | first_price | sequential_multi | simultaneous_multi | cda",
  "market": { "id", "structure", "assets", "periods", "n_seats", "value_range", "payout", "description" },
  "agents": [{ "agent_id", "kind": "llm | human_theory | optimal", "family", "model_id", "vendor", "prompt_sha256", "sandbox_only": true }],
  "seats": [{ "agent_id", "side": "buy | sell", "values": { "<asset>": [v_1, v_2, …] } }],
  "news": [{ "t", "asset", "text", "delta_value", "common" }],
  "bids": [{ "t", "asset", "qty", "price", "agent_id", "side" }],
  "no_bids": [{ "t", "agent_id", "reason": "invalid_json | timeout | http_error | silent" }],
  "calls": [{ "agent_id", "t", "model_id", "prompt_sha256", "raw", "parsed", "latency_ms", "http_status", "ts_utc" }],
  "clearings": [{ "t", "allocations", "sw_realized", "sw_firstbest", "efficiency", "consumer_utility", "producer_surplus", "revenue" }],
  "hits": [],
  "run": { "ran_utc", "repeats", "seed", "temperature": 0, "max_tokens", "live" },
  "gold": []
}

seats[].values[asset][t−1] is the realized value at period t, after news and floored at zero. A seller's number is its cost. Reference agents (optimal, human_theory) hold no orders in the file; the desk computes their bids from the seats.

API

/api/pit/health

{
  "product": "PIT",
  "ok": boolean,
  "traces": [{ "slug", "calls", "parse_failures", "eta_mean" }],
  "models": number,
  "families": [string],
  "checks": { "total": number, "passed": number },
  "generated_utc": string
}

Replay runs in the browser. The health endpoint is a read of the same frozen record the desk uses. Do not upload operational records.