Stufe 4c (#764): Kommentare in C#, WebUI-Skripten, CSS und HTML auf Englisch
Rund 2.600 Kommentarblöcke in 310 C#-Dateien übersetzt, Begründungen vollständig erhalten: blockweise gleiche Anzahl wie vorher, kein Block unter 60 % seiner Länge, der Code außerhalb der Kommentare per Tokenizer byte-identisch geprüft. Zitate deutscher Oberflächentexte und Testdaten bleiben deutsch. WebUI: Kommentare in JS/CSS/HTML übersetzt, JSDoc-@param an die in 4b umbenannten Parameter angeglichen. Dabei behoben: - 4b hatte "tag" (HTML-Tag) als deutsches "Tag" gelesen und zu "dayValue" gemacht (makeElement, svg, Tagesübersicht) - zurück auf tag/day. - Aufgaben "InProgress" bekamen die Plakettenart "laufend", für die es nie eine CSS-Klasse gab - jetzt "success" wie laufende Instanzen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
da4ceac7d5
commit
837a634a22
@@ -6,7 +6,7 @@ using Shouldly;
|
||||
|
||||
namespace ClawdDotNet.Manager.Tests;
|
||||
|
||||
/// <summary>Fängt die letzte Anfrage ab und antwortet fest, ohne Netzwerkzugriff.</summary>
|
||||
/// <summary>Captures the last request and answers with a fixed response, without network access.</summary>
|
||||
internal sealed class CapturingHandler(
|
||||
HttpStatusCode status = HttpStatusCode.OK,
|
||||
string responseBody = """{"status":"success","item_id":1,"is_new":true,"occurrence_count":1}""")
|
||||
@@ -32,13 +32,12 @@ internal sealed class CapturingHandler(
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Die stellvertretende Meldung (#528, Konzept Abschnitt 4).
|
||||
/// The report on the instance's behalf (#528, concept section 4).
|
||||
///
|
||||
/// <para>Am 2026-09-08 hat sich eine Instanz aufgehängt und wurde von Windows beendet:
|
||||
/// keine Protokollzeile, keine Fehlermeldung, kein Bugtracker-Eintrag. Bauartbedingt —
|
||||
/// Meldeweg und Watchdog lebten in dem Prozess, über den sie berichten sollten. Der
|
||||
/// Manager meldet deshalb an ihrer Stelle, und zwar <b>nur</b> das, was aus seiner Sicht
|
||||
/// relevant ist.</para>
|
||||
/// <para>On 2026-09-08 an instance hung and was ended by Windows:
|
||||
/// no log line, no error message, no bug tracker entry. Inherent in the design —
|
||||
/// reporting path and watchdog lived in the process they were supposed to report on. The
|
||||
/// manager therefore reports in their place, and <b>only</b> what is relevant from its point of view.</para>
|
||||
/// </summary>
|
||||
public sealed class SupervisionReporterTests
|
||||
{
|
||||
@@ -70,13 +69,13 @@ public sealed class SupervisionReporterTests
|
||||
rumpf.ShouldContain("4711");
|
||||
rumpf.ShouldContain("137");
|
||||
rumpf.ShouldContain("instanzmanager");
|
||||
rumpf.ShouldContain("clawddotnet"); // Projektbindung
|
||||
rumpf.ShouldContain("clawddotnet"); // project binding
|
||||
rumpf.ShouldContain("0.1.2"); // build_version
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Was die Instanz betrifft, bleibt in der Instanz — sie meldet es selbst, mit ihrem
|
||||
/// eigenen Sub-Token. Der Manager meldet nur, was niemand bestellt hat.
|
||||
/// What concerns the instance stays in the instance — it reports it itself, with its
|
||||
/// own sub-token. The manager only reports what nobody ordered.
|
||||
/// </summary>
|
||||
[Theory]
|
||||
[InlineData(InstanceEventKind.Started)]
|
||||
@@ -89,9 +88,9 @@ public sealed class SupervisionReporterTests
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Stürzt dieselbe Instanz wiederholt ab, soll der Server hochzählen statt den
|
||||
/// Bugtracker mit Zwillingen zu füllen — wiederholte Abstürze sind ein Befund und
|
||||
/// nicht ein Dutzend gleicher.
|
||||
/// If the same instance crashes repeatedly, the server should count up instead of filling the
|
||||
/// bug tracker with twins — repeated crashes are one finding and
|
||||
/// not a dozen identical ones.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async Task Dieselbe_Instanz_und_dieselbe_Art_ergeben_denselben_Schluessel()
|
||||
@@ -104,11 +103,11 @@ public sealed class SupervisionReporterTests
|
||||
await melder.ReportAsync(Ereignis(InstanceEventKind.Crashed));
|
||||
SchluesselAus(_handler.LastBody!).ShouldBe(erster);
|
||||
|
||||
// Eine andere Art ist ein anderer Befund.
|
||||
// A different kind is a different finding.
|
||||
await melder.ReportAsync(Ereignis(InstanceEventKind.Unresponsive));
|
||||
SchluesselAus(_handler.LastBody!).ShouldNotBe(erster);
|
||||
|
||||
// Und eine andere Instanz erst recht.
|
||||
// And a different instance all the more.
|
||||
await melder.ReportAsync(
|
||||
Ereignis(InstanceEventKind.Crashed, dir: @"C:\Instanzen\Instance-Beta"));
|
||||
SchluesselAus(_handler.LastBody!).ShouldNotBe(erster);
|
||||
@@ -124,9 +123,9 @@ public sealed class SupervisionReporterTests
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ein leerer Auszug ist die aussagekräftigste Zeile der ganzen Meldung: Ein Prozess,
|
||||
/// der erschlagen wurde, bevor sein Schreibpuffer geleert war, hinterlässt nichts.
|
||||
/// Genau das war der Zustand aus #529.
|
||||
/// An empty excerpt is the most meaningful line of the whole report: a process
|
||||
/// that was killed before its write buffer was flushed leaves nothing.
|
||||
/// Exactly that was the state from #529.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async Task Ein_leerer_Protokollauszug_wird_ausdruecklich_gesagt()
|
||||
@@ -137,9 +136,9 @@ public sealed class SupervisionReporterTests
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ein Meldeweg, der selbst wirft, wäre die schlechteste aller Welten: Der
|
||||
/// ursprüngliche Befund ginge dabei verloren, und die Aufsicht stürbe an ihrem
|
||||
/// eigenen Bericht.
|
||||
/// A reporting path that throws itself would be the worst of all worlds: the
|
||||
/// original finding would get lost, and the supervision would die of its
|
||||
/// own report.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async Task Ein_Serverfehler_reisst_die_Aufsicht_nicht_mit()
|
||||
|
||||
Reference in New Issue
Block a user