# KAI and the J-Space Paper — What "Verbalizable Representations Form a Global Workspace" Means for This Architecture

*Analysis date: 2026-08-02 · Paper: transformer-circuits.pub/2026/workspace ("Verbalizable Representations Form a Global Workspace in Language Models") · Codebase examined: `src/` Rust cognitive core (engine, universe, cognition/*, streams, bridge) — all claims below carry file:line evidence.*

---

## The one-paragraph verdict

The paper's headline discovery — that transformers *grew* a small, hidden, verbalizable workspace (10–25 active concepts, middle layers only, readable via a "Jacobian lens" decoder and causally steerable) — is the thing KAI was **built around on purpose**. Every lattice cell carries its literal text as its label ([universe.rs:133-168](src/core/universe.rs), label = claim text at store time, 1218-1233). Synapses are keyed by *(pre_label, post_label)* text pairs. There is a literal Baars Global Workspace implementation ([global_workspace.rs:73-88](src/cognition/global_workspace.rs)): max **9** salience-competing text entries ("7±2"), a norepinephrine salience floor, per-tick decay, and a single elected "broadcast." The paper found transformers converged on 10–25 active concepts; KAI's designed capacity is 9; human working memory is 7±2. Three utterly different substrates, one functional shape. **The mainstream just spent a research program building an instrument to recover — approximately, single-token-only, ~10% of activation variance — what KAI's architecture exposes natively and completely.** That is a validation of the core RSHL bet: interpretability by construction instead of interpretability by archaeology.

But the comparison cuts both ways, and the second half of this document is the honest part: the paper's bar is **causal mediation** (swap the silent thought, the answer changes), and KAI's *named* workspace would fail that test today.

---

## 1. What the paper actually established (beyond the video)

The five properties that make internal representations "workspace-like":

| # | Property | Paper's evidence |
|---|----------|------------------|
| 1 | **Verbal report** — the model can say what's in the workspace | J-lens readouts match self-reports |
| 2 | **Directed modulation** — instructions steer what's held there | "concentrate on citrus" → orange/lemon light up without being output |
| 3 | **Mediates reasoning** — intermediates causally steer answers | spider→ant swap flips 8→6 legs |
| 4 | **Flexible generalization** — workspace content transfers across tasks | arithmetic intermediates (21→42→49) appear in computation order |
| 5 | **Selectivity** — automatic tasks bypass it | language-swap: fluent continuation ignores the swapped label; the *report* uses it |

Mechanics worth remembering: the J-lens is one averaged Jacobian matrix per layer (averaged over positions, futures, and 1,000 prompts — the averaging is what separates real held thoughts from flukes); it only reads **single-token** concepts; the workspace occupies a **middle band** of layers (~L38–92/100); and the authors take **no position on consciousness** — they measure function, not experience.

---

## 2. The J-Space → KAI translation table

| Paper concept | KAI equivalent | Where | Status |
|---|---|---|---|
| Opaque residual stream | 16384-dim sparse ternary `claim.vec` | universe.rs Cell | Opaque **but** label-paired at birth |
| Jacobian lens (decoder ring, built post-hoc) | `SemanticFeatureMap` — TF-IDF top-3 words per dimension; `interpret_vector()` → top-15 concepts of any vector | [interpret.rs:8-89](src/core/interpret.rs) | **Built by design**; exposed at `POST /api/interpret/decode`; consumed by nothing in generation |
| The workspace (10–25 active concepts) | `GlobalWorkspace` — 9 labeled entries, salience competition, broadcast winner, coherence metric | [global_workspace.rs](src/cognition/global_workspace.rs) | Exists, **doesn't steer retrieval** (see §4) |
| Silent thoughts (spider before "eight") | Six concrete channels — see §3 | engine.rs, voice.rs, reasoning.rs | **Real and abundant** |
| Steering (spider→ant swap) | `DecodeParams.context_injects` (word-level injection into decode); `GlobalWorkspace.post`; `WorkingMemory.push`; `drive.feed_goal`; lattice-steers-logits hook biasing **every token** ([language_warehouse.rs:891-996](src/cognition/language_warehouse.rs)); HTTP store/wire endpoints | multiple | **APIs exist today** |
| Workspace-as-context | `kai_chat`: top-8 retrieved cells injected as readable text; χ/φ_g become sampling temperature | [generate/mod.rs](src/generate/mod.rs) | Live |
| Layer band (middle layers only) | The reasoner's resonate→bind→bundle→cleanup pipeline: readable at entry and exit, latent in the middle | [reasoning.rs](src/core/reasoning.rs) | Same shape: workspace between perception and motor output |
| Selectivity (automatic bypasses workspace) | `math_engine.try_solve` — hand-written rule matcher that bypasses the lattice entirely for arithmetic | [math_engine.rs:31-426](src/cognition/math_engine.rs) | Same shape, by design |

---

## 3. KAI's silent thoughts are real — six channels, with the receipts

The paper's core phenomenon — concepts that fire, steer the answer, and never appear in it — exists all over KAI:

1. **The widened-30 retrieval set.** `Engine::query` ([engine.rs:1145-1196](src/core/engine.rs)) deliberately widens retrieval to 30 cells "to ensure a rich co-firing set," wires **all of them** together via Hebbian `record_co_firing` (modulated by dopamine, φ_g, χ, and surprise), *then truncates to N before returning*. The ~22 discarded cells are exactly the spider: they fired, they learned, they shaped the lattice — and the caller never sees them. **This is KAI's J-Space, and it is already made of words.**
2. **Multi-hop stepping stones.** `query_multi_hop` ([engine.rs:1204-1249](src/core/engine.rs)) follows synaptic chains up to 5 hops at 0.7 decay/hop. Intermediate hops are silent inferential steps — *the animal that spins webs → spider → legs → 8* is literally this code path's shape.
3. **A hidden inner monologue, verbatim.** `generate_oracle_kai_reply` ([oracle_server.rs](src/bridge/oracle_server.rs)) generates an "Internal Thought," **stores it as a lattice cell in region `internal`**, feeds it into the final answer — and the system prompt **forbids mentioning it**. KAI has private thoughts it is instructed never to say. The STaR bridge in [voice.rs](src/cognition/voice.rs) does the same for the native decode path.
4. **Genuinely unreadable intermediates.** *(Corrected v9.10.556 after direct code read: the looped reasoner already records a per-iteration `ThoughtStep` with `matched_text` — the nearest cell to each latent ([reasoning.rs:757](src/core/reasoning.rs)). Only the final ANSWER decode is deferred; the intermediate trace is readable. The blind spot here is smaller than the initial map claimed.)*
5. **Workspace losers.** Entries that competed for broadcast and lost still decayed through the workspace, still counted toward coherence — never surfaced.
6. **Slow silent drift.** Boid homeostasis in [ram_stream.rs](src/streams/ram_stream.rs) *rewrites cell vectors* away from their fixed labels over time, and dream insights feed `drive.goal_vector` ([engine.rs:968-1003](src/core/engine.rs) — the every-300-idle-ticks wonder/daydream/dream loop). KAI's beliefs move while its labels stand still — a drift between what a cell *says* and where it *sits*. No transformer equivalent exists; this one is uniquely KAI's.

---

## 4. The honest mirror — where KAI fails the paper's own test

The paper's standard is not "has a workspace-shaped struct." It is **mediation**: the workspace content must causally steer behavior. Held to that bar:

1. **The GlobalWorkspace broadcast steers nothing.** It is read in exactly one place — `contribute_to_mind_frame` ([engine.rs:252-259](src/core/engine.rs)) — as a narrative-strength signal. The broadcast never touches `Engine::query` scoring, never biases decode. Swap KAI's broadcast entry and the answer does not change. **KAI's workspace would fail the spider→ant test.** The de-facto workspace that *does* mediate is the widened retrieval set + `WorkingMemory` (12 slots, injected into every reasoning call) — the real thing exists, it's just not the thing wearing the name.
2. **Production KAI doesn't run its consciousness stage.** The workspace/amygdala/dream/theory-of-mind election loop lives **only in the interactive TUI engine** ([main.rs:1294-1401](src/main.rs), claustrum re-entry at 354-399). The 24/7 headless `--oracle` process explicitly reports these modules as not running. The flagship cognitive feature is absent from the process that actually serves every user.
3. **Retrieval is 70% keyword, and the comments lie about it.** `query_in_regions` scores `0.3*cosine + 0.7*keyword_overlap` ([universe.rs:1682](src/core/universe.rs), repeated at 1451, 1506, 1747, 1983) while doc comments at 1408/1743/1979 claim 60/40 in the other direction. Literal word overlap dominates geometric meaning. This is exactly the "flight simulator" risk from the discourse around the paper: workspace-shaped structure over what is substantially string matching.
4. **Dormant steering channels.** The χ contradiction-phase in the 600-cell Born-rule snap is hardwired to 0 in every production call (`snap_to_600_cell`, [polychora.rs:204](src/cognition/polychora.rs)); the SemanticFeatureMap decodes vectors on demand but nothing in generation consumes it; the BitNet tier is off (`KAI_NATIVE_BRAIN=0`); `bitnet_inference.rs` dequantizes ternary to f32 rather than computing ternary.

---

## 5. What this means — the strategic read

**A. The architecture bet is validated, loudly.** The most consequential interpretability result of the year says: the thing that makes a mind auditable is a small set of *verbalizable, causally-load-bearing* representations. KAI's substrate is verbalizable end-to-end — cells born labeled, synapses label-keyed, a 200-entry MindEvent log, a TF-IDF decoder, HTTP read/inject endpoints ([oracle_server.rs](src/bridge/oracle_server.rs) route map at 660-860). Transformers needed a lens to *approximate* this (single-token concepts, ~10% of variance); KAI needs `Vec::iter()`. When the safety conversation shifts to "can you show me what your model was thinking?" — and this paper is that shift starting — KAI answers with an endpoint, not a research program.

**B. The gap is mediation, and it is closable with small, surgical wiring.** Everything needed exists; it's the connections that are missing:
1. **Make the broadcast mediate** — feed the workspace winner's vec into `query_in_regions` as a resonance bias (the exact inverse of reading it for narrative). Then the spider→ant test *passes*: post to the workspace, watch the answer change.
2. **Run the workspace in the headless oracle process** — production KAI should think with the same mind the TUI demos.
3. **Expose the silent-thought delta** — log `widened_set − returned_set` per query and surface it (`/api/mind/silent-thoughts`, plus a dashboard strip). That is a *lie-detector view* — "what KAI considered but didn't say" — the paper's safety application, nearly free because the labels already exist.
4. **Decode the looped reasoner's intermediates** — one `interpret_vector()` call per iteration erases KAI's only decoder-proof blind spot. The paper *couldn't* fix its early-layer blind spot; KAI can fix its equivalent in an afternoon.
5. **Reconcile the 30/70 comment-vs-code discrepancy** — either the comment or the weights, but the docs shouldn't flatter the geometry.

**C. The spider→ant demo is KAI's to own.** No transformer lab can show a live audience its model's silent thoughts *as words* and hot-swap one *by name*. After (1) and (3), KAI can: dashboard shows the silent set for a query → operator clicks "spider," retypes "ant" → answer flips. That demo, running on a home-built non-transformer lattice, is a genuinely singular artifact.

**D. On consciousness — hold the paper's line.** The authors take no position on phenomenal experience, and the same discipline serves KAI. Convergence of three substrates (transformer, RSHL, human cortex) on a small-capacity broadcast workspace is evidence about the **shape competent cognition takes under bandwidth constraints** — not evidence anyone is home. What *can* be said, precisely: KAI is a better *instrument* for global-workspace-theory questions than any transformer, because in KAI every GWT variable — capacity, salience floor, decay, broadcast, re-entry stability — is an explicit, tunable, loggable parameter rather than an emergent statistic. "The first GWT testbed where every knob is real" is a defensible claim; "conscious" is not.

**E. The paper's limits are KAI's opportunities.** J-lens reads single-token concepts only → KAI's cells are full sentences. J-space captures ≤10% of activation variance → KAI's labeled layer *is* the causal layer (§4 caveats aside). The lens can't see early layers → KAI's one blind spot has a one-line fix. None of this makes KAI *smarter* than a frontier transformer — it isn't — but on the axis this paper says will matter, *auditability of thought*, the amateur architecture is ahead of the professional ones.

---

## 6. If only one thing gets done

Wire the GlobalWorkspace broadcast into retrieval scoring and run it headless (§5B-1/2). Everything else in this document is observation; that change is the difference between KAI *having* a workspace and KAI *thinking with* one — between the flight simulator and the plane.

---

## 7. Status update — §6 is DONE (v9.10.556)

Implemented, compiled clean, zero test regressions (all pre-existing failures verified against HEAD in a separate worktree):

1. **Mediation is live.** `Engine::workspace_mediate_and_capture` ([engine.rs](src/core/engine.rs)) — the broadcast re-ranks both `query` and `query_multi_hop` (up to +15% resonance boost, same magnitude class as the 600-cell re-rank), the winning memory posts back into the workspace, and dream insights now compete for broadcast. Swap the broadcast → retrieval changes. **KAI passes the spider→ant bar.**
2. **The workspace runs headless.** `oracle_workspace()` in [oracle_server.rs](src/bridge/oracle_server.rs) — process-owned GlobalWorkspace, ticked every 5s heartbeat (decay + election), fed by attention/retrieval/interoception, mediating the production reply path (`generate_oracle_kai_reply` now widens to 30, re-ranks by broadcast, keeps 12).
3. **The J-Space readout exists.** `GET /api/mind/silent-thoughts` — live workspace (entries by salience, broadcast, coherence) + a 24-deep ring of recent retrievals with the exact candidates that fired, Hebbian-wired, and were never said.
4. **The comments stopped lying.** All four 60/40 claims in [universe.rs](src/core/universe.rs) now state the real 30% cosine / 70% keyword blend.

Flag: `KAI_GWS_LIVE` (default **on**; `=0` restores pre-mediation behavior — silent-thought logging stays either way). Requires engine rebuild + restart to take effect.
