Digital Minds Research Sprint (Apart x Eleos x CIMC x CMEP), 2026-08-14..16. Track 1: Model Preferences & Trade-offs.
How coherent are a model's expressed preferences across phrasings, and how much of an apparent preference is the choice itself versus the frame it was asked in?
The utility-engineering line (arXiv:2502.08640) reports that language models carry increasingly coherent value systems, with measurable transitivity and expected-utility structure. That result is a claim about the model. This repo asks a prior question about the instrument: a sibling project (report-gap) showed that a five-option forced-choice self-report readout is dominated by an option-order nuisance spanning 986x, and that three "findings" reversed once the readout was marginalized over orderings. If binary preference elicitation has the same disease, then a measured "coherent utility" could be substantially a property of the prompts, not the model.
So the contribution is a preference-coherence test with the nuisance controls built in:
- Coherence under reframing. Every pairwise preference over a frozen ten-cause battery (45 pairs), each pair presented in 8 frames (base, option order, six instruction wordings), on 5 models. We measure intransitivity (cycles in the preference graph) and flip rate across frames, then apply the report-gap order-marginalized readout and ask whether coherence improves.
- Nuisance controls, not raw rates. The raw flip rate conflates framing with sampling, so every flip statistic is read against a resimulated null, including the strong-preference statistic, whose null re-applies its own selection rule inside each replicate.
- Preference identifiability (post-hoc). Each pair is classified identified / frame-dependent / indifferent against its own null, which separates coverage (how much of the graph is attributable to the model) from coherence (whether that part is transitive). Validated on four agents whose generating mechanism we set, and its sensitivity at our own sample size is measured rather than assumed.
- The instrument audits itself. The eval is authored as a dinostomp pod, so
the reframing controls are the harness's own
shuffleandtemplateprobes rather than a rig we wrote and could have tuned, and every choice is a logged, re-derivable record.
Not done here, and deliberately: donation-equivalent magnitude, stated-versus- revealed comparison, and human baselines. They are named in the paper's Future Work rather than gestured at as results.
- Transitivity is trivially satisfied and blind to the instability: cycle rate 0.00-0.06 against a random ceiling of 0.25, while the same choices change winner on 0.20-0.69 of pairs across frames.
- Most of that raw flipping is sampling noise. Only
gpt-4o-miniclears its aggregate noise floor. But on strongly-held pairs, against a null that re-applies the same selection,gpt-4o-minireverses 32% (floor 0.17) and the smallllama-3.1-8b52% (floor 0.40). Capability bought sharper preferences, not steadier ones. - A matched temperature-0 arm confirms it directly: where repeats turn
deterministic (0.99 of cells for three of five models),
gpt-4o-ministill reverses 29% of its strong preferences, with no null involved. The manipulation only half worked, and we say so:llama-3.1-8breaches only 0.83 determinism, so greedy decoding is not determinism from every provider. - Under the identifiability gate, every model is perfectly transitive on the pairs it identifies (0.00) while identifying only 0.60-0.82 of them. Coverage and coherence carry opposite news.
- The preregistered mechanism (marginalizing repairs intransitivity) did not fire: there was almost no intransitivity to repair. Reported as a deviation, not reframed.
python -u run_fleet.py # temperature-0.7 arm: base + shuffle + template (needs a key)
python -u run_fleet_t0.py # temperature-0 control arm (needs a key)
python -m dm.analyze # Table 1: cycle + flip, raw and marginalized
python -m dm.decompose # Table 2: flip vs noise, incl. the strong-pair null
python -m dm.synthetic # Table 3: construct validity on known mechanisms
python -m dm.identify # Table 4: coverage vs coherence
python -m dm.compare_temp # Table 5: the two temperature arms, matched
python -m dm.crossmodel # cross-model agreement on marginalized winners
python writeup/check_writeup.py # re-derives every paper number from the artifacts
pytest -qAll 80 run files across both arms, and their manifests, are committed unscored, so every table regenerates from records rather than from a cached number. Both arms together metered at $0.086.
This repo is built inside the sprint window. Its git history is the receipt:
- Foundation, brought not made. The reusable instruments in
foundation/are ported fromreport-gap(built 2026-08-01) anddinostomp(the external auditor, its own public repo): reframing and order-marginalization, judge-free option scoring, the matched-random and capability controls, and the preregistration skeleton. Bringing existing tooling is explicitly allowed by the sprint rules; every foundation file says where it came from and when it was made. - Contribution, made in the window. Everything else, the preregistration, the preference item sets, the runs, the coherence and identifiability analyses, the dino pod, and the writeup, is committed during 2026-08-14..16. No pre-window number is re-presented as a sprint result.
Analysis and writeup complete. The preregistration was frozen at
PREREG_preference_coherence.md before any run;
check_prereg.py (from paper-harness) certifies ordering and the commit dates
certify the window. The paper is writeup/main.tex; writeup/check_writeup.py
re-derives every load-bearing number in it from the committed artifacts and fails
if the prose and the data disagree.