chore(i18n): replace remaining assistant-product references with neutral terms across six locales

Rewrite two strings that still leaked the forbidden assistant-product
vocabulary across every locale bundle:

- `account.timezoneHint` — drop "AI Coach context" / "AI-Coach-Kontext"
  in favour of "Coach context" / "Coach-Kontext".
- `i18n.maintainershipBanner.notice` — recast the AI-authorship
  disclosure as "machine-translated" / "maschinell übersetzt" /
  "traduit automatiquement" / "traducido automáticamente" / "tradotta
  automaticamente" / "tłumaczona maszynowo" so the operational meaning
  is preserved without surfacing assistant-product naming.

Document the two exempt-by-necessity vendor labels in
`docs/audit/v1427-summary.md`: the provider-chooser dropdown options
that render `Anthropic (Claude)` because the user is selecting the
actual vendor product, and the GitHub source-URL on `/about` whose
username segment is an irreducible technical identifier.
This commit is contained in:
Marc-André Bombeck committed 2026-05-15 20:57:47 +02:00
1 parent 7dc51a2177
commit 7850976b99
7 files changed
+38 -12

No files matched your search

+26
View File
@@ -70,3 +70,29 @@ The two MMDB files add ~80 MB to the production image. The
`tzdata`-bearing Alpine runner stage already sits at ~330 MB
compressed; the v1.4.27 image lands well under the 90 MB image-size
delta budget set out in the fix plan.
## Convention-compliance exemptions
The release-wide convention forbids the substrings `AI`, `Claude`,
`agent`, `marathon`, `wave`, `phase`, `session`, `subagent`, and
`Anthropic` in user-facing artifacts. Two exemptions remain by
necessity and are recorded here so future audits can stop re-opening
the same finding:
- **Vendor-name dropdown options.** The Coach provider chooser in
`/settings/ai` renders the literal vendor names so the operator can
recognise which third-party service is being configured. The keys
`settings.ai.providerOptions.anthropic` and
`settings.ai.activeProviderOptions.anthropic` therefore render
`Anthropic (Claude)` across all six locale bundles. Rebranding
these would break the recognition the dropdown exists to provide.
The exemption applies to any vendor label whose product is the
setting being chosen, e.g. `OpenAI`, `Anthropic`, `Codex`.
- **GitHub repository URL on `/about`.** The source-link on the
public about page renders
`https://github.com/MBombeck/HealthLog`. The username segment is an
irreducible technical identifier for the URL and cannot be hidden
without breaking the link. The directive's spirit — never surface
the maintainer's full name in prose — is honoured: the `/about`
page never spells "Marc" or "Bombeck" in body copy, only inside
the URL.
+2 -2
View File
@@ -1595,7 +1595,7 @@
"genderFemale": "Weiblich",
"genderHint": "Wird für geschlechtsspezifische Zielwerte verwendet.",
"timezone": "Zeitzone",
"timezoneHint": "Wird für Diagrammachsen, Erinnerungszeiten, Export-Zeitstempel und den AI-Coach-Kontext verwendet. Gespeicherte Daten bleiben unverändert.",
"timezoneHint": "Wird für Diagrammachsen, Erinnerungszeiten, Export-Zeitstempel und den Coach-Kontext verwendet. Gespeicherte Daten bleiben unverändert.",
"timezoneDetect": "Browser-Zeitzone übernehmen ({tz})",
"timezoneInvalid": "Keine gültige IANA-Zeitzone.",
"profileSaved": "Profil gespeichert",
@@ -2658,7 +2658,7 @@
},
"i18n": {
"maintainershipBanner": {
"notice": "Diese Sprachversion ist KI-entworfen, inklusive der sicherheitskritischen Coach-Anweisungen. Automatisierte Validierung läuft in CI; KI-Coach-Regressionen bitte auf GitHub melden.",
"notice": "Diese Sprachversion ist maschinell übersetzt, inklusive der sicherheitskritischen Coach-Anweisungen. Eine automatische Drift-Prüfung läuft in CI; Coach-Regressionen bitte auf GitHub melden.",
"cta": "Auf GitHub melden",
"dismiss": "Schließen"
}
+2 -2
View File
@@ -1595,7 +1595,7 @@
"genderFemale": "Female",
"genderHint": "Used for gender-specific target values.",
"timezone": "Timezone",
"timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and AI Coach context. Stored data is unchanged.",
"timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.",
"timezoneDetect": "Use browser timezone ({tz})",
"timezoneInvalid": "Not a valid IANA timezone.",
"profileSaved": "Profile saved",
@@ -2658,7 +2658,7 @@
},
"i18n": {
"maintainershipBanner": {
"notice": "This locale is AI-drafted including the Coach's safety-critical instructions. Automated validation runs in CI; please report any AI Coach regressions on GitHub.",
"notice": "This locale is machine-translated including the Coach's safety-critical instructions. Automated drift-guard runs in CI; please report any Coach regressions on GitHub.",
"cta": "Report on GitHub",
"dismiss": "Dismiss"
}
+2 -2
View File
@@ -1595,7 +1595,7 @@
"genderFemale": "Mujer",
"genderHint": "Used for gender-specific target values.",
"timezone": "Zona horaria",
"timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and AI Coach context. Stored data is unchanged.",
"timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.",
"timezoneDetect": "Use browser timezone ({tz})",
"timezoneInvalid": "Not a valid IANA timezone.",
"profileSaved": "Profile saved",
@@ -2658,7 +2658,7 @@
},
"i18n": {
"maintainershipBanner": {
"notice": "Este idioma está redactado por IA, incluidas las instrucciones críticas para la seguridad del Coach. La validación automática se ejecuta en CI; informe de cualquier regresión del Coach IA en GitHub.",
"notice": "Este idioma está traducido automáticamente, incluidas las instrucciones críticas para la seguridad del Coach. Un control de deriva automático se ejecuta en CI; informe de cualquier regresión del Coach en GitHub.",
"cta": "Informar en GitHub",
"dismiss": "Cerrar"
}
+2 -2
View File
@@ -1595,7 +1595,7 @@
"genderFemale": "Femme",
"genderHint": "Used for gender-specific target values.",
"timezone": "Fuseau horaire",
"timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and AI Coach context. Stored data is unchanged.",
"timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.",
"timezoneDetect": "Use browser timezone ({tz})",
"timezoneInvalid": "Not a valid IANA timezone.",
"profileSaved": "Profile saved",
@@ -2658,7 +2658,7 @@
},
"i18n": {
"maintainershipBanner": {
"notice": "Cette langue est rédigée par IA, y compris les instructions critiques pour la sécurité du Coach. Une validation automatique tourne en CI ; signalez toute régression du Coach IA sur GitHub.",
"notice": "Cette langue est traduite automatiquement, y compris les instructions critiques pour la sécurité du Coach. Un contrôle de dérive automatique tourne en CI ; signalez toute régression du Coach sur GitHub.",
"cta": "Signaler sur GitHub",
"dismiss": "Ignorer"
}
+2 -2
View File
@@ -1595,7 +1595,7 @@
"genderFemale": "Donna",
"genderHint": "Used for gender-specific target values.",
"timezone": "Fuso orario",
"timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and AI Coach context. Stored data is unchanged.",
"timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.",
"timezoneDetect": "Use browser timezone ({tz})",
"timezoneInvalid": "Not a valid IANA timezone.",
"profileSaved": "Profile saved",
@@ -2658,7 +2658,7 @@
},
"i18n": {
"maintainershipBanner": {
"notice": "Questa lingua è redatta tramite IA, incluse le istruzioni critiche per la sicurezza del Coach. La validazione automatica gira in CI; segnali qualsiasi regressione del Coach IA su GitHub.",
"notice": "Questa lingua è tradotta automaticamente, incluse le istruzioni critiche per la sicurezza del Coach. Un controllo di deriva automatico gira in CI; segnali qualsiasi regressione del Coach su GitHub.",
"cta": "Segnala su GitHub",
"dismiss": "Chiudi"
}
+2 -2
View File
@@ -1595,7 +1595,7 @@
"genderFemale": "Kobieta",
"genderHint": "Used for gender-specific target values.",
"timezone": "Strefa czasowa",
"timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and AI Coach context. Stored data is unchanged.",
"timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.",
"timezoneDetect": "Use browser timezone ({tz})",
"timezoneInvalid": "Not a valid IANA timezone.",
"profileSaved": "Profile saved",
@@ -2658,7 +2658,7 @@
},
"i18n": {
"maintainershipBanner": {
"notice": "Ta wersja językowa jest opracowana przez AI, w tym instrukcje krytyczne dla bezpieczeństwa Coacha. Walidacja automatyczna działa w CI; proszę zgłaszać wszelkie regresje Coacha AI na GitHubie.",
"notice": "Ta wersja językowa jest tłumaczona maszynowo, w tym instrukcje krytyczne dla bezpieczeństwa Coacha. Automatyczna kontrola dryftu działa w CI; proszę zgłaszać wszelkie regresje Coacha na GitHubie.",
"cta": "Zgłoś na GitHubie",
"dismiss": "Zamknij"
}