Referência de configuração
Cada chave do emet.config.json, com seu valor padrão e seu significado. A fonte da verdade é emet/schema/emet.config.schema.json. Os termos seguem o GLOSSARY.md. Voltar ao README.
O emet init escreve o arquivo. O emet preflight e o emet doctor o validam. Uma chave marcada como somente prosa é lida pelos prompts do /emet, não pela CLI. Uma chave marcada como obsoleta ainda é aceita. O schema também permite uma chave de texto livre "//" para notas (nunca lida por nenhuma ferramenta) e "version", que é sempre 1.
pr
Como o PR de uma onda é mesclado.
{ "pr": { "autoMerge": true, "mergeMethod": "squash", "maxCiFixAttempts": 2 } }autoMerge(padrãotrue): espera os checks do PR e faz o merge; sem checks, faz o merge na hora. Um check que falha é corrigido e enviado, atémaxCiFixAttemptsvezes, e depois o PR é deixado aberto para uma pessoa. Uma onda com qualquer coisa sinalizada nunca recebe merge automático.mergeMethod(padrãosquash):squash,mergeourebase, repassado aogh pr merge.maxCiFixAttempts(padrão2, mínimo0): quantas vezes o coordenador pode tentar corrigir um check que falha antes de deixar o PR aberto para uma pessoa.
handoff
O que acontece depois que uma onda se fecha, e os limites de tamanho da nota de handoff de um worker. Validado pelo emet preflight.
{ "handoff": { "autoChain": false, "launcher": "auto", "permissionMode": "bypassPermissions" }}-
maxLines(padrão60): máximo de linhas que uma nota.emet/handoff-<ticket>.mdpode ter antes de oemet handoff --checkreprová-la. -
maxChars(padrão8000, cerca de 2k tokens): máximo de caracteres que uma nota de handoff pode ter. -
autoChain(padrãofalse): depois de uma onda limpa e mesclada, com mais ondas pendentes, lança a próxima comclaude --bgem vez de imprimir/emet:run --dispatch <spec-id>. Inspecione-a comclaude agentsouclaude attach emet-<spec-id>-w<n>. Requisitos:claudeno PATH, com suporte a--bg.- Um workspace confiável. O
--bgroda de forma não interativa, então o diálogo de confiança nunca aparece; abra oclaudeinterativamente no repositório uma vez e aceite. - O aviso de bypass aceito uma vez em uma sessão interativa (
skipDangerousModePermissionPrompt), já que a próxima onda roda emhandoff.permissionMode, e não no modo da sessão que a lança.
Ela só é lançada quando o PR foi mesclado e nada foi sinalizado, e é ignorada se já houver uma sessão
emet-<spec-id>-*ativa (claude agents --json). Se o lançamento falhar, recorre a imprimir/emet:run --dispatch <spec-id>. -
launcher(padrãoauto, um entreauto,orca,bg): abre também a onda em uma aba do Orca executandoclaude attach. Oautoconsulta o runtime do Orca (orca status), portanto funciona também a partir de sessõesclaude --bg, que não têmTERM_PROGRAM;orcasempre tenta;bgnunca. A onda roda em segundo plano de qualquer forma, e uma aba que falha ao abrir nunca interrompe a cadeia.emet launch <spec-id> --wave <n>faz o lançamento completo; vejaemet launch. -
permissionMode(padrãobypassPermissions, um entrebypassPermissions,auto,acceptEdits): modo de permissão da sessão encadeada. Não é herdado da sessão que a lança, porque o classificador do modoautopode negar um passo comogh pr mergee deixar uma onda pela metade. Suas regraspermissions.denycontinuam valendo, mas o aviso de bypass precisa ter sido aceito uma vez de forma interativa (skipDangerousModePermissionPrompt).
budgets
Todos opcionais.
{ "budgets": { "workerAttempts": 2, "reviewRounds": 2, "stallNudgeCap": 6 } }workerAttempts(padrão2, mínimo1): quantas vezes um ticket pode falhar noverifyantes de o gate responderdefer. O ticket recebe o rótulo de adiado e o restante da onda continua. Uma falha de ambiente, como o comando de testes terminar com 126/127 ou uma queda do provedor, pausa a execução sem gastar uma tentativa.reviewRounds(padrão2, mínimo1): quantas rodadas de revisão/correção um ticket recebe antes de uma escalada para o próximo nível de modelo. O que ainda estiver em aberto depois disso recebe um parecer.stallNudgeCap(padrão6, mínimo1): quantas vezes um worker travado é cutucado. A contagem nunca é reiniciada.
models
Modelo e esforço por papel. Todas as chaves são opcionais; omitir a seção mantém o worker em sonnet/medium e o revisor em opus/medium. O esforço é um entre 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(padrãosonnet),worker.effort(padrãomedium): o worker. A linhaModel:de um ticket substituiworkerapenas para aquele worker.reviewer.mediumereviewer.high(padrãoopus,mediumcada um): o revisor de cada nível de risco retornado peloemet assess. Aumentereviewer.high.effort(por exemplo parahigh) para mais rigor em ondas arriscadas.triage(padrãohaiku): o modelo econômico para a triagem de logs de CI e a revisão de nível passivo. Um check que falha é entregue a um agente nesse modelo, que devolve no máximo cerca de 2k tokens com ponteirosfile:line.escalation(padrão{ "sonnet": "opus" }): o próximo nível de modelo por nome de modelo, usado quando um ticket atinge seu limite de correções.
review
{ "review": { "highRiskPaths": [] } }highRiskPaths(padrão[]): trechos de caminho adicionais, sem diferenciar maiúsculas de minúsculas, que forçam o nível de revisãohighnoemet assess, além do conjunto embutido (autenticação, segurança, pagamentos, webhooks, CI, o instalador, lockfiles, migrações e pontos sensíveis perigosos, como SQL bruto ou pipe-to-shell).
landing
mode(padrãopr):prabre um pull request (requergh).mergemescla a branch de integração no tronco local comemet lande nunca faz push, comcommands.selfCheckno lugar da CI. Independente do tracker. Veja o ADR-0010.
tracker
Com qual issue tracker o /emet conversa. A CLI lê kind para decidir quais verificações de dependências se aplicam; o restante documenta o adaptador que o comando /emet segue (veja docs/agents/issue-tracker.md).
kind(obrigatório):linear,githuboulocal. Paralocal, veja Tracker local e o ADR-0011.transitions.onStart,transitions.onPrOpen,transitions.onPrMerge: quem escreve cada transição de estado do ticket:worker,coordinatorouautomatic(a integração do tracker faz isso, por exemplo a integração do Linear com o GitHub ao abrir ou mesclar um PR). O coordenador nunca escreve uma transição marcada comoautomatic.github.priorityLabels: mapeia um nível de prioridade ("1"= P0 a mais alta até"4"= P3) para um nome de rótulo do GitHub, por exemplo{"1":"P0","2":"P1"}. Sem nenhum declarado, os tickets são ordenados porcreatedAtascendente e oemet doctoravisa.github.stateLabels: mapeia um estado do fluxo de trabalho (todo,in-progress,in-review) para um nome de rótulo do GitHub, por exemplo{"todo":"status:todo"}.doneecanceledsão inferidos do estado fechado da issue e destate_reason.linear: configurações específicas do Linear (chave do time, nomes dos estados do fluxo). Lidas apenas pelo modelo que seguedocs/agents/issue-tracker.md, nunca pela CLI.local.idPrefix(obsoleto): os ids de tickets locais agora são<feature-slug>-<NN>.readyLabel,triageLabels,prReference(obsoletos): modelos de rótulos e de referência ao PR, por exemploCloses #{number}(github) ouRefs: {id}(linear).
preflight
requiredFiles(padrão nenhum): arquivos que oemet preflightexige na raiz do repositório antes de despachar uma onda, cada um{ "path", "why" };whyaparece na mensagem de falha. Vazio significa que a verificação não roda.requiredCommands(padrão nenhum): binários que precisam ser resolvidos no PATH antes do despacho. Oemet preflightfalha com código 1 nomeando os que não são, e oemet doctoros informa. É a lista do próprio repositório, separada das verificações de dependências guiadas pelo tracker; oghjá tem uma verificação dedicada, então listá-lo é opcional. Adições comuns:rgesg.
specs
dir(padrãodocs/specs): diretório, relativo ao repositório, das specs vivas, escrito poremet spec-merge.
map
path(padrãodocs/agents/codebase.md): caminho, relativo ao repositório, do mapa que oemet mapgera.
concurrency
waveSize(padrão4, mínimo1): máximo de chamadas ao Agent despachadas juntas em uma onda.maxLiveWorkers(padrãoauto): limite global compartilhado por todos os coordenadores/emetrodando neste host, em todos os repositórios. O pool de slots fica em~/.local/state/emet/slots, não em nenhum repositório específico. Oautoderiva o limite da contagem de CPUs e da RAM do host; um inteiro positivo o fixa. Uma verificação separada de folga de memória (EMET_MEM_RESERVE_GIB, padrão 8 GiB) nega uma aquisição quando a memória disponível é baixa demais, independentemente desse limite. A variável de ambienteEMET_MAX_LIVE_WORKERSsubstitui este campo e também aceitaauto.runIdleThresholdMs(padrão5400000, 90 minutos): por quanto tempo uma execução sem âncora viva ainda é classificada como ociosa em vez de morta, com base apenas na atualidade da transcrição. A variável de ambienteEMET_RUN_IDLE_THRESHOLD_MSa substitui.
Veja Variáveis de ambiente.
ticket
idPattern: fonte de uma regex ancorada que o id de um ticket deve cumprir, por exemplo^PROJ-\d+$. Um padrão inválido é um erro de configuração grave.branchPrefix: prefixo em minúsculas (^[a-z0-9-]+$) para a branch local de um worker. As branches são<branchPrefix>-<number>-<slug>, e ocleanupvarre o glob<branchPrefix>-*.idExample(obsoleto, somente prosa): um id de exemplo que cumpreidPattern.branchPattern(obsoleto, somente prosa): modelo completo do nome da branch.
commands
Todos somente prosa.
selfCheck: comandos que um worker executa antes de considerar sua mudança pronta, por exemplo["npm run check"]. Comlanding.modeemmerge, faz as vezes da CI.workerScopedSuite: comando que um worker executa para testar apenas a área que tocou. Oemet verifyexige que passe.fullSuite.run: comando da suíte de todo o repositório, executado uma vez na branch de integração depois que as branches de uma onda são mescladas. Uma execução vermelha bloqueia o PR e oautoChain.fullSuite.singleton:truese apenas um worktree pode executar a suíte por vez.fullSuite.runInBackground,fullSuite.reset(obsoletos): flag de segundo plano e comandos de redefinição de estado.
worktree
lockReason: modelo do motivo dogit worktree lockque um worker escreve no bootstrap, preenchido poremet lock-reason. O padrão éemet run={runId} ticket={ticket} anchor={anchorPid} slug={coordinatorSlug} at={iso}. Substitua somente para acrescentar campos: oemet lock-reasonrecusa um modelo que omita o token literalemet, ou qualquer um derun=,ticket=,anchor=,at=ouslug=.copyFromMain(somente prosa): caminhos copiados do checkout do tronco para um worktree novo antes do bootstrap, por exemplo arquivos de ambiente não versionados.bootstrap(somente prosa): comandos de shell executados uma vez em um worktree novo antes de um worker começar, por exemplo["npm ci"]. Executados pela fase 6 do/emet, nunca pela CLI.stateDir(obsoleto, somente prosa): diretório para os logs locais da execução, por exemplo.emet.
usage
oversizedReadLines(padrão400, mínimo1): um Read sem offset nem limite sobre um arquivo com mais do que essa quantidade de linhas conta como superdimensionado noemet usage.stalledMinutes(padrão10, mínimo1): limite--minutespadrão doemet usage --stalled.
sizing
inlineMaxLines(padrão100, mínimo1): o maior corpo de ticket, em linhas, mantido inline no prompt de um worker.
schema
Somente prosa. A propriedade do schema de dados deste repositório, usada pela regra de evitação de conflitos da fase 3 ao dividir tickets. Vazio ou omitido ignora a regra.
ownedPaths: caminhos que definem o schema compartilhado, por exemplo["prisma/schema.prisma"]. No máximo um worker por onda pode tocá-los.sharedDatabase(obsoleto):truese os workers compartilham um mesmo banco de dados físico.
commit
Somente prosa.
trailer: chave do trailer do git que um worker acrescenta aos commits que referenciam o ticket, por exemploRefs.trailerPosition:bodyoufooter.
repo
trunk: a branch para a qual as mudanças de todos os workers são mescladas, e a base de toda comparação de git de cleanup e preflight, por exemplomain.remote(padrãoorigin): o remoto do git em quetrunkestá.integrationBranch(obsoleto, somente prosa): branch opcional de longa duração na qual uma onda se integra antes do tronco.commitTypes(obsoleto, somente prosa): tipos de Conventional Commit permitidos para os commits dos workers.
design
Opcional, somente prosa. null ou omitido ignora a etapa de design/revisão de UI.
canvasIndex(obsoleto): caminho para um arquivo de canvas de design que os workers consultam antes de mudanças de UI.