What we found, strongest first
Seven sections, ordered by what is most solid and least flattering rather than by what is most exciting. It opens with four things we got wrong and corrected, then a pre-registered test of our own central claim that failed, then the measurement of how far a whole-organism simulation actually is.
Every number on this page is read from a committed file when the page is built. Nothing is typed in by hand, so a figure here cannot drift from its source. Each result prints the path it came from. Where a source carries no value, the page says so instead of guessing.
node dashboard/build-results.mjs
Page built 2026-11-01T15:36:15.256Z. Source files as last built:
| thread | built | file |
|---|---|---|
| design-validation | 2026-10-31T22:09:19.414Z | design-validation/scorecard.json |
| simulation-readiness | 2026-10-31 | simulation-readiness/readiness.json |
| crosscheck-frontier | 2026-10-31T22:11:42.044975Z | crosscheck-frontier/crosscheck.json |
| nanopubs-index | 2026-10-31T22:12:39Z | nanopubs-index/index.json |
| lean eliminate (physiology) | 2026-11-01T04:43:43.510Z | lean/eliminate/ledger.physiology.json |
| lean laws | 2026-10-31T22:58:17.754Z | lean/laws.json |
| lean mutation testing | 2026-11-01T03:04:36.640Z | lean/mutations.json |
| genotype map (vetted) | 2026-10-31T22:27:24Z | genotype/map.vetted.slim.json |
No bird data appears anywhere on this page: class Aves is this project's frozen holdout, and the drafts covering it are indexed but deliberately not grounded.
What we corrected
Four claims this project had published were wrong or overstated, and all four were corrected on the same day. Three were caught by our own checks; one was caught by a collaborator's independent graph. None was quietly edited: each is a record that states what we said, what the source says, and what changed.
A proposed gja5a link to fin length
Found by: our own check (the cell-cell subagent)
An earlier note from this thread offered Daane 2021's `gja5a` convergent substitution as a second link between the flying-fish genomics and the bioelectric fin-size story. The cell-cell subagent checked it and the link does not hold: the fin-length connexin in zebrafish is `gja1b` (cx43, the `short fin` locus), `gja5a` has no ZFIN fin expression or phenotype record, and Daane 2021's own text puts cx43 under *constrained*, not accelerated, evolution along the flying-fish branch. The `gja5a` substitution stays in the map's `fin_size` block as the paper's own data, and it is kept out of any causal chain. The real connexin tie to the potassium-channel story is `gja1b` with Seaver 2025, which is independent of Daane.
| records in the collaborator's graph that assert the link we retracted | 0 |
genotype/nanopubs/DECISIONS.md · crosscheck-frontier/crosscheck.json (row G4)
"Almost no molecular data exists for flying fish"
Found by: the project lead, reading a primary source the thread had not read
An annotated genome does exist: Xu et al. 2021 assembled 23,611 predicted protein-coding genes for Hirundichthys speculiger (mirrorwing flyingfish), of which 23,492 (99.5%) carry at least one database hit. What flying fish lack is expression and phenotype data, not genes.
And the caveat that keeps it honest: at least one sequence-similarity or domain hit in one of four databases, and nothing more. TrEMBL alone accounts for 23,477 of the hits, and TrEMBL is automatically generated and unreviewed, so 99.5% is a measure of database coverage rather than of understood function.
| predicted protein-coding genes | 23,611 |
| with at least one database hit | 23,492 |
| of those, hits from TrEMBL alone (unreviewed, automatic) | 23,477 |
| hits from SwissProt, the only manually reviewed set | 21,453 |
| occurrences of "RNA-seq" or "transcriptome" in that paper, counted | 0 |
| project files whose constraint wording was rewritten | 9 |
genotype/map.vetted.slim.json (flying_fish_genome) · genotype/nanopubs/unsigned/correction-flying-fish-genome-exists.trig
"No ray-to-inter-ray signalling arrow could be sourced in any fin of any fish"
Found by: our own nanopublication curation pass, not the thread that wrote it
Ray-to-inter-ray signalling is established in the zebrafish caudal fin by grafting and niche experiments. One query returned three papers that contradict the universal sentence. What survives is the far narrower claim that no fetched source names a ligand in one compartment and its receptor in the other.
And the caveat that keeps it honest: The cause is a process failure, not only a fact error: a title-only read was allowed to support a universal negative, and one of the three papers was already cited by the same thread.
| papers that contradict the universal claim | 3 |
| of those, papers that defeat the narrowed claim | 0 |
| of those, papers this thread already held and had read title-only | 1 |
| of those, studies in the pectoral fin (all three are caudal-fin work) | 0 |
genotype/nanopubs/unsigned/correction-ray-interray-null-narrowed.trig · nanopubs-index/README.md (finding 1)
"The TFF’s wings (aspect ratio 17.9) are more slender than any measured flying fish (3.0-16.9)"
Found by: our own parametric-model fix pass, reading Fish (1990) and Park & Choi (2010) in full
The two numbers used different definitions. 17.9 is span squared over the area of both pectoral fins (Park & Choi S^2/A1); Fish (1990) divides by pectoral plus pelvic fins plus the body between them. On Fish’s definition the TFF is at most 13.9, inside his range. What survives: 17.9 is 1.7 times the one measured specimen (10.68).
And the caveat that keeps it honest: The same pass found the adult flying-fish mass differs 2.2x between the one wind-tunnel specimen (0.060 kg) and the population length-weight fits (0.100-0.132 kg). The 9.9 m/s minimum flight speed holds only for the specimen; at population mass it is 12.7-14.6 m/s, still inside the quoted 10-20 m/s.
| TFF aspect ratio, Park & Choi convention | 17.906 |
| TFF aspect ratio, Fish 1990 convention (upper bound) | 13.902 |
| measured specimen, Park & Choi convention | 10.68 |
anatomy-model/parametric/CHANGELOG.md · physics/flier/tff/SPEC-MISMATCHES.md (item 1) · physics/results.json (overall.sentence)
"Sustained aerobic powered flight is 29 to 38 times short; no teleost the measured record allows has an aerobic ceiling above 0.0458 W" (E3)
Found by: the studio engine, when a real zebrafish broke our own aerobic bound
Run on an unedited adult zebrafish, the studio flagged the fish red for swimming at speeds it was measured to sustain. The Fick ceiling (efficiency × oxycaloric × cardiac output × arterial O2) used a cardiac output borrowed from schoolmaster snapper, 58.48 ml/min/kg. A measured zebrafish at U_crit takes up 2630 mg O2/kg/h (Palstra et al. 2010, PLoS One 5:e14483, PMC3013094), 2.8 times the 950 the ceiling allowed; even its standard metabolic rate is 1.5 times over. The same proxies set the flying-fish numbers. With a zebrafish-derived O2 delivery (1600 mg/kg/h scaled to 60 g) and a skeletal-muscle efficiency (0.23, Gladman & Askew 2024) the envelope becomes 0.0833 W, and the flying-fish shortfall is about 10 to 30 times (central about 20), not 29 to 38. E3 is now version 2.0.0, scoped to its sources; version 1.0.0 is kept. What survives: sustained aerobic flight is still ruled out by an order of magnitude.
And the caveat that keeps it honest: No flying-fish respirometry exists in the project, so the correction is a cross-taxon transfer like the original proxies. No zebrafish cardiac output during exercise was found; which of cardiac output or blood O2 content is low is inferred through Fick. Every case keeps propulsive efficiency at 1 and the best L/D, so the real shortfall is larger than each figure.
| zebrafish MO2 at U_crit, measured (mg O2/kg/h) | 2,630 |
| O2 uptake the old ceiling allowed (mg O2/kg/h) | 950 |
| old E3 envelope at 0.06 kg (W) | 0.046 |
| new E3 envelope at 0.06 kg (W) | 0.083 |
| flying-fish shortfall, original snapper proxies (×) | 38 |
| flying-fish shortfall, new E3 envelope (×) | 16 |
| flying-fish shortfall, corrected central (×) | 20 |
physics/FICK-CEILING-CHECK.md · lean/registry/laws/E3.json · lean/registry/law-versions/E3@1.0.0.json · lean/empirical.json (E3) · sim-engine/scenarios/current.mjs
"The papers disagree on sign" about the membrane-potential change caused by gain-of-function kcnk5b
Found by: trying to FORMALISE the dispute in Lean: writing both arms as named hypotheses forced a check of which paper asserted which sign, and the attribution did not survive it
Jiang 2024 proposes a RECONCILIATION of the two readings, not a contradiction of Perathoner 2014: the increased K+-channel activity first hyperpolarizes the membrane potential, and this increase immediately activates Na+ channels to depolarize the cells. Our own stored evidence held that sentence all along — it is in genotype/causal-chains.json with full-text provenance — but the prose summary built from it dropped the third position and recast a reconciliation as a dispute, putting a disagreement in a cited author’s mouth.
And the caveat that keeps it honest: The scientific gap is real and unchanged: no steady-state membrane potential of a wild-type versus alf zebrafish fin-bud cell exists in any source we have fetched, so the direction in the tissue that matters is unresolved. What changed is that it is now a three-arm open question rather than a two-sided dispute, and the two published readings are provably NOT formally contradictory — they conflict only under an added same-preparation premise, carried explicitly as a Lean hypothesis.
| arms, after formalisation | 3 |
| arms formally contradictory without a same-preparation premise | 0 |
| steady-state fin-bud membrane potentials in any fetched source | 0 |
genotype/CAUSAL.md (kcnk5b row; unresolved-questions list) · lean/registry/open-questions/questions/oq-kcnk5b-vm-sign.json · lean/registry/open-questions/lean/KcnkSign.lean
"lat4a = ZFIN slc43a2a, settled"
Found by: a collaborator's independent graph (record gx-problem-lat4a-identity), concurring with our own HANDOVER.md note
The question had to be split, because the answer differs for its two halves.
Which zebrafish gene carries the paper's mutant allele
slc43a2a, on two records a name lookup cannot reach:
- Daane 2021 mapped the nr21 mutation to chromosome 15; slc43a2a is on chromosome 15 and slc43a2b on chromosome 10 (NCBI Gene 393221, 494042, fetched 2026-10-31)
- ZFIN features-affected-genes: allele dmh26 (the paper's nr21) 'is allele of' slc43a2a
Withdrawn as a resolving record, because it names the family and not the paralogue: human SLC43A2 aliased LAT4: names the family, not the teleost paralogue; Ensembl display name SLC43A2 on the medaka gene: names the family, not the paralogue.
Which paralogue carries the flying-fish signal
Candidates: slc43a2a or slc43a2b.
- phyloP on the flying-fish branch,
slc43a2b: accelerated, p=1e-05 - phyloP on the flying-fish branch,
slc43a2a: accelerated, p=0.00837 - relative evolutionary rate for gliding sits on
slc43a2b(rho 0.324, p 0.00654, q 0.253) — not significant after correction
The convergent F326L substitution is listed on one medaka gene id which the sequences thread assigns to slc43a2a, but both paralogues carry acceleration, so the comparative signal is not paralogue-resolved.
| rows of the cross-check that DISAGREE with us (this is the only one) | 1 |
genotype/map.vetted.slim.json (fin_size.verified_leads[].paralogue_check) · crosscheck-frontier/crosscheck.json (row G5)
The design test failed, and the claim is dropped as unsupported
Validation of the DESIGNED organism (the "winged zebrafish") against the REAL flying fish (Exocoetidae), genetically and phenotypically.
Pre-registered and hash-verified. design-validation/PREREG.md was hashed to sha256 ea6f99eb25b48cdb… at 2026-10-31T22:00:34Z, hashed before the first number was produced.
The hash in PREREG.sha256 matches the one the scorecard records, checked in this build.
The one honest sentence, from the report: On the axis the whole design is about we cannot say how close it is, because the measurement exists only inside a figure we refused to digitise; the one morphological axis that can be scored puts the design exactly on the zebrafish and none of the way to the flying fish; and genetically the design reproduces 1 of the 74 loci known to differ in flying fishes (1.4 %), that one being a real convergent hit on `lat4a`/`slc43a2a` while the other half of the design is a gene with no flying-fish evidence at all.
And: the design is not ours.
design-validation/scorecard.json · design-validation/PREREG.md · design-validation/PREREG.sha256 · design-validation/REPORT.md · design-validation/RUNS.md
Part 1 — the per-axis table: 1 of 10 axes scorable
f = (design − zebrafish) / (flying fish − zebrafish): 0 means the design has moved none of the way from the baseline to the target, 1 means all of it. Greyed rows could not be scored at all.
| # | axis | zebrafish | flying fish | design (model) | f | verdict |
|---|---|---|---|---|---|---|
| 1 | pectoral fin length / SL | NO VALUE | 0.687 | NO VALUE | — | – CANNOT SCORE |
| 2 | caudal fin length / SL | NO VALUE | NO VALUE | NO VALUE | — | – CANNOT SCORE |
| 3 | median (dorsal and anal) fin length / SL | NO VALUE | NO VALUE | QUALITATIVE ONLY | — | – CANNOT SCORE |
| 4 | lower caudal lobe / SL (hypocercality) | NO VALUE | NO VALUE | QUALITATIVE ONLY | — | – CANNOT SCORE |
| 5 | lepidotrichial segment length | 290.7 micrometres | NO VALUE | NO VALUE | — | – CANNOT SCORE |
| 6 | pectoral fin ray count | 10 | NO VALUE | NO VALUE | — | – CANNOT SCORE |
| 7 | body mass vs standard length exponent b | 3.22 | 2.981 | 3.22 | 0.00 | ✕ FAIL |
| 8 | lateral fin area vs SL exponent | NO VALUE | 1.834 | NO VALUE | — | – CANNOT SCORE |
| 9 | wing loading vs SL exponent | NO VALUE | 1.236 | NO VALUE | — | – CANNOT SCORE |
| 10 | maximum body depth / SL | 0.2865 | NO VALUE | 0.2865 | — | – CANNOT SCORE |
Why nine axes cannot be scored (an axis can carry more than one reason)
| design value exists only in a figure (not digitised) | 3 |
| design value is qualitative only (a word, not a number) | 2 |
| no reference (flying-fish) value in any fetched source | 6 |
| no baseline (zebrafish) value in any fetched source | 5 |
an axis can carry more than one reason, so these do not sum to 9
Verdict: NOT CLOSE, and largely UNSHOWN. 9 of 10 axes cannot be scored. The single scoreable axis scores FAIL at f = 0.00. The axis the entire design claim rests on (pectoral fin length / SL) cannot be scored, and for two independent reasons at once.
Pre-registration deviation, logged: See RUNS.md deviation 1. The letter of the pre-registered rule would award "close" by default here, because none of the three FAIL triggers can fire at n_scored = 1. That reading is refused: the only scored axis is a FAIL, and the result is reported as NOT CLOSE.
design-validation/scorecard.json (part1_phenotypic)
Part 2 — the four genetic counts
lat4a/slc43a2aReading: the design reproduces 1.4 % of the loci known to differ in flying fishes: a real, named hit on one convergent locus, and negligible as a fraction.
Context: 74 loci against the 23,611 predicted protein-coding genes of the Hirundichthys speculiger assembly (Xu et al. 2021, fetched in this thread) = 0.31 % of the gene set. The 74 is what is KNOWN to differ, not what differs.
Half of the design has no flying-fish evidence: half of the design is a locus with no flying-fish evidence at all. It was chosen because it overgrows fins in zebrafish, not because flying fishes changed it.
POST-HOC (exploratory); not pre-registered, and not in the headline: with the phyloP sheet added to the denominator, A = 131 and C = 0.00763. adding the phyloP sheet to the denominator moves C below 0.01, into the pre-registered "negligible" band. The pre-registered answer stands; this is reported because the choice of denominator changes the band, and a reader is entitled to know that.
design-validation/scorecard.json (part2_genetic)
Part 3 — the Lean gate, for both arms
PASSES = no violated and no cannot-evaluate; FAILS = any violated; UNDECIDED = no violated but some cannot-evaluate. UNDECIDED IS NOT A PASS.
design-validation/scorecard.json (part3_lean_gate.tallies, .verdicts)
The real flying fish also fails
E3 (empirical, Delphi.Empirical.no_aerobic_flight_above_ceiling): level flight at 10 m/s needs 1.34645 W against an aerobic ceiling of 0.0458 W — short by a factor of 29.4. the REAL flying fish fails this row: level flight at 10 m/s needs 29 times its aerobic ceiling. This is the known and expected result (flying fishes glide, they do not fly), and it is exactly why a design that "passes" a row the real animal fails must be treated as suspicious rather than as better.
So failing does not separate the design from its target. the real flying fish ALSO FAILS the gate (E3, by a factor of 29), so "FAILS" does not separate the design from the target
And the gate is weak: 3 of 21 rows are decided
THE GATE IS WEAK. All 3 supplied inputs move a verdict, but only 3 of 21 rows are decided, and the two body inputs move the same single pair of rows (C7b and E2 are one fact). Lean is testing the design on body size, and on whether one amino-acid change is reachable in one nucleotide substitution. It is testing nothing aerodynamic, nothing developmental and nothing about the fins, which is the entire point of the design.
| input dropped | rows whose verdict changed |
|---|---|
SL_m | C7b E2 |
mass_kg | C7b E2 |
genotype_edits | G1 |
The design's 2 violations, with the qualification each carries
C7b (proved, Delphi.Constraints.exponent_rules_out, design-only). Needed: an implied mass exponent within 3 +/- 0.1 against the reference specimen. Available: 2.651.
the REAL fish is cannot-evaluate on this row only because it IS the reference specimen (lengthRatio = 1), so the row cannot test the animal it is calibrated on. The violation is real, but its content is a BODY-SIZE mismatch: a 4.4 cm, 1.06 g zebrafish against a 20.3 cm, 60 g flying fish.
E2 (empirical, Delphi.Empirical.weight_ratio_rules_out, design-only). Needed: {"exponent_between":[2.9,3.02]}. Available: {"exponent":2.65111}.
the same single underlying fact as C7b, not a second independent failure. Empirical band: a reader may reject the observation it rests on.
design-validation/scorecard.json (part3_lean_gate) · lean/eliminate/browser-check.mjs
Part 4 — the design is not ours, and the locus it "reproduces" is a different residue
YES, ENTIRELY. The design IS Daanes double heterozygote. Every phenotypic claim the design makes is a claim about an animal that Daane et al. already built, scored and published in 2021, and the authors had already stated that it phenocopies the flying-fish bauplan. That is a result about their experiment, not about us. Our contribution here is the validation arithmetic, not the organism.
YES: Daane et al. 2021 built exactly this double heterozygote and state it phenocopies flying-fish fin proportions. Its measurements are figure-only.
- the numbers are FIGURE-ONLY: Figure 4B pectoral fin length, Figure 4C caudal fin length, Figures S2A and S2B lepidotrichial segments. No numeric value appears in the text, the legends, or the fourteen sheets of Data S1.
- segmentation is regular, unlike the kcnk5b overgrowth mutant: a quality claim, not a measurement
- the overlap with flying fishes is at lat4a only, and the convergent flying-fish substitution is F326L while the zebrafish allele is T200K: a DIFFERENT residue in the same gene
- the glider RER signal and the strongest phyloP acceleration are on slc43a2b, the paralogue, not on the slc43a2a the allele sits in
What the authors actually wrote (4 quotations)
fin-type specificity, the actual resultInterestingly, double mutants between kcnh2alof/+ and lat4anr21/+ are viable and show specific, non-additive variation in proportion among fins: while all fins of kcnh2alof/+ are overgrown and all fins of lat4anr21/+ are shortened, the lat4anr21/+;kcnh2alof/+ fish show wild-type-sized medial fins, while the paired fins are overgrown (Figure 4).PMID 34534441
the caudal finSurprisingly, the caudal fin of kcnh2alof/+;lat4anr21/+, while generally wild type in size, is hypocercal, with an elongated ventral lobe.PMID 34534441
body size is not reducedThe nr21 mutant, however, does not have a statistically decreased body size (Figure 3B).PMID 34534441
the authors own flying-fish claimThe overall fin phenotype of the kcnh2alof;lat4anr21 fish is thus remarkably similar to that of flying fishes, suggesting the interaction between these two genes is sufficient to phenocopy this key innovation and organismal bauplan of flying fishes (Figure 4).PMID 34534441
design-validation/scorecard.json (part4_the_real_experiment) · genotype/compare-2x2.json
The joint result
Read as: far AND fails. PREREG rule 1: far AND fails means drop the claim outright.
But read it with these qualifications, which the pre-registration required:
- the two design violations are one fact (body size against a single reference specimen), and the real animal is untestable on those rows by construction
- the real flying fish ALSO FAILS the gate (E3, by a factor of 29), so "FAILS" does not separate the design from the target
- 18 of 21 rows are cannot-evaluate on the design, so the gate is weak and its FAILS verdict carries little information either way
- Part 1 is better described as UNSHOWN than as far: the measurement that would settle it sits in a figure we refused to digitise
What actually follows: The claim that we can DESIGN an organism is not supported by this validation, and the reason is not that the design scored badly: it is that the design is not measurable on the axes that define it, and the one genetic number that can be computed (1/74) says the design reproduces a single convergent locus out of everything known to differ. Dropping the claim outright under rule 1 overstates what this gate can tell us; the honest position is PREREG rule 2, drop the claim as UNSUPPORTED.
design-validation/scorecard.json (joint_result)
What a simulation would actually need
How far the 4,571-gene functional-annotation map is from a parameter set a whole-organism developmental simulation could run on
In one sentence: Of the 18,733 numbers a minimal dynamical model of these 4,571 genes would need, we hold 0, because the eight parameter classes a simulation runs on are not what any of the queried databases stores for zebrafish.
The most generous reading we could defend: 2972 / 18,733 = 15.8651% — and all 2972 of those are PaxDb ppm values, a share of total protein mass in a whole organism or a dissected organ, not a count per cell in a named cell type at a named stage
simulation-readiness/readiness.json (ratio, headline)
Item by item
| item | genes we hold it for | state | what a simulation needs, and the source's own verdict |
|---|---|---|---|
| (a) | 0 | – none held | absolute expression level in a defined cell type and stage, in molecules per cell or a calibrated concentration
No fetched source gives any of our genes an absolute abundance in molecules per cell, or a calibrated concentration, in a defined cell type at a defined stage. |
| (b) | 0 | – none held | protein half-life or degradation rate
No fetched database gives this quantity for any of our 4,571 genes. |
| (c) | 0 | – none held | mRNA half-life
No fetched database gives this quantity for any of our 4,571 genes. |
| (d) | 0 | – none held | transcription rate or promoter strength
No fetched database gives this quantity for any of our 4,571 genes. |
| (e) | 0 | – none held | binding affinity (Kd) for named partners, or Km/kcat if an enzyme
0 of 4571 genes (0.00%) have any kinetic constant in SABIO-RK, the one open kinetics database that answered. BRENDA's open endpoint holds no kinetic values at all. |
| (f) | 4 | ! partial | diffusion coefficient, for anything secreted
Diffusion coefficients exist for 4 secreted zebrafish molecules (Fgf8a, Lefty2, Squint, Cyclops), all measured in the GASTRULA, 2 read in a primary source and the rest quoted second-hand. Shh in the fin bud, which is what the first validation target needs, is an explicit placeholder. |
| (g) | 0 | – none held | Hill coefficient or equivalent cooperativity for regulatory inputs
No fetched database gives this quantity for any of our 4,571 genes. |
| (h) | 5 | ! partial | signed, directed, experimentally supported edge list between our genes, with strengths
449 of the 10,444,735 unordered gene pairs (0.00430%) have any direct experimental support in a fetched source (STRING experiments channel plus IntAct, both undirected and unsigned). Signed, directed, experimentally supported gene-gene edges with a named experiment: 5. With a strength: 0. |
Item (h) is a network, so its denominator is gene pairs, not genes: 449 of 10,444,735 unordered pairs (0.00430%) have any direct experimental support, and none of it is signed, directed and quantified.
simulation-readiness/readiness.json (items, checklist)
The figure the readiness thread drew
simulation-readiness/coverage.svg (embedded as built, not redrawn)
The worked example: one genome says it in one sentence
One species states the annotation-versus-parameter gap better than any aggregate: a genome with essentially complete functional annotation and, in the paper that reports it, none of the eight parameters.
Hirundichthys speculiger, the mirrorwing flyingfish: 23,611 predicted protein-coding genes, 23,492 (99.5%) annotated. Read: full text and both supplementary archives, fetched and parsed by this script.
And in that same paper, counted term by term: all 25 parameter-bearing terms occur 0 times in the full text — rna-seq, half-life, kcat, diffusion, hill coefficient, molecules per cell and the rest. The verification is a count, not an inference.
'Functionally annotated' here means at least one hit in at least one of four databases. TrEMBL alone supplies 23,477 of the 23,492, and a TrEMBL hit is a sequence-similarity match to an unreviewed entry, not a measured function. Annotation by homology is the weakest sense of the word.
simulation-readiness/readiness.json (worked_example)
The precedent, to size the task
The closest thing that exists to what is being asked: a model that predicts phenotype from genotype for every annotated gene of an organism.
- 525 genes, in 28 sub-models — the life cycle of a SINGLE CELL; no anatomy, no tissues, no development
- built from over 900 primary sources and more than 1,900 experimentally observed parameters
- that is 3.62 parameters and 1.71 publications per gene
Not a prediction, just the same parameter density applied to a larger gene set, to size the task. Development would need more, not fewer, parameters per gene: a zygote-to-adult model adds cell states, positions, divisions and movements that a single bacterial cell does not have.
simulation-readiness/readiness.json (precedent_m_genitalium)
What is simulatable today, and at what coarseness
- A reaction-diffusion model of one morphogen gradient over a continuum, not over genes — with the 4 fetched zebrafish diffusion coefficients plus the Fgf8 residence time and gradient length in sim-engine/params/zebrafish-morphogens.json. Coarseness: concentration in arbitrary units, one tissue, gastrula parameters carried to whatever stage is being modelled, which the file itself flags as an assumption
- A 2-node Boolean or qualitative model of the fin-size switch — with the 5 signed directed gene-gene edges in genotype/causal-chains.json cross_gene (kcnh2a, lat4a, kcnk5b, calcineurin) and the 12 calibrated interventions. Coarseness: signs and orderings, no rates; outcomes as larger / smaller / unchanged
- A growth and allometry trajectory for the whole animal — with development/ (staging, growth, allometry) and physiology/ (25 fetched sources). Coarseness: whole-organism, no genes in the loop; the genotype enters only through the 12 calibrated knobs on 19 morphology parameters
- A curated small network over a handful of cell states: the project's own estimate of its ceiling — with the 42 causal chains, the 30 tissue-to-tissue and cell-to-cell interactions, and the 449 experimentally supported STRING edges as a candidate topology. Coarseness: topology and sign where known; every rate constant would be a free parameter fitted or assumed, so the model would be a hypothesis generator, not a prediction
And what is not:
- A zygote-to-adult simulation in which the 4,571 genes are dynamical variables.
- Any model whose output depends on absolute concentrations, since not one gene has one, and ppm cannot be converted without a total protein count per zebrafish cell that no fetched source gives.
- Any model whose output depends on timescales, since no gene has an mRNA or protein half-life and no gene has a transcription rate: every timescale would be invented.
- A genome-scale regulatory network: 0.004% of gene pairs have direct experimental support, none of it signed, directed and quantified. The only genome-scale option is orthology transfer from human CollecTRI (17,804 transferable edges), which is a hypothesis list, not zebrafish data.
- Anything at all in a flying fish: see the worked example.
simulation-readiness/readiness.json (simulatable_today)
What held up
Results that survived their own checks today. Each carries the scope it holds in, and what it does not bound.
Aerobic flight is eliminated for the real flying fish — under named proxies
the physiology chain’s own proxy numbers put to the aerobic bound. The three candidates:
| candidate | verdict | eliminated on |
|---|---|---|
real-fish-sustained-aerobic-flightCould the real flying fish sustain level flight on aerobic power (the question of physics test 4)? | ✕ eliminated | C14accepts fick_aerobic_supply |
flier-F1-sustained-aerobic-cruiseCould the HYPOTHETICAL flier F1 sustain powered level flight at 7 m/s on aerobic power? | ✕ eliminated | C14accepts fick_aerobic_supply |
real-fish-aerobic-flight-at-vminThe same question at the minimum speed itself | ✕ eliminated | C14accepts fick_aerobic_supply |
The scope it holds in. eliminates the quantitative form given here to a source hypothesis, under the committed inputs (proxies where so labelled), not the source itself Every physiological input is a proxy from another teleost: cardiac output from snapper, arterial oxygen content from a trout curve, efficiency from salmon ventricle.
What it does NOT bound. The hypotheses that could be wrong are the proxies, and the theorem does not bound burst power on white-muscle stores, which is what the fish actually uses. It also cannot rule on 150 constraint evaluations across the three candidates, every one of them for a missing input.
Rank nothing by elimination count: a problem with more eliminated candidates is not more solved; it only had more candidates these theorems happen to touch.
lean/eliminate/ledger.physiology.json · lean/AUDIT-FLYING-FISH.md
The single-glide bound
the single-glide model's hypotheses fail for the field figures: from 8 m with the stuffed-model (L/D)max 4.37 the bound is 35.0 m, below the 400 and 50 m reported; with the theoretical (L/D)max 15.7 it is 126 m, which covers 50 m but not 400 m. The theorem is untouched; what fails is the reading that a field flight is one unpowered glide (taxiing thrust from the tail, repeated touch-and-go and wind are outside the model)
What that means: the pure-glide reading of the field distances is ruled out with the measured L/D.
And the minimum-speed bound holds on the measured specimen: The exact minimum-speed bound HOLDS on the Park and Choi specimen: v_min = 9.85 m/s for specimen L3 (W 0.5886 N, reference area 0.012688 m2, C_Lmax 0.78, rho assumed 1.225) is below the quoted field airspeeds of 10 to 20 m/s, so the real fish is inside its own lift envelope; the illustrative claim of 5 m/s is ruled out.
lean/AUDIT-FLYING-FISH.md (glide_range_le, vmin_le) · physics/glide-data.csv
Every theorem put against the real flying fish
Applicability, as the audit records it: yes-under-named-hypotheses 99 · yes 38 · no 15. A theorem is never falsified by data; its hypotheses are.
And the statements are not vacuous: 63 mutants of the Lean statements and data were generated and 63 were rejected, with 19 of 19 controls passing, in 347.3 s wall clock (3.91× speedup over summed compile time).
The law catalogue: 41 laws, of which 23 proved, 1 proved from a named hypothesis, 2 stated-not-proved (a named hypothesis), 7 not formalised, 6 empirical observation, 1 project convention, 1 proved (listed with the observations). Coverage is explicit: "proved" entries come from the compiler's report and the constraints file; "stated-not-proved" entries are hypotheses the modules carry by name; "not formalised" entries are gaps the Studio must not treat as checked. "All the biological laws" is not a closed set; this file is what the project has, and every law not here is unchecked.
lean/AUDIT-FLYING-FISH.md · lean/mutations.json · lean/laws.json
Six things the literature does not support in zebrafish
Each was proposed from tetrapod limb biology or assumed across fishes, and each was checked against the zebrafish evidence.
| status | the assumption, and what the evidence says |
|---|---|
| ✕ not-established | The tetrapod AER/mesenchyme feedback loop runs on Fgf AND Wnt signals in both directions in the zebrafish pectoral fin. The Fgf arms are supported in zebrafish, but the Wnt arm is explicitly NOT established there. Leerberg 2019 states that the Wnt-mediated induction of AER Fgfs known from chick and mouse 'has yet to be established in zebrafish'. |
| ✕ refuted | AER Fgf8/Fgf24 signal back to the mesenchyme to maintain mesenchymal fgf10 expression, as in mouse and chick. This specific leg is a hypothesis in zebrafish and is contradicted by the one zebrafish experiment that separates the two. Leerberg 2019 writes that it is only 'likely' by analogy to chick and mouse. |
| ✕ not-established | The ZPA is the source of anteroposterior positional information in the zebrafish pectoral fin bud, as Shh is in the tetrapod limb. Only partly. In shh-null sonic you mutants some aspects of anteroposterior polarity are set up WITHOUT Shh and only later depend on it for maintenance, so the zebrafish ZPA is not the sole source of anteroposterior information. |
| ✕ refuted | Shh from the fin basal epidermis drives proliferation of the underlying skeletal progenitors during ray growth and regeneration. Refuted for proliferation. Braunstein 2021 found no change in EdU+ intra-ray cells under Smoothened inhibition and states that earlier pro-proliferative conclusions may have been cyclopamine off-target effects… |
| ✕ refuted | wnt10a signalling maintains the pectoral fin fold (ZFA:0005317). Shown for the MEDIAN fin fold, not the pectoral fin fold. wnt10a mutants collapse the median fin fold and fail adult unpaired fin metamorphosis; the abstract reports no pectoral fin fold phenotype, and the mechanism is loss of distal character (dlx2a, then col1a1a and other ECM genes) and actinotrichia positioning, not a named ligand acting on a receptor in… |
| ✕ refuted | HGF/MET is the conserved signal that pulls muscle precursors into the paired fin, so it can be assumed for any fish fin. It holds in zebrafish (met CRISPR null loses pectoral abductor muscle) but not across gnathostomes: in shark, Hgf and Met are not expressed at the right time or place for fin muscle precursor delamination and migration. |
genotype/nanopubs/unsigned/refutation-1…6-*.trig · nanopubs-index/index.json
Two data pitfalls with no prior published report
- Ubergraph stores ontology cross-reference values as xsd:string-typed literals, so a SPARQL VALUES block of plain literals matches nothing and returns an empty result with HTTP 200: the same query for the pectoral fin's ZFA cross-reference returned 0 rows with a plain literal and 1 row with a typed literal
genotype/nanopubs/unsigned/gotcha-ubergraph-typed-literals.trig - Bgee 15.2 and ZFIN's Ensembl 1:1 table use different Ensembl releases, so 1614 zebrafish genes (fgf10a and shha among them) appeared twice under different ids until merged on exact symbol
genotype/nanopubs/unsigned/gotcha-bgee-zfin-ensembl-release-mismatch.trig
No prior published report of either pitfall was found. The grounding searches returned only the databases' own resource papers and unrelated ontology work, so these appear to be new contributions. Both records should cite the resource papers they are about, and currently cite none of them.
nanopubs-index/README.md (literature grounding) · nanopubs-index/index.json
The sequence results
Gliders do not converge at these genes. Across the nine fin genes, 11 alignment columns show a residue shared by gliders of two or more lineages and absent from their non-gliding relatives, against 17 columns for the role-swapped baseline. At the lat4a site where flying fishes and gliding halfbeaks carry L, every other glider and flier with data carries F: the fish convergence does not extend to mammals. Gliders do not resemble each other more than they resemble other lineages' non-gliders (see mean_identity_cross_lineage): identity follows ancestry, not gliding. Most of the few 'convergent' columns pair colugos with bats, two lineages whose control is the same human sequence, so a human-specific residue alone produces them; they are not evidence of shared glider biology.
lat4a site 326 carrying F. Only the flying fish carries L: the fish convergence does not extend to mammals.The nine genes were chosen from zebrafish fin biology, not from glider biology, so absence of convergence here says nothing about the rest of the genome. Birds (class Aves) are excluded until the project holdout exam runs.
The derived-site panel is not a dose-response
| group | species sequenced | pectoral fin / SL, group median | mean derived states of 38 sites |
|---|---|---|---|
| needlefish or saury (non-gliding) | 12 | 0.088 | 0 range [0,0] |
| halfbeak (non-gliding) | 12 | 0.14 | 0 range [0,0] |
| flying (gliding) halfbeak | 2 | 0.274 | 24 range [23,25] |
| flying fish (Exocoetidae) | 9 | 0.687 | 21.4 range [17,24] |
Slightly inverted, and not a test. Gliding halfbeaks, at a fin ratio of 0.274, carry 24 of the 38 derived states; flying fishes, at 0.687 — roughly 2.5× the fin ratio — carry 21.4. The count goes slightly down as the fin gets longer, so derived-state count does not scale with fin length.
- A LADDER TO READ, NOT A TEST. Four groups (needlefish/saury, halfbeak, gliding halfbeak, flying fish) is far too few for any statistical claim.
- THE NON-GLIDERS SCORE ZERO BY CONSTRUCTION. Sheet G lists only substitutions shared by gliders and ABSENT from outgroups, so non-gliding species carry the ancestral residue at these sites by definition; the zero is circular and is not a finding.
- TRACKING IS NOT CAUSING. A residue that changes along with fin length across the series is consistent with involvement and is not evidence of causation.
And the scale of the edit, against natural divergence
The winged zebrafish differs from its reference by 2 edited loci and 1 amino acid. In just the 37 causal-chain proteins with medaka orthologues, zebrafish and medaka (same class, different orders) differ by 7300 amino-acid substitutions (16054 positions counting indels) (median identity 79.2%); zebrafish and a bat (Myotis) by 10205 substitutions in 33 proteins (median 74.0%); zebrafish and human by 10765 substitutions in 37 proteins. A handful of edits against thousands of differences in a few dozen proteins, and these are only the coding differences in a tiny gene sample: the genome-wide difference, coding and non-coding, was not measured here and is necessarily larger.
sequences/gliders.json · sequences/progression.json · sequences/engineered-diff.json · sequences/README.md
Independent cross-check against a collaborator's graph
DELPHI headline findings cross-checked against the collaborator's Delphi Frontier knowledge graph. One row per compared claim. Read-only: no write tool was called against their server and no credential was used or requested. Every statement about their graph comes from a call logged in calls.json.
The strongest corroboration
Our most load-bearing caveat holds from outside. Transfer of the lat4a x kcnh2a result to flying fishes is HYPOTHESIS ONLY: no flying-fish gene has ever been manipulated, the two conceivable routes (reverting lat4a F326L; reverting the kcnh2a regulatory state) are untested in any organism, and the one double mutant that changes fin proportion redistributes size between fins rather than scaling one fin up.
This is the strongest independent corroboration in the whole cross-check. Four separate records, from two different issuers and three different retrieval routes (Europe PMC abstract, NOAA full-text PDF, a local repository source register), all keep the transfer at hypothesis level; one of them types it that way in the schema itself (payload.origin = 'hypothesis'), and the Daane documentary registration calls it in terms 'an unestablished transfer hypothesis'. We searched their graph for any record asserting the transfer as established and found none. Their Problem also names the specific untried next step we do not have: search the 53 exocoetid SRA records for paired-fin lat4a/kcnh2a expression.
crosscheck-frontier/crosscheck.json (row G3) · crosscheck-frontier/REPORT.md (section 1.1)
The one disagreement
internally inconsistent: map.json says settled, HANDOVER says unproven. A genuine conflict on the same question from overlapping sources, and they are probably right. Both sides consulted ZFIN and NCBI Gene; they report 'lat4a' as neither a ZFIN symbol nor an alias, with 0 hits in NCBI Gene and UniProt, and they name slc43a2b as a second candidate our map never considers. Our 'settled' rests on an indirect chain (a human alias plus a ZFIN curator's attachment of the paper's phenotypes to slc43a2a), which is an inference, not an identity. Our own HANDOVER.md already flags the overstatement, so the real disagreement is between two of our files, with the collaborator on the side of our HANDOVER.
Our files: genotype/map.json; genotype/README.md; genotype/HANDOVER.md
crosscheck-frontier/crosscheck.json (row G5) · crosscheck-frontier/REPORT.md (section 2.1)
Two traps a reader must know about before counting any of this as agreement
Their Lean check shares our Mathlib pin
Our lean/lake-manifest.json pins mathlib at 56a005855ea17e0b…. Their receipt declares 56a005855ea17e0b…. These are the same revision, compared in this build. So two apparently independent Lean checks share a trusted base.
Worse, their receipt bytes cannot be retrieved: their catalogue reports 0 artifacts declared downloadable, 0 hosted and byte-checked, and 0 formal receipt contents read. If their check is cited anywhere, it must be cited as a declaration we could not verify.
lean/lake-manifest.json · crosscheck-frontier/crosscheck.json (row L2) · crosscheck-frontier/REPORT.md (section 2.3)
Much of their store is a bulk import of our registry
A large part of namespace node-a is a bulk import of DELPHI's OWN nanopublication registry: claim ids thompson1917-*, darwin1859-*, wolfram2002-*, levin-*, hamilton-*, and Evidence ids delphi-claim-test--*. They carry our claim IRIs under w3id.org/delphi/resource/claim/, our nanopub paths, our extractor agent id, our 'verification: lean' flags, and sources at github.com/fractastical/delphisci read 'through the keyless delphisci MCP'. A match on any of those ids is our own work reflected back and is never independent corroboration.
Of 1,287 claim versions in their store, 1,248 are in the node-a namespace and 39 in delphi-frontier; 1,214 declare no origin. Nothing in their store is accepted: every record examined carries imported_unreviewed or proposed.
crosscheck-frontier/crosscheck.json (reading_rules, their_store_as_measured)
No bird data was requested or reported anywhere in this cross-check: Aves is this project's frozen holdout.
The corpus: 157 unsigned drafts, and nothing published
Indexed: every unsigned nanopublication draft in the repo, plus the signed darwin-origin corpus counted separately. Snapshot 2026-10-31T22:12:39Z.
Drafts by thread
| thread | drafts |
|---|---|
lean | 55 |
organism-design | 35 |
genotype | 21 |
claim-tests | 15 |
physics | 13 |
holdout | 9 |
swarm | 9 |
| total | 157 |
nanopubs-index/index.json
Validation result
np check
✓ 0 RDF parse errors
– 157 report "Valid (but not trusty)"
Checker: nanopub-java 1.95.0, one run per file. The project's recorded trap is real and was handled: np check exits 0 on an RDF parse error, so the verdict is parsed out of the transcript rather than taken from the exit code.
| issue reported on every record | records |
|---|---|
| Nanopub has no assertion template. | 157 |
| Nanopub has no signature element. | 157 |
| Unexpected graph uri: http://purl.org/nanopub/temp/np1/Head | 149 |
| Unexpected graph uri: http://purl.org/nanopub/temp/np1/pubinfo | 149 |
Each of those is expected and by recorded decision: the records are unsigned drafts using purl.org/nanopub/temp/ placeholders, which are replaced by trusty URIs at signing.
nanopubs-index/index.json (drafts[].validation) · nanopubs-index/README.md (Validation)
Plainly: nothing is signed and nothing is published
Nothing here is signed or published. Signing is the ORCID key owner's decision and is still open.
- 157 of 157 drafts carry no signature element, by design.
- 157 of 157 use no human ORCID for attribution: the creator is the software agent until the key owner approves and signs.
- A separate, older corpus of 247 records in
darwin-origin/nanopubs/signed/is signed and published, and is counted separately everywhere: SIGNED and published (trusty URIs, npx:hasSignature present). They are irreversible: corrections need a supersede, withdrawals a retract, both signed by the same identity. Nothing in this index touches them.
The decision that is pending is who holds the signing key. Publishing needs the key owner's explicit approval, test registry before production, and production never without it.
nanopubs-index/index.json (note, signed_corpus) · genotype/nanopubs/DECISIONS.md
What is still open
Read out of the "what should change", gap and limits sections the source files already carry. Nothing on this list was invented for the page.
What the cross-check says should change in what we claim
- Fix `genotype/map.json:1604`.
- State the shared Lean toolchain if their check is ever cited.
- Never count the `thompson1917-*` / `darwin1859-*` / `wolfram2002-*` / `levin-*` / `delphi-claim-test--*` records as external agreement.
- Nothing in the cross-check weakens the lat4a x kcnh2a caveat, the gja5a retraction, the aerobic-power elimination or any of the six refutations.
- Two optional strengthenings, if the lead follows them up:
- Add the Saro-Cortes stability-lift trade-off to the flier constraints
crosscheck-frontier/REPORT.md (section 5)
Findings that exist only as prose, with no record
List A: dashboard claims no nanopublication draft records. List B: drafts citing no external source.
- A1. Two whole threads have zero records
- A2. The sim-engine pre-registered test that FAILED
- A3. Genotype headline numbers with no record
- A4. Lean results with no record
- A5. Two of sixteen claim tests have no evidence record
- A6. Counting mismatches a reader will trip on
- B. Drafts with no external source — 15 of 157 drafts
nanopubs-index/gaps.md
Limits of the simulation-readiness measurement
- It measures databases, not the literature.
- SIGNOR was unreachable, not empty.
- PaxDb was sampled, not exhausted.
- BRENDA's licensed bulk data was not obtained.
- The 4-per-gene convention is a choice.
- None of this is flying-fish data
simulation-readiness/README.md (Honest limits of this measurement)
Four mismatches found by building the TFF spec as a mesh
Found by building the spec as a mesh, and logged rather than fixed. Among them: only 29.5% of the required flight muscle fits inside the body. That is a property of the specification, not of an animal.
- Two aspect ratios share one name (the substantive one)
- Rounding
- Two incompatible readings; no mesh satisfies both
- The flight muscle does not fit
physics/flier/tff/SPEC-MISMATCHES.md
Deliberately not done in the design validation
- Nothing was digitised from a figure.
- No zebrafish pectoral fin ratio was invented
- No bird data.
- No `measured` value in any source file was altered
- No personal identifier
design-validation/RUNS.md (Things that were deliberately not done)
Ideas not yet checked against prior art
Every idea or choice adopted in this project, with its origin. researched = survived a logged prior-art search; reach-synthesis = synthesised from other sources, not yet checked against prior art; serendipitous = arose by accident. Seeded 2026-10-31 by the hub; most entries are reach-synthesis because the research rule was adopted after they were made. See AGENTS.md, 'Standing order: every new idea is researched'.
| origin | ideas |
|---|---|
| reach-synthesis | 29 |
| serendipitous | 7 |
| researched | 5 |
36 of 41 adopted ideas have not survived a logged prior-art search.
decisions/ideas.json