Two memories that decay,
reinforce and get deleted

Append-only, per repo, measured. A 1,500-token brief rides every dispatch.

NewLesion harness →
Loom's canon surface: 20,746 nodes of this repository placed in a cortical mesh, memories lit blue

Still frame · 20,746 nodes, 40,033 synapses

  • BM25F
  • k1 8
  • RRF_K 60
  • half-life 21 d
  • brief 1,500
  • entries 167
  • p50 14.9 ms
  • assertions 417

Two memories, not one file. THE RECORD says what happened. THE CANON says what is true. Every mechanism inside them earns its own code.

FIG 0.2 Wireframe of a stack of thin plates

THE RECORD

Episodic. docket.jsonl, append-only, zero LLM calls, 19 event kinds already firing.

FIG 0.3 Wireframe cluster of hollow cubes linked by thin edges

THE CANON

Semantic. 167 typed, anchored, heat-ranked claims. 652 links, one pinned.

FIG 0.4 Wireframe of a fanned cascade of plates

THE BRIEF

Delivery. Five blocks under a hard cap, on the first user message of every dispatch.

Refuse the duplicate.
Keep the correction.

Trigram Dice at 0.82 calls two entries the same entry. A set of discriminating literals runs first, and says they are not.

1.0Write gate →

Everything cools
on a 21-day half-life.

Ebbinghaus decay with logarithmic reinforcement. A pin is an exemption from time, never a multiplier on it.

2.0Thermal model →
THE CANON's entry reader, full bleed: one claim's heat curve standing at 0.75 after a single recall

Four rankers deleted,
each with its table.

A dense leg inside a rank fusion is a query-independent prior, and it wins. BM25F is the one leg left standing.

3.0Retrieval →

1,500 tokens, and
an order to drop them.

Five ceilings that sum past the budget on purpose. The last guard re-reads the assembled text and drops whole blocks.

4.0Injection →
The BRIEF pane, full bleed: 258 of 300 tokens ready, 16 omitted — 14 ranked out beyond the 6-row cap, 2 cut for room

Two verdicts
nobody wanted.

A paired bootstrap over gold sets, a positive control allowed to fail, and a placebo that must read exactly zero.

5.0The bench →

Changelog

The 70-day expiry

Dormancy stopped being a membership test. 167/167 live, R@6 flat at 0.2744 out to +365 d.

A constant deleted

MIN_INJECT_STRENGTH refused 0 of 503 injected rows across 85 queries, so it went.

Detail budget 200 → 140

Rendered rows 2.38 → 3.04 and spend 240.1 → 261.8 of 300, for zero retrieval work.

Two public suites

LongMemEval-S R@10 97.80% and LoCoMo-10 95.96%, on the same retrieve().

View all →
“The canon does not merely fail to beat grep here. It loses, measurably, and the instrument can see it.”
label import−0.0250 [−0.0404, −0.0041]
“PIN_PREPEND reads HARMFUL / DELETE on every run. Kept anyway, with the reason written down.”
+ ablations+0.0583 [+0.0147, +0.1236]

This repo’s canon today: 168 rows, 294,373 bytes → 167 entries, 652 links, 1 pinned. The honest ledger →

Measured, not remembered.
Available today.

Loom.dmg · macOS 14+ · Apple silicon canon 294,373 bytes