One fact per file, and nothing else.
Every node is a markdown file: a description that works as a hook, a body, a date. Colour says the type — a project, a rule learned, a reference, or who you are. Size says the weight in words.
The 38 notes on screen are the Mirabeau Conseil demonstration corpus, a fictional firm: a two-partner organisational consultancy in French-speaking Switzerland, with its clients, its engagements, its methods, its tools and its traps. Fourteen families, 5,253 words — the size of a company's memory after a few months.
Knowledge is only useful once connected.
A [[link]] inside a note creates a synapse. “Closing an engagement properly” pulls on the one-page debrief, on “how we write”, on the GDPR/nFADP rule and on referrals: four edges from a single note, and the rest unfolds from there.
70 links in the corpus, 60 strokes on screen: a note and its engagement citing each other make one synapse, not two. The pulses travelling the edges are recall at work — semantic search starts from one note and spreads to its neighbours.
On every turn, before the agent answers.
The question goes into the memory, and the notes that answer it land in the agent's context — without the agent having to think of searching. Here, “how do we wrap up a mission?” brings up 4 notes, ranked by a score that blends meaning and words.
This is the demo's real search, taken on 05.10.2026. The question is in English; the notes it brings up are written in French: recall is cross-lingual.
A note gets renamed. The link never hears about it.
The debrief template used to be called modele-restitution-2025. It was renamed in September, once there stopped being one per year. The note methode-restitution-en-une-page still cites the old name: the link points at a target that no longer exists, raises no error, and simply makes the session slightly more stupid.
Found, not staged. This broken link really is in the corpus: the review is what flagged it, and it costs six points of score. Open the public endpoint — it is there.
Every hour, the memory reads itself back.
Each check matches a failure already lived through on a real corpus. Two fire here: the broken link, and 3 notes outside the graph. Flagged notes stay lit, the others go dark.
broken_linksA [[link]] with no note on the other endwarnorphansOutside the graph: findable by search onlyinfono_descriptionNo hook — the note will never surfacecritsecretsA string that looks like a key (never displayed)critdead_pathsA quoted path that no longer exists in the repoinfostale_openWork in progress, untouched for over 60 dayswarnnear_duplicatesTwo notes at cosine ≥ 0.86 — merge theminfo
Seven of the twenty-five checks. The others watch the chain itself — MCP server unreachable, embedding model down, index out of sync or lagging.
One number, and what holds it back.
1 broken link · 3 orphans
Score = 100 minus the sum of severity weights, damped by the logarithm of the number of occurrences. It does not reward volume: it penalises entropy. The corpus went from 14 to 38 notes without losing a point — then lost six on one broken link.
Read on 05.10.2026 at 10:13 UTC from demo.corthexis.com/api/review, a public endpoint.
Corpus: 38 notes · 5,253 words · 14 families · 70 links · 1 broken.