Il mnestoma è l'archivio locale dei mnest: i collegamenti fra executor che, insieme, formano un grafo operativo. Il codice sa salvare, percorrere, indebolire nel tempo e ispezionare questi collegamenti. Il runtime, però, non li registra ancora automaticamente alla fine di ogni turno; il mnestoma non va quindi scambiato per una memoria personale già appresa.
Mnestoma apre un database SQLite con scrittura WAL e vincoli di
integrità fra le tabelle. La sua API permette di registrare collegamenti,
cambiarne lo stato, percorrerli, cercare i proto-mnest ricorrenti e leggere
statistiche ed eventi.
Nello stesso file esiste anche la tabella distinta
canonical_query_log, con un collegamento di registrazione
best effort dal runtime dei turni. Il riuso corrente dei piani non
dipende da quella tabella e il runtime non chiama record_passing()
per costruire gli archi. Le due strutture non vanno confuse.
Nel modello logico, ogni nodo identifica il nome e la versione di un executor;
ogni mnest è un collegamento diretto e pesato fra due nodi. Un collegamento
proto termina invece sul nome di un executor desiderato che non ha
ancora una versione concreta. walk(start, max_depth) percorre il
grafo a partire da un executor, esclude i proto per impostazione predefinita e
ordina i percorsi dal peso medio più alto al più basso.
Questa struttura può essere usata dal composer di Synt per trovare una catena di executor già esistenti. Non genera L0 o L1, non modifica il ranking ordinario del pianificatore e non sostituisce il catalogo firmato.
| Non è | Motivo |
|---|---|
| Storia completa dei turni | I turni hanno log separati; un evento può conservare soltanto il loro identificatore. |
| Profilo dell'utente | Lo schema descrive executor, archi e telemetria tecnica, non preferenze o fatti personali. |
| Cache dei piani | L0 e L1 usano archivi, chiavi e regole di validità propri. |
| Prova degli effetti | La presenza di un arco dipende dal chiamante che lo ha scritto. |
| Sistema automatico di sintesi | I proto sono segnali; Synt, test e promoter hanno responsabilità separate. |
| Oggetto | Contenuto |
|---|---|
executors | Nome, versione, stato, istante di caricamento e hash del manifest. L'API corrente non la popola automaticamente. |
mnests | Archi, pesi, usi, timestamp, stati, tag e firma desiderata. |
events | Rinforzi, decadimenti e cambi di stato, con turn_id facoltativo. |
v_mnestoma | Vista degli archi active e proto. |
canonical_query_log | Canonical query, tool, forma e valori osservati degli argomenti, contatori ed esito. È telemetria separata dal grafo. |
All'apertura, migrazioni idempotenti aggiungono
events.turn_id e canonical_query_log.args_observed ai
database precedenti.
Le principali operazioni pubbliche sono:
record_passing(): crea o rinforza un mnest o proto;transition_state() e
promote_proto_to_active(): cambiano stato con evento;top_k_outgoing(), top_k_incoming(),
walk() e by_tag(): interrogano il grafo;recurring_protos(), decaying() e
top_active(): selezionano insiemi operativi;events_for(), audit_recent() e
stats(): supportano ispezione e tracciabilità;record_canonical_query(): aggiorna la telemetria separata delle
query normalizzate.Lo scheduler installa il processo nightly_aging alle 03:30. Il processo
esegue in sequenza l'ager degli executor e Mnestoma.apply_ager().
Quest'ultimo:
active e proto in base al tempo;active sotto soglia a decaying;decaying candidati all'archiviazione;Se il processo viene richiamato due volte con lo stesso istante di riferimento,
la seconda chiamata non applica altro decadimento. Una chiamata successiva con
un orario più avanzato calcola invece il nuovo intervallo, aggiorna
ts_last e registra gli eventi corrispondenti.
L'ager non archivia automaticamente gli archi decaying: restituisce
un conteggio proposed_archive. Non esiste nel modulo una routine che
crei snapshot mensili, comprima copie annuali o includa il database in un backup.
Queste operazioni richiedono una politica esterna esplicita.
La sola cancellazione automatica del grafo eseguita dall'ager riguarda i
proto-mnest con peso inferiore a 0.05. Anche in questo caso gli eventi
associati vengono rimossi dalla foreign key con ON DELETE CASCADE.
Mnestoma è un nome tecnico di Metnos e resta invariato in italiano e
in inglese, come mnest. Anche il modulo Python, la classe e la directory
SQLite usano mnestoma. La pagina inglese conserva per compatibilità
il vecchio indirizzo /en/architecture/mnestome.html, ma nel testo il
nome del componente non viene tradotto.
Alla prima apertura il database viene creato con schema vuoto. Non viene
installato un seed nascosto di archi e non esiste uno stato seed
ammesso dalla classe Mnest. Gli archi compaiono soltanto attraverso
chiamate esplicite all'API o dati già presenti nel database configurato.
Un collegamento best effort può tentare di aggiungere ai turni una
riga in canonical_query_log. Nessun sottosistema corrente fa
affidamento su questa tabella per riusare i piani. In ogni caso, una sua riga
non rappresenta la nascita di un mnest, di un cluster o di un percorso L0/L1.
Il comando python3 -m mnestoma offre sottocomandi per statistiche,
ager, principali relazioni in ingresso e in uscita, proto-mnest, percorsi,
riepiloghi ed eventi. Il renderer python3 -m observability render
può includere conteggi, archi attivi, proto ed eventi recenti in una pagina
HTML statica.
Questi strumenti leggono il contenuto dell'archivio; non dimostrano che il contenuto sia completo. Un mnestoma vuoto è un esito legittimo dell'integrazione corrente.
<workspace>/.mnestoma/mnest.sqlite: l'ambito è il workspace
configurato, non un utente ricavato dal turno.runtime/mnestoma.py, runtime/synt.py,
runtime/jobs/maintenance_tasks.py e
runtime/observability.py.