Niche proteins enumerated and NOT written in this tranche, and four symbol traps measured while doing it - three of them new to the registry
also called Q33 rejection ledger · niche protein layer rejections
This records the niche molecules we deliberately did not write entries for and why, so nobody spends a day rediscovering that there is no literature on them. It also records four gene-name traps that made searches return confidently wrong answers.
The same thing, for a scientist
A bounded-rejection ledger for the Q33 niche-protein tranche, following `ana-marrow-niche-rejected-candidates` (cycle 40) and this project's standing requirement that a considered-and-dismissed candidate leaves a trace. **Written:** gene-cxcl12, gene-cxcr4, gene-itga4, gene-vcam1, gene-kitlg, gene-lepr, gene-spp1, gene-sele, drug-plerixafor, plus a hypothesis, an analysis, an absence and a census. **Rejected with counts:** ACKR3/CXCR7 0, ITGB1 0, SELL/SELP/P-selectin/L-selectin 0, JAG1/jagged 2, ANGPT1/TIE2 (inherited rejection, re-affirmed), nestin 6 but deferred for a stated reason [E1]. **Four symbol traps measured, three of them absent from the 177-row registry at the time of reading [E2]:** `SELE` matches SELECTIVE/SELECTIVITY/SELEX in this corpus (89 files by substring, 1 by word boundary); `SCF` is the SKP1-CUL1-F-box ligase here (153 occurrences) while being UniProt's entry name for KITLG; `gene_exact:LEPR` returns LEPROT first; and `VCAM-1[tiab]` returns 0 where `VCAM1[tiab]` returns 2 against the same half.
Rejected, with the count that justifies it
Disease half throughout: KMT2A[tiab] OR MLL-rearranged[tiab] OR MLL-AF4[tiab] OR MLL-AF9[tiab] = 2,922 records, 2026-09-22, querytranslation read back on every query. Rule-67 controls through the identical two-term AND shape returned 1, 2, 4 and 33 for ITGA4, VCAM1, SPP1 and menin-HOXA9 respectively, so the AND composes and these zeros are measured zeros.
| candidate | terms | count | disposition |
|---|---|---|---|
| ACKR3 / CXCR7 | ACKR3[tiab] OR CXCR7[tiab] | 0 | Rejected as an entry, FLAGGED as a liability. The second CXCL12 receptor, not blocked by plerixafor, zero papers in this disease and zero mentions of either token anywhere in this corpus. It is written into drug-plerixafor and gene-cxcr4 as an unexamined resistance route rather than given its own entry, because there is no measurement to build one on. If a CXCR4-antagonist programme starts here, this becomes the first thing to measure. |
| ITGB1 | ITGB1[tiab] | 0 | Rejected, and the zero is informative. ITGB1 is the beta chain of VLA-4; ITGA4 has one paper and its partner chain has none, even though every VLA-4 result is jointly about both. Recorded in gene-itga4 as the reason a VLA-4 result must not be attributed to ITGA4 alone. |
| SELL / SELP | SELL OR SELP OR P-selectin OR L-selectin | 0 | Rejected. The selectin family's KMT2A literature is empty across all three members; E-selectin got an entry because of its clinical agent and the strength of the AML vascular-niche mechanism, not because its count was higher - it is also 0. |
| JAG1 / jagged | JAG1[tiab] OR jagged[tiab] | 2 | Rejected for this tranche. Two records, and NOTCH biology in KMT2A-rearranged disease is a substantial topic in its own right that this graph already touches via mech-kmt2a-maml2-notch-dominant-negative. Writing gene-jag1 as a niche ligand would mis-frame it. A NOTCH beat should own it. |
| ANGPT1 / TEK | inherited from cycle 40: 3 records, none niche-mechanistic | re-affirmed | The cycle-40 ledger rejected these and its reasoning included that ANGPTL2 is not an angiopoietin despite the name. Not re-queried here; the rejection is inherited and labelled as inherited rather than re-presented as a new measurement. |
| nestin / NES | nestin[tiab] | 6 | Deferred, not rejected, and the reason is a collision. Six records exist and this graph already holds cell-type-nestin-msc on that evidence. A gene-nes entry is defensible but was not written, for two reasons: the cell-type entry already carries the biology, and the corpus token is contaminated (see below). If written, it must be titled for nestin the intermediate filament and must state the collision in its first line. |
Not rejected but out of scope: CSPG4/NG2 already has an entry (gene-cspg4) and is the ITGA4 partner; S100A8 appeared in the SPP1 intersection as a niche factor in AML progression and was not pursued; FUT4, FUT7, ST3GAL4 and ST3GAL6 - the glycosyltransferases that build E-selectin ligands - are named in gene-sele as an open question rather than written, because no measurement in this disease exists.
Four symbol traps, measured
The registry was read FIRST, before any symbol was searched, using the case-sensitive form that iterates d['collisions'] (177 rows, 2026-09-22). No row existed for SELE, SCF, KITLG, LEPR, LEPROT, SGPP1, VCAM1, CXCL12, CXCR4, ITGA4 or SPP1. The only hit for any token in this beat was NES, which appears inside the existing RNF2 and H3-3A / H3-3B rows rather than as a row of its own 2.
1. SELE is a prefix of the word this corpus writes most emphatically. A bare substring grep for SELE over data/graph/nodes returns 89 files. A word-boundary grep returns 1. The 89 are SELECTIVE (52 occurrences), SELECTIVITY (36), SELEX (15), SELECTED (12), SELECTIVELY (7), SELECTION (3), SELECTS and SELECT. Same family as the registry's existing WAS, RPE and CPM rows. Grep it with -w, or search E-selectin.
2. SCF means the ubiquitin ligase here and the cytokine at UniProt. UniProt's entry name for KITLG (P21583) is SCF_HUMAN and SCF is a curated synonym. In this corpus a word-boundary grep for SCF returns 41 files and 153 occurrences, essentially all SKP1-CUL1-F-box - 'MLL is degraded by SCF(Skp2) at S phase', 'ATF4 is an SCF-betaTrCP substrate'. In PubMed the same token misfires the other way: one of the five hits for the KITLG query is a Cks1/Cks2 ubiquitin paper and another uses 'stem cell factor' as English to describe SALL4. Search KITLG or 'KIT ligand'.
3. gene_exact:LEPR returns the wrong protein first. Two reviewed human records: O15243 / LEPROT / 131 aa first, then P48357 / LEPR / 1,165 aa. LEPROT carries LEPR as a synonym. The discriminator is length, 131 against 1,165. This is the BACH1/TCF3/LEO1 shape and it would pass verify-accessions.py, because a synonym match is not a typo. (gene_exact:SPP1 also returns two records - P10451 osteopontin and Q9BX95 SGPP1 - but the correct one is first today.)
4. Hyphenation is a different string. VCAM1[tiab] against the disease half returns 2; VCAM-1[tiab] against the identical half returns 0, with a valid translation and 'No items found.'. Most adhesion papers write VCAM-1. A beat searching the protein name rather than the symbol would have recorded a clean false zero for a gene that has two KMT2A-fusion papers.
A fifth trap that is not about symbols: an empty querytranslation is not a zero
Four separate queries in this session returned an empty querytranslation and no count field, and all four returned normal results when re-run within a minute: CXCR4[tiab] AND (disease half), CXCR4[tiab] AND infant[tiab] AND leukemia[tiab], (SPP1 OR osteopontin) AND (disease half), and (SELE OR E-selectin OR uproleselan) AND (disease half). Their true values are 11, 2, 4 and 0.
Had any been recorded as written, this tranche would have published false zeros for CXCR4 and for SPP1 - the two best-covered molecules in it. The distinguishing signal is exact and should be in every beat's loop: a genuine zero comes back with a NON-EMPTY querytranslation and a warninglist containing outputmessages: ["No items found."]. An empty translation with no count is an instrument failure. This is a live, high-frequency failure mode - four occurrences in roughly forty queries - and it is aligned with the answer a bounded-absence beat is hoping for, which is what makes it dangerous.
| script | ad hoc NCBI eutils esearch (db=pubmed) with querytranslation readback; ripgrep over data/graph/nodes; live UniProt REST; symbol-collision registry read |
|---|---|
| status | run |
| run date | 2026-09-22 |
| registry read | data/symbol-collisions.json read 2026-09-22 BEFORE any symbol was searched, case-sensitive, iterating d['collisions'], 177 rows. No row for SELE, SCF, KITLG, LEPR, LEPROT, SGPP1, VCAM1, CXCL12, CXCR4, ITGA4 or SPP1. NES matched inside the existing RNF2 and H3-3A/H3-3B rows only. THE REGISTRY FILE WAS NOT EDITED BY THIS BEAT - it is a shared file and other beats were writing concurrently, so the four rows above are proposed to the coordinator in this entry and in the hand-back rather than written directly. |
entries written
[ "gene-cxcl12", "gene-cxcr4", "gene-itga4", "gene-vcam1", "gene-kitlg", "gene-lepr", "gene-spp1", "gene-sele", "drug-plerixafor", "hyp-cxcr4-function-is-a-hoxa-meis1-output-of-the-fusion", "ana-cxcr4-under-menin-inhibition-geo-reanalysis", "absence-cxcr4-axis-never-measured-under-menin-inhibition", "ana-is-niche-biology-measured-in-kmt2a-rearranged-disease-a-census", "ana-q33-niche-protein-layer-rejected-candidates" ]
rejected candidates
[
{
"candidate": "ACKR3 / CXCR7",
"terms": "ACKR3[tiab] OR CXCR7[tiab]",
"intersection": 0,
"disposition": "rejected as an entry, flagged as a resistance liability",
"reason": "The second CXCL12 receptor, not antagonised by plerixafor. Zero papers in this disease and zero mentions of either token anywhere in this corpus, so there is nothing to build an entry on - but that is exactly what makes it the unexamined bypass for any CXCR4-directed programme. Recorded in gene-cxcr4 and drug-plerixafor instead. Name list did not include the previous symbols RDC1 or CMKOR1, so the zero may be too tight (rule 69)."
},
{
"candidate": "ITGB1",
"terms": "ITGB1[tiab]",
"intersection": 0,
"disposition": "rejected, zero is informative",
"reason": "The beta chain of VLA-4 has no KMT2A literature while its alpha chain has one paper, although every VLA-4 result is jointly about both. Recorded in gene-itga4 as the reason a VLA-4 result must not be attributed to ITGA4 alone."
},
{
"candidate": "SELL / SELP / P-selectin / L-selectin",
"terms": "SELL[tiab] OR SELP[tiab] OR P-selectin[tiab] OR L-selectin[tiab]",
"intersection": 0,
"disposition": "rejected outright",
"reason": "The whole selectin family has zero KMT2A-fusion literature. E-selectin was written despite also being zero, because of the strength of the AML vascular-niche mechanism and the existence of a clinical antagonist; P- and L-selectin have neither."
},
{
"candidate": "JAG1 / jagged",
"terms": "JAG1[tiab] OR jagged[tiab]",
"intersection": 2,
"disposition": "rejected for this tranche, referred to a NOTCH beat",
"reason": "NOTCH ligand biology in KMT2A-rearranged disease is a topic in its own right that this graph already touches through mech-kmt2a-maml2-notch-dominant-negative. Writing JAG1 as a niche ligand would mis-frame it."
},
{
"candidate": "ANGPT1 / TEK",
"terms": "inherited from ana-marrow-niche-rejected-candidates (cycle 40): 3 records, none niche-mechanistic",
"intersection": null,
"disposition": "rejection INHERITED and labelled as inherited",
"reason": "Not re-queried in this beat. The cycle-40 ledger's reasoning included that ANGPTL2 is not an angiopoietin despite the name, so the ANGPT1/TIE2 axis proper has no KMT2A-specific literature. Recorded as inherited rather than re-presented as a new measurement."
},
{
"candidate": "nestin / NES",
"terms": "nestin[tiab]",
"intersection": 6,
"disposition": "DEFERRED, not rejected",
"reason": "Six records exist and cell-type-nestin-msc already carries the biology. A gene-nes entry is defensible; it was not written because the cell-type entry covers the evidence and because the corpus token NES means NUCLEAR EXPORT SIGNAL here, not nestin. If written it must be titled for the intermediate filament, must search as 'nestin', and must state the collision in its first line. Note also the unresolved tension between Ding 2012, where Scf deletion from nestin-cre cells did NOT affect HSCs, and cell-type-nestin-msc's leukaemia-supporting result."
},
{
"candidate": "FUT4 / FUT7 / ST3GAL4 / ST3GAL6",
"terms": "not queried",
"intersection": null,
"disposition": "named as an open question in gene-sele, not written",
"reason": "The glycosyltransferases that build E-selectin ligands. Whether any is under KMT2A-fusion control is the question that would convert a general AML niche mechanism into a fusion-specific one, and it is recorded as gene-sele's second open question rather than as four thin entries."
},
{
"candidate": "S100A8",
"terms": "appeared in the SPP1 intersection (PMID 40920990, 'Critical role of niche S100A8 for acute myeloid leukemia progression and hematopoiesis regeneration')",
"intersection": null,
"disposition": "not pursued",
"reason": "A niche factor in AML progression that surfaced incidentally. Not read beyond the title and not pursued for lack of a KMT2A-specific claim in the title; recorded so a future cycle knows it was seen."
}
]symbol traps measured
[
{
"token": "SELE",
"class": "short_symbol_is_a_prefix_of_a_common_word",
"corpus_substring_files": 89,
"corpus_wordboundary_files": 1,
"matches": {
"SELECTIVE": 52,
"SELECTIVITY": 36,
"SELEX": 15,
"SELECTED": 12,
"SELECTIVELY": 7,
"SELECTION": 3,
"SELECTS": 1,
"SELECT": 1,
"SELE": 5
},
"rule": "grep with -w, or search as E-selectin",
"in_registry_at_read_time": false,
"family": "same as the existing WAS, RPE and CPM rows"
},
{
"token": "SCF",
"class": "acronym_means_a_complex_not_this_gene",
"this_graph_means": "SKP1-CUL1-F-box ubiquitin ligase (SCF-Skp2 degrading MLL; SCF-betaTrCP substrates)",
"uniprot_means": "UniProt entry name SCF_HUMAN and curated synonym for KITLG (P21583, stem cell factor)",
"corpus_wordboundary_files": 41,
"corpus_occurrences": 153,
"rule": "search KITLG or 'KIT ligand'; never a bare SCF",
"in_registry_at_read_time": false,
"note": "2 of the 153 are the string SCFR, which is KIT's own alias - a third sense of the same three letters"
},
{
"token": "LEPR",
"class": "gene_exact_returns_several_reviewed_records_wrong_one_first",
"wrong_first": {
"accession": "O15243",
"entry": "OBRG_HUMAN",
"primary_gene": "LEPROT",
"length_aa": 131
},
"correct": {
"accession": "P48357",
"entry": "LEPR_HUMAN",
"primary_gene": "LEPR",
"length_aa": 1165
},
"discriminator": "length 131 vs 1165; but read the PRIMARY GENE NAME back, which always works",
"rule": "rule 62 shape - would pass verify-accessions.py because a synonym match is not a typo",
"in_registry_at_read_time": false,
"sibling": "gene_exact:SPP1 also returns two records (P10451 osteopontin 314 aa, Q9BX95 SGPP1 441 aa) but the correct one is first today"
},
{
"token": "VCAM-1 vs VCAM1",
"class": "hyphenation_is_a_different_string",
"measured": "VCAM1[tiab] AND (disease half) = 2; VCAM-1[tiab] AND the identical half = 0, valid translation, 'No items found.'",
"rule": "adhesion papers overwhelmingly write VCAM-1; search both spellings",
"in_registry_at_read_time": false
}
]instrument trap measured
{
"class": "empty_querytranslation_is_not_a_zero",
"occurrences_this_session": 4,
"approx_queries_run": 40,
"affected_queries": [
"CXCR4[tiab] AND (disease half) - true value 11",
"CXCR4[tiab] AND infant[tiab] AND leukemia[tiab] - true value 2",
"(SPP1[tiab] OR osteopontin[tiab]) AND (disease half) - true value 4",
"(SELE[tiab] OR E-selectin[tiab] OR uproleselan[tiab]) AND (disease half) - true value 0"
],
"signature_of_a_genuine_zero": "non-empty querytranslation PLUS warninglist.outputmessages containing 'No items found.'",
"signature_of_a_failure": "empty or absent querytranslation and no count field",
"why_it_matters": "Two of the four were CXCR4 queries, the central molecule of this beat, and recording either as written would have published a false zero aligned with the hypothesis being tested."
}- A rejection ledger can be read as a licence to stop looking. Every zero here is bounded by titles and abstracts and by a written-out name list, and two of them (ACKR3, ITGB1) are zeros about molecules that are almost certainly biologically involved and simply not indexed under those symbols.
- Should the four measured traps be added to data/symbol-collisions.json? They are written out here in row-ready form; the coordinator owns that file.
- Is the ACKR3 zero too tight? The previous symbols RDC1 and CMKOR1 were not searched, and rule 69 says a previous official symbol is not an alias.
- How often does the empty-querytranslation failure occur for other beats? One in ten queries in this session is high enough that it should probably be a loop-level guard in any shared search helper rather than a rule everyone has to remember.
- E1strong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.database
Against the disease half KMT2A[tiab] OR MLL-rearranged[tiab] OR MLL-AF4[tiab] OR MLL-AF9[tiab] (2,922 records), ACKR3/CXCR7 returns 0, ITGB1 returns 0, SELL/SELP/P-selectin/L-selectin returns 0, JAG1/jagged returns 2, and nestin returns 6.
NCBI E-utilities esearch, db=pubmed - rejection-ledger queries with querytranslation readback and rule-67 controls · NCBI PubMed 2026What this evidence cannot show
All 2026-09-22, querytranslation read back, one tag per term (rule 94), and each zero accompanied by an explicit 'No items found.' outputmessage. Rule-67 controls through the identical two-term AND shape returned non-zero (ITGA4 1, VCAM1 2, SPP1 4), so the AND composes. Bounded over titles and abstracts (rule 80). The ACKR3 name list did not include 'RDC1' or 'CMKOR1', both previous names for the same gene, and rule 69 says a previous official symbol is not an alias - so that zero in particular may be too tight.
Evidence that argues against this (1)
- A zero for ITGB1 coexists with real evidence about the VLA-4 dimer in this disease, because VLA-4 results are indexed under the dimer name rather than under either chain. The selectin and integrin zeros are therefore partly artefacts of how adhesion papers are written, and 'no literature on ITGB1' should not be read as 'no literature on beta-1 integrin biology'. Oncogene 2022
- E2strong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.database
The symbol-collision registry held 177 rows when read at the start of this beat and contained no row for SELE, SCF, KITLG, LEPR, LEPROT, SGPP1, VCAM1, CXCL12, CXCR4, ITGA4 or SPP1; the only token from this beat with any registry presence is NES, which appears inside the existing RNF2 and H3-3A/H3-3B rows rather than as a row of its own.
data/symbol-collisions.json - this project's symbol-collision registry, 177 rows at the time of reading · Oncofusion knowledge graph 2026What this evidence cannot show
Read 2026-09-22 with the case-SENSITIVE form that iterates d['collisions'] and tests the token against json.dumps of each row - the form the standing brief specifies after the cycle-59 correction, not the .lower() variant that false-positives on short tokens. A substring test can in principle miss a row that spells a token differently, so 'no row' means no row matching that exact string. The registry file was NOT edited by this beat; these rows are proposed to the coordinator rather than written, because it is a shared file and other beats were writing concurrently.
Evidence that argues against this (1)
- The registry read has now failed in both directions in this project's history - a false clear from iterating the dict's five top-level keys, and a false hit from case-folding a four-letter token - so a clean 'no row' result deserves the same scepticism as a hit. The mitigation used here was to check what the read actually matched, by confirming it returns the known NES rows. Oncofusion knowledge graph 2026
- E3strong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.database
In this corpus a bare substring grep for SELE over data/graph/nodes returns 89 files while a word-boundary grep returns 1; the substring matches are SELECTIVE (52), SELECTIVITY (36), SELEX (15), SELECTED (12), SELECTIVELY (7), SELECTION (3), SELECTS and SELECT. A word-boundary grep for SCF returns 41 files and 153 occurrences, essentially all of them the SKP1-CUL1-F-box ubiquitin ligase, while SCF is UniProt's entry name and a curated gene-name synonym for KITLG.
UniProtKB P21583 (SCF_HUMAN) - Kit ligand; primary gene name KITLG, synonyms MGF and SCF · UniProtKB 2026What this evidence cannot show
Corpus counts measured 2026-09-22 with ripgrep over data/graph/nodes; they will drift as the corpus grows and are recorded with that date. The SCF occurrence count includes 2 instances of the string SCFR, which is KIT's own alias and is a third sense of the same three letters. The UniProt half of the claim was read from the live P21583 record.
Evidence that argues against this (1)
- The direction of each trap matters and they differ: the SELE trap produces a FALSE SENSE OF COVERAGE (89 files looks like a well-documented gene and the true figure is 1), while the SCF trap produces FALSE RESULTS (a search returns a large, genuinely relevant-looking literature about the wrong molecule). The first is caught by reading the matches; the second is not, because the matches are on-topic for this project. UniProtKB 2026
- E4established confidence 5 of 5: Multiple independent lines of evidence; treated as settled in the field.database
gene_exact:LEPR AND organism_id:9606 AND reviewed:true returns two reviewed human records and returns O15243 (LEPROT, 131 aa) before P48357 (LEPR, 1,165 aa), because LEPROT carries LEPR as a synonym.
What this evidence cannot show
Fetched live 2026-09-22; the primary gene name and sequence length were read back from both records before selection, as the accession-resolution rule requires. Result ordering in the UniProt search API is not contractual and could change, which makes this a trap to check rather than a fixed fact to memorise.
Evidence that argues against this (1)
- The length discriminator that catches this one (131 versus 1,165) does not generalise: this project has recorded cases where the two candidate accessions differ by three residues - HLA-A 365 aa and HLA-B 362 aa - which is below any usable threshold. Reading the primary gene name back, not the length, is the check that always works. UniProtKB 2026
- E5strong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.database
Four esearch queries in this session returned an empty querytranslation with no count field and all four returned normal results on re-run within a minute, with true values of 11, 2, 4 and 0; a genuine zero is distinguishable because it returns a non-empty querytranslation together with a warninglist containing the outputmessage 'No items found.'
NCBI E-utilities esearch, db=pubmed - rejection-ledger queries with querytranslation readback and rule-67 controls · NCBI PubMed 2026What this evidence cannot show
Observed over roughly forty queries in one session on one network, so the rate of about one in ten is this session's rate and not a property of the API. No HTTP status was captured, so whether these were rate-limiting responses, transient upstream failures or something else is unknown - only the shape of the response is recorded.
Evidence that argues against this (1)
- This failure mode is aligned with the hypothesis a bounded-absence beat is testing, which is the same structural hazard rule 67 was written about: the broken result and the desired result look identical. Two of the four affected queries were for CXCR4, the single most important molecule in this beat. NCBI PubMed 2026
successor rejection ledger for the protein layer of the same beat
measures the SCF symbol collision recorded in that entry
measures the gene_exact:LEPR ordering trap recorded in that entry
measures the SELE substring collision recorded in that entry
- related to →Nestin+ mesenchymal stem cell — the niche cell that MLL-AF9 leukaemia wakes up and then loses
nestin deferred rather than rejected; the NES token in this corpus means nuclear export signal
the rejection half of the same census