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
@@ -70,7 +70,7 @@ public sealed class MemoryRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Eine_Erinnerung_ueberdauert_und_wird_wiedergefunden()
public async Task A_memory_persists_and_is_found_again()
{
await Remember("NVDA", "Quartalszahlen am 20.11. erwartet");
@@ -82,7 +82,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Die_Suche_greift_auf_Betreff_Inhalt_und_Schlagworte()
public async Task The_search_covers_subject_content_and_keywords()
{
await Remember("NVDA", "Kursziel angehoben", tags: ["analyse", "quartal"]);
@@ -93,7 +93,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Die_Suche_beachtet_Gross_und_Kleinschreibung_nicht()
public async Task The_search_ignores_case()
{
await Remember("NVDA", "Kursziel angehoben");
@@ -101,7 +101,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Nach_Betreff_laesst_sich_gezielt_filtern()
public async Task Filtering_by_subject_works()
{
await Remember("NVDA", "Erste Notiz");
await Remember("TSLA", "Zweite Notiz");
@@ -117,7 +117,7 @@ public sealed class MemoryRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Ein_Schluessel_aktualisiert_statt_eine_zweite_Erinnerung_anzulegen()
public async Task A_key_updates_instead_of_creating_a_second_memory()
{
// Otherwise, with an agent running every 30 minutes, the memory would grow
// by 48 entries about the same thing within a day.
@@ -131,7 +131,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Beim_Aktualisieren_bleibt_das_Anlagedatum_erhalten()
public async Task Updating_keeps_the_creation_date()
{
var first = await Remember("NVDA", "Erste Fassung", key: "k");
await Task.Delay(10);
@@ -143,7 +143,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Ohne_Schluessel_entstehen_mehrere_Eintraege()
public async Task Without_key_several_entries_are_created()
{
await Remember("NVDA", "Beobachtung eins");
await Remember("NVDA", "Beobachtung zwei");
@@ -152,7 +152,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Derselbe_Schluessel_bei_verschiedenen_Agenten_kollidiert_nicht()
public async Task The_same_key_for_different_agents_does_not_collide()
{
await Remember("NVDA", "Sicht von A", owner: AgentA, key: "einschaetzung");
await Remember("NVDA", "Sicht von B", owner: AgentB, key: "einschaetzung");
@@ -166,7 +166,7 @@ public sealed class MemoryRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Private_Erinnerungen_sind_fuer_andere_Agenten_unsichtbar()
public async Task Private_memories_are_invisible_to_other_agents()
{
await Remember("Geheim", "Nur für A", owner: AgentA);
@@ -174,7 +174,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Geteilte_Erinnerungen_sehen_alle_Agenten()
public async Task Shared_memories_are_seen_by_all_agents()
{
await Remember("Team", "Gemeinsame Erkenntnis", owner: AgentA, scope: MemoryScope.Shared);
@@ -185,7 +185,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Geteilte_und_private_Bereiche_sind_getrennt()
public async Task Shared_and_private_areas_are_separate()
{
await Remember("X", "privat", owner: AgentA);
await Remember("X", "geteilt", owner: AgentA, scope: MemoryScope.Shared);
@@ -199,7 +199,7 @@ public sealed class MemoryRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Wichtiges_kommt_zuerst()
public async Task Important_comes_first()
{
// Crucial, because recall is limited — the most important things must survive.
await Remember("A", "nebensächlich", importance: 1);
@@ -213,7 +213,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Bei_gleicher_Wichtigkeit_kommt_das_Aktuellste_zuerst()
public async Task With_equal_importance_the_most_recent_comes_first()
{
await Remember("A", "aelter", importance: 3);
await Task.Delay(10);
@@ -223,7 +223,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Unwichtiges_laesst_sich_ausblenden()
public async Task Unimportant_items_can_be_hidden()
{
await Remember("A", "nebensächlich", importance: 1);
await Remember("B", "zentral", importance: 5);
@@ -235,7 +235,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Die_Trefferzahl_ist_begrenzt()
public async Task The_number_of_matches_is_limited()
{
for (var i = 0; i < 50; i++)
await Remember("Massen", $"Notiz {i}");
@@ -244,7 +244,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Die_Wichtigkeit_bleibt_im_gueltigen_Bereich()
public async Task The_importance_stays_within_the_valid_range()
{
var tooHigh = await Remember("A", "x", importance: 99);
var tooLow = await Remember("B", "y", importance: -5);
@@ -258,7 +258,7 @@ public sealed class MemoryRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Nach_Schlagworten_laesst_sich_filtern()
public async Task Filtering_by_keywords_works()
{
await Remember("A", "eins", tags: ["dringend", "kunde"]);
await Remember("B", "zwei", tags: ["kunde"]);
@@ -269,7 +269,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Ein_Schlagwort_trifft_kein_laengeres_mit_gleichem_Anfang()
public async Task A_keyword_does_not_match_a_longer_one_with_the_same_start()
{
// "news" must not match "newsletter".
await Remember("A", "eins", tags: ["newsletter"]);
@@ -279,7 +279,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Schlagworte_ueberstehen_den_Rundlauf()
public async Task Keywords_survive_the_round_trip()
{
await Remember("A", "eins", tags: ["Alpha", "Beta"]);
@@ -293,7 +293,7 @@ public sealed class MemoryRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Eine_Erinnerung_laesst_sich_loeschen()
public async Task A_memory_can_be_deleted()
{
var entry = await Remember("A", "vergänglich");
@@ -302,13 +302,13 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Das_Loeschen_einer_unbekannten_Id_meldet_das()
public async Task Deleting_an_unknown_id_reports_it()
{
(await _repository.ForgetAsync(99_999, default)).ShouldBeFalse();
}
[Fact]
public async Task Alle_Erinnerungen_zu_einem_Betreff_lassen_sich_loeschen()
public async Task All_memories_on_a_subject_can_be_deleted()
{
await Remember("NVDA", "eins");
await Remember("NVDA", "zwei");
@@ -321,7 +321,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Der_Ueberblick_zeigt_Betreffs_mit_Anzahl()
public async Task The_overview_shows_subjects_with_count()
{
await Remember("NVDA", "eins");
await Remember("NVDA", "zwei");
@@ -338,7 +338,7 @@ public sealed class MemoryRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Viele_Agenten_koennen_gleichzeitig_schreiben()
public async Task Many_agents_can_write_concurrently()
{
// Without WAL and lock wait time SQLite answers this with "database is locked".
var tasks = Enumerable.Range(0, 60)
@@ -354,7 +354,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Gleichzeitiges_Schreiben_und_Lesen_stoert_sich_nicht()
public async Task Concurrent_writing_and_reading_do_not_interfere()
{
await Remember("Basis", "vorhanden");
@@ -371,7 +371,7 @@ public sealed class MemoryRepositoryTests : IDisposable
// ═══════════════════════════════════════════════════════════
[Fact]
public async Task Ein_Prozentzeichen_im_Suchtext_wirkt_nicht_als_Platzhalter()
public async Task A_percent_sign_in_the_search_text_is_not_a_wildcard()
{
await Remember("A", "Erster Eintrag");
await Remember("B", "Zweiter Eintrag");
@@ -381,7 +381,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Umlaute_und_Emoji_ueberstehen_die_Ablage()
public async Task Umlauts_and_emoji_survive_storage()
{
await Remember("Größe", "Prüfung mit Umlauten und 🦀");
@@ -392,7 +392,7 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Eine_unbekannte_Kategorie_faellt_auf_other_zurueck()
public async Task An_unknown_category_falls_back_to_other()
{
var entry = await Remember("A", "x", category: "phantasie");
@@ -400,15 +400,15 @@ public sealed class MemoryRepositoryTests : IDisposable
}
[Fact]
public async Task Erinnerungen_ueberdauern_das_Schliessen_der_Datenbank()
public async Task Memories_outlast_closing_the_database()
{
// The actual purpose: a restart of the application must cost nothing.
await Remember("Dauerhaft", "muss einen Neustart überleben");
var wiederEroeffnet = new SqliteMemoryRepository(
var reopenedAgain = new SqliteMemoryRepository(
new SqliteStorage(Path.Combine(_directory, "state.db")));
var found = await wiederEroeffnet.RecallAsync(
var found = await reopenedAgain.RecallAsync(
new MemoryQuery { Scope = MemoryScope.Agent, OwnerId = AgentA }, default);
found.Count.ShouldBe(1);