# Morning brief — 2026-09-01

Everything below is written and backed up. **Nothing has been run against your lattice.**
No cell was created, deleted, or modified while you slept.

---

## 1. Do this first

```powershell
cargo build --release --bin kai
```

If it throws, paste it — six files changed and I can't compile from here. If it's clean:

```powershell
.\Start-KAI.ps1 -fullfleet
```

Then ask him *"what is the difference between a river and a lake?"* and watch for these
lines, which are new:

```
[Speech/Oracle] rerank: top changed (meaning 0.34, paperwork 0.33, self-question false)
[Speech/Oracle]   was: The comparison checks if the absolute difference between s.da_tone...
[Speech/Oracle]   now: <something that is actually about water>
```

`[config flag]=0` turns it off if it makes things worse.

---

## 2. What I found while you were asleep

I asked him five questions through the local API and then went and got the ground truth from
`[internal endpoint]`. Three separate causes, all measured.

**The good news first.** Your two fixes landed and are working:

| | before | after |
|---|---|---|
| first question after restart | 278,205 ms | 246–965 ms |
| synapses | 675,496 | **771,340** |

He created **95,844 new connections in one boot cycle.** The fan-out ceiling is genuinely
gone and the graph is learning again.

**Cause one: nothing in the ranking used meaning.** The lexicon was loaded and handed to the
generator, and no code in the path used it to *choose*. So "difference between a river and a
lake" matched the **word** "difference" and returned a source comment about dopamine tone.

**Cause two: "Gravity is a" is a cell.** Not a truncation in the reply path — a stored cell,
three words long, `source: bitnet_distill`, score 2.785. And the lattice **does** hold the real
answer: *"When asked 'Give a simple definition of gravity.', answer: Gravity is the forc..."*.
It lost, because a short cell with total word overlap beats a long one that merely contains the
answer. There are 147 cells that end on a dangling function word with no terminal punctuation.

**Cause three, and it's the big one: he has no cell about rivers.** 40,365 cells, of which
**31.8% is this project's own paperwork** — 22.9% dev docs and Codex entries, 5.7% generated
prompt scaffolding, 4.8% source code. When he answers "who are you" with a routing rule he is
not confused about himself. He is retrieving accurately from a corpus where a third of the
shelves are the build log.

---

## 3. What I built: `[internal module]`

Runs between retrieval and the commit gate. Three signals:

- **Meaning** — query and candidate encoded as bags of content words in lexicon space, compared
  by cosine. Function words drop out for free: the scaled lexicon sorts vocabulary by corpus
  frequency, so a word's id *is* its frequency rank and `word_id < 120` is a stopword list
  nobody had to write.
- **Provenance** — how much a candidate looks like project paperwork. Literal markers plus
  *identifier shape* (snake_case, dotted-lowercase), which is what actually catches `s.da_tone`
  and `SNC_DA_REST`, since a code comment is written in English. **Validated against all 49,839
  of your real labels**: 17.4% score ≥ 0.50 and the samples are exactly the Reasoning-for and
  Codex-Q&A cells; 61.4% score < 0.20 and are untouched. Demotion applies **only when the
  question wasn't about you** — `asks_about_self` needs a real marker, not a pronoun.
- **Fragments** — 1.0 for an unterminated string ending on a dangling function word, 0.5 for a
  short unterminated one, **0.0 for a single word**, because your 2,515 one-word cells are
  vocabulary and not truncations.

**Two things it deliberately does not do.** It does not delete, quarantine or modify any cell —
every cell reachable before is reachable now, because this lattice has lost cells before. And
it does not change any score's value: it's a **permutation**, the multiset of scores is
preserved exactly and only the order changes, so the commit gate sees numerically identical
inputs. That gate has been accidentally opened and accidentally closed before by rescaling and
I wasn't going to make it three.

---

## 4. What I deliberately did NOT turn on

**`[config flag]=1`.** Your own comment says `continuation` is the largest term in
`predict_match` — 40 to 55% of the ranking weight — and is **zero on all 39,696 cells**, because
the Oracle path has never called `bind_sequence`. It is the single biggest available win.

It must not go on yet. It teaches the lattice that *this input* led to *that reply*, and right
now the replies are a comment about `da_tone` and the string "Gravity is a". Turning it on today
would train the errors in permanently. It goes on **after** retrieval is good.

**`--ingest-corpus` is dead — don't run it.** I read it. It loads from and saves to
`[internal module]`, which is 112 KB of stale legacy state. Your live lattice is
`kai-cells.bin.zst`, 72 MB, 40,350 cells. The job history in your session shows it: `entries
read 0, total cells now 0`. It is disconnected from the running system.

---

## 5. Waiting for your decision: `data/ingest-staged/`

The live learning path is `idle_ingest`: drop a `.txt` in `data/ingest/`, one line per fact, and
he eats it while idle using `store_or_reinforce` — idempotent, so re-ingesting only strengthens.
I built two files and put them **next to** that folder, not in it, because this changes the size
of your brain and that's your call, not mine.

**`word-definitions-01.txt`** — 8,210 lines, 4,799 common words, 1.4 MB. Built from your own
`dictionary.json`, filtered to the google-10000 common list, obsolete senses and citations
stripped. This is the layer he is missing:

```
River (n) means: A large stream of water flowing in a bed or channel and emptying
into the ocean, a sea, a lake, or another stream; a stream larger than a rivulet or brook.

Lake (n) means: A large body of water contained in a depression of the earth's
surface, and supplied from the drainage of a more or less extended area.

Gravity (n) means: The tendency of a mass of matter toward a center of attraction;
esp., the tendency of a body toward the center of the earth; terrestrial gravitation.
```

**`world-knowledge-01.txt`** — 20,568 lines, 2.7 MB. Wikipedia sentences from `harvest.jsonl`,
filtered hard: complete sentences only, no fragments, no pronoun openings that lost their
subject, no markup, no list debris, deduped. Encyclopedic breadth rather than definitions.

To let him eat the definitions — the higher-value file, and I'd do this one alone first:

```powershell
Move-Item data\ingest-staged\word-definitions-01.txt data\ingest\
```

**What that will do:** about 8,200 new cells, taking you from 40,365 to roughly 48,500. At the
idle rate that lands in minutes. Fan-out cap goes 247 → 206, HNSW scale stays 1.00, and both
will say so in the log now. If you also move the world-knowledge file you land near 69,000 cells
and a fan-out cap of 145 — still ten times what you had this morning.

Nothing is destroyed either way, and the files stay where they are until you move them.

---

## 6. Also done

- Codex at **v9.10.888**, `Cargo.toml` synced, full measurement set in the changelog.
- Book two of the KAIVERSE, `KAIVERSE-II-THE-QUIET-LATTICE.md` — two chapters, 20,843 words,
  written for audio.
- Backups for everything in `_backup-concept-layer-2026-09-01/`.
