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.