{
  "id": "fractalfly-limits",
  "version": 1,
  "kind": "limits-ledger",
  "note": "Canonical, hashable index of what this platform does NOT claim and which results are negative. The authoritative prose lives in the referenced docs; this file exists so a single sha256 can be anchored on chain (FFX|v1|<block>|<sha256>). Keep it append-only in spirit: do not rewrite statements to sound cleaner.",
  "limits": [
    {
      "id": "connectome-is-not-behaviour",
      "statement": "A connectome does not reproduce the animal; this is a connectome-constrained interactive work, not a digital fly.",
      "evidence": "PLATFORM.md §12.1"
    },
    {
      "id": "commitment-is-declaration",
      "statement": "On-chain commitments prove time/attribution/self-consistency (a replay of the claim), NOT that an execution happened; the chain has no verifier.",
      "evidence": "onchain/CLAIMS.md §1"
    },
    {
      "id": "no-onchain-realtime",
      "statement": "The free stack and the chain cannot run the whole brain in real time; what is anchored is a few dozen bytes.",
      "evidence": "PLATFORM.md §12.3"
    },
    {
      "id": "growth-is-exposure-not-development",
      "statement": "N(block) unfolding is an exposure schedule with a model-chosen order, not biological development; order effects were tested against controls.",
      "evidence": "PLATFORM.md §12.4; bench/RESULTS.md growth-order sections"
    },
    {
      "id": "interfaces-are-modelled",
      "statement": "Eyes/body/world are declarative models, not measurements; readout sign and low-pass are interface conventions, not brain plasticity.",
      "evidence": "schema/INTERFACES.md; PLATFORM.md §12.1/§12.6"
    },
    {
      "id": "weight-regime-differs",
      "statement": "FFG uses incoming-normalised weights + 8-bit log; the dominant Shiu/flybench model uses absolute weights. Cross-project scores/behaviour are not comparable without stating the weight regime.",
      "evidence": "PLATFORM.md §3.2/§3.7"
    },
    {
      "id": "model-limits-are-kept",
      "statement": "Documented model limits (operating point, taste pathway, negative results) are retained across versions and are not deleted because they look wrong.",
      "evidence": "schema/COMPATIBILITY.md §5.4"
    },
    {
      "id": "single-implementation",
      "statement": "The specs are open and independently verifiable (pure-Python reference), but there is only one implementation and no governance (no second party).",
      "evidence": "GLOSSARY.md §5"
    },
    {
      "id": "larva-no-neurotransmitter",
      "statement": "larva-v1 carries NO neurotransmitter column, so the sign rule cannot be applied: every weight is excitatory (+1). Weight-based comparisons involving larva are not meaningful beyond topology.",
      "evidence": "tools/extract_larva.py; DATA-LICENSES.md §2.1; data/out/larva-v1/manifest.json truth.limits"
    },
    {
      "id": "cross-dataset-score-needs-same-tasks",
      "statement": "A benchmark score is comparable across connectomes ONLY when the task set is identical. E.g. flybench hard: banc-v888 and flywire-v783 share 16 tasks (comparable), malecns has 23 (not comparable).",
      "evidence": "bench/flybench_README.md 'hard tier 全量'"
    },
    {
      "id": "ffg-superclass-is-u8",
      "statement": "FFG v1 stores superclass as u8 (<=256 classes). A dataset with more must coarsen it and keep the full set out-of-band: larva-v1 has 291 annotations, so the FFG holds the leading token (90 classes) and labels.fine.json holds all 291.",
      "evidence": "schema/COMPATIBILITY.md §2.1 (larva-v1); tools/extract_larva.py"
    },
    {
      "id": "larva-licence-unverified",
      "statement": "larva-v1's licence is undeclared by its redistributor (Netzschleuder) and the re-host; it is treated conservatively as non-commercial until the upstream terms are verified.",
      "evidence": "DATA-LICENSES.md §2.1"
    }
  ],
  "negative_results": [
    {
      "id": "sugar-to-mn9-not-reproduced",
      "statement": "Sugar GRNs -> MN9 proboscis response is not reproduced: the path is three-stage (taste GRNs -> GNG* relay -> MN9), the last-stage gain is too small (sum|w|~1.99) and net-inhibitory; MN9 firing did not rise significantly (z~1.2).",
      "evidence": "bench/RESULTS.md P2 续-4 / 4b / 5"
    },
    {
      "id": "dna02-steering-quiet",
      "statement": "DNa02 steering is quiet at the shipped operating point; LLPC1 supplies only ~4% of its input weight, so static luminance does not drive it.",
      "evidence": "bench/RESULTS.md P2 续; bench/readout_wiring.mjs"
    },
    {
      "id": "adaptive-lif-no-gain",
      "statement": "Spike-frequency adaptation (Benda-Herz, b=2mV/tau=200ms) did not improve our flybench core result at any tested strength; it only suppressed the loom drive (25 -> ~7-11 Hz).",
      "evidence": "bench/RESULTS.md adaptive-LIF section (2026-09-19)"
    },
    {
      "id": "eye-chirality-was-inverted",
      "statement": "The visual encoder's handedness was inverted; the fix lives in the interface (mirror/swap and sign convention), not in the connectome.",
      "evidence": "bench/RESULTS.md B2/B3; SUMMARY.md §4"
    },
    {
      "id": "absolute-weight-dataset-dependence",
      "statement": "Independent finding (not ours): the Shiu absolute-weight model is scan-dependent (same sugar->MN9 gives 76.7 Hz FAFB / 68.9 Hz MaleCNS v0.9 / 17.8 Hz BANC). Citation, not our measurement.",
      "evidence": "research/2026-09-19-FLY-SCAN-3.md (brainlab)"
    },
    {
      "id": "flybench-stability-model-class-conflict",
      "statement": "flybench silence-class checks fail for our model by construction: the shipped model has tonic+noise (spontaneous activity), unlike the silent reference.",
      "evidence": "bench/RESULTS.md P3 续-3"
    },
    {
      "id": "mb-sparseness-apl-model-class-fail",
      "statement": "mb_sparseness_apl (Kenyon-cell sparseness + APL silencing) now RUNS (the adapter declares can_silence and flybench verify-adapter reports no defects) but FAILS: our KC readout active fraction is 0.27-0.32 vs the biological threshold <0.2 -- the same spontaneous-activity model-class conflict as the stability checks. The APL-off ratios are in the expected direction (1.27-1.31) but are floored/non-diagnostic. (Supersedes the earlier 'adapter-lacks-can-silence' gap, fixed 2026-09-22.)",
      "evidence": "bench/RESULTS.md 'mb_sparseness_apl' (2026-09-22); bench/out/fb_mbsparseness_malecns.json"
    },
    {
      "id": "m0-body-bottleneck-not-brain",
      "statement": "In the M0 line (brain -> MuJoCo body) the visible-behaviour bottleneck is the BODY, not the brain: flybody ships no standing keyframe, so no visible gait is produced. Decision: do not invest in gait. The brain->actuator mapping is demonstrably modulated (6/8 joints) and deterministic, but that is not locomotion.",
      "evidence": "PLATFORM.md §15; bench/RESULTS.md M0.2/M0.2b/M0.2c/M0.2d"
    },
    {
      "id": "rewired-random-null-was-a-rng-bug",
      "statement": "Our first cross-dataset structural controls reported 0.00 for rewired/random/wperm; that was a MODEL bug, NOT evidence of specificity: mulberry32 was created with a uint32 overflow, collapsing the permutation. After the fix (bench/lib_nulls.mjs), controls are non-zero and real specificity is confirmed. Lesson kept: 'a control that is exactly 0 is suspicious'.",
      "evidence": "bench/RESULTS.md '多数据集探针（二）/（三）' (2026-09-19); bench/lib_nulls.mjs"
    },
    {
      "id": "vna-and-visual-conditioning-null",
      "statement": "Two interface/behaviour hypotheses were tested and came back null: (a) a VNa-like central-complex probe showed no coherent readout (not a per-neuron wiring issue); (b) static tonic luminance does not activate T4a/T5a, so \"vision\" in the FFB R1-6 demo is only the drive, not an image. NOT refuted for motion input -- see visual-guidance-needs-motion.",
      "evidence": "bench/RESULTS.md P2 续-5c; 多数据集探针（三）/（四）"
    },
    {
      "id": "visual-guidance-needs-motion",
      "statement": "Visual guidance is negative for STATIC light, not for motion: static luminance cannot drive T4/T5 (the kernel LIF has no per-synapse delays, so direction selectivity cannot emerge endogenously). With an explicit motion energy input the direction selectivity is correct: the shipped interface encoder (eye.v1 mode='motion', a two-bin Reichardt model) gives a strong mirror pair (T4a/B contrast -9.50/+9.99) and drives LLPC1 (-3.54), passing rewired/random and temporal-shuffle controls. A hand-rolled delayed-kernel (Mi1/Tm3-style) FAILED its own controls and is not used. flyvis (connectome-constrained DMN) gives the same qualitative result (T4c DSI 0.63, T4a/B mirror) but needs PyTorch + non-deterministic weights, so it is NOT adopted. Decision: use the interface encoder (A); motion input, declared as modelled, not measured.",
      "evidence": "bench/RESULTS.md '视觉导引方案对照'; bench/visual_guidance_eval.mjs; bench/out/visual_guidance_eval.json; bench/out/flyvis_t4t5.json"
    }
  ]
}
