Everyone promises the AI will remember. Here is the arithmetic that decides what it reads first.
This page has no label to sell. It has the cell of the graph, the arithmetic that orders attention — which you can check on paper — the loop that corrects its own mistake, and the three hardest criticisms the category took in 2026, answered with mechanism instead of adjectives.
The cell of the graph: one node and one edge
Knowledge here is not a document. It is a set of typed assertions, each with an identifier whose prefix already says what kind of thing it is — because a hunch and a measurement must not look like the same sentence.
A whole example, from a fictional company — Café Aroma — that decided discounts are capped at 10%:
nodes: - id: D_desconto_max_10 node_type: decision impact: 5 # the price of being wrong here: high confidence: 0.9 status: confirmed label: "Discount cap: 10%, no exceptions" verified_at: 2026-08-25 verified_against: "current sales playbook" - id: E_black_friday_2024 node_type: evidence impact: 4 confidence: 1.0 status: confirmed label: "BF 2024: 30% off -> churn 3x within 6 months" edges: - from: E_black_friday_2024 to: D_desconto_max_10 edge_type: SUPPORTS # the decision is not floating: it has ground
The four numbers every node carries
| Field | Range | What it actually means |
|---|---|---|
| impact | 1 to 5 | The price of the error, not the importance. The question is not "is this relevant?", it is "how much does it cost if this is wrong?". A pricing decision and a formatting preference can be equally relevant and never cost the same. |
| confidence | 0 to 1 | How well the assertion holds up. Not enthusiasm: 0.6 is something you would defend in a meeting and would not bet the company on. |
| status | enum | What the graph already knows about that node — and each value becomes a multiplier in the next section's arithmetic: open ×1 · confirmed ×1 · drifted ×1.3 · unverifiable ×1 · refuted ×0 · superseded ×0.2 · done ×0.1. |
| verified_at | date | An expiry stamp. It says when someone measured this against the real world — and, in the neighbouring field, against what. A node with no stamp is flagged ⚠ STALE by the instrument itself. That is not a failure; it is the map admitting that point may have aged without telling anyone. |
Note the ×0 on refuted. A truth that falls is not deleted: it changes
status, gains a REFUTES edge from whatever knocked it down, and is worth zero in the
attention arithmetic. It disappears from the top of the queue, not from history.
Whoever arrives later reads what was believed before and why it changed — which is exactly what a
git merge on a prose document destroys without leaving a trace.
The radar on paper
A graph with hundreds of assertions makes "read everything" an empty instruction. So every node gets a number — its attention — and that number is computed, not opined:
That is all of it. Four fields that were already in the file, three multiplications and one addition. The (1 + connections) term is centrality: the more things touch a node, the more expensive it is to be wrong there — an isolated decision is wrong on its own, a decision holding up four others is wrong in five places.
Move the controls. The example is preloaded with the 10% cap from the previous section — impact 5, confidence 0.9, confirmed, four edges touching it:
Deterministic, no AI, redoable on paper.
Drag the status to refuted and watch attention fall to zero with nothing else changing: that is the map saying "this is still on record, and it is no longer where you look". Drag it to drifted and it climbs above confirmed — a node that just proved the world moved is more urgent than one that is merely up to date, because somebody has to reconcile.
None of this arithmetic goes through a model. It is a script — same input, same output, zero cost, auditable line by line. You just ran the same calculation that orders the real work queue, in your browser, with no network.
What the arithmetic does not do
It measures where to look, never what is true. High attention does not mean "this is correct": it means "if this is wrong, it hurts". And the arithmetic is only as good as the numbers somebody typed — an inflated impact promotes a node that did not deserve it. The instrument orders the queue; it does not audit its contents. We publish this alongside the formula on purpose: an instrument that does not declare its own limit is worse than no instrument.
The loop: read → verify → act → write
The graph is not a dead file someone consults. It is the first and the last act of every piece of work: you read before deciding, you measure against the world before believing, you act, and what was learned goes back stamped. The best way to show that is a case where the victim of the mistake was this very site.
For roughly a month, the home page here lied — it advertised an inventory of 98 commands when the real number was already 102. Nobody had written anything wrong.
-
read
The graph already had a node about it, from July: "the site is out of date", with the cause pinned on lagging authorship — somebody needed to rewrite the page. The node was there, plausible, and would have been enough to generate the wrong task.
-
verify
Instead of believing the node, we measured. We fetched the live page and compared it with the source in the repository. The source was right: a commit from 30 July had updated the inventory and the page in the same commit, and the old string no longer existed in the file at all. The node was right about the symptom and wrong about the cause. What was broken was not the writing — it was publishing, which existed only as prose: a procedure someone was supposed to remember to run.
-
act
The obvious fix — rewrite the page — would have fixed nothing. And republishing by hand is the same failure waiting for next month. So what shipped was not a republish: it was the publishing mechanism, with a closed list of what may go live, a hash check that compares source against the live site and fails on divergence, and a self-test that freezes the attacks found across two rounds of adversarial review — including the worst of them: an empty source that wiped the entire site while returning a green verdict.
-
write
The old node was neither corrected nor deleted: it was marked superseded, with the date it was measured and against what. A new node, linked to it, records the mechanism that was born and what it now serves. If the drift ever returns, whoever arrives finds the whole story — the symptom, the wrong cause, the right cause, and the guard that stayed.
The lesson, and the reason the loop has four verbs rather than three: verification was against the live thing, not against the repository. A clean history would have confirmed the wrong version of the facts with all the authority of a passing test.
The stack: who acts, what it knows how to do, in what order
Three pieces, and the distinction between them is what keeps the whole thing from collapsing into one giant prompt:
Agent who acts
A role with a declared boundary: which tools it may use, what context it carries, and what is not its call to make. A specialist with scope, not a generic assistant — and the boundary exists so that its answer can be checked by whoever called it.
Skill what it knows how to do
A named, versioned procedure that any agent loads when the subject comes up. Knowledge as executable instruction, in the repository, reviewable in a diff — not a pasted prompt that lives only in the head of whoever wrote it.
Workflow in what order
The sequence of phases, resumable: each phase has an input, an output, and durable state on disk. The session dies, the work does not. It is what lets a long investigation outlive the context window — and lets somebody else continue where it stopped.
Economy of Motors: use the cheapest motor that can do the job
None of that decides on its own what to execute with. That choice is explicit, and there are three motors:
- Transformer (the large model) — judgement, synthesis, trade-offs, prose, orchestration. Expensive, slow and non-deterministic. Use it when the task requires understanding intent.
- SLM as a tool — a small, specialised model behind an interface, for a narrow repetitive task (extract, classify, redact sensitive data locally). It never orchestrates: it is a tool, not an agent.
- Shell — the deterministic one — plain scripts for everything the model gets wrong: counting, diffing, detecting drift, applying a fixed format. Same input, same output, zero cost, auditable.
The rule is one line: the cheapest motor that can do the job. And the most common mistake is not reaching for too small a model — it is using the model to count. The radar in the previous section is shell for exactly that reason: if the attention queue depended on inference, it would change its mind between two identical runs, and an instrument that does that is not an instrument.
2026's three criticisms, answered with mechanism
Knowledge graphs wired to agents took three serious objections this year. They are criticisms of the category — not of any named product — and all three are right about a real failure mode. They deserve an answer in terms of what the machine does, not in adjectives.
Criticism 1 · cost "The agent should not be walking the graph by inference. Double inference doubles the cost: you pay the model to find out where to look, then pay again to think about what it found."
It is right, and that is precisely why the model does not walk the graph here. Attention is computed before any LLM call, by deterministic arithmetic: impact × confidence × status factor × (1 + connections) — the same calculation you just ran above, in your browser, with no network and no tokens. What reaches the model is already an ordered queue; it reads the top, not the whole map.
The double inference the criticism describes happens when the graph is treated as an index the model has to interpret in order to know where to look. Here the graph is the input to a function, and the function decides. The model comes in afterwards, for the part where it is irreplaceable: judging the content. And because the arithmetic is the same every time, it is reproducible — two identical runs return the same queue, which no inference-based traversal guarantees.
Criticism 2 · epistemics "Inference written back into the graph becomes fact. With no epistemic layer, yesterday's guess is read tomorrow as a measurement, and the system starts citing itself as a source."
This is the most serious of the three, because it describes exactly how a graph turns into a laundering machine for guesses: the model infers, the inference is written, and on the next read it is indistinguishable from something somebody measured. The answer here is that the epistemic layer is not optional — it is the schema. Every node is typed (decision, evidence, claim, question, artifact), carries a confidence from 0 to 1, a declared status, and states what it was verified against and when. A claim at confidence 0.6 with no verification stamp does not look like a measured piece of evidence — not in the file, and not in the radar queue, which treats it as something else.
And when two truths collide, they do not overwrite each other. The new one enters
linked to the old by REFUTES or SUPERSEDES, and the old one stays: it
changes status and is demoted in the arithmetic — refuted is worth zero, superseded is worth a fifth.
The knocked-down node remains on the map, with the edge that knocked it down pointing at it. That is
the difference between a system that rewrites the past and one that reconciles.
Correcting does not erase; it supersedes.
Criticism 3 · security "Graph poisoning. If memory steers the agent, planting a false node is cheaper than writing an exploit — and far harder to notice."
Also right, and it is the one that grows in importance as graphs become infrastructure: whoever writes to the graph steers the agent. Two things hold this down here, and neither of them is trust.
The first is the order of the verbs: nothing enters without
read → verify. Writing is the last act, and the node carries the field declaring
what it was measured against and on what date. A node missing that field is flagged by the instrument
itself, automatically — it does not depend on an attentive reviewer that day. The second is that
writing is not a runtime side effect: it is a commit. It goes through
a diff, a review and a history, and it shows up in the same place where people already look at code.
A node that appeared without anyone having measured anything appears as a new line in a review. The
graph has provenance, not faith.
What that does not solve, stated plainly: coverage is not truth. The check requires provenance to exist, not to be good — a shallow, generic node passes. Being in the graph means somebody modelled it, not that somebody checked it. As long as whatever feeds the map is a process with adversarial review, that flank stays closed; the day it becomes a rushed routine, the check goes green over a hollow map — and then it lies with the authority of a passing test.
Try it in your own domain (15 minutes)
None of this requires installing the framework, creating an account, or handing over any data. The method travels as schema + method. Take one decision you made this week — one still warm enough that you remember the argument — and write down four things:
- What I decided. One sentence, in the indicative. That becomes a
D_node. Give it an impact from 1 to 5 by answering "how much does it cost if this is wrong?". - What holds it up. The facts you used — a number, an incident, a test, a customer
conversation. Each becomes an
E_node linked to the decision bySUPPORTS. - What I refuted. The alternative that looked reasonable and was discarded. It is
the most valuable of the four and the one every document loses: it becomes a
C_node withstatus: refutedand aREFUTESedge coming from the evidence that knocked it down. Three months from now, when somebody proposes exactly that again, the answer is already written. - What is still open. The doubt you did not resolve and decided anyway. It becomes a
Q_node. That is not a weakness of the map — it is the most honest part of it. A map of certainties only is a map that forgot to mark where it ends.
Run the attention arithmetic on each node, by hand or with the widget above, and sort. Whatever lands on top is where your team's next hour should go. If the result surprises you, the exercise already paid for itself: that surprise is the gap between the queue you think you have and the one your own numbers describe.
Public, no signup — the minimal schema and the radar, to run in your own domain today.
If you run it, show it. Post your file (anonymised) or tell us what the radar caught that the prose was hiding. It is the kind of thing we want to see work outside our own house — and a counterexample is more useful here than a compliment.