Synt è la parte di Metnos che affronta una capacità mancante. Può trovare una combinazione di executor già ammessi oppure generare un nuovo candidato. In nessuno dei due casi una risposta del modello diventa subito un potere attivo: composizione e generazione seguono percorsi distinti, con controlli e responsabilità diverse.
| Percorso | Quando serve | Che cosa produce |
|---|---|---|
| Composizione | La capacità esiste già, ma è distribuita tra più executor. | Una breve catena di executor attivi e firmati. Non nasce nuovo codice. |
| Generazione | Manca davvero una capacità rappresentabile dallo standard. | Un executor candidato con manifest, codice e prove, ancora escluso dal catalogo operativo. |
Synt non aumenta i permessi dell'utente e non aggira il catalogo. Un nuovo executor deve usare i verbi e gli oggetti canonici, dichiarare argomenti, capacità ed eventuale annullamento, superare le prove e rispettare il profilo di esecuzione. La firma protegge l'integrità dell'artefatto; non ne autorizza da sola l'uso.
Il percorso multistadio inizia dalla richiesta interna
request_new_executor, che contiene un nome atteso e l'intento da
coprire. Prima di interrogare i modelli, il runtime verifica se la lacuna esiste
davvero:
proposed o synthesized, non
ne crea un duplicato.Questi controlli usano catalogo, vocabolario e registro delle integrazioni. Non dipendono da frasi speciali inserite per un singolo caso. Se trovano una capacità esistente, Synt restituisce il nome da usare e non genera nulla.
Quando il runtime osserva una relazione ancora incompleta tra attività già note, può cercare nel mnestoma una catena di massimo cinque passaggi. La ricerca considera soltanto executor attivi; se trova un percorso, propone al motore il primo executor da eseguire e lascia che il turno prosegua con i controlli ordinari.
Questa composizione reattiva non è un finto primo stadio di
request_new_executor. È un percorso separato, basato su una
relazione già registrata nel mnestoma. La generazione multistadio parte invece
dopo i controlli di ammissione descritti sopra.
La generazione separa le decisioni sul contratto dalla scrittura del codice. I primi cinque stadi producono l'artefatto; un sesto lo confronta con la descrizione:
| Passaggio | Carico logico | Risultato vincolante |
|---|---|---|
| 1. Nome e classe | middle | azione_oggetto[_qualifier], criticità, annullabilità e tipo di bersaglio. |
| 2. Firma operativa | middle | Schema degli argomenti, capacità dichiarate e schema inverso quando richiesto. |
| 3. Prove iniziali | middle | Almeno tre casi con dati in ingresso ed esito osservabile atteso. |
| 4. Descrizione | creative | Testa del manifest, termini di affinità e confini d'uso. |
| 5. Codice | wise | invoke, main e l'eventuale operazione inversa, costruiti sul contratto precedente. |
| 6. Coerenza | wise | Confronto tra comportamento descritto e codice generato. |
I nomi indicano carichi logici, non modelli fissati nel codice. Provider, modello e criteri di generazione sono scelti dalla configurazione centrale dei tier. Ogni passaggio riceve la richiesta e soltanto gli esiti già convalidati: il codice non può ridefinire in silenzio nome, argomenti o annullabilità.
Se il giudice semantico segnala una discordanza, restituisce un payload non tipizzato o non è disponibile, il candidato viene rifiutato. Linter e giudice non sono disattivabili tramite variabili d'ambiente. Un errore infrastrutturale viene registrato come indisponibilità, non trasformato in una certificazione di coerenza.
Una sintesi rifiutata da Birth resta una proposta inattiva: codice, manifest, lingue e motivo sono conservati fuori dal catalogo. Il suo identificativo serve per ritrovarla e non costituisce un consenso. Nessuna firma dell'agente può sostituire l'ammissione attraverso Birth.
Il comando synt review prepara il documento di prova;
metnos-f5-authority proposal review esegue la verifica e
proposal approve registra il consenso esatto. Le chiavi private
restano nell'autorità amministrativa. La registrazione delle prove firmate
passa dall'autorità di scrittura dell'installer, senza nuovi permessi al runtime.
Il revisore usa la stessa configurazione del modello dei servizi installati,
anche quando il modello è un servizio esterno. Le variabili del chiamante
non possono scegliere un modello diverso per la revisione.
Prima delle prove e del consenso, la preparazione comune calcola l’impronta
dai sorgenti acquisiti, senza modificare il codice della funzione.
Questa prima integrazione usa
l'installazione Linux supportata e non dispone ancora di una pagina web dedicata.
Ammissione in pre-esercizio e attivazione sono passaggi distinti. Il promotore e la gestione del ciclo di vita restano soggetti a Birth, alle prove indipendenti e ai permessi correnti. Un punteggio favorevole non certifica F5 e non attiva da solo il candidato.
I prompt vengono caricati nella lingua del turno. La descrizione del candidato e quella dei suoi argomenti nascono in quella lingua; il normale processo di allineamento dei manifest può aggiungere le altre versioni. Nome canonico, campi dello schema e identificatori restano invece stabili.
Il campo affinity è ancora una lista piatta di
parole chiave, spesso mescolata tra italiano e inglese. Non è quindi pienamente
conforme all'architettura i18n. La riprogettazione generale è registrata come
attività di massima priorità e richiede analisi, confronto tra alternative,
specifica e solo dopo sviluppo.
Proposte, risultati dei passaggi, motivi di rifiuto, valutazioni, promozioni e ripristini restano negli archivi locali. I prompt non ricevono credenziali in chiaro. Il codice generato è soggetto ai moduli Python consentiti, alla sandbox e ai limiti dell'Executor Standard.
Riferimenti nel codice:
runtime/synth_request.py: ammissione iniziale e persistenza del candidato;runtime/synt_multistage.py: generazione a stadi, controllo strutturale e verifica semantica;runtime/generated_executor_contract.py: contratto dei manifest generati;runtime/proposal_evaluator.py: valutazione deterministica;runtime/jobs/promoter*.py: promozione, riepilogo, grazia e ripristino;runtime/loader.py: visibilità dei cicli di vita.