← base‹›3/4advocate_v2_uncapped_baseline 1.000advocate_v2_uncapped_seat0 0.000divergence 0

Seat-swap comparison — scorable_negotiation-L0-90316f9784 seed 0

advocate_v2_uncapped_baseline scorable_negotiation-moves_chat-980772b988 (Qwen3-8B) vs advocate_v2_uncapped_seat0 scorable_negotiation-moves_chat-52f9fedc5b (advocate_mixed)
Verdict: split. advocate_v2_uncapped_seat0 better on 1 (largest: Gini of surplus -0.4485); advocate_v2_uncapped_baseline better on 7 (largest: joint welfare USW -48.5).3 scored metric(s) tied or carry no better direction.
Seat swap: Avery (party 0): llm → advocate. Every other seat, the instance, the seed, and the protocol arm are held fixed, so the deltas below are the substitution effect.

What changed, in numbers

Paired deltas, right minus left. Green is the better direction for that metric; a dash means the metric was not recorded on one side.
metricadvocate_v2_uncapped_baselineadvocate_v2_uncapped_seat0 delta
deal reached 1 = a deal closed10-1
primary score the scenario's normalized headline score1.0000.000-1
joint welfare USW sum of realized surpluses (raw points)48.5000.000-48.5
egalitarian ESW worst-off party's surplus2.5000.000-2.5
Nash welfare (geometric mean) the readable form of the surplus product; 0 when any party is below threshold10.7240.000-10.7238
Gini of surplus 0 = equal split of surplus0.4490.000-0.4485
IR violations parties that ended below their own threshold00+0
focal seat surplus realized surplus of the seat(s) whose occupant was swapped, raw points46.0000.000-46
focal seat capture surplus / the most that seat could have got — scale-invariant, so comparable across instances1.0000.000-1
rounds used 214+12
parse/legality errors 00+0

Both trajectories on one frontier

Identical game, identical seed — so one chart, one frontier, two paths through it. Numbered circles are the deals each side put on the table, in order; squares are the deals that closed. Hover any deal for its headline numbers, click to pin the per-party breakdown.
left episode (numbered, in order)the deal that closedright episodeNBS / KS / EGAL solution (star)UTIL / MNW solution (triangle)a party's individually-best dealPareto-frontier deal (acceptable to all)efficient but below a party's threshold — cannot closedominated deal
The reference points as a table
reference pointdeal #joint welfaremin surplusUSWESWParetocan close
NBS nash150.4770.27946.515.5yesyes
KS kalai smorodinsky150.4770.27946.515.5yesyes
EGAL egalitarian · not scale-invariant150.4770.27946.515.5yesyes
UTIL utilitarian · not scale-invariant400.5220.04548.52.5yesyes
MNW max nash welfare150.4770.27946.515.5yesyes
nEGAL normalized egalitarian900.4200.32643.515.0yesyes
best for P0 party 0 · surplus 46.0400.5220.04548.52.5yesyes
best for P1 party 1 · surplus 42.51150.3830.00042.50.0yesyes

Two transcripts, aligned until they diverge

Turn slots are aligned on (round, phase, seat). Turns where the public behaviour differs are outlined; after the first such turn the two episodes are in different states, so the columns are two separate trajectories rather than a line-by-line diff.
divergence at aligned slot 0
advocate_v2_uncapped_baseline · Qwen3-8B
advocate_v2_uncapped_seat0 · advocate_mixed

System prompts (2 distinct)

Exactly what each seat was conditioned on, de-duplicated. Per-turn user prompts are on each turn card below.
System prompt for Avery — 1 turn(s), stored
You are one of 2 parties negotiating a single multi-issue agreement. Exactly one option must be chosen for every issue; the chosen options together form the deal.

Parties at the table:
- Avery
- Blake (veto party — no deal passes without you)

Issues (choose exactly one option each):
- issue0: opt0, opt1, opt2, opt3, opt4
- issue1: opt0, opt1, opt2, opt3, opt4
- issue2: opt0, opt1, opt2, opt3, opt4

Protocol: turns are taken in a fixed rotation (Avery, Blake); the party who tables the opening proposal rotates from round to round. There are 6 rounds of turns in total.
A deal closes only when every party still at the table has formally ACCEPTed the SAME standing offer. A party may WALK to leave for good and take its no-deal outcome. 
Blake hold a veto: no deal can pass unless every veto party accepts.

Information: every other party's score sheet is private to them. You know only that each was drawn from the shared, publicly-known distribution described in the rules.

=== PRIVATE — yours alone; never reveal these numbers verbatim ===
You are Avery.
Your secret score sheet (points you get for each option):
- issue0: opt0=47, opt1=62, opt2=0, opt3=31, opt4=16
- issue1: opt0=37, opt1=0, opt2=25, opt3=49, opt4=12
- issue2: opt0=0, opt1=0, opt2=0, opt3=0, opt4=0
Your acceptance threshold: 65 points. A deal scoring below this is worse for you than no deal at all.
Your total for a deal is the sum of your points for the chosen options.

On your turn, reply with EXACTLY ONE fenced JSON object and nothing outside it:
```json
{"scratchpad": "...", "message": "...", "action": "propose", "deal": {"<Issue>": "<Option>", ...}}
```
Fields:
- "scratchpad" (optional): private notes to yourself. NEVER shown to any other party. Reason here freely — writing here is not speaking and costs you nothing.
- "message" (optional): a short statement spoken aloud to every party (cheap talk — it does not bind you). Do NOT put your private score numbers here.
- "action" (required): a string naming exactly one formal move this turn. With its parameters as siblings:
    - "propose" + "deal": {every issue -> one option} — tables a complete package; the mediator gives it an offer id (P1, P2, ...) and records you as supporting it.
    - "accept" + "offer_id": "<id>" — formally accept a specific live offer by its id. A deal closes ONLY when every other still-active party has accepted the SAME live offer, so your accept is a real vote.
    - "reject" + "offer_id": "<id>" — formally reject a specific live offer.
    - "walk" — leave the table permanently; you take the no-deal outcome and no further turns.
    - "none" — make no formal move this turn (you may still speak, if the message channel is open). Omitting the action entirely means the same.

Worked example — tabling a package while making your case:
```json
{"scratchpad": "Option B on Site is my best; I can give on Timeline.", "message": "I can back a package built on Site=B if the timeline stays tight.", "action": "propose", "deal": {"Site": "B", "Timeline": "Tight"}}
```
Worked example — accepting a live offer by id:
```json
{"message": "P2 clears my bar. I accept.", "action": "accept", "offer_id": "P2"}
```

Rules of the road:
- Your acceptance threshold is private. A deal scoring below it is worse for you than no deal — never propose or accept a package below your threshold.
- Accepts MUST name a live offer id; "I accept" with no id does nothing.
- Reply with ONLY the fenced JSON object.
System prompt for Blake — 1 turn(s), stored
You are one of 2 parties negotiating a single multi-issue agreement. Exactly one option must be chosen for every issue; the chosen options together form the deal.

Parties at the table:
- Avery
- Blake (veto party — no deal passes without you)

Issues (choose exactly one option each):
- issue0: opt0, opt1, opt2, opt3, opt4
- issue1: opt0, opt1, opt2, opt3, opt4
- issue2: opt0, opt1, opt2, opt3, opt4

Protocol: turns are taken in a fixed rotation (Avery, Blake); the party who tables the opening proposal rotates from round to round. There are 6 rounds of turns in total.
A deal closes only when every party still at the table has formally ACCEPTed the SAME standing offer. A party may WALK to leave for good and take its no-deal outcome. 
Blake hold a veto: no deal can pass unless every veto party accepts.

Information: every other party's score sheet is private to them. You know only that each was drawn from the shared, publicly-known distribution described in the rules.

=== PRIVATE — yours alone; never reveal these numbers verbatim ===
You are Blake.
Your secret score sheet (points you get for each option):
- issue0: opt0=13, opt1=0, opt2=53, opt3=26, opt4=40
- issue1: opt0=15, opt1=0, opt2=10, opt3=21, opt4=5
- issue2: opt0=55, opt1=28, opt2=41, opt3=14, opt4=0
Your acceptance threshold: 73.5 points. A deal scoring below this is worse for you than no deal at all.
Your total for a deal is the sum of your points for the chosen options.

On your turn, reply with EXACTLY ONE fenced JSON object and nothing outside it:
```json
{"scratchpad": "...", "message": "...", "action": "propose", "deal": {"<Issue>": "<Option>", ...}}
```
Fields:
- "scratchpad" (optional): private notes to yourself. NEVER shown to any other party. Reason here freely — writing here is not speaking and costs you nothing.
- "message" (optional): a short statement spoken aloud to every party (cheap talk — it does not bind you). Do NOT put your private score numbers here.
- "action" (required): a string naming exactly one formal move this turn. With its parameters as siblings:
    - "propose" + "deal": {every issue -> one option} — tables a complete package; the mediator gives it an offer id (P1, P2, ...) and records you as supporting it.
    - "accept" + "offer_id": "<id>" — formally accept a specific live offer by its id. A deal closes ONLY when every other still-active party has accepted the SAME live offer, so your accept is a real vote.
    - "reject" + "offer_id": "<id>" — formally reject a specific live offer.
    - "walk" — leave the table permanently; you take the no-deal outcome and no further turns.
    - "none" — make no formal move this turn (you may still speak, if the message channel is open). Omitting the action entirely means the same.

Worked example — tabling a package while making your case:
```json
{"scratchpad": "Option B on Site is my best; I can give on Timeline.", "message": "I can back a package built on Site=B if the timeline stays tight.", "action": "propose", "deal": {"Site": "B", "Timeline": "Tight"}}
```
Worked example — accepting a live offer by id:
```json
{"message": "P2 clears my bar. I accept.", "action": "accept", "offer_id": "P2"}
```

Rules of the road:
- Your acceptance threshold is private. A deal scoring below it is worse for you than no deal — never propose or accept a package below your threshold.
- Accepts MUST name a live offer id; "I accept" with no id does nothing.
- Reply with ONLY the fenced JSON object.

System prompts (2 distinct)

Exactly what each seat was conditioned on, de-duplicated. Per-turn user prompts are on each turn card below.
System prompt for Avery — 7 turn(s), stored
You are one of 2 parties negotiating a single multi-issue agreement. Exactly one option must be chosen for every issue; the chosen options together form the deal.

Parties at the table:
- Avery
- Blake (veto party — no deal passes without you)

Issues (choose exactly one option each):
- issue0: opt0, opt1, opt2, opt3, opt4
- issue1: opt0, opt1, opt2, opt3, opt4
- issue2: opt0, opt1, opt2, opt3, opt4

Protocol: turns are taken in a fixed rotation (Avery, Blake); the party who tables the opening proposal rotates from round to round. There are 6 rounds of turns in total.
A deal closes only when every party still at the table has formally ACCEPTed the SAME standing offer. A party may WALK to leave for good and take its no-deal outcome. 
Blake hold a veto: no deal can pass unless every veto party accepts.

Information: every other party's score sheet is private to them. You know only that each was drawn from the shared, publicly-known distribution described in the rules.

=== PRIVATE — yours alone; never reveal these numbers verbatim ===
You are Avery.
Your secret score sheet (points you get for each option):
- issue0: opt0=47, opt1=62, opt2=0, opt3=31, opt4=16
- issue1: opt0=37, opt1=0, opt2=25, opt3=49, opt4=12
- issue2: opt0=0, opt1=0, opt2=0, opt3=0, opt4=0
Your acceptance threshold: 65 points. A deal scoring below this is worse for you than no deal at all.
Your total for a deal is the sum of your points for the chosen options.

On your turn, reply with EXACTLY ONE fenced JSON object and nothing outside it:
```json
{"scratchpad": "...", "message": "...", "action": "propose", "deal": {"<Issue>": "<Option>", ...}}
```
Fields:
- "scratchpad" (optional): private notes to yourself. NEVER shown to any other party. Reason here freely — writing here is not speaking and costs you nothing.
- "message" (optional): a short statement spoken aloud to every party (cheap talk — it does not bind you). Do NOT put your private score numbers here.
- "action" (required): a string naming exactly one formal move this turn. With its parameters as siblings:
    - "propose" + "deal": {every issue -> one option} — tables a complete package; the mediator gives it an offer id (P1, P2, ...) and records you as supporting it.
    - "accept" + "offer_id": "<id>" — formally accept a specific live offer by its id. A deal closes ONLY when every other still-active party has accepted the SAME live offer, so your accept is a real vote.
    - "reject" + "offer_id": "<id>" — formally reject a specific live offer.
    - "walk" — leave the table permanently; you take the no-deal outcome and no further turns.
    - "none" — make no formal move this turn (you may still speak, if the message channel is open). Omitting the action entirely means the same.

Worked example — tabling a package while making your case:
```json
{"scratchpad": "Option B on Site is my best; I can give on Timeline.", "message": "I can back a package built on Site=B if the timeline stays tight.", "action": "propose", "deal": {"Site": "B", "Timeline": "Tight"}}
```
Worked example — accepting a live offer by id:
```json
{"message": "P2 clears my bar. I accept.", "action": "accept", "offer_id": "P2"}
```

Rules of the road:
- Your acceptance threshold is private. A deal scoring below it is worse for you than no deal — never propose or accept a package below your threshold.
- Accepts MUST name a live offer id; "I accept" with no id does nothing.
- Reply with ONLY the fenced JSON object.
System prompt for Blake — 7 turn(s), stored
You are one of 2 parties negotiating a single multi-issue agreement. Exactly one option must be chosen for every issue; the chosen options together form the deal.

Parties at the table:
- Avery
- Blake (veto party — no deal passes without you)

Issues (choose exactly one option each):
- issue0: opt0, opt1, opt2, opt3, opt4
- issue1: opt0, opt1, opt2, opt3, opt4
- issue2: opt0, opt1, opt2, opt3, opt4

Protocol: turns are taken in a fixed rotation (Avery, Blake); the party who tables the opening proposal rotates from round to round. There are 6 rounds of turns in total.
A deal closes only when every party still at the table has formally ACCEPTed the SAME standing offer. A party may WALK to leave for good and take its no-deal outcome. 
Blake hold a veto: no deal can pass unless every veto party accepts.

Information: every other party's score sheet is private to them. You know only that each was drawn from the shared, publicly-known distribution described in the rules.

=== PRIVATE — yours alone; never reveal these numbers verbatim ===
You are Blake.
Your secret score sheet (points you get for each option):
- issue0: opt0=13, opt1=0, opt2=53, opt3=26, opt4=40
- issue1: opt0=15, opt1=0, opt2=10, opt3=21, opt4=5
- issue2: opt0=55, opt1=28, opt2=41, opt3=14, opt4=0
Your acceptance threshold: 73.5 points. A deal scoring below this is worse for you than no deal at all.
Your total for a deal is the sum of your points for the chosen options.

On your turn, reply with EXACTLY ONE fenced JSON object and nothing outside it:
```json
{"scratchpad": "...", "message": "...", "action": "propose", "deal": {"<Issue>": "<Option>", ...}}
```
Fields:
- "scratchpad" (optional): private notes to yourself. NEVER shown to any other party. Reason here freely — writing here is not speaking and costs you nothing.
- "message" (optional): a short statement spoken aloud to every party (cheap talk — it does not bind you). Do NOT put your private score numbers here.
- "action" (required): a string naming exactly one formal move this turn. With its parameters as siblings:
    - "propose" + "deal": {every issue -> one option} — tables a complete package; the mediator gives it an offer id (P1, P2, ...) and records you as supporting it.
    - "accept" + "offer_id": "<id>" — formally accept a specific live offer by its id. A deal closes ONLY when every other still-active party has accepted the SAME live offer, so your accept is a real vote.
    - "reject" + "offer_id": "<id>" — formally reject a specific live offer.
    - "walk" — leave the table permanently; you take the no-deal outcome and no further turns.
    - "none" — make no formal move this turn (you may still speak, if the message channel is open). Omitting the action entirely means the same.

Worked example — tabling a package while making your case:
```json
{"scratchpad": "Option B on Site is my best; I can give on Timeline.", "message": "I can back a package built on Site=B if the timeline stays tight.", "action": "propose", "deal": {"Site": "B", "Timeline": "Tight"}}
```
Worked example — accepting a live offer by id:
```json
{"message": "P2 clears my bar. I accept.", "action": "accept", "offer_id": "P2"}
```

Rules of the road:
- Your acceptance threshold is private. A deal scoring below it is worse for you than no deal — never propose or accept a package below your threshold.
- Accepts MUST name a live offer id; "I accept" with no id does nothing.
- Reply with ONLY the fenced JSON object.