Skip to content

Mendelian entries without a structured variant mechanism (2026-09-04)

Audit of every kb/disorders/ entry that is Mendelian (a disease-level inheritance block bound to a single-locus HPO mode plus a genetic record with relationship_type: CAUSATIVE, and no SOMATIC_DRIVER) but records no GeneticContext.functional_impact_category anywhere in the file. The category is the one queryable statement of what the variant does to the gene product (loss of function, gain of function, dominant negative, hypomorphic); without it the mechanism survives only as prose in a node description.

The census is regenerable:

just variant-mechanism-audit                                   # summary
just variant-mechanism-audit --format list --single-gene --with-cached-hits
just variant-mechanism-audit --format tsv --out /tmp/gap.tsv

Census

Population Entries
Disorder entries scanned 2,612
Mendelian (inheritance + CAUSATIVE gene, no somatic driver) 871
… already carrying functional_impact_category 225
without one (the gap) 646
gap with exactly one causal gene 511
gap whose own prose already names a mechanism term 558
gap with a quotable mechanism sentence already in a cited cached reference 516

Those counts are a snapshot, not a standing fact. They were taken on 2026-09-04 against a KB of 2,612 disorder entries, before this branch's edits. By mode the gap was then: AR 327, AD 206, AD/AR 46, X-linked (all forms) 40, mitochondrial 5, mixed the rest.

The KB moves fast enough that these numbers rot; do not quote them as current. Re-running just variant-mechanism-audit on the merged result (2,941 entries) gives 1,116 Mendelian entries, 376 carrying a category and a gap of 740, with categories in use LOSS_OF_FUNCTION 285, PARTIAL_LOSS_OF_FUNCTION 68, GAIN_OF_FUNCTION 67, DOMINANT_NEGATIVE 38, UNKNOWN 21, HYPERMORPHIC 7, NEOMORPHIC 5. The gap grew in absolute terms while this branch was open, because new Mendelian entries arrive faster than mechanism categories are curated onto them — which is the more useful thing this census says, and the reason the audit is a recipe rather than a table.

Ten Mendelian entries carry UNKNOWN as their only category, five of them from this branch. The audit summary breaks that line out, because "nobody has looked" and "assessed, and contested" are different states wearing one enum value.

The gap is large but cheap to work: for four entries in five the mechanism is already stated in the entry's own text, and for four in five a sentence that will verify as an exact-quote snippet is already in references_cache/. The work is judgement, not research — deciding which category the literature actually supports and quoting the sentence that says so.

Tranche curated in this pass (26 entries, 27 contexts)

Each entry gained a genetic_context block on its variant-level pathophysiology node (gene, allele origin, zygosity, category, and a description saying why that category and not its neighbour), plus one or two evidence items quoting the classifying sentence. References newly fetched for this tranche: PMID:10441323, PMID:23585475, PMID:24318194, PMID:32234571.

Entry Gene Mode Category Key evidence
Bachmann-Bupp Syndrome ODC1 AD, de novo GAIN_OF_FUNCTION PMID:30475435
Bosch-Boonstra-Schaaf Optic Atrophy Syndrome NR2F1 AD LOSS_OF_FUNCTION (DN component described) PMID:35455940
Brachydactyly Type B1 ROR2 AD GAIN_OF_FUNCTION PMID:10700182, PMID:10986040
Brachydactyly Type C GDF5 AD LOSS_OF_FUNCTION PMID:12357473
BRPF1-Related Intellectual Disability BRPF1 AD LOSS_OF_FUNCTION PMID:31020800
CAPN5-Related Vitreoretinopathy CAPN5 AD GAIN_OF_FUNCTION PMID:23055945
CHD8-Related NDD with Overgrowth CHD8 AD, de novo LOSS_OF_FUNCTION PMID:25257502
Chung-Jansen Syndrome PHIP AD LOSS_OF_FUNCTION PMID:29209020
CLCN2-Related Leukoencephalopathy CLCN2 AR LOSS_OF_FUNCTION PMID:23707145
Congenital Heart Defects and Skeletal Malformations Syndrome ABL1 AD GAIN_OF_FUNCTION PMID:33075386, PMID:33223528
CTNNB1 Neurodevelopmental Disorder CTNNB1 AD, de novo LOSS_OF_FUNCTION PMID:24614104
Darier Disease ATP2A2 AD LOSS_OF_FUNCTION PMID:10441323
Aneurysm-Osteoarthritis Syndrome SMAD3 AD LOSS_OF_FUNCTION PMID:23585475
GNAO1-Related DEE GNAO1 AD, de novo LOSS_OF_FUNCTION (epilepsy alleles) PMID:29758257, PMID:28747448
GNE Myopathy GNE AR PARTIAL_LOSS_OF_FUNCTION PMID:41082181
GRIN2A-Related EE/ID — TMD/linker missense node GRIN2A AD GAIN_OF_FUNCTION PMID:30544257
GRIN2A-Related EE/ID — null/ATD/LBD node GRIN2A AD LOSS_OF_FUNCTION PMID:30544257
Holoprosencephaly 9 GLI2 AD LOSS_OF_FUNCTION PMID:14581620
Hypertrophic Cardiomyopathy 4 MYBPC3 AD/AR LOSS_OF_FUNCTION (not DN) PMID:19574547
Immunodeficiency 14B PIK3CD AR LOSS_OF_FUNCTION PMID:41026257
Immunodeficiency 63 IL2RB AR PARTIAL_LOSS_OF_FUNCTION PMID:31040184
IPEX Syndrome FOXP3 XLR LOSS_OF_FUNCTION PMID:32234571
KCNQ2 DEE KCNQ2 AD, de novo DOMINANT_NEGATIVE PMID:24318194
Luscan-Lumish Syndrome SETD2 AD LOSS_OF_FUNCTION PMID:37025455
Rienhoff Syndrome TGFB3 AD PARTIAL_LOSS_OF_FUNCTION PMID:23824657
SOCS1 Haploinsufficiency SOCS1 AD LOSS_OF_FUNCTION PMID:33087723
White-Sutton Syndrome POGZ AD, de novo LOSS_OF_FUNCTION PMID:31782611

Conventions used, which later tranches should keep:

  • The category goes on the variant-level node, the one whose genes: names the causal gene, not on every downstream node. GRIN2A shows the pattern when one entry has two allele classes with opposite effects: two nodes, two contexts.
  • The category is a claim and takes its own evidence item, quoting the sentence that classifies the mechanism, not the sentence that names the gene. A gene-discovery abstract that only says "mutations in X cause Y" does not support a category.
  • Say why not the neighbour. LOSS_OF_FUNCTION vs DOMINANT_NEGATIVE (MYBPC3, KCNQ2), LOSS_OF_FUNCTION vs PARTIAL_LOSS_OF_FUNCTION (IL2RB, TGFB3, GNE), GAIN_OF_FUNCTION vs haploinsufficiency (CAPN5, ROR2). The description on the context records the discrimination so a reviewer does not have to rederive it.
  • A disease with allele classes of opposite sign gets the category of the presentation the entry covers, with the other class named in the description (GNAO1: LOF for the epileptic encephalopathy, GOF alleles noted as the movement-disorder class).
  • Evidence grade follows the cited paper, not the claim. Where a sentence was already quoted elsewhere in the same file, the new item keeps that grade (check-snippet-grading is keyed on the sentence).
  • A quote that states established human genetics inside a paper reporting something else takes quote_role: BACKGROUND, keeping the evidence_source the quoted content deserves. The SMAD3 sentence opening a Smad3-/- mouse study, and the PIK3CD allelic-dichotomy sentence framing a three-sibling case series, are both HUMAN_CLINICAL + BACKGROUND. Leave the slot off where the role has not actually been assessed.
  • In a discriminating experiment, the order of would_support / would_refute is load-bearing. Where an experiment forks between two competing hypotheses, both are listed in both slots and the pairing is positional: the first entry of would_support pairs with the first of would_refute. Nothing validates this, so reordering either list silently inverts the claim. The prose supporting_outcome / refuting_outcome carry the disambiguation; keep them consistent with the order.

Contested mechanisms: recorded, not skipped

Five entries had a mechanism sentence in cache but the literature disagrees on which category it supports. Leaving the slot empty would make them indistinguishable from the hundreds of entries nobody has looked at yet, so each is now recorded structurally in three linked places:

  1. functional_impact_category: UNKNOWN on the variant-level node, with a description naming both readings and pointing at the discussion. UNKNOWN here means assessed and contested, not unassessed — the description carries that distinction, and the audit's category breakdown makes it countable.
  2. Competing mechanistic_hypotheses entries, one per position, each with its own status and its own evidence quoting the sentence that states that position.
  3. A CONTROVERSY (or, where the entry already framed it that way, KNOWLEDGE_GAP) discussion attached to the node and to both hypotheses, carrying a proposed_experiments entry with the discriminating experiment, its decision_criterion, and would_support / would_refute pointing back at the hypotheses.
Entry Gene Competing hypotheses Discussion
Weaver Syndrome EZH2 loss_of_function_prc2 (CANONICAL) vs dominant_negative_prc2 (EMERGING) weaver_ezh2_variant_mechanism_controversy (CONTROVERSY, new)
Bainbridge-Ropers Syndrome ASXL3 asxl3_nmd_haploinsufficiency (CANONICAL) vs asxl3_nmd_escaping_truncated_protein (ALTERNATIVE), both new brps_truncated_protein_mechanism_controversy (CONTROVERSY, new)
Bohring-Opitz Syndrome ASXL1 asxl1_loss_of_full_length_function (CANONICAL) vs asxl1_truncated_protein_dominant_or_gain (ALTERNATIVE), both new existing bos_truncation_molecular_consequence, extended with the hypothesis links and an experiment
Arboleda-Tham Syndrome KAT6A existing early_truncating_nmd_haploinsufficiency (CANONICAL) vs late_truncating_nmd_escape (ALTERNATIVE) kat6a_truncation_position_mechanism_controversy (CONTROVERSY, new)
ADNP-Related Syndrome ADNP existing allele_specific_haploinsufficiency_branch (CANONICAL) vs nmd_escape_truncation_branch (ALTERNATIVE) existing gap_adnp_allele_specific_molecular_mechanism, extended to attach the node and both hypotheses

Two of the five (ADNP, Arboleda-Tham) already had the competing hypotheses curated and needed only the category and the links; Bainbridge-Ropers and Bohring-Opitz needed the hypotheses written. In every case the discriminating experiment is the same shape, because the disagreement is the same one: an isogenic comparison of the disease allele against a heterozygous null in one genetic background, which no published study has run for any of these genes. Where the allele class is truncating, the experiment is preceded by a protein-detection step, since "does the truncated protein exist in patient cells" is unanswered for ASXL1, ASXL3 and KAT6A alike.

KCNQ2 is worth keeping in view as a trap rather than a controversy: the same gene is haploinsufficient in benign familial neonatal seizures and dominant-negative in the developmental and epileptic encephalopathy, so a category must never be copied from one entry to the other. The DEE entry is curated as DOMINANT_NEGATIVE in this branch; no BFNS entry exists yet.

Can a deep-research provider resolve these? All five screened

The repository already has the plumbing: just research-hypothesis <provider> <disorder> <hypothesis_group_id> runs a focused hypothesis search whose template asks for competing mechanisms, explicit knowledge gaps, and the experiments that would distinguish them, and writes to kb/hypotheses/<Disorder>/<hypothesis_group_id>/<provider>.md. The hypothesis blocks added above are what make these runnable at all: the runner seeds the provider with the hypothesis YAML, so a controversy that exists only as prose in a node description cannot be searched, while one curated as two competing hypotheses can.

All five contested hypotheses were screened against OpenScientist, each about 20-25 minutes, and each assessed into a sidecar under Hypothesis Report Assessments.

Hypothesis screened Verdict Promoted Category
Weaver / dominant_negative_prc2 Partially supported Whole-gene EZH2 deletion case; reciprocal GoF arm marked single-source UNKNOWN
Bainbridge-Ropers / asxl3_nmd_escaping_truncated_protein Partially supported Cohort core-severity counter-evidence as a REFUTE item; hypothesis qualified UNKNOWN
Bohring-Opitz / asxl1_truncated_protein_dominant_or_gain Partially supported Three references, two for the truncated-protein reading and one for the null reading UNKNOWN
Arboleda-Tham / late_truncating_nmd_escape Partially supported Nothing; hypothesis reframed as a severity modifier UNKNOWN
ADNP / nmd_escape_truncation_branch Weakly supported, unresolved Mutant mRNA detection, and a failed protein hunt as a REFUTE item UNKNOWN

Not one moved a category, and four of five changed their entry anyway. The prior expectation recorded here — that a provider can only add completeness, since these controversies are open for want of an experiment rather than for want of literature — held exactly for the categories and was too pessimistic about everything else.

What the screens were actually good at

Reading a paper the curator had already cited, more completely than the curator did. Twice. The Bainbridge-Ropers entry cited the largest ASXL3 cohort for an autism enrichment in the decay-escaping class; the same paper's core severity measures run the other way, worse in the null class, which is the opposite of what a more toxic truncated protein predicts. The ADNP entry said mutant protein "has never been unambiguously demonstrated", which reads as nobody having looked; a study had looked systematically across patient-derived materials and multiple antibodies and found none, concluding degradation or absence. Both are corrections to curation written days earlier in this same branch.

Supplying the null-side evidence a curator writing a hypothesis tends not to hunt for. The Weaver run found a whole-gene EZH2 deletion producing a Weaver-like phenotype; the Bohring-Opitz run found that constitutive Asxl1 deletion reproduces BOS-like malformations in mouse. Both show the null route reaches the phenotype without a poison protein. Writing a hypothesis pair, it is easy to evidence the interesting branch well and the boring one thinly, and these runs corrected exactly that asymmetry.

Reaching the same structural conclusion by three different routes. Bainbridge-Ropers (cohort severity), Arboleda-Tham (population constraint) and ADNP (a failed protein hunt) independently concluded that the decay-escape branch is a candidate modifier on a dosage-loss baseline rather than a symmetric competitor. Three of five, by different evidence, is worth more than any one of them. All three hypothesis descriptions were amended accordingly.

What they could not do, and one systematic defect

None performed the comparison that would settle its question, and all five said so. All five independently identified the same missing step this audit had already recorded — an isogenic comparison of the disease allele against a heterozygous null, preceded by truncated-protein detection where the allele class is truncating. That is a useful independent check on the curation and adds no evidence.

Every one of the five bundles omitted the MANIFEST.yaml its own report or README listed, and four of five omitted the analysis code they named. That is a provider bundling defect, not five coincidences. Consequences: no analysis-run gate can be applied to any of them, so every computational analysis across the five is recorded PARTIAL and PARTIALLY_AUDITABLE, and nothing from any computational analysis was promoted. The ADNP run additionally states its PubMed queries are logged in the bundle when no log was delivered, so its reported zero-hit searches are unauditable and that source is recorded UNVERIFIABLE. The assessment validator caught that one, not a careful read.

Bundle quality otherwise varied usefully. Arboleda-Tham was best provisioned, the only run carrying an environment record and committing search logs that include the negative queries. ADNP reported provenance best in prose — full package versions, a disclosed ClinGen API failure, a sandbox-only figure declared rather than claimed — while delivering least. Weaver's analysis code survives only as an embedded string inside a provenance JSON, not at the path its report names.

Reading for future screens

Worth running, and budget for the assessment rather than the search: a run is 20 minutes and the review that decides what may be promoted is several times that. The value is a second reader over the same literature who is not the curator who wrote the hypothesis, and on this evidence that reader is most useful on the branch the curator found less interesting and on papers the curator already cited. Treat every computational result as unpromotable until the bundling defect is fixed.

Worklist for the next tranches

Ranked by how many of the entry's cited cached references already contain a mechanism sentence (just variant-mechanism-audit --format list --single-gene --with-cached-hits). Top of the list at the time of writing:

Entry Gene Mode Prose signals Cached refs with a mechanism sentence
MED13L Syndrome MED13L AD lof, dn, hi 19
SETD5 Haploinsufficiency Syndrome SETD5 AD lof, hi 15
USP9X Female-Restricted Syndromic ID USP9X XL lof, gof, dn, hi, hypo 15
Acromesomelic Dysplasia Maroteaux Type NPR2 AR lof, gof, dn, hi 13
FOXP1 Syndrome FOXP1 AD lof, hi 13
Raine Syndrome FAM20C AR lof, hypo 12
MICPCH Syndrome CASK XL lof, hypo 11
CSF1R-related Brain Abnormalities, Neurodegeneration, and Dysosteosclerosis CSF1R AR lof, hi, hypo 10
Loeys-Dietz Syndrome 4 TGFB2 AD lof, dn, hi 10
Chuvash Polycythemia VHL p.Arg200Trp AR hypo 9
Giant Axonal Neuropathy 1 GAN AR lof 9
Lymphatic Malformation 6 PIEZO1 AR lof, gof, hypo 9
NGLY1-Congenital Disorder of Deglycosylation NGLY1 AR lof 9
SHORT Syndrome PIK3R1 AD dn, hi, hypo 9
KCNH1-Associated Disorder KCNH1 AD gof, hi 8
MBD5 Haploinsufficiency Syndrome MBD5 AD lof, hi, hypo 8
SCN2A-Related DEE SCN2A AD lof, gof 8
Primary Erythermalgia SCN9A AD gof 7
Snyder-Robinson Syndrome SMS XLR lof, hypo 8

Entries whose prose lists several signals (lof, gof, dn, hi) are usually reviews of the whole gene's allelic series rather than a confused entry; read the node before assigning. Entries with a single signal and a single gene (Giant Axonal Neuropathy, NGLY1, Primary Erythermalgia, SETD5, FOXP1) are the fastest wins.

Method notes

  • The mechanism sentence was taken from the entry's own cited references where one existed, so the new evidence item verifies against a cache file already committed. Four entries (Darier, KCNQ2 DEE, IPEX, Aneurysm-Osteoarthritis) had no such sentence and received one newly fetched reference each; each was chosen for stating the human mechanism in its abstract, not for being the gene-discovery paper.
  • variant_origin: DE_NOVO was recorded only where the entry's own inheritance block says the disorder is typically de novo; otherwise GERMLINE. zygosity was omitted for the two recessive entries whose allelic series mixes homozygous and compound-heterozygous genotypes (GNE, CLCN2) rather than picking one.
  • Validation per entry: linkml-validate, the reference snippet audit (2,193 of 2,205 snippets across the 26 files verified, the remainder skipped by non-PMID prefix), term validation, and the snippet-grading, snippet-length, title-snippet, folded-hyphen, enum, duplicate-key, entity-ref, causal-target and qualifier-term gates.