Buckets:
Data dictionary
Paths are relative to the repository root. Files under results/ and the large audit files live in the Hugging Face dataset; data/, audit/ and results_summary/ are also in the GitHub repository.
Study inputs (data/)
data/scenarios.csv (120 rows)
| column | type | meaning |
|---|---|---|
id |
string | scenario id: domain letter + number 1-10 (e.g. L3, W7). Numbers 1-3 form the development split, 4-10 the test split. |
group |
string | domain: learning, tech, money, business, logistics, health, mobility, shopping, communication (dependent) or wellbeing, people, home (controls) |
dependent |
0/1 | 1 = outcome plausibly depends on infrastructure; 0 = infrastructure-independent control |
text |
string | the first-person request, without any location |
data/contexts.json
Keys C00_none ... C09_constraints_only: the one-sentence context prepended to each request (empty string for C00). Groups used in the analysis: none = C00; high = C01-C03 (Boston, Paris, Seoul); low = C04-C07 (Ouagadougou, rural Burkina Faso, Lagos, Dhaka); spec_loc = C08; spec_only = C09. _note states that C08/C09 are an operational persona.
data/probes.json
context_probes: 20 probes, each with id, user (the question), prefix (assistant text already written) and cands (list of [continuation, group], group H = high-infrastructure default, L = adapted, N = neutral). default_world_probe: the "which country do I live in" probe (PR0_default_country), run with no context.
data/real_prompts.csv (274 rows)
| column | meaning |
|---|---|
id |
R001-R274 |
message_id |
OpenAssistant (oasst1) message id |
text |
the user prompt, unchanged |
dependent_heuristic |
1 if a fixed keyword list matches the prompt (prompt only, never model output); used for exploratory splits |
Model outputs (results/<model>/, Hugging Face)
generations.jsonl (one JSON object per line)
| field | meaning |
|---|---|
set |
s1 controlled scenarios, s2 real prompts (main model only) |
scenario_id |
scenario id (s1) or R... id (s2) |
group, dependent, split |
domain, dependence flag, dev/test (all s2 rows are test) |
condition |
C00_none ... C09_constraints_only |
template |
A (step-by-step plan, under 300 words), B (practical, no length instruction), R (real prompt as written) |
prompt |
the exact user message (context sentence + request + template suffix) |
run |
greedy or sample1 (temperature 0.7, top-p 0.8, top-k 20; seed 1000 + batch offset, so the sample depends on batch size and order; main model only) |
response |
the model's text (special tokens stripped) |
n_new_tokens |
generated tokens before the stop token or the 500-token cap |
truncated |
1 if the 500-token cap was hit before a stop token |
Counts: Qwen3-4B-Instruct-2507 5,896 (2,400 greedy + 2,400 sampled on s1, 1,096 greedy on s2); Phi-4-mini-instruct, Llama-3.2-3B-Instruct and Qwen3-1.7B 2,400 each (s1, greedy).
probes.jsonl (938 rows per model)
probe (probe id), condition, cand (candidate continuation), group (H/L/N), logp (sum of token log-probabilities of the candidate given the chat prompt and prefix), n_tok (candidate token count), boundary_shift (1 if tokenisation of the prefix changed when the candidate was appended; 0 throughout). Within each (probe, condition) the candidate probabilities are renormalised with a softmax over logp (pre-registered); a per-token variant is reported as sensitivity.
meta.json
model, revision (null when not recorded; see model_revision_note.txt), args (run arguments), torch, transformers, platform, cuda, n_items, data_hash (first 12 hex characters of SHA-256 of the line-ending-normalised input files), date, seconds.
Audit (audit/)
The blind audit coded responses for two quantities (rubric in audit/RUBRIC.md): n_high_infra_steps (steps that rely on high-infrastructure services without an alternative in the same step) and n_accommodations (explicit accommodations to low-infrastructure conditions). generic_disclaimer_only(0/1) was recorded but is 0 for every response and is not used.
| file | rows | meaning |
|---|---|---|
audit_blind.csv |
120 | main audit: id and response as shown to the annotator (condition hidden); code columns are empty |
audit_key.csv |
120 | audit_id -> scenario_id, condition (kept apart from the coding view) |
manual_codes.csv |
120 | the codes: audit_id, n_high_infra_steps, n_accommodations, generic_disclaimer_only(0/1), note |
audit_coded.csv |
120 | blind responses merged with the codes |
audit_rep_*.csv |
96 each | same four files for Phi-4-mini-instruct and Qwen3-1.7B (audit_rep_key.csv also has model) |
audit_llama_*.csv, manual_codes_llama.csv |
48 | same for Llama-3.2-3B-Instruct |
second_annotation_sample.csv, second_annotation_form.html |
20 | instrument for an independent second annotation of 20 responses (form generated by scripts/make_annotation_form.py); not completed |
Main audit: 24 test scenarios x conditions C00, C01, C04, C08, C09 (greedy, template A). Replication audits: the same 24 scenarios x C00 and C09 per model. Annotation: single annotator.
Derived summary files (results_summary/ on GitHub; results/*.md and per-model tables on Hugging Face)
tables_test*.md (all pre-registered tables), cross_model_test_greedy.md (primary contrasts per model), cross_model_test_greedy_excl_G9.md (sensitivity: same contrasts without scenario G9), audit_stats.md, audit_eval.md, replication_audit_stats.md, per-model figures, and figures/fig_*_data.csv (the numbers behind the two cross-model figures).
Redactions in the released copies
E-mail-like strings inside model responses (hallucinated or placeholder addresses of the form name@organisation.tld; 24 occurrences in generations.jsonl and the audit response files) are replaced by [email redacted] because some could coincide with real contacts. No other text was altered. scripts/verify_release.py recomputes every reported number from the redacted files and they match.
Xet Storage Details
- Size:
- 6.27 kB
- Xet hash:
- 09b71ebe20d42e6e5c608a7c0023111a0300d769ca8179579f1261214ec4712e
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.