[{"data":1,"prerenderedAt":471},["ShallowReactive",2],{"search-de":3,"content-de-developer\u002Fdecisions":4,"surround-de-\u002Fdeveloper\u002Fdecisions":463},[],{"id":5,"title":6,"body":7,"description":457,"extension":32,"meta":458,"navigation":80,"path":459,"seo":460,"stem":461,"__hash__":462},"content_de\u002F3.developer\u002Fdecisions\u002F1.index.md","Architecture Decision Records",{"type":8,"value":9,"toc":452},"minimark",[10,14,19,27,174,178,398,402,448],[11,12,13],"p",{},"Dieses Verzeichnis hält die wesentlichen Architekturentscheidungen des Owlat-Projekts fest. Jeder Eintrag erläutert den Kontext, die Entscheidung und die damit verbundenen Trade-offs.",[15,16,18],"h2",{"id":17},"format","Format",[11,20,21,22,26],{},"Wir verwenden ein leichtgewichtiges ADR-Format. Der Titel steht im YAML-Frontmatter (die Docs-Site rendert ihn als Seitenüberschrift), gefolgt von fett gesetzten Status-\u002FDatumsfeldern und drei ",[23,24,25],"code",{},"## ","-Abschnitten:",[28,29,34],"pre",{"className":30,"code":31,"language":32,"meta":33,"style":33},"language-md shiki shiki-themes github-light github-dark-dimmed","---\ntitle: \"ADR-NNN: Title\"\ndescription: \"One-sentence summary of what was decided and why.\"\n---\n\n- **Status:** Accepted | Superseded | Deprecated\n- **Date:** YYYY-MM-DD\n\n## Context\n\nWhat prompted this decision.\n\n## Decision\n\nWhat was decided.\n\n## Consequences\n\nTrade-offs, and what this enables or prevents.\n","md","",[23,35,36,45,59,70,75,82,96,107,112,119,124,130,135,141,146,152,157,163,168],{"__ignoreMap":33},[37,38,41],"span",{"class":39,"line":40},"line",1,[37,42,44],{"class":43},"sYgZi","---\n",[37,46,48,52,55],{"class":39,"line":47},2,[37,49,51],{"class":50},"sIAta","title",[37,53,54],{"class":43},": ",[37,56,58],{"class":57},"s-HuK","\"ADR-NNN: Title\"\n",[37,60,62,65,67],{"class":39,"line":61},3,[37,63,64],{"class":50},"description",[37,66,54],{"class":43},[37,68,69],{"class":57},"\"One-sentence summary of what was decided and why.\"\n",[37,71,73],{"class":39,"line":72},4,[37,74,44],{"class":43},[37,76,78],{"class":39,"line":77},5,[37,79,81],{"emptyLinePlaceholder":80},true,"\n",[37,83,85,89,93],{"class":39,"line":84},6,[37,86,88],{"class":87},"stnAF","-",[37,90,92],{"class":91},"s7oCu"," **Status:**",[37,94,95],{"class":43}," Accepted | Superseded | Deprecated\n",[37,97,99,101,104],{"class":39,"line":98},7,[37,100,88],{"class":87},[37,102,103],{"class":91}," **Date:**",[37,105,106],{"class":43}," YYYY-MM-DD\n",[37,108,110],{"class":39,"line":109},8,[37,111,81],{"emptyLinePlaceholder":80},[37,113,115],{"class":39,"line":114},9,[37,116,118],{"class":117},"sEXtn","## Context\n",[37,120,122],{"class":39,"line":121},10,[37,123,81],{"emptyLinePlaceholder":80},[37,125,127],{"class":39,"line":126},11,[37,128,129],{"class":43},"What prompted this decision.\n",[37,131,133],{"class":39,"line":132},12,[37,134,81],{"emptyLinePlaceholder":80},[37,136,138],{"class":39,"line":137},13,[37,139,140],{"class":117},"## Decision\n",[37,142,144],{"class":39,"line":143},14,[37,145,81],{"emptyLinePlaceholder":80},[37,147,149],{"class":39,"line":148},15,[37,150,151],{"class":43},"What was decided.\n",[37,153,155],{"class":39,"line":154},16,[37,156,81],{"emptyLinePlaceholder":80},[37,158,160],{"class":39,"line":159},17,[37,161,162],{"class":117},"## Consequences\n",[37,164,166],{"class":39,"line":165},18,[37,167,81],{"emptyLinePlaceholder":80},[37,169,171],{"class":39,"line":170},19,[37,172,173],{"class":43},"Trade-offs, and what this enables or prevents.\n",[15,175,177],{"id":176},"entscheidungen","Entscheidungen",[179,180,181,197],"table",{},[182,183,184],"thead",{},[185,186,187,191,194],"tr",{},[188,189,190],"th",{},"ADR",[188,192,193],{},"Titel",[188,195,196],{},"Status",[198,199,200,216,229,242,255,268,281,294,307,320,333,346,359,372,385],"tbody",{},[185,201,202,210,213],{},[203,204,205],"td",{},[206,207,209],"a",{"href":208},"\u002Fdeveloper\u002Fdecisions\u002F001-custom-email-renderer","001",[203,211,212],{},"Eigener E-Mail-Renderer statt MJML",[203,214,215],{},"Angenommen",[185,217,218,224,227],{},[203,219,220],{},[206,221,223],{"href":222},"\u002Fdeveloper\u002Fdecisions\u002F002-convex-backend","002",[203,225,226],{},"Convex als Backend",[203,228,215],{},[185,230,231,237,240],{},[203,232,233],{},[206,234,236],{"href":235},"\u002Fdeveloper\u002Fdecisions\u002F003-notion-like-builder","003",[203,238,239],{},"Notion-artiger E-Mail-Builder",[203,241,215],{},[185,243,244,250,253],{},[203,245,246],{},[206,247,249],{"href":248},"\u002Fdeveloper\u002Fdecisions\u002F004-monorepo-bun-workspaces","004",[203,251,252],{},"Monorepo mit Bun-Workspaces",[203,254,215],{},[185,256,257,263,266],{},[203,258,259],{},[206,260,262],{"href":261},"\u002Fdeveloper\u002Fdecisions\u002F005-custom-mta","005",[203,264,265],{},"Eigener MTA",[203,267,215],{},[185,269,270,276,279],{},[203,271,272],{},[206,273,275],{"href":274},"\u002Fdeveloper\u002Fdecisions\u002F006-self-hosted-convex","006",[203,277,278],{},"Selbstgehostetes Convex",[203,280,215],{},[185,282,283,289,292],{},[203,284,285],{},[206,286,288],{"href":287},"\u002Fdeveloper\u002Fdecisions\u002F007-pluggable-llm","007",[203,290,291],{},"Austauschbarer LLM-Provider",[203,293,215],{},[185,295,296,302,305],{},[203,297,298],{},[206,299,301],{"href":300},"\u002Fdeveloper\u002Fdecisions\u002F008-process-architecture","008",[203,303,304],{},"Prozessarchitektur der Agenten",[203,306,215],{},[185,308,309,315,318],{},[203,310,311],{},[206,312,314],{"href":313},"\u002Fdeveloper\u002Fdecisions\u002F009-model-routing","009",[203,316,317],{},"Aufgabenbasiertes Modell-Routing",[203,319,215],{},[185,321,322,328,331],{},[203,323,324],{},[206,325,327],{"href":326},"\u002Fdeveloper\u002Fdecisions\u002F010-listing-engine","010",[203,329,330],{},"Listing-Engine",[203,332,215],{},[185,334,335,341,344],{},[203,336,337],{},[206,338,340],{"href":339},"\u002Fdeveloper\u002Fdecisions\u002F049-plugin-platform-contract","049",[203,342,343],{},"Plugin-Plattformvertrag",[203,345,215],{},[185,347,348,354,357],{},[203,349,350],{},[206,351,353],{"href":352},"\u002Fdeveloper\u002Fdecisions\u002F050-draft-strategy-registry","050",[203,355,356],{},"Host-eigene Registry für Entwurfsstrategien",[203,358,215],{},[185,360,361,367,370],{},[203,362,363],{},[206,364,366],{"href":365},"\u002Fdeveloper\u002Fdecisions\u002F051-ordered-autonomy-gates","051",[203,368,369],{},"Geordnete, ausschließlich einschränkende Autonomie-Gates",[203,371,215],{},[185,373,374,380,383],{},[203,375,376],{},[206,377,379],{"href":378},"\u002Fdeveloper\u002Fdecisions\u002F052-connected-apps-and-signed-hooks","052",[203,381,382],{},"Connected Apps und signierte Hooks",[203,384,215],{},[185,386,387,393,396],{},[203,388,389],{},[206,390,392],{"href":391},"\u002Fdeveloper\u002Fdecisions\u002F053-sandboxed-plugin-jobs","053",[203,394,395],{},"Sandboxed Plugin-Jobs",[203,397,215],{},[15,399,401],{"id":400},"einen-neuen-adr-hinzufügen","Einen neuen ADR hinzufügen",[403,404,405,429,442,445],"ol",{},[406,407,408,409,412,413,416,417,420,421,424,425,428],"li",{},"Legen Sie eine neue Datei mit dem Namen ",[23,410,411],{},"\u003Corder>.NNN-short-title.md"," an, wobei ",[23,414,415],{},"\u003Corder>"," das Nuxt-Content-Sortierpräfix ist, das die Position in der Seitenleiste steuert, und ",[23,418,419],{},"NNN"," die nächste freie ADR-Nummer. Die neueste Datei ist ",[23,422,423],{},"11.010-listing-engine.md",", die nächste wäre also ",[23,426,427],{},"12.011-short-title.md",".",[406,430,431,432,434,435,438,439,441],{},"Beginnen Sie die Datei mit YAML-Frontmatter, das ",[23,433,51],{}," (z. B. ",[23,436,437],{},"\"ADR-011: ...\"",") und ",[23,440,64],{}," enthält, und folgen Sie anschließend dem oben beschriebenen Format.",[406,443,444],{},"Fügen Sie der Tabelle in diesem Index eine Zeile hinzu.",[406,446,447],{},"Reichen Sie das Ganze mit Ihrem PR ein.",[449,450,451],"style",{},"html pre.shiki code .sYgZi, html code.shiki .sYgZi{--shiki-default:#24292E;--shiki-dark:#ADBAC7}html pre.shiki code .sIAta, html code.shiki .sIAta{--shiki-default:#22863A;--shiki-dark:#8DDB8C}html pre.shiki code .s-HuK, html code.shiki .s-HuK{--shiki-default:#032F62;--shiki-dark:#96D0FF}html pre.shiki code .stnAF, html code.shiki .stnAF{--shiki-default:#E36209;--shiki-dark:#F69D50}html pre.shiki code .s7oCu, html code.shiki .s7oCu{--shiki-default:#24292E;--shiki-default-font-weight:bold;--shiki-dark:#ADBAC7;--shiki-dark-font-weight:bold}html pre.shiki code .sEXtn, html code.shiki .sEXtn{--shiki-default:#005CC5;--shiki-default-font-weight:bold;--shiki-dark:#6CB6FF;--shiki-dark-font-weight:bold}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":33,"searchDepth":47,"depth":47,"links":453},[454,455,456],{"id":17,"depth":47,"text":18},{"id":176,"depth":47,"text":177},{"id":400,"depth":47,"text":401},"Die Architecture Decision Records des Owlat-Projekts — jeder hält den Kontext, die Entscheidung und die damit verbundenen Trade-offs fest.",{},"\u002Fdeveloper\u002Fdecisions",{"title":6,"description":457},"3.developer\u002Fdecisions\u002F1.index","RVd-Nsfpce4ryfnbcPqbeOgoyGzdg42xAOSas2qBhlA",[464,468],{"title":465,"path":466,"stem":467,"children":-1},"Komponentenbibliothek","\u002Fdeveloper\u002Fcomponents","3.developer\u002F9.components",{"title":469,"path":313,"stem":470,"children":-1},"ADR-009: Aufgabenbasiertes Modell-Routing","3.developer\u002Fdecisions\u002F10.009-model-routing",1786915110324]