Riferimento della configurazione
Ogni chiave di emet.config.json, con il suo valore predefinito e il suo significato. La fonte di verità è emet/schema/emet.config.schema.json. I termini seguono GLOSSARY.md. Torna al README.
emet init scrive il file. emet preflight e emet doctor lo validano. Una chiave contrassegnata come prose-only è letta dai prompt di /emet, non dalla CLI. Una chiave contrassegnata come deprecated è ancora accettata. Lo schema consente inoltre una chiave di testo libero "//" per le note (mai letta da alcuno strumento) e "version", che è sempre 1.
pr
Come viene unita la PR di un’ondata.
{ "pr": { "autoMerge": true, "mergeMethod": "squash", "maxCiFixAttempts": 2 } }autoMerge(predefinitotrue): attende i controlli della PR e la unisce; senza controlli, la unisce subito. Un controllo fallito viene corretto e inviato, fino amaxCiFixAttemptsvolte, poi la PR resta aperta per una persona. Un’ondata con qualcosa di segnalato non viene mai unita automaticamente.mergeMethod(predefinitosquash):squash,mergeorebase, passato agh pr merge.maxCiFixAttempts(predefinito2, minimo0): quante volte il coordinatore può tentare di correggere un controllo fallito prima di lasciare la PR aperta per una persona.
handoff
Cosa accade dopo la chiusura di un’ondata e i limiti di dimensione della nota di handoff di un worker. Validato da emet preflight.
{ "handoff": { "autoChain": false, "launcher": "auto", "permissionMode": "bypassPermissions" }}-
maxLines(predefinito60): numero massimo di righe che una nota.emet/handoff-<ticket>.mdpuò avere prima cheemet handoff --checkla respinga. -
maxChars(predefinito8000, circa 2k token): numero massimo di caratteri di una nota di handoff. -
autoChain(predefinitofalse): dopo un’ondata pulita e unita, con altre ondate ancora da fare, avvia la successiva conclaude --bginvece di stampare/emet:run --dispatch <spec-id>. Si ispeziona conclaude agentsoclaude attach emet-<spec-id>-w<n>. Requisiti:claudenel PATH, con supporto a--bg.- Un workspace fidato.
--bggira in modo non interattivo, quindi la finestra di fiducia non compare mai; apriclaudein modo interattivo nel repo una volta e accettala. - L’avviso di bypass accettato una volta in una sessione interattiva (
skipDangerousModePermissionPrompt), dato che l’ondata successiva gira nelhandoff.permissionMode, non nella modalità della sessione che la avvia.
L’avvio avviene solo se la PR è stata unita e nulla era segnalato, e viene saltato se una sessione
emet-<spec-id>-*è già attiva (claude agents --json). Se l’avvio fallisce, ripiega sulla stampa di/emet:run --dispatch <spec-id>. -
launcher(predefinitoauto, uno traauto,orca,bg): apre anche l’ondata in una scheda di Orca che esegueclaude attach.autointerroga il runtime di Orca (orca status), quindi funziona anche da sessioniclaude --bg, che non hannoTERM_PROGRAM;orcaci prova sempre;bgmai. L’ondata gira comunque in background, e una scheda che non si apre non ferma mai la catena.emet launch <spec-id> --wave <n>esegue l’intero avvio; vediemet launch. -
permissionMode(predefinitobypassPermissions, uno trabypassPermissions,auto,acceptEdits): modalità di permesso della sessione concatenata. Non è ereditata dalla sessione che la avvia, perché il classificatore della modalitàautopuò negare un passaggio comegh pr mergee lasciare un’ondata a metà. Le tue regolepermissions.denycontinuano ad applicarsi, ma l’avviso di bypass deve essere stato accettato una volta in modo interattivo (skipDangerousModePermissionPrompt).
budgets
Tutti facoltativi.
{ "budgets": { "workerAttempts": 2, "reviewRounds": 2, "stallNudgeCap": 6 } }workerAttempts(predefinito2, minimo1): quante volte un ticket può fallireverifyprima che il gate rispondadefer. Il ticket riceve l’etichetta deferred e il resto dell’ondata prosegue. Un guasto ambientale, come il comando di test che esce con 126/127 o un’interruzione del provider, mette in pausa l’esecuzione senza consumare un tentativo.reviewRounds(predefinito2, minimo1): quanti round di review/correzione riceve un ticket prima di una sola escalation al livello di modello successivo. Ciò che resta aperto dopo riceve una decisione.stallNudgeCap(predefinito6, minimo1): quante volte un worker bloccato viene sollecitato. Il conteggio non si azzera mai.
models
Modello e impegno per ruolo. Ogni chiave è facoltativa; omettendo la sezione restano worker sonnet/medium e reviewer opus/medium. L’impegno è uno tra low, medium, high, xhigh, max.
{ "models": { "worker": { "model": "sonnet", "effort": "medium" }, "reviewer": { "medium": { "model": "opus", "effort": "medium" }, "high": { "model": "opus", "effort": "medium" } }, "triage": "haiku" }}worker.model(predefinitosonnet),worker.effort(predefinitomedium): il worker. La rigaModel:di un ticket sostituisceworkersolo per quel worker.reviewer.mediumereviewer.high(predefinitiopus,mediumciascuno): il reviewer per ogni livello di rischio restituito daemet assess. Alzareviewer.high.effort(per esempio ahigh) per maggiore attenzione sulle ondate rischiose.triage(predefinitohaiku): il modello economico per il triage dei log di CI e per la review di livello passive. Un controllo fallito viene passato a un agente su questo modello, che restituisce al massimo circa 2k token con riferimentifile:line.escalation(predefinito{ "sonnet": "opus" }): il livello di modello successivo per ogni nome di modello, usato quando un ticket raggiunge il suo limite di correzioni.
review
{ "review": { "highRiskPaths": [] } }highRiskPaths(predefinito[]): sottostringhe di percorso aggiuntive, senza distinzione tra maiuscole e minuscole, che impongono il livello di reviewhighinemet assess, oltre all’insieme integrato (autenticazione, sicurezza, pagamenti, webhook, CI, l’installer, lockfile, migrazioni e sink pericolosi come SQL grezzo o pipe-to-shell).
landing
mode(predefinitopr):prapre una pull request (richiedegh).mergeunisce il branch di integrazione nel trunk locale conemet lande non fa mai push, concommands.selfCheckal posto della CI. Indipendente dal tracker. Vedi ADR-0010.
tracker
Con quale issue tracker parla /emet. La CLI legge kind per decidere quali controlli sulle dipendenze si applicano; il resto documenta l’adattatore seguito dal comando /emet (vedi docs/agents/issue-tracker.md).
kind(obbligatorio):linear,githubolocal. Perlocal, vedi Tracker locale e ADR-0011.transitions.onStart,transitions.onPrOpen,transitions.onPrMerge: chi scrive ogni transizione di stato del ticket:worker,coordinatoroautomatic(lo fa l’integrazione del tracker, per esempio l’integrazione GitHub di Linear all’apertura o al merge di una PR). Il coordinatore non scrive mai una transizione contrassegnata comeautomatic.github.priorityLabels: associa un livello di priorità ("1"= P0 la più alta fino a"4"= P3) al nome di un’etichetta GitHub, per esempio{"1":"P0","2":"P1"}. Se non ne è dichiarata nessuna, i ticket sono ordinati percreatedAtcrescente eemet doctorlo segnala.github.stateLabels: associa uno stato del workflow (todo,in-progress,in-review) al nome di un’etichetta GitHub, per esempio{"todo":"status:todo"}.doneecanceledsono dedotti dallo stato chiuso dell’issue e dastate_reason.linear: impostazioni specifiche di Linear (chiave del team, nomi degli stati del workflow). Lette solo dal modello che seguedocs/agents/issue-tracker.md, mai dalla CLI.local.idPrefix(deprecated): gli id dei ticket locali sono ora<feature-slug>-<NN>.readyLabel,triageLabels,prReference(deprecated): modelli di etichette e di riferimenti alle PR, per esempioCloses #{number}(github) oRefs: {id}(linear).
preflight
requiredFiles(predefinito nessuno): file cheemet preflightrichiede nella radice del repo prima che un’ondata venga inviata, ciascuno{ "path", "why" };whycompare nel messaggio di errore. Vuoto significa che il controllo non viene eseguito.requiredCommands(predefinito nessuno): binari che devono risolversi nel PATH prima del dispatch.emet preflightfallisce con uscita 1 indicando quelli che non si risolvono, eemet doctorli segnala. È l’elenco proprio del repo, separato dai controlli sulle dipendenze guidati dal tracker;ghha già un controllo dedicato, quindi elencarlo è facoltativo. Aggiunte comuni:rgesg.
specs
dir(predefinitodocs/specs): directory relativa al repo delle spec vive, scritte daemet spec-merge.
map
path(predefinitodocs/agents/codebase.md): percorso relativo al repo della mappa generata daemet map.
concurrency
waveSize(predefinito4, minimo1): numero massimo di chiamate Agent inviate insieme in un’ondata.maxLiveWorkers(predefinitoauto): limite globale condiviso da ogni coordinatore/emetin esecuzione su questo host, in ogni repo. Il pool di slot sta sotto~/.local/state/emet/slots, non in un singolo repo.autoricava il limite dal numero di CPU e dalla RAM dell’host; un intero positivo lo fissa. Un controllo separato del margine di memoria (EMET_MEM_RESERVE_GIB, predefinito 8 GiB) nega un acquire quando la memoria disponibile è troppo bassa, a prescindere da questo limite. La variabile d’ambienteEMET_MAX_LIVE_WORKERSsostituisce questo campo e accetta anch’essaauto.runIdleThresholdMs(predefinito5400000, 90 minuti): per quanto tempo un’esecuzione senza ancora attiva viene ancora classificata come inattiva anziché morta, in base alla sola freschezza della trascrizione. La variabile d’ambienteEMET_RUN_IDLE_THRESHOLD_MSla sostituisce.
Vedi Variabili d’ambiente.
ticket
idPattern: sorgente di una regex ancorata a cui deve corrispondere l’id di un ticket, per esempio^PROJ-\d+$. Un pattern non valido è un errore di configurazione grave.branchPrefix: prefisso in minuscolo (^[a-z0-9-]+$) per il branch locale di un worker. I branch sono<branchPrefix>-<number>-<slug>, ecleanupscansiona il glob<branchPrefix>-*.idExample(deprecated, prose-only): un id di esempio che corrisponde aidPattern.branchPattern(deprecated, prose-only): modello completo del nome del branch.
commands
Tutti prose-only.
selfCheck: comandi che un worker esegue prima di considerare finita la sua modifica, per esempio["npm run check"]. Conlanding.modemergesostituisce la CI.workerScopedSuite: comando che un worker esegue per testare solo l’area toccata.emet verifyne richiede il superamento.fullSuite.run: comando per la suite dell’intero repo, eseguito una volta sul branch di integrazione dopo l’unione dei branch di un’ondata. Un’esecuzione rossa blocca la PR eautoChain.fullSuite.singleton:truese solo un worktree alla volta può eseguire la suite.fullSuite.runInBackground,fullSuite.reset(deprecated): flag per l’esecuzione in background e comandi di ripristino dello stato.
worktree
lockReason: modello per il motivo delgit worktree lockche un worker scrive al bootstrap, compilato daemet lock-reason. Il valore predefinito èemet run={runId} ticket={ticket} anchor={anchorPid} slug={coordinatorSlug} at={iso}. Sostituiscilo solo per aggiungere campi:emet lock-reasonrifiuta un modello che elimina il token letteraleemetoppure uno trarun=,ticket=,anchor=,at=oslug=.copyFromMain(prose-only): percorsi copiati dal checkout del trunk in un worktree nuovo prima del bootstrap, per esempio file env non tracciati.bootstrap(prose-only): comandi di shell eseguiti una volta in un worktree nuovo prima dell’avvio di un worker, per esempio["npm ci"]. Eseguiti dalla fase 6 di/emet, mai dalla CLI.stateDir(deprecated, prose-only): directory per i log locali dell’esecuzione, per esempio.emet.
usage
oversizedReadLines(predefinito400, minimo1): una Read senza offset né limite su un file con più di questo numero di righe conta come sovradimensionata inemet usage.stalledMinutes(predefinito10, minimo1): soglia predefinita di--minutesperemet usage --stalled.
sizing
inlineMaxLines(predefinito100, minimo1): il corpo di ticket più grande, in righe, mantenuto inline nel prompt di un worker.
schema
Prose-only. La proprietà degli schemi di dati di questo repo, usata dalla regola di prevenzione dei conflitti della fase 3 quando si dividono i ticket. Vuoto od omesso salta la regola.
ownedPaths: percorsi che definiscono lo schema condiviso, per esempio["prisma/schema.prisma"]. Al massimo un worker per ondata può toccarli.sharedDatabase(deprecated):truese i worker condividono un unico database fisico.
commit
Prose-only.
trailer: chiave del trailer git che un worker aggiunge ai commit che fanno riferimento al ticket, per esempioRefs.trailerPosition:bodyofooter.
repo
trunk: il branch verso cui confluiscono le modifiche di ogni worker e la base di ogni confronto git di cleanup e preflight, per esempiomain.remote(predefinitoorigin): il remote git su cui risiedetrunk.integrationBranch(deprecated, prose-only): branch facoltativo di lunga durata su cui un’ondata si integra prima del trunk.commitTypes(deprecated, prose-only): tipi di Conventional Commit consentiti per i commit dei worker.
design
Facoltativo, prose-only. null od omesso salta il passaggio di review di design/UI.
canvasIndex(deprecated): percorso di un file canvas di design che i worker controllano prima delle modifiche all’interfaccia.