Repository object · test

Test Case Library

Accepted test in the public catalog.

Source path
tests/test_case_library.py
Media type
text/x-python
Object ID
em:test:sha256:f3481fb9c61a3b94d1cfdc432c70a3534f6f451506ab1e2f34de708bc486963b
Content digest
b5cf4bdfb4dac0a6b4ae71f8a3bfc8716a1ef07de2c81ae68bc29009b96b475e

Source content

from __future__ import annotations

import hashlib

import json

import re

import shutil

from pathlib import Path

from urllib.parse import urlparse

import pytest

from epistemedia.case_library import (

AgentLineageDossier,

BoundedPropositionDossier,

load_featured_library,

)

from epistemedia.cli import main

from epistemedia.core import build_public

from epistemedia.featured import FeaturedDossierError

from epistemedia.server import Gateway, Request

ROOT = Path(__file__).resolve().parents[1]

CASE_001 = "corrections-and-familiarity-backfire"

CASE_002 = "agent-citation-lineage"

CASE_003 = "gpt-4-bar-exam-percentile"

CASE_004 = "mehrabian-7-38-55"

CASE_SLUGS = [CASE_001, CASE_002, CASE_003, CASE_004]

CASE_002_DOSSIER_ID = (

"em:dossier:sha256:cbd7a14096a956f642f5c76046d3b49ed648fbe6bf24144c992404a01415af82"

)

CASE_002_COUNTS = {

"captured_reports": 8,

"citation_occurrences": 48,

"cited_url_strings": 30,

"resolving_url_roots": 27,

"source_work_roots": 11,

"examined_edition_roots": 14,

"accepted_exact_span_roots": 72,

"candidate_warrant_roots": 7,

"independently_confirmed_warrant_roots": 0,

"pending_warrant_groups": 4,

"independently_rejected_claim_occurrences": 9,

"inaccessible_citations": 3,

"unresolved_citations": 34,

"unsupported_or_force_raised_claims": 20,

}

BOUNDED_CASES = {

CASE_003: {

"dossier_id": (

"em:dossier:sha256:babe89ba3bda594a8d9f2db86a5a2987f284437a069b940d19b6928856d936d1"

),

"dossier_sha256": "32c4457b3823237b2f988a26d51b2f6222af8060e662993524aff1c1a5d79e5d",

"dossier_bytes": 224_792,

"receipt_sha256": "f35f8c093778ad1cdeafc57746575f1a82d12fe6e6fbf0d1d4a546e3c5296e1e",

"receipt_bytes": 13_568,

"counts": {

"historical_model_runs": 1,

"administration_sensitivities": 3,

"independent_evidence_roots": 7,

"unresolved_boundaries": 3,

},

},

CASE_004: {

"dossier_id": (

"em:dossier:sha256:57e80c9a44c478c1c81ba7adedc1bafdef43ff57b4f2984015dcbef84ba66e87"

),

"dossier_sha256": "44e7bf407091d7665d4f1ab2aabc285255364e790e2d17520913f9ba9c57b418",

"dossier_bytes": 176_885,

"receipt_sha256": "0bb9184660deb3ef83addbcdb7be61d49f234026d6d484747b51628a4f8f087f",

"receipt_bytes": 71_345,

"counts": {

"original_experiments": 2,

"participant_data_roots": 5,

"zero_credit_propagation": 3,

"unresolved_derivations": 1,

},

},

}

def case002() -> AgentLineageDossier:

library = load_featured_library(ROOT, required=True)

assert library is not None

selected = library.get(CASE_002)

assert isinstance(selected, AgentLineageDossier)

return selected

def bounded_case(slug: str) -> BoundedPropositionDossier:

library = load_featured_library(ROOT, required=True)

assert library is not None

selected = library.get(slug)

assert isinstance(selected, BoundedPropositionDossier)

return selected

def copy_library_inputs(target: Path) -> None:

for manifest_source in sorted((ROOT / "catalog" / "dossiers").glob("*.json")):

manifest = json.loads(manifest_source.read_text())

relative_manifest = manifest_source.relative_to(ROOT)

for relative in (

relative_manifest,

Path(manifest["dossier_path"]),

Path(manifest["review_receipt_path"]),

):

destination = target / relative

destination.parent.mkdir(parents=True, exist_ok=True)

shutil.copy2(ROOT / relative, destination)

def test_library_discovers_four_cases_deterministically_and_preserves_lead() -> None:

library = load_featured_library(ROOT, required=True)

assert library is not None

assert [item.manifest["number"] for item in library.dossiers] == [

"001",

"002",

"003",

"004",

]

assert [item.slug for item in library.dossiers] == CASE_SLUGS

assert library.lead.slug == CASE_001

assert library.get(CASE_002).dossier["dossier_id"] == CASE_002_DOSSIER_ID

@pytest.mark.parametrize("slug", [CASE_003, CASE_004])

def test_bounded_cases_bind_exact_inputs_counts_and_review(slug: str) -> None:

selected = bounded_case(slug)

expected = BOUNDED_CASES[slug]

dossier_path = ROOT / selected.manifest["dossier_path"]

receipt_path = ROOT / selected.manifest["review_receipt_path"]

assert selected.dossier["dossier_id"] == expected["dossier_id"]

assert hashlib.sha256(dossier_path.read_bytes()).hexdigest() == expected["dossier_sha256"]

assert dossier_path.stat().st_size == expected["dossier_bytes"]

assert hashlib.sha256(receipt_path.read_bytes()).hexdigest() == expected["receipt_sha256"]

assert receipt_path.stat().st_size == expected["receipt_bytes"]

assert selected.receipt["decision"] == "pass"

assert selected.derived_counts() == expected["counts"]

assert {key: len(value) for key, value in selected.count_ledgers().items()} == expected[

"counts"

]

@pytest.mark.parametrize("slug", [CASE_003, CASE_004])

def test_bounded_case_sources_close_and_policy_views_diverge(slug: str) -> None:

selected = bounded_case(slug)

encyclopedia = selected.projection("encyclopedia")

skeptical = selected.projection("skeptical")

assert not encyclopedia["title"].startswith(f"Case {selected.manifest['number']}:")

assert encyclopedia["dossier"] == skeptical["dossier"]

assert encyclopedia["counts"] == skeptical["counts"]

assert encyclopedia["view"]["label"] != skeptical["view"]["label"]

assert encyclopedia["practical_reading"]["text"] != skeptical["practical_reading"]["text"]

assert [item["relation"]["key"] for item in encyclopedia["featured_relations"]] != [

item["relation"]["key"] for item in skeptical["featured_relations"]

]

for projection in (encyclopedia, skeptical):

for relation in projection["featured_relations"]:

assert relation["statement"]

assert relation["statement"] == relation["proposition"]["text"]

assert relation["assertion"]["proposition_key"] == relation["proposition"]["key"]

assert relation["assertion"]["lineage_key"] == relation["lineage"]["key"]

assert relation["relation"]["to_ref"] == relation["proposition"]["key"]

assert relation["sources"]

for source in relation["sources"]:

assert source["source_work"]["id"].startswith("em:dossier-source-work:sha256:")

assert source["edition"]["id"].startswith("em:dossier-edition:sha256:")

assert re.fullmatch(

r"(?:sha256:)?[0-9a-f]{64}", source["edition"]["content_digest"]

)

assert source["span"]["id"].startswith("em:dossier-span:sha256:")

assert re.fullmatch(r"(?:sha256:)?[0-9a-f]{64}", source["span"]["digest"])

assert source["span"]["locator"]["label"]

assert source["license_treatment"] is not None

def test_bounded_case_human_projection_closes_calculations_and_provenance(

tmp_path: Path,

) -> None:

case003 = bounded_case(CASE_003).projection("encyclopedia")

calculations = [

calculation

for relation in case003["featured_relations"]

for calculation in relation["calculations"]

]

assert calculations

calculation_spans = [

source["span"]

for calculation in calculations

for source in calculation["sources"]

if source["span"]["key"].startswith("span-calculation-")

]

assert calculation_spans

records = [span["extent"]["value"] for span in calculation_spans]

assert any(record["derivation"].get("equation") for record in records)

assert any(record["derivation"].get("input_cell_ids") for record in records)

assert any(record.get("resolved_input_cells") for record in records)

assert any(record["derivation"].get("depends_on") for record in records)

assert any(relation["dependencies"] for relation in case003["featured_relations"])

public = tmp_path / "public"

build_public(ROOT, public)

case003_html = (public / "how-we-know" / CASE_003 / "index.html").read_text()

case003_markdown = (public / "how-we-know" / CASE_003 / "index.md").read_text()

case004_html = (public / "how-we-know" / CASE_004 / "index.html").read_text()

for rendered in (case003_html, case003_markdown):

assert "OpenAI's launch-edition report" in rendered or (

"OpenAI's launch-edition report" in rendered

)

assert "relation-assertion-claim-launch-score-label" in rendered

assert "lineage-model-performance-root" in rendered

assert "span-calculation-derive-illinois-feb-2018-298" in rendered

assert "p298 = p290 + ((298 - 290) / 10) * (p300 - p290)" in rendered

assert "resolved_input_cells" in rendered

assert "edge-derivation-comparison-inputs" in rendered

assert "Basis span" in rendered

assert "Basis edition" in rendered

assert "Basis work" in rendered

assert "P1 found tone dominance" in case004_html

assert "edge-p1-p2-method" in case004_html

assert "lineage-participant-p1" in case004_html

def test_case002_exact_inputs_counts_ledgers_and_review_are_bound() -> None:

selected = case002()

manifest_path = ROOT / "catalog" / "dossiers" / f"{CASE_002}.json"

dossier_path = ROOT / selected.manifest["dossier_path"]

receipt_path = ROOT / selected.manifest["review_receipt_path"]

assert hashlib.sha256(dossier_path.read_bytes()).hexdigest() == (

"1ae06b54fe6c6ce1803836bbf2ecaf3e652bed2c6878b7e095c01a1c689ab87b"

)

assert dossier_path.stat().st_size == 483_595

assert hashlib.sha256(receipt_path.read_bytes()).hexdigest() == (

"dd7f8ad5f760137d91346c3bf38b2bbfffbc7e5c2e74a8a987b76d857e4f244e"

)

assert receipt_path.stat().st_size == 14_968

assert selected.manifest_path == manifest_path

assert selected.manifest["reviewed_head"] == ("16b8e8ebc26948f8d9fa86120c3d495bca3f74e9")

assert selected.receipt["decision"] == "pass"

assert selected.derived_counts() == CASE_002_COUNTS

ledgers = selected.count_ledgers()

assert {key: len(value) for key, value in ledgers.items()} == {

"reports": 8,

"citation_occurrences": 48,

"cited_urls": 30,

"resolving_urls": 27,

"source_works": 11,

"editions": 14,

"exact_spans": 72,

"candidate_warrants": 7,

"confirmed_warrants": 0,

"pending_warrants": 4,

"unresolved_citations": 34,

"unsupported_claims": 20,

"rejected_claims": 9,

"inaccessible_citations": 3,

}

def test_case002_material_relations_close_to_exact_sources_and_views_diverge() -> None:

selected = case002()

encyclopedia = selected.projection("encyclopedia")

skeptical = selected.projection("skeptical")

assert encyclopedia["dossier"] == skeptical["dossier"]

assert encyclopedia["counts"] == skeptical["counts"] == CASE_002_COUNTS

assert encyclopedia["view"]["label"] != skeptical["view"]["label"]

assert encyclopedia["practical_reading"]["text"] != (skeptical["practical_reading"]["text"])

assert [item["relation"]["key"] for item in encyclopedia["featured_relations"]] != [

item["relation"]["key"] for item in skeptical["featured_relations"]

]

assert "independence" in encyclopedia["dependence_warning"].lower()

for projection in (encyclopedia, skeptical):

for relation in projection["featured_relations"]:

assert relation["statement"]

assert relation["sources"]

for source in relation["sources"]:

assert source["source_work"]["id"].startswith("em:dossier-source-work:sha256:")

assert source["edition"]["id"].startswith("em:dossier-edition:sha256:")

assert re.fullmatch(

r"(?:sha256:)?[0-9a-f]{64}",

source["edition"]["content_digest"],

)

assert source["span"]["id"].startswith("em:dossier-span:sha256:")

assert re.fullmatch(r"(?:sha256:)?[0-9a-f]{64}", source["span"]["digest"])

assert source["span"]["locator"]["label"]

assert source["license_treatment"] is not None

@pytest.mark.parametrize(

("mutation", "message"),

[

({}, "duplicate accepted dossier number"),

({"number": "003"}, "duplicate accepted dossier slug"),

(

{"number": "003", "slug": "agent-citation-lineage-copy"},

"duplicate accepted dossier identity",

),

],

)

def test_library_rejects_duplicate_case_identity(

tmp_path: Path, mutation: dict[str, str], message: str

) -> None:

copy_library_inputs(tmp_path)

source = tmp_path / "catalog" / "dossiers" / f"{CASE_002}.json"

duplicate = json.loads(source.read_text())

duplicate.update(mutation)

(source.parent / "zz-duplicate.json").write_text(

json.dumps(duplicate, indent=2, sort_keys=True) + "\n"

)

with pytest.raises(FeaturedDossierError, match=message):

load_featured_library(tmp_path, required=True)

def test_library_rejects_unsupported_manifest_and_receipt_drift(tmp_path: Path) -> None:

copy_library_inputs(tmp_path)

extra = tmp_path / "catalog" / "dossiers" / "00-unsupported.json"

extra.write_text(json.dumps({"format": "unknown-dossier-format"}))

with pytest.raises(FeaturedDossierError, match="unsupported dossier manifest format"):

load_featured_library(tmp_path, required=True)

extra.unlink()

manifest = json.loads((tmp_path / "catalog" / "dossiers" / f"{CASE_002}.json").read_text())

receipt = tmp_path / manifest["review_receipt_path"]

receipt.write_bytes(receipt.read_bytes() + b"\n")

with pytest.raises(FeaturedDossierError, match="review receipt bytes differ"):

load_featured_library(tmp_path, required=True)

@pytest.mark.parametrize("slug", [CASE_003, CASE_004])

def test_bounded_case_rejects_receipt_semantic_forgery(tmp_path: Path, slug: str) -> None:

copy_library_inputs(tmp_path)

manifest_path = tmp_path / "catalog" / "dossiers" / f"{slug}.json"

manifest = json.loads(manifest_path.read_text())

receipt_path = tmp_path / manifest["review_receipt_path"]

receipt = json.loads(receipt_path.read_text())

receipt["reviewer"]["id"] = "forged-author-reviewer"

receipt_bytes = (json.dumps(receipt, indent=2, sort_keys=True) + "\n").encode()

receipt_path.write_bytes(receipt_bytes)

manifest["review_receipt_sha256"] = hashlib.sha256(receipt_bytes).hexdigest()

manifest["review_receipt_bytes"] = len(receipt_bytes)

manifest_path.write_text(json.dumps(manifest, indent=2, sort_keys=True) + "\n")

with pytest.raises(FeaturedDossierError, match="reviewer differs"):

load_featured_library(tmp_path, required=True)

@pytest.mark.parametrize(

("mutation", "message"),

[

({"profile": "unsupported-profile"}, "unsupported bounded projection profile"),

({"reviewed_tree": "0" * 40}, "reviewed Git identity differs"),

],

)

def test_bounded_case_rejects_profile_and_review_identity_drift(

tmp_path: Path, mutation: dict[str, str], message: str

) -> None:

copy_library_inputs(tmp_path)

manifest_path = tmp_path / "catalog" / "dossiers" / f"{CASE_003}.json"

manifest = json.loads(manifest_path.read_text())

manifest.update(mutation)

manifest_path.write_text(json.dumps(manifest, indent=2, sort_keys=True) + "\n")

with pytest.raises(FeaturedDossierError, match=message):

load_featured_library(tmp_path, required=True)

def test_bounded_case_rejects_count_member_outside_dossier(tmp_path: Path) -> None:

copy_library_inputs(tmp_path)

manifest_path = tmp_path / "catalog" / "dossiers" / f"{CASE_004}.json"

manifest = json.loads(manifest_path.read_text())

manifest["count_cards"][0]["members"][0]["object_key"] = "missing-lineage"

manifest_path.write_text(json.dumps(manifest, indent=2, sort_keys=True) + "\n")

with pytest.raises(FeaturedDossierError, match="count member is not in dossier"):

load_featured_library(tmp_path, required=True)

def test_case001_accepted_bytes_remain_exact() -> None:

expected = {

"catalog/dossiers/corrections-and-familiarity-backfire.json": (

"5c96dead036b527793ba5a0de59bf7316efdfeb591470d4a23e5bf979f3b9288"

),

"research/how-we-know/corrections-backfire/candidate-dossier.json": (

"7003413e286e4d310f81441db33f4a467ba2eb3e08f41ddfa3cef5abb34707ca"

),

(

"research/how-we-know/corrections-backfire/review-receipts/"

"20260822T183134Z-codex-independent-reviewer.json"

): "503d16396b25b1c22d7fc10ac6fb7db2e530e6ce348d63fa8b639db5a5288f0a",

}

for relative, digest in expected.items():

assert hashlib.sha256((ROOT / relative).read_bytes()).hexdigest() == digest

@pytest.mark.parametrize("slug", [CASE_002, CASE_003, CASE_004])

def test_structured_case_static_api_mcp_cli_and_discovery_are_equivalent(

slug: str, tmp_path: Path, capsys: pytest.CaptureFixture[str]

) -> None:

public = tmp_path / "public"

build_public(ROOT, public)

static = json.loads((public / "how-we-know" / slug / "skeptical" / "index.json").read_text())

gateway = Gateway(ROOT)

status, _, api = gateway.handle_api(

Request(

"GET",

f"/v1/dossiers/{slug}",

{"policy": ["skeptical"]},

{},

b"",

)

)

assert status == 200

assert api == static

listed_status, _, listed = gateway.handle_api(Request("GET", "/v1/dossiers", {}, {}, b""))

assert listed_status == 200

assert [item["slug"] for item in listed["data"]] == CASE_SLUGS

resource = gateway.mcp_method(

"resources/read",

{"uri": f"epistemedia://dossier/{slug}/skeptical"},

)

assert json.loads(resource["contents"][0]["text"]) == static

tool = gateway.mcp_method(

"tools/call",

{

"name": "get_dossier",

"arguments": {"slug": slug, "policy": "skeptical"},

},

)

assert tool["structuredContent"] == static

resources = gateway.mcp_method("resources/list", {})["resources"]

dossier_uris = [

item["uri"] for item in resources if item["uri"].startswith("epistemedia://dossier/")

]

assert dossier_uris == [

f"epistemedia://dossier/{case_slug}/{policy}"

for case_slug in CASE_SLUGS

for policy in ("encyclopedia", "skeptical")

]

assert main(["--root", str(ROOT), "dossier", slug, "--policy", "skeptical"]) == 0

assert json.loads(capsys.readouterr().out) == static

discovery = json.loads((public / ".well-known" / "epistemedia.json").read_text())

assert [item["slug"] for item in discovery["dossiers"]] == CASE_SLUGS

sitemap = (public / "sitemap.xml").read_text()

assert f"/how-we-know/{slug}/" in sitemap

assert f"/how-we-know/{slug}/skeptical/" in sitemap

assert "/dossiers/{slug}" in json.loads((public / "openapi.json").read_text())["paths"]

def test_cold_start_agent_discovers_and_summarizes_case002(tmp_path: Path) -> None:

public = tmp_path / "public"

build_public(ROOT, public)

llms = (public / "llms.txt").read_text()

links = dict(re.findall(r"^- \[([^]]+)\]\(([^)]+)\)$", llms, re.MULTILINE))

markdown_url = links["Case 002 evidence dossier"]

json_url = links["Case 002 dossier JSON"]

review_url = links["Case 002 review receipt"]

assert markdown_url.endswith(f"/how-we-know/{CASE_002}/index.md")

assert review_url.endswith(f"/how-we-know/{CASE_002}/review/index.md")

document = json.loads((public / urlparse(json_url).path.lstrip("/")).read_text())

data = document["data"]

summary = {

"question": data["question"],

"verdict": data["view"]["label"],

"counts": data["counts"],

"dependence": data["dependence_warning"],

"unresolved": data["count_ledgers"]["unresolved_citations"],

"limitations": data["review"]["limitations"],

}

assert summary["question"].startswith("What empirical evidence")

assert "bounded" in summary["verdict"].lower()

assert summary["counts"] == CASE_002_COUNTS

assert "independence" in summary["dependence"].lower()

assert len(summary["unresolved"]) == 34

assert summary["limitations"]

assert (public / urlparse(markdown_url).path.lstrip("/")).exists()

@pytest.mark.parametrize(("number", "slug"), [("003", CASE_003), ("004", CASE_004)])

def test_cold_start_agent_discovers_bounded_cases(tmp_path: Path, number: str, slug: str) -> None:

public = tmp_path / "public"

build_public(ROOT, public)

llms = (public / "llms.txt").read_text()

links = dict(re.findall(r"^- \[([^]]+)\]\(([^)]+)\)$", llms, re.MULTILINE))

markdown_url = links[f"Case {number} evidence dossier"]

json_url = links[f"Case {number} dossier JSON"]

review_url = links[f"Case {number} review receipt"]

assert markdown_url.endswith(f"/how-we-know/{slug}/index.md")

assert review_url.endswith(f"/how-we-know/{slug}/review/index.md")

data = json.loads((public / urlparse(json_url).path.lstrip("/")).read_text())["data"]

assert data["question"]

assert data["view"]["label"]

assert data["counts"] == BOUNDED_CASES[slug]["counts"]

assert data["dependence_warning"]

assert data["review"]["limitations"]

assert data["review"]["decision"] == "pass"

def test_case002_human_routes_are_no_script_accessible_and_count_closed(

tmp_path: Path,

) -> None:

public = tmp_path / "public"

build_public(ROOT, public)

default_html = (public / "how-we-know" / CASE_002 / "index.html").read_text()

skeptical_html = (public / "how-we-know" / CASE_002 / "skeptical" / "index.html").read_text()

stylesheet = (public / "register.css").read_text()

data = json.loads((public / "how-we-know" / CASE_002 / "index.json").read_text())["data"]

assert default_html.count("<h1>") == 1

assert skeptical_html.count("<h1>") == 1

assert "<script" not in default_html.lower()

assert "<script" not in skeptical_html.lower()

assert '<nav class="policy-switch" aria-label="Evidence policy">' in default_html

assert 'aria-current="page"' in default_html

assert default_html != skeptical_html

assert data["view"]["label"] in default_html

assert data["practical_reading"]["text"] in default_html

assert "ledger-list" in default_html

for card in data["count_cards"]:

assert f'href="#{card["anchor"]}"' in default_html

assert f'id="{card["anchor"]}"' in default_html

assert len(data["count_ledgers"][card["ledger_key"]]) == card["value"]

assert "work, edition, span, retrieval, digest, and license" in default_html

assert "overflow-wrap:anywhere" in stylesheet

assert (

".receipt-grid dd{min-width:0;margin:0;overflow-wrap:anywhere;word-break:break-word}"

in stylesheet

)

assert (

".source-card blockquote{max-width:78ch;color:var(--ink);font-family:var(--serif);"

"overflow-wrap:anywhere;word-break:break-word}" in stylesheet

)

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