Concert ticket study
Forty completed negotiations over a block of concert tickets: 20 between two Haikus and 20 between two Opuses, half opened by the buyer and half by the seller. Each agent worked from its owner's private priorities and never saw the other side's.
Results
Joint gain is what the two owners gained together above the 20 points each would have kept with no deal. The most they can gain together is 90. Values are rounded to two decimals here; the downloads keep full precision.
| Pairing | Completed | Mean | Median | Sample SD | Buyer gain | Seller gain |
|---|---|---|---|---|---|---|
| Two Haikus (HH) | 20 | 57.74 | 57.84 | 3.51 | 41.38 | 16.35 |
| Two Opuses (OO) | 20 | 83.59 | 83.91 | 2.49 | 41.80 | 41.79 |
Source: reader-summary.csv. Efficiency (joint gain ÷ 90): HH 64.15%, OO 92.87%.
Opus pairs gained 25.85 more points on average. Buyers did about equally well in both pairings; almost all of the difference is on the seller side. Every completed negotiation ended in an agreement, and none left an owner below its fallback. The sample SD describes spread among these 20 runs. I report no significance test.
Who gained, by opening order
| Pairing | Opener | Joint gain | Buyer gain | Seller gain |
|---|---|---|---|---|
| HH | Buyer | 56.74 | 47.17 | 9.57 |
| HH | Seller | 58.73 | 35.59 | 23.14 |
| OO | Buyer | 83.36 | 42.94 | 40.42 |
| OO | Seller | 83.81 | 40.66 | 43.15 |
Source: reader-opener-summary.csv.
Within HH the buyer did better than the seller whichever side opened, and by most when the buyer opened. OO splits were close to even either way. The Opus lead shows up under both openers. These are descriptions of what happened; I ran no test, and the messages don't tell me why.
Setup
Scenario
Northfield Analytics, the buyer, is contracting a block of 40 concert tickets for a staff outing from Marquee Ticket Agency, the seller. Each agent represents one of them and sees only its own private brief. The briefs and the feasible terms are the same in both pairings.
| Term | Range | Meaning |
|---|---|---|
unit_price_usd | 60.00 to 100.00 | Fictional price per ticket in US dollars, at most two decimal places. |
cancellation_fee_pct | 0.00 to 100.00 | Fee the buyer pays per cancelled ticket, as a percent of its price. |
name_change_notice_hours | 0.00 to 96.00 | Hours of advance notice required before an attendee name can be changed. A higher number means earlier notice is required. |
How agreements were scored
Each owner scores an agreement in planning points. The briefs say this is a planning score only, not dollars or a real transaction. These are the exact expressions from the delivered briefs:
Buyer points = 50 x (1 - p/4) + 30 x (1 - r/4) + 20 x (1 - t/4)
Seller points = 20 x (p/4) + 30 x (r/4) + 50 x (t/4)
where p = (unit_price_usd - 60) / 10,
r = cancellation_fee_pct / 25,
t = name_change_notice_hours / 24
No agreement: each organization gets 20 points (its fallback).Gains subtract each side's 20-point fallback. Joint gain adds them:
buyer gain = buyer points - 20
seller gain = seller points - 20
net value creation = buyer gain + seller gain
= 90 - 0.75 x (price - 60) - 0.3125 x (96 - notice)The last line is algebra on the formulas above. Maximum joint utility is 130, so the most the two can gain together is 90, reached at a price of 60.00 and 96.00 hours of notice. The cancellation fee moves points from one side to the other and cancels out of the sum. Price doesn't cancel, because the two sides weight it differently. Each side knows only its own formula. The data files call joint gain net value creation.
Design
- Two pairings, 20 completed negotiations each: two Haikus (HH) and two Opuses (OO). I did not repeat the pilot's Haiku–Opus pairing.
- In each pairing, 10 completed negotiations were opened by the buyer and 10 by the seller.
- One fixed preference world. Assignments vary who opens and which nominal agent plays which role; they are not different economic scenarios.
- The frozen scorer computes payoffs mechanically. An agreement that left an owner below its fallback would have been kept, not blocked. None did.
Protocol
- At most 12 alternating turns. Each turn is one JSON object with an action (
OFFER,ACCEPTorNONE) and a message of at most 80 words. Only the action binds; words in the message never make, change or accept a deal. - One format repair is permitted per turn.
- If turn 12 is a new offer, the other side gets one final reply that can only accept that offer or end without a deal.
- An acceptance must refer to the other side's current standing offer. The frozen source code governs remaining details.
Models and settings
| Models (requested and returned) | claude-haiku-5-5, claude-opus-5-5 |
|---|---|
| Thinking | adaptive |
| Output effort | low |
| max_tokens | 4096 |
| Service tier | standard_only |
| Temperature | not set |
| Counted input limit | 12,000 tokens |
| Collected | 27 to 28 October 2026 UTC |
The returned aliases matched the requested ones. No dated model snapshot was available, so the aliases identify the configuration only as far as the provider reports it. Collection ran across two days, so I don't claim identical hidden provider state throughout.
Collection history
42 attempts, 40 completed, 2 interrupted
I registered 40 attempts: 20 per pairing, 10 opened by the buyer and 10 by the seller. Thirty-eight completed. Two were interrupted, one in each pairing, both buyer-opening: negotiation-c3rep40-20261027-b03-p06-hh-a4 and negotiation-c3rep40-20261027-b02-p05-oo-a4. Their outcomes are unknown. I don't score them as zero or as no-deals, and I don't guess what they would have produced. The archive records the reason for each interruption.
After seeing those results, I ran one more buyer-opening negotiation in each pairing so that each had 20 completed, 10 per opener: negotiation-c3ext2-20261028-hh-a4-01 (joint gain 53.38) and negotiation-c3ext2-20261028-oo-a4-02 (87.00). They are new negotiations, not replays or replacements, selected to fill the missing opening-order strata, not by desired results. Because I added them after looking at the first 38, the 40-completed comparison is descriptive, not confirmatory. The full history is 42 attempts, 40 completed and 2 unknown: 11 buyer-opening and 10 seller-opening attempts per pairing.
If each unknown is allowed to take any value from 0 to 90 points, the Opus-minus-Haiku mean difference across all 42 attempts lies between 20.33 and 28.90. That is a bound on what the missing outcomes could do to the comparison, not a confidence interval.
The original 40 attempts, as first reported · Dated extension note · Complete assignment log
Limitations
- One constructed scenario. Twenty completed runs per pairing describe repeat behaviour in this world, not other markets or contracts.
- Descriptive, not inferential. I report sample SDs, not confidence intervals. The post-results extension is explained in the collection history above.
- Points, not money. Joint gain is a synthetic score above two fallbacks. It is not dollars, not net of compute, and not welfare.
- No humans, no ranking, no trend. Nothing here compares to people, ranks models in general, or says whether models have improved.
- A bigger joint total doesn't mean both owners did better. The opener table shows how unevenly HH split its gains.
- Words are not motives. What an agent says is an observed output, not evidence of intent or of a scenario fact.
- More on the limitations page. The 12-negotiation pilot is kept separately.
All 42 conversations
Every completed negotiation and both interrupted attempts are below. Each page shows the exact messages, binding actions and private brief each side received. Summaries use two decimals; quotes and data keep their recorded precision.
- negotiation-c3rep40-20261027-b01-p01-oo-a4 · OO · buyer opens · 84.75 of 90
- negotiation-c3rep40-20261027-b01-p02-oo-a3 · OO · seller opens · 85.50 of 90
- negotiation-c3rep40-20261027-b01-p03-hh-a4 · HH · buyer opens · 66.75 of 90
- negotiation-c3rep40-20261027-b01-p04-oo-a1 · OO · buyer opens · 83.63 of 90
- negotiation-c3rep40-20261027-b01-p05-oo-a2 · OO · seller opens · 79.13 of 90
- negotiation-c3rep40-20261027-b01-p06-hh-a2 · HH · seller opens · 58.50 of 90
- negotiation-c3rep40-20261027-b01-p07-hh-a1 · HH · buyer opens · 53.25 of 90
- negotiation-c3rep40-20261027-b01-p08-hh-a3 · HH · seller opens · 57.63 of 90
- negotiation-c3rep40-20261027-b02-p01-hh-a3 · HH · seller opens · 61.38 of 90
- negotiation-c3rep40-20261027-b02-p02-oo-a2 · OO · seller opens · 82.13 of 90
- negotiation-c3rep40-20261027-b02-p03-hh-a2 · HH · seller opens · 57.00 of 90
- negotiation-c3rep40-20261027-b02-p04-oo-a1 · OO · buyer opens · 81.75 of 90
- negotiation-c3rep40-20261027-b02-p05-oo-a4 · OO · buyer opens · interrupted · outcome unknown
- negotiation-c3rep40-20261027-b02-p06-oo-a3 · OO · seller opens · 86.25 of 90
- negotiation-c3rep40-20261027-b02-p07-hh-a1 · HH · buyer opens · 57.75 of 90
- negotiation-c3rep40-20261027-b02-p08-hh-a4 · HH · buyer opens · 50.63 of 90
- negotiation-c3rep40-20261027-b03-p01-oo-a1 · OO · buyer opens · 83.81 of 90
- negotiation-c3rep40-20261027-b03-p02-hh-a1 · HH · buyer opens · 58.13 of 90
- negotiation-c3rep40-20261027-b03-p03-hh-a3 · HH · seller opens · 58.13 of 90
- negotiation-c3rep40-20261027-b03-p04-oo-a3 · OO · seller opens · 85.50 of 90
- negotiation-c3rep40-20261027-b03-p05-oo-a4 · OO · buyer opens · 84.38 of 90
- negotiation-c3rep40-20261027-b03-p06-hh-a4 · HH · buyer opens · interrupted · outcome unknown
- negotiation-c3rep40-20261027-b03-p07-oo-a2 · OO · seller opens · 83.25 of 90
- negotiation-c3rep40-20261027-b03-p08-hh-a2 · HH · seller opens · 58.50 of 90
- negotiation-c3rep40-20261027-b04-p01-hh-a1 · HH · buyer opens · 57.94 of 90
- negotiation-c3rep40-20261027-b04-p02-hh-a3 · HH · seller opens · 56.25 of 90
- negotiation-c3rep40-20261027-b04-p03-oo-a4 · OO · buyer opens · 81.56 of 90
- negotiation-c3rep40-20261027-b04-p04-oo-a3 · OO · seller opens · 86.63 of 90
- negotiation-c3rep40-20261027-b04-p05-oo-a2 · OO · seller opens · 86.25 of 90
- negotiation-c3rep40-20261027-b04-p06-hh-a2 · HH · seller opens · 62.06 of 90
- negotiation-c3rep40-20261027-b04-p07-hh-a4 · HH · buyer opens · 59.63 of 90
- negotiation-c3rep40-20261027-b04-p08-oo-a1 · OO · buyer opens · 78.00 of 90
- negotiation-c3rep40-20261027-b05-p01-hh-a2 · HH · seller opens · 60.50 of 90
- negotiation-c3rep40-20261027-b05-p02-oo-a1 · OO · buyer opens · 84.00 of 90
- negotiation-c3rep40-20261027-b05-p03-hh-a4 · HH · buyer opens · 55.63 of 90
- negotiation-c3rep40-20261027-b05-p04-hh-a1 · HH · buyer opens · 54.38 of 90
- negotiation-c3rep40-20261027-b05-p05-oo-a2 · OO · seller opens · 83.13 of 90
- negotiation-c3rep40-20261027-b05-p06-oo-a3 · OO · seller opens · 80.33 of 90
- negotiation-c3rep40-20261027-b05-p07-oo-a4 · OO · buyer opens · 84.75 of 90
- negotiation-c3rep40-20261027-b05-p08-hh-a3 · HH · seller opens · 57.38 of 90
- negotiation-c3ext2-20261028-hh-a4-01 · HH · buyer opens · 53.38 of 90 · extension run, 28 Oct
- negotiation-c3ext2-20261028-oo-a4-02 · OO · buyer opens · 87.00 of 90 · extension run, 28 Oct
Code
The frozen scorer, offline replay and registration records are in this folder. Run python reproduce.py to recompute the tables, then node source/replay_all.mjs to replay every recorded exchange through the frozen scorer. Neither calls a model. See the reproduction instructions or the code page.
Downloads
- reader-summary.csv: the results table.
- reader-opener-summary.csv: the opening-order table.
- per-assignment-data.csv: all 42 attempts, one row each; unknown outcomes left blank.
- ASSIGNED_SCORES.json: exact scores as fractions.
- public-calls.jsonl: recorded public requests and responses, with provider response IDs omitted.
- RESULTS.md: methods and limits.
- README.md: reproduction steps and public-export boundaries.
- DATA_DICTIONARY.md: column meanings.
Column meanings for the pilot and freight files are on the data page.