{
 "version": "1.8.1",
 "created": "2026-11-01T05:37:39.883Z",
 "previous": "1.8.0",
 "commit": "7c10fef844c6005e42ce81b6e799403658267c7d",
 "note": "Retires test-loop-only-density-sanity. It was a LOOP TEST authored only to demonstrate that a law entering the registry reaches all eight surfaces without a code edit (lean/registry/LIVE-LOOP-DEMO.md), it was never a scientific claim, and it is retired now that the demonstration is captured. Law set 1.8.0 keeps pinning it as candidate, because law sets are immutable and the captured demonstration must stay reproducible; from 1.8.1 on lean_check excludes it and no surface evaluates it. Nothing else changes: the four genuine discovery candidates (turing-ddi, kimura-heterozygosity, maynardsmith-hawk-dove, fisher-kpp-speed) stay candidate and stay non-binding.",
 "laws": [
  {
   "law_id": "E1",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "Isometry fails within a species",
   "level": "empirical observation",
   "theorem": "Delphi.Empirical.not_isometric_area",
   "module": "lean/Delphi/Empirical.lean",
   "statement": "areaExponent < 2 and 1 < wingLoadingExponent, with the mass exponent in [2.90, 3.02].",
   "sources": [
    "physics/allometry.json (Davenport 1992, as the physics thread recorded it)",
    "physics/allometry.json (Davenport 1992, as the physics thread recorded it)"
   ],
   "scope": {
    "taxa": [
     "Exocoetidae"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "f1ef3d6938a0e49689c0a878a32c7161395b50070ba1047548c0ef265411e376"
  },
  {
   "law_id": "E2",
   "version": "1.1.0",
   "kind": "biological",
   "status": "accepted",
   "label": "The fitted mass exponent lies in [2.90, 3.02]",
   "level": "empirical observation",
   "theorem": "Delphi.Empirical.weight_ratio_band",
   "module": "lean/Delphi/Empirical.lean",
   "statement": "2.90 <= b <= 3.02; hence for a weight following one power law, r^2.90 <= W(L2)/W(L1) <= r^3.02 when r = L2/L1 >= 1.",
   "sources": [
    "physics/length-weight.csv (FishBase length-weight list page, rows with a locality and n)",
    "physics/length-weight.csv (FishBase length-weight list page, rows with a locality and n)"
   ],
   "scope": {
    "taxa": [
     "Exocoetidae"
    ],
    "life_stages": [
     "adult"
    ],
    "ranges": {},
    "applies_to": [
     "a mass exponent fitted over a size range: a length-weight regression, or a design that commits mass_exponent"
    ],
    "excludes": [
     "an exponent IMPLIED against the single reference specimen at a length ratio inside [0.905, 1.105]: ln(L/L_ref) is then too small to carry an exponent (about 1% relative uncertainty in L against the studio's 0.1 band), so the number says nothing about the fitted band. Commit mass_exponent from a fit instead. The real Park and Choi siblings L1 (ratio 1.0099), L2 (1.0296) and model N (0.9951) fell here and came back red against this law (blind evaluator, 2026-11-01)."
    ]
   },
   "constraint_scopes": {},
   "constraints": [
    "E2"
   ],
   "content_hash": "c46c6aecc14045d9be4cae2ae77b45f9963b3cbdc9e0826e902a192f4077dfe6"
  },
  {
   "law_id": "E3",
   "version": "2.1.0",
   "kind": "biological",
   "status": "accepted",
   "label": "Efficiency and O2 delivery lie in the ranges the cited sources support (widened after measured zebrafish)",
   "level": "empirical observation",
   "theorem": "Delphi.Empirical.aerobicCeilingV2_le",
   "module": "lean/Delphi/Empirical.lean",
   "statement": "eta <= 0.23, oxycaloric <= 19.35 J/ml and O2 delivery Q*Ca <= 0.0187 ml O2/s (1600 mg O2 kg^-1 h^-1 at 0.06 kg) imply an aerobic ceiling of at most 0.0833 W.",
   "sources": [
    "Palstra AP et al. (2010) PLoS One 5:e14483, doi:10.1371/journal.pone.0014483, PMC3013094, Results \"Swimming economy\" (MO2max at Ucrit 82.18 umol g^-1 h^-1 = 2630 mg O2 kg^-1 h^-1; 0.43 g, 28 C); Gladman NW, Askew GN (2024) J Exp Biol 227, PMC11583979 (contractile efficiency 0.37 x oxidative recovery 0.61 = 0.23); physiology/muscle.js (oxycaloric 13.54 J/mg at 0.7 ml O2 per mg). Analysis: physics/FICK-CEILING-CHECK.md section 5."
   ],
   "scope": {
    "taxa": [
     "Teleostei"
    ],
    "life_stages": [],
    "ranges": {
     "mass_kg": {
      "min": 0.06,
      "max": 0.06,
      "unit": "kg",
      "note": "the O2-delivery bound (1600 mg O2 kg^-1 h^-1) was converted to ml O2/s for a 0.06 kg fish; at any other mass the absolute bound 0.0187 ml/s is not the one the sources give"
     }
    },
    "applies_to": [
     "sustained aerobic power DEMAND: powered level flight, climbing flight, and sustained (aerobic) swimming — work the animal must pay for out of metabolism"
    ],
    "excludes": [
     "unpowered descent or glide: the work comes from potential and kinetic energy, not from metabolism, so W v / (L/D) computed for a descent is NOT a demand this law bounds. A real gliding flying fish compared against this ceiling comes back \"violated\" only because the caller converted a glide into a level-powered-flight requirement; that is an application error, not a violation (it happened to Park and Choi specimens making realistic glide claims, 2026-11-01).",
     "burst (anaerobic) effort paid out of white-muscle stores, which is what a flying fish is understood to use for take-off and taxiing"
    ]
   },
   "constraint_scopes": {},
   "constraints": [
    "E3"
   ],
   "content_hash": "1eea4e2760f44d835b32c3a65eadcb831131dd69b8ae03e0abbdc9dcb0f7b289"
  },
  {
   "law_id": "E4",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "Gills do not ventilate in air",
   "level": "empirical observation",
   "theorem": "Delphi.Empirical.stored_power_le",
   "module": "lean/Delphi/Empirical.lean",
   "statement": "uptakeInAir = 0; hence over a flight of duration t the mean aerobic power is at most E S / t for an O2 store S.",
   "sources": [
    "physiology/index.js (the chain sets uptake to zero in air) and its self-test, where the store drains",
    "physiology/index.js (the chain sets uptake to zero in air) and its self-test, where the store drains"
   ],
   "scope": {
    "taxa": [
     "Teleostei"
    ],
    "life_stages": [
     "juvenile",
     "adult"
    ],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "E4"
   ],
   "content_hash": "5e26ef0dda3272d4e73c4d38370000aa70a4da0fa9c2c8b11b85e2067c71ecba"
  },
  {
   "law_id": "E5",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "The observed pectoral/SL range",
   "level": "empirical observation",
   "theorem": "Delphi.Empirical.finRatio_outside",
   "module": "lean/Delphi/Empirical.lean",
   "statement": "0.406 <= pectoral/SL <= 0.823 for a measured specimen; a design outside the range is above or below it.",
   "sources": [
    "genotype/cache/daane2021_fin_ratios.json (Daane 2021 Data S1, sha256 4ffb805544d59c60)",
    "genotype/cache/daane2021_fin_ratios.json (Daane 2021 Data S1, sha256 4ffb805544d59c60)"
   ],
   "scope": {
    "taxa": [
     "Exocoetidae"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "6f0a70fc94f23d2e1383febf6f38054f1ef06329ea972da30fc5e188af084eac"
  },
  {
   "law_id": "E6",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "\"required for\" is never propagated down part_of",
   "level": "empirical observation",
   "theorem": "Delphi.Empirical.requiredFor_not_propagated_of_check",
   "module": "lean/Delphi/Empirical.lean",
   "statement": "No row of the map whose link type is \"required for\" is derived by propagating a link down a part_of edge.",
   "sources": [
    "the genotype map's own propagation_rules (genotype/map.vetted.json) and the hub's adopted rule",
    "the genotype map's own propagation_rules (genotype/map.vetted.json) and the hub's adopted rule"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "056856a04b0c58efa82bafcfdc77131cdc66ddee3aecf90f1d9cd70a26419802"
  },
  {
   "law_id": "E7",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "A lever lethal before the scoring stage cannot produce the phenotype",
   "level": "empirical observation",
   "theorem": "Delphi.Empirical.cannot_score_of_lethal_before",
   "module": "lean/Delphi/Empirical.lean",
   "statement": "death_hpf <= scored_hpf implies the phenotype cannot be scored in a living animal.",
   "sources": [
    "genotype/interventions.json (the genotype thread's own lethality notes, quoted in the value)",
    "genotype/interventions.json (the genotype thread's own lethality notes, quoted in the value)"
   ],
   "scope": {
    "taxa": [
     "Danio rerio"
    ],
    "life_stages": [
     "embryo",
     "larva"
    ],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "E7"
   ],
   "content_hash": "419a5d6c82ee1f210c23e02f1ac645cde125fe51a2c26d3e9b54652f5ae82c2c"
  },
  {
   "law_id": "E8",
   "version": "1.0.0",
   "kind": "biological",
   "status": "retired",
   "label": "A part cannot appear before its precursor",
   "level": "empirical observation",
   "theorem": "Delphi.Genotype.devOrdered_of_check",
   "module": "lean/Delphi/Genotype.lean",
   "statement": "Every develops_from edge goes strictly later in stage, and the relation is acyclic.",
   "sources": [
    "genotype/fin-subtree.json, certified in lean/Delphi/Certificates/FinDevelopment.lean",
    "genotype/fin-subtree.json, certified in lean/Delphi/Certificates/FinDevelopment.lean"
   ],
   "scope": {
    "taxa": [
     "Danio rerio"
    ],
    "life_stages": [
     "embryo",
     "larva",
     "juvenile"
    ],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "G3"
   ],
   "content_hash": "0972ef227e0a32d32530b731391552fa9ae237f824e97c2de15c474f7ea96b69"
  },
  {
   "law_id": "aerobic-power-bound",
   "version": "1.1.0",
   "kind": "biological",
   "status": "accepted",
   "label": "Sustained mechanical power is bounded by oxygen delivery (Fick) times efficiency",
   "level": "physiology",
   "theorem": "Delphi.sustained_flight_requires",
   "module": "lean/Delphi/Flight.lean",
   "statement": "With cardiac output Q, arterial and venous O2 contents Ca ≥ Cv ≥ 0, oxycaloric equivalent E and muscular efficiency 0 ≤ η ≤ 1, aerobic mechanical power is η E Q (Ca − Cv) ≤ η E Q Ca ≤ E Q Ca. A sustained power supplied aerobically is at most η E Q Ca; sustained flight needing P_req = W v/(L/D) requires η E Q Ca ≥ P_req; climb under an aerobic supply is at most (η E Q Ca − P_req)/W. If demand and supply are power laws in size with the supply exponent below the demand exponent there is a size above which supply falls short (crossover), so Thompson's size limit holds for any supply exponent below 7/2 without the muscle premise.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {},
    "applies_to": [
     "sustained aerobic power DEMAND: powered level flight, climbing flight, and sustained (aerobic) swimming — work the animal must pay for out of metabolism"
    ],
    "excludes": [
     "unpowered descent or glide: the work comes from potential and kinetic energy, not from metabolism, so W v / (L/D) computed for a descent is NOT a demand this law bounds. A real gliding flying fish compared against this ceiling comes back \"violated\" only because the caller converted a glide into a level-powered-flight requirement; that is an application error, not a violation (it happened to Park and Choi specimens making realistic glide claims, 2026-11-01).",
     "burst (anaerobic) effort paid out of white-muscle stores, which is what a flying fish is understood to use for take-off and taxiing"
    ]
   },
   "constraint_scopes": {},
   "constraints": [
    "C14",
    "C14b"
   ],
   "content_hash": "625196c223d44b8ea7ed1f09de7d8ada7b18d3591daf27bb8b27452d48df7249"
  },
  {
   "law_id": "altitude-coupling",
   "version": "1.0.0",
   "kind": "physical",
   "status": "accepted",
   "label": "Demand rises and supply falls with height together, so the flyable heights reach down to the ground",
   "level": "phenotype+physiology",
   "theorem": "Delphi.Altitude.feasible_downward_closed",
   "module": "lean/Delphi/Altitude.lean",
   "statement": "In an atmosphere where air density and oxygen partial pressure both fall with height, the minimum speed of lift-supported flight and the power to fly at it are nondecreasing in height, while the aerobic supply (with arterial content nondecreasing in partial pressure, as a Hill curve gives) is nonincreasing. Hence sustained flight possible at a height is possible at every lower height; above an infeasible height every height is infeasible, so the flyable set is an interval from the ground up to a ceiling; and a design that cannot fly at the ground cannot fly at any height. A larger lifting area lowers the power required at a fixed height.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "aa83377b72009d60785b78f92053d1d977fe399361e1f3dcb83f4d3e2d99feb2"
  },
  {
   "law_id": "aspect-ratio-induced-drag",
   "version": "1.0.0",
   "kind": "physical",
   "status": "proposed",
   "label": "Induced drag falls with wing aspect ratio (not formalised)",
   "level": "phenotype",
   "theorem": null,
   "module": null,
   "statement": "Induced drag falls with aspect ratio; L/D depends on fin shape.",
   "sources": [],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "e034463500508227a6a679aa662966289d6be1b655f7363260c9e68e2d05902c"
  },
  {
   "law_id": "blueprint-well-formedness",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "An emitted anatomical blueprint graph is well-formed under its own rules",
   "level": "phenotype (structure)",
   "theorem": "Delphi.Blueprint.wellFormed_of_check",
   "module": "lean/Delphi/Blueprint.lean",
   "statement": "For a finite graph of ontology terms with a body root, a level per node and part_of edges (part, whole): if every edge goes strictly down in level, every edge joins two nodes, and every non-root node has a whole, then part_of is acyclic (its transitive closure is transitive and strictly decreases the level, so nothing is part of itself) and every node reaches the root. With pinned taxon statements: no never_in_taxon on a kept term, a superclass or a whole names a taxon containing the blueprint taxon, and every in_taxon or stated_in_taxon names a containing taxon. A Boolean checker decides all of this, and its truth implies the well-formedness (wellFormed_of_check); each emitted blueprint gets a certificate the kernel evaluates by decide.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "C6"
   ],
   "content_hash": "f8485f2e1ff1d8eaff3acc4ac94ade5f63df8d95b24e03341ad3f8b38cc05f20"
  },
  {
   "law_id": "development-growth-asymptote",
   "version": "1.0.0",
   "kind": "biological",
   "status": "candidate",
   "label": "A von Bertalanffy grower stays strictly below its asymptotic length, and K alone sets the shape",
   "level": null,
   "theorem": "Delphi.LeanBio.Round2.GrowthAsymptote.von_bertalanffy_asymptote",
   "module": "lean/registry/proposals/development-growth-asymptote/law.lean",
   "statement": "For a cohort whose length at age follows von Bertalanffy, length(t) = Linf*(1 - exp(-K*(t - t0))) with asymptotic length Linf > 0 and Brody coefficient K > 0 (a named hypothesis), length is strictly below Linf at every age, strictly increasing in age, and two cohorts sharing K reach the same fraction of their own asymptote at the same age measured from their own t0, however different their asymptotic lengths.",
   "sources": [
    "doi:10.1007/BF00347505",
    "development/growth.json"
   ],
   "scope": {
    "taxa": [
     "Exocoetidae"
    ],
    "life_stages": [
     "larva",
     "juvenile",
     "adult"
    ],
    "ranges": {
     "asymptotic_length": {
      "min": 13.5,
      "max": 30.5,
      "unit": "cm (FL or TL as given per row)"
     },
     "brody_K": {
      "min": 0.86,
      "max": 3.65,
      "unit": "1/yr"
     }
    }
   },
   "constraints": [],
   "content_hash": "4dc9abbca960380d6e7660f70f0abe04b481c81c0dc0f68504174c05fb71b974",
   "archived": true
  },
  {
   "law_id": "disc-flying-fish-fin-ratio-gap",
   "version": "1.0.0",
   "kind": "biological",
   "status": "candidate",
   "label": "Flying fish pectoral/SL >= 0.406 > other beloniforms (machine-proposed)",
   "level": null,
   "theorem": null,
   "module": "lean/registry/proposals/disc-flying-fish-fin-ratio-gap/law.lean",
   "statement": "Every measured flying fish has pectoral/SL at least 0.406, and every measured non-flying-fish beloniform (flying halfbeaks, halfbeaks, needlefish) at most 0.389: the groups do not overlap (n = 49 flying fish, 60 others).",
   "sources": [
    "genotype/cache/daane2021_data_s1A_fin_measurements.csv (sha256 9c941299f5869e56), Daane 2021 Data S1"
   ],
   "scope": {
    "taxa": [
     "Beloniformes"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [],
   "content_hash": "928a33e5d1a27a12f8dba538d42de047a3be15b441ed4e7bde9e2be1a264a2bf"
  },
  {
   "law_id": "disc-heterurus-mass-exponent",
   "version": "1.0.0",
   "kind": "biological",
   "status": "contested",
   "label": "C. heterurus mass exponent 0.48-1.48 (machine-proposed, contested)",
   "level": null,
   "theorem": null,
   "module": "lean/registry/proposals/disc-heterurus-mass-exponent/law.lean",
   "statement": "Within Cheilopogon heterurus doederleini, body mass scales with body length as L^b with b inside its 95% CI [0.478, 1.484] (OLS on log-log, n = 14 specimens, b = 0.981, r^2 = 0.601).",
   "sources": [
    "physics/glide-data.csv (sha256 bc24245b5163723b), rows source_id makiguchi-2013 (specimen rows)"
   ],
   "scope": {
    "taxa": [
     "Exocoetidae"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [],
   "content_hash": "683058577f220c5b4f320f47e71958ba57a86801ae0d68319c633aeee86670eb"
  },
  {
   "law_id": "disc-measured-wing-loading-band",
   "version": "1.0.0",
   "kind": "biological",
   "status": "candidate",
   "label": "Measured flying-fish wing loading 37-46 N/m^2 (machine-proposed)",
   "level": null,
   "theorem": null,
   "module": "lean/registry/proposals/disc-measured-wing-loading-band/law.lean",
   "statement": "Every measured flying-fish specimen with mass and lifting area in the project has wing loading W/(A_pectoral + A_pelvic + A_body) between 37.025 and 46.375 N/m^2 (n = 4).",
   "sources": [
    "physics/glide-data.csv (sha256 bc24245b5163723b), Park and Choi 2010 Table 1"
   ],
   "scope": {
    "taxa": [
     "Exocoetidae"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [],
   "content_hash": "66ebf277e542505c3e5aefe008fb2e1fe338ef2ea866be3bd728f09c802284cc"
  },
  {
   "law_id": "disc-pectoral-length-allometry",
   "version": "1.0.0",
   "kind": "biological",
   "status": "candidate",
   "label": "Flying-fish pectoral length scales as SL^1.02-1.10 (machine-proposed)",
   "level": null,
   "theorem": null,
   "module": "lean/registry/proposals/disc-pectoral-length-allometry/law.lean",
   "statement": "Across museum flying-fish specimens, pectoral fin length scales with standard length as SL^b with the exponent inside its 95% CI [1.017, 1.099] (OLS on log-log, n = 49, b = 1.058, r^2 = 0.983).",
   "sources": [
    "genotype/cache/daane2021_data_s1A_fin_measurements.csv (sha256 9c941299f5869e56), Daane JM et al. 2021 Curr Biol doi:10.1016/j.cub.2021.08.054 Data S1 sheet A"
   ],
   "scope": {
    "taxa": [
     "Exocoetidae"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [],
   "content_hash": "35b2f3d381fdb93d9d009f4141a859e07c02dc72833ec32640dda8ab113ce159"
  },
  {
   "law_id": "elastic-similarity",
   "version": "1.0.0",
   "kind": "physical",
   "status": "proposed",
   "label": "Elastic similarity scaling (not formalised)",
   "level": "phenotype",
   "theorem": null,
   "module": null,
   "statement": "Bones thicken with size (d ∝ ℓ^(3/2)) rather than isometrically.",
   "sources": [],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "5e6ac27fd249ac9ff9ede60deae79a76e8ebeb82c3cf3b7bd8409822a572ca4d"
  },
  {
   "law_id": "favored-fixation-lower-bound",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "Fixation is at least i/M when selection does not oppose the mutant",
   "level": "genotype",
   "theorem": "Delphi.FavoredChain.fixationProbability_ge",
   "module": "lean/Delphi/Favored.lean",
   "statement": "In an absorbing chain on 0..M gene copies whose expected copy number never decreases (neutral, or selection for the mutant), a lineage present in i copies is eventually fixed with probability at least i/M. Wright-Fisher sampling with mutant relative fitness 1+s, s >= 0, is such a chain. Hence the expected number of substitutions over T generations is at least mu T (and at most M mu T), whatever M.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "C3",
    "C3b"
   ],
   "content_hash": "a8f76faf44af72941a4e56bf69b2109c333792a94dce395f3f36cc3a3e9c1664"
  },
  {
   "law_id": "fick-principle",
   "version": "1.3.0",
   "kind": "biological",
   "status": "accepted",
   "label": "Fick principle: aerobic supply is at most eta E Q (Ca - Cv)",
   "level": "physiology",
   "theorem": null,
   "module": "lean/Delphi/Flight.lean",
   "statement": "O2 delivered to tissue = cardiac output × (arterial − venous O2 content).",
   "sources": [],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {},
    "applies_to": [
     "sustained aerobic power DEMAND: powered level flight, climbing flight, and sustained (aerobic) swimming — work the animal must pay for out of metabolism"
    ],
    "excludes": [
     "unpowered descent or glide: the work comes from potential and kinetic energy, not from metabolism, so W v / (L/D) computed for a descent is NOT a demand this law bounds. A real gliding flying fish compared against this ceiling comes back \"violated\" only because the caller converted a glide into a level-powered-flight requirement; that is an application error, not a violation (it happened to Park and Choi specimens making realistic glide claims, 2026-11-01).",
     "burst (anaerobic) effort paid out of white-muscle stores, which is what a flying fish is understood to use for take-off and taxiing"
    ]
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "a79daa373a3f7a6fbf3d549525aa69a70afb0891acd40a25e9fd0f9dff6fff4d"
  },
  {
   "law_id": "fin-length-ratio",
   "version": "1.0.0",
   "kind": "biological",
   "status": "proposed",
   "label": "Fin length over body length (not formalised)",
   "level": "phenotype",
   "theorem": null,
   "module": null,
   "statement": "What sets pectoral fin length relative to body length (0.687 measured, Daane 2021).",
   "sources": [],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "6133db629fee7e449bab7e92a0f6611fda422901232cd0138b887d8e7ba41d57"
  },
  {
   "law_id": "fisher-ftns",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "Fisher's fundamental theorem of natural selection (partial-change form)",
   "level": "population",
   "theorem": "Delphi.fisher_fundamental_theorem",
   "module": "lean/Delphi/Fisher.lean",
   "statement": "The rate of increase in mean fitness of a population due to natural selection equals its additive genetic variance in fitness at that time.",
   "sources": [
    "The Genetical Theory of Natural Selection (1930)"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "C4",
    "C4b",
    "C4c"
   ],
   "content_hash": "43a0f4776a50c16a110d734ac69c580665ac245d1e75f62e2bf8c737347d48ec"
  },
  {
   "law_id": "fisher-kpp-speed",
   "version": "1.1.0",
   "kind": "biological",
   "status": "candidate",
   "label": "Fisher-KPP: c^2 = 4sD is the minimum of the linear speed relation, attained at one decay rate",
   "level": null,
   "theorem": "Delphi.LeanBio.Round2.KppSpeed.kpp_min_speed",
   "module": "lean/registry/proposals/fisher-kpp-speed/law.lean",
   "statement": "For a Fisher-KPP gene wave with dispersal coefficient D > 0, selection coefficient s > 0 and minimal speed c > 0 satisfying c^2 = 4*s*D (a named hypothesis), the relation c*k <= D*k^2 + s holds at every exponential decay rate k, strictly except at the single minimiser 2*D*k = c, so c is the minimum of the family of linear spreading speeds and is attained at exactly one decay rate; and at fixed dispersal a larger selection coefficient gives a strictly larger minimal speed.",
   "sources": [
    "doi:10.1111/j.1469-1809.1937.tb02153.x"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [
    "KPP1"
   ],
   "content_hash": "ed316e1bc97dfa63d6e848d658bdb7e926c37331112e6fd6ef4057d2d0751b59"
  },
  {
   "law_id": "flight-allometry-law",
   "version": "1.0.0",
   "kind": "physical",
   "status": "accepted",
   "label": "General allometry: measured exponents compose (W = a L^b)",
   "level": "phenotype",
   "theorem": "Delphi.vmin_powerLaw_log",
   "module": "lean/Delphi/Flight.lean",
   "statement": "For power laws f L = a L^b with real exponents: the ratio between two sizes is (L2/L1)^b, the log-log exponent is b, a quotient of power laws is a power law with exponent b1 − b2 (so wing loading W/S has exponent bW − bS), the cube law is the case b = 3, and under power laws for weight and lifting area with constant ρ and C_L,max the minimum-speed exponent is (bW − bS)/2.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "C13"
   ],
   "content_hash": "b459e50de1bd5084184a5e41430d6b58e0ab0e52bd75f91f00c5fb03752fe4cc"
  },
  {
   "law_id": "flight-climb-glide-law",
   "version": "1.0.0",
   "kind": "physical",
   "status": "accepted",
   "label": "Climb from excess power and the range of a steady glide",
   "level": "phenotype",
   "theorem": "Delphi.glide_range_le",
   "module": "lean/Delphi/Flight.lean",
   "statement": "If available mechanical power is spent on level flight, on raising the weight at vertical speed c, and on non-negative losses, then c ≤ (P_avail − P_req)/W. A steady glide with no thrust, lift equal to weight and L/D ≤ (L/D)max from height h covers at most h (L/D)max horizontally; with drag reduced by a fraction δ near the surface and lift unaffected, at most h (L/D)max/(1 − δ).",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "C15",
    "C16"
   ],
   "content_hash": "6ac1beea70e547754cd61b3766b9b7588cf781964ab9c81c375dd36419e67181"
  },
  {
   "law_id": "gene-regulatory-dynamics",
   "version": "1.0.0",
   "kind": "biological",
   "status": "proposed",
   "label": "Gene regulatory dynamics (not formalised)",
   "level": "genotype-to-phenotype",
   "theorem": null,
   "module": null,
   "statement": "How a gene edit changes a structure quantitatively (bioelectric kcnk5b, slc43a2a transport).",
   "sources": [],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "e09a78d555bbe0cbcfdd2d7bb3e96c5e3420a82dc866ceb999437f0ae6b28990"
  },
  {
   "law_id": "genotype-developmental-ordering",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "No structure develops from a precursor that appears later than it does",
   "level": "developmental",
   "theorem": "Delphi.Genotype.devOrdered_of_check",
   "module": "lean/Delphi/Genotype.lean",
   "statement": "Taking the developmental stage as the level of a blueprint graph whose edges are develops_from, the Boolean check devOrderedB is true exactly when every edge goes strictly down in stage; its truth implies that every derivative is staged strictly after its precursor and that develops_from is acyclic. The fin subtree's own edges are certified by a kernel evaluation of the checker on the recorded stages (lean/Delphi/Certificates/FinDevelopment.lean).",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "Danio rerio"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "G3"
   ],
   "content_hash": "6e9e2260585af7258e3b978c77e1f855da51d212032d0dacd5bd794547a2b151"
  },
  {
   "law_id": "genotype-genetic-code",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "A claimed amino-acid change is impossible below the code distance",
   "level": "genotype",
   "theorem": "Delphi.Genotype.claimed_substitutions_rules_out",
   "module": "lean/Delphi/Genotype.lean",
   "statement": "With the standard genetic code as a 64-codon table and minSubst a b the least number of positions in which a codon for a and a codon for b differ, no codon pair turns a into b in fewer than minSubst a b nucleotide substitutions. A claim of n substitutions with n < minSubst a b is therefore impossible. minSubst is computed over the table, so the kernel evaluates each instance: Phe to Leu takes 1, Trp to Stop 1, Met to Trp 2.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "G1"
   ],
   "content_hash": "d0b050215082bad3247149e87354e415bd0525a359efe2658bc2531844a6e4c4"
  },
  {
   "law_id": "genotype-pleiotropy-closure",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "An edit to a gene must be shown changing every node the map links that gene to",
   "level": "genotype-to-phenotype",
   "theorem": "Delphi.Genotype.closure_of_check",
   "module": "lean/Delphi/Genotype.lean",
   "statement": "The Boolean check closureB mapped changed is true exactly when every node in the mapped list occurs in the changed list; its truth implies the inclusion (closure_of_check), and a single mapped node absent from the changed list makes it false (closure_violated). Applied to the genotype map: a view that shows an edit to a gene changing fewer nodes than the map links to that gene is ruled out.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "Danio rerio"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "G2"
   ],
   "content_hash": "16a63aa8e6dc62b2b89c6d596b178b1439200131813f4229435c0a266032b954"
  },
  {
   "law_id": "genotype-substitution-time",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "The time N independent substitutions need lies between N/(M mu) and N/mu",
   "level": "genotype",
   "theorem": "Delphi.Genotype.expectedWaitingTime_bounds",
   "module": "lean/Delphi/Genotype.lean",
   "statement": "With M gene copies, mutation rate mu per copy per generation and fixation probability u, the expected time for N substitutions arriving at Kimura's rate M mu u is N/(M mu u); for 1/M <= u <= 1 it lies between N/(M mu) and N/mu, and equals N/mu in the neutral case u = 1/M. An available time below N/(M mu), the fastest the model allows because it assumes every single mutant fixes, is ruled out.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "G4"
   ],
   "content_hash": "956572f16390ec76fcafa0d6c1a7a8365cbd340320609d83b1234d921e49e78d"
  },
  {
   "law_id": "gill-o2-uptake",
   "version": "1.0.0",
   "kind": "biological",
   "status": "proposed",
   "label": "Gill O2 uptake sets arterial O2 (not formalised)",
   "level": "physiology",
   "theorem": null,
   "module": null,
   "statement": "Arterial O2 content as a function of water O2, gill area and ventilation (the first link of the simulator chain).",
   "sources": [],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "f07d68551f604fdf31ca3c9950aacaa98bb8b784d772325f8c85e2854a1c1550"
  },
  {
   "law_id": "haldane-cost-of-selection",
   "version": "1.0.0",
   "kind": "biological",
   "status": "contested",
   "label": "From Haldane's cost accounting (a hypothesis, not proved here): N substitutions need at least c N / e generations",
   "level": "genotype",
   "theorem": "Delphi.Genotype.haldane_time_lower",
   "module": "lean/Delphi/Genotype.lean",
   "statement": "HaldaneCost N T e c is the NAMED HYPOTHESIS that N substitutions by selection in T generations cost at most e T / c, with reproductive excess e > 0 and cost per substitution c > 0. From it, T is at least c N / e, and a stated time below c N / e contradicts the hypothesis. The hypothesis itself is never proved.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "G5"
   ],
   "content_hash": "d1c98935ab75d9e64b7dd9c228f300fce6adec12bee853058f9034ea54a1321c"
  },
  {
   "law_id": "kimura-fixation-probability",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "Kimura fixation probability of a mutant allele",
   "level": "genotype",
   "theorem": "Delphi.NeutralChain.fixedBy_tendsto",
   "module": "lean/Delphi/Kimura.lean",
   "statement": "The probability that a mutant allele eventually fixes in a finite population depends on its initial frequency, its selective advantage and the effective population size, and equals its initial frequency when it is neutral.",
   "sources": [
    "On the probability of fixation of mutant genes in a population (1962)"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "C2"
   ],
   "content_hash": "926e515291aad6b9e49a38ace2fd31ae1abd4ca314072484a8bbd535778c2467"
  },
  {
   "law_id": "kimura-heterozygosity",
   "version": "1.1.0",
   "kind": "biological",
   "status": "candidate",
   "label": "Neutral equilibrium heterozygosity rises strictly with Ne times mu",
   "level": null,
   "theorem": "Delphi.LeanBio.Round2.KimuraHet.het_equilibrium",
   "module": "lean/registry/proposals/kimura-heterozygosity/law.lean",
   "statement": "Under the infinite-alleles equilibrium H*(1+4*Ne*mu) = 4*Ne*mu (a named hypothesis), equilibrium heterozygosity lies strictly between 0 and 1 for every positive effective size and neutral mutation rate, and of two populations the one with the larger product Ne*mu has strictly the larger equilibrium heterozygosity.",
   "sources": [
    "doi:10.1093/genetics/49.4.725"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [
    "HET1"
   ],
   "content_hash": "ef9c256e218b8ca259999726567be1a2e5b1f91e78a17acbeda8c578d2ac2483"
  },
  {
   "law_id": "kimura-substitution-rate",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "Neutral substitution rate equals the mutation rate",
   "level": "genotype",
   "theorem": "Delphi.neutral_substitution_rate",
   "module": "lean/Delphi/Kimura.lean",
   "statement": "For neutral mutations the long-run rate of molecular substitution equals the mutation rate per generation, independent of population size, which yields a molecular clock.",
   "sources": [
    "Evolutionary Rate at the Molecular Level (1968)"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "C1",
    "C1b"
   ],
   "content_hash": "6bc6b5e1e0a6c9569405c2d3c9283adace02e6adad0d30e6b86440a1394fd38c"
  },
  {
   "law_id": "maynardsmith-hawk-dove",
   "version": "1.1.0",
   "kind": "biological",
   "status": "candidate",
   "label": "Hawk-Dove: the escalation probability p*C = V is invaded from neither side and costs the population",
   "level": null,
   "theorem": "Delphi.LeanBio.Round2.HawkDove.hawk_dove_mixture",
   "module": "lean/registry/proposals/maynardsmith-hawk-dove/law.lean",
   "statement": "For a symmetric Hawk-Dove contest with resource value V > 0, injury cost C > V and escalation probability p fixed by p*C = V (a named hypothesis), p lies strictly inside (0,1); Hawk and Dove have equal payoff against a population escalating with probability p; a population escalating less often than p gives Hawk a strictly higher payoff and one escalating more often gives Dove a strictly higher payoff, so p is invaded from neither side; and the payoff at p is strictly below V/2, the all-Dove payoff, which is the cost of conflict.",
   "sources": [
    "doi:10.1038/246015a0",
    "doi:10.1017/cbo9780511806292"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [
    "HAWKDOVE1"
   ],
   "content_hash": "a00c135e6030638fa84a7ac0bb8891485813789b43350e4ecacafe787a20a21a"
  },
  {
   "law_id": "maynardsmith-hitchhiking",
   "version": "1.0.0",
   "kind": "biological",
   "status": "candidate",
   "label": "Genetic hitchhiking: a sweep's reduction of linked variation grows as c/s falls",
   "level": null,
   "theorem": "Delphi.LeanBio.Hitchhiking.hitchhiking_relHet",
   "module": "lean/registry/proposals/maynardsmith-hitchhiking/law.lean",
   "statement": "Under the deterministic-sweep approximation relHet = 1 - K^(-a c/s) with K > 1 and a > 0 (a named hypothesis), a selective sweep leaves no variation at a neutral site with c/s = 0, the variation left rises strictly with c/s (so the reduction is larger the tighter the linkage relative to selection), and for c/s > 0 the sweep removes some but not all variation.",
   "sources": [
    "doi:10.1017/S0016672300014634"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [],
   "content_hash": "b51aa2313e0efafa331758a8059255ab9135e1bfacbedcc08b76c366ed5b9b7c"
  },
  {
   "law_id": "maynardsmith-twofold-cost",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "Twofold cost of sex",
   "level": "population",
   "theorem": "Delphi.twofold_cost_of_sex",
   "module": "lean/Delphi/MaynardSmith.lean",
   "statement": "An asexual mutant female in a sexual population with equal sex ratio produces twice as many grandchildren as a sexual female, so sex needs a compensating advantage of up to twofold to persist.",
   "sources": [
    "The Evolution of Sex (1978)"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "C5",
    "C5b"
   ],
   "content_hash": "59b9789b5c5239107ce4ffb89fb19e4e6a8235ea6d96468771562337de6ef6cd"
  },
  {
   "law_id": "muscle-power-premise",
   "version": "1.0.0",
   "kind": "biological",
   "status": "retired",
   "label": "Thompson's muscle-power premise P = f p M (retired)",
   "level": "physiology",
   "theorem": null,
   "module": "lean/Delphi/Scaling.lean",
   "statement": "Power available = f p M with muscle fraction f and mass-specific power p constant (Thompson 1917, ch. II).",
   "sources": [],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "57915f22b125ce541bc1739469a9d502c52caabacb0575445e10b1ca72bb30a3"
  },
  {
   "law_id": "perturb-current",
   "version": "1.1.0",
   "kind": "biological",
   "status": "accepted",
   "label": "No holding station in a current above U_crit or the aerobic drag bound",
   "level": null,
   "theorem": "Delphi.Perturb.no_station_above_ucrit",
   "module": "lean/Delphi/Perturb.lean",
   "statement": "Under the swim-limit hypothesis (sustained swimming at most U_crit; drag power rho C_d A U^3 / 2 paid aerobically), no design holds station in a current faster than U_crit, or in one whose drag power exceeds its aerobic ceiling eta E Q Ca.",
   "sources": [
    "Plaut I 2001, Critical swimming speed: its ecological relevance. (PMID 11733165, doi:10.1016/s1095-6433(01)00462-7); lean/perturb-sources.json#plaut2001",
    "Rome LC, Choi IH, Lutz G, Sosnicki A 1992, The influence of temperature on muscle function in the fast swimming scup. I. Shortening velocity and muscle recruitment (PMID 1556514, doi:10.1242/jeb.163.1.259); lean/perturb-sources.json#rome1992a"
   ],
   "scope": {
    "taxa": [
     "Teleostei"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [
    "P2",
    "P2b"
   ],
   "content_hash": "3bd9fc384da4b16e6ae8d3dd1745abdd3f72125ad5d24f499cb819e39a1f9f06"
  },
  {
   "law_id": "perturb-depth-cap",
   "version": "1.0.0",
   "kind": "biological",
   "status": "contested",
   "label": "No teleost below about 8200 m (osmolyte cap; contested)",
   "level": null,
   "theorem": "Delphi.Perturb.no_teleost_below",
   "module": "lean/Delphi/Perturb.lean",
   "statement": "Under the osmolyte hypothesis (teleost internal osmolality rises linearly with depth via TMAO and cannot exceed seawater), no teleost lives deeper than the isosmotic depth, at most 8200 m.",
   "sources": [
    "Yancey PH, Gerringer ME, Drazen JC, Rowden AA, Jamieson A 2014, Marine fish may be biochemically constrained from inhabiting the deepest ocean depths. (PMID 24591588, doi:10.1073/pnas.1322003111); lean/perturb-sources.json#yancey2014",
    "Yancey PH 2020, Cellular responses in marine animals to hydrostatic pressure. (PMID 32096337, doi:10.1002/jez.2354); lean/perturb-sources.json#yancey2020"
   ],
   "scope": {
    "taxa": [
     "Teleostei"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [
    "P3b"
   ],
   "content_hash": "21808ed7b8f0afcfcae3aa8dbb8047b2a49a40ee5a9b882cf85e1b6f079bae5c"
  },
  {
   "law_id": "perturb-energy-balance",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "Intake below (R + Act) / (a (1 - s)) means mass loss",
   "level": null,
   "theorem": "Delphi.Perturb.energy_rules_out",
   "module": "lean/Delphi/Perturb.lean",
   "statement": "Under daily energy conservation eps dm = a I - (R + Act + s a I) with SDA coefficient s, a design that does not take in at least (R + Act) / (a (1 - s)) loses mass; a claim to hold or gain mass on less is ruled out.",
   "sources": [
    "Bihun CJ, Stewart EMC, Lechner ER, Brownscombe JW, Raby GD 2024, Thermal performance curves for aerobic scope and specific dynamic action in a sexually dimorphic piscivore: implications for a warming climate. (PMID 38881304, doi:10.1242/jeb.247207); lean/perturb-sources.json#bihun2024",
    "McLeod IM, Clark TD 2016, Limited Capacity for Faster Digestion in Larval Coral Reef Fish at an Elevated Temperature. (PMID 27191721, doi:10.1371/journal.pone.0155360); lean/perturb-sources.json#mcleodclark2016",
    "Secor SM 2009, Specific dynamic action: a review of the postprandial metabolic response. (PMID 18597096, doi:10.1007/s00360-008-0283-7); lean/perturb-sources.json#secor2009"
   ],
   "scope": {
    "taxa": [
     "Teleostei"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [
    "P5"
   ],
   "content_hash": "1c6f8cc488235d3c1c50866409750850f2ab0878558138214dfd86a7aa67a561"
  },
  {
   "law_id": "perturb-isa-vmin",
   "version": "1.0.0",
   "kind": "physical",
   "status": "accepted",
   "label": "Minimum flight speed rises with altitude (ISA troposphere)",
   "level": null,
   "theorem": "Delphi.Perturb.vmin_isa_mono",
   "module": "lean/Delphi/Perturb.lean",
   "statement": "In the ISA troposphere air density falls with height, and the minimum flight speed sqrt(2W/(rho S C_Lmax)) rises with height (v_min proportional to 1/sqrt(rho)).",
   "sources": [
    "Narayanan S, Osechas O 2022, Enhanced Vertical Navigation Using Barometric Measurements. (PMID 36501962, doi:10.3390/s22239263); lean/perturb-sources.json#narayanan2022"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [
    "P4"
   ],
   "content_hash": "e91ac2a6100850efe8b9e962d59c406de959b8c21ed82064475828bd63859528"
  },
  {
   "law_id": "perturb-pressure",
   "version": "2.0.0",
   "kind": "physical",
   "status": "candidate",
   "label": "Boyle's law: a closed swim bladder shrinks with depth (pressure p0 + rho g d)",
   "level": null,
   "theorem": "Delphi.Hydro.closed_bladder_rules_out",
   "module": "lean/Delphi/Hydrostatics.lean",
   "statement": "With absolute pressure p0 + rho g d (surface pressure p0, water density rho and gravity g as named hypotheses) and P(d) V(d) constant (closed bladder, fixed temperature, quasi-static), the bladder volume at depth d is V(0) p0 / (p0 + rho g d); a closed bladder claiming more volume at depth is ruled out. The v1 '1 atm per 10 m' law is the instance rho g = 10132.5 Pa/m (oneAtmPer10m).",
   "sources": [
    "lean/perturb-sources.json#yancey2020",
    "lean/perturb-sources.json#kerr2023",
    "sim-engine/scenarios/pressure.mjs"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [
    "P3"
   ],
   "content_hash": "945257ac4b41c249b0b63c21bce37bdbd154214d89958f13a285b5f22b6f0662"
  },
  {
   "law_id": "perturb-thermal",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "No sustained power outside the thermal window; Q10 bound inside",
   "level": null,
   "theorem": "Delphi.Perturb.thermal_rules_out",
   "module": "lean/Delphi/Perturb.lean",
   "statement": "Under the thermal-performance hypothesis (sustained power zero outside [CTmin, CTmax], and at most P_ref Q10^((T - T_ref)/10) inside), no positive sustained power is possible outside the thermal window, and sustained power never exceeds the Q10 bound.",
   "sources": [
    "Schulte PM 2015, The effects of temperature on aerobic metabolism: towards a mechanistic understanding of the responses of ectotherms to a changing environment (PMID 26085663, doi:10.1242/jeb.118851); lean/perturb-sources.json#schulte2015",
    "Rome LC, Sosnicki A, Choi IH 1992, The influence of temperature on muscle function in the fast swimming scup. II. The mechanics of red muscle. (PMID 1556515, doi:10.1242/jeb.163.1.281); lean/perturb-sources.json#rome1992b",
    "Rome LC, Swank D 1992, The influence of temperature on power output of scup red muscle during cyclical length changes. (PMID 1431729, doi:10.1242/jeb.171.1.261); lean/perturb-sources.json#romeswank1992",
    "Morgan R, Finnøen MH, Jutfelt F 2018, CTmax is repeatable and doesn't reduce growth in zebrafish. (PMID 29740113, doi:10.1038/s41598-018-25593-4); lean/perturb-sources.json#morgan2018"
   ],
   "scope": {
    "taxa": [
     "Teleostei"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [
    "P1",
    "P1b"
   ],
   "content_hash": "7656abd15ef10060989683d98d64632f2032eca295d81cd9f3f27b6e8d59398e"
  },
  {
   "law_id": "perturb-wind-glide",
   "version": "1.0.0",
   "kind": "physical",
   "status": "accepted",
   "label": "Glide ground range in wind is at most h (L/D)max (1 + w/u)",
   "level": null,
   "theorem": "Delphi.Perturb.wind_glide_rules_out",
   "module": "lean/Delphi/Perturb.lean",
   "statement": "A steady glide from height h in an along-track wind w (positive tailwind) covers at most h (L/D)max (1 + w/u) over the ground; a longer claimed ground range is ruled out.",
   "sources": [],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraints": [
    "P4b"
   ],
   "content_hash": "051af87a59713dd3f9b05d067ef5171ee160133322bf77101f723fb6d4fdef35"
  },
  {
   "law_id": "physiology-laplace",
   "version": "1.0.0",
   "kind": "physical",
   "status": "accepted",
   "label": "Laplace wall stress: pressure in a thin-walled vessel is limited by wall strength, thickness and radius",
   "level": "physiology",
   "theorem": "Delphi.Physiology.laplace_pressure_limit",
   "module": "lean/Delphi/Physiology.lean",
   "statement": "For a thin-walled sphere the wall stress is P r / (2 t) and for a cylinder P r / t; at fixed pressure and thickness the stress grows with radius, and a wall that holds at most sigma_max limits the pressure to 2 sigma_max t / r (sphere) or sigma_max t / r (cylinder).",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "ebee1d96435cbb2f15f4195be94ca82b1e787631fc4eed53f3ffe11de7eb6924"
  },
  {
   "law_id": "physiology-q10",
   "version": "1.0.0",
   "kind": "biological",
   "status": "accepted",
   "label": "Q10 temperature scaling: the ratio between two temperatures is Q10 raised to their difference over ten",
   "level": "physiology",
   "theorem": "Delphi.Physiology.q10_ratio",
   "module": "lean/Delphi/Physiology.lean",
   "statement": "For a rate X(T) = X0 Q10^((T - Tref)/10) with X0 nonzero and Q10 > 0, the ratio X(T2)/X(T1) is Q10^((T2 - T1)/10), and the log of that ratio is (T2 - T1)/10 times log Q10, so a Q10 fit is a straight line in log rate against temperature.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "18a32e28d16ef2c05888d340a3df1835018a50e06ae293b6986398f2faa85010"
  },
  {
   "law_id": "scaling-area-law",
   "version": "1.1.0",
   "kind": "physical",
   "status": "accepted",
   "label": "Area law and wing loading under isometry (R2, R3)",
   "level": "phenotype",
   "theorem": "Delphi.areaLaw_ratio",
   "module": "lean/Delphi/Scaling.lean",
   "statement": "In an isometric family an area scales as the square of the linear dimension, S(L2)/S(L1) = (L2/L1)^2, and with the cube law the weight per unit area (wing loading, or stress W/A) scales as L2/L1.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {
    "C2a": {
     "taxa": [
      "Exocoetidae"
     ],
     "life_stages": [],
     "ranges": {
      "length_ratio_vs_reference": {
       "exclude_between": [
        0.905,
        1.105
       ],
       "unit": "1",
       "note": "an implied exponent is ln(X/X_ref) / ln(L/L_ref) against the single reference specimen (Cypselurus hiraii, Park and Choi 2010 Table 1 model L3, SL 0.203 m), so the denominator approaches zero as L approaches L_ref and ordinary specimen variation is amplified without limit. About 1% relative uncertainty in L against the studio's 0.1 decision band means the comparison carries no information until |ln(L/L_ref)| >= 0.1, i.e. a length ratio outside [0.905, 1.105]. Measured in the real siblings: L1 (ratio 1.0099) implied a v_min exponent of -1.43 and L2 (1.0296) -3.86 against a target of 0.5, and model N (0.9951) -60.8, so accepted laws fired red on unedited wild-type flying fish (blind evaluator, 2026-11-01)"
      }
     },
     "basis": "evaluated against one reference specimen (Cypselurus hiraii, Park and Choi 2010 Table 1 model L3); an isometric family is one body plan, so other clades are out of scope"
    }
   },
   "constraints": [
    "C2a",
    "C2b"
   ],
   "content_hash": "c3c1dcf4e433aa034b9633f2785573569a1cdccf96e2d00bb9b666d8972e58d1"
  },
  {
   "law_id": "scaling-bending-law",
   "version": "1.0.0",
   "kind": "physical",
   "status": "accepted",
   "label": "Bending strength of an isometric member via the section modulus (R9)",
   "level": "phenotype",
   "theorem": "Delphi.bendingStress_ratio_body",
   "module": "lean/Delphi/Scaling.lean",
   "statement": "For a slender linear-elastic beam the maximum bending stress is the moment over the section modulus, σ_b = F ℓ / Z. With similar sections (Z ∝ L^3) and a lever arm ∝ L: if the load scales as the body (F ∝ L^3, R9a) then σ_b scales as L, the bending safety factor σ_max/σ_b equals σ_max k_Z/(k_F k_ℓ L) and above L_max,b = σ_max k_Z/(k_F k_ℓ n) the member cannot carry n times its load; if the load scales as an area (a lamina of constant thickness, F ∝ L^2, R9b) then σ_b is independent of size and no size limit follows.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "C12",
    "C12b",
    "C12c"
   ],
   "content_hash": "522f59337052da6b023e59420a9f7183823836b0e63980bf1f1efd3569a5ff5a"
  },
  {
   "law_id": "scaling-strength-law",
   "version": "1.1.0",
   "kind": "physical",
   "status": "accepted",
   "label": "Strength scales as L^2: the missing half of Galileo's square-cube argument (R7)",
   "level": "phenotype",
   "theorem": "Delphi.breakLoad_ratio",
   "module": "lean/Delphi/Scaling.lean",
   "statement": "A member of cross-section A made of material with breaking stress σ fails under axial load σ A. With isometric sections and the same material the breaking load scales as (L2/L1)^2, the static safety factor F_break/W equals σ k3/(k1 L) and falls as 1/L, stress W/A grows as L, and above L_max = σ k3/(k1 n) the member cannot carry n body weights.",
   "sources": [
    "proved in this project; no paper states it in this form"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {
    "C8c": {
     "taxa": [
      "Exocoetidae"
     ],
     "life_stages": [],
     "ranges": {},
     "basis": "evaluated against one reference specimen (Cypselurus hiraii, Park and Choi 2010 Table 1 model L3); an isometric family is one body plan, so other clades are out of scope"
    },
    "C8e": {
     "taxa": [
      "Exocoetidae"
     ],
     "life_stages": [],
     "ranges": {
      "length_ratio_vs_reference": {
       "exclude_between": [
        0.905,
        1.105
       ],
       "unit": "1",
       "note": "an implied exponent is ln(X/X_ref) / ln(L/L_ref) against the single reference specimen (Cypselurus hiraii, Park and Choi 2010 Table 1 model L3, SL 0.203 m), so the denominator approaches zero as L approaches L_ref and ordinary specimen variation is amplified without limit. About 1% relative uncertainty in L against the studio's 0.1 decision band means the comparison carries no information until |ln(L/L_ref)| >= 0.1, i.e. a length ratio outside [0.905, 1.105]. Measured in the real siblings: L1 (ratio 1.0099) implied a v_min exponent of -1.43 and L2 (1.0296) -3.86 against a target of 0.5, and model N (0.9951) -60.8, so accepted laws fired red on unedited wild-type flying fish (blind evaluator, 2026-11-01)"
      }
     },
     "basis": "evaluated against one reference specimen (Cypselurus hiraii, Park and Choi 2010 Table 1 model L3); an isometric family is one body plan, so other clades are out of scope"
    }
   },
   "constraints": [
    "C8",
    "C8b",
    "C8c",
    "C8d",
    "C8e"
   ],
   "content_hash": "a78e7a018d056cbfd03eb725b3a03049c53c9c204a286491077430ae6521008f"
  },
  {
   "law_id": "taxiing-thrust",
   "version": "1.0.0",
   "kind": "physical",
   "status": "proposed",
   "label": "Taxiing thrust on the water surface (not formalised)",
   "level": "phenotype",
   "theorem": null,
   "module": null,
   "statement": "Thrust from the caudal fin during taxiing, which the field glide distances require beyond one unpowered glide.",
   "sources": [],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "bff5557299cabdecc61e3d1b9b6137e9097f620a93ee6596b163a582adfda00e"
  },
  {
   "law_id": "test-loop-only-density-sanity",
   "version": "1.0.0",
   "kind": "physical",
   "status": "retired",
   "label": "TEST-LOOP-ONLY: a teleost design's bulk density is at most a million times water",
   "level": "body",
   "theorem": null,
   "module": null,
   "statement": "For a teleost design that commits a standard length and a mass, mass_kg is at most 1e6 kg/m^3 times SL_m^3: the bulk density implied by the committed numbers is at most a million times that of water.",
   "sources": [],
   "scope": {
    "taxa": [
     "Teleostei"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "TL1"
   ],
   "content_hash": "0dabd60665dd8cdd9328a1d7fe6b75fc91feaa1ece3e07b8bc7d44bdbb4d95d5"
  },
  {
   "law_id": "thompson1917-ch02-06",
   "version": "1.0.0",
   "kind": "physical",
   "status": "accepted",
   "label": "Power needed for flight grows as length^3.5 while muscle power grows as length^3",
   "level": "phenotype",
   "theorem": "Delphi.powerRequired_log",
   "module": "lean/Delphi/Scaling.lean",
   "statement": "A bird of fixed proportions must fly at a minimum speed proportional to the square root of its linear size, so the work needed for flight varies as the 3½ power of linear size while the work its muscles can supply varies only as the cube; flight thus becomes harder as birds get larger (about 1.4 times harder per doubling of length).",
   "sources": [
    "On Growth and Form (1917)"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [
    "C9",
    "C10"
   ],
   "content_hash": "863226cfd2c6b5248f725aac6477422e67c3796fe8f2aeeaacaf06d5a74111af"
  },
  {
   "law_id": "thompson1917-ch02-07",
   "version": "1.0.0",
   "kind": "physical",
   "status": "accepted",
   "label": "Ostrich and moa have passed the size at which muscular flight is possible",
   "level": "phenotype",
   "theorem": "Delphi.exists_size_limit",
   "module": "lean/Delphi/Scaling.lean",
   "statement": "The ostrich probably, and the moa certainly, reached a size at which flight by muscular action with ordinary bird anatomy became physiologically impossible, and a bird as large as a man could not fly.",
   "sources": [
    "On Growth and Form (1917)"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "56eb9cdcfdf58464dd8b4304a78b8a10edf9f349532ec258e0b4aa35ae9a2617"
  },
  {
   "law_id": "thompson1917-ch02-10",
   "version": "1.1.0",
   "kind": "physical",
   "status": "accepted",
   "label": "Speed varies as the square root of linear size in swimming, flight and walking",
   "level": "phenotype",
   "theorem": "Delphi.vmin_ratio",
   "module": "lean/Delphi/Scaling.lean",
   "statement": "Leaving aside differences in mechanical construction, swimming (Froude's law), flight (minimum stable speed) and walking (the leg swinging as a pendulum) all give the same result: an animal's velocity tends to vary as the square root of its linear dimensions.",
   "sources": [
    "On Growth and Form (1917)"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {
    "C9c": {
     "taxa": [
      "Exocoetidae"
     ],
     "life_stages": [],
     "ranges": {
      "length_ratio_vs_reference": {
       "exclude_between": [
        0.905,
        1.105
       ],
       "unit": "1",
       "note": "an implied exponent is ln(X/X_ref) / ln(L/L_ref) against the single reference specimen (Cypselurus hiraii, Park and Choi 2010 Table 1 model L3, SL 0.203 m), so the denominator approaches zero as L approaches L_ref and ordinary specimen variation is amplified without limit. About 1% relative uncertainty in L against the studio's 0.1 decision band means the comparison carries no information until |ln(L/L_ref)| >= 0.1, i.e. a length ratio outside [0.905, 1.105]. Measured in the real siblings: L1 (ratio 1.0099) implied a v_min exponent of -1.43 and L2 (1.0296) -3.86 against a target of 0.5, and model N (0.9951) -60.8, so accepted laws fired red on unedited wild-type flying fish (blind evaluator, 2026-11-01)"
      }
     },
     "basis": "evaluated against one reference specimen (Cypselurus hiraii, Park and Choi 2010 Table 1 model L3); an isometric family is one body plan, so other clades are out of scope"
    }
   },
   "constraints": [
    "C9b",
    "C9c",
    "C11"
   ],
   "content_hash": "00a49c1372521d60d2daa5797d5e1fb57b78c6665bf9c8bbf876ff13d681f541"
  },
  {
   "law_id": "thompson1917-ch03-07",
   "version": "1.1.0",
   "kind": "physical",
   "status": "accepted",
   "label": "Weight tends to vary as the cube of linear dimensions during growth",
   "level": "phenotype",
   "theorem": "Delphi.cubeLaw_loglog_exponent",
   "module": "lean/Delphi/Thompson.lean",
   "statement": "Whatever the law of increase in a linear dimension, volume and therefore weight tend to vary as the cube of linear dimensions, which mainly (though not wholly) explains why the human weight curve differs in shape from the stature curve.",
   "sources": [
    "On Growth and Form (1917)"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {
    "C7b": {
     "taxa": [
      "Exocoetidae"
     ],
     "life_stages": [],
     "ranges": {
      "length_ratio_vs_reference": {
       "exclude_between": [
        0.905,
        1.105
       ],
       "unit": "1",
       "note": "an implied exponent is ln(X/X_ref) / ln(L/L_ref) against the single reference specimen (Cypselurus hiraii, Park and Choi 2010 Table 1 model L3, SL 0.203 m), so the denominator approaches zero as L approaches L_ref and ordinary specimen variation is amplified without limit. About 1% relative uncertainty in L against the studio's 0.1 decision band means the comparison carries no information until |ln(L/L_ref)| >= 0.1, i.e. a length ratio outside [0.905, 1.105]. Measured in the real siblings: L1 (ratio 1.0099) implied a v_min exponent of -1.43 and L2 (1.0296) -3.86 against a target of 0.5, and model N (0.9951) -60.8, so accepted laws fired red on unedited wild-type flying fish (blind evaluator, 2026-11-01)"
      }
     },
     "basis": "evaluated against one reference specimen (Cypselurus hiraii, Park and Choi 2010 Table 1 model L3); an isometric family is one body plan, so other clades are out of scope"
    }
   },
   "constraints": [
    "C7",
    "C7b"
   ],
   "content_hash": "af67b96a6102ea2f76bf0dceeeddf2e2b51b6443c14a9a767548381351fbd116"
  },
  {
   "law_id": "turing-ddi",
   "version": "1.1.0",
   "kind": "biological",
   "status": "candidate",
   "label": "Diffusion-driven instability exists, and equal diffusivities cannot produce it",
   "level": null,
   "theorem": "Delphi.LeanBio.Round2.TuringDDI.turing_instability",
   "module": "lean/registry/proposals/turing-ddi/law.lean",
   "statement": "For the linearisation of a two-morphogen reaction-diffusion system about a homogeneous steady state with positive diffusivities, negative Jacobian trace, positive Jacobian determinant and Turing's inequality 4*du*dv*detJ < (dv*fu + du*gv)^2 with dv*fu + du*gv > 0 (a named hypothesis), there is a strictly positive squared wavenumber at which the dispersion relation is negative, so the homogeneous state is linearly unstable to a spatial mode; and the two diffusivities are necessarily unequal, so no equal-diffusivity system stable without diffusion can pattern, whatever its kinetics.",
   "sources": [
    "doi:10.1098/rstb.1952.0012"
   ],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [
     "embryo",
     "larva"
    ],
    "ranges": {}
   },
   "constraints": [
    "TURING1"
   ],
   "content_hash": "90a7d5ef5876577fa13a42929f04e59ab35ed0345d0aec6ef52a7cced7bba780"
  },
  {
   "law_id": "walking-pendulum-speed",
   "version": "1.0.0",
   "kind": "physical",
   "status": "proposed",
   "label": "Walking speed as a pendulum (not formalised)",
   "level": "phenotype",
   "theorem": null,
   "module": null,
   "statement": "Walking speed ∝ √L from the leg as a pendulum (Thompson ch. II, third route).",
   "sources": [],
   "scope": {
    "taxa": [
     "any"
    ],
    "life_stages": [],
    "ranges": {}
   },
   "constraint_scopes": {},
   "constraints": [],
   "content_hash": "cc4fecaa7c6139dfe7dda4b373135f5cc8213630967dce0f62c6d9f204d0fd80"
  }
 ],
 "file": "lean/registry/lawsets/lawset-1.8.1.json",
 "is_current": true,
 "origin": "registry"
}
