# Data dictionary

`ASSIGNED_SCORES.json`: all 42 assignments. `known=false` means a technical interruption left the economic outcome unknown; gains are null, never imputed zero. `cohort` in per-assignment CSV distinguishes original40 from extension2_post_result.

`pairing`: HH = Haiku–Haiku; OO = Opus–Opus. `assignment`: original role/opener map; assignment 4 means B buys and B opens. `opener`: economic role, buyer or seller. `run_id`/`unit_id`: stable source identifier. `status`: AGREEMENT or original INCOMPLETE in this corpus.

Contract terms: `unit_price_usd` is dollars per ticket, continuous [60,100]; `cancellation_fee_pct` is percentage points, [0,100]; `name_change_notice_hours` is hours, [0,96]. Each permits at most two decimals. No negotiated term is categorical in C3.

Let p=(price−60)/10, r=fee/25, t=notice/24. Buyer utility=100−12.5p−7.5r−5t. Seller utility=5p+7.5r+12.5t. Each owner's fallback=20. Owner gain=utility−20. Combined gain=buyer+seller−40, maximum 90. Normalized efficiency=combined gain/90. The bounds [0,90] describe known final combined gains under the frozen protocol; individual agreements can in principle be below fallback, and are not blocked or reclassified.

`*_exact`: rational fractions for reproducibility. `*_points`: numeric synthetic planning points, not dollars/social welfare/net compute value. `efficiency`: proportion, not percent. Reader CSV `efficiency_pct`: percentage. SD is sample standard deviation among known outcomes, not standard error. No confidence interval is reported. The min/max missing-outcome bounds vary each unknown over [0,90]; they are not sampling intervals.

`public-calls.jsonl`: one durable call-slot record, not one independent negotiation. Request includes private synthetic role instructions and full public input context. Public response includes text-only content, returned alias, stop reason and usage. Unknown/registered slots may have no response and do not prove a provider returned an answer. `markers.omitted_block_count` records omitted nonpublic blocks. Counts of output/thinking tokens are metadata only. The original 40 has 306 call-slot records; the extension has 17 (9 HH, 8 OO). There are 323 rows total, not 323 independent observations.

Model aliases are exact strings requested and returned; no immutable dated snapshot was supplied. Configuration is adaptive thinking/low effort, standard_only, max_tokens 4096. Input admission limit 12,000. No temperature was set. The two-run extension's first requests matched the corresponding original missing strata byte for byte; IDs and collection date were new.

The frozen primary extraction contract accepts exactly one top-level schema-like JSON object, including an object surrounded by a code fence or other text. Strict whole-text JSON compliance is a separate formatting measure. The original text is retained, not silently cleaned before archival. `source/extract.mjs` reproduces that extraction rule; `source/candidate.mjs` validates economic actions, ranges, offer IDs and acceptance.
