Poisson Tasks is out. Find where your agent breaks before your users do. Read the launch
Poisson Prove is out. It tells you whether a change to your agent really changed how often it fails. Read the launch
Poisson Labs

MATH ASINFRASTRUCTURE.

The measurement company for stochastic systems. We map where AI agents, robot policies, and automated workflows fail—and prove, with paired seeds and statistical bounds you can defend, whether a change actually held. Graded by code and math, never by another model.

An average hides what broke.

Whether you are shipping an AI agent, a robot controller, or a learned policy, a single headline score averages out localized failures—and moves by a few points between runs with nothing changed at all.

Poisson is a statistical measurement engine, not an eval wrapper. We test your system before and after a change, condition by condition, on the exact same seeds, correcting for testing every regime at once. You see exactly what improved, what regressed, and what is still underpowered before the commit merges.

report.md · change in fall rate, by condition
+200-20-40-60-80friction 0.6, push 0.55 m/s: fell 0% then 7%+70.55friction 0.6, push 0.575 m/s: fell 0% then 5%+50.575friction 0.6, push 0.60 m/s: fell 0% then 16%+160.60friction 0.6, push 0.625 m/s: fell 58% then 16%−420.625friction 0.6, push 0.65 m/s: fell 99% then 28%−710.65friction 0.6, push 0.675 m/s: fell 100% then 27%−730.675friction 0.6, push 0.70 m/s: fell 100% then 42%−580.70friction 1, push 0.55 m/s: fell 0% then 9%+90.55friction 1, push 0.575 m/s: fell 0% then 9%+90.575friction 1, push 0.60 m/s: fell 2% then 13%+110.60friction 1, push 0.625 m/s: fell 52% then 16%−360.625friction 1, push 0.65 m/s: fell 96% then 25%−710.65friction 1, push 0.675 m/s: fell 100% then 33%−670.675friction 1, push 0.70 m/s: fell 100% then 45%−550.70friction 0.6friction 1the average-29.7 points+200-20-40-60-80friction 0.6, push 0.55 m/s: fell 0% then 7%+7friction 0.6, push 0.575 m/s: fell 0% then 5%+5friction 0.6, push 0.60 m/s: fell 0% then 16%+16friction 0.6, push 0.625 m/s: fell 58% then 16%−42friction 0.6, push 0.65 m/s: fell 99% then 28%−71friction 0.6, push 0.675 m/s: fell 100% then 27%−73friction 0.6, push 0.70 m/s: fell 100% then 42%−58friction 1, push 0.55 m/s: fell 0% then 9%+9friction 1, push 0.575 m/s: fell 0% then 9%+9friction 1, push 0.60 m/s: fell 2% then 13%+11friction 1, push 0.625 m/s: fell 52% then 16%−36friction 1, push 0.65 m/s: fell 96% then 25%−71friction 1, push 0.675 m/s: fell 100% then 33%−67friction 1, push 0.70 m/s: fell 100% then 45%−55friction 0.6friction 1push 0.55 to 0.70push 0.55 to 0.70the average-29.7 points

significantly safersignificantly worseno significant changethe average

● OpenResearch result · CI workflow previewPromote checkpoint 5999

microduck-walking@v1

build
unit tests
poisson cloud / provefailed

5 of 14 conditions got worse.

8 better · 5 worse · 1 too close to call, below a 8-point limit

These files are as Prove 0.0.1 wrote them, in that version’s green and red.

Merge blocked
A bipedal walking policy, checkpoint 2250 → checkpoint 5999: the aggregate fall rate dropped from 50.5% to 20.8% (-29.7 pts on average), which looks like a ship-ready win. Condition-by-condition paired testing reveals 5 of 14 friction-and-push conditions got significantly worse—blocking the merge. Read the study →

01Where it sits

Your runs in. A verdict out.

Keep the stack, simulator, and runner you already have. Poisson ingests your rollout traces and adds the mathematical layer they leave out: controlled conditions, failure boundary search, and a statistically rigorous verdict on every change.

AI agents

  • Any Python agent
  • OpenAI Agents SDK
  • LangGraph
  • CrewAI
  • DeepEval
  • Ragas
  • promptfoo
  • Inspect
  • +4 more →

Robotics

  • Your Python rollout
  • MuJoCo
  • Isaac Lab
  • PyBullet
  • Brax

RL and post-training

  • Prime Intellect verifiers
  • OpenAI tools
  • MCP
  • OpenAPI

Data workflows

  • OpenTelemetry
  • LangSmith
  • JUnit
  • CSV or JSON Lines

Poisson

  1. Tasks

    Builds the conditions: seeded tasks across calibrated difficulty knobs.

  2. Break In development

    Hunts across parameter spaces for the conditions that make your system fail.

  3. Trace Private wheel

    Reads the runs you already have, step by step, to isolate where trajectories die.

  4. Prove

    Reruns every condition before and after a change on identical seeds, corrected for testing them all at once.

  5. Gym In development

    Converts isolated failure regimes and verified rollouts into deterministic environments for post-training.

What you get · Shipping gate

A verdict per condition

  • Improved
  • Regressed
  • Too small to tell, with the MDE limit

In CI, the check blocks merge on a significant regression.

What you get · Training loopIn development

Trainable failure data

Seeded failure tasks
Exact regimes where the system broke, packaged as reproducible seeds.
Code-verified rollouts
Graded trajectories ready for RL post-training or fine-tuning, without LLM-judge reward hacking.

Re-run Prove after training to verify the fix held.

Runs where you do. On your machine, on Modal, or across a cluster in your AWS, GCP or Azure account. Every integration

02Four surfaces

One method. Four kinds of system.

Whether a rollout is a tool-calling agent, a 50Hz MuJoCo control loop, an RL training episode, or a back-office pipeline, it reduces to the same mathematical object: a stochastic trajectory over controlled conditions. One engine measures all four.

AI agents

The AI agents page

Catch regressions before your users do.

Prompts, models, and tool schemas change daily, while evaluation scores bounce around on run-to-run variance. We isolate failure modes across tool-call depth and distractor load, trace multi-step trajectories to the exact step that broke, and prove whether a prompt or model swap actually improved reliability—without LLM-as-a-judge noise.

Empirical proofOn τ²-bench airline: running the exact same agent twice at temperature 0 disagrees on 22% of tasks—showing why unpaired leaderboard deltas are noise.

τ²-bench airline · the same agent, twice

45.0% → 44.0%of tasks solved, run one then run two

44 pairs came out differently156 agreed

Identical configuration and seed, temperature zero. No significant change in the score. Read the study

Robotics

The Robotics page

Map where a policy fails.

A policy retrain that improves average reward often introduces catastrophic failures in untested physical corners. We sweep across friction, payload, terrain, and external perturbation parameters in simulation to map your controller's exact failure boundary and show, regime by regime, whether a new checkpoint is statistically safer, worse, or too close to call.

Empirical proofOn a simulated Unitree Go1: sweeping 400 friction-and-push conditions shows a retrained policy significantly safer in 60 regimes, worse in 0, with no significant change in the other 340.

beforefall rate · brighter falls more
friction μ, 0.05 → 1
afterblue: significantly safer
friction μ, 0.05 → 1
push 10%lateral push, % bodyweight200%

60 conditions significantly safer after the retrain0 significantly worse, anywhere in the 400

RL and post-training

The RL and post-training page

Train against checks it can't game.

Static benchmarks saturate quickly, and policies learn to exploit weak or LLM-graded reward signals. We generate algorithmically parameterized task distributions with deterministic code verifiers—giving you reward channels the policy can't see for RL post-training, and calibrated difficulty curves to measure true generalization.

Empirical proofAcross 4,200 seeded episodes: strict vs. leaky verification exposes where models reach the goal state but fail to stop.

calibration card · gpt-5-nano
DEPTH · dependent calls d1 0.55 d2 0.40 d3 0.24 d5 0.18 d8 0.87 DISTRACTOR · of 16 tools r0 0.92 r2 0.90 r4 0.91 r8 0.91 r14 0.96 0%25%50%75%100% PASS@1 · 60 TASKS × 5 ATTEMPTS PER LEVEL · TASK-RESAMPLED 95% ON STRICT
strict: reached the goal and stopped there leaky: reached the goal, and may have gone past it

Data workflows

The Data workflows page

Evidence for taking a step off manual review.

Teams either review every automated action by hand or flip automation on blind and hope for the best. We read your pipeline's runs and the approvals behind them, measure step-by-step survival and error rates, and compute how many cases it takes for the confidence bound to clear a threshold you choose, before you take human review off a step—or block a bad model downgrade.

Read
145 of 783
● OpenSynthetic back office · CI workflow previewSwitch to the cheaper model

600 actions per version, a person approves each

build
unit tests
poisson cloud / provefailed

1 of 4 action types got worse.

Harmful reroute drafts 4.0% → 22.7%

Merge blocked

03The tools

Five tools. One evidence trail.

From synthetic stress-testing to production trace survival and CI regression gates. Every tool grades by deterministic code and exact statistics—never by another model—and sends nothing home.

shell · poisson-trace
poisson-trace fix-check OLD NEW --store ROOT --event NAME \    ( --failing-from RUN | --inputs all ) --max-mde X
Show more commands
pip install poisson-tracepip install poisson-prove# where do runs die, over the step indexpoisson-trace where RUN --store ROOT --event NAME# do two runs' survival curves differpoisson-trace compare A B --store ROOT --event NAME --max-mde-hr X# did the change make runs fail less, with the old version as the controlpoisson-trace fix-check OLD NEW --store ROOT --event NAME \    ( --failing-from RUN | --inputs all ) --max-mde X# which inputs moved, corrected across all of thempoisson-trace changes A B --store ROOT --event NAME
whereSee how many runs survive each step, and which steps end them.
fix-checkCompare the old and new versions on the same inputs, with the old one re-run as the control.
readersImport existing DeepEval or Ragas results without rerunning the model. How.

THE MEASUREMENTCOMPANY.

Get started Talk to us