Documentation
¶
Overview ¶
nova-memory makes membership in a markdown corpus a LOOKUP, never a scan.
WHAT IT IS FOR. A mind that keeps its memory as markdown answers "do I already know this?" by re-reading everything it is, and that cost grows with every day lived: consolidating n new learnings against m existing ones is O(n*m), and m only ever gets bigger. This tool rebuilds an in-memory index from the corpus on every run and answers membership questions with top-k receipted candidates, so the mind's judgment budget per new learning is k — a constant — however large the corpus grows.
WHAT IT REFUSES TO BE. Not a write path (it never touches the corpus), not a judge (the author decides after the receipts), not the boot (query for WORK, traverse for SELF — a relevance-ranked lens must not replace the linear read that meets what you did not ask for), and not authoritative (the tree is the store; the index stops existing when the process exits).
Every path, every scope, and every budget comes from a flag. There are no defaults, no config file, and no environment variable: a missing flag is a refusal, never a guess. Exit 0 ran and passed, 1 ran and failed, 2 could not run.
nova-memory version: which build is running.
A refusal, a green or a line somebody pastes into a note is evidence about a BUILD, and until this verb existed this binary could not say which one it was: `nova-memory version` was exit 2, unknown subcommand. So "we are all running the same nova-memory" was a belief rather than a reading, and the release could not assert over the set what no member of the set would answer.
The version is NOT a constant maintained by hand -- a hand-maintained constant is wrong exactly at the commit after the release, where it still names the release. It is read from the build itself by pkg/buildinfo, which holds the resolution order and the shape of the line for every binary here, so that eleven tools answer this question in one spelling rather than eleven.