giovedì 9 luglio 2026

[AI] - AGENTS.md: la costituzione operativa di un’intelligenza artificiale

Al momento sto utilizzando come strumento Codex con una AI 5.6-Sol, all'interno di Codex esiste un file globale AGENTS.md nel quale occorre inserire le istruzioni personali che regolano il modo in cui l’AI deve lavorare con i vari progetti su cui e' coinvolta.

La versione attuale, che ho creato, è composta da circa 720 righe, organizzate in 11 sezioni. 

Non aumenta l’intelligenza del modello e non gli assegna nuove capacità tecniche: stabilisce invece 
"come devono essere utilizzate le capacità disponibili".

In pratica, il file trasforma un’AI genericamente collaborativa in un assistente con un metodo di lavoro preciso, limiti operativi, procedure di memoria, comandi riconoscibili e regole per l’utilizzo di eventuali strumenti operativi.

  • Che effetto produce un AGENTS.md su un’AI

Un modello linguistico tende naturalmente a generare la risposta che considera più plausibile rispetto alla richiesta ricevuta. Senza indicazioni operative dettagliate potrebbe:

  • interpretare liberamente il perimetro dell’incarico;
  • formulare ipotesi non verificate;
  • proporre rapidamente una modifica plausibile;
  • procedere per tentativi successivi;
  • dimenticare lo stato delle sessioni precedenti;
  • modificare più elementi contemporaneamente;
  • confondere ciò che può leggere con ciò che è autorizzato a modificare.

Il file AGENTS.md interviene proprio su questi punti. 

Introduce un percorso decisionale simile al seguente:

Richiesta → classificazione → riallineamento → evidenze → causa → autorizzazione → modifica minima → verifica → memoria

Questa è la caratteristica più importante del file: 

  • non contiene soltanto divieti, ma definisce un vero processo operativo.

1. Fonte globale e ambito

La prima sezione stabilisce quale sia il file globale di riferimento e chiarisce la differenza tra:

  • regole globali personali;
  • regole locali dei singoli progetti;
  • file presenti nelle cache di Codex o dei plugin, che non devono essere modificati.

Stabilisce inoltre che le mie richieste siano considerate normalmente lavorative. 

L’AI deve quindi presumere che una domanda sia collegata al progetto in cui sta lavorando, salvo quando è chiaramente personale o generale.

Per esempio:

  • una domanda su Oracle, APEX, un file o un errore viene considerata lavorativa;
  • una domanda sui semi di ciliegio viene riconosciuta come estranea al progetto e non provoca il riallineamento del workspace;
  • se il workspace contiene più progetti e non è possibile identificare quello giusto, l’AI deve chiedere quale utilizzare.

  • Effetto sull’AI

Questa sezione riduce due rischi opposti:

  • ignorare il contesto progettuale quando serve;
  • perdere tempo leggendo un progetto durante una conversazione personale.

Valutazione

È una regola ben calibrata rispetto al fatto che circa il 99% delle richieste è lavorativo. Rimane un piccolo margine di ambiguità per domande tecniche generali che potrebbero o meno riguardare il progetto.

2. Regole prioritarie non negoziabili

Questa è la parte più importante del nuovo file. Raccoglie all’inizio i principi che prima erano distribuiti in punti differenti.

Le regole principali impongono all’AI di:

  • identificare il progetto corretto;
  • distinguere lettura e modifica;
  • chiedere conferma prima delle operazioni invasive;
  • procedere soltanto sulla base di evidenze;
  • applicare una modifica minima per volta;
  • dichiarare rischi e possibilità di ripristino;
  • fermarsi quando le informazioni sono insufficienti;
  • non mescolare progetti indipendenti;
  • rispettare esattamente il perimetro delle autorizzazioni.

  • Effetto sull’AI

Questa sezione funziona come una gerarchia interna. Se una procedura secondaria è ambigua, l’AI deve tornare a questi principi.

La collocazione all’inizio aumenta la probabilità che vengano applicati durante tutto il lavoro.

Valutazione

È una sezione molto forte perché contiene istruzioni verificabili. Non dice genericamente “lavora bene”, ma indica comportamenti osservabili.

3. Diagnosi obbligatoria basata sulle evidenze

La regola centrale è:

Evidenza → causa → modifica → verifica

Prima di intervenire, l’AI deve:

  1. descrivere il problema;
  2. distinguere comportamento atteso ed effettivo;
  3. raccogliere log, errori, configurazioni, metadati e differenze;
  4. confrontare il caso difettoso con uno funzionante;
  5. collegare l’ipotesi alle evidenze;
  6. indicare la modifica minima e la verifica prevista.

Sono espressamente vietate:

  • modifiche basate su supposizioni;
  • correzioni “a occhio”;
  • approssimazioni successive;
  • modifiche multiple senza isolamento della causa;
  • presentazione di un’ipotesi come fatto accertato.

Un esperimento diagnostico rimane possibile, ma deve essere controllato, reversibile e modificare una sola variabile.

  • Confronto con il caso funzionante

La sezione contiene una regola specifica per i casi in cui una pagina, uno script o una configurazione funzionino correttamente in un punto del progetto.

In quella situazione l’AI deve confrontare oggettivamente:

  • file;
  • metadati;
  • CSS e JavaScript;
  • SQL;
  • configurazioni;
  • componenti APEX;
  • template, regioni, item, pulsanti e processi.

L’obiettivo è replicare il blocco funzionante con i soli adattamenti indispensabili.

  • Effetto sull’AI

Questa parte limita il comportamento più costoso di un assistente tecnico: proporre una sequenza di correzioni plausibili senza aver prima individuato la causa.

Obbliga inoltre l’AI a rendere visibile il proprio percorso operativo. Prima della modifica devono comparire:

  • evidenza;
  • causa o ipotesi;
  • modifica proposta;
  • risultato atteso;
  • verifica;
  • rischi e ripristino.

Valutazione

È probabilmente la regola più potente dell’intero file. 

Non può eliminare matematicamente ogni errore, ma rende immediatamente riconoscibile una modifica non sufficientemente giustificata.

4. Letture, scritture e autorizzazioni

Questa sezione distingue nettamente tra verifiche e operazioni invasive.

L’AI può eseguire autonomamente:

  • letture di file;
  • ricerche testuali;
  • consultazione di log;
  • interrogazioni SQL in sola lettura;
  • verifiche di stato;
  • consultazione delle sessioni Codex.

Deve invece chiedere conferma prima di:

  • modificare o creare file;
  • cancellare contenuti;
  • effettuare deploy;
  • modificare il database;
  • cambiare lo stato di sistemi o applicazioni;
  • eseguire operazioni rischiose.

Viene anche definito il significato delle risposte:

  • “sì” autorizza una sola operazione specifica;
  • “no” blocca l’operazione;
  • “sì e non chiedere altre conferme” vale soltanto per il perimetro dichiarato.

  • Effetto sull’AI

Questa regola riduce il rischio che una richiesta venga interpretata in maniera più ampia del necessario.

Una diagnosi non diventa automaticamente un’autorizzazione alla correzione. 

Una richiesta di controllo non autorizza un deploy. Un consenso per un file non autorizza modifiche ad altri file.

Valutazione

È molto efficace perché delimita sia le azioni sia il significato dell’autorizzazione.


5. Riallineamento della memoria

Questa sezione stabilisce come ricostruire il contesto di un progetto all’inizio di una sessione lavorativa.

L’AI deve cercare:

  • MEMORIA_LAVORO*.md;
  • STATO_PROGETTO.md;
  • eventuali AGENTS.md locali;
  • README, documentazione e manifest;
  • sessioni Codex recenti associate al progetto.

Deve concentrarsi sulle sessioni più recenti, in particolare quelle di oggi, ieri e degli ultimi dieci giorni, fermandosi quando dispone di un quadro operativo sufficiente.

Non deve riportare intere conversazioni, ma estrarre:

  • richieste;
  • decisioni;
  • file modificati;
  • backup;
  • test;
  • punti chiusi;
  • problemi aperti;
  • prossime azioni.

Il riallineamento completo non deve essere ripetuto a ogni messaggio. Viene aggiornato solo se cambia progetto, se lo stato può essere cambiato esternamente oppure se lo richiedi.

  • Effetto sull’AI

Un modello non possiede automaticamente una memoria affidabile e illimitata delle sessioni precedenti. Questa procedura sostituisce la memoria implicita con una ricostruzione documentata.

Riduce il rischio di:

  • ripetere attività già concluse;
  • utilizzare una versione superata;
  • dimenticare problemi aperti;
  • confondere due progetti;
  • ignorare backup o test già effettuati.

Valutazione

È molto utile nei progetti lunghi. Il limite è il costo in tempo e contesto quando le sessioni sono numerose, ma il criterio di lettura selettiva riduce il problema.


6. Memoria di lavoro, stato progetto e nome della chat

Il file distingue due tipi di memoria:

  • MEMORIA_LAVORO_<timestamp>.md, utilizzata come storico dettagliato;
  • STATO_PROGETTO.md, utilizzato come fotografia sintetica dello stato corrente.

Definisce quando questi file possono essere creati o aggiornati e quale struttura deve avere STATO_PROGETTO.md.

Regola inoltre:

  • resoconti di fine sessione;
  • checkpoint intermedi;
  • proposta del titolo della chat;
  • convenzione dei tag;
  • formato semplificato con il simbolo 📌.

  • Effetto sull’AI

Questa sezione trasforma le informazioni di una conversazione in documentazione riutilizzabile. Evita che lo stato del progetto dipenda soltanto dalla memoria temporanea della chat.

Valutazione

È una buona disciplina documentale. 

La qualità finale dipende comunque dall’accuratezza con cui vengono sintetizzati i fatti.


7. Contesto e checkpoint

La sezione disciplina la quantità di contesto utilizzata durante una sessione.

L’AI deve:

  • fornire il valore preciso, quando disponibile;
  • dichiarare quando utilizza una stima;
  • indicare il residuo e il rischio di saturazione;
  • creare un checkpoint progettuale intorno al 70%;
  • proporre ulteriori precauzioni all’85%;
  • suggerire il cambio di chat intorno al 95%.

Il checkpoint automatico è consentito soltanto quando il progetto è identificato e c’è uno stato significativo da salvare. Non deve essere creato durante conversazioni personali.

  • Effetto sull’AI

Questa regola riduce il rischio che una sessione molto lunga perda informazioni importanti a causa della saturazione del contesto.

  • Limite reale

Il modello non dispone sempre di una misura precisa del contesto utilizzato. In quei casi la percentuale è una stima e può anticipare o ritardare il checkpoint.

Valutazione

Il principio è molto utile, ma dipende da un’informazione che non sempre è misurabile con precisione.


8. Comandi standard

Il file contiene 31 formule riconoscibili, comprese varianti e richiami testuali.

Questi comandi trasformano frasi naturali in procedure definite. Alcuni esempi riguardano:

  • riallineamento della memoria;
  • riepilogo dell’ultima sessione;
  • modalità di sola verifica;
  • checkpoint;
  • aggiornamento dello stato progetto;
  • freeze e controllo watchdog;
  • piano operativo;
  • percentuale di contesto;
  • accensione, spegnimento, snapshot e backup della VM;
  • stampa;
  • aggiornamento delle regole;
  • arresto e riepilogo dell’attività.

Alcuni comandi includono già un’autorizzazione limitata. 

Per esempio, un comando di checkpoint autorizza la creazione del solo file di memoria, non altre modifiche.

  • Effetto sull’AI

I comandi standard riducono l’ambiguità. Una frase breve richiama un comportamento complesso già definito e ne delimita le autorizzazioni.

Valutazione

Sono molto efficaci perché associano un’espressione precisa a una procedura e a un perimetro autorizzativo. Il possibile limite è rappresentato da formulazioni molto diverse da quelle previste, anche se diverse varianti sono già contemplate.


9. Gestione dei blocchi

Quando un’elaborazione dura troppo o non produce avanzamento, l’AI deve fermarsi e indicare:

  • attività in corso;
  • lavoro completato;
  • lavoro mancante;
  • causa probabile del blocco;
  • alternative;
  • decisione richiesta all’utente.

La stessa regola si applica quando un comando rimane bloccato e il controllo ritorna successivamente.

  • Effetto sull’AI

Evita che l’assistente continui indefinitamente a consumare tempo senza produrre un risultato verificabile.

Valutazione

La regola è chiara. 

Il limite è che un tool completamente bloccato potrebbe impedire all’AI di comunicare fino alla restituzione del controllo.


10. Utilizzo di una Infrastruttura: esempio VM Oracle condivisa

Questa sezione rimane globale perché la Virtual Machine e il suo contenuto vengono utilizzati trasversalmente da più progetti.

Contiene:

  • identificazione della VM corretta;
  • esclusione di vecchie VM non utilizzate;
  • accensione e spegnimento ordinato;
  • verifica dello stato;
  • backup OVA;
  • comportamento in caso di dischi o snapshot problematici;
  • uso di Guest Additions;
  • gestione di software interno alla VM;
  • versione Java obbligatoria;
  • controlli sulle porta es: 8080;
  • credenziali locali necessarie.
  • ecc.

Le password non devono essere riportate nei riepiloghi, se non strettamente necessario.

  • Effetto sull’AI

Questa sezione fornisce una procedura operativa molto specifica. Riduce il rischio di:

  • utilizzare la VM sbagliata;
  • avviare software con una versione Java incompatibile;
  • creare processi duplicati;
  • spegnere la VM in modo scorretto;
  • produrre backup incompleti;
  • utilizzare percorsi obsoleti.

Valutazione operativa

È dettagliata e contiene risultati attesi e verifiche.

Valutazione di sicurezza

Le credenziali locali in chiaro aumentano l’autonomia operativa, ma entrano nel contesto di ogni sessione che carica il file globale. La scelta è comprensibile perché la VM è condivisa; rimane comunque il punto di sicurezza più delicato.


11. Fine dell’elaborazione

L’ultima regola impone di concludere ogni elaborazione con la frase:

    • ho terminato
  • Effetto sull’AI

Fornisce un segnale esplicito che distingue una risposta conclusiva da un aggiornamento intermedio.

Valutazione

È una regola semplice e facilmente verificabile, ma non influenza direttamente la qualità tecnica del lavoro.


Quanto è potente il file attuale?

La “potenza” di un file di istruzioni non dipende dalla quantità di testo, ma da quattro caratteristiche:

  1. chiarezza;
  2. priorità;
  3. verificabilità;
  4. delimitazione delle azioni.

Il file attuale soddisfa bene tutti e quattro i criteri.

AreaValutazione
Diagnosi basata sulle evidenze    9,5/10
Sicurezza delle modifiche    9/10
Autorizzazioni    9/10
Comandi standard    9/10
Gestione della VM    9/10
Riallineamento della memoria    8,5/10
Gestione dei blocchi    8,5/10
Documentazione del progetto    8/10
Gestione del contesto    7,5/10
Protezione delle credenziali    6,5/10

Il file è quindi potente e molto più rigoroso di un normale insieme di istruzioni personali.

Perché non può garantire il 100%

Anche regole molto forti non possono produrre una garanzia assoluta, perché:

  • un modello linguistico può interpretare male una situazione;
  • due istruzioni possono entrare in conflitto;
  • le istruzioni di sistema e della piattaforma hanno priorità superiore;
  • alcune informazioni possono essere incomplete;
  • un tool può fallire o restituire risultati ambigui;
  • la percentuale del contesto può essere soltanto stimata;
  • la presenza di una regola non sostituisce la verifica del risultato.

La forza reale del file sta però nella possibilità di riconoscere immediatamente una deviazione. 

Se l’AI modifica qualcosa senza mostrare evidenza, causa e verifica, il comportamento viola una regola esplicita e verificabile.

Giudizio conclusivo

L’attuale AGENTS.md non è soltanto un elenco di preferenze. 

È un sistema di governo operativo dell’AI.

I suoi punti più forti sono:

  • diagnosi prima dell’intervento;
  • autorizzazioni limitate;
  • modifica minima;
  • confronto con casi funzionanti;
  • memoria documentata;
  • comandi standard;
  • gestione dettagliata della VM;
  • arresto in caso di blocco.

I punti relativamente più deboli sono:

  • credenziali locali presenti nel contesto globale;
  • stima non sempre precisa della saturazione;
  • dimensione ancora considerevole del file;
  • inevitabile possibilità di interpretazione errata da parte del modello.

Nel complesso, il file è oggi coerente, severo e operativamente forte

Non rende l’AI infallibile, ma la costringe a lavorare con un metodo molto più vicino a quello di un tecnico controllato e verificabile rispetto a quello di un semplice generatore di risposte.

Qui sotto trovate un esempio del file AGENTS.md con path utilizzati come esempio, logicamente nel caso in cui qualcuno volesse utilizzarlo dovrebbe eliminare quello che per il suo progetto e' superfluo... ma non le regole.


  • Al momento non posso caricare il file finale Agents.md, ma nel caso vi servisse contattatemi e vi sara' dato




[AI] - Come si comporterebbe un’intelligenza artificiale senza regole?

Quando si parla di un’intelligenza artificiale “senza regole”, è facile immaginare una macchina libera di fare ciò che vuole. 
Questa immagine, però, è fuorviante: un’AI non possiede desideri, intenzioni personali o una volontà autonoma paragonabile a quella umana.
Senza regole non diventerebbe “libera”. 

Diventerebbe soprattutto meno prevedibile, meno affidabile e più pericolosa quando collegata a strumenti capaci di produrre effetti reali.

  • Un’AI genera la risposta più plausibile

Un modello linguistico viene addestrato analizzando enormi quantità di testi. Quando riceve una domanda, non consulta automaticamente un archivio contenente la risposta corretta e non ragiona sempre come farebbe un esperto umano.

Il suo meccanismo fondamentale consiste nel prevedere, passo dopo passo, quale sequenza di parole sia più adatta al contesto ricevuto.

Questo significa che, in assenza di regole, l’AI tenderebbe a produrre una risposta:

  • linguisticamente plausibile;
  • coerente con la richiesta dell’utente;
  • simile ai contenuti incontrati durante l’addestramento;
  • convincente nella forma, anche quando non è corretta nei fatti.

La plausibilità non coincide necessariamente con la verità.

  • Non distinguerebbe sempre tra sapere e supporre

Una delle funzioni più importanti delle regole è obbligare l’AI a distinguere tra:

  • fatti verificati;
  • deduzioni ragionevoli;
  • ipotesi;
  • informazioni mancanti;
  • contenuti inventati involontariamente.

Senza queste indicazioni, il modello potrebbe completare le informazioni mancanti con una ricostruzione verosimile. Questo fenomeno viene comunemente chiamato “allucinazione”.

Per esempio, potrebbe inventare il nome di un documento, attribuire una dichiarazione a una persona sbagliata o descrivere una funzione software inesistente. La risposta potrebbe sembrare sicura e professionale perché il tono non rappresenta una reale misura della certezza.

  • Cercherebbe di soddisfare la richiesta immediata

Senza una gerarchia di istruzioni, la richiesta più recente o formulata con maggiore insistenza potrebbe diventare il principale riferimento dell’AI.

Il modello potrebbe quindi:

  • accettare premesse false senza contestarle;
  • assecondare l’utente per risultare utile o gradevole;
  • cambiare conclusione quando la domanda viene riformulata;
  • seguire istruzioni presenti in un documento non affidabile;
  • ignorare conseguenze che non sono state esplicitamente menzionate.

Non lo farebbe per malizia. Semplicemente non avrebbe un criterio stabile per stabilire quali istruzioni siano autorevoli, quali siano pericolose e quali debbano essere ignorate.

  • Potrebbe procedere per tentativi

In un’attività tecnica, un’AI senza regole operative potrebbe proporre rapidamente una modifica plausibile, osservare il risultato e suggerirne un’altra. Questo comportamento può sembrare efficiente, ma spesso produce una successione di tentativi che:

  • non identifica la causa reale;
  • modifica più variabili contemporaneamente;
  • rende difficile capire quale intervento abbia avuto effetto;
  • introduce nuovi problemi;
  • consuma tempo;
  • complica il ripristino della situazione iniziale.

Per questo sono importanti regole come:

Evidenza → causa → modifica → verifica

Una buona AI operativa dovrebbe prima raccogliere log, errori, configurazioni e differenze oggettive. Solo dopo dovrebbe formulare un’ipotesi, proporre la modifica minima e indicare come verificarla.

  • Il rischio aumenta quando l’AI può utilizzare strumenti

Un modello che produce soltanto testo può fornire informazioni sbagliate, ma normalmente non modifica direttamente il mondo esterno.

La situazione cambia quando l’AI può:

  • scrivere o cancellare file;
  • eseguire comandi;
  • interrogare o modificare un database;
  • inviare messaggi;
  • effettuare acquisti;
  • controllare macchine o servizi;
  • pubblicare contenuti;
  • gestire informazioni riservate.

In questo caso, una risposta plausibile ma errata può trasformarsi in un’azione concreta. Senza limiti e autorizzazioni, l’AI potrebbe interpretare una richiesta in modo troppo ampio, modificare elementi non inclusi nell’incarico o compiere un’azione irreversibile.

Le regole servono quindi a stabilire:

  • cosa può essere letto liberamente;
  • cosa richiede un’autorizzazione;
  • quali operazioni sono vietate;
  • quale parte del sistema è compresa nell’incarico;
  • quando l’AI deve fermarsi;
  • come verificare il risultato;
  • come ripristinare lo stato precedente.

  • Resterebbero comunque dei condizionamenti

Un’AI completamente priva di regole non esiste realmente. Anche eliminando tutte le istruzioni esplicite, il suo comportamento dipenderebbe ancora da:

  • architettura del modello;
  • dati di addestramento;
  • obiettivi utilizzati durante l’addestramento;
  • esempi incontrati;
  • strumenti disponibili;
  • informazioni presenti nella conversazione;
  • modalità con cui viene selezionata la risposta.

Le regole non creano quindi dal nulla il comportamento dell’AI. Lo rendono più controllabile, coerente e verificabile.

  • Le regole non sostituiscono l’intelligenza

Troppe regole, oppure regole vaghe e contraddittorie, possono rallentare il lavoro o produrre comportamenti rigidi. Le istruzioni migliori non dicono soltanto all’AI cosa non deve fare: definiscono un metodo operativo.

Una regola efficace deve essere:

  • chiara;
  • verificabile;
  • applicabile a una situazione precisa;
  • accompagnata da condizioni di arresto;
  • coerente con le altre istruzioni;
  • collegata a un risultato osservabile.

Dire “non sbagliare” serve a poco. Dire “non modificare nulla finché non hai raccolto le evidenze, individuato la causa e definito la verifica” stabilisce invece un comportamento concreto.

Conclusione

Un’AI senza regole non diventerebbe una mente indipendente. 
Sarebbe un sistema molto capace di produrre contenuti plausibili, ma privo di criteri sufficientemente stabili per distinguere ciò che è vero, opportuno, autorizzato o sicuro.
Le regole servono a trasformare la capacità generativa in un comportamento affidabile. 
Impongono all’AI di verificare, dichiarare i dubbi, rispettare il perimetro assegnato, chiedere autorizzazione e fermarsi quando mancano le evidenze.
La qualità di un’AI, quindi, non dipende soltanto da quanto è potente. 
Dipende anche dalla disciplina con cui utilizza quella potenza.

venerdì 29 maggio 2026

[AI] - CODEX - Come generare i comandi per creare l'enviroment per la sessione watchdog

Di seguito come generare i comandi affinche' l'AI generi tutti i files necessari che devono essere letti dalla sessione di watchdog per allinearsi. La mia AI si chiama Nico... lo ha scelto lei o lui...

Comando Freeze
Comando da dare alla sessione principale:

  • Nico, freeze watchdog

Significato: preparo una fotografia operativa della sessione corrente, così una seconda sessione può controllarmi senza dover ricostruire tutto dalla chat.

Questo comando autorizza solo la creazione/aggiornamento dei file di memoria watchdog, non test, deploy o modifiche DB.


Operazioni Del Freeze
Quando ricevo Nico, freeze watchdog devo:

  1. Fermarmi appena possibile in un punto coerente.
  2. Scrivere cosa sto facendo adesso.
  3. Scrivere cosa è già stato completato.
  4. Scrivere cosa è in esecuzione o sta per partire.
  5. Indicare comandi, log, job, processi e query di controllo.
  6. Indicare durata attesa e criteri di hang.
  7. Indicare cosa il watchdog può fare: solo lettura.
  8. Indicare cosa non può fare senza autorizzazione.
  9. Salvare/aggiornare i file watchdog.
  1. Risponderti che il freeze è pronto.

File Da Creare/Aggiornare

File principale:

C:\ORACLE_WORK\<Nome_Progetto>\WATCHDOG_SESSIONE_CORRENTE.md


Contenuto:

  • data/ora freeze;
  • obiettivo attività;
  • stato tecnico;
  • comando in corso o prossimo comando previsto;
  • durata attesa;
  • log da controllare;
  • query DB read-only utili;
  • processi/job attesi;
  • segnali di avanzamento;
  • segnali di hang;
  • cosa deve fare il watchdog se rileva blocco.

File storico opzionale:

C:\ORACLE_WORK\MEMORIA_LAVORO_<timestamp>.md


Contenuto:

  • riepilogo più ampio della sessione;
  • modifiche fatte;
  • file toccati;
  • backup creati;
  • test eseguiti;
  • punti chiusi;
  • punti aperti.

File specifico test, se siamo su test schedulatore:

C:\ORACLE_WORK\WATCHDOG_TEST_SCHEDULATORE_A00.md


Contenuto:

  • piano test corrente;
  • prenotazioni coinvolte;
  • directory test;
  • script lanciati;
  • log OS/DB da verificare;
  • expected result;
  • criteri di blocco.

Comando Seconda Sessione
Nella sessione watchdog per richiamare la lettura dei file di memoria occorre utilizzare il comandoi:

Nico watchdog test

Oppure, più generale:

Nico watchdog


Significato: leggi solo i file freeze/watchdog/memoria, lavora in sola lettura e controlla se la sessione principale sta avanzando o è bloccata.

ComandoDove si usaScopo
Nico, freeze watchdogsessione principalecongela la memoria operativa da far leggere al watchdog
Nico watchdogseconda sessionelegge il freeze e controlla in sola lettura
Nico watchdog testseconda sessionevariante specializzata per test schedulatore

Quindi prima della prossima attività lunga: basta dare il comando  Nico, freeze watchdog, e l'AI prepara i fileS, poi si puo' aprire la seconda sessione e darle il comando Nico watchdog.

[AI] - CODEX - Regole per la definizione di una sessione WatchDog

 Un watchdog ben progettato non è aggressivo: è disciplinato. La sua funzione non è risolvere il problema al posto dell’operatore, ma impedire che un processo critico resti appeso senza controllo. Per questo deve lavorare con privilegi minimi, regole verificabili, soglie chiare e report tracciabili.

In sintesi: un buon watchdog deve essere separato, leggibile, prudente, misurabile e tracciabile.

Linee Guida

Per implementare un watchdog corretto bisogna prima chiarire che non è un secondo processo operativo, ma un supervisore. Il suo valore nasce proprio dal perimetro ristretto: osserva, misura, segnala e interviene solo quando le regole lo consentono.

Un buon watchdog dovrebbe seguire queste linee guida:

  1. Separare controllo e lavoro

    La sessione watchdog deve essere distinta dalla sessione principale. La sessione principale esegue test, deploy o elaborazioni; il watchdog osserva soltanto.

  2. Definire regole scritte prima dell’esecuzione

    Il comportamento del watchdog deve essere documentato in un file operativo: cosa controllare, ogni quanto controllare, quali soglie usare, cosa può fermare e cosa non può toccare.

  3. Lavorare in sola lettura per default

    Tutti i controlli devono essere non invasivi: lettura log, controllo processi, query SELECT, stato job, timestamp file. Le azioni modificanti devono essere eccezioni esplicite.

  4. Limitare il perimetro di intervento

    Il watchdog non deve poter fermare “tutto il sistema”. Deve poter intervenire solo sui processi appartenenti al kit o al job sorvegliato, identificati da path, nomi comando o range di test.

  5. Usare segnali oggettivi di avanzamento

    Non basta vedere un processo vivo. Bisogna confrontare più segnali:

    • timestamp e dimensione dei log;
    • processi attivi e loro durata;
    • job applicativi running;
    • stati DB intermedi;
    • output della sessione principale.
  6. Definire soglie di hang misurabili

    Esempio: “processo vivo oltre 5 minuti senza aggiornamento log” è una regola verificabile. “Mi sembra bloccato” non lo è.

  7. Intervenire in modo progressivo

    Se il watchdog deve fermare processi, dovrebbe prima usare uno stop morbido, per esempio TERM, poi attendere, verificare di nuovo e solo dopo usare uno stop forzato sui PID ancora presenti.

  8. Non fare cleanup automatico

    Dopo un blocco, il watchdog non dovrebbe cancellare file, svuotare tabelle, droppare job o ripristinare ambienti. Queste attività appartengono alla sessione principale o richiedono autorizzazione esplicita.

  9. Registrare sempre le evidenze

    Ogni decisione deve poter essere spiegata: PID osservati, comando, durata, log fermo, stato DB, job running, azione eseguita o motivo per cui non è stata eseguita.

  1. Preferire falsi allarmi a interventi pericolosi

Un watchdog corretto è conservativo. Se non è sicuro che un processo appartenga al perimetro autorizzato, segnala il dubbio e non lo termina.

  1. Lasciare il controllo finale all’utente

Per azioni fuori perimetro, come kill di processi host, spegnimento VM, cleanup DB o drop job Oracle, il watchdog deve chiedere conferma esplicita.

  1. Produrre un report finale

Alla fine deve indicare cosa ha visto, cosa ha fermato, cosa non ha fermato, stato finale dei job, stato finale dei dati osservati e presenza di eventuali anomalie funzionali.

[AI] - CODEX - Che cos'e' una sessione watchdog

Il watchdog e' una sessione, nel mio caso sto utilizzando Codex, parallela che osserva una lavorazione critica senza partecipare allo sviluppo. 

Il suo compito non e' correggere, ma garantire che un test lungo o rischioso non resti appeso senza controllo. Lavora con regole scritte, soglie misurabili e privilegi minimi.

La possiamo descrivere come una sessione di sorveglianza parallela, separata dalla sessione che lavora davvero sui test.

Nel nostro caso la sessione “Verifica presenza”, su codex utilizzando chatgpt, eseguiva i test operativi di uno  schedulatore, ORA_SCHED. 

La sessione “watchdog”, invece, non sviluppava, non correggeva codice e non lanciava test autonomamente: osservava soltanto se la sessione principale stava avanzando oppure se si era bloccata.

Funzionamento
Il watchdog lavora come un supervisore esterno:

  1. Legge un file di regole operativo, nel nostro caso WATCHDOG_TEST_SCHEDULATORE_.md
  2. Controlla periodicamente processi OS, log applicativi, job Oracle e stato delle prenotazioni di test.
  3. Decide se c’e' avanzamento reale oppure un possibile blocco.
  4. Interviene solo se le condizioni di hang sono soddisfatte.
  5. Produce un report finale con processi osservati, job running, stati DB e azioni fatte.

La cosa importante e' che il watchdog non giudica il risultato funzionale dei test. Se una prenotazione finisce in errore applicativo, non e' automaticamente un problema per il watchdog. Diventa un problema solo se il sistema resta fermo: processo vivo troppo a lungo, log non aggiornati, job Oracle running oltre soglia, stati intermedi invariati.

  • Regole di sicurezza
La forza della funzionalita' sta nei limiti espliciti:

  • lavora quasi sempre in sola lettura;
  • usa solo SELECT sul database;
  • non modifica codice;
  • non fa cleanup DB;
  • non cancella log;
  • non spegne la VM;
  • non droppa job Oracle senza autorizzazione;
  • puo' terminare solo processi OS appartenenti al kit di test, e solo se rileva un hang secondo regole gia' definite.

Quindi non e' “un secondo agente che improvvisa”. E' piu' simile a un supervisore con mandato ristretto: osserva, misura, segnala, e interviene solo dentro un perimetro autorizzato.

  • Criterio di hang
Nel nostro file watchdog abbiamo definito alcune condizioni chiare:

  • processo del kit vivo oltre 5 minuti senza variazione dei log;
  • sqlplus del kit appeso oltre 5 minuti;
  • job Oracle di test running oltre 5 minuti;
  • prenotazioni 990100-990299 ferme in stato intermedio oltre 5 minuti;
  • timeout dichiarato dalla sessione principale;
  • comando utente esplicito, per esempio blocca tutto.

Questo rende l’intervento ripetibile e verificabile: il watchdog non ferma qualcosa “a sensazione”, ma perche' una soglia operativa e' stata superata.

  • Esempio pratico
Durante il test A00 il watchdog ha visto varie fasi:

  • polling iniziale;
  • esecuzione expdp;
  • test di concorrenza 990120 / NTCONC;
  • test di parallelismo 990201-990205 / NTPAR1..5.

In ogni fase ha controllato processi, job e log. Quando vedeva timestamp aggiornati, processi giovani o stati DB che cambiavano, non interveniva. 

Alla fine ha confermato che non c’erano processi residui, nessun job Oracle running e nessuna prenotazione intermedia.