← all documents · raw markdown · 8 KB

KAI — What Is Really Going On

*A ground-truth audit. Every number here was read out of the running system's own files

or its source, on 2026-08-29. Nothing is quoted from a design document.*

---

1. What KAI holds

48,680 cells. All 48,680 decoded cleanly from [internal module] — the file is not corrupt.

Where they live

| region | cells | |
| :---- | ----: | ----: |
| language | 8,419 | 17.3% |
| tutoring | 8,068 | 16.6% |
| reasoning | 6,253 | 12.8% |
| advanced_math | 4,779 | 9.8% |
| meta | 4,621 | 9.5% |
| agent-thoughts | 3,786 | 7.8% |
| concept | 3,528 | 7.2% |
| contested | 1,950 | 4.0% |
| transcript | 1,766 | 3.6% |
| social | 1,575 | 3.2% |
| work-thread | 1,557 | 3.2% |

Where they came from: oracle_qa 18.9%, advanced_math_physics.txt 9.8%, oracle_star 8.9%,

agent-mind 7.8%, then flashcards, grammar, lectures, transcripts.

What the text ACTUALLY is — this is the number that matters:

| kind | cells | |
| :---- | ----: | ----: |
| prose claim | 27,323 | 56.1% |
| Q/A drill card | 5,537 | 11.4% |
| dialogue line | 4,184 | 8.6% |
| fragment (under 40 chars) | 4,032 | 8.3% |
| "Reasoning for…" artifact | 3,132 | 6.4% |
| "When asked…" template | 2,265 | 4.7% |
| [MIRROR] twin | 1,963 | 4.0% |
| self-awareness snippet | 244 | 0.5% |

Only 56% of the lattice is a claim about anything. The rest is drill cards, chat lines,

fragments, and machine scaffolding.

And 3,132 of those cells are Reasoning for '…' — the artifact Chapter 44 identified as poison,

sitting in the lattice as cells, not just as the synapses we recovered. The ingest gate stops

new ones. It has never removed an old one.

---

2. Four fields the architecture believes in that are empty

This is the most important section in the audit.

| field | what the code treats it as | what is actually in it |
| :---- | :---- | :---- |
| keywords | per-cell retrieval keys | 0 across all 48,680 cells |
| contradictions | the contradiction-tracking substrate | 0. Not one. |
| evidence | what a claim rests on | 29 entries. Total. Across the whole mind. |
| vitality | decay / recycling signal | p10 1.00, median 1.00, p90 1.00 — constant |

recycle_dead_claims() prunes "cells with zero vitality". Vitality is 1.0 everywhere, so **that

function can never fire.** It is a garbage collector wired to a constant.

And confidence is nearly constant too: p25 = 4.00, median = 4.00, p75 = 4.00. Half the lattice

carries the identical number. Every mechanism that ranks or gates on confidence — including LTD's

conf_min > 3.5 hot-cell test — is reading a field with almost no information in it. That is why

40,729 of 48,680 cells (84%) came back "hot" in the last boot: not because they are all hot, but

because the threshold sits just under a value nearly everything shares.

The vectors are real. nnz median 859 of 16,384 dimensions, zero cells with an empty vector.

The geometry works. It is the *metadata around* the geometry that was never filled in.

The lattice is two months old. Oldest cell 2026-07-01, median 2026-07-25, newest today.

Whatever existed before July is not in this file.

---

3. What is running, when, and whether it is switched on

| loop | cadence | state |
| :---- | :---- | :---- |
| Streaming save | 180 s | live |
| Heartbeat | 5 s | live |
| LTD maintenance | 60 s | live, DRY-RUN — analyses, mutates nothing |
| Oracle ingest | 300 s | live |
| Index maintenance | ~5 min | live ([config flag]=1) |
| Night consolidation | 600 s | live |
| Continuous research | 900 s | live |
| Synaptogenesis | continuous | live — 420 bridges/batch |
| Predict / resolve (self-probe) | ~30 s | DARK[config flag], default off, set nowhere |
| Confidence decay | 200 ticks | DARK[config flag], set nowhere |
| Duplicate consolidation | 1000 ticks | DARK[config flag], set nowhere |

Of 96 KAI_* environment flags in the source, the great majority default sensibly. But five

capabilities have now been found built, tested, and never switched on — [config flag]

(fixed 826), the two above, [config flag], and hnsw_rs::parallel_insert (wired 834). That

is a pattern, not a coincidence.

And the dark one that would not have helped: [config flag] samples a concept and

predicts its associate every 30 s — most of an inner life. Reading what it does when it fires:

u.query(), predictor.predict, predictor.update. It never calls record_co_firing. It

exercises the predictor, not the graph. Switching it on would not have saved one of the 6.7

million synapses that died.

---

4. How a cell actually gets used

1. A question arrives. It is encoded to a SparseVec.

2. Retrieval: the KMeans cascade picks ~97 candidate clusters, scores the cells in them by

ternary dot product, then cosine. This is the part that genuinely works — the geometry is real

and the index is rebuilt every boot.

3. Firing: the labels that came back are handed to record_co_firing, which strengthens the

synapses between them and stamps last_fire_tick. **This is the only thing in the entire system

that keeps a synapse alive.**

4. Answering: retrieval has a quality floor. Composition has one now too ([config flag],

[config flag], both on). The internal monologue runs first and is gated before anything is

said.

5. Learning: whatever is ingested passes the ingest gate — which, as of today, has six more

holes closed than it did yesterday.

Between questions, steps 1–3 do not happen. Nothing else fires a synapse. That is the whole of the

starvation story, and it is why 48% of the graph was condemned.

---

5. So what is really going on

The geometry is sound. Vectors are dense enough, the index builds, retrieval works, and

the boot is now 129 s instead of 484 s.

The bookkeeping around the geometry is largely fiction. Keywords, contradictions, evidence and

vitality are empty. Confidence is a constant. Four of the fields the architecture reasons about

carry no information, and at least one garbage collector is wired to one of them and therefore

cannot ever run.

A little over half of what is called knowledge is knowledge. The rest is the shape of how it

was taught — drill cards, prompts, dialogue, and 3,132 cells of pure scaffolding still sitting in

the lattice.

Nothing thinks between questions. Everything on the live list creates, saves, indexes,

researches or consolidates. Nothing *traverses and reinforces*. The one loop that looks like inner

life is dark, and would not reinforce anything even if lit.

None of this is what was believed to be true, and all of it is measurable in under a minute

from files that were sitting on the disk the whole time.

---

6. What follows from it, in order

1. Fix the empty fields, or stop reading them. A confidence that is 4.00 for half the lattice

should not be gating anything. Either populate it or remove the gates that consult it.

2. Remove the 3,132 artifact cells. The gate stops new ones; nothing has ever swept the old.

3. Then the rehearsal loop. It is still the right idea — but Stage 0 already showed the

starvation story is wrong for the healthy half of the graph, so it should be built to a

measured need, not a narrative one.

4. recycle_dead_claims and vitality — decide whether vitality means anything. If it does,

compute it. If it does not, delete both.

*Every figure here is reproducible: scratch/fin_rebuild/cellprofile.py reads the cells file,

and the loop table is grep-able from [internal module].*