Exact addressed memory
Status: PARKED. Every trained form of this idea that was tested missed its bar or broke a project rule. The plain exact store itself worked whenever its address was right. The form that matters most, where the address is the model's read, was never built. See what would reopen it.
Labels used below: proof means derived from definitions or code, measurement means a recorded run, hypothesis means an untested idea. See docs/formal_vocabulary.md.
In plain words
Write each fact once, under an exact address, and read it back exactly. Do not smear it across weights, and do not hunt for it by fuzzy similarity. The address is built from prime numbers: every word has its own prime, so the same words always name the same slot. A new value replaces the old one, but the old one stays recoverable. A fact that was never written can answer "I do not know". In the one probe that checked, the store was never the cause of a failure: among 1,905 held-out misses, none was an eviction or a wrong stored value. What failed was the model's learned step of forming the address from a question.
What it replaces in a transformer
The key-value memory. A transformer keeps a key and a value for every earlier word and finds the right one by comparing the question against all the keys. Here the question is turned into an address instead, and the address is looked up directly. No comparison against every key is needed.
Left, how a fact is written, corrected and read, with the two honest failure answers. Right, why the tested models failed: the store was fine, the address was not formed.
How it works
Three built forms share one idea. In each, the address is exact.
1. Exact log and prime sieve (measurement on fixtures; the gcd arithmetic itself is proof). Every user turn is logged as word atoms. Each word has a prime from a registry table. A clause's address is the product \(A_c=\prod_{p\in S_c}p\) over its set \(S_c\) of distinct content primes, plus its ordered pairs of neighbours (n-lets). A query \(q\) is built the same way. A clause is admitted when
\[\gcd(q, A_c) > 1,\]
that is, when they share at least one prime. The greatest common divisor is computed as a sorted merge of the two factor lists, so no division is needed. Ranking is a separate step: most shared primes first, then latest occurrence, then ordered-pair match. A record counts as evicted only when its ring slot was actually overwritten.
2. The exact relation store (AERM, "G v1"). Learned heads tag each token as entity, relation, value or other. An integer store maps (entity, relation) to a value. It also keeps the previous distinct value and a version counter. A read answers one of four ways for the current and the previous version: None, Hit, Absent or Evicted. A prime-route variant keys by the semiprime \(k=p_a p_b\) of two atoms. By unique factorization (proof), \(k\) names the unordered pair exactly. The value is routed through the expert so that direction survives.
3. Product-key memory. The query splits into two halves. Each half is scored against \(S\) sub-keys and the top \(k\) on each side are kept. That gives \(k^2\) candidate slots, scored by the sum \(s_1(i)+s_2(j)\). The best \(k\) slots are read from an \(S\times S\) table. With \(S=256\) the table has 65,536 rows and a token reads 32 of them. The sub-keys are learned, or fixed to the 120 unit icosians or the 240 E8 roots. The built form mixes the rows with softmax weights.
Rule check.
| Rule | Verdict for the exact log, sieve and store | Verdict for the tested trained forms |
|---|---|---|
| No softmax anywhere (D23) | Clean | Broken. The product-key form mixes rows with softmax, and the tag and trigger heads trained with cross-entropy |
| No matrix multiplication (D30) | Clean | Not clean. They sit inside a dense float stack |
| Integer-only serving (D11) | Fits by design, but nothing is built. The integer serving crate has no gcd, and it refuses product-key memory | No served form |
| Discrete path (D32) and offline float (D37) | The integer store matches the discrete shape. No memory store exists in the discrete crate yet | A learned tagger would be float with an integer export and a reported gap. No hold is released |
D23 bans softmax. D11 fixes the served form as integer and table lookups. D37 allows float in offline training only. D30 (no matrix multiplication) is in the same file.
What has been tried
Verdicts are this page's labels. "Authored panel" means a small test set written by the project, not natural language.
| Date | What was run | Result | Verdict | Record |
|---|---|---|---|---|
| 26 Aug | Prime-route mechanics with no model: prime routes, ordered n-lets, gcd overlap, 7-row query closure | Mechanics pass. The product probe was not run, because no compiler from prompt tokens to addresses existed. 32 of 32 canary matches | inconclusive | record |
| Sep (undated) | Learned selector over exact versioned records (initial, previous, current), authored panels | 976 of 976 construction and fresh targets on the reassertion repair. Owner revision 60 of 60, against 24 of 60 for its parent. Authored-panel scope only | positive | record |
| Sep (undated) | Learned read of the previous version, fresh text gate. Also a 64-update addressed-attention pilot (13 Sep) | Selected exact old records but 44 of 64 complete, so not promoted. The pilot gave no useful generated answers | negative | record |
| 24 Sep | Synthetic key-value overwrite recall (KVAR): overwrite store with hard-select readout | Held-out accuracy 0.8235 and 0.7157 on two seeds. Recurrence-only 0.0098, gate-only 0.0196. A hand-written overwrite table scores 1.0000 | positive | record |
| 24 Sep | Exact previous-and-current token-pair cache on 24 project documents | Lowers a count reference by 0.2376 bits per target (95% interval −0.2928 to −0.1907) over 87,564 positions. Not general prose | positive | record |
| 28 Sep | AERM probe: 1.41M-parameter model, exact integer store, learned read trigger, 3 seeds, new templates and names | The store scored 1.000 in distribution, but the frozen margin gate failed even there (0.146, 0.122 and 0.102 against 0.30, because the control reached 0.85 to 0.90). On new phrasing "Updated" accuracy was 0.000, 0.000 and 0.015 against a control at 0.39 to 0.47. The trigger fired on 0 of 826 gold reads in seeds 1 and 2 (158 of 826 in seed 3) | negative | record |
| 28 Sep | G v1: always read the current and previous register | Frozen gate failed in all three seeds: 0.1575, 0.0733 and 0.0293 against a 0.90 bar. Text loss and parameter parity passed | negative | record |
| 29 Sep | Failure attribution on the G v1 misses, no training | Of 1,905 failures, 1,480 (77.7%) were the query entity tagged wrongly, 242 (12.7%) the write key, 142 (7.5%) the query relation. Eviction: 0. Wrong stored value: 0 | positive | record |
| 29 Sep | Mask the tag and trigger losses on text (arms A, B, C) | Arm A lifted held-out binding to 0.967 (264 of 273) but text loss rose 0.1188 against a 0.05 limit. Arm C reached 0.553 | inconclusive / negative | A, B, C |
| 1 Oct | Exact log and sieve feeding an emitter, key-value recall at distances 16, 64, 200 | 106 of 109. With recall switched off 16 of 109. One seed, one development draw. The recall dispatch was chosen by the instrument category and earlier assistant replies were supplied as references, so this is not a closed-loop conversation result. Same-relation-in-new-words: sieve alone answered 1 of 52 | positive / inconclusive | record |
| 10 Oct | Product-key memory (64 sub-keys, top 16) at layer 4 of the 29M chat model, 2 seeds | 19 of 40 on both seeds against a 27 of 40 bar. No-memory anchor 20 of 40 | negative | record |
| 10 Oct | Saved model on fresh unexposed role and value combinations | 437 of 512 on development, 0 of 128 on fresh. Recorded as panel fitting | negative | record |
| 11 Oct | Product-key memory replacing the layer-8 feed-forward block, 3 seeds. Fat and lean codebook | Fat: wrong-value failures 47 to 34 of 120, memory flat at 57 of 120, 20 times slower per step, and 1.65 times slower generation in a separate float GPU test (record). Lean: bits per byte worse by 0.0949 and 0.1066 against 0.02 allowed | inconclusive / negative | fat, lean |
| 11 Oct | Serve product-key memory on the integer path | The integer path refuses it, so speed is unmeasured where it matters. The earlier "12 times" fused-kernel claim was a fat-versus-lean codebook difference and is withdrawn (withdrawal) | blocked | record |
Reading these honestly. The pattern is consistent. Where the address was given or written by a fixed rule, the store worked: the 1.000 in distribution, the zero eviction failures, and the 106 of 109 recall. Where a learned head had to form the address from new phrasing, it failed, and the failures sit in the tagging, not the storage. The product-key runs tested something else: they replaced a feed-forward block with a table, not the read. The project's own correction note says so, so they do not test "address instead of search" at all. The recorded failures belong to configurations (a 1.4M-parameter probe with a learned trigger; 2,000-step fine-tunes of one 29M model on a 40-row panel with softmax weights). They do not close the mechanism (D22).
A caution on weight. Retrieval caused only 2.2 percent of the failing rows in the era-22 chat panel (issue #1708), so it is open whether memory is the binding constraint on the first milestone at all (hypothesis).
What has never been tested
- The address as the model's actual read, with the store and read trained in from the start (the order D22 section 5(c) asks for; full text). Every "addressed read" run replaced a feed-forward block instead.
- A true gcd sieve on the integer path. As of 1 October only a pairwise membership scan had been built.
- Same relation in different words, using a learned channel that feeds the exact channel, at the 0.9 relation-accuracy gate.
- Ordered n-let keys for atoms that are not role-disjoint.
- Eviction proofs driving "I do not know" at long context in a trained model.
- Parameters actually touched per token, for any exact memory on the served path.
- E8 or icosian codebooks as the write address of facts, with prime semiprimes as the exact check.
What would reopen it
- Build the address as the read. Add memory fields to the dialogue settings and train the store and read in from the start, with 2 to 3 seeds and a frozen panel of at least 80 rows. The brief's bar is at least 8 more rows of 40 than the 19 of 40 seen, with bits per byte within 0.01.
- Run the serving-time oracle first. Supply the true slot address and measure the gain before any training.
- Re-register lawfully. Use an offline float sheet (D37) or a discrete sheet (D32) with a softmax-free value mix (a rank table or a hard select), a separately scanned module, an integer export and a reported export gap. This needs a fresh
TEST FITNESS: FITreview and an owner release. - Build an integer read kernel: gcd or sorted-merge admission plus a table value read, in the integer serving crate.
- Report address formation apart from read accuracy, since 77.7 percent of the held-out failures were query-entity tagging.
Also known as
Exact addressed memory; prime-keyed exact log and gcd sieve (log-sieve retrieval); semiprime expert or prime-route store; AERM exact relation store ("D2", "G v1"); product-key memory (learned or E8/H4 sub-keys); exact-pair cache; KVAR overwrite memory; "address instead of search".
Code
stack_aerm.rs: the exact relation store simulator and the G v1 always-on read.stack_prime_route.rs: the prime-route and semiprime store, withReadPolicy::{Tagged,Sieve}.stack_store.rs: the token-level bridge to the exact versioned store (version order, predecessor chain, conflict marking, capacity eviction).stack_memory.rs: sparse product-key memory with H4 or E8 codebooks.cache_memory.rs: the exact-pair cache over a frozen model.whole_path_learning.rs: the whole-path source (CPU fixtures only).durable_memory.rsandhistorical_read.rs: scoped durable memory and the learned previous-record selection.bin/kvar-recall.rsandbin/realtext-sparse-recall.rs: the two recall harnesses.- Evidence, newest context first:
attention-state-2026-10-18, log-sieve design,kimi-direction-2026-10-12.
Related mechanisms
pointer-key: copies the value token the address names. The pointer found the source but not the slot. read-binding: teaches an attention read which stated value belongs to the question, the learned alternative to an exact address. object-store: exact byte storage of source material beneath the model, with no addressing of facts. e8-orbit-memory: the E8-addressed product-key variant, replacing a feed-forward block. relation-read: reads retained structure, where exact edges would come from this store. admission: the measured ceiling on what any read can reach. prime-zeta-codebook: supplies the prime registry the sieve depends on. route-read and flock-read: similarity-free alternatives that read by address or by a small kept set.