The line that matters:
learn and decision log record what happened. rule add changes what happens next. If you want future sessions to actually follow something, it is a rule; if you are writing down what you found out, it is a note or a decision.
Recording a decision
--rationale is required, not optional, and that is the whole point of using decision log rather than learn. A decision without its reasoning can only be obeyed or ignored later. With the reasoning attached it can be revisited, which is what you actually want six months on when the constraint that produced it has changed.
The gotcha. The decision gets a stable slug of the form {domain}.{decision}. Note it, or find it later with decision search, because that slug is how you edit it.
Next rung. --recall adds extra text to help the decision surface later. Use it for the words you will actually search with, which are rarely the words in the decision itself.
Fixing a decision you got wrong
decision update edits in place, addressed by the slug or by the exact decision text. The node keeps its address and every edge pointing at it survives.
The gotcha. Prefer this over base decision delete. Delete is keyword-matched with no preview, and it removes the decision’s history rather than correcting it. Search first, update second.
base decision show basemode.docs-deploy-on-a-push-to-main prints one decision with every field, --json for a script.
Decisions that apply everywhere
A decision filed under an always-on domain, such asGLOBAL, used to arrive on every prompt, whatever the prompt was about. Since 0.16.0 it arrives only on a prompt that contains one of its keywords, once per session, and one with no keywords is listed at session start only.
--keywords replaces the list, and --keywords "" clears it. Pick the words you would actually type when the decision matters.
Recording anything else
--type takes insight, correction, decision, commitment or shift, and defaults to insight. --project and --entity add extra edges.
Why it works. A note is a graph node with edges to its domain and to anything else you attach it to, so it can be reached from more than one direction later. That is the difference between this and a text file.
The gotcha. --domain is required unless you are using --mention. It is the anchor that keeps notes findable rather than accumulating unattached.
Corrections come first. Session start shows your active notes in a memory block, corrections first, then the rest, newest first, whole notes only, up to [budget] memory_chars (4,000 characters). A correction that names exactly one record gets linked to it by the 0.16.0 update or base doctor --fix --yes; one that names nothing stays a correction. To have base notice corrections as you make them, see Corrections and tuning.
Editing and removing notes
--list gives you the slugs. Both --update and --remove take one.
Recording that something came up again
base graph purge --stale. That measures lastRead, and mentions write a different timestamp. Verified from source at 0ace1ba, the commit the shipped 0.15.2 binary was built from.
Getting it back
base recallsearches notes, literally and quickly. Use it when you roughly know what you are looking for and want the raw hits.base decision searchis the same idea, scoped to decisions and their reasoning.base graph queryretrieves a subgraph and synthesizes an answer across it. Use it for open questions where the answer is assembled from several facts rather than found in one.
base recall writes, despite being a search. It stamps lastRead on every note it returns, and that is the timestamp base graph purge --stale measures. Recalling a note therefore protects it from the next purge.Injection during a turn deliberately does not do this, so the hot path never pays for a graph write. Only the explicit command stamps.People and organizations
--domain is required, deliberately, so an entity always has something to be relevant to. An entity with no anchor would never surface.
Goals and reminders
--in, --at or --due.
A due reminder surfaces under DUE NOW at every session start, numbered, most overdue first, and DUE NOW always sits on the first screen. Since 0.16.0 you can act on one without deleting it:
snooze moves its due time forward from now (30s, 3m, 2h, 1d). archive stops it surfacing and keeps it; unarchive brings it back. Each takes a slug or the number on its DUE NOW line. base reminder add with the name of an archived reminder brings that one back.
An overdue reminder warns before it archives itself. From 8 days overdue, its DUE NOW line says when it will archive and how to snooze it. It archives itself only when it is 10 or more days overdue and that warning was first shown at least 2 days earlier, and the next session start says so once with the unarchive command. It is kept, never deleted.
The gotcha. base reminder remove is still a hard delete with no preview. Archive is almost always what you want.
Flat-file memories
base memory list shows the loose-file memories on this machine with their paths. base memory purge removes the ones whose content the graph already holds.
The gotcha. There is no preview on purge. Run list first and read it, because that is the only look you get.
Next
Rules and domains
Writing something that fires on its own, rather than something you look up.
Graph and memory reference
Every flag on every command here.