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
|
ä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.
|
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
|
Die Umschaltung zwischen den Rollen erfolgt über unterschiedliche System-Prompts, die die
|
||||||
Extension automatisch vor jeder Inference einsetzt. Es läuft kein zweiter Server.
|
Extension automatisch vor jeder Inference einsetzt. Es läuft kein zweiter Server.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,21 @@ function judgeVerdictSection(): string[] {
|
||||||
"- Fehlende Tests",
|
"- Fehlende Tests",
|
||||||
"- Hinweise (ändern das Urteil nicht)",
|
"- Hinweise (ändern das Urteil nicht)",
|
||||||
"- Konkrete Fix-Aufträge an den Coder (nur für Blocker, Major, Minor und fehlende Tests)",
|
"- 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 nach den Fixes passende Tests aus.",
|
||||||
"Führe danach einen Commit durch: git add -A && git commit -m 'fix: ...'",
|
"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.",
|
"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",
|
"- Was geändert wurde",
|
||||||
"- Welche Judge-Punkte geschlossen wurden",
|
"- Welche Judge-Punkte geschlossen wurden",
|
||||||
"- Welche Punkte offen bleiben",
|
"- Welche Punkte offen bleiben",
|
||||||
|
|
@ -150,7 +165,9 @@ function shipitPrompt(extra: string): string {
|
||||||
"- Urteil: SHIP | NO-SHIP",
|
"- Urteil: SHIP | NO-SHIP",
|
||||||
"- Letzte Blocker",
|
"- Letzte Blocker",
|
||||||
"- Restrisiken",
|
"- Restrisiken",
|
||||||
"- Empfohlene Sofortmaßnahmen vor Deployment"
|
"- Empfohlene Sofortmaßnahmen vor Deployment",
|
||||||
|
"",
|
||||||
|
...reportBrevityRules(),
|
||||||
].join("\n") + (extra?.trim() ? "\n\nZusätzlicher Fokus:\n" + extra.trim() : "");
|
].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
|
// Judge-Prompts rufen judgeVerdictSection() auf; extractFn wertet jede Funktion einzeln aus, freie Namen landen
|
||||||
// im globalen Scope.
|
// im globalen Scope.
|
||||||
|
globalThis.reportBrevityRules = extractFn("reportBrevityRules");
|
||||||
globalThis.judgeVerdictSection = extractFn("judgeVerdictSection");
|
globalThis.judgeVerdictSection = extractFn("judgeVerdictSection");
|
||||||
const judgePrompt = extractFn("judgePrompt");
|
const judgePrompt = extractFn("judgePrompt");
|
||||||
const judgeWithTestsPrompt = extractFn("judgeWithTestsPrompt");
|
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", () => {
|
test("fixPrompt: Hinweise sind kein Auftrag", () => {
|
||||||
assert.match(fixPrompt(""), /„Hinweise“ ist 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