Stufe 4c (#764): Bezeichner auf Englisch - Typen, Methoden, Felder, Parameter, Locals, Testnamen

Mit Roslyn umbenannt (Verweise folgen, Zeichenketten bleiben unberuehrt).
Nicht umbenannt, weil gespeichert oder ueber die API gebunden (Stufe 4e):
Properties, Record-Parameter, Enum-Member sowie die Parameter der
Endpunkt-Handler (Routen-/Query-Bindung ueber den Namen). Die JSON-Felder
anonymer Objekte bleiben ausdruecklich benannt (JsonFilter: pfad).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-10-04 13:18:43 +02:00
co-authored by Claude Opus 5.5
parent 837a634a22
commit 77062facc9
190 changed files with 4813 additions and 4813 deletions
@@ -56,7 +56,7 @@ public sealed class TaskRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Eine_Aufgabe_wird_angelegt_und_wiedergefunden()
public async Task A_task_is_created_and_found_again()
{
await Seed("t-1", title: "Recherche");
@@ -68,7 +68,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Der_Import_ist_idempotent_und_erzeugt_keine_Dublette()
public async Task The_import_is_idempotent_and_creates_no_duplicate()
{
await Seed("t-1", title: "Erste Fassung");
await Seed("t-1", title: "Zweite Fassung");
@@ -78,7 +78,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Ein_Re_Import_laesst_den_Ausfuehrungszustand_unangetastet()
public async Task A_re_import_leaves_the_execution_state_untouched()
{
// The crux of the split of truth: the file is the truth about the
// definition, the DB about the execution state. A renewed import must not reset a
@@ -97,7 +97,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Die_Liste_filtert_nach_Status_und_blendet_Archiviertes_aus()
public async Task The_list_filters_by_status_and_hides_archived()
{
await Seed("t-1", TaskItemStatus.Todo);
await Seed("t-2", TaskItemStatus.Done);
@@ -109,7 +109,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Die_Liste_ordnet_nach_Prioritaet()
public async Task The_list_sorts_by_priority()
{
await Seed("t-low", priority: 1, title: "nebensächlich");
await Seed("t-high", priority: 5, title: "dringend");
@@ -122,7 +122,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Die_Liste_filtert_nach_Assignee_und_Freitext()
public async Task The_list_filters_by_assignee_and_free_text()
{
await Seed("t-1", assignee: "@crawler", title: "NVDA Zahlen");
await Seed("t-2", assignee: "@analyst", title: "TSLA Bericht");
@@ -136,7 +136,7 @@ public sealed class TaskRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Ein_Termin_laesst_sich_genau_einmal_beanspruchen()
public async Task An_occurrence_can_be_claimed_exactly_once()
{
await Seed("t-1");
@@ -146,7 +146,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Gleichzeitige_Claims_auf_denselben_Termin_ergeben_genau_einen_Gewinner()
public async Task Concurrent_claims_on_the_same_occurrence_give_exactly_one_winner()
{
// The core invariant. Repeated several times, because a race occurs sporadically.
for (var round = 0; round < 25; round++)
@@ -164,7 +164,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Ein_zweiter_Tick_auf_denselben_Termin_loest_keinen_zweiten_Lauf_aus()
public async Task A_second_tick_on_the_same_occurrence_triggers_no_second_run()
{
await Seed("t-1");
@@ -178,7 +178,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Ein_gescheiterter_Lauf_wird_nicht_automatisch_wiederholt()
public async Task A_failed_run_is_not_retried_automatically()
{
// No retry storm: the marker is already set at claim time, not only on success.
await Seed("t-1");
@@ -192,7 +192,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Der_naechste_planmaessige_Termin_laesst_sich_wieder_beanspruchen()
public async Task The_next_scheduled_occurrence_can_be_claimed_again()
{
await Seed("t-1");
(await _repo.TryClaimAsync("t-1", Occ(T0), "tok", Now, NoStaleClaims, default)).ShouldBeTrue();
@@ -209,7 +209,7 @@ public sealed class TaskRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Eine_blockierte_Aufgabe_laesst_sich_nicht_beanspruchen()
public async Task A_blocked_task_cannot_be_claimed()
{
await Seed("t-1", TaskItemStatus.Blocked, blockedBy: ["t-0"]);
@@ -218,7 +218,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Wartende_Aufgaben_lassen_sich_ueber_ihren_Blocker_finden()
public async Task Waiting_tasks_can_be_found_via_their_blocker()
{
await Seed("t-a", blockedBy: ["t-blocker"]);
await Seed("t-b", blockedBy: ["t-blocker", "t-anderer"]);
@@ -235,7 +235,7 @@ public sealed class TaskRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Ein_Lauf_ohne_gueltigen_Claim_kann_nichts_ueberschreiben()
public async Task A_run_without_a_valid_claim_cannot_overwrite_anything()
{
await Seed("t-1");
(await _repo.TryClaimAsync("t-1", Occ(T0), "echt", Now, NoStaleClaims, default)).ShouldBeTrue();
@@ -249,7 +249,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Verwaiste_Claims_werden_beim_Start_zurueckgesetzt()
public async Task Orphaned_claims_are_reset_on_start()
{
await Seed("t-stuck");
// Claim with a point in time that lies far back already (crashed run).
@@ -266,7 +266,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Ein_frischer_Claim_wird_bei_der_Reconciliation_nicht_angetastet()
public async Task A_fresh_claim_is_not_touched_by_reconciliation()
{
await Seed("t-live");
(await _repo.TryClaimAsync("t-live", Occ(T0), "tok", Now, NoStaleClaims, default)).ShouldBeTrue();
@@ -278,7 +278,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Der_Status_laesst_sich_direkt_setzen()
public async Task The_status_can_be_set_directly()
{
await Seed("t-1");
(await _repo.SetStatusAsync("t-1", TaskItemStatus.Canceled, Now, default)).ShouldBeTrue();
@@ -290,7 +290,7 @@ public sealed class TaskRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Viele_Aufgaben_lassen_sich_gleichzeitig_importieren()
public async Task Many_tasks_can_be_imported_concurrently()
{
var imports = Enumerable.Range(0, 60).Select(i => Seed($"t-{i}"));
await Task.WhenAll(imports);
@@ -299,7 +299,7 @@ public sealed class TaskRepositoryTests : IDisposable
}
[Fact]
public async Task Aufgaben_ueberdauern_das_Schliessen_der_Datenbank()
public async Task Tasks_outlast_closing_the_database()
{
await Seed("t-1", title: "muss einen Neustart überleben");