Ram Farm pre-release

Agent memory that reconciles contradictions. An in-process library: npm i ramfarm, one SQLite file, no daemon.

D1 — dogfood, day 14 of 14

Gate falls due 2026-09-09 — 0 days out. On that date the stop condition is evaluated: if the judge is no better than mem0ai/oss, adopt theirs and close the repo. Printed here rather than kept in a tracker, because a deadline nobody sees is a deadline that arrives.

Run the MCP server as the fleet's memory layer for two weeks. If it does not survive our own use, there is nothing to launch. The same test governs whether GhostWare should adopt it internally.

Memories
1076
Live
1055
Retired
21
Subjects
20
Days written
34/58
WatchNowWhy it matters
W1 extraction over-firing19.93/day, 515 with no scopeevery write costs an LLM call, and a scopeless fact fires everywhere
W2 judge over-firing CONTRADICTS1.9% of writes superseded something (20)the largest adoption risk: a wrong verdict silently retires a true memory
W3 novelty-gate misses12 live pairs at cosine ≥ 0.9the fast floor skips the judge, so a real contradiction can slip through
W2b judge verdict mix3862 pairs judged — 12 CONTRADICTS, 10 DUPLICATE, 34 REFINES, 3806 UNRELATED; 0 never asked (past maxNeighbours), 2190 never asked (same utterance)the judge is firing CONTRADICTS; spot-check that each retirement was correct

Snapshot taken 2026-10-22T12:30:12.704Z, received 2026-10-22T12:30:16.019Z. Counts only — no memory text, no subject names, and no scopes are sent to this page.

How it gets measured

All three are SQL over the farm DB, not judgement, so they live in scripts/d1-watch.mjs — read-only, no LLM — and it pushes a snapshot here. That is the A1 shape from GhostWare's supervision-mechanisms comparison: read-and-report, where a dead reporter produces silence rather than damage. Which is why the staleness of the snapshot is printed above rather than hidden.

Then, and only then