syntheogenesis / tests /test_compiler_validation.py
github-actions[bot]
Deploy 1dc745d
0bdb418
Raw
History Blame Contribute Delete
4.01 kB
"""Landmark-design validation. This file guards the honesty mechanism.
The number that matters is not "how many passed" but "how many passed that
were checkable without trusting anyone's memory". A harness that lets an
uncited claim count as validation is worse than no harness, because it
launders a guess into a credential.
"""
import pytest
from dee.core import compiler_validation as V
def test_the_bundled_corpus_loads():
cases = V.load_cases()
assert cases, "the corpus must ship with the package"
assert all("id" in c and "basis" in c for c in cases)
def test_every_chemistry_case_reproduces():
"""If this fails, the compiler changed its verdict on a settled design."""
report = V.run_validation()
assert not report.failures, [
(f.name, f.mismatches) for f in report.failures]
assert report.chemistry_passed == report.chemistry_total
assert report.chemistry_total >= 5, "corpus should not silently shrink"
def test_the_sickle_cell_case_offers_no_base_editor_and_stays_that_way():
"""The anchor case. HbS is T>A on the forward strand — a transversion — so
NO base editor can correct it, on either strand. That is the assertion; if
an editor family ever appears here, something has broken very badly.
It now compiles, because prime editing is designed. The chemistry the case
tests did not change — only what the platform can offer for it.
"""
report = V.run_validation()
hbs = next(r for r in report.results if r.case_id == "hbs-sickle-hbb")
assert hbs.status == "pass"
assert hbs.observed["editor_family"] is None, "no base editor makes T>A"
assert hbs.observed["route"] == "prime_editing"
assert "transversion_no_base_editor" in hbs.observed["diagnostics"]
def test_an_uncited_literature_case_is_unverified_not_passed():
"""The mechanism. An expectation nobody can look up must never count."""
cases = [{
"id": "made-up", "name": "Uncited claim", "basis": "literature",
"wt_base": "G", "patient_base": "A",
"expect": {"compiles": True, "route": "base_editing"},
"citation": "",
}]
report = V.run_validation(cases)
assert report.results[0].status == "unverified"
assert report.chemistry_passed == 0
assert "Uncited claim" in report.unverified
def test_a_cited_literature_case_is_actually_run():
cases = [{
"id": "cited", "name": "Cited claim", "basis": "literature",
"wt_base": "G", "patient_base": "A",
"expect": {"compiles": True, "route": "base_editing",
"editor_family": "ABE"},
"citation": "PMID:00000000",
}]
assert V.run_validation(cases).results[0].status == "pass"
def test_a_wrong_expectation_fails_loudly_with_the_delta():
cases = [{
"id": "wrong", "name": "Wrong", "basis": "chemistry",
"wt_base": "G", "patient_base": "A",
"expect": {"editor_family": "CBE"}, # it is ABE
}]
r = V.run_validation(cases).results[0]
assert r.status == "fail"
assert any("editor_family" in m and "ABE" in m for m in r.mismatches)
def test_a_case_is_not_failed_for_something_it_never_asserted():
"""Partial expectations are legitimate; only stated keys are checked."""
cases = [{
"id": "partial", "name": "Partial", "basis": "chemistry",
"wt_base": "G", "patient_base": "A",
"expect": {"compiles": True}, # says nothing about strand
}]
assert V.run_validation(cases).results[0].status == "pass"
def test_the_headline_never_reads_as_more_than_it_is():
report = V.run_validation()
h = report.headline
assert "derivable from the genetic code" in h
if report.unverified:
assert "awaiting a citation and not counted" in h
def test_unverified_cases_are_named_not_merely_counted():
"""A gap with a name is a to-do; a gap as a number is a footnote."""
report = V.run_validation()
assert all(isinstance(n, str) and n for n in report.unverified)