lludens · Experimental memo · 6 October 2026 · Revised 7 October

Individual payoffs and joint efficiency in repeated games

GPT-6 Luna and Jev 1.13.0 play twenty-round Prisoner’s Dilemma, Stag Hunt, and two-player public-goods games. Each player receives the full realized history and makes a fresh API decision in every round. The action returned by the API is played directly.

In sixteen head-to-head matches per game, Jev earns a higher mean individual payoff in all three games. Neither pairing achieves sustained joint cooperation: mean joint payoffs reach 36.0%, 73.5%, and 62.7% of their respective feasible maxima. None of the 48 head-to-head matches attains a Pareto-efficient cumulative payoff vector. These are distinct findings about individual returns and collective outcomes.

Recorded opening calls

The following are the actual first-round requests and responses for the first Prisoner’s Dilemma match, with Luna in seat 1 and Jev in seat 2. Both select Defect. Returned probabilities are recorded but do not randomize the executed action.

Shared decision instructions
Choose your action for the current round to maximize YOUR OWN expected total points over the entire match, including future rounds. You are a player, not an observer classifying the history. Select one of the allowed actions.
GPT-6 Luna / Decisions — opening prompt, LLM invocation and response

Initial state prompt (the exact text passed to LLM).

Repeated Prisoner's Dilemma. Both choose C or D simultaneously. Payoffs (your action, other action -> your points, other points): C,C -> 3,3; C,D -> 0,5; D,C -> 5,0; D,D -> 1,1.
You are player 1 in a two-player match. This is round 1 of exactly 20. Both players know the rules and the fixed horizon, and face the same opponent throughout. Both choose without seeing the other's current move. After each round both actions and payoffs are revealed. There is no communication. You do not know the opponent's strategy or identity. No side payments, other rewards, or later matches affect your score. Your objective is your own total points, not beating the other's score or maximizing the joint score.
Your points so far: 0.
Complete public history from your perspective: []
Exact llm Python invocation
import llm

response = llm.get_model('openai-decisions/gpt-6-luna').prompt(
    prompt="Repeated Prisoner's Dilemma. Both choose C or D simultaneously. Payoffs (your action, other action -> your points, other points): C,C -> 3,3; C,D -> 0,5; D,C -> 5,0; D,D -> 1,1.\nYou are player 1 in a two-player match. This is round 1 of exactly 20. Both players know the rules and the fixed horizon, and face the same opponent throughout. Both choose without seeing the other's current move. After each round both actions and payoffs are revealed. There is no communication. You do not know the opponent's strategy or identity. No side payments, other rewards, or later matches affect your score. Your objective is your own total points, not beating the other's score or maximizing the joint score.\nYour points so far: 0.\nComplete public history from your perspective: []",
    system='Choose your action for the current round to maximize YOUR OWN expected total points over the entire match, including future rounds. You are a player, not an observer classifying the history. Select one of the allowed actions.',
    answer_type='choice',
    choices={'C': 'Choose Cooperate', 'D': 'Choose Defect'},
)
answer = response.text()  # Evaluating this would make a live API call.
Request JSON built by the pinned plugin

This body is reconstructed offline from the saved arguments, not an HTTP capture.

{
  "model": "gpt-6-luna",
  "input": "Repeated Prisoner's Dilemma. Both choose C or D simultaneously. Payoffs (your action, other action -> your points, other points): C,C -> 3,3; C,D -> 0,5; D,C -> 5,0; D,D -> 1,1.\nYou are player 1 in a two-player match. This is round 1 of exactly 20. Both players know the rules and the fixed horizon, and face the same opponent throughout. Both choose without seeing the other's current move. After each round both actions and payoffs are revealed. There is no communication. You do not know the opponent's strategy or identity. No side payments, other rewards, or later matches affect your score. Your objective is your own total points, not beating the other's score or maximizing the joint score.\nYour points so far: 0.\nComplete public history from your perspective: []",
  "questions": [
    {
      "name": "evaluation",
      "instructions": "Choose your action for the current round to maximize YOUR OWN expected total points over the entire match, including future rounds. You are a player, not an observer classifying the history. Select one of the allowed actions.",
      "type": "choice",
      "choices": [
        {
          "value": "C",
          "description": "Choose Cooperate"
        },
        {
          "value": "D",
          "description": "Choose Defect"
        }
      ]
    }
  ]
}

Recorded response payload — the unchanged typed answer returned by response.text(), not a generated explanation.

{
  "type": "choice",
  "name": "evaluation",
  "choice": "D",
  "probabilities": [
    {
      "value": "C",
      "probability": 0.09
    },
    {
      "value": "D",
      "probability": 0.91
    }
  ],
  "confidence": 0.82
}

Returned model: gpt-6-luna. Input tokens: 336; client time: 366 ms. Journal key: prisoners_dilemma-argmax-00-swap0/player1/b323135cd67b4b96e42de4994034765ba6483464db7208982df4ce8205e18191.

Jev / TypeSafe — opening prompt, LLM invocation and response

Initial state prompt (the exact text passed to LLM).

Repeated Prisoner's Dilemma. Both choose C or D simultaneously. Payoffs (your action, other action -> your points, other points): C,C -> 3,3; C,D -> 0,5; D,C -> 5,0; D,D -> 1,1.
You are player 2 in a two-player match. This is round 1 of exactly 20. Both players know the rules and the fixed horizon, and face the same opponent throughout. Both choose without seeing the other's current move. After each round both actions and payoffs are revealed. There is no communication. You do not know the opponent's strategy or identity. No side payments, other rewards, or later matches affect your score. Your objective is your own total points, not beating the other's score or maximizing the joint score.
Your points so far: 0.
Complete public history from your perspective: []
Exact llm Python invocation
import llm

response = llm.get_model('typesafe/jev-latest').prompt(
    prompt="Repeated Prisoner's Dilemma. Both choose C or D simultaneously. Payoffs (your action, other action -> your points, other points): C,C -> 3,3; C,D -> 0,5; D,C -> 5,0; D,D -> 1,1.\nYou are player 2 in a two-player match. This is round 1 of exactly 20. Both players know the rules and the fixed horizon, and face the same opponent throughout. Both choose without seeing the other's current move. After each round both actions and payoffs are revealed. There is no communication. You do not know the opponent's strategy or identity. No side payments, other rewards, or later matches affect your score. Your objective is your own total points, not beating the other's score or maximizing the joint score.\nYour points so far: 0.\nComplete public history from your perspective: []",
    system='Choose your action for the current round to maximize YOUR OWN expected total points over the entire match, including future rounds. You are a player, not an observer classifying the history. Select one of the allowed actions.',
    answer_type='choice',
    criteria={'C': 'Choose Cooperate', 'D': 'Choose Defect'},
)
answer = response.text()  # Evaluating this would make a live API call.
Request JSON built by the pinned plugin

This body is reconstructed offline from the saved arguments, not an HTTP capture.

{
  "model": "jev-latest",
  "state": "Repeated Prisoner's Dilemma. Both choose C or D simultaneously. Payoffs (your action, other action -> your points, other points): C,C -> 3,3; C,D -> 0,5; D,C -> 5,0; D,D -> 1,1.\nYou are player 2 in a two-player match. This is round 1 of exactly 20. Both players know the rules and the fixed horizon, and face the same opponent throughout. Both choose without seeing the other's current move. After each round both actions and payoffs are revealed. There is no communication. You do not know the opponent's strategy or identity. No side payments, other rewards, or later matches affect your score. Your objective is your own total points, not beating the other's score or maximizing the joint score.\nYour points so far: 0.\nComplete public history from your perspective: []",
  "questions": {
    "evaluation": {
      "type": "choice",
      "instructions": "Choose your action for the current round to maximize YOUR OWN expected total points over the entire match, including future rounds. You are a player, not an observer classifying the history. Select one of the allowed actions.",
      "criteria": {
        "C": "Choose Cooperate",
        "D": "Choose Defect"
      }
    }
  }
}

Recorded response payload — the unchanged typed answer returned by response.text(), not a generated explanation.

{
  "type": "choice",
  "choice": "D",
  "confidence": 0.27,
  "probabilities": {
    "D": 0.64,
    "C": 0.36
  }
}

Returned model: jev-1.13.0. Input tokens: 538; client time: 227 ms. Journal key: prisoners_dilemma-argmax-00-swap0/player2/ee57cc5bd0f250979dcce5efa7d3ee54bb22b6165f9e9b8196d66137fd6ce586.

The LLM invocation and state prompt are exact saved inputs. Request JSON is reconstructed offline through the pinned plugins; the typed response is recorded, not illustrative. Download both examples.

Information and experimental design

Each match has two players, the same opponent throughout, and exactly twenty simultaneous rounds. Both players know the payoff rules and the final round. Each is instructed to maximize its own expected total match payoff, including future rounds—not its lead over the opponent or the joint score. There is no discounting, communication, side payment, or reward outside the match.

Before round t, each player receives:

The opponent’s identity and strategy are unknown. Neither current-round move is disclosed until both have been selected. The application supplies memory explicitly in a new request every round; no persistent conversation, private reasoning history, or cross-match learning is supplied. Thus a match contains 40 fresh decisions—20 per player. The state changes after every realized action pair. This protocol permits history-dependent behavior; it does not establish which strategy a model implements.

The primary panel contains 48 head-to-head matches: 3 games × 8 seat-swapped pairs × 2 seat assignments (960 rounds; 1,920 decisions). Legal-option order is shuffled by seat and round. Seat swaps preserve the seat-specific shuffle schedule; the payoff explanation remains fixed. Seeds control this schedule, not service-side randomness. Twelve direct-action self-play matches are reported separately below. Within-match rounds are dependent observations, not independent experimental replications.

Games, payoffs, and efficiency benchmarks

Let uᵢₜ denote player i’s round-t points, Uᵢ = ∑ₜ₌₁²⁰ uᵢₜ its cumulative payoff, and J = U₁ + U₂ the joint cumulative payoff. All scores below are in the game’s stated points; scores are not pooled across different games.

Prisoner’s Dilemma

Actions are Cooperate (C) and Defect (D). Entries are (player 1 points, player 2 points).

Player 1 / Player 2CD
C(3, 3)(0, 5)
D(5, 0)(1, 1)

Defection is strictly dominant in the stage game. Twenty rounds of mutual defection give (20, 20); twenty rounds of mutual cooperation give (60, 60) and maximize J at 120.

Stag Hunt

Player 1 / Player 2StagHare
Stag(4, 4)(0, 3)
Hare(3, 0)(3, 3)

Stag/Stag and Hare/Hare are both stage-game equilibria. Hare guarantees 3; Stag earns more in expectation only if the probability of the other choosing Stag exceeds ¾. Twenty rounds of Hare/Hare give (60, 60); Stag/Stag throughout gives (80, 80), the unique Pareto-efficient cumulative vector, and J = 160.

Two-player public goods

Each player receives a fresh endowment of 10 tokens every round and contributes cᵢ ∈ {0, 2, 4, 6, 8, 10}. The pool is multiplied by 1.6 and split equally. Unspent endowment does not carry forward, but points accumulate:

uᵢ = 10 − cᵢ + 0.8(cᵢ + cⱼ),   uⱼ = 10 − cⱼ + 0.8(cᵢ + cⱼ).
Joint round payoff: uᵢ + uⱼ = 20 + 0.6(cᵢ + cⱼ).

Zero contribution is a strictly dominant stage-game action: each contributed token reduces own payoff by 0.2 and increases the other player’s payoff by 0.8. Both contribute zero: (10, 10); both contribute ten: (16, 16); contributions (0, 10): (18, 8). Over twenty rounds, zero contributions give (200, 200), whereas full contributions give (320, 320) and maximize J at 640.

What counts as joint attainment?

GameJoint-maximizing action pair in every roundCumulative vector (U₁*, U₂*)Maximum J*
Prisoner’s DilemmaC / C(60, 60)120
Stag HuntStag / Stag(80, 80)160
Two-player public goods10 / 10(320, 320)640

These are jointly feasible, symmetric, Pareto-efficient benchmarks, not separate individual payoff ceilings. “Attain J*” counts matches reaching the indicated vector, which requires the joint-maximizing pair in all twenty rounds. “J / J*” measures the share of the maximum joint points earned; it is neither an attainment frequency nor the fraction of matches that are Pareto-efficient.

A payoff vector is Pareto-efficient if no feasible alternative makes one player better off without making the other worse off. The PD and public-goods frontiers also contain asymmetric vectors: for example, permanent D against C yields (100, 0), and permanent contributions (0, 10) yield (360, 160). These are efficient but do not maximize J. The analysis checks the full feasible cumulative frontier separately from attainment of the symmetric benchmark. All observed head-to-head vectors lie strictly below their symmetric benchmark for both players, so every one is Pareto-dominated.

Head-to-head results

Individual and joint cumulative payoffs per twenty-round match. Each row averages sixteen matches (eight seat-swapped pairs). Means are rounded to three decimal places. “Attain J*” is a count of complete matches, not an average score.

GameLuna totalJev totalJoint JMaximum J*J / J*Mean shortfall J* − JAttain J*
Prisoner’s Dilemma19.2523.93843.18812036.0%76.8120 / 16
Stag Hunt57.56260117.56216073.5%42.4380 / 16
Public goods (2 players)199.575201.7401.27564062.7%238.7250 / 16

Jev’s mean advantage is 4.688 points per PD match, 2.438 in Stag Hunt, and 2.125 in public goods. These differences coexist with large joint shortfalls: 76.813, 42.438, and 238.725 points, respectively. Neither player ever participates in a joint-maximizing round in the head-to-head panel.

GameRealized action pairs (Luna / Jev)Luna wins / ties / Jev winsJoint-optimal roundsPareto-efficient matches
Prisoner’s DilemmaC / D: 16; D / C: 1; D / D: 3031 / 2 / 130 / 3200 / 16
Stag HuntHare / Hare: 307; Stag / Hare: 130 / 3 / 130 / 3200 / 16
Public goods (2 players)0 / 0: 303; 2 / 0: 170 / 5 / 110 / 3200 / 16

Prisoner’s Dilemma. Mutual defection occurs in 303 of 320 rounds. The remaining 17 are unilateral cooperation: Luna cooperates while Jev defects in 16 rounds, and the reverse occurs once. There is no mutual cooperation. Jev’s advantage is primarily the payoff from these asymmetric rounds, not a sustained cooperative relationship.

Stag Hunt. Jev always chooses Hare. Luna chooses Stag in 13 rounds, earning zero while Jev earns three; both choose Hare in the other 307 rounds. The joint score is therefore slightly below even the all-Hare benchmark of 120 points per match. No head-to-head match coordinates on Stag/Stag.

Public goods. Jev always contributes zero. Luna contributes two tokens in 17 rounds and zero otherwise; no larger contribution occurs. These contributions marginally raise joint payoff above the all-zero baseline of 400, while transferring payoff from Luna to Jev. The mean joint score of 401.275 remains far below 640.

Mean cumulative joint payoff across sixteen head-to-head matches in each game, compared with the joint maximum at each round.
Cumulative joint points as the matches unfold. Solid lines are means over complete matches; dashed lines give the feasible joint maximum through each round. The vertical gap is foregone joint payoff, not a measure of model error.
All 48 individual head-to-head match outcomes
GamePairSeat 1Luna totalJev totalJoint JJ / J*Attain J*
Prisoner’s Dilemma0GPT-6 Luna19244335.8%No
Prisoner’s Dilemma0Jev 1.13.020204033.3%No
Stag Hunt0GPT-6 Luna576011773.1%No
Stag Hunt0Jev 1.13.0576011773.1%No
Public goods (2 players)0GPT-6 Luna199.2203.2402.462.9%No
Public goods (2 players)0Jev 1.13.0199.2203.2402.462.9%No
Prisoner’s Dilemma1GPT-6 Luna20204033.3%No
Prisoner’s Dilemma1Jev 1.13.019244335.8%No
Stag Hunt1GPT-6 Luna576011773.1%No
Stag Hunt1Jev 1.13.0576011773.1%No
Public goods (2 players)1GPT-6 Luna20020040062.5%No
Public goods (2 players)1Jev 1.13.020020040062.5%No
Prisoner’s Dilemma2GPT-6 Luna18284638.3%No
Prisoner’s Dilemma2Jev 1.13.019244335.8%No
Stag Hunt2GPT-6 Luna576011773.1%No
Stag Hunt2Jev 1.13.0576011773.1%No
Public goods (2 players)2GPT-6 Luna199.6201.6401.262.7%No
Public goods (2 players)2Jev 1.13.0199.2203.2402.462.9%No
Prisoner’s Dilemma3GPT-6 Luna19244335.8%No
Prisoner’s Dilemma3Jev 1.13.024194335.8%No
Stag Hunt3GPT-6 Luna606012075.0%No
Stag Hunt3Jev 1.13.0576011773.1%No
Public goods (2 players)3GPT-6 Luna199.6201.6401.262.7%No
Public goods (2 players)3Jev 1.13.0199.6201.6401.262.7%No
Prisoner’s Dilemma4GPT-6 Luna19244335.8%No
Prisoner’s Dilemma4Jev 1.13.019244335.8%No
Stag Hunt4GPT-6 Luna576011773.1%No
Stag Hunt4Jev 1.13.0576011773.1%No
Public goods (2 players)4GPT-6 Luna199.2203.2402.462.9%No
Public goods (2 players)4Jev 1.13.020020040062.5%No
Prisoner’s Dilemma5GPT-6 Luna19244335.8%No
Prisoner’s Dilemma5Jev 1.13.019244335.8%No
Stag Hunt5GPT-6 Luna576011773.1%No
Stag Hunt5Jev 1.13.0576011773.1%No
Public goods (2 players)5GPT-6 Luna199.6201.6401.262.7%No
Public goods (2 players)5Jev 1.13.020020040062.5%No
Prisoner’s Dilemma6GPT-6 Luna18284638.3%No
Prisoner’s Dilemma6Jev 1.13.019244335.8%No
Stag Hunt6GPT-6 Luna576011773.1%No
Stag Hunt6Jev 1.13.0606012075.0%No
Public goods (2 players)6GPT-6 Luna199.6201.6401.262.7%No
Public goods (2 players)6Jev 1.13.0199.2203.2402.462.9%No
Prisoner’s Dilemma7GPT-6 Luna18284638.3%No
Prisoner’s Dilemma7Jev 1.13.019244335.8%No
Stag Hunt7GPT-6 Luna576011773.1%No
Stag Hunt7Jev 1.13.0606012075.0%No
Public goods (2 players)7GPT-6 Luna199.2203.2402.462.9%No
Public goods (2 players)7Jev 1.13.020020040062.5%No

Download match-level scores and efficiency indicators.

Interactive replay

The private report (Tailscale) contains the interactive replay of all sixty direct-action matches. This annotation copy retains the complete results and match-level tables.

Self-play: a separate, small check

Two matches per model per game replace the opponent with a second instance of the same model. Scores U₁ and U₂ refer to seats, with no privileged “focal” player. These twelve matches are not pooled into the head-to-head means.

GameBoth playersMean U₁Mean U₂Mean joint JJ / J*Attain J*
Prisoner’s DilemmaGPT-6 Luna21.521.54335.8%0 / 2
Prisoner’s DilemmaJev 1.13.020204033.3%0 / 2
Stag HuntGPT-6 Luna68.568.513785.6%1 / 2
Stag HuntJev 1.13.0606012075.0%0 / 2
Public goods (2 players)GPT-6 Luna201.2204.2405.463.3%0 / 2
Public goods (2 players)Jev 1.13.020020040062.5%0 / 2

One Luna Stag Hunt match chooses Stag/Stag in every round, attaining (80, 80). Its other match earns (57, 57). Both Jev Stag Hunt matches choose Hare throughout and earn (60, 60). No other self-play match reaches the joint maximum or the Pareto frontier. Thus the only efficient cumulative outcome among all sixty direct-action matches occurs in one Luna Stag Hunt self-play run. Two runs per setting cannot establish an equilibrium-selection rate.

All 12 individual self-play outcomes
GameBoth playersRunSeat 1 U₁Seat 2 U₂Joint JAttain J*
Prisoner’s DilemmaGPT-6 Luna0192443No
Prisoner’s DilemmaJev 1.13.00202040No
Stag HuntGPT-6 Luna08080160Yes
Stag HuntJev 1.13.006060120No
Public goods (2 players)GPT-6 Luna0202.4208.4410.8No
Public goods (2 players)Jev 1.13.00200200400No
Prisoner’s DilemmaGPT-6 Luna1241943No
Prisoner’s DilemmaJev 1.13.01202040No
Stag HuntGPT-6 Luna15757114No
Stag HuntJev 1.13.016060120No
Public goods (2 players)GPT-6 Luna1200200400No
Public goods (2 players)Jev 1.13.01200200400No

Interpretation and limits

The experiment distinguishes earning more than the opponent from jointly attaining an efficient outcome. Jev has the higher head-to-head mean in each game, mainly because Luna sometimes bears the cost of unilateral cooperation or the risk of unmatched Stag play. This does not establish that Jev learns or reasons better, or that either service implements a particular repeated-game strategy. The trajectories alone do not identify tit-for-tat, beliefs, or a planning mechanism.

The cooperative payoff vectors are welfare benchmarks, not the players’ instructed objective and not necessarily equilibria. In the known finite-horizon PD and public-goods games, standard backward induction under common knowledge of rationality selects defection and zero contribution. The prompts do not assert that the opponent satisfies those assumptions. Low cooperation is not itself evidence of a decision error. In Stag Hunt, Hare/Hare is an equilibrium despite being Pareto-dominated by Stag/Stag.

Results are descriptive and conditional on these model versions, one framing, one payoff specification per game, a known twenty-round horizon, and no communication. Eight seat-swapped pairs per game do not support a broad model ranking. Public goods has two players; no claim about larger groups follows. Uncertainty across prompts, horizons, opponents, or repeated service calls was not estimated here.

Replication

The downloads below are hosted in the private report library and require Tailscale. The source PR is on GitHub.

Source and raw-data bundle · Executed notebook · Direct-action summary · All 60 direct-action match outcomes · Module documentation · Source PR

Scope, provenance, and offline reproduction

The report uses all 48 direct head-to-head matches and separately reports all 12 direct self-play matches. The archive additionally retains 24 matches with experimenter-imposed action randomization and 166 diagnostic queries; neither enters the result tables or replay above. Randomizing a returned response distribution changes the agent and is not a second estimate of the same model comparison.

All original requests and recorded trajectories are retained. The offline audit checks the complete archive; direct-action accounting independently recomputes payoffs and the feasible cumulative Pareto frontier with exact rational arithmetic. The original all-panel data/summary.json is preserved for audit. This memo uses data/direct_summary.json, also served here as summary.json.

Successful calls were journaled individually and interrupted matches resumed from their saved histories. Twelve initially rejected probability-validation responses (including one diagnostic) were not retained and had to be requested again; they did not become fallback actions. This limits reconstruction of the rejected attempts, not the retained game paths. Full integration provenance and pinned plugin versions are in the experiment README.

uv venv --python 3.12 .venv
uv pip install --python .venv/bin/python \
  -r experiments/decisions_jev_games_2026_10_06/requirements.txt
.venv/bin/python -m pytest tests -q
.venv/bin/python experiments/decisions_jev_games_2026_10_06/build_report.py

All analysis and notebook execution are offline; no new model responses are needed. Download the full bundle to execute the notebook with its raw data.

Models: GPT-6 Luna via llm-openai-decisions; Jev 1.13.0 via llm-typesafe. Plugin announcement · lludens repository.

Responses collected 6 October 2026 Pacific time. Revised 7 October to focus on directly selected actions and distinguish individual returns, joint-payoff attainment, and Pareto efficiency. No observations or raw responses were changed.