Questa pagina è tradotta dalla documentazione inglese. Comandi, identificatori ed esempi restano invariati. Runtime 7.24.4 · SDK 2.6.7. Testo inglese
Assicurazione degli obiettivi
Stato: Attuale Ambito: controlli di accettazione degli obiettivi e freschezza delle fonti Ultima revisione: 2026-09-14 Responsabile: responsabili del runtime di AX Code
I piani di modifica del codice prodotti dal pianificatore degli obiettivi dichiarano controlli di accettazione
eseguibili. Ogni controllo nomina l’esito che copre, il comando esatto, lo scopo
e l’ambiente previsto. AX Code registra l’evidenza di esecuzione quando l’agente
esegue verify_project con l’id goalCheck del controllo.
{ "goalCheck": "invoice-parity" }
Il comando arriva dal piano dell’obiettivo congelato. L’agente non può sostituirlo con un comando diverso tramite questa chiamata. Le autorizzazioni bash esistenti si applicano comunque. Completare l’obiettivo richiede che l’ultimo tentativo di ogni controllo dichiarato passi con obiettivo, sessione, workspace, contratto e contenuto delle fonti corrispondenti. La prosa di accettazione spiega il risultato; non sostituisce i controlli eseguiti. Le esecuzioni di shell ordinarie e i controlli saltati per intero non possono fornire questa evidenza.
I piani di obiettivo vecchi, senza assicurazione, conservano le regole di completamento precedenti. Cancella e ricrea un obiettivo vecchio quando ti serve il nuovo contratto; modificare sul posto i requisiti congelati provoca una discordanza di contratto. Una biforcazione conserva il contratto ma richiede esecuzioni di controllo nuove nella nuova sessione.
Preparare un progetto di migrazione
Fornisci sorgente o esportazioni legacy autorevoli, con identificatori di revisione, un inventario di copertura limitato e script di controllo che falliscono quando le asserzioni non si possono verificare. Tratta i commenti e le implementazioni di migrazione precedenti come piste da indagare. Registra le modifiche di comportamento approvate separatamente dai requisiti di parità con il legacy.
Seleziona i controlli per i livelli che la modifica richiesta tocca davvero:
| Livello | Che cosa dovrebbe asserire un controllo di progetto |
|---|---|
| Flusso di business | Gli stessi input, ruoli e dati di partenza producono gli output e gli effetti collaterali richiesti. |
| Logica di database | Gli oggetti, i trigger, le procedure e i job richiesti esistono e mostrano il comportamento atteso. |
| Schema e dati | Mapping, vincoli, predefiniti e regole di riconciliazione reggono; i soli conteggi di righe non bastano. |
| Configurazione | I rami di configurazione pertinenti esercitano il comportamento previsto. |
| Distribuzione | L’istanza, lo schema, la revisione dell’artefatto e la configurazione efficace previsti sono davvero attivi. |
Gli script devono asserire l’identità del bersaglio prima di eseguire i propri controlli. Tieni le credenziali nel meccanismo di credenziali già usato dal progetto, mai nel testo del piano, nei comandi o nelle descrizioni del bersaglio. Un controllo dovrebbe restituire un codice di uscita diverso da zero per un’ asserzione fallita, un ambiente mancante o un’asserzione obbligatoria saltata. Evita involucri che mascherano i fallimenti. AX Code non può dedurre asserzioni da un’uscita di processo riuscita.
Per le migrazioni grandi, organizza il lavoro in lotti limitati di flusso di business e mantieni un inventario che collega moduli, dipendenze, riferimenti legacy e controlli di accettazione. Riporta sia il lotto accettato sia la copertura restante. Superare un lotto non completa l’intera migrazione.
Che cosa registra un piano
Il pianificatore fornisce un oggetto assurance. Questo frammento illustrativo assume che il
progetto abbia l’esportazione di sorgente e lo script di controllo citati:
{
"version": 1,
"sourcePaths": ["src", "checks", "package.json"],
"sources": [
{ "role": "legacy", "reference": "legacy/invoice-schema.sql at export-v1" },
{ "role": "requirement", "reference": "Invoice acceptance criteria supplied by the user" }
],
"checks": [
{
"id": "invoice-parity",
"acceptanceIds": ["AC1"],
"command": "node checks/invoice-parity.cjs",
"purpose": "Assert invoice behavior, database mappings and target identity",
"environment": "Staging migration target, schema ERP"
}
]
}
Tutti gli id di accettazione devono essere coperti. I comandi si eseguono dalla radice del workspace. L’oggetto di assicurazione è congelato insieme al contratto di accettazione. L’agente riceve ambito validato, riferimenti alle fonti, id dei controlli e bersagli dichiarati nel contesto continuativo dell’obiettivo. Contratti mancanti o alterati producono un avviso di ripristino. I riepiloghi di conversazione generati restano fallibili; i riferimenti dichiarati e le etichette dei bersagli sono requisiti, non fatti osservati in modo indipendente.
Gli intervalli Git che misurano che cosa ha cambiato questo obiettivo devono usare {BASELINE} come
stato precedente. Il pianificatore riscrive quel segnaposto nello SHA di HEAD catturato
quando il piano viene inviato, così i commit preesistenti davanti a origin/main o
un albero di lavoro sporco non possono rendere l’obiettivo incompletabile. I ref di tracciamento remoto
(origin/main, @{u}, refs/remotes/…) sono rifiutati come quello stato precedente,
salvo che l’obiettivo nomini il remoto. Registra sotto Rischi i percorsi già divergenti o sporchi;
non congelare un controllo di soglia che sta già fallendo, salvo che
l’obiettivo sia correggere quel fallimento.
Freschezza e limiti
Le impronte delle fonti Git includono i byte reali dei file tracciati e di quelli non tracciati e non ignorati
dentro l’ambito dichiarato sourcePaths. I percorsi di file espliciti includono anche i file di
configurazione ignorati; i percorsi di directory conservano le regole di ignore di Git. Le checklist mutabili del piano dell’obiettivo sono escluse; i loro requisiti congelati sono
controllati tramite il digest del contratto. I progetti non Git improntano in modo ricorsivo gli ambiti dichiarati
sourcePaths, inclusi i percorsi mancanti. Includi in quell’ambito ogni sorgente pertinente, ogni file di configurazione
e ogni script di controllo.
L’impronta è limitata a 20,000 voci e a 128 MiB di contenuto dei file. Sorgenti collegate, repository Git annidati, file speciali, percorsi che escono, file che cambiano e letture non disponibili non possono produrre evidenza fresca. Tali fallimenti bloccano il completamento assicurato. Gli artefatti di output dei controlli dovrebbero andare in una posizione ignorata, così produrre un report non cambia la sorgente che si sta verificando.
I file ignorati non nominati in modo esplicito, le dipendenze fuori dall’ambito delle fonti, i database e le distribuzioni hanno bisogno di asserzioni nel comando del progetto. Una ricevuta registra un’osservazione al momento dell’esecuzione; non dimostra che lo stato esterno sia rimasto invariato. Riesegui i controlli interessati dopo aver cambiato configurazione, database o distribuzioni. AX Code non scopre in automatico tutto il comportamento legacy e non certifica la parità della migrazione.
Quando gira la pianificazione
La pianificazione è su adesione su entrambe le superfici. /goal <objective> e create_goal
senza assure avviano l’obiettivo subito: non porta criteri di accettazione
congelati, e il completamento è giudicato dal piano di lavoro (attività in sospeso) più una
verifica superata dopo l’ultima modifica. /goal --assure <objective> e
create_goal con assure: true eseguono prima il redattore del piano, ed è questo che rende
le ricevute dei controlli eseguiti, sotto, un requisito di completamento.
Un obiettivo senza contratto lo dice ovunque venga mostrato (/goal view, la finestra
dell’obiettivo, i messaggi di controllo), così la sua soglia di completamento non è mai qualcosa che devi
dedurre. /goal replace conserva l’assicurazione quando l’obiettivo sostituito ha un
contratto valido.
Contesto di pianificazione e selezione del modello
La pianificazione dell’obiettivo eredita il modello di sessione selezionato sia tramite /goal sia tramite lo
strumento create_goal. Le varianti compatibili del chiamante sono conservate. Il redattore in sola lettura
riceve i requisiti utente originali recenti e i riferimenti agli allegati, con un
budget di registro di 16 KiB. Un registro troppo grande ferma l’inclusione dei registri più vecchi, con un avviso, così i requisiti
più vecchi non possono sostituire in silenzio una correzione omessa; il contenuto
multimediale in linea non è trattato come evidenza ispezionata. Fornisci file sorgente ispezionabili
per i requisiti presenti solo nei media.
Progresso e blocchi
get_goal include lo stato corrente dei controlli (superato, fallito, stantio, in esecuzione o mancante)
e gli ID di evidenza degli strumenti recenti. La soglia di completamento richiede comunque ricevute
correnti riuscite. Un aggiornamento bloccato richiede un tipo di blocco, una ragione, il cambiamento esterno necessario,
gli ID dell’evidenza originale e la conferma che non resta lavoro indipendente. Le ragioni
dei blocchi sono dichiarazioni del modello sostenute da registri ispezionabili, non una certificazione
che un servizio esterno resti non disponibile.
I turni finiti che producono ripetutamente nessuna nuova evidenza di strumento riuscita ricevono
una guida di recupero, poi mettono in pausa l’obiettivo con il lavoro incompiuto dichiarato. Nuovi risultati
di ricerca possono contare senza modifiche alle fonti; le riscritture delle attività e i risultati identici ripetuti
no. È un’euristica limitata, non una prova di progresso semantico. /goal resume
avvia un altro tentativo. Le chiamate di strumenti generate per un obiettivo precedente non possono terminare
il suo sostituto. Un obiettivo creato da uno strumento è disponibile per gli aggiornamenti di stato dopo che il modello
ha ricevuto il risultato della creazione nel passo successivo.
Rivedere un piano esistente
Usa /goal revise <correction> per rivedere in modo esplicito un obiettivo congelato attivo, in pausa o bloccato.
Il lavoro completato e i budget esauriti richiedono un obiettivo nuovo. Il piano
precedente e il digest restano intatti. Il piano rivisto ottiene un’identità nuova e un registro
locale di revisione preparata che collega entrambi i digest e la correzione. L’identità
corrente dell’obiettivo determina quale candidato è stato davvero installato; i candidati
concorrenti falliti possono restare su disco per l’ispezione. Le ricevute vecchie restano nella
cronologia e non possono soddisfare la revisione nuova. Il budget di token e l’uso accumulato si
trasferiscono; la revisione non concede un budget di spesa nuovo.
La revisione annulla l’esecuzione corrente e mette in pausa l’obiettivo mentre prepara il piano nuovo. Se la pianificazione fallisce, il contratto precedente resta riprendibile; un obiettivo già bloccato conserva quello stato. Una pausa o un annullamento dell’utente durante la pianificazione impedisce l’attivazione. Una sostituzione concorrente impedisce al candidato di prendere il controllo. Gli strumenti del modello non possono rivedere in silenzio i requisiti congelati. Revisiona il piano risultante e i suoi criteri di accettazione; un comando eseguibile da solo non stabilisce che le sue asserzioni coprano la richiesta corretta.
Risultati di revisione e modifiche successive delle fonti
Un log di revisione non vuoto non stabilisce una revisione riuscita. Per i revisori esterni obbligatori, usa un controllo di proprietà del progetto che valida il codice di uscita reale, il completamento del terminale, l’identità della sorgente o del diff, e i rilievi finali oppure un verdetto esplicito di assenza di rilievi. I log solo di avviso, il ragionamento parziale e i timeout devono fallire. Conserva separatamente i tentativi falliti per la diagnosi.
I nuovi invii di modifica del codice rifiutano i controlli riconosciuti di semplice presenza e ispezione dei file. È una guardia di ammissione stretta, non una prova semantica di comandi di shell arbitrari. I contratti congelati esistenti conservano schema e digest; i checkpoint avvisano quando un controllo più vecchio ha questa debolezza.
La freschezza dei controlli dell’obiettivo impronta anche i percorsi di file risolti riportati dagli strumenti
di modifica dei file riusciti durante l’obiettivo corrente, incluso ogni risultato multiedit
e i percorsi omessi dall’
elenco originale delle fonti. Modifiche successive a quei file invalidano le ricevute precedenti.
Il contratto congelato e il digest non cambiano. Questo tracciamento usa i metadati del risultato degli strumenti sui file;
non deduce effetti collaterali arbitrari della shell né la copertura dei test.
I limiti esistenti di contenimento del filesystem, di collegamenti, di dimensione e di conteggio dei file si applicano comunque.
L’output dei controlli e i checkpoint dell’obiettivo dichiarano percorsi aggiuntivi. Se un comando di test
congelato omette regressioni necessarie, richiedi /goal revise <correction> ed esegui
i controlli rivisti. Includere un file in un’impronta dimostra la freschezza, non che
un test abbia esercitato quel file. Preferisci directory di sorgente limitate e comandi di test
che includano le nuove regressioni quando pianifichi una ricerca di bug a estremi aperti.
Gli alias del workspace sono normalizzati per i percorsi di file osservati. I file di appoggio esterni non diventano input di sorgente del workspace; i checkpoint dichiarano che il contenuto esterno non è improntato. Lo stato esterno obbligatorio ha comunque bisogno di verifica di proprietà del progetto.
Evidenza dell'ambito dei commit
Un git log <baseline>..HEAD -- <paths> non vuoto dimostra solo che un commit
corrisponde al filtro. Non esclude file non correlati in quel commit né
altri commit. I nuovi piani di modifica del codice rifiutano le asserzioni riconosciute e autonome di log
Git filtrate per percorso e non vuote; i controlli congelati più vecchi ricevono una guida di revisione senza
cambiare il loro digest o la validazione in lettura.
Usa un verificatore di proprietà del progetto che controlli l’ascendenza della linea di base, richieda un intervallo
non vuoto e ispezioni ogni percorso cambiato in ogni commit, senza filtri di percorso.
Includi i file cancellati ed entrambi i lati delle rinomine, gestisci in modo esplicito i commit di merge
e valida separatamente eventuali proprietà obbligatorie di ramo o di messaggio. Usa
/goal revise per rafforzare un contratto esistente; non modificare i requisiti congelati.
Dimensione del piano e reinvio completo
Il piano reso, inclusi Markdown e JSON di assicurazione, deve stare entro 8,192
byte UTF-8. Punta sotto i 7,168 byte. Se l’invio supera il tetto, accorcia
la prosa ripetuta e reinvia l’oggetto completo, inclusi kind e tutti
i campi obbligatori. Conserva gli id e i controlli di accettazione; il runtime non
tronca i requisiti e non alza il limite di lettura per accettare un piano troppo grande.
Ricevute di revisione delle animazioni della CLI locale
Il packages/ax-code/script/verify-cli-review-receipts.ts di proprietà del repository
controlla gli artefatti round-* sotto la radice delle ricevute selezionata con --root. Ogni round
ha bisogno di revision.txt, e ciascuno di grok, claude e codex ha bisogno di exit.txt
con 0 e un verdetto finale in stdout.jsonl (eventi di testo Grok) oppure
stdout.txt (Claude/Codex). Conserva i tentativi falliti fuori dalle directory dei round
completati; non trasformare i fallimenti in ricevute con uscita zero.
dispositions.json contiene un array findings. Ogni voce nomina round,
cli, id, status (fixed o rejected) e evidence non vuoto. Le voci
fisse richiedono inoltre un oggetto regression con un percorso letterale del repository
file sotto packages/ax-code/test/cli/tui/ e il Vitest esatto
fullName. Disposizioni duplicate o verdetti multipli ambigui falliscono.
Il verificatore esegue quei file usando il Vitest installato, con il predefinito globale di tentativi
impostato a zero (le opzioni del singolo test possono scavalcare quel predefinito),
poi controlla che ogni asserzione citata sia passata esattamente una volta. Asserzioni mancanti, saltate,
fallite o ambigue fanno fallire la verifica. Questo dimostra che quei test
citati sono passati, non che le loro asserzioni coprano semanticamente il rilievo. Le disposizioni
rifiutate restano giudizi registrati. Un round finale deve corrispondere all’HEAD corrente;
i rilievi marcati come corretti richiedono una revisione più nuova e un round di revisione. Modifiche non committate
di sorgente, test o configurazione del pacchetto centrale impediscono la verifica. Tieni la
configurazione locale non correlata ax-code.json fuori dai commit.
Per questo repository, vitest run --dir test/cli/tui conserva le esclusioni della corsia normale
mentre scandisce la directory della TUI. I runner di gruppo possono ancora selezionare file esatti con
AX_TEST_FILES; la selezione di directory non disattiva le esclusioni.