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
@@ -55,7 +55,7 @@ public sealed class TaskScannerTests : IDisposable
// ─── Basic flow ───
[Fact]
public async Task Eine_faellige_Aufgabe_wird_ausgefuehrt_und_abgeschlossen()
public async Task A_due_task_is_executed_and_completed()
{
await SeedDue("t-1");
var dispatcher = new FakeDispatcher();
@@ -68,7 +68,7 @@ public sealed class TaskScannerTests : IDisposable
}
[Fact]
public async Task Mit_require_approval_landet_das_Ergebnis_im_Review()
public async Task With_require_approval_the_result_ends_up_in_review()
{
await SeedDue("t-1", requireApproval: true);
@@ -78,7 +78,7 @@ public sealed class TaskScannerTests : IDisposable
}
[Fact]
public async Task Ein_gescheiterter_Lauf_geht_zurueck_auf_todo_und_wird_nicht_wiederholt()
public async Task A_failed_run_goes_back_to_todo_and_is_not_retried()
{
await SeedDue("t-1");
var dispatcher = new FakeDispatcher(succeed: false);
@@ -95,7 +95,7 @@ public sealed class TaskScannerTests : IDisposable
// ─── Invariant 2: no dispatch with an open blocker / to humans ───
[Fact]
public async Task Eine_blockierte_Aufgabe_wird_nicht_angestossen()
public async Task A_blocked_task_is_not_triggered()
{
await SeedDue("t-1", status: TaskItemStatus.Blocked, blockedBy: ["t-0"]);
var dispatcher = new FakeDispatcher();
@@ -105,7 +105,7 @@ public sealed class TaskScannerTests : IDisposable
}
[Fact]
public async Task Eine_Aufgabe_fuer_einen_Menschen_wird_nicht_angestossen()
public async Task A_task_for_a_human_is_not_triggered()
{
await SeedDue("t-1", assignee: "@human");
var dispatcher = new FakeDispatcher();
@@ -118,7 +118,7 @@ public sealed class TaskScannerTests : IDisposable
// ─── Invariant 3: double tick = one run ───
[Fact]
public async Task Zwei_gleichzeitige_Takte_stossen_eine_Aufgabe_nur_einmal_an()
public async Task Two_concurrent_ticks_trigger_a_task_only_once()
{
for (var round = 0; round < 20; round++)
{
@@ -138,7 +138,7 @@ public sealed class TaskScannerTests : IDisposable
// ─── Recurring tasks (replaces the legacy scheduler) ───
[Fact]
public async Task Ein_wiederkehrender_Task_bleibt_nach_dem_Feuern_auf_todo()
public async Task A_recurring_task_stays_on_todo_after_firing()
{
_clock.SetUtcNow(new DateTimeOffset(2027, 1, 1, 9, 0, 0, TimeSpan.Zero));
await _repo.UpsertAsync(new TaskItem
@@ -154,7 +154,7 @@ public sealed class TaskScannerTests : IDisposable
}
[Fact]
public async Task Ein_wiederkehrender_Task_feuert_an_jedem_Termin_erneut()
public async Task A_recurring_task_fires_again_at_every_occurrence()
{
await _repo.UpsertAsync(new TaskItem
{
@@ -174,7 +174,7 @@ public sealed class TaskScannerTests : IDisposable
}
[Fact]
public async Task Ein_backlog_Task_wird_nicht_ausgefuehrt()
public async Task A_backlog_task_is_not_executed()
{
await SeedDue("t-1", status: TaskItemStatus.Backlog);
var dispatcher = new FakeDispatcher();
@@ -186,7 +186,7 @@ public sealed class TaskScannerTests : IDisposable
// ─── C1 hook: market calendar ───
[Fact]
public async Task Bei_geschlossenem_Markt_bleibt_ein_marktabhaengiger_Termin_liegen()
public async Task With_the_market_closed_a_market_dependent_schedule_waits()
{
await SeedDue("t-1", onlyWhenMarketOpen: true);
var dispatcher = new FakeDispatcher();
@@ -201,7 +201,7 @@ public sealed class TaskScannerTests : IDisposable
// ─── Auto-dispatch: blocker done → waiting ones released ───
[Fact]
public async Task Wird_der_letzte_Blocker_fertig_gibt_das_die_wartende_Aufgabe_frei()
public async Task When_the_last_blocker_is_done_the_waiting_task_is_released()
{
await SeedDue("t-blocker");
await SeedDue("t-wartend", status: TaskItemStatus.Blocked, blockedBy: ["t-blocker"]);
@@ -214,7 +214,7 @@ public sealed class TaskScannerTests : IDisposable
}
[Fact]
public async Task Solange_ein_Blocker_offen_ist_bleibt_die_wartende_Aufgabe_blockiert()
public async Task While_a_blocker_is_open_the_waiting_task_stays_blocked()
{
await SeedDue("t-b1"); // finishes in this tick
await SeedDue("t-b2", assignee: "@human"); // a human — stays open
@@ -229,10 +229,10 @@ public sealed class TaskScannerTests : IDisposable
// ─── #643: tasks that did not run ───
[Fact]
public async Task Eine_einmalige_Aufgabe_ohne_Budget_bleibt_faellig_statt_liegenzubleiben()
public async Task A_one_off_task_without_budget_stays_due_instead_of_being_dropped()
{
await _repo.UpsertAsync(new TaskItem { Id = "t-einmal", Title = "einmal", Assignee = "@new:a", Status = TaskItemStatus.Todo }, default);
var dispatcher = new FakeDispatcher { Ergebnis = TaskLauf.NichtGelaufen };
var dispatcher = new FakeDispatcher { Ergebnis = DispatchOutcome.NichtGelaufen };
var scanner = Scanner(dispatcher);
(await scanner.ScanOnceAsync(default)).ShouldBe(1);
@@ -243,14 +243,14 @@ public sealed class TaskScannerTests : IDisposable
(await scanner.ScanOnceAsync(default)).ShouldBe(0, "Wiedervorlage erst nach der Pause, nicht im Minutentakt");
_clock.Advance(TaskScanner.Wiedervorlage + TimeSpan.FromMinutes(1));
dispatcher.Ergebnis = TaskLauf.Erledigt;
_clock.Advance(TaskScanner.RetryDelay + TimeSpan.FromMinutes(1));
dispatcher.Ergebnis = DispatchOutcome.Erledigt;
(await scanner.ScanOnceAsync(default)).ShouldBe(1);
(await _repo.GetAsync("t-einmal", default))!.Status.ShouldBe(TaskItemStatus.Done);
}
[Fact]
public async Task Eine_gescheiterte_einmalige_Aufgabe_bleibt_verbraucht()
public async Task A_failed_one_off_task_stays_used_up()
{
await _repo.UpsertAsync(new TaskItem { Id = "t-kaputt", Title = "kaputt", Assignee = "@new:a", Status = TaskItemStatus.Todo }, default);
var scanner = Scanner(new FakeDispatcher(succeed: false));
@@ -267,13 +267,13 @@ public sealed class TaskScannerTests : IDisposable
private readonly Lock _lock = new();
public List<string> Dispatched { get; } = [];
public TaskLauf? Ergebnis { get; set; }
public DispatchOutcome? Ergebnis { get; set; }
public Task<TaskLauf> DispatchAsync(TaskItem task, CancellationToken ct)
public Task<DispatchOutcome> DispatchAsync(TaskItem task, CancellationToken ct)
{
lock (_lock)
Dispatched.Add(task.Id);
return Task.FromResult(Ergebnis ?? (succeed ? TaskLauf.Erledigt : TaskLauf.Gescheitert));
return Task.FromResult(Ergebnis ?? (succeed ? DispatchOutcome.Erledigt : DispatchOutcome.Gescheitert));
}
}