Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 51s
## Summary - decommission the legacy findings lifecycle backfill substrate across command, job, service, and UI layers - remove related platform capabilities, operation catalog entries, and action surface exemptions - add regression and removal verification tests to ensure runtime integrity and surface absence - include spec, plan, tasks, and data-model artifacts for the removal slice ## Scope - active spec: specs/253-remove-findings-backfill-runtime-surfaces - target branch: dev ## Validation - integrated regression and removal verification tests for console, findings, and system ops surfaces - audit log and capability trace verification for the removal path Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #294
3.3 KiB
3.3 KiB
Data Model: Platform Localization v1 (DE/EN)
Supported Locale Set
| Value | Meaning | Notes |
|---|---|---|
en |
English | System default and controlled fallback in v1 |
de |
German | First additional supported locale |
Locale Sources
| Source | Ownership | Persistence | Allowed Values | Notes |
|---|---|---|---|---|
tenantpilot.locale_override |
request or session scoped | transient | en, de |
Explicit temporary choice for the current browsing context |
users.preferred_locale |
user-owned | persisted on users |
en, de, null |
Personal preference; null means inherit |
localization.default_locale |
workspace-owned | existing workspace settings infrastructure | en, de, null |
Workspace default for users without a personal preference |
config('app.locale') |
system-owned | config | en initially |
Final fallback anchor |
Precedence Rule
- Explicit override
- User preference
- Workspace default
- System default
If the chosen source is missing, malformed, or unsupported, resolution falls back to the next valid source until a supported locale is found. The final controlled fallback is English.
Plane-Specific Resolution
- Admin and tenant panels: use the full precedence rule above.
- System panel: uses
explicit override -> system defaultonly in v1 because system actors authenticate asPlatformUserand do not get a persisted locale preference or workspace-default inheritance in this slice.
Derived Resolved Locale Context
| Field | Type | Meaning |
|---|---|---|
locale |
string | Effective locale for the current request (en or de) |
source |
string | One of explicit_override, user_preference, workspace_default, system_default |
fallback_locale |
string | Controlled fallback locale, en in v1 |
workspace_default_locale |
string or null | Current workspace default when a workspace context exists |
user_preference_locale |
string or null | Persisted personal locale preference for workspace-bound users; null on the system plane |
Persistence Shape
- User preference: add one nullable locale preference field to the current workspace-bound user-owned surface.
- Workspace default: add one workspace setting definition under a localization-specific domain using the existing settings infrastructure.
- No new table: the first slice does not create a generic preferences or translation state table, and it does not add a second locale-preference store for
PlatformUser.
Translation Catalog Ownership
| Catalog Family | Ownership | Notes |
|---|---|---|
lang/en/*.php |
canonical English source | Existing findings.php and baseline-compare.php remain authoritative English catalogs |
lang/de/*.php |
German translation mirror | Added only for the selected first-wave surface families |
| generic shell or settings catalogs | platform runtime | Used for shell/auth/context-bar and shared operator text that does not belong to one domain file |
Invariance Boundaries
The following stay non-localized in v1:
- raw JSON and provider payloads
- audit entries and machine-readable audit values
- stored report payloads and exported artifact data
- identifiers, slugs, route parameters, and query semantics
- global-search scope, authorization outcomes, and tenant/workspace context selection