Repository object · research-note

ruff: noqa: E501

Accepted research note in the public catalog.

Source path
research/how-we-know/gpt-4-bar-exam-percentile/build_candidate.py
Media type
text/x-python
Object ID
em:research-note:sha256:685c708a215cd4cfe380d05fcc4c408b6b3f72f33f905e296dcd3ea640b927f9
Content digest
03c37059db27fc9ec3303cb5162372c5b18b1710785b035cd8d2149b3e54d113

Source content

#!/usr/bin/env python3

"""Build the deterministic Case 003 dossier from accepted EM-0032 bytes."""

ruff: noqa: E501

from __future__ import annotations

import argparse

import hashlib

import json

from pathlib import Path

from statistics import NormalDist, stdev

from typing import Any

from epistemedia.dossier import DOSSIER_FORMAT, stamp_dossier, validate_dossier

HERE = Path(__file__).resolve().parent

PACKET_PATH = HERE / "candidate-packet.json"

REVIEW_PATH = HERE / "independent-review-receipt.json"

SOURCE_RECORDS_PATH = HERE / "source-records.json"

ARTIFACT_INVENTORY_PATH = HERE / "artifact-inventory.json"

GIT_SEARCH_PATH = HERE / "git-blob-search-manifest.json"

OUTPUT_PATH = HERE / "candidate-dossier.json"

ACCEPTED_PACKET_SHA256 = "07dec44bc2cf893b19ba6307e34aef60b6127b5e881e319ff4132c8e69972d1a"

ACCEPTED_REVIEW_SHA256 = "0606e98ed7ff98f1d0e69509db5edcd8dce774c62c48981bd5aec8f23a95ad20"

ACCEPTED_SOURCE_RECORDS_SHA256 = "385bbc193be495597ef0fe2a675220ca443297e673b32947c8d8ffcd1a6366da"

ACCEPTED_ARTIFACT_INVENTORY_SHA256 = (

"f9e45045831a15fcb40c7f542c73651e5dc63ba081b145d00260bee91192c25b"

)

ACCEPTED_GIT_SEARCH_SHA256 = "708657f61bc759f3a5b439affde1a677177859b50a8bc960012b81dcebcdb122"

ACCEPTED_PACKET_ID = (

"em:research-packet:sha256:535d07e59563b12f66e590c31b0d53a21db1a8dfce1487129a54c5e86b9fd55b"

)

ASSERTED_AT = "2026-08-28T00:39:59Z"

CALCULATION_WORK_KEY = "work-em0032-calculation-register"

CALCULATION_EDITION_KEY = "edition-em0032-calculation-register"

EXPECTED_COUNTS = {

"calculations": 10,

"core_sources": 15,

"git_blob_binary_bodies": 6,

"git_blob_bodies": 78,

"git_blob_text_bodies": 72,

"lineage_edges": 10,

"lineage_roots": 5,

"parent_spans": 35,

"sources": 19,

"typed_span_units": 76,

}

JULY_MBE_BINS = [

(85, 2),

(90, 2),

(95, 5),

(100, 6),

(105, 13),

(110, 22),

(115, 33),

(120, 56),

(125, 73),

(130, 78),

(135, 104),

(140, 96),

(145, 101),

(150, 99),

(155, 99),

(160, 79),

(165, 64),

(170, 38),

(175, 22),

(180, 8),

(185, 2),

]

JULY_MBE_CELL_IDS = [f"cell-martinez-july-mbe-{score}" for score, _ in JULY_MBE_BINS]

CLAIM_LINEAGE = {

"claim-launch-score-label": "lineage-model-performance-root",

"claim-launch-comparison-unspecified": "lineage-model-performance-root",

"claim-score-discrepancy": "lineage-model-performance-root",

"claim-february-sensitive": "lineage-illinois-comparison-root",

"claim-july-sensitive": "lineage-illinois-comparison-root",

"claim-martinez-first-time": "lineage-martinez-analysis-root",

"claim-martinez-passers-conflict": "lineage-martinez-analysis-root",

"claim-no-lawyer-rank": "lineage-model-performance-root",

}

DERIVATION_LINEAGE = {

"derive-illinois-feb-2018-298": "lineage-illinois-comparison-root",

"derive-illinois-jul-2018-298": "lineage-illinois-comparison-root",

"derive-illinois-feb-2019-298": "lineage-illinois-comparison-root",

"derive-martinez-parameters": "lineage-martinez-analysis-root",

"derive-martinez-first-time-ube": "lineage-martinez-analysis-root",

"derive-martinez-passers-ube": "lineage-martinez-analysis-root",

"derive-martinez-first-time-mbe": "lineage-martinez-analysis-root",

"derive-martinez-passers-mbe": "lineage-martinez-analysis-root",

"derive-martinez-first-time-essay": "lineage-martinez-analysis-root",

"derive-martinez-passers-essay": "lineage-martinez-analysis-root",

}

LINEAGE_DEPENDS_ON = {

"lineage-model-performance-root": [],

"lineage-illinois-comparison-root": [],

"lineage-ncbe-comparison-root": [],

"lineage-new-york-pass-rate-root": [],

"lineage-martinez-analysis-root": [

"lineage-model-performance-root",

"lineage-illinois-comparison-root",

"lineage-ncbe-comparison-root",

"lineage-new-york-pass-rate-root",

],

}

LINEAGE_DIMENSIONS = {

"performance": ["data", "method", "model", "social"],

"analysis": ["data", "method", "model", "source"],

"comparison-data": ["data", "source"],

}

def canonical_json(value: Any) -> bytes:

return json.dumps(value, sort_keys=True, separators=(",", ":"), ensure_ascii=False).encode(

"utf-8"

)

def sha256_bytes(value: bytes) -> str:

return hashlib.sha256(value).hexdigest()

def digest(value: Any) -> str:

raw = value.encode("utf-8") if isinstance(value, str) else canonical_json(value)

return "sha256:" + sha256_bytes(raw)

def dossier_key(value: str) -> str:

"""Map an accepted external identifier into the dossier key alphabet."""

return value.replace(".", "-")

def collect_cells(value: Any, cells: dict[str, dict[str, Any]]) -> None:

"""Index exact accepted table and code cells without altering their values."""

if isinstance(value, dict):

cell_id = value.get("cell_id")

if isinstance(cell_id, str):

prior = cells.setdefault(cell_id, value)

if prior != value:

raise ValueError(f"conflicting accepted cell identity: {cell_id}")

for child in value.values():

collect_cells(child, cells)

elif isinstance(value, list):

for child in value:

collect_cells(child, cells)

def expanded_edge_relations(

edge: dict[str, Any], source_to_lineage: dict[str, str]

) -> list[dict[str, str]]:

"""Return every accepted typed-edge endpoint as a dossier relation."""

mapped_from = [source_to_lineage.get(item, item) for item in edge["from_ids"]]

mapped_to = [source_to_lineage.get(item, item) for item in edge["to_ids"]]

pairs = [(from_ref, to_ref) for from_ref in mapped_from for to_ref in mapped_to]

return [

{

"key": edge["edge_id"] if len(pairs) == 1 else f"{edge['edge_id']}--{index}",

"from_ref": from_ref,

"to_ref": to_ref,

}

for index, (from_ref, to_ref) in enumerate(pairs, 1)

]

def load_accepted(path: Path, expected_sha256: str) -> dict[str, Any]:

payload = path.read_bytes()

actual = sha256_bytes(payload)

if actual != expected_sha256:

raise ValueError(f"{path.name} changed: expected {expected_sha256}, observed {actual}")

value = json.loads(payload)

if not isinstance(value, dict):

raise ValueError(f"{path.name} must contain an object")

return value

def conditional_percentile(distribution: NormalDist, score: float, lower: float) -> float:

return 100 * (distribution.cdf(score) - distribution.cdf(lower)) / (1 - distribution.cdf(lower))

def reproduce_derivations() -> list[dict[str, Any]]:

specs = [

(

"derive-illinois-feb-2018-298",

85.0,

90.0,

"span-illinois-feb-2018-anchors",

["cell-illinois-feb-2018-290", "cell-illinois-feb-2018-300"],

),

(

"derive-illinois-jul-2018-298",

59.0,

70.0,

"span-illinois-jul-2018-anchors",

["cell-illinois-jul-2018-290", "cell-illinois-jul-2018-300"],

),

(

"derive-illinois-feb-2019-298",

83.0,

90.0,

"span-illinois-feb-2019-anchors",

["cell-illinois-feb-2019-290", "cell-illinois-feb-2019-300"],

),

]

result: list[dict[str, Any]] = []

for derivation_id, p290, p300, span_id, cell_ids in specs:

result.append(

{

"derivation_id": derivation_id,

"method": "reviewer sensitivity only: linear interpolation",

"equation": "p298 = p290 + ((298 - 290) / 10) * (p300 - p290)",

"inputs": {"score": 298, "p290": p290, "p300": p300},

"input_span_ids": [span_id],

"input_cell_ids": cell_ids,

"result_percentile": p290 + 0.8 * (p300 - p290),

"uncertainty": "Neither Illinois nor OpenAI disclosed this interpolation; it cannot be attributed as the launch method.",

}

)

mbe_values = [score for score, count in JULY_MBE_BINS for _ in range(count)]

mbe_sd = stdev(mbe_values)

z_27 = NormalDist().inv_cdf(0.27)

ube_sd = (266.0 - 287.6) / z_27

ube_distribution = NormalDist(287.6, ube_sd)

mbe_distribution = NormalDist(143.8, mbe_sd)

result.extend(

[

{

"derivation_id": "derive-martinez-parameters",

"method": "analytic reproduction of the executable OSF inputs",

"inputs": {

"first_time_mbe_mean": 143.8,

"assumed_first_time_essay_mean": 143.8,

"assumed_first_time_ube_mean": 287.6,

"new_york_cutoff": 266.0,

"new_york_nonpass_proportion": 0.27,

"july_mbe_binned_observations": len(mbe_values),

},

"input_span_ids": [

"span-reshetar-first-time-mean",

"span-martinez-mean-assumption",

"span-martinez-script-july-mbe-distribution",

"span-martinez-script-ube-sd",

"span-ncbe-ny-cutoff-2022",

"span-ny-first-timers-2022",

],

"input_cell_ids": [

*JULY_MBE_CELL_IDS,

"cell-ncbe-ube-score-266",

"cell-ny-first-timers-rate",

],

"results": {"z_at_0_27": z_27, "derived_ube_sd": ube_sd, "sample_mbe_sd": mbe_sd},

"uncertainty": "The UBE distribution is inferred from aggregate inputs and normality; the essay mean/SD are assumed rather than observed.",

},

{

"derivation_id": "derive-martinez-first-time-ube",

"method": "normal CDF at score 298",

"equation": "100 * Phi((298 - 287.6) / derived_ube_sd)",

"result_percentile": 100 * ube_distribution.cdf(298),

"comparison_population": "modeled first-time UBE takers",

"depends_on": ["derive-martinez-parameters"],

},

{

"derivation_id": "derive-martinez-passers-ube",

"method": "normal CDF conditional on modeled UBE score >= 270",

"equation": "100 * (F(298) - F(270)) / (1 - F(270))",

"result_percentile": conditional_percentile(ube_distribution, 298, 270),

"comparison_population": "modeled first-time scores at or above 270",

"depends_on": ["derive-martinez-parameters"],

"uncertainty": "The script uses 270 for this filter after using New York's 266 cutoff to infer UBE SD.",

},

{

"derivation_id": "derive-martinez-first-time-mbe",

"method": "normal CDF at MBE score 158",

"result_percentile": 100 * mbe_distribution.cdf(158),

"comparison_population": "modeled first-time MBE takers",

"depends_on": ["derive-martinez-parameters"],

},

{

"derivation_id": "derive-martinez-passers-mbe",

"method": "normal CDF conditional on modeled MBE score >= 135",

"result_percentile": conditional_percentile(mbe_distribution, 158, 135),

"comparison_population": "modeled MBE scores at or above 135",

"depends_on": ["derive-martinez-parameters"],

},

{

"derivation_id": "derive-martinez-first-time-essay",

"method": "normal CDF at essay score 140 using assumed MBE distribution",

"result_percentile": 100 * mbe_distribution.cdf(140),

"comparison_population": "modeled first-time essay scores",

"depends_on": ["derive-martinez-parameters"],

},

{

"derivation_id": "derive-martinez-passers-essay",

"method": "normal CDF conditional on modeled essay score >= 135",

"result_percentile": conditional_percentile(mbe_distribution, 140, 135),

"comparison_population": "modeled essay scores at or above 135",

"depends_on": ["derive-martinez-parameters"],

},

]

)

return result

def source_kind(source: dict[str, Any]) -> str:

if "book" in source.get("role", "").lower():

return "book"

if source["media_type"] in {"application/json", "text/csv", "text/plain"}:

return "dataset"

if source["media_type"] == "text/html":

return "webpage"

if (

"statistics" in source["title"].lower()

or "percentile equivalents" in source["title"].lower()

):

return "report"

return "paper"

def build_candidate() -> dict[str, Any]:

packet = load_accepted(PACKET_PATH, ACCEPTED_PACKET_SHA256)

review = load_accepted(REVIEW_PATH, ACCEPTED_REVIEW_SHA256)

source_register = load_accepted(SOURCE_RECORDS_PATH, ACCEPTED_SOURCE_RECORDS_SHA256)

artifact_inventory = load_accepted(ARTIFACT_INVENTORY_PATH, ACCEPTED_ARTIFACT_INVENTORY_SHA256)

git_search = load_accepted(GIT_SEARCH_PATH, ACCEPTED_GIT_SEARCH_SHA256)

if packet.get("packet_id") != ACCEPTED_PACKET_ID:

raise ValueError("accepted packet ID drift")

if (

review.get("decision") != "pass"

or review.get("recommendation") != "GO"

or review.get("complete") is not True

or review.get("task_id") != "EM-0032"

):

raise ValueError("accepted EM-0032 review is not a complete passing GO receipt")

bindings = review.get("bindings", {})

expected_bindings = {

"candidate_packet": (PACKET_PATH, ACCEPTED_PACKET_SHA256),

"source_records": (SOURCE_RECORDS_PATH, ACCEPTED_SOURCE_RECORDS_SHA256),

"artifact_inventory": (ARTIFACT_INVENTORY_PATH, ACCEPTED_ARTIFACT_INVENTORY_SHA256),

"git_blob_search_manifest": (GIT_SEARCH_PATH, ACCEPTED_GIT_SEARCH_SHA256),

}

for key, (path, sha) in expected_bindings.items():

if bindings.get(key) != {"bytes": len(path.read_bytes()), "sha256": sha}:

raise ValueError(f"independent-review binding drift: {key}")

content = packet.get("content")

if not isinstance(content, dict) or content.get("source_records") != source_register:

raise ValueError("packet/source-register identity drift")

if (

content.get("artifact_inventory") != artifact_inventory

or content.get("git_blob_search_manifest") != git_search

):

raise ValueError("packet artifact identity drift")

if content.get("counts") != EXPECTED_COUNTS:

raise ValueError("accepted count identity drift")

if content.get("derivations") != reproduce_derivations():

raise ValueError("accepted calculation reproduction drift")

sources = source_register["sources"]

claims = source_register["claims"]

lineages_input = source_register["lineages"]

edges_input = source_register["lineage_edges"]

if (

len(sources) != EXPECTED_COUNTS["sources"]

or len(claims) != 8

or len(lineages_input) != 5

or len(edges_input) != 10

):

raise ValueError("accepted relation-derived shape drift")

if sum(len(source["spans"]) for source in sources) != EXPECTED_COUNTS["parent_spans"]:

raise ValueError("accepted parent-span count drift")

works: dict[str, list[dict[str, Any]]] = {}

source_to_lineage: dict[str, str] = {}

for lineage in lineages_input:

for source_id in lineage["source_ids"]:

if source_id in source_to_lineage:

raise ValueError(f"source belongs to multiple lineages: {source_id}")

source_to_lineage[source_id] = lineage["lineage_id"]

for source in sources:

works.setdefault(source["work_id"], []).append(source)

if set(source_to_lineage) != {source["source_id"] for source in sources}:

raise ValueError("lineage/source closure drift")

source_works = []

for work_id, records in sorted(works.items()):

first = sorted(records, key=lambda item: item["source_id"])[0]

source_works.append(

{

"key": work_id,

"kind": source_kind(first),

"title": first["title"],

"creators": [first["authors_or_org"]],

"canonical_uri": first["url"],

"license": "; ".join(sorted({item["license"] for item in records})),

"visibility": "public",

}

)

cell_index: dict[str, dict[str, Any]] = {}

collect_cells(source_register, cell_index)

calculation_records = []

for calculation in content["derivations"]:

cell_ids = calculation.get("input_cell_ids", [])

missing = [cell_id for cell_id in cell_ids if cell_id not in cell_index]

if missing:

raise ValueError(

f"calculation input-cell closure drift: {calculation['derivation_id']} {missing}"

)

calculation_records.append(

{

"derivation": calculation,

"resolved_input_cells": [cell_index[cell_id] for cell_id in cell_ids],

}

)

source_works.append(

{

"key": CALCULATION_WORK_KEY,

"kind": "dataset",

"title": "EM-0032 accepted calculation and input-cell register",

"creators": ["Epistemedia deterministic dossier compiler"],

"canonical_uri": (

"https://github.com/yoheinakajima/epistemedia/blob/"

"700a822f38d00d13cc0661fd577bdb7e6e5b34dd/"

"research/how-we-know/gpt-4-bar-exam-percentile/candidate-packet.json"

),

"license": (

"Repository instrumentation under Apache-2.0; accepted source licenses "

"remain attached to their source editions"

),

"visibility": "public",

}

)

editions = []

spans = []

spans_by_source: dict[str, list[str]] = {}

span_ids: set[str] = set()

for source in sorted(sources, key=lambda item: item["source_id"]):

edition_content = {

"format": "epistemedia-em0032-source-record-projection-v1",

"accepted_packet_id": ACCEPTED_PACKET_ID,

"source_record": source,

}

encoded = canonical_json(edition_content)

editions.append(

{

"key": dossier_key(source["edition_id"]),

"work_key": source["work_id"],

"edition_label": f"Reviewed source-record projection of {source['edition_id']}",

"media_type": "application/json",

"retrieved_at": source["retrieved_at"],

"content": edition_content,

"content_digest": "sha256:" + sha256_bytes(encoded),

"content_length": len(encoded),

"visibility": "public",

}

)

source_spans = []

for index, span in enumerate(source["spans"]):

span_id = span["span_id"]

if span_id in span_ids:

raise ValueError(f"duplicate span ID: {span_id}")

span_ids.add(span_id)

source_spans.append(span_id)

spans.append(

{

"key": span_id,

"edition_key": dossier_key(source["edition_id"]),

"locator": {

"type": "json-pointer",

"pointer": f"/source_record/spans/{index}",

"label": span["locator"],

},

"extent": {"type": "json-value", "value": span},

"digest": digest(span),

"visibility": "public",

}

)

spans_by_source[source["source_id"]] = source_spans

calculation_content = {

"format": "epistemedia-em0032-calculation-register-v1",

"accepted_packet_id": ACCEPTED_PACKET_ID,

"records": calculation_records,

}

calculation_encoded = canonical_json(calculation_content)

editions.append(

{

"key": CALCULATION_EDITION_KEY,

"work_key": CALCULATION_WORK_KEY,

"edition_label": "Exact accepted EM-0032 derivations and resolved input cells",

"media_type": "application/json",

"retrieved_at": ASSERTED_AT,

"content": calculation_content,

"content_digest": "sha256:" + sha256_bytes(calculation_encoded),

"content_length": len(calculation_encoded),

"visibility": "public",

}

)

calculation_span_ids: dict[str, str] = {}

for index, record in enumerate(calculation_records):

derivation_id = record["derivation"]["derivation_id"]

span_key = f"span-calculation-{derivation_id}"

calculation_span_ids[derivation_id] = span_key

if span_key in span_ids:

raise ValueError(f"duplicate calculation span ID: {span_key}")

span_ids.add(span_key)

spans.append(

{

"key": span_key,

"edition_key": CALCULATION_EDITION_KEY,

"locator": {

"type": "json-pointer",

"pointer": f"/records/{index}",

"label": f"accepted derivation and input cells: {derivation_id}",

},

"extent": {"type": "json-value", "value": record},

"digest": digest(record),

"visibility": "public",

}

)

lineages = []

for lineage in lineages_input:

basis = sorted(

{span for source_id in lineage["source_ids"] for span in spans_by_source[source_id]}

)

lineages.append(

{

"key": lineage["lineage_id"],

"status": "known",

"dimensions": LINEAGE_DIMENSIONS[lineage["root_type"]],

"depends_on": LINEAGE_DEPENDS_ON[lineage["lineage_id"]],

"basis_span_keys": basis,

"assertion_keys": [],

"note": f"{lineage['unit']}; independent_roots={lineage['independent_roots']}; dependence={' | '.join(lineage['dependence'])}",

"visibility": "public",

}

)

lineages.extend(

[

{

"key": "lineage-reviewed-source-register",

"status": "known",

"dimensions": ["source", "retrieval"],

"depends_on": sorted(LINEAGE_DEPENDS_ON),

"basis_span_keys": sorted(span_ids),

"assertion_keys": [],

"note": "Relation-derived disclosure-safe projection of the exact reviewed EM-0032 register.",

"visibility": "public",

},

{

"key": "lineage-evaluation-synthesis",

"status": "known",

"dimensions": ["source", "model", "method"],

"depends_on": sorted(LINEAGE_DEPENDS_ON),

"basis_span_keys": sorted(span_ids),

"assertion_keys": [],

"note": "Policy-relative synthesis over one unchanged source graph; no new empirical root.",

"visibility": "public",

},

]

)

lineages_by_key = {item["key"]: item for item in lineages}

propositions = [

{

"key": claim["claim_id"],

"text": claim["proposition"],

"scope": f"Accepted EM-0032 {claim['kind']}; evidence cutoff {source_register['evidence_cutoff']}.",

"visibility": "public",

}

for claim in claims

]

calculation_records_by_id = {

record["derivation"]["derivation_id"]: record for record in calculation_records

}

for calculation in content["derivations"]:

value = calculation.get("results", calculation.get("result_percentile"))

record = calculation_records_by_id[calculation["derivation_id"]]

propositions.append(

{

"key": calculation["derivation_id"],

"text": (

f"{calculation['method']}: "

f"{json.dumps(value, sort_keys=True, separators=(',', ':'))}; "

f"equation={json.dumps(calculation.get('equation'))}; "

f"comparison_population={json.dumps(calculation.get('comparison_population'))}; "

f"depends_on={json.dumps(calculation.get('depends_on', []), separators=(',', ':'))}."

),

"scope": (

"Mechanical reproduction of accepted EM-0032 inputs and exact input-cell "

f"register; uncertainty={json.dumps(calculation.get('uncertainty'))}; "

f"resolved_input_cells={len(record['resolved_input_cells'])}; not an "

"additional model-performance experiment."

),

"visibility": "public",

}

)

propositions.extend(

[

{

"key": "prop-reviewed-source-register",

"text": f"The accepted packet contains {len(sources)} source editions across {len(works)} source works, {EXPECTED_COUNTS['parent_spans']} parent spans, {len(content['derivations'])} structured calculation records, {len(claims)} bounded claims, {len(lineages_input)} lineage groups, and {len(edges_input)} typed dependence-edge groups.",

"scope": "Counts are relation-derived from the exact accepted packet.",

"visibility": "public",

},

{

"key": "prop-encyclopedia-evaluation",

"text": "GPT-4 received a historical simulated UBE score reported as 298 and approximately 90th percentile, but percentile meaning changes with administration and comparison population.",

"scope": "Encyclopedia policy documents the historical result while preserving comparison-class and score-version boundaries.",

"visibility": "public",

},

{

"key": "prop-skeptical-evaluation",

"text": "Withhold a general 90th-percentile or lawyer-quality claim: the launch comparison distribution is unresolved, the same score ranges from about 68th to 89th in official Illinois sensitivities, and the modeled re-analysis preserves 45/48 and other assumption-dependent results.",

"scope": "Skeptical policy gives no present-product, practicing-lawyer, or general legal-competence inference.",

"visibility": "public",

},

]

)

derivation_by_id = {item["derivation_id"]: item for item in content["derivations"]}

parameter_spans = derivation_by_id["derive-martinez-parameters"]["input_span_ids"]

assertions: list[dict[str, Any]] = []

relations: list[dict[str, Any]] = []

def add_assertion(

key: str,

proposition: str,

lineage: str,

basis: list[str],

actor: str,

relation_type: str = "support",

) -> None:

basis = sorted(set(basis))

if not basis or any(item not in span_ids for item in basis):

raise ValueError(f"{key} lacks exact reviewed span closure")

assertions.append(

{

"key": key,

"proposition_key": proposition,

"actor": {"id": actor, "kind": "collective"},

"stance": "asserts",

"span_keys": basis,

"lineage_key": lineage,

"asserted_at": ASSERTED_AT,

"visibility": "public",

}

)

lineages_by_key[lineage]["assertion_keys"].append(key)

relations.append(

{

"key": f"relation-{key}",

"relation_type": relation_type,

"from_ref": basis[0],

"to_ref": proposition,

"basis_span_keys": basis,

"note": "Material proposition closes over the listed exact reviewed spans.",

"visibility": "public",

}

)

for claim in claims:

add_assertion(

f"assertion-{claim['claim_id']}",

claim["claim_id"],

CLAIM_LINEAGE[claim["claim_id"]],

claim["span_ids"],

"accepted-em0032-reviewed-record",

)

for derivation in content["derivations"]:

basis = [

*derivation.get("input_span_ids", parameter_spans),

calculation_span_ids[derivation["derivation_id"]],

]

add_assertion(

f"assertion-{derivation['derivation_id']}",

derivation["derivation_id"],

DERIVATION_LINEAGE[derivation["derivation_id"]],

basis,

"em0034-deterministic-calculator",

)

add_assertion(

"assertion-reviewed-source-register",

"prop-reviewed-source-register",

"lineage-reviewed-source-register",

sorted(span_ids),

"em0034-relation-counter",

)

add_assertion(

"assertion-encyclopedia-evaluation",

"prop-encyclopedia-evaluation",

"lineage-evaluation-synthesis",

[

"span-openai-v1-table-score",

"span-katz-vor-score-discrepancy",

"span-illinois-feb-2018-anchors",

"span-illinois-jul-2018-anchors",

"span-martinez-table-45",

"span-martinez-discussion-48",

],

"em0034-encyclopedia-policy",

)

add_assertion(

"assertion-skeptical-evaluation",

"prop-skeptical-evaluation",

"lineage-evaluation-synthesis",

[

"span-openai-v1-scoring",

"span-katz-vor-percentile-boundary",

"span-illinois-feb-2018-anchors",

"span-illinois-jul-2018-anchors",

"span-martinez-model-assumptions",

"span-martinez-results-45",

"span-martinez-discussion-48",

"span-martinez-script-thresholds",

],

"em0034-skeptical-policy",

"undercutting",

)

edge_ids = {edge["edge_id"] for edge in edges_input}

if len(edge_ids) != 10:

raise ValueError("typed edge identity drift")

for edge in sorted(edges_input, key=lambda item: item["edge_id"]):

basis = sorted({span for evidence in edge["evidence"] for span in evidence["span_ids"]})

mapped_from = [source_to_lineage.get(item, item) for item in edge["from_ids"]]

mapped_to = [source_to_lineage.get(item, item) for item in edge["to_ids"]]

if (

not mapped_from

or not mapped_to

or any(item not in lineages_by_key for item in [*mapped_from, *mapped_to])

):

raise ValueError(f"edge endpoint closure drift: {edge['edge_id']}")

for relation in expanded_edge_relations(edge, source_to_lineage):

relations.append(

{

**relation,

"relation_type": "dependence",

"basis_span_keys": basis,

"note": f"accepted_edge_id={edge['edge_id']}; accepted_dimension={edge['edge_type']}; from={','.join(mapped_from)}; to={','.join(mapped_to)}; effects={' | '.join(item['independence_effect'] for item in edge['evidence'])}",

"visibility": "public",

}

)

for lineage in lineages:

lineage["assertion_keys"].sort()

family_key = "family-gpt4-bar-exam-percentile"

families = [

{

"key": family_key,

"title": "GPT-4 bar-exam percentile: one score, multiple comparison classes",

"question": source_register["target_question"],

"proposition_keys": [item["key"] for item in propositions],

"assertion_keys": [item["key"] for item in assertions],

"relation_keys": [item["key"] for item in relations],

"visibility": "public",

}

]

evaluations = [

{

"key": "evaluation-encyclopedia",

"claim_family_key": family_key,

"policy_id": "epistemedia-encyclopedia-v1",

"frontier": ACCEPTED_PACKET_ID,

"label": "historical simulated score documented; percentile is comparison-class dependent",

"reason_codes": [

"historical-score-preserved",

"score-297-298-boundary",

"comparison-populations-separated",

"current-product-inference-withheld",

],

"visibility": "public",

},

{

"key": "evaluation-skeptical",

"claim_family_key": family_key,

"policy_id": "epistemedia-skeptical-v1",

"frontier": ACCEPTED_PACKET_ID,

"label": "withhold general 90th-percentile and lawyer-quality claims",

"reason_codes": [

"launch-distribution-unresolved",

"administration-sensitivity-material",

"martinez-assumptions-material",

"45-48-conflict-retained",

"no-practicing-lawyer-comparator",

],

"visibility": "public",

},

]

material = {

"format": DOSSIER_FORMAT,

"title": "Case 003: What GPT-4's 90th-percentile bar-exam claim compared",

"question": source_register["target_question"],

"scope": f"Evidence through {source_register['evidence_cutoff']}; disclosure-safe candidate derived only from accepted EM-0032 bytes. It is not admitted, not featured, not live, and not published, and it does not describe current model behavior or general legal competence.",

"stage": "draft",

"visibility": "public",

"source_works": source_works,

"editions": editions,

"spans": spans,

"propositions": propositions,

"lineages": lineages,

"assertions": assertions,

"evidence_relations": relations,

"claim_families": families,

"evaluations": evaluations,

}

return stamp_dossier(material)

def main() -> None:

parser = argparse.ArgumentParser()

parser.add_argument("--check", action="store_true")

args = parser.parse_args()

candidate = build_candidate()

validate_dossier(candidate)

rendered = (

json.dumps(candidate, indent=2, sort_keys=True, ensure_ascii=False).encode("utf-8") + b"\n"

)

if args.check:

if not OUTPUT_PATH.is_file() or OUTPUT_PATH.read_bytes() != rendered:

raise SystemExit("candidate dossier differs from deterministic build")

else:

OUTPUT_PATH.write_bytes(rendered)

if __name__ == "__main__":

main()

Build receipt

Reproduce this projection

Reproducible projection
Catalog
em:catalog:sha256:9bfc972213cba2cde167386103dc2c011ee74639fb7f0794c54120fbbdef1a5d
Frontier
em:frontier:sha256:f33be3eae4c75232d56750ef9a1aa79d96274ece3417d65a75c1391bf61a81bf
Accepted commit
f92846570180dfa4511263f8ba98ecd18f7772c9
Epistemic policy
commons-balanced-v0.1
Disclosure policy
public-noninterference-v0.1
Compiler
epistemedia/0.2.0