
Darwin-X / Evidence
Technical evidence is published in English.
compiled 2026-10-03
F51 Darwin-X is a local-only research repository: a hybrid SSD/attention transformer trained and measured on two consumer GPUs, plus the instrumentation built around it. Two things are claimed here and nothing more. First, that prefix-state reuse in this architecture is only worth reporting once a parity gate has proven the cached path computes the same thing as a full recompute — including the case where an earlier benchmark reported a 57.5% speedup that turned out to be measuring nothing. Second, that a system which cannot establish the validity of a result should refuse to emit it, implemented as three gates inside the training runtime. The repository also records two transfer experiments that failed, with a calibration experiment establishing that the apparatus could have detected a success. Everything below is quoted from a file in the repository or from the published paper; anything not verifiable is listed under "missing".
Evidence file for the F51 Darwin-X investigation and the paper 'Refuse, Don't Report: Three Integrity Gates for Self-Modifying ML Systems'. Every claim here was read from a real file on disk, from the published PDF identified by its SHA-256, or from a public page/API fetched on 2026-10-03. Nothing is inferred, estimated or invented. Where a fact could not be confirmed, the claim is marked 'documented, artifact not in public repo' or listed under missing[] instead of being presented as verified.
The method is the contribution: no number is reported for a code path that has not been proven equivalent to the reference path, and no experiment reports a result without a pre-declared failure criterion and a matched control arm.
For each of burst = 8 distinct suffixes sharing one prefix, the harness compares final-token logits from the cold path (recompute prefix + suffix from scratch) against the warm path (clone the prefix cache, continue from absolute position prefix_len). The gate requires all three of: max |delta logit| <= 2e-2, KL(cold || warm) <= 1e-5, and top-1 agreement on every suffix. verify_state_reuse.py exits non-zero and suppresses all timing output if the gate fails. A measured speedup is therefore only ever printed for a path already proven numerically equivalent to recompute.
A parity test can pass vacuously if the model ignores its context. A third test therefore asserts that dropping the prefix entirely - precisely what the earlier benchmark did - MUST change the logits (max |delta| > 1e-3). A further test asserts the memory scaling claim directly: attention KV must grow with a 4x token increase while SSD state stays byte-identical.
With a populated KV cache where k_len > q_len, PyTorch's F.scaled_dot_product_attention(is_causal=True) aligns its triangular mask to the TOP-LEFT of the [q_len, k_len] score matrix. A suffix query at absolute position p is then permitted to attend only to the first few prefix tokens, so the cached prefix is silently discarded and no error is raised. The fix builds the mask from absolute positions. Before the fix, warm and cold logits diverged by ~5.6e-2; after it, by ~1e-6.
The hybrid cache splits into two parts. Attention layers (GQACausalAttention) hold per-layer k and v tensors that concatenate as the sequence extends, so size is O(N). SSD layers (SSDMixerOnly) hold per-layer conv_state and ssm_state obtained via block.ssd(..., return_state=True), so size is O(1) in sequence length. The benchmark asks whether reuse is correct and what the cache actually costs, on one device.
Every FFN intermediate neuron is stamped with SHA-256, giving per-neuron cryptographic identity alongside a statistical label. Labeling uses split-half reliability with Cohen's kappa per layer, a Welch t-test per neuron (factual vs syntactic), and Bonferroni correction (|t| > 4.8). The scanner explicitly refuses to label a neuron it cannot decide on rather than emitting a naked label.
Knowledge is installed by rank-1 weight edit rather than fine-tuning. The implementation is a proper ROME: v* optimised by gradient descent (not a fixed direction), covariance matrix C = E[kk^T] over a neutral corpus, key averaged over 14 bilingual EN+PT templates, applied as W' = W + (v* - Wk*)(C^-1 k*)^T / (k*^T C^-1 k*). Each edit is bracketed by SHA-256 before and after, and rollback must restore the original hash bit-exactly. MEMIT is the multi-layer variant, spreading over 12 layers with a calibrated lambda of 1.5 per layer.
The paper's contribution is a stance, not a primitive: when validity cannot be established, produce nothing - not a flagged result, not a warning alongside a number, no artifact. Three gates implement it. (1) MEMORY: a persistent key-value store holds encoded keys k = f_theta(h); restoring records into a module whose theta differs encodes the query with one projection and compares it against keys written by another. This does not raise, it returns scores. The gate binds two facts into the snapshot and checks both on load - the digest of the payload, and a fingerprint of the encoders that wrote the keys. (2) PROVENANCE: operations that preserve function under the permutation symmetry of hidden units (selection, permutation, scatter, drop) are exactly the operations that preserve the scalar byte values of the parameters, which makes a cryptographic hash a sound inheritance certificate for precisely the legal operations. The ledger therefore requires each weight record to carry either a provenance digest (claiming inheritance) or a measured drift (admitting manufacture) - never neither. The class is derived from evidence, not from the method name. (3) ABLATION: arms are typed CONTROL, SHADOW, APPLY; SHADOW computes and records the intervention the system would have applied and applies nothing, so the counterfactual is inline in the same run and the same ledger. A registration contract requires all three arms to agree on base_checkpoint_id, data_cursor, seed and training_contract_id; on any mismatch it raises and no output directory is created.
Every experiment in section 4 of the paper had its success and failure criteria written into the artifact before the measurement. The governing roadmap states the failure criterion explicitly and in advance: if the graft does not beat a norm-matched noise control, the hypothesis falls - that is a result, not a defeat. The three failure arms are mandatory: real donor / norm-matched noise / no graft.
Three classes of measured numbers: parity and cache scaling, speedups that only exist because the parity gate passed, and one prominent speedup that died when the gate was introduced.
RTX 5060 Ti, src/configs/darwin_x_100m.yaml, 153M parameters, burst = 8, suffix = 16 tokens. Residual divergence is float non-associativity: the cold path sums prefix and suffix contributions in one pass, the warm path sums them across a concatenation boundary. Three orders of magnitude below the gate.
| Prefix tokens | Parity | max abs delta | KL | top-1 |
|---|---|---|---|---|
| 128 | OK | 1.0e-06 | 2.44e-07 | 8/8 |
| 512 | OK | 1.0e-06 | 2.43e-07 | 8/8 |
| 1024 | OK | 2.0e-06 | 4.72e-07 | 8/8 |
| 2048 | OK | 2.0e-06 | 2.43e-07 | 8/8 |
Attention KV is exactly linear at 3.0 KiB/token (3 attention layers, n_kv_heads = 2, head_dim = 64, fp32). SSD state is byte-identical across a 16x range of prefix lengths. Crossover is at ~228 tokens (684 / 3.0): below it the SSD state is the larger of the two, so for short prefixes the hybrid design COSTS memory relative to a pure-attention cache. At 2048 tokens the SSD half is 10% of the total cache; the attention half still dominates and still grows linearly. The report's own conclusion is blunt: a hybrid model does not have an O(1) cache - it has an O(N) cache with a smaller constant.
| Prefix tokens | Attention KV | SSD state | Total |
|---|---|---|---|
| 128 | 384 KiB | 684 KiB | 1068 KiB |
| 512 | 1536 KiB | 684 KiB | 2220 KiB |
| 1024 | 3072 KiB | 684 KiB | 3756 KiB |
| 2048 | 6144 KiB | 684 KiB | 6828 KiB |
Three model sizes, one device (RTX 5060 Ti). At 517M the burst is 50 requests over 32-token suffixes, min-of-10 with global warmup; warm cost per request is flat at ~146-158 ms regardless of prefix length, because the suffix work is constant and the prefix is paid once. At 1.6B MoE the non-monotonic profile at 2048 tokens is consistent with expert-load imbalance under random weights and is attributed to a weight-initialisation artifact, not a structural limit.
| Model | 256 | 512 | 1024 | 2048 | Parity |
|---|---|---|---|---|---|
| 153M, batched dispatch | 1.15x | 1.22x | 1.48x | 1.69x | OK |
| 517M (darwin_x_600m) | 3.69x | 7.42x | 12.30x | 18.57x | OK |
| 1.6B MoE (darwin_x_1.6b_nitro) | 1.59x | 2.69x | 8.21x | 5.84x | OK |
This is recorded here because it is the single strongest piece of evidence for the method. An earlier benchmark in the same repository (research/btb/run_e2e.py) reported speedups of 50-62%. Its warm path called the model on the suffix ALONE and stored a placeholder dict in place of the cache. It therefore measured "processing 32 tokens is faster than processing 1056", not prefix reuse at all, and the resulting hidden state differed from the true one by 82.9% relative error. The failure was invisible in the timing numbers. The specific headline number is recorded in the artifact: 57.5% mean speedup at prefix 128 tokens, burst size 10, cold_mean 2326.4 ms against warm_mean 989.0 ms. The same artifact shows the instability across neighbouring configurations of the same family - -0.0%, 57.5%, 10.1% and 8.1% at prefix 128 with burst sizes 5, 10, 20 and 50, and -23.5% at prefix 256 burst 50. A number that swings from +57% to -24% across a neighbouring parameter is not a measurement. Nothing in the current repository reports that figure as a result; the parity gate that replaced it suppresses timing output on failure, and the requirement is written into the test that guards it.
| prefix | burst | cold_mean_ms | warm_mean_ms | reported speedup |
|---|---|---|---|---|
| 128 | 5 | 2588.4 | 2589.3 | -0.0% |
| 128 | 10 | 2326.4 | 989.0 | 57.5% |
| 128 | 20 | 2619.7 | 2356.2 | 10.1% |
| 128 | 50 | 2578.6 | 2368.5 | 8.1% |
| 256 | 50 | 831.4 | 1026.6 | -23.5% |
Nothing had calibrated the transplant apparatus against a known answer, so SmolLM2-1.7B was rebuilt from itself, tensor by tensor, certifying every copy under the identity bijection. This exists to license the two negatives that follow: a null from a transplant experiment is only informative once the apparatus is known to reproduce a model exactly.
| measured | required |
|---|---|
| tensors certified 219 / 219 | 100% |
| KL vs donor, max over 10 prompts 4.13e-08 | < 1e-06 |
| max absolute logit error 0.0 | - |
| top-1 agreement 1.0 | - |
| ledger records, chain reverified 219 | - |
The FFN of TinyLlama-1.1B was grafted into SmolLM2-1.7B as gated extra capacity at five layers. Both have d_model 2048; an FFN expert maps residual to residual and never sees a token, so the divergent vocabularies (32k vs 49k) are irrelevant by construction - the donor tokenizer was never loaded. Only the routers were trainable: 10,245 parameters out of 1,884,401,669. The result is a null with a strong internal positive: the graft demonstrably applied, the router learned to distinguish real donor signal from noise and opened its gate for it - and what came through neither helped nor hurt measurably.
| Arm | held-out perplexity |
|---|---|
| A - real donor FFN | 11.2166 |
| B - norm-matched noise | 11.2163 |
| C - no graft | 11.2168 |
Sixteen facts the donor answers and the receptor does not were installed one at a time by rank-1 edit with an optimised value vector, against an unedited control set. Three of sixteen installed against a required minimum of eight. The failure is not lost capacity: the edited model still emits the correct tokens across much of the control set. What the edit installed is an unconditional attractor - every answer opens with the same spurious name, including on questions unrelated to any installed fact. Sixteen keys in one layer overlap into a constant bias rather than sixteen gated associations. In five of eighteen controls the attractor drags the output into degenerate repetition; in others it replaces the subject entirely. Full-parameter rollback returned a hash-identical model.
| measured | required |
|---|---|
| facts installed 3 / 16 | >= 8 |
| control set 18 -> 4 | >= 17 |
| full-parameter rollback hash identical | - |
The project's own session record lists refuted hypotheses next to confirmed ones. These are the strongest available evidence that the positive claims were not arrived at by selective reporting.
| Refuted claim | Evidence |
|---|---|
| Neurons are domain-specific | +0.972 correlation Python-Medicine; superposition is real at 1.7B |
| SAE separates domains | 0.94x ratio vs raw neurons; entanglement is structural |
| Layer transplant transfers ability | net negative (1/6 genuine improvement against 2/6 degraded) |
| Direction beats category for isolating a domain | 64.7% neuron vs 66.6% direction - a tie; only valid for installing, not separating |
| The system prompt is the ROME obstacle | 50% in both arms; it is the method, not the context |
Wiring the assembler to verify rather than assert surfaced a hidden defect: a single record covered two targets, and while the expert gate_proj was copied from the donor, the router weight of the same record was zeroed. Both had been recorded under function_preserving: true. Separately, the harness was challenged three times by the author during the published runs and was right three times - a divergence measured against the wrong donor, a persistence test run through the wrong API, and a control score dismissed as too strict that turned out to apply the author's own degeneracy rule.
The controls are the deliverable. Each is a mechanism that would have caught the corresponding failure, and each is exercised by a test or an inline negative control rather than asserted.
Dropping the prefix - exactly what the superseded benchmark did - must change the logits by more than 1e-3. If it does not, the model is ignoring its context and the positive parity test is vacuously true.
SSD recurrent state must stay byte-identical across a 16x range of prefix lengths while attention KV grows. Measured as exactly 700416 bytes at 128, 512, 1024 and 2048 tokens.
The self-reassembly run reports exactly one tensor of 219 that already matched the donor before its copy step, traced to tied embeddings and alphabetical ordering. Had the target secretly been the donor, all 219 would have matched. The control is in the artifact, not in the narration.
The graft experiment cannot be read as a null unless the intervention demonstrably applied, so a norm-matched noise arm and an untreated arm are both mandatory. The router gate reading of 0.773 against 0.015 supplies the proof that the real intervention was active while the result stayed null.
Sixteen facts were installed against an unedited control set of eighteen. The control set moved from 18 correct to 4, against a required floor of 17 - the intervention damaged what it did not target, which is what makes the 3/16 headline interpretable rather than a bare capacity number.
The memory gate binds payload digest and encoder fingerprint and refuses on either mismatch, and the tests exercise all three refusal paths. An import path with verify=False exists for the deliberate case and is documented as accepting meaningless recall until weights are restored - the escape hatch is explicit rather than a silent fallback. The provenance ledger refuses a record naming a bijection with nonzero drift, because byte-identical weights cannot have drifted.
The ablation harness types arms as CONTROL, SHADOW and APPLY. SHADOW computes and records the intervention the system would have applied and applies nothing, so the counterfactual is in the same run and the same ledger rather than reconstructed afterwards. The arms must further agree on base_checkpoint_id, data_cursor, seed and training_contract_id, or nothing is written.
Three times the author challenged a number the harness produced and three times the harness was right; re-running the criterion that produced each number reproduced the harness result exactly. This is recorded as a control on the experimenter, not as an anecdote.
Stated by the sources themselves. Where a limit was written by the author before the result was known, that is noted.
The paper is explicit that this is engineering, not a new mechanism: hash chains date to Haber & Stornetta (1991), SHA-256 to NIST (2001), permutation symmetry to Hecht-Nielsen (1990), randomized arms to clinical trials. The contribution is the stance and the composition, not a primitive. Refusal has a cost that has not been quantified - a gate that refuses can refuse wrongly, and neither the false-refusal rate under legitimate workflows nor the developer friction of a system that declines to produce output has been measured. Provenance is not equivalence: a transplant may be byte-exact and functionally different, because function depends on the graph and not only on the weights. Every parameter of a 1.7B donor copied into a host with extra machinery in the forward path was verified byte-identical, yet divergence from the donor was KL 0.75 as configured and KL 0.62 with one auxiliary organ disabled - the organ accounted for 17% of the gap, and 0.62 is the floor attributable to the hybrid attention/state-space arrangement and a non-standard feed-forward block. A ledger reading exact_copy and a measurement reading KL 0.62 are both correct and describe different things. Prior-art coverage comprised roughly 50 directed queries over arXiv, ACM, IEEE, Google Patents and USPTO - evidence within scope, not an examiner-grade novelty determination. The failure taxonomy comes from one repository over two days; the shapes are believed to generalise but that has not been shown.
Three model sizes on one device: all measured on a single RTX 5060 Ti. The 517M speedup is amortised over a burst of 50 sharing one prefix, so smaller bursts amortise the single prefill over fewer requests and the advantage shrinks accordingly. Random weights mean no cache-eviction pressure and no real traffic distribution - best-case conditions for reuse: one prefix, perfect hit rate, no memory contention. Random weights are sound for parity and FLOP-level timing but say nothing about generation quality. Single-device: no PCIe or RDMA transfer was performed or timed, and the report states plainly that any inter-GPU replication figure would be fabricated. fp32 throughout: a fp16/bf16 runtime halves both cache figures and moves the crossover. Parity is measured on final-token logits, the quantity that determines the next token, so divergence confined to earlier positions would not be caught.
Stated as an exclusion list: any inter-GPU or RDMA transfer time; any claim about test-time training; any comparison against vLLM, SGLang, or a published baseline; any claim that a hybrid cache is O(1). The report also declines to cite a motivating prior work because its bibliographic details were unverified - it cites nothing it has not checked.
Both transfer experiments are low-powered by design - 80 router steps, sixteen facts, one layer - and were stopped at the pre-declared failure criterion rather than tuned toward a positive. The addressability conclusion is stated as a measured negative at this scale, not a general impossibility.
The published Darwin-X page states Runtime: llama.cpp. No llama.cpp or GGUF runtime integration for Darwin-X was found in the repository. The package is explicitly PyTorch-based (torch==2.13.0 pinned under both cpu-audit and cpu-audit-dev extras), the model code under src/f51_darwin/darwin_x_core/ is PyTorch, and the only llama.cpp references in the tree belong to other projects or to an unrelated cache-patch comment. This should be corrected or removed before the evidence page is published alongside it.




Deliberately empty. The repository contains zero image or PDF files (903 blobs in the public tree, none with an image or PDF extension), so the project has no figures of its own to copy. The images that do exist in the local checkout are under references/mini-AGI/assets/ and belong to a third-party project (github.com/volotat/mini-AGI, MIT, copyright Alexey Borsky 2026) - they were excluded and must not be used. As of 2026-10-03 the four figures in figures[] were generated by F51 Labs from the committed JSON under research/btb/ (and, for one number, from the prose of the technical report); they are visualisations of recorded artifacts, not project artifacts, and each caption states its source file. Derivation: tools/make_darwin_figures.py.
readme
Positions the project as a pipeline for cataloging every neuron in a transformer with SHA-256, surgically editing knowledge via ROME/MEMIT, and proving nothing else changed through exact hash-verified rollback. Runs on 2 consumer GPUs with zero cloud dependency. Carries badges for 'status active', 'tests 136 passing' and 'neurons 196,608 stamped'. The 136 figure does not match the current checkout - see missing.
paper · 10 pages · 267,953 bytes · SHA-256 3819550C…
Zenodo record version 2, resource type Preprint. The PDF's own first page prints the CONCEPT DOI 10.5281/zenodo.21726133, which always resolves to the latest version; 10.5281/zenodo.21726235 is the version DOI for this record. The repository at the local checkout commit contains only an earlier markdown draft (governance/docs/PAPER_REFUSE_NOT_REPORT.md) whose abstract stops before the three experiments; the published version adds section 4 with the calibration, the cross-lineage graft and the fact-installation experiment.
doi
Resolved and title confirmed by following the redirect on 2026-10-03. DOI is live.
method-note
research/paper_f51_darwin_x_2026.md
The full method behind the parity gate: cache model, the is_causal=True top-left alignment pitfall, parity thresholds, negative control, cache-scaling measurement, the speedup tables per model size, threats to validity, and an explicit list of what the results do NOT support. This is the primary source for every inference number on the evidence page.
paper-draft · 19,516 bytes
governance/docs/PAPER_REFUSE_NOT_REPORT.md
Earlier draft of the published paper. Its abstract stops at the eight-experiment failure taxonomy and does not contain section 4 (the calibration, graft and fact experiments). Useful because it carries the full failure taxonomy table, the three gates in prose, the related-work survey and the limitations section in a diffable plain-text form.
method-note
governance/docs/F51_DARWIN_BLUEBOOK.md
The four pillars (cryptographic circuit catalog, ROME/MEMIT editing, persistent associative memory, atomic circuit transplant), the ten project laws (SHA-256 before and after every weight change, exact rollback, no naked neuron labels, knowledge preservation measured not assumed, backbone frozen, activation magnitude is not causal role, no cloud, every artifact a JSON with a schema version, paraphrase recall is the memory gate, best operating point reported not cherry-picked), an evidence inventory mapping each claim to an artifact, and a 'what we still need to prove' gap table. Most of the artifacts it names live in workspace/, which is not in the public repository.
method-note
governance/docs/SESSION_2026-07-30.md
Session record listing what was built, what was proved AND what was refuted, methodological corrections (an is_degenerate threshold of 0.3 that counted repetition as an assertion; an inverted selectivity ratio; a quantile activity floor that marked 10% as dead when no neuron was dead; a max_delta_norm clamp of 250; a tautological overlap check), and the session statistics including the 136 passing tests figure.
method-note
governance/docs/ROADMAP_RECEPTOR_UNIVERSAL.md
Carries the pre-declared failure criterion and the mandatory three-arm design for the graft, and the pre-declared success criteria for the certified self-reassembly (KL exactly 0 and a valid certificate on 100% of tensors). Closes with an explicit statement of what the roadmap does NOT promise.
notice
THIRD_PARTY_NOTICES.md
Records that references/mini-AGI is an unmodified clone of https://github.com/volotat/mini-AGI at commit 96784b78008a22c4a1ee2c9961640c22137320ef, MIT licensed, copyright Alexey Borsky, 2026, and that the mini-AGI code is not an F51 creation. This is why the images under references/mini-AGI/assets/ must not be used on the site.
test
src/tests/test_btb_state_reuse_parity.py
Runnable on CPU in seconds. Contains the positive parity assertion, the negative control that dropping the prefix must change logits, and the SSD-constant-vs-attention-growth assertion. The module docstring states the thesis being tested and what a failure would mean.
test
src/tests/test_memory_snapshot_integrity.py
Exercises each refusal path by name: different encoders, digest mismatch, missing snapshot_sha256, invalid provenance taxonomies, and a fingerprint-coverage test that mutates a weight outside the initial sample.
raw-data
research/btb/state_reuse_results.json
Device NVIDIA GeForce RTX 5060 Ti, model F51-Darwin-X-100M, config src/configs/darwin_x_100m.yaml, all_parity_ok true. The file itself carries the caveat that weights are deterministic random init and that parity proves the algebra of the cache, independent of the weights.
raw-data
research/btb/e2e_results.json
Preserved, not deleted. Contains the 57.5% mean speedup at prefix 128 / burst 10 alongside -0.0%, 10.1% and 8.1% in neighbouring configurations of the same family. Retaining it is what makes the kill verifiable rather than a claim.
raw-data
research/btb/warm_vs_suffix_hybrid_100m.json
spd_real 1.1548 / 1.2194 / 1.4799 / 1.6946 with parity_ok true on every row and KL ~2.4e-07. Matches the published 153M table exactly.
raw-data
research/btb/warm_vs_suffix_1.6b_nitro.json
spd_real 1.5940 / 2.6946 / 8.2121 / 5.8405 with parity_ok true on every row. Matches the published 1.6B MoE table exactly. The non-monotonic 2048-token row is visible in the raw data.