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.GRIN2Ashows 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_FUNCTIONvsDOMINANT_NEGATIVE(MYBPC3, KCNQ2),LOSS_OF_FUNCTIONvsPARTIAL_LOSS_OF_FUNCTION(IL2RB, TGFB3, GNE),GAIN_OF_FUNCTIONvs haploinsufficiency (CAPN5, ROR2). Thedescriptionon 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-gradingis keyed on the sentence). - A quote that states established human genetics inside a paper reporting something
else takes
quote_role: BACKGROUND, keeping theevidence_sourcethe quoted content deserves. The SMAD3 sentence opening aSmad3-/-mouse study, and the PIK3CD allelic-dichotomy sentence framing a three-sibling case series, are bothHUMAN_CLINICAL+BACKGROUND. Leave the slot off where the role has not actually been assessed. - In a discriminating experiment, the order of
would_support/would_refuteis load-bearing. Where an experiment forks between two competing hypotheses, both are listed in both slots and the pairing is positional: the first entry ofwould_supportpairs with the first ofwould_refute. Nothing validates this, so reordering either list silently inverts the claim. The prosesupporting_outcome/refuting_outcomecarry 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:
functional_impact_category: UNKNOWNon the variant-level node, with adescriptionnaming both readings and pointing at the discussion.UNKNOWNhere means assessed and contested, not unassessed — the description carries that distinction, and the audit's category breakdown makes it countable.- Competing
mechanistic_hypothesesentries, one per position, each with its ownstatusand its own evidence quoting the sentence that states that position. - A
CONTROVERSY(or, where the entry already framed it that way,KNOWLEDGE_GAP) discussion attached to the node and to both hypotheses, carrying aproposed_experimentsentry with the discriminating experiment, itsdecision_criterion, andwould_support/would_refutepointing 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_NOVOwas recorded only where the entry's own inheritance block says the disorder is typically de novo; otherwiseGERMLINE.zygositywas 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.