Skip to content

W1/W3 equilibrium follow-up, 2026-10-12

Omar authorized the verifier repair, per-seed reporting, independent response evaluation, Commons budget study and exact small-instance calibration after reviewing the paper's joint-satisfaction and equilibrium evidence.

The original exports and archive remain read-only. New workers use a pinned detached code checkout and write under exports/optimisations/equilibrium-followup-20261012/. Each seed has a distinct directory; this campaign can safely fan out seeds even though the ordinary notebook runner uses a shared cumulative manifest. Runtime package versions and the source revision should be captured with the deployment.

Declared workload

Study Conditions Seeds Workers
Exact Classic Pursuit calibration PPO and MLP-IQL; 20k original steps; 50k/200k response budgets 0–4 10
Coins deviations Preserved IPPO and IQL-CER profiles; both response families, native warm start and three fresh restarts 0–4 10
Territory deviations Preserved IPPO profile, which jointly satisfies 4/5 existing seeds; same response protocol 0–4 5
Commons budget study IPPO, IPPO-CER, IQL, IQL-CER × 200k, 500k, 1M steps 0–4 60

The Slurm controller submits at most eight active/pending campaign workers and uses a total-user limit of 181 in this deployment, counting individual Slurm array tasks. The launcher default is 185; reserving four slots here avoids racing the CER study's four-worker submissions against that shared target. It checks every 15 minutes. Workers request one CPU core and 8 GB for calibration or 16 GB for spatial tasks, with a seven-day cap. It neither cancels nor changes other jobs. It stops on a failure and records the exact worker requiring diagnosis instead of blindly resubmitting. Dry-run every submission before starting it.

python scripts/launch_equilibrium_campaign.py \
  --checkout /path/to/pinned/checkout --inputs /path/to/original/exports \
  --output /path/to/exports/optimisations/equilibrium-followup-20261012

# After reviewing the preview:
python scripts/launch_equilibrium_campaign.py \
  --checkout /path/to/pinned/checkout --inputs /path/to/original/exports \
  --output /path/to/exports/optimisations/equilibrium-followup-20261012 \
  --submit --watch

The first workers are seed-zero exact calibrations and four 200k Commons controls. The controller waits for every selected pilot to complete before submitting any remaining seeds or larger budgets. PBS supports only exact calibration, with a 72-hour cap and CPU-only default routing. To split the study without duplication, use --scheduler pbs --studies calibration on CX3 and --studies deviations commons on DoC, with separate campaign roots and --max-active 4 on CX3. Merge their completed results with summarize_equilibrium_campaign.py --campaign DOC_ROOT --additional-campaign CX3_ROOT; copy both campaign roots to a common local filesystem first. The merger finds locally copied results by worker ID, preserves remote path provenance and rejects overlapping worker IDs. Every worker records its interpreter and package versions in runtime.json.

The Commons study starts fresh from the archived learners' configurations, using canonical monitor numbering, objective rewards and no NashConv auto-resume. It retains the original discount factors, architectures, exploration/annealing rules and thresholds. Changing total budget stretches the configured exploration/annealing timeline; this is an explicit part of testing a larger default budget, not a pure extension with an identical schedule. Steps are rounded up to a complete trainer batch. These controls reproduce the scientific task and settings, not the legacy hash numbering or the original heuristic auto-resume decisions.

Each Commons seed receives 1,000 fresh satisfaction episodes after training. The comparison family includes all 60 seed/budget profiles. Satisfaction counts and all four per-agent probabilities remain primary; a high value for one harvester does not make a profile jointly successful.

scripts/summarize_equilibrium_campaign.py aggregates only completed seeds, records missing workers, and separates formal certificates, empirical search passes, and profitable-deviation witnesses. The controller generates the summary after all 85 workers finish. Source revisions, logs and job IDs are in the remote campaign.json; update this note with concrete submission and result details after deployment.

Existing-data audit

The baseline JSON and Markdown in results/equilibrium-baseline-2026-10-12.* were computed from preserved primary/confirmatory report counts. Every task's error budget is corrected across all tested seed profiles, including handcrafted profiles. Among objective-trained profiles, joint satisfaction counts are 3/40, 3/40, 1/40 and 5/40 for the four Pursuit tasks; 28/40 for Coins; 46/50 for Stag Hunt; 0/40 for Commons; and 6/40 for Territory. Formal joint rational-synthesis certificates are 46/50 for Stag Hunt and unavailable elsewhere through this payoff-ceiling test. Including handcrafted profiles gives 55/75 Stag Hunt certificates in this initial baseline snapshot. The subsequently published three Nash-Q replacements retain 46/50 objective certificates and raise the inclusive count to 57/75, with selection correction over 90 examined Stag Hunt profiles. The snapshot remains preserved as history; the paper's updated figures use the completed replacement reports.

The statistical method differs from the paper's older Hoeffding tables, so some near-boundary satisfaction counts increase. The new main table explicitly identifies exact-binomial certification; the old Hoeffding tables remain for comparison. A missing equilibrium certificate does not establish instability.

The Nash-Q rerun agent independently owns three Stag Hunt replacements with gamma=1, zero learning-rate floor and a clock. Refresh the generator with those completed replacement reports before claiming the baseline table is the final updated campaign result. The CER-study agent owns learner corrections and matched reward-machine baselines; their source and exports are isolated from this campaign.

Pinned deployment and continuation

The initial worker revision was 300a7eb0fdcfed2de7cf5aa7568df6187b07abd4. It included the default legacy CER updates from 0d750a4, the verifier repair, public response clock, exact calibration and corrected replacement reporting. Both detached checkouts are clean and use existing virtual environments read-only; no shared remote main pull or dependency synchronization was performed.

Host Checkout Campaign root Controller PID Initial workers
DoC CPU /vol/gpudata/oja24-pltlf/worktrees/equilibrium-612145f /vol/gpudata/oja24-pltlf/exports/optimisations/equilibrium-followup-20261012 3443484 75 spatial workers; waiting below total-user cap 181
CX3 /rds/general/user/oja24/home/Projects/pltlf-equilibrium-300a7eb /rds/general/user/oja24/home/bucket/pltlf-equilibrium-followup-20261012 stopped (was 2277720) Only pilots 4319922.pbs-7 (PPO) and 4319923.pbs-7 (IQL) continue

The DoC controllers and all unsubmitted spatial workers now use source 612145f, which includes the exact-oracle correction, finite verifier guards and numerical PPO repair. The scientific plan and original empty ledger are preserved; no existing worker was cancelled. Admission uses the shared lock. The concurrent refinement study and local adaptive continuations are recorded in Pursuit rational-profile refinement.

Both CX3 pilots started on v1_small72, one CPU and 8000 MB each, after normal PBS routing. Runtime records and original-profile checkpoints were created successfully. The exact scores produced by revision 300a7eb are superseded: its oracle absorbed the first goal/collision, whereas the actual environment takes one further action and consumes its monitor labels. The previous preliminary IQL utilities and gain have been withdrawn. Its model-free training and actual-environment sampled counts remain usable.

Controller PID 2277720 was stopped after this discovery; the two already running pilots were retained because their training and sampled response evaluation use the actual environment. The other eight calibration workers were not submitted. Re-evaluate each completed pilot with scripts/recalibrate_pursuit.py --source PRESERVED_SEED_DIR --output NEW_DIR. That command preserves the old result and candidates, records its source hash, and replaces only model-based exact values in a new output. Do not resume the remaining calibration workers using the superseded oracle. The correction does not affect the payoff-ceiling certificate, Stag Hunt results, or paper revision 1fcb74f, which contains no preliminary calibration number.

Both environments have JAX/JAXlib 0.10.2, Flax 0.12.8, Optax 0.2.8, NumPy 2.4.6 and SciPy 1.17.1. CX3's Torch 2.13.0/PettingZoo 1.26.1 differ from DoC's Torch 2.14.1/PettingZoo 1.27.0; workers record full versions. Calibration uses the repository's Pursuit dynamics and JAX learners. The end-to-end pilot, not metadata alone, checks compatibility.

On the workstation, .cache/equilibrium-campaign-watch.py reads both ledgers every 15 minutes for at most 21 days. PID, log and notification state use the same filename prefix. It queues thread 01a12d62-3b87-7b13-b1ff-653b6f5f99f9 with the locally verified codex queue --thread ... --message ... command on completion, failure, controller stall or repeated connection failure. Later user cancellation or changed constraints take precedence. Detach this watcher using subprocess.Popen(..., start_new_session=True); a local shell background process was terminated when its execution tool exited. Remote controllers use nohup and survive SSH disconnection. Continuation depends on the workstation and Codex session remaining available; remote workers/controllers are independent of this watcher.

The full-instance Pursuit audit now provides exact evidence for 18 finite archived IPPO/IPPO-CER profiles, all above maximum unilateral gain 0.05, and explicitly invalidates two further archived checkpoints containing NaNs. The 500k native gamma-one adaptive continuations also remain unstable. A separate known-model Capture 2 reference diagnoses that both original thresholds cannot hold in an unrestricted 0.05-NE on that instance, while the designated intruder threshold is feasible. See the companion refinement note for scope, numerical provenance and the continued fixed-budget study. These observations neither invalidate other tasks' payoff-ceiling certificates nor make the model-based reference a model-free learner result.

The reporting/proof paper revision is 1fcb74f. The Nash-Q agent owns the Stag Hunt replacements and figure refresh. When these 85 workers finish, copy both campaign roots locally, merge them using the summarizer, and update the paper with complete seeds and the exact/search distinction. Compare all four Commons agents and certified joint satisfaction against runtime before changing default budgets. Finite response searches provide conditional evidence, not an unrestricted NE upper bound.

Completed reduced IQL pilot and corrected search gaps

CX3 job 4319923.pbs-7 completed its reduced Classic MLP-IQL seed-zero pilot without a runtime error. Its response protocol took about 18,982 seconds. The preserved 20k original training and response checkpoints, paired counts, logs and runtime were copied to the local refinement campaign's preserved_cx3/calibration/iql/seed_0. Their remote originals remain read-only. scripts/recalibrate_pursuit.py wrote corrected exact scores into the separate corrected_calibration/iql/seed_0; the source result hash is d2881f2d46c949a489ebbfcdd9bd69a4fd2786b2ce8548821fc4ba31e7565f1c. The superseded evaluator revision remains recorded as 300a7eb.

The reduced instance has 81 position pairs (nine walkable cells), H=12 and slips (0.1,0.1), with the actual delayed-final-action stopping rule. The corrected original utilities are [0.070185056,0.900223159], true response utilities [0.341505254,0.961752132], and gains [0.271320197,0.061528973]. It is not a 0.05-NE.

Nominal BR budget Agent True gain Selected learned gain Exact search gap
50k Guard 0.271320 0.241556 0.029764
50k Intruder 0.061529 0.046126 0.015403
200k Guard 0.271320 0.263547 0.007773
200k Intruder 0.061529 0.060120 0.001409

PPO and MLP-IQL each supplied three fresh restarts, plus one native warm start; selection used 512 validation episodes and 1,000 disjoint paired held-out rollouts per selected response. The selected 50k intruder response was PPO; the other three selected candidates were MLP-IQL. At 50k, the intruder's true gain exceeds epsilon while its learned response gain does not: stronger search matters even near the cutoff. At 200k both learned gains approach the exact responses on this one small-instance seed. This neither bounds full-instance search gaps nor certifies a profile with a small found gain.

Held-out guard improvements were 0.247 at 50k and 0.268 at 200k, with corrected intervals [0.176321,0.313008] and [0.210550,0.320938]. Both independently witness profitable deviations; these sampled counts were unaffected by the old exact-oracle bug. The compact corrected result and response protocol are in results/reduced-classic-iql-calibration-2026-10-12.json. The PPO pilot and paused remaining eight calibration workers retain their previous status until that pilot's artifacts have also been inspected.

Both calibration pilots corrected; remaining eight resumed

The preserved PPO job 4319922.pbs-7 also completed, with about 23,949 seconds in its response protocol. Its original and 28 saved response checkpoints have finite parameters. Separate corrected evaluation at source 5a26fad gives utilities [0.029364895,0.912168396], response values [0.145966460,0.925093305], gains [0.116601566,0.012924909], and maximum gain 0.116602. Its preserved raw result SHA256 is 38b42a06f28ca91bf374a93e8c13f76b89523749c37c8e1df498364a7d86f2f7. See results/reduced-classic-ippo-calibration-2026-10-12.json.

Nominal BR budget Agent True gain Selected learned gain Exact search gap
50k Guard 0.116602 0.092157 0.024445
50k Intruder 0.012925 0.000000 0.012925
200k Guard 0.116602 0.097461 0.019140
200k Intruder 0.012925 -0.005429 0.012925

Gap uses true gain minus the selected gain clipped below at zero, retaining the original policy as an available alternative. The PPO guard's held-out 50k gain 0.102 has interval [0.044567,0.157433], which does not establish improvement above epsilon; at 200k, gain 0.114 and interval [0.055448,0.170325] do establish such a deviation. The sampled 200k intruder gain is +0.005, with interval [-0.030985,0.040869], whereas its selected candidate's exact gain is negative.

A diagnostic scored all 28 saved candidates per original profile, preserving the actual validation choice. For the PPO intruder at 200k, the best tried candidate has true gain 0.011965: the remaining optimisation gap is only 0.000960, while the validation selection loses 0.011965 relative to the available original-policy floor. This is selection noise, rather than evidence that every trained response was poor. IQL's analogous 200k intruder selection loss is only 0.000026, with optimisation gap 0.001383. The guard selection loss is zero for both learners at both budgets; their remaining gap is attributable to the tried candidate pool. Per-candidate diagnostics are in results/reduced-classic-{ippo,iql}-candidate-pool-2026-10-12.json. The analysis script and its SHA256 are preserved under the local refinement campaign's completed_pilot_audits/calibration_candidate_pool. These model-based scores do not reselect a policy, change the held-out counts, or turn a small found gain into a true exploitability bound.

After inspecting both pilot runtimes, finite parameters, corrected exact values and search gaps, the originally declared eight remaining seeds resumed on CX3. A new detached pinned checkout is /rds/general/user/oja24/home/Projects/pltlf-equilibrium-5a26fad, linked read-only to the existing venv. No shared checkout pull or dependency synchronization occurred. A small Git bundle transferred the published revision into a separate worktree. The new campaign root is /rds/general/user/oja24/home/bucket/pltlf-equilibrium-calibration-v2-20261012. Its ledger explicitly reuses the two preserved seed-zero training pilots with corrected exact scores, records their old training sources and result hashes, and schedules only seeds 1–4 for each family. Symlinks expose the original profile/response artifacts read-only; the old root and stopped controller remain untouched. The family still contains ten seed profiles, not twelve.

The two fresh seed-one workers are 4321438.pbs-7 (PPO) and 4321439.pbs-7 (IQL), both running on v1_small72 with one CPU and 8000 MB. The controller retains 72-hour requests, original 20k/50k/200k nominal budgets, three fresh restarts per response family, 512 validation episodes and 1000 paired held-out episodes. It submits at most two workers, with total-user PBS cap four. Controller PID 3313864 is detached and uses controller-5a26fad.{pid,log}; both workers survived startup and the ledger reports two reused completions and two active jobs. Training source changes between preserved seed-zero pilots and later seeds are disclosed; this is response-search calibration on different fixed profiles, not a causal comparison of trainer revisions.

The local watcher now has PID 1608020 and includes this new calibration ledger. It retains the previous notification ledger and queues each newly completed seed, failure, stalled ledger, or repeated probe error at its 15-minute cadence. The old raw-pilot completion notifications remain deduplicated. CPU-cluster campaigns remain pinned at 612145f and retain their admission settings; Classic's adaptive fixed 1M segment is still running, and Capture's completed arm has not been extended. The separate newly authorized fresh gamma-one study belongs to the Nash-Q agent and does not replace these cohorts.

Startup confirmation: both new seed-one workers wrote runtime metadata with source 5a26fad and remained running after admission. The updated watcher's first sweep read the new ledger successfully, with two preserved completions and no failed jobs. Required changed-path selection reports documentation/data only and no pytest selection; strict documentation build and the updated paper compile passed. All new result JSONs parse, and each candidate-pool optimisation gap plus selection loss equals the preserved selected-response search gap. No learner or verifier implementation was changed for this reporting update.

The Classic adaptive warm pilot subsequently completed as well; both local fixed-budget arms are now processed. Neither meets epsilon 0.05, even though both final intruders meet their original probability thresholds. Independent 512-episode deployment checks agree with the corrected exact values for both final checkpoints. Their original policies were selected under the predeclared criterion. See the companion refinement note and committed complete-result records; do not rerun or extend these processed local arms in response to an already queued completion notification.

For the final combined campaign summary, use the DoC 75-worker spatial root plus the new pltlf-equilibrium-calibration-v2-20261012 ten-profile root. Do not additionally pass the stopped old CX3 root: its two raw pilot results have superseded exact scores and are already represented, with corrected scores and provenance, in the new root. The merger rejects duplicate worker IDs; original raw artifacts remain a provenance source rather than a second scientific cohort.

Current spatial deployment supersedes the empty combined controller

Omar subsequently requested stronger response evaluation on CPU-cluster jobs. The old 75-worker spatial root had no admitted jobs; its controller was superseded with separate fifteen-response and sixty-Commons roots so response checking no longer waits for Commons training pilots. Worker budgets and seed cohorts are preserved. Response selection increases prospectively to 4096 episodes, retaining 8192 disjoint held-out episodes; exact calibration keeps its original 512/1000 protocol. See the stronger response protocol and concrete deployment.

The current final merge uses DoC equilibrium-commons-20261012 (60), DoC equilibrium-responses-20261012 (15), and CX3 pltlf-equilibrium-calibration-v2-20261012 (10). The old empty DoC 75-worker root and the old raw CX3 pilot root are preserved history, not additional cohorts. Do not pass either to the merger. Response/Commons allowances total the previously allocated eight workers; the forty-two-worker Pursuit cohort and other agents' pinned studies remain unchanged.