feat: kurze Berichte für Judge und Freigabe (Blocker/Major vollständig, Rest begrenzt)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
cf766bf724
commit
9647b862c9
3 changed files with 36 additions and 2 deletions
|
|
@ -43,6 +43,10 @@ Härtung über die Anforderungen hinaus, Skalierung, Stil und Wünsche schreibt
|
|||
ändern das Urteil nicht, und der Coder bearbeitet sie bei `/fix` nicht. Ein Major ohne Reproduktion gilt als
|
||||
Hinweis. Ohne diese Regeln urteilte der Judge mit Strata am 15.10.2026 in keiner Aufgabe PASS.
|
||||
|
||||
Judge und Freigabeprüfung berichten kurz: keine Tabelle bestandener Prüfungen, Blocker und Major vollständig mit
|
||||
Fundstelle, Minor, fehlende Tests und Hinweise höchstens 5 Punkte je Abschnitt. Grund: Lange Berichte kosten
|
||||
Rechenzeit und bleiben im Kontext jeder weiteren Runde (Messung im Repo `strata-betrieb`, FUNKTIONSWEISE).
|
||||
|
||||
Die Umschaltung zwischen den Rollen erfolgt über unterschiedliche System-Prompts, die die
|
||||
Extension automatisch vor jeder Inference einsetzt. Es läuft kein zweiter Server.
|
||||
|
||||
|
|
|
|||
|
|
@ -70,6 +70,21 @@ function judgeVerdictSection(): string[] {
|
|||
"- Fehlende Tests",
|
||||
"- Hinweise (ändern das Urteil nicht)",
|
||||
"- Konkrete Fix-Aufträge an den Coder (nur für Blocker, Major, Minor und fehlende Tests)",
|
||||
"",
|
||||
...reportBrevityRules(),
|
||||
];
|
||||
}
|
||||
|
||||
// Kurze Berichte für Judge und Freigabe. Am 15.10. (File Listing, Strata) erzeugte eine Sitzung 777 000 Tokens bei rund
|
||||
// 100 tok/s; lange Prüfprotokolle und Tabellen machten einen großen Teil davon aus und landeten im Kontext jeder
|
||||
// weiteren Runde.
|
||||
function reportBrevityRules(): string[] {
|
||||
return [
|
||||
"Berichte kurz – der Bericht ist eine Arbeitsliste, kein Protokoll:",
|
||||
"- Keine Liste oder Tabelle der bestandenen Prüfungen; nenne nur, was fehlschlug, und in einer Zeile, was geprüft wurde.",
|
||||
"- Blocker und Major vollständig, je Punkt höchstens 3 Sätze plus Fundstelle (Datei:Zeile) oder Reproduktionsbefehl.",
|
||||
"- Minor, fehlende Tests und Hinweise: höchstens 5 Punkte je Abschnitt, die wichtigsten zuerst, je Punkt eine Zeile.",
|
||||
"- Leere Abschnitte mit „keine“. TASK.md nicht nacherzählen, keinen Code wiederholen, den der Coder schon kennt.",
|
||||
];
|
||||
}
|
||||
|
||||
|
|
@ -130,7 +145,7 @@ function fixPrompt(extra: string): string {
|
|||
"Führe nach den Fixes passende Tests aus.",
|
||||
"Führe danach einen Commit durch: git add -A && git commit -m 'fix: ...'",
|
||||
"Wenn ein Punkt nicht sinnvoll umsetzbar ist, begründe das präzise.",
|
||||
"Liefere am Ende nur:",
|
||||
"Liefere am Ende nur, je Punkt eine Zeile:",
|
||||
"- Was geändert wurde",
|
||||
"- Welche Judge-Punkte geschlossen wurden",
|
||||
"- Welche Punkte offen bleiben",
|
||||
|
|
@ -150,7 +165,9 @@ function shipitPrompt(extra: string): string {
|
|||
"- Urteil: SHIP | NO-SHIP",
|
||||
"- Letzte Blocker",
|
||||
"- Restrisiken",
|
||||
"- Empfohlene Sofortmaßnahmen vor Deployment"
|
||||
"- Empfohlene Sofortmaßnahmen vor Deployment",
|
||||
"",
|
||||
...reportBrevityRules(),
|
||||
].join("\n") + (extra?.trim() ? "\n\nZusätzlicher Fokus:\n" + extra.trim() : "");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ test("parseShipVerdict: SHIP, NO-SHIP, Markdown, unklar", () => {
|
|||
|
||||
// Judge-Prompts rufen judgeVerdictSection() auf; extractFn wertet jede Funktion einzeln aus, freie Namen landen
|
||||
// im globalen Scope.
|
||||
globalThis.reportBrevityRules = extractFn("reportBrevityRules");
|
||||
globalThis.judgeVerdictSection = extractFn("judgeVerdictSection");
|
||||
const judgePrompt = extractFn("judgePrompt");
|
||||
const judgeWithTestsPrompt = extractFn("judgeWithTestsPrompt");
|
||||
|
|
@ -140,3 +141,15 @@ test("Judge-Prompts: Urteilsregeln und Hinweise in beiden Varianten (Strata-Judg
|
|||
test("fixPrompt: Hinweise sind kein Auftrag", () => {
|
||||
assert.match(fixPrompt(""), /„Hinweise“ ist kein Auftrag/);
|
||||
});
|
||||
|
||||
const shipitPrompt = extractFn("shipitPrompt");
|
||||
|
||||
test("Judge- und Freigabe-Prompts verlangen kurze Berichte, Blocker/Major bleiben vollständig", () => {
|
||||
for (const p of [judgePrompt(""), judgeWithTestsPrompt("1 passed", ""), shipitPrompt("")]) {
|
||||
assert.match(p, /Berichte kurz/);
|
||||
assert.match(p, /Blocker und Major vollständig/);
|
||||
assert.match(p, /höchstens 5 Punkte je Abschnitt/);
|
||||
}
|
||||
assert.match(shipitPrompt(""), /- Urteil: SHIP \| NO-SHIP/);
|
||||
assert.match(fixPrompt(""), /Liefere am Ende nur, je Punkt eine Zeile/);
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue