Konfigurationsreferenz
Jeder Schlüssel in emet.config.json mit Standardwert und Bedeutung. Die maßgebliche Quelle ist emet/schema/emet.config.schema.json. Die Begriffe folgen GLOSSARY.md. Zurück zur README.
emet init schreibt die Datei. emet preflight und emet doctor validieren sie. Ein als prose-only gekennzeichneter Schlüssel wird von den /emet-Prompts gelesen, nicht von der CLI. Ein als deprecated gekennzeichneter Schlüssel wird weiterhin akzeptiert. Das Schema erlaubt außerdem einen freien Text-Schlüssel "//" für Notizen (von keinem Tool gelesen) und "version", der immer 1 ist.
pr
Wie der PR einer Welle gemergt wird.
{ "pr": { "autoMerge": true, "mergeMethod": "squash", "maxCiFixAttempts": 2 } }autoMerge(Standardtrue): auf die Prüfungen des PR warten und mergen; ohne Prüfungen sofort mergen. Eine fehlgeschlagene Prüfung wird korrigiert und gepusht, bis zumaxCiFixAttempts-mal, danach bleibt der PR für einen Menschen offen. Eine Welle mit irgendeiner Markierung wird nie automatisch gemergt.mergeMethod(Standardsquash):squash,mergeoderrebase, angh pr mergeübergeben.maxCiFixAttempts(Standard2, Minimum0): wie oft der Koordinator versuchen darf, eine fehlgeschlagene Prüfung zu beheben, bevor er den PR für einen Menschen offen lässt.
handoff
Was geschieht, nachdem eine Welle abgeschlossen ist, und die Größenlimits der Handoff-Notiz eines Workers. Von emet preflight validiert.
{ "handoff": { "autoChain": false, "launcher": "auto", "permissionMode": "bypassPermissions" }}-
maxLines(Standard60): die höchste Zeilenzahl, die eine Notiz.emet/handoff-<ticket>.mdhaben darf, bevoremet handoff --checksie ablehnt. -
maxChars(Standard8000, etwa 2k Tokens): die höchste Zeichenzahl einer Handoff-Notiz. -
autoChain(Standardfalse): Nach einer sauberen, gemergten Welle mit weiteren offenen Wellen die nächste mitclaude --bgstarten, statt/emet:run --dispatch <spec-id>auszugeben. Mitclaude agentsoderclaude attach emet-<spec-id>-w<n>einsehbar. Voraussetzungen:claudeim PATH, mit--bg-Unterstützung.- Ein vertrauenswürdiger Arbeitsbereich.
--bgläuft nicht interaktiv, daher erscheint der Vertrauensdialog nie;claudeeinmal interaktiv im Repo öffnen und bestätigen. - Die Bypass-Warnung einmal in einer interaktiven Sitzung akzeptiert (
skipDangerousModePermissionPrompt), da die nächste Welle imhandoff.permissionModeläuft, nicht im Modus der startenden Sitzung.
Der Start erfolgt nur, wenn der PR gemergt wurde und nichts markiert war, und wird übersprungen, wenn bereits eine Sitzung
emet-<spec-id>-*läuft (claude agents --json). Schlägt der Start fehl, wird stattdessen/emet:run --dispatch <spec-id>ausgegeben. -
launcher(Standardauto, eines vonauto,orca,bg): die Welle zusätzlich in einem Orca-Tab öffnen, derclaude attachausführt.autofragt die Orca-Runtime (orca status) und funktioniert daher auch ausclaude --bg-Sitzungen, die keinTERM_PROGRAMhaben;orcaversucht es immer;bgnie. Die Welle läuft in beiden Fällen im Hintergrund, und ein Tab, der sich nicht öffnen lässt, stoppt die Kette nie.emet launch <spec-id> --wave <n>erledigt den gesamten Start; sieheemet launch. -
permissionMode(StandardbypassPermissions, eines vonbypassPermissions,auto,acceptEdits): Berechtigungsmodus der verketteten Sitzung. Er wird nicht von der startenden Sitzung geerbt, weil der Klassifikator des Modusautoeinen Schritt wiegh pr mergeablehnen und eine Welle halb fertig zurücklassen kann. Deinepermissions.deny-Regeln gelten weiterhin, aber die Bypass-Warnung muss einmal interaktiv akzeptiert worden sein (skipDangerousModePermissionPrompt).
budgets
Alle optional.
{ "budgets": { "workerAttempts": 2, "reviewRounds": 2, "stallNudgeCap": 6 } }workerAttempts(Standard2, Minimum1): Wie oft ein Ticketverifynicht bestehen darf, bevor das Gate mitdeferantwortet. Das Ticket erhält das Label deferred, und der Rest der Welle läuft weiter. Ein Umgebungsfehler, etwa ein Testbefehl, der mit 126/127 endet, oder ein Anbieterausfall, pausiert den Lauf, ohne einen Versuch zu verbrauchen.reviewRounds(Standard2, Minimum1): Wie viele Review-/Fix-Runden ein Ticket erhält, bevor einmal auf die nächste Modellstufe eskaliert wird. Was danach noch offen ist, bekommt eine Entscheidung.stallNudgeCap(Standard6, Minimum1): Wie oft ein festgefahrener Worker angestoßen wird. Der Zähler wird nie zurückgesetzt.
models
Modell und Aufwand pro Rolle. Jeder Schlüssel ist optional; wird der Abschnitt weggelassen, bleiben Worker sonnet/medium und Reviewer opus/medium. Der Aufwand ist einer von 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(Standardsonnet),worker.effort(Standardmedium): der Worker. EineModel:-Zeile eines Tickets überschreibtworkernur für diesen Worker.reviewer.mediumundreviewer.high(Standard jeweilsopus,medium): der Reviewer für jede vonemet assesszurückgegebene Risikostufe.reviewer.high.efforterhöhen (zum Beispiel aufhigh) für mehr Sorgfalt bei riskanten Wellen.triage(Standardhaiku): das günstige Modell für die CI-Log-Triage und das Review der Stufe passive. Eine fehlgeschlagene Prüfung geht an einen Agent mit diesem Modell, der höchstens etwa 2k Tokens mitfile:line-Verweisen zurückgibt.escalation(Standard{ "sonnet": "opus" }): die nächste Modellstufe pro Modellname, verwendet, wenn ein Ticket sein Korrekturlimit erreicht.
review
{ "review": { "highRiskPaths": [] } }highRiskPaths(Standard[]): zusätzliche, nicht zwischen Groß- und Kleinschreibung unterscheidende Pfad-Teilstrings, die inemet assessdie Review-Stufehigherzwingen, zusätzlich zum eingebauten Satz (Authentifizierung, Sicherheit, Zahlungen, Webhooks, CI, der Installer, Lockfiles, Migrationen und gefährliche Senken wie rohes SQL oder Pipe-to-Shell).
landing
mode(Standardpr):pröffnet einen Pull Request (erfordertgh).mergemergt den Integrationsbranch mitemet landin den lokalen Trunk und pusht nie, wobeicommands.selfCheckdie CI ersetzt. Unabhängig vom Tracker. Siehe ADR-0010.
tracker
Mit welchem Issue-Tracker /emet spricht. Die CLI liest kind, um zu entscheiden, welche Abhängigkeitsprüfungen gelten; der Rest dokumentiert den Adapter, dem der Befehl /emet folgt (siehe docs/agents/issue-tracker.md).
kind(erforderlich):linear,githuboderlocal. Fürlocalsiehe Lokaler Tracker und ADR-0011.transitions.onStart,transitions.onPrOpen,transitions.onPrMerge: wer jeden Ticket-Statusübergang schreibt:worker,coordinatoroderautomatic(die Tracker-Integration übernimmt das, zum Beispiel die GitHub-Integration von Linear beim Öffnen oder Mergen eines PR). Der Koordinator schreibt nie einen alsautomaticgekennzeichneten Übergang.github.priorityLabels: ordnet eine Prioritätsstufe ("1"= P0 höchste bis"4"= P3) einem GitHub-Label-Namen zu, zum Beispiel{"1":"P0","2":"P1"}. Ohne Angabe werden Tickets aufsteigend nachcreatedAtsortiert, undemet doctorweist darauf hin.github.stateLabels: ordnet einen Workflow-Status (todo,in-progress,in-review) einem GitHub-Label-Namen zu, zum Beispiel{"todo":"status:todo"}.doneundcanceledwerden aus dem geschlossenen Zustand und demstate_reasondes Issues abgeleitet.linear: Linear-spezifische Einstellungen (Team-Schlüssel, Namen der Workflow-Status). Wird nur vom Modell gelesen, dasdocs/agents/issue-tracker.mdfolgt, nie von der CLI.local.idPrefix(deprecated): lokale Ticket-IDs lauten jetzt<feature-slug>-<NN>.readyLabel,triageLabels,prReference(deprecated): Vorlagen für Labels und PR-Verweise, zum BeispielCloses #{number}(github) oderRefs: {id}(linear).
preflight
requiredFiles(Standard keine): Dateien, dieemet preflightim Repo-Stamm verlangt, bevor eine Welle dispatcht wird, jeweils{ "path", "why" };whyerscheint in der Fehlermeldung. Leer bedeutet, dass die Prüfung nicht läuft.requiredCommands(Standard keine): Binärdateien, die vor dem Dispatch im PATH auflösbar sein müssen.emet preflightscheitert mit Exit-Code 1 und nennt jede nicht auflösbare, undemet doctormeldet sie. Das ist die repo-eigene Liste, getrennt von den trackergesteuerten Abhängigkeitsprüfungen;ghhat bereits eine eigene Prüfung, die Aufnahme ist also optional. Häufige Ergänzungen:rgundsg.
specs
dir(Standarddocs/specs): repo-relatives Verzeichnis der lebenden Specs, geschrieben vonemet spec-merge.
map
path(Standarddocs/agents/codebase.md): repo-relativer Pfad der vonemet maperzeugten Karte.
concurrency
waveSize(Standard4, Minimum1): die meisten gemeinsam in einer Welle dispatchten Agent-Aufrufe.maxLiveWorkers(Standardauto): globale Obergrenze, die sich alle auf diesem Host laufenden/emet-Koordinatoren über alle Repos hinweg teilen. Der Slot-Pool liegt unter~/.local/state/emet/slots, nicht in einem einzelnen Repo.autoleitet die Obergrenze aus CPU-Anzahl und RAM des Hosts ab; eine positive ganze Zahl legt sie fest. Eine separate Speicherreserve-Prüfung (EMET_MEM_RESERVE_GIB, Standard 8 GiB) lehnt einen Acquire ab, wenn der verfügbare Speicher zu gering ist, unabhängig von dieser Obergrenze. Die UmgebungsvariableEMET_MAX_LIVE_WORKERSüberschreibt dieses Feld und akzeptiert ebenfallsauto.runIdleThresholdMs(Standard5400000, 90 Minuten): wie lange ein Lauf ohne lebenden Anker allein anhand der Aktualität des Transkripts noch als untätig statt als tot eingestuft wird. Die UmgebungsvariableEMET_RUN_IDLE_THRESHOLD_MSüberschreibt ihn.
Siehe Umgebungsvariablen.
ticket
idPattern: verankerter Regex-Quelltext, dem eine Ticket-ID entsprechen muss, zum Beispiel^PROJ-\d+$. Ein ungültiges Muster ist ein harter Konfigurationsfehler.branchPrefix: Präfix in Kleinbuchstaben (^[a-z0-9-]+$) für den lokalen Branch eines Workers. Branches heißen<branchPrefix>-<number>-<slug>, undcleanupdurchsucht das Glob<branchPrefix>-*.idExample(deprecated, prose-only): eine Beispiel-ID, die zuidPatternpasst.branchPattern(deprecated, prose-only): vollständige Vorlage für Branch-Namen.
commands
Alle prose-only.
selfCheck: Befehle, die ein Worker ausführt, bevor er seine Änderung als fertig betrachtet, zum Beispiel["npm run check"]. Unterlanding.modemergeersetzt er die CI.workerScopedSuite: Befehl, mit dem ein Worker nur den berührten Bereich testet.emet verifyverlangt, dass er besteht.fullSuite.run: Befehl für die repoweite Suite, einmal auf dem Integrationsbranch ausgeführt, nachdem die Branches einer Welle gemergt wurden. Ein roter Lauf blockiert den PR undautoChain.fullSuite.singleton:true, wenn nur ein Worktree die Suite gleichzeitig ausführen darf.fullSuite.runInBackground,fullSuite.reset(deprecated): Hintergrund-Flag und Befehle zum Zurücksetzen des Zustands.
worktree
lockReason: Vorlage für dengit worktree lock-Grund, den ein Worker beim Bootstrap schreibt, vonemet lock-reasonausgefüllt. Der Standard istemet run={runId} ticket={ticket} anchor={anchorPid} slug={coordinatorSlug} at={iso}. Nur überschreiben, um Felder hinzuzufügen:emet lock-reasonlehnt eine Vorlage ab, der das Literalemetoder eines vonrun=,ticket=,anchor=,at=oderslug=fehlt.copyFromMain(prose-only): Pfade, die vor dem Bootstrap aus dem Trunk-Checkout in einen frischen Worktree kopiert werden, zum Beispiel nicht versionierte Env-Dateien.bootstrap(prose-only): Shell-Befehle, die einmal in einem frischen Worktree ausgeführt werden, bevor ein Worker startet, zum Beispiel["npm ci"]. Ausgeführt von/emetPhase 6, nie von der CLI.stateDir(deprecated, prose-only): Verzeichnis für lauflokale Logs, zum Beispiel.emet.
usage
oversizedReadLines(Standard400, Minimum1): Ein Read ohne Offset oder Limit auf eine Datei mit mehr Zeilen als diesem Wert gilt inemet usageals überdimensioniert.stalledMinutes(Standard10, Minimum1): Standardschwelle für--minutesbeiemet usage --stalled.
sizing
inlineMaxLines(Standard100, Minimum1): der größte Ticket-Text, in Zeilen, der inline in einem Worker-Prompt bleibt.
schema
Prose-only. Die Zuständigkeit dieses Repos für Datenschemata, verwendet von der Konfliktvermeidungsregel in Phase 3 beim Aufteilen von Tickets. Leer oder weggelassen überspringt die Regel.
ownedPaths: Pfade, die ein gemeinsames Schema definieren, zum Beispiel["prisma/schema.prisma"]. Höchstens ein Worker pro Welle darf sie berühren.sharedDatabase(deprecated):true, wenn Worker eine physische Datenbank teilen.
commit
Prose-only.
trailer: Git-Trailer-Schlüssel, den ein Worker an Commits anhängt, die das Ticket referenzieren, zum BeispielRefs.trailerPosition:bodyoderfooter.
repo
trunk: der Branch, in den die Änderungen jedes Workers gemergt werden und der die Basis jedes Git-Vergleichs bei cleanup und preflight ist, zum Beispielmain.remote(Standardorigin): das Git-Remote, auf demtrunkliegt.integrationBranch(deprecated, prose-only): optionaler langlebiger Branch, auf dem eine Welle vor dem Trunk integriert wird.commitTypes(deprecated, prose-only): erlaubte Conventional-Commit-Typen für Worker-Commits.
design
Optional, prose-only. null oder weggelassen überspringt den Design-/UI-Review-Schritt.
canvasIndex(deprecated): Pfad zu einer Design-Canvas-Datei, die Worker vor UI-Änderungen prüfen.