Mnestoma is the local store for mnests: links between executors that together form an operational graph. Its code can save, traverse, decay, and inspect these links. The runtime does not yet record them automatically at the end of every turn, so Mnestoma must not be mistaken for an already learned personal memory.
Mnestoma opens a SQLite database with WAL writes and integrity
constraints between tables. Its API can record links, change their state,
traverse them, find recurring proto-mnests, and read statistics and events.
The same file also contains a separate canonical_query_log table,
with a best-effort recording hook from the turn runtime. Current plan reuse does
not depend on that table, and the runtime does not call
record_passing() to build edges. The two structures must not be
confused.
In the logical model, each node identifies an executor name and version; each
mnest is a directed, weighted link between two nodes. A proto link
instead ends at the name of a desired executor that has no concrete version yet.
walk(start, max_depth) traverses the graph from an executor, excludes
protos by default, and orders paths from highest to lowest average weight.
Synt's composer can use this structure to find a chain of existing executors. It does not generate L0 or L1, alter the ordinary planner ranking, or replace the signed catalog.
| It is not | Reason |
|---|---|
| Complete turn history | Turns have separate logs; an event may store only their identifier. |
| A user profile | The schema describes executors, edges, and technical telemetry, not preferences or personal facts. |
| A plan cache | L0 and L1 use their own stores, keys, and validity rules. |
| Proof of effects | An edge exists because a caller wrote it. |
| An automatic synthesis system | Protos are signals; Synt, tests, and the promoter have separate responsibilities. |
| Object | Content |
|---|---|
executors | Name, version, state, load time, and manifest hash. The current API does not populate it automatically. |
mnests | Edges, weights, uses, timestamps, states, tags, and desired signature. |
events | Reinforcements, decays, and state changes, with an optional turn_id. |
v_mnestoma | View of active and proto edges. |
canonical_query_log | Canonical query, tool, observed argument shape and values, counters, and outcome. It is telemetry separate from the graph. |
On open, idempotent migrations add events.turn_id and
canonical_query_log.args_observed to older databases.
The main public operations are:
record_passing(): create or reinforce a mnest or proto;transition_state() and
promote_proto_to_active(): change state with an event;top_k_outgoing(), top_k_incoming(),
walk(), and by_tag(): query the graph;recurring_protos(), decaying(), and
top_active(): select operational sets;events_for(), audit_recent(), and
stats(): support inspection and audit;record_canonical_query(): update separate normalized-query
telemetry.The scheduler installs the nightly_aging job at 03:30. It runs
executor aging and Mnestoma.apply_ager() in sequence. The latter:
active and proto edges with time;active edges to decaying;decaying archive candidates;If the job is called twice with the same reference time, the second call does
not apply more decay. A later call with a more recent time calculates the new
interval, updates ts_last, and records the corresponding events.
The ager does not automatically archive decaying edges: it returns
a proposed_archive count. The module has no routine that creates
monthly snapshots, compresses annual copies, or includes the database in a backup.
Those operations require an explicit external policy.
The only automatic graph deletion performed by the ager concerns proto-mnests
with weight below 0.05. Their associated events are also removed by
the foreign key's ON DELETE CASCADE.
Mnestoma is a Metnos technical name and remains unchanged in Italian
and English, as does mnest. The Python module, class, and SQLite
directory also use mnestoma. For compatibility, this page retains
its former /en/architecture/mnestome.html address, but the component
name is no longer translated in the text.
On first open, the database is created with an empty schema. No hidden edge
seed is installed, and the Mnest class does not admit a
seed state. Edges appear only through explicit API calls or data
already present in the configured database.
A best-effort hook may try to add a row to canonical_query_log
from a turn. No current subsystem relies on this table for plan reuse. In any
case, one of its rows does not represent the creation of a mnest, cluster, or
L0/L1 path.
python3 -m mnestoma provides commands for statistics, aging,
top incoming and outgoing links, proto-mnests, walks, summaries, and events.
The python3 -m observability render renderer can include counts,
active links, protos, and recent events in a static HTML page.
These tools read store contents; they do not establish that those contents are complete. An empty Mnestoma is a legitimate outcome of the current integration.
<workspace>/.mnestoma/mnest.sqlite: its scope is the configured
workspace, not a user derived from the turn.runtime/mnestoma.py, runtime/synt.py,
runtime/jobs/maintenance_tasks.py, and
runtime/observability.py.