- ClawdDotNet.Web: Kestrel im Prozess der Anwendung, Token-Absicherung (TokenGate mit FixedTimeEquals), Endpunkte unter /api, Ereignisstrom unter /events (Server-Sent Events) und fortlaufendes Log-Streaming. - Weboberflaeche (wwwroot/): Vollstaendiges Single-Page-Frontend mit nativem HTML5, CSS3 und ES-Modulen ohne Buildschritt (strikt textContent, #-Routing, sofortiger Login-Sprung bei fehlendem Token, Light/Dark-Theme, lokale Barlow-Schriften). - ClawdDotNet.App: Fachlogik aus den Avalonia-ViewModels in Dienste herausgeloest (AgentAdministration, JobAdministration, ServiceAdministration, RunCoordinator) und ueber InstanceChange synchronisiert. - Tests: ClawdDotNet.Web.Tests und ClawdDotNet.App.Tests hinzugefuegt, alle 684 Tests erfolgreich.
857 lines
18 KiB
JSON
857 lines
18 KiB
JSON
[
|
|
{
|
|
"ref": "e10",
|
|
"id": 180,
|
|
"epic": "DEC",
|
|
"rank": 5,
|
|
"status": "open",
|
|
"title": "E10 entscheiden: Womit wird der Hauptschluessel unter Linux gebunden?",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "e1",
|
|
"id": 181,
|
|
"epic": "DEC",
|
|
"rank": 50,
|
|
"status": "open",
|
|
"title": "E1 entscheiden: Matrix oder Rocket.Chat?",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "e4",
|
|
"id": 182,
|
|
"epic": "DEC",
|
|
"rank": 210,
|
|
"status": "open",
|
|
"title": "E4 entscheiden: ask_agent behalten oder ersatzlos streichen?",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "e2",
|
|
"id": 183,
|
|
"epic": "DEC",
|
|
"rank": 220,
|
|
"status": "open",
|
|
"title": "E2 entscheiden: Nextcloud-Identitaet - Dienstkonto oder Benutzer je Agent?",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "e3",
|
|
"id": 184,
|
|
"epic": "DEC",
|
|
"rank": 230,
|
|
"status": "open",
|
|
"title": "E3 entscheiden: Oeffentliche Freigabe-Links erlauben oder hart sperren?",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "e5",
|
|
"id": 185,
|
|
"epic": "DEC",
|
|
"rank": 240,
|
|
"status": "open",
|
|
"title": "E5 entscheiden: Notfallkanal-Reihenfolge instanzweit oder je Agent?",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "e6",
|
|
"id": 186,
|
|
"epic": "DEC",
|
|
"rank": 250,
|
|
"status": "open",
|
|
"title": "E6 entscheiden: catchUp je Task abschaltbar machen?",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "e7",
|
|
"id": 187,
|
|
"epic": "DEC",
|
|
"rank": 260,
|
|
"status": "open",
|
|
"title": "E7 entscheiden: Prioritaet bei mehreren faelligen Tasks - strikt oder gewichtet?",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "e8",
|
|
"id": 188,
|
|
"epic": "DEC",
|
|
"rank": 270,
|
|
"status": "open",
|
|
"title": "E8 entscheiden: Aufbewahrungsdauer der Agentenkommunikation",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "e9",
|
|
"id": 189,
|
|
"epic": "DEC",
|
|
"rank": 280,
|
|
"status": "open",
|
|
"title": "E9 entscheiden: Automatische Orderausfuehrung - ueberhaupt?",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "l1",
|
|
"id": 190,
|
|
"epic": "SEC",
|
|
"rank": 10,
|
|
"status": "open",
|
|
"title": "L1: Der Hauptschluessel liegt unter Linux im Klartext",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "freigabe-ansicht",
|
|
"id": 191,
|
|
"epic": "SEC",
|
|
"rank": 20,
|
|
"status": "open",
|
|
"title": "Freigabe-Ansicht: gestagte Aufrufe sichtbar machen und freigeben",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "output-scrubbing",
|
|
"id": 192,
|
|
"epic": "SEC",
|
|
"rank": 80,
|
|
"status": "open",
|
|
"title": "Output-Scrubbing: Secret-Werte zentral aus allen Tool-Ergebnissen maskieren",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "untrusted-content",
|
|
"id": 193,
|
|
"epic": "SEC",
|
|
"rank": 300,
|
|
"status": "open",
|
|
"title": "Tool-Ergebnisse als untrusted content rahmen",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "secret-ui",
|
|
"id": 194,
|
|
"epic": "SEC",
|
|
"rank": 310,
|
|
"status": "open",
|
|
"title": "Secret-UI: Zugangsdaten setzen und rotieren",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "filerw-papierkorb",
|
|
"id": 195,
|
|
"epic": "CAP",
|
|
"rank": 60,
|
|
"status": "open",
|
|
"title": "FileRW-Papierkorb statt endgueltigem Loeschen",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "l4-shell",
|
|
"id": 196,
|
|
"epic": "CAP",
|
|
"rank": 90,
|
|
"status": "open",
|
|
"title": "L4: Shell-Tool mit echter Sandbox",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "l5-mcp",
|
|
"id": 197,
|
|
"epic": "CAP",
|
|
"rank": 100,
|
|
"status": "open",
|
|
"title": "L5: MCP-Client fuer stdio- und HTTP-Server",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "a4-skills",
|
|
"id": 198,
|
|
"epic": "CAP",
|
|
"rank": 110,
|
|
"status": "open",
|
|
"title": "A4: Skills und Toolsets - dreischichtiger Prompt statt \"alles immer\"",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "l6-vision",
|
|
"id": 199,
|
|
"epic": "CAP",
|
|
"rank": 120,
|
|
"status": "open",
|
|
"title": "L6: Vision - Bild-Content-Blocks im OpenRouterClient",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "l7-browser",
|
|
"id": 200,
|
|
"epic": "CAP",
|
|
"rank": 130,
|
|
"status": "open",
|
|
"title": "L7: Browser-Tool mit Live-Ansicht",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "memory-flush",
|
|
"id": 201,
|
|
"epic": "CAP",
|
|
"rank": 320,
|
|
"status": "open",
|
|
"title": "Memory-Flush vor der Compaction",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "memory-injection",
|
|
"id": 202,
|
|
"epic": "CAP",
|
|
"rank": 330,
|
|
"status": "open",
|
|
"title": "Memory-Auto-Injection relevanter Abstracts",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "proaktive-compaction",
|
|
"id": 203,
|
|
"epic": "CAP",
|
|
"rank": 340,
|
|
"status": "open",
|
|
"title": "Die Compaction laeuft nach dem API-Aufruf - der ueberfuellte Prompt ist da schon bezahlt",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "agent-inspector",
|
|
"id": 204,
|
|
"epic": "CAP",
|
|
"rank": 350,
|
|
"status": "open",
|
|
"title": "AgentInspector: ein Supervisor-Agent, der die anderen beurteilen kann",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "agent-editor",
|
|
"id": 205,
|
|
"epic": "CAP",
|
|
"rank": 360,
|
|
"status": "open",
|
|
"title": "AgentEditor haerten: Aenderungen an Identity.md und Soul.md freigabepflichtig",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "b8-delegationstiefe",
|
|
"id": 206,
|
|
"epic": "COMM",
|
|
"rank": 70,
|
|
"status": "open",
|
|
"title": "B8: AgentComm.send_message hat keine Tiefenbegrenzung - A nach B nach A verklemmt",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "comm-phase1",
|
|
"id": 207,
|
|
"epic": "COMM",
|
|
"rank": 400,
|
|
"status": "open",
|
|
"title": "Agentenkommunikation Phase 1: ParentRunId und RootRunId",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "comm-phase2",
|
|
"id": 208,
|
|
"epic": "COMM",
|
|
"rank": 410,
|
|
"status": "open",
|
|
"title": "Agentenkommunikation Phase 2: Nachrichtenspeicher AgentMessages mit FTS5",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "comm-phase3",
|
|
"id": 209,
|
|
"epic": "COMM",
|
|
"rank": 420,
|
|
"status": "deferred",
|
|
"title": "Agentenkommunikation Phase 3: ask_agent mit Tiefe 1 und Zykluspruefung",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "comm-phase4",
|
|
"id": 210,
|
|
"epic": "COMM",
|
|
"rank": 430,
|
|
"status": "deferred",
|
|
"title": "Agentenkommunikation Phase 4: Paar-Ansicht an den Datenbestand anschliessen",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "comm-phase5",
|
|
"id": 211,
|
|
"epic": "COMM",
|
|
"rank": 440,
|
|
"status": "open",
|
|
"title": "Agentenkommunikation Phase 5: AgentCommAnalysis",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "historie-umzug",
|
|
"id": 212,
|
|
"epic": "DATA",
|
|
"rank": 150,
|
|
"status": "open",
|
|
"title": "Historie-Umzug in die Instanz-DB (loest B10 und K6)",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "a6-mysql-spiegel",
|
|
"id": 213,
|
|
"epic": "DATA",
|
|
"rank": 450,
|
|
"status": "deferred",
|
|
"title": "A6: MySQL-Spiegel als nachgelagerte Kopie",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "l2-betriebsform",
|
|
"id": 214,
|
|
"epic": "OPS",
|
|
"rank": 30,
|
|
"status": "open",
|
|
"title": "L2: 24/7-Betriebsform unter Linux",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "l3-release-linux",
|
|
"id": 215,
|
|
"epic": "OPS",
|
|
"rank": 40,
|
|
"status": "open",
|
|
"title": "L3: Release-Strecke linux-x64 (DC3)",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "dc1-fehler-melden",
|
|
"id": 216,
|
|
"epic": "OPS",
|
|
"rank": 160,
|
|
"status": "open",
|
|
"title": "DC1: Schaltflaeche \"Fehler melden\" in der Oberflaeche",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "dc2-bugtracker-tool",
|
|
"id": 217,
|
|
"epic": "OPS",
|
|
"rank": 500,
|
|
"status": "open",
|
|
"title": "DC2: Bugtracker-Tool fuer Agenten",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "sdk-270",
|
|
"id": 218,
|
|
"epic": "OPS",
|
|
"rank": 505,
|
|
"status": "open",
|
|
"title": "Deploymentcenter-SDK von 2.6.0 auf 2.7.0 nachziehen",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "dc4-sdk-submodul",
|
|
"id": 219,
|
|
"epic": "OPS",
|
|
"rank": 510,
|
|
"status": "open",
|
|
"title": "DC4: SDK als Git-Submodul statt Cross-Repo-Pfad",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "dc5-evaluator-cron",
|
|
"id": 220,
|
|
"epic": "OPS",
|
|
"rank": 520,
|
|
"status": "open",
|
|
"title": "DC5: Evaluator-Cron einrichten (Betreiberaufgabe)",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "release-guard",
|
|
"id": 221,
|
|
"epic": "OPS",
|
|
"rank": 530,
|
|
"status": "open",
|
|
"title": "Release-Guard beim Upload: ein frisches Produktverzeichnis steht ohne .htaccess da",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "dc8-signaturpflicht",
|
|
"id": 222,
|
|
"epic": "OPS",
|
|
"rank": 540,
|
|
"status": "deferred",
|
|
"title": "DC8: Die Signaturpflicht laesst sich ueber den empfohlenen Weg nicht einschalten",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "c1-marktkalender",
|
|
"id": 223,
|
|
"epic": "FIN",
|
|
"rank": 140,
|
|
"status": "open",
|
|
"title": "C1: Marktkalender - Laeufe ausserhalb der Handelszeiten ueberspringen",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "c2-indicators",
|
|
"id": 224,
|
|
"epic": "FIN",
|
|
"rank": 600,
|
|
"status": "open",
|
|
"title": "C2: Indikatoren im Code rechnen statt im Modell",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "c3-datenaktualitaet",
|
|
"id": 225,
|
|
"epic": "FIN",
|
|
"rank": 610,
|
|
"status": "open",
|
|
"title": "C3: dataAsOf wird geliefert, aber von nichts ausgewertet",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "c4-termine",
|
|
"id": 226,
|
|
"epic": "FIN",
|
|
"rank": 620,
|
|
"status": "open",
|
|
"title": "C4: Termine und Fundamentaldaten",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "c5-bestandsregister",
|
|
"id": 227,
|
|
"epic": "FIN",
|
|
"rank": 630,
|
|
"status": "open",
|
|
"title": "C5: Bestandsregister - stock_add ist eine Wissenssammlung, kein Bestand",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "c6-entdopplung",
|
|
"id": 228,
|
|
"epic": "FIN",
|
|
"rank": 640,
|
|
"status": "open",
|
|
"title": "C6: Nachrichten-Entdopplung",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "c7-ergebnisregister",
|
|
"id": 229,
|
|
"epic": "FIN",
|
|
"rank": 650,
|
|
"status": "open",
|
|
"title": "C7: Ergebnisregister AgentOutput am Lauf",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "c8-falsifizierbar",
|
|
"id": 230,
|
|
"epic": "FIN",
|
|
"rank": 660,
|
|
"status": "open",
|
|
"title": "C8: Falsifizierbare Aussagen als Leistungsmass",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "leerlaufquote",
|
|
"id": 231,
|
|
"epic": "FIN",
|
|
"rank": 670,
|
|
"status": "open",
|
|
"title": "Leerlaufquote: Laeufe ohne greifbares Ergebnis zaehlen",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "stock-add-herausloesen",
|
|
"id": 232,
|
|
"epic": "FIN",
|
|
"rank": 680,
|
|
"status": "open",
|
|
"title": "stock_add aus FileRW herausloesen",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "b9-index-count",
|
|
"id": 233,
|
|
"epic": "HYG",
|
|
"rank": 170,
|
|
"status": "open",
|
|
"title": "B9: index_Count-Race in FileRWTool",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "b13-instanceid",
|
|
"id": 234,
|
|
"epic": "HYG",
|
|
"rank": 180,
|
|
"status": "open",
|
|
"title": "B13: instanceId-Inkonsistenz zwischen RunAsync und SendMessageAsync",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "dst-randfall",
|
|
"id": 235,
|
|
"epic": "HYG",
|
|
"rank": 190,
|
|
"status": "open",
|
|
"title": "DST-Randfall: eine nicht existierende Ortszeit wird uebersprungen statt verschoben",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "nullable-warnungen",
|
|
"id": 236,
|
|
"epic": "HYG",
|
|
"rank": 200,
|
|
"status": "open",
|
|
"title": "45 Nullable-Build-Warnungen",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-audit",
|
|
"id": 237,
|
|
"epic": "SEC",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Audit-Log und Receipts (A3, F-A2)",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-staging",
|
|
"id": 238,
|
|
"epic": "SEC",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Staging-Kern (A2, F-A1, S4)",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-taskboard",
|
|
"id": 239,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Taskboard (A1, F-A4, F-A5)",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-memory",
|
|
"id": 240,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Langzeitgedaechtnis (K1)",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-atomar",
|
|
"id": 241,
|
|
"epic": "DATA",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Atomares Schreiben nach dem File.Replace-Muster",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-speicherfundament",
|
|
"id": 242,
|
|
"epic": "DATA",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Speicher-Fundament: WAL, busy_timeout, Pooling, Schreib-Warteschlange",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-backup",
|
|
"id": 243,
|
|
"epic": "DATA",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Sicherung und Wiederherstellung",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-zugangsschutz",
|
|
"id": 244,
|
|
"epic": "OPS",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Zugangsschutz: Lizenzschluessel als Basic-Auth zur Release-Ablage (DC 2.4)",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-update",
|
|
"id": 245,
|
|
"epic": "OPS",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Update anwenden (DC6)",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-erstinstallation",
|
|
"id": 246,
|
|
"epic": "OPS",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Erstinstallation (DC7)",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-linux-portierung",
|
|
"id": 247,
|
|
"epic": "OPS",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Linux-Portierung der Bibliotheken",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-paketanhebungen",
|
|
"id": 248,
|
|
"epic": "HYG",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Paket-Anhebungen gegen verwundbare transitive Fassungen",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-s1",
|
|
"id": 249,
|
|
"epic": "SEC",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "S1: SqlGuard statt Teilzeichenketten-Pruefung",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-s2",
|
|
"id": 250,
|
|
"epic": "SEC",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "S2: YouTubeUrl und ArgumentList gegen Options-Injection",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-s3",
|
|
"id": 251,
|
|
"epic": "SEC",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "S3: UrlSanitizer gegen API-Key-Leak ins Modell",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-s5",
|
|
"id": 252,
|
|
"epic": "SEC",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "S5: UrlGuard, Redirects einzeln geprueft",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-s6",
|
|
"id": 253,
|
|
"epic": "SEC",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "S6: WorkspacePath auf Verzeichnisgrenzen",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-s7",
|
|
"id": 254,
|
|
"epic": "SEC",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "S7: SecretProtector mit DPAPI",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-k5",
|
|
"id": 255,
|
|
"epic": "SEC",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "K5: Budget-Guard (F-A3)",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-b1",
|
|
"id": 256,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "B1 und B14: Compaction mit sicherem Schnittpunkt, kein doppelter System-Prompt",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-b2",
|
|
"id": 257,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "B2: Chat-Laeufe je Agent serialisiert",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-b3",
|
|
"id": 258,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "B3 und T5: maxCumulativeTokens von maxContextTokens getrennt",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-b4",
|
|
"id": 259,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "B4: Prompt und Completion getrennt erfasst, Preise live vom /models-Endpunkt",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-b5",
|
|
"id": 260,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "B5 und T2: Tool-Ergebnisse zentral gekappt",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-b6",
|
|
"id": 261,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "B6 und B7: gegenstandslos, seit der Scanner die Delay-Schleifen ersetzt",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-b11",
|
|
"id": 262,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "B11 und T8: max_tokens aus LoopGuard.MaxResponseTokens",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-b12",
|
|
"id": 263,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "B12: Retry mit Backoff fuer 429 und 5xx",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-t1",
|
|
"id": 264,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "T1 und T9: Prompt-Caching mit Breakpoints, cached_tokens gemessen",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-t3",
|
|
"id": 265,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "T3: guenstiges Modell fuer die Zusammenfassung",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-t7",
|
|
"id": 266,
|
|
"epic": "CAP",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "T7: durch die Assignee-Semantik des Taskboards beantwortet",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-k3",
|
|
"id": 267,
|
|
"epic": "HYG",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "K3: Testfundament",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-nu1903",
|
|
"id": 268,
|
|
"epic": "HYG",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Fruehjahrsputz: NU1903 und NU1902 geschlossen",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-altscheduler",
|
|
"id": 269,
|
|
"epic": "OPS",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Alt-Scheduler abgeloest - alles ist ein Task",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-dc-ersetzt",
|
|
"id": 270,
|
|
"epic": "OPS",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Deploymentcenter ersetzt WatchDog und LicenseLabrador",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-dc3-win",
|
|
"id": 271,
|
|
"epic": "OPS",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "DC3: Release-Strecke win-x64",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-avalonia",
|
|
"id": 272,
|
|
"epic": "OPS",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Avalonia-Portierung, WinForms entfernt",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-backup-nie-gestartet",
|
|
"id": 273,
|
|
"epic": "DATA",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Fruehjahrsputz: die automatische Sicherung war nie gestartet",
|
|
"neu": true
|
|
},
|
|
{
|
|
"ref": "done-backup-settings",
|
|
"id": 274,
|
|
"epic": "DATA",
|
|
"rank": null,
|
|
"status": "resolved",
|
|
"title": "Fruehjahrsputz: doppelte Sicherungs-Einstellungen ueberschrieben einander",
|
|
"neu": true
|
|
}
|
|
] |