TenantAtlas/apps/platform/lang/en/localization.php
ahmido 12ea7f9924 feat: review pack output contract and readiness semantics (spec 347/348) (#419)
Implemented the output contract and readiness semantics for review packs. Also added spec 348.
Includes changes to ChooseEnvironment, CustomerReviewWorkspace, GenerateReviewPackJob and related blade views.
Added comprehensive tests.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #419
2026-06-02 23:17:08 +00:00

964 lines
72 KiB
PHP

<?php
declare(strict_types=1);
return [
'locales' => [
'en' => 'English',
'de' => 'German',
],
'source' => [
'explicit_override' => 'session override',
'user_preference' => 'personal preference',
'workspace_default' => 'workspace default',
'workspace_override' => 'workspace override',
'system_default' => 'system default',
],
'shell' => [
'language' => 'Language',
'current_language' => 'Current language',
'language_source' => 'Source: :source',
'temporary_override' => 'Temporary override',
'switch_language' => 'Switch language',
'clear_override' => 'Use inherited language',
'personal_preference' => 'Personal preference',
'save_preference' => 'Save preference',
'inherit_workspace' => 'Use workspace default',
'workspace' => 'Workspace',
'workspace_scope' => 'Workspace scope',
'workspace_scope_short' => 'Workspace',
'environment_scope_short' => 'Environment',
'workspace_context_label' => 'Workspace: :workspace',
'workspace_scope_no_environment' => 'No environment selected',
'workspace_wide_scope' => 'Workspace-wide',
'scope_indicator_action' => 'Open :scope',
'choose_workspace' => 'Choose workspace',
'switch_workspace' => 'Switch workspace',
'workspace_home' => 'Workspace Home',
'choose_environment' => 'Choose environment',
'environment_count' => ':count environment|:count environments',
'choose_environment_description' => 'Select the environment for your normal active operating context.',
'workspace_wide_available_without_environment' => 'No environment selected is still a valid workspace state on workspace-wide pages such as operations and managed environments.',
'add_environment' => 'Add environment',
'all_environments' => 'All environments',
'show_all_environments' => 'Show all environments',
'managed_environments_title' => 'Managed environments',
'no_managed_environments_yet' => 'No managed environments yet',
'managed_environments_empty_state_description' => 'Add your first managed environment to start managing inventory, backups, drift detection, and policies.',
'environment_scope' => 'Environment scope',
'select_environment' => 'Select environment',
'selected_environment' => 'Selected environment',
'no_environment_selected' => 'No environment selected',
'switch_environment' => 'Switch environment',
'clear_environment_scope' => 'Clear environment scope',
'back_to_environment_registry' => 'Back to environment registry',
'tenant_scope' => 'Environment scope',
'select_tenant' => 'Select environment',
'selected_tenant' => 'Selected environment',
'no_tenant_selected' => 'No environment selected',
'switch_tenant' => 'Switch environment',
'clear_tenant_scope' => 'Clear environment scope',
'context_unavailable' => 'Context unavailable',
'context_unavailable_workspace' => 'The requested scope could not be restored. The shell is showing a valid workspace state instead.',
'context_unavailable_no_workspace' => 'Choose a workspace to continue with a valid admin context.',
'no_active_environments' => 'No active environments available',
'no_active_environments_description' => 'There are no selectable active environments for the normal operating context in this workspace. Workspace-level pages still work with no environment selected, and you can inspect onboarding or archived records through managed environments.',
'view_managed_environments' => 'View managed environments',
'no_active_tenants' => 'No active environments are available for the standard operating context in this workspace.',
'view_managed_tenants' => 'View managed environments',
'workspace_wide_available' => 'No environment selected. Workspace-wide pages remain available, and choosing an environment only sets the normal active operating context.',
'search_environments' => 'Search environments...',
'environment_search_results_count' => ':visible of :total environments shown',
'no_environment_search_results' => 'No environments match this search',
'no_environment_search_results_description' => 'Clear the search to return to the full workspace list.',
'clear_search' => 'Clear search',
'search_tenants' => 'Search environments...',
'choose_workspace_first' => 'Choose a workspace first.',
],
'workspace' => [
'title' => 'Workspace settings',
'save' => 'Save',
'reset' => 'Reset',
'no_manage_permission' => 'You do not have permission to manage workspace settings.',
'no_workspace_override' => 'No workspace override to reset.',
'last_modified_by' => ':description - Last modified by :user, :time.',
'section' => 'Localization settings',
'section_description' => 'Workspace default used by users without a personal language preference.',
'default_locale_label' => 'Default language',
'default_locale_placeholder' => 'Unset (uses system default)',
'default_locale_helper_unset' => 'Unset. Effective language: :locale (:source).',
'default_locale_helper_set' => 'Effective language: :locale.',
],
'auth' => [
'microsoft_not_configured' => 'Microsoft sign-in is not configured.',
'sign_in_microsoft' => 'Sign in with Microsoft',
'tenant_admin_membership_required' => 'Admin access requires an environment membership.',
],
'navigation' => [
'findings' => 'Findings',
'settings' => 'Settings',
'integrations' => 'Integrations',
'manage_workspaces' => 'Manage workspaces',
'operations' => 'Operations',
'evidence_overview' => 'Evidence',
'audit_log' => 'Audit Log',
'alerts' => 'Alerts',
'governance' => 'Governance',
'monitoring' => 'Monitoring',
'workspace_wide' => 'Workspace-wide',
'workspace_admin' => 'Workspace admin',
'dashboard' => 'Dashboard',
],
'dashboard' => [
'tenant_title' => 'Environment dashboard',
'environment_title' => 'Environment dashboard',
'system_title' => 'System dashboard',
'more_actions' => 'More',
'request_support' => 'Request support',
'support_request_heading' => 'Request support',
'support_request_description' => 'Share a concise summary and TenantAtlas will attach redacted context from existing records.',
'support_request_run_description' => 'Share a concise summary and TenantAtlas will attach redacted context from the current run.',
'submit_request' => 'Submit support request',
'primary_context' => 'Primary context',
'included_context' => 'Included context',
'latest_external_handoff' => 'Latest external handoff',
'latest_external_handoff_none' => 'No support request has been submitted for this context yet.',
'latest_external_handoff_internal_only' => 'Latest support reference :reference is TenantPilot only. No external ticket is linked yet.',
'latest_external_handoff_linked' => 'Latest support reference :reference is linked to external ticket :external.',
'latest_external_handoff_failed' => 'Latest support reference :reference has no external ticket because handoff failed: :failure',
'external_handoff_mode' => 'External handoff',
'handoff_mode_internal_only' => 'TenantPilot only',
'handoff_mode_create_external_ticket' => 'Create external ticket',
'handoff_mode_link_existing_ticket' => 'Link existing ticket',
'external_handoff_mode_helper_available' => 'Choose whether this request stays internal, creates an external ticket, or links an existing one.',
'external_handoff_mode_helper_unavailable' => 'No external support desk target is configured. This request will stay internal.',
'handoff_mutation_scope' => 'Mutation scope',
'mutation_scope_internal_only' => 'TenantPilot only. No external support desk ticket will be created or linked.',
'mutation_scope_external_create' => 'TenantPilot + external support desk. TenantPilot creates the internal support request first, then creates one external ticket.',
'mutation_scope_external_link' => 'TenantPilot + external support desk. TenantPilot stores the external ticket reference you provide and does not create a duplicate ticket.',
'external_ticket_reference' => 'External ticket reference',
'external_ticket_reference_helper' => 'Use the existing desk ticket key, for example PSA-12345.',
'external_ticket_url' => 'External ticket URL',
'external_ticket_url_helper' => 'Optional HTTP or HTTPS link to the existing external ticket.',
'severity' => 'Severity',
'summary' => 'Summary',
'reproduction_notes' => 'Reproduction notes',
'contact_name' => 'Contact name',
'contact_email' => 'Contact email',
'support_request_submitted' => 'Support request submitted',
'support_request_submitted_internal_only' => 'Support reference :reference was created. No external ticket is linked yet.',
'support_request_submitted_created' => 'Support reference :reference was created and external ticket :external was created.',
'support_request_submitted_linked' => 'Support reference :reference was created and linked to external ticket :external.',
'support_request_submitted_failed' => 'Support reference :reference was created, but external handoff failed: :failure',
'open_external_ticket' => 'Open external ticket',
'open_support_diagnostics' => 'Open support diagnostics',
'support_diagnostics' => 'Support diagnostics',
'support_diagnostics_description' => 'Redacted environment context from existing records.',
'close' => 'Close',
'time_window' => 'Time window',
'window' => 'Window',
'enter_break_glass' => 'Enter break-glass mode',
'exit_break_glass' => 'Exit break-glass',
'recovery_mode_enabled' => 'Recovery mode enabled',
'recovery_mode_ended' => 'Recovery mode ended',
'overview' => [
'page_subheading' => 'Environment governance overview',
'context_workspace' => 'Current workspace',
'context_no_tenant' => 'No environment selected',
'context_no_environment' => 'No environment selected',
'context_workspace_chip' => 'Workspace: :workspace',
'context_provider_chip' => ':provider environment',
'context_latest_activity_chip' => 'Latest activity: :time',
'status_unavailable' => 'Unavailable',
'status_blocked' => 'Blocked',
'status_action_needed' => 'Action needed',
'status_calm' => 'Calm',
'status_not_ready' => 'Not ready',
'status_evidence_available' => 'Evidence available',
'status_needs_action' => 'Needs attention',
'tenant_context_unavailable_headline' => 'Environment context is not available.',
'tenant_context_unavailable_summary' => 'Select an environment to view the decision-first dashboard overview.',
'environment_context_unavailable_headline' => 'Environment context is not available.',
'environment_context_unavailable_summary' => 'Select an environment to view the decision-first dashboard overview.',
'posture_blocked_headline' => 'Provider permissions are blocking environment workflows.',
'posture_blocked_summary' => 'Required application permissions are missing, so provider-backed operations cannot be treated as healthy readiness.',
'posture_calm_headline' => 'No immediate environment blocker is visible.',
'posture_calm_summary' => 'Current findings, permissions, recovery posture, and recent operations do not show an urgent follow-up path.',
'posture_action_needed_fallback_summary' => 'The environment still needs operator follow-up before the landing page can stay calm.',
'section_recommended_actions' => 'Recommended next actions',
'section_governance_status' => 'Governance status',
'section_readiness' => 'Review & evidence readiness',
'section_recent_operations' => 'Recent operations',
'header_primary_focus' => 'Primary focus',
'priority_label' => 'Priority :priority',
'label_reason' => 'Reason',
'label_impact' => 'Impact',
'empty_recommended_actions_headline' => 'No immediate action is waiting.',
'empty_recommended_actions_summary' => 'The environment currently looks calm. Use the status and readiness sections below to confirm what is healthy and what is simply unavailable.',
'empty_recent_operations_headline' => 'No recent operations yet.',
'empty_recent_operations_summary' => 'Once environment operations run, the most recent execution context will appear here without taking over the first decision layer.',
'kpi_high_severity_label' => 'High severity findings',
'kpi_high_severity_description' => 'High or critical findings still needing review.',
'kpi_high_severity_tendency' => ':count active now',
'kpi_high_severity_tendency_window' => ':count active · :window new in 7d',
'kpi_high_severity_tendency_none' => 'No active pressure',
'kpi_overdue_label' => 'Overdue findings',
'kpi_overdue_description' => 'Open workflow items that are already overdue.',
'kpi_overdue_tendency' => ':count overdue now',
'kpi_overdue_tendency_none' => 'None overdue',
'kpi_missing_permissions_label' => 'Missing permissions',
'kpi_missing_permissions_description' => 'Provider-required permissions currently missing for this environment.',
'kpi_missing_permissions_tendency_split' => ':app app · :delegated delegated missing',
'kpi_missing_permissions_tendency_app_only' => ':count app missing',
'kpi_missing_permissions_tendency_delegated_only' => ':count delegated missing',
'kpi_missing_permissions_tendency_none' => 'Permission set complete',
'kpi_active_operations_label' => 'Operations needing attention',
'kpi_active_operations_description' => 'Operation runs that still need follow-up before the environment can be treated as healthy.',
'kpi_active_operations_tendency' => ':count operations require attention',
'kpi_active_operations_tendency_window' => ':count operations require attention',
'kpi_active_operations_tendency_one' => '1 operation needs follow-up',
'kpi_active_operations_tendency_none' => 'No operations need attention',
'action_review_findings' => 'Review findings',
'action_open_overdue_findings' => 'Open overdue findings',
'action_review_permissions' => 'Review permissions',
'action_open_required_permissions' => 'Open required permissions',
'action_review_risks' => 'Review risks',
'action_review_recovery_posture' => 'Review recovery posture',
'action_view_all_operations' => 'View all operations',
'action_view_operation' => 'View operation',
'action_review_operation' => 'Review operation',
'action_review_operations' => 'Review operations',
'action_review_operations_requiring_attention' => 'Review operations requiring attention',
'action_open_operations_hub' => 'Open operations hub',
'action_show_all_operations' => 'Show all operations',
'action_open_governance_inbox' => 'Open governance inbox',
'action_continue_review' => 'Continue review',
'action_open_baseline_compare' => 'Open Baseline Compare',
'action_open_evidence' => 'Open evidence',
'action_open_backup_posture' => 'Open backup posture',
'action_view_export_artifacts' => 'View export artifacts',
'action_open_customer_workspace' => 'Open customer workspace',
'action_open_review_pack' => 'Open review pack',
'action_open_review' => 'Open review',
'action_open_reviews' => 'Open reviews',
'reason_missing_application_permissions' => ':count application permission(s) are still missing.',
'impact_missing_application_permissions' => 'Provider-backed inventory, verification, and reporting flows stay blocked until consent is restored.',
'reason_missing_delegated_permissions' => ':count delegated permission(s) still need attention.',
'impact_missing_delegated_permissions' => 'The environment stays partially ready until delegated permissions are reviewed and granted where needed.',
'reason_high_severity_findings' => ':count high severity finding(s) still need operator review.',
'impact_high_severity_findings' => 'Severe drift stays unresolved until those findings are triaged or remediated.',
'reason_overdue_findings' => ':count finding(s) are already overdue.',
'impact_overdue_findings' => 'Workflow delay can hide the environment\'s current risk posture until overdue items are cleared.',
'reason_risk_exceptions' => ':count risk exception(s) or accepted-risk governance item(s) need follow-up.',
'impact_risk_exceptions' => 'Accepted-risk statements stop being trustworthy when their exception history is no longer current.',
'impact_recovery_posture' => 'Recovery readiness should be checked before customer-safe claims rely on backup or restore confidence.',
'reason_terminal_operations' => ':count operation run(s) finished blocked, partial, or failed.',
'impact_terminal_operations' => 'Terminal run outcomes need follow-up before the environment can be treated as calm.',
'reason_operations_requiring_attention' => 'One or more operations finished with an outcome that needs follow-up.',
'impact_operations_requiring_attention' => 'The environment should not be treated as fully healthy until the operation outcome has been reviewed.',
'reason_continue_review' => 'Customer-safe output is not fully ready yet.',
'impact_continue_review' => 'Review output stays partial until the review, evidence, and pack surfaces line up cleanly.',
'operations_attention_title' => 'Operations requiring attention',
'operations_attention_badge_follow_up' => 'Follow-up required',
'operations_attention_badge_stale' => 'Needs attention',
'operations_attention_outcome_blocked' => 'The operation finished, but a prerequisite blocked completion.',
'operations_attention_outcome_partial' => 'The operation finished, but follow-up is still required.',
'operations_attention_outcome_failed' => 'The operation finished with a failure that needs review.',
'operations_attention_outcome_generic' => 'The operation finished with an outcome that needs follow-up.',
'operations_attention_outcome_stale' => 'The operation is still active, but it is past its expected lifecycle window.',
'operations_attention_outcome_provider_consent_required' => 'The check finished, but provider consent is still required.',
'operations_attention_reason_fallback' => 'The recorded outcome still needs operator review before the environment can be treated as healthy.',
'operations_attention_reason_stale' => 'The run is past its normal lifecycle window and may no longer be progressing.',
'operations_attention_reason_provider_consent_required' => 'Admin consent is required before the provider connection can be used.',
'operations_attention_impact_follow_up' => 'Environment readiness should not be treated as fully healthy until the operation outcome has been reviewed.',
'operations_attention_impact_stale' => 'Environment readiness should not be treated as current until the stalled run has been reviewed.',
'operations_attention_impact_provider_consent_required' => 'Environment readiness cannot be treated as healthy until this is reviewed.',
'operations_attention_timing_completed' => 'Completed :time',
'operations_attention_timing_started' => 'Started :time',
'governance_baseline_compare_label' => 'Baseline compare',
'governance_baseline_compare_description' => 'Current compare posture for the environment baseline.',
'governance_evidence_coverage_label' => 'Evidence coverage',
'governance_review_freshness_label' => 'Review freshness',
'governance_provider_permissions_label' => 'Provider permissions',
'governance_backup_posture_label' => 'Backup posture',
'governance_backup_posture_unavailable_description' => 'Recovery readiness is not yet available.',
'readiness_current_review_title' => 'Current review',
'readiness_current_review_empty_status' => 'No active review',
'readiness_current_review_empty_description' => 'There is currently no review in progress for this environment.',
'readiness_current_review_updated_label' => 'Last updated',
'readiness_current_review_findings_progress_label' => 'Findings with outcome',
'readiness_current_review_completion_progress_label' => 'Review completion',
'readiness_customer_safe_output_title' => 'Customer-safe output',
'readiness_customer_safe_output_empty_status' => 'No customer-safe output',
'readiness_customer_safe_output_empty_description' => 'Generate a review pack once review and evidence are ready for handoff.',
'readiness_customer_safe_output_evidence_label' => 'Evidence snapshot',
'readiness_customer_safe_output_review_pack_label' => 'Review pack',
'readiness_risk_exceptions_title' => 'Risk exceptions',
'readiness_risk_exceptions_active_label' => 'Accepted risks',
'readiness_risk_exceptions_expiring_label' => 'Expiring soon',
'readiness_risk_exceptions_pending_label' => 'Pending approval',
'readiness_provider_health_title' => 'Provider Health',
'readiness_provider_health_empty_status' => 'Provider status unavailable',
'readiness_provider_health_empty_description' => 'No provider health snapshot is currently available for this environment.',
'readiness_provider_health_last_check_label' => 'Last check',
'readiness_provider_health_permissions_label' => 'Missing permissions',
'readiness_provider_health_snapshot_label' => 'Permissions snapshot',
'readiness_provider_health_degraded_description' => 'The latest provider health check reported warnings for this environment.',
'readiness_provider_health_blocked_description' => 'The provider health check is currently blocked for this environment.',
'readiness_provider_health_error_description' => 'The provider health check failed for this environment.',
'readiness_provider_health_pending_description' => 'The latest provider health check is still pending for this environment.',
'readiness_provider_health_unknown_description' => 'No provider health check has been recorded yet.',
'helper_findings_requires_permissions' => 'You can see the environment posture, but opening findings requires additional permissions.',
'helper_risk_exceptions_requires_permissions' => 'You can see the summary, but opening risk exceptions requires additional permissions.',
'helper_review_requires_permissions' => 'You can see the summary, but opening review detail requires additional permissions.',
'helper_continue_review_requires_manage' => 'You can inspect the current review state, but only review managers can continue the review workflow.',
'helper_evidence_requires_permissions' => 'You can see the summary, but opening evidence detail requires additional permissions.',
'helper_customer_workspace_requires_permissions' => 'Customer-safe output is summarized here, but opening the underlying review surfaces requires additional permissions.',
'helper_required_permissions_unavailable' => 'You can see the summary, but opening the required-permissions detail is not available for this actor.',
'helper_operations_unavailable' => 'You can see the summary, but opening operations detail is not available for this actor.',
'helper_baseline_compare_requires_permissions' => 'You can see the summary, but opening baseline compare requires additional permissions.',
'helper_backup_posture_requires_permissions' => 'You can see the summary, but opening backup posture detail requires additional permissions.',
'evidence_unavailable_description' => 'No evidence snapshot is currently available for customer-safe output.',
'evidence_generated_prefix' => 'Latest evidence snapshot generated :time.',
'review_unavailable_description' => 'No review is currently available for this environment.',
'review_updated_prefix' => 'Latest review updated :time.',
'provider_permissions_ready' => 'Ready',
'provider_permissions_blocked' => 'Blocked',
'provider_permissions_needs_attention' => 'Needs attention',
'provider_permissions_complete_description' => 'Required permissions currently look complete.',
'provider_permissions_stale_suffix' => 'The verification snapshot is stale.',
'review_pack_updated_prefix' => 'Latest review pack updated :time.',
'review_pack_evidence_available_description' => 'Evidence exists, but a customer-safe review pack is not ready yet.',
'review_pack_unavailable_description' => 'No customer-safe output is currently ready for handoff.',
'risk_exceptions_need_action_status' => ':count need action',
'risk_exceptions_active_status' => ':count active',
'risk_exceptions_pending_description' => 'Pending, expiring, or expired exceptions still need governance follow-up.',
'risk_exceptions_active_description' => 'Accepted-risk exceptions exist but do not currently need urgent review.',
'risk_exceptions_calm_description' => 'No risk exceptions currently need attention.',
'recent_operation_fallback_summary' => 'Recent operation context for this environment.',
],
],
'review' => [
'reporting' => 'Reporting',
'customer_reviews' => 'Customer reviews',
'customer_review_workspace' => 'Customer Review Workspace',
'customer_safe_review_workspace' => 'Customer-safe review packages',
'customer_workspace_intro' => 'Review released governance packages, evidence readiness, accepted risks, and handoff status across entitled environments.',
'customer_workspace_canonical_note' => 'Each row is an index entry: open the review detail to inspect package status, the executive entrypoint, supporting evidence, current risks, and the next customer-safe action.',
'customer_workspace_mapping_version' => 'Control readiness interpretation uses :version for this workspace.',
'customer_workspace_non_certification_disclosure' => 'Service delivery summary only. Does not replace formal audit opinion, certification, or legal attestation.',
'customer_workspace_scope_workspace_wide' => 'Workspace-wide customer review',
'customer_workspace_scope_workspace_wide_description' => 'Showing the latest released review across entitled environments. Current first review: :environment.',
'customer_workspace_scope_environment_filtered' => 'Environment filter: :environment',
'customer_workspace_scope_environment_filtered_description' => 'The page data is intentionally narrowed by the canonical environment_id filter while the shell remains workspace-owned.',
'is_review_ready_to_share' => 'Is this review ready to share?',
'review_pack_output_status' => 'What is the current review pack output state?',
'ready_to_share' => 'Ready to share',
'customer_safe_review_pack_ready' => 'Customer-safe review pack ready',
'published_with_limitations' => 'Published with limitations',
'internal_review_package_available' => 'Internal review package available',
'shareable_with_follow_up' => 'Shareable with follow-up',
'follow_up_required_before_sharing' => 'Follow-up required before sharing',
'ready_to_share_reason' => 'The released review, evidence path, and current review pack are available for customer-safe handoff.',
'customer_safe_review_pack_ready_reason' => 'The review package is published, export-ready, and backed by complete required evidence sections.',
'evidence_basis_missing_reason' => 'The review package is published, but the evidence basis is missing.',
'evidence_basis_stale_reason' => 'The review package is published, but the evidence basis is stale.',
'evidence_basis_incomplete_reason' => 'The review package is published, but the evidence basis is incomplete.',
'required_sections_incomplete_reason' => ':limited required sections are partial, missing, or stale in the current package (:complete of :total required complete).',
'publish_blockers_present_reason' => 'Publish blockers are still recorded in the released review summary.',
'contains_pii_reason' => 'This package includes PII and should be reviewed before external sharing.',
'export_not_ready_reason' => 'The review package exists, but the export contract is not ready yet.',
'shareable_with_follow_up_reason' => 'The review pack is available, but accepted-risk follow-up must be called out before handoff.',
'follow_up_required_before_sharing_reason' => 'Review proof or package availability still needs attention before this can be shared.',
'findings_follow_up_required_reason' => ':summary Keep open findings visible before customer handoff.',
'accepted_risk_follow_up_required_reason' => 'Accepted-risk follow-up is recorded for this review. Review the owner, rationale, and review date before handoff.',
'ready_to_share_impact' => 'Stakeholders can use the current review pack and released review as the evidence path.',
'customer_safe_review_pack_ready_impact' => 'Stakeholders can use the current review pack and released review as the evidence path.',
'published_with_limitations_impact' => 'Review output limitations before customer sharing.',
'internal_review_package_available_impact' => 'This package includes internal or PII-bearing detail and should be reviewed before external sharing.',
'export_not_ready_impact' => 'Do not present this package as customer-ready until export readiness passes.',
'shareable_with_follow_up_impact' => 'Use the current pack only with the accepted-risk follow-up included in the customer handoff.',
'follow_up_required_before_sharing_impact' => 'Do not treat this review as share-ready until the unavailable proof has been reviewed.',
'findings_follow_up_required_impact' => 'Do not treat this review as share-ready until open findings are resolved, accepted, or explicitly reviewed.',
'accepted_risk_follow_up_required_impact' => 'The pack can be shared only with the accepted-risk context included in the customer handoff.',
'impact' => 'Impact',
'scope' => 'Scope',
'ready' => 'Ready',
'needs_review' => 'Needs review',
'not_ready' => 'Not ready',
'readiness' => 'Readiness',
'evidence' => 'Evidence',
'review_consumption_flow' => 'Review consumption flow',
'review_consumption_flow_description' => 'Follow the derived review, evidence, findings, accepted-risk, pack, and customer output states before sharing.',
'review_data' => 'Review data',
'review_data_available_description' => 'A released review is available for this customer-safe workspace.',
'findings_triaged' => 'Findings triaged',
'accepted_risks_reviewed' => 'Accepted risks reviewed',
'customer_output' => 'Customer-safe output',
'customer_output_ready_description' => 'Evidence and review-pack truth support customer-safe consumption.',
'customer_output_needs_review_description' => 'Output exists, but attention items must stay visible during handoff.',
'customer_output_not_ready_description' => 'Customer-safe output is not ready from the current proof state.',
'current_attention_point' => 'Current attention point',
'readiness_dimension_description' => 'Readiness is derived from the released review, evidence, accepted-risk, and review-pack state.',
'readiness_dimension_ready_description' => 'Released review is available.',
'readiness_dimension_follow_up_description' => 'Follow-up required before handoff.',
'accepted_risk_dimension_customer_safe_description' => 'Accepted-risk status is summarized from the released review evidence without internal accountability details.',
'accepted_risk_dimension_no_action_description' => 'No expiring accepted risks.',
'accepted_risk_dimension_follow_up_description' => 'Accepted-risk follow-up is required.',
'accepted_risk_dimension_on_record_description' => 'Accepted risks are recorded.',
'evidence_dimension_available_description' => 'Evidence snapshot is linked.',
'evidence_dimension_unavailable_description' => 'Evidence proof is not available.',
'evidence_dimension_expired_description' => 'Evidence snapshot is expired.',
'evidence_dimension_restricted_description' => 'Evidence access is restricted.',
'review_pack_dimension_available_description' => 'Current pack can be downloaded.',
'review_pack_dimension_not_generated_description' => 'Review pack is not generated.',
'review_pack_dimension_needs_refresh_description' => 'Evidence refresh needed.',
'review_pack_dimension_preparing_description' => 'Review pack is being prepared.',
'review_pack_dimension_expired_description' => 'Review pack is expired.',
'review_pack_dimension_unavailable_description' => 'Review pack is not ready.',
'evidence_path' => 'Evidence path',
'decision_trail' => 'Decision trail',
'accepted_risk_records' => 'Accepted risk records',
'accepted_risk_records_description' => 'Accepted-risk decisions are present in the released review evidence basis.',
'operation_proof' => 'Operation proof',
'operation_proof_available_description' => 'A related operation record exists for this review evidence path.',
'operation_proof_available_with_initiator_description' => 'A related operation record exists for this review evidence path. Initiated by :initiator.',
'operation_proof_unavailable' => 'No operation proof linked',
'operation_proof_unavailable_description' => 'No operation proof link is attached to this released review path.',
'export_artifact' => 'Export artifact',
'export_artifact_available_description' => 'The current export artifact can be downloaded through the review pack flow.',
'export_artifact_unavailable_description' => 'No downloadable export artifact is available from this customer-safe flow.',
'last_generated' => 'Last generated',
'evidence_snapshot_used' => 'Evidence snapshot used',
'export_availability' => 'Export availability',
'export_ready' => 'Export ready',
'export_not_ready' => 'Export not ready',
'evidence_basis_state' => 'Evidence basis',
'section_completeness' => 'Section completeness',
'sharing_boundary' => 'Sharing boundary',
'pii_state' => 'PII',
'contains_pii' => 'Contains PII',
'pii_excluded' => 'PII excluded',
'protected_values' => 'Protected values',
'protected_values_hidden' => 'Protected values hidden',
'disclosure' => 'Disclosure',
'disclosure_present' => 'Disclosure present',
'review_package_index' => 'Review package index',
'review_package_index_description' => 'Released reviews and customer-safe package entries available in this workspace.',
'review_pack_state' => 'Review pack state',
'evidence_source' => 'Evidence source',
'customer_safe_follow_ups' => 'Customer-safe follow-ups',
'customer_safe_follow_ups_empty' => 'No customer-safe follow-ups are listed for this released review.',
'diagnostics_customer_workspace_default_hidden' => 'Support details stay on authorized diagnostic surfaces and are not shown in this customer-safe workspace by default.',
'review_acknowledgement' => 'Review acknowledgement',
'acknowledge_review' => 'Acknowledge review',
're_acknowledge_review' => 'Re-acknowledge review',
'acknowledge_review_heading' => 'Acknowledge this review?',
'acknowledge_review_description' => 'Records a customer-safe acknowledgement for the current published review package. This is not a legal attestation.',
'acknowledge_review_confirm' => 'Acknowledge',
'acknowledge_review_comment' => 'Comment (optional)',
'acknowledge_review_unavailable' => 'Unable to acknowledge review',
'acknowledge_review_failed' => 'Review acknowledgement failed',
'review_acknowledged' => 'Review acknowledged',
'acknowledgement_not_available' => 'Acknowledgement unavailable',
'acknowledgement_not_available_reason' => 'Acknowledgement is tracked only for published review packages.',
'acknowledgement_not_available_impact' => 'Publish a review package before recording acknowledgement.',
'review_accepted_risks' => 'Review accepted risks',
'acknowledgement_required' => 'Acknowledgement required',
'acknowledgement_required_reason' => 'This published review has not been acknowledged yet.',
'acknowledgement_required_impact' => 'Record acknowledgement before relying on this review as a shared customer-safe artifact.',
'acknowledgement_requires_permission' => 'You do not have permission to acknowledge reviews.',
'acknowledgement_re_ack_required' => 'Re-acknowledgement required',
'acknowledgement_re_ack_required_reason' => 'The review pack or evidence basis changed after the last acknowledgement.',
'acknowledgement_re_ack_required_impact' => 'Re-acknowledge to confirm you reviewed the current customer-safe package.',
'acknowledgement_recorded_reason' => 'A customer-safe acknowledgement is recorded for this published review package.',
'acknowledgement_recorded_impact' => 'This review package can now be referenced with an explicit acknowledgement trail.',
'basis' => 'Basis',
'acknowledged_by' => 'Acknowledged by',
'acknowledged_at' => 'Acknowledged at',
'accepted_risk_summary' => 'Accepted risks',
'accepted_risk_no_action_needed' => 'No action needed',
'accepted_risk_accountability' => 'Accepted-risk accountability',
'accepted_risk_owner' => 'Owner',
'accepted_risk_next_review' => 'Next review',
'accepted_risk_rationale' => 'Rationale',
'review_date_not_recorded' => 'Review date not recorded',
'not_recorded' => 'Not recorded',
'accepted_risks_expiring_soon' => 'Expiring soon',
'accepted_risks_expired' => 'Expired',
'accepted_risks_pending_approval' => 'Pending approval',
'accepted_risks_needs_review' => 'Needs review',
'disclosure_rule' => 'Disclosure rule',
'disclosure_decision' => 'Decision',
'disclosure_evidence' => 'Evidence',
'disclosure_diagnostics' => 'Diagnostics',
'disclosure_raw_support' => 'Raw/support',
'disclosure_visible' => 'Visible',
'disclosure_collapsed' => 'Collapsed',
'disclosure_hidden' => 'Hidden',
'evidence_snapshot_available_description' => 'Evidence snapshot generated :date.',
'latest_released_review' => 'Latest released review',
'released_review_for_environment' => 'Released review for :environment',
'filtered_by_environment' => 'Filtered by environment: :environment',
'published_date' => 'Published :date',
'reviews' => 'Reviews',
'clear_filters' => 'Clear filters',
'tenant' => 'Environment',
'latest_review' => 'Latest review',
'review_status' => 'Review status',
'status' => 'Status',
'control' => 'Control',
'control_interpretation' => 'Control readiness interpretation',
'control_readiness' => 'Control readiness',
'assessment_status' => 'Assessment status',
'review_recommended' => 'Review recommended',
'recommended_next_action' => 'Recommended next action',
'customer_safe' => 'Customer-safe',
'requires_review' => 'Requires review',
'internal_only' => 'Internal only',
'interpretation_version_short' => 'Interpretation version: :version',
'additional_controls' => '+:count more control(s)',
'control_limitations_summary' => 'Limitations: :limitations.',
'control_readiness_unmapped' => 'No mapped controls',
'control_readiness_unmapped_description' => 'No canonical controls are mapped in this released review. Treat the control view as partial until evidence references can be mapped.',
'control_evidence_unmapped' => 'No mapped evidence basis is available.',
'control_evidence_unavailable' => 'Evidence basis unavailable.',
'control_recommendation_unmapped' => 'Review unmapped evidence before customer delivery.',
'proof_access_state' => 'Proof access',
'key_findings' => 'Key findings',
'findings_needing_attention' => 'Findings needing attention',
'findings_total' => 'Total findings',
'findings_open' => 'Open findings',
'findings_high_impact' => 'High impact',
'findings_high_impact_summary' => ':open; :high.',
'findings_open_attention_count' => '{1} 1 open finding needs attention|[2,*] :count open findings need attention',
'findings_high_impact_count_summary' => '{1} 1 is high impact|[2,*] :count are high impact',
'findings_open_summary' => '{1} 1 open finding needs customer or operator review.|[2,*] :count open findings need customer or operator review.',
'findings_no_open_summary' => ':total findings are recorded, with no open customer-action findings.',
'findings_none_action_summary' => 'No open findings require customer action.',
'accepted_risks' => 'Accepted risks',
'evidence_proof' => 'Evidence proof',
'evidence_status' => 'Evidence',
'published' => 'Published',
'review_pack' => 'Review pack',
'open_latest_review' => 'Open latest review',
'open' => 'Open',
'open_review' => 'Open review',
'last_review' => 'Last review',
'primary_action' => 'Primary action',
'download_review_pack' => 'Download review pack',
'download_customer_safe_review_pack' => 'Download customer-safe review pack',
'download_review_pack_with_limitations' => 'Download review pack with limitations',
'download_internal_review_pack' => 'Download internal review pack',
'download_current_review_pack' => 'Download current review pack',
'download_governance_package' => 'Download governance package',
'review_package_contents' => 'Review package contents',
'review_output_limitations' => 'Review output limitations',
'open_evidence_basis' => 'Open evidence basis',
'governance_package' => 'Governance package',
'governance_decisions' => 'Governance decisions',
'governance_decisions_requiring_awareness' => 'Governance decisions requiring awareness',
'governance_package_delivery_note' => 'This governance package is delivered through the current export review pack for the released review.',
'executive_entrypoint' => 'Executive entrypoint',
'executive_entrypoint_description' => 'Start with executive-summary.md in the downloaded package.',
'auditor_appendix' => 'Structured auditor appendix',
'auditor_appendix_description' => 'metadata.json, summary.json, and sections.json remain included as the secondary structured appendix.',
'governance_package_available' => 'Governance package available',
'governance_package_available_description' => 'The current export review pack is ready for stakeholder delivery from this released review.',
'governance_package_partial' => 'Governance package partial',
'governance_package_partial_description' => 'The current export review pack is ready, but the supporting review basis remains partial or limitation-aware.',
'governance_package_unavailable' => 'Governance package unavailable',
'governance_package_unavailable_description' => 'No current export review pack is attached to this released review yet.',
'governance_package_not_ready_description' => 'The current export review pack is not ready for stakeholder delivery yet.',
'governance_package_expired' => 'Governance package expired',
'governance_package_expired_description' => 'The current export review pack has expired and cannot be downloaded from this released review.',
'governance_package_blocked' => 'Governance package blocked',
'governance_package_blocked_description' => 'This account can read the released review but cannot download the current export review pack.',
'no_entitled_tenants' => 'No entitled environments match this view',
'no_released_customer_reviews' => 'No released customer reviews match this view',
'no_released_customer_reviews_description' => 'Publish an environment review before it appears in the customer-safe workspace.',
'filtered_no_released_customer_reviews' => 'No released customer reviews match the active environment filter.',
'filtered_no_released_customer_reviews_description' => 'Clear the environment filter to view other released reviews in this workspace.',
'clear_filters_description' => 'Clear the current filters to return to the full customer review workspace for your entitled environments.',
'adjust_filters_description' => 'Adjust filters to return to the full customer review workspace for your entitled environments.',
'no_published_review' => 'No published review',
'no_published_review_available' => 'No published review available yet',
'no_findings_recorded' => 'No findings recorded in the published review.',
'findings_count_summary' => ':count findings summarized in the published review.',
'findings_count_with_outcomes' => ':count findings. Terminal outcomes: :outcomes.',
'no_accepted_risks_recorded' => 'No accepted risks recorded.',
'accepted_risks_need_follow_up' => ':warnings accepted risks need governance follow-up (:total total).',
'accepted_risks_governed' => ':count accepted risks are governed.',
'accepted_risks_on_record' => ':count accepted risks are on record.',
'accepted_risk_accountable' => 'Accountable: :name.',
'accepted_risk_accountable_until' => 'Accountable: :name. Re-review by :date.',
'accepted_risk_reason' => 'Reason: :reason.',
'accepted_risk_partial_accountability' => 'Accountability is partially recorded; review owner details are not fully available.',
'unavailable' => 'Unavailable',
'available' => 'Available',
'limited' => 'Limited',
'partial' => 'Partial',
'blocked' => 'Blocked',
'expired' => 'Expired',
'restricted' => 'Restricted',
'preparing' => 'Preparing',
'review_pack_available' => 'Current review pack available',
'review_pack_available_customer_description' => 'Current review pack is ready to download.',
'review_pack_customer_safe_ready_description' => 'The current review package is available and meets the customer-safe output contract.',
'review_pack_with_limitations_description' => 'The review package exists, but evidence, section completeness, or publication limitations still need review.',
'review_pack_internal_review_description' => 'The review package exists, but it includes internal or PII-bearing detail that should be reviewed before external sharing.',
'review_pack_export_not_ready_description' => 'The review package exists, but the export contract is not ready yet.',
'review_pack_preparing' => 'Preparing',
'review_pack_preparing_description' => 'Review Pack is being prepared.',
'review_pack_not_available_yet' => 'Not available yet',
'review_pack_not_available_yet_description' => 'Review Pack has not been generated for this released review yet.',
'review_pack_evidence_incomplete' => 'Evidence incomplete',
'review_pack_evidence_incomplete_description' => 'Review Pack or decision summary may be incomplete.',
'review_pack_unavailable_customer_description' => 'Review Pack cannot be provided right now.',
'no_current_review_pack' => 'No current review pack available yet',
'review_pack_access_unavailable' => 'Review pack access is unavailable for this actor',
'review_pack_unavailable' => 'Review pack is not ready yet',
'review_pack_expired' => 'Review pack expired',
'evidence_proof_available' => 'Proof summary available',
'evidence_proof_absent' => 'No proof summary linked yet',
'evidence_proof_access_unavailable' => 'Proof access is unavailable for this actor',
'evidence_proof_expired' => 'Proof summary expired',
'evidence_available' => 'Evidence available',
'evidence_pending' => 'Evidence pending',
'evidence_restricted' => 'Evidence restricted',
'evidence_expired' => 'Evidence expired',
'assessment_basis' => 'Assessment basis',
'assessment_basis_description' => 'These assessment areas explain how the package statements are supported by the current review evidence.',
'review_completed' => 'Review completed',
'review_requires_attention' => 'Review required',
'review_needed' => 'Review needed',
'ready_for_release' => 'Ready for release',
'accepted_risk_status' => 'Accepted risk status',
'accepted_risk_none' => 'None on record',
'accepted_risk_on_record' => ':count on record',
'accepted_risk_follow_up' => 'Follow-up required',
'customer_review_pack_unavailable' => 'The current review pack cannot be downloaded from this customer-safe flow.',
'customer_review_pack_missing' => 'No current review pack is attached to this released review yet.',
'customer_review_pack_not_ready' => 'The attached review pack is not ready for download yet.',
'customer_review_pack_expired' => 'The attached review pack has expired.',
'customer_review_pack_forbidden' => 'This account can read the review but cannot download the current review pack.',
'decision_summary' => 'Decision summary',
'no_decisions_require_awareness' => 'No decisions require awareness',
'no_decisions_require_awareness_description' => 'No governance decisions require customer awareness in this released review.',
'no_decisions_require_awareness_next_action' => 'No customer action is needed for Decision Register follow-up from this review.',
'decision_evidence_unavailable' => 'Decision evidence unavailable',
'decision_evidence_incomplete' => 'Decision evidence incomplete',
'decision_summary_unavailable_description' => 'Customer-safe decision evidence is unavailable for this released review.',
'decision_summary_unavailable_next_action' => 'Open the released review before treating the decision summary as complete.',
'decision_summary_incomplete_description' => 'Decision evidence is incomplete for this released review.',
'decision_summary_incomplete_next_action' => 'Review the evidence basis before relying on the decision summary.',
'decision_summary_requires_awareness_description' => 'Governance decisions require customer awareness before relying on this released review.',
'decision_summary_requires_awareness_next_action' => 'Review the accepted-risk decision basis before customer delivery.',
'decision_entry_customer_safe_summary' => 'This governance decision needs follow-up before stakeholder delivery.',
'accepted_risk_state_current' => 'Accepted risk',
'accepted_risk_state_review_due' => 'Review due',
'accepted_risk_state_on_record' => 'Accepted risk',
'accepted_risk_customer_safe_summary' => 'Included in the released review evidence basis.',
'evidence_basis_complete' => 'Complete',
'evidence_basis_complete_description' => 'Customer-safe decision summary is backed by released-review evidence.',
'evidence_basis_no_awareness_required' => 'No awareness required',
'evidence_basis_no_awareness_required_description' => 'No governance decisions require awareness in this released-review evidence basis.',
'evidence_basis_missing' => 'Missing',
'evidence_basis_missing_description' => 'Required evidence is missing from the current review basis.',
'evidence_basis_stale' => 'Stale',
'evidence_basis_stale_description' => 'The evidence basis is stale and should be refreshed before sharing.',
'evidence_basis_incomplete' => 'Incomplete',
'evidence_basis_incomplete_description' => 'Decision evidence is incomplete and must not be interpreted as no decisions.',
'evidence_basis_unavailable' => 'Unavailable',
'evidence_basis_unavailable_description' => 'Customer-safe decision evidence is unavailable for this released review.',
'evidence_basis_not_generated' => 'Not generated',
'evidence_basis_not_generated_description' => 'The Review Pack is not available yet; the released review remains visible.',
'section_completeness_complete' => ':complete of :total required complete',
'section_completeness_limited' => ':complete of :total required complete, :limited limited',
'released_governance_record' => 'Released governance record',
'released_governance_record_available' => 'This released review is available for customer-safe governance consumption.',
'outcome_summary' => 'Outcome summary',
'review' => 'Review',
'review_date' => 'Review date',
'completeness' => 'Completeness',
'evidence_snapshot' => 'Evidence snapshot',
'current_export' => 'Current export',
'executive_posture' => 'Executive posture',
'sections' => 'Sections',
'details' => 'Details',
'export_executive_pack' => 'Export executive pack',
'outcome' => 'Outcome',
'export' => 'Export',
'next_step' => 'Next step',
'workspace_next_step_evidence_review' => 'Review evidence',
'workspace_next_step_review_open' => 'Open review',
'workspace_next_step_package_review' => 'Review package',
'workspace_next_step_control_mapping' => 'Review control mapping',
'no_environment_reviews_yet' => 'No environment reviews yet',
'create_first_review_description' => 'Create the first review from an anchored evidence snapshot to start the recurring review history for this managed environment.',
'create_first_review' => 'Create first review',
'create_review' => 'Create review',
'evidence_basis' => 'Evidence basis',
'evidence_basis_helper' => 'Choose the anchored evidence snapshot for this review.',
'unable_create_missing_context' => 'Unable to create review - missing context.',
'select_valid_evidence_snapshot' => 'Select a valid evidence snapshot.',
'unable_create_review' => 'Unable to create review',
'review_already_available' => 'Review already available',
'review_already_available_body' => 'A matching mutable review already exists for this evidence basis.',
'view_review' => 'View review',
'open_operation' => 'Open operation',
'review_composing_background' => 'The review is being composed in the background.',
'unable_export_missing_context' => 'Unable to export review - missing context.',
'export_already_queued_body' => 'An executive pack export is already queued or running for this review.',
'executive_pack_export_unavailable' => 'Executive pack export unavailable',
'unable_export_executive_pack' => 'Unable to export executive pack',
'executive_pack_already_available' => 'Executive pack already available',
'executive_pack_already_available_body' => 'A matching executive pack already exists for this review.',
'view_pack' => 'View pack',
'executive_pack_generating_background' => 'The executive pack is being generated in the background.',
'review_explanation' => 'Review explanation',
'reason_owner' => 'Reason owner',
'platform_core' => 'Platform core',
'platform_reason_family' => 'Platform reason family',
'compatibility' => 'Compatibility',
'highlights' => 'Highlights',
'next_actions' => 'Next actions',
'related_context' => 'Related context',
'publication_readiness' => 'Publication readiness',
'ready_for_publication' => 'This review is ready for publication and executive-pack export.',
'internal_only_publication' => 'This review is currently safe for internal use only.',
'needs_follow_up' => 'This review still needs follow-up before publication.',
'key_entries' => 'Key entries',
'entry' => 'Entry',
'follow_up' => 'Follow-up',
'diagnostics' => 'Diagnostics',
'result_meaning' => 'Result meaning',
'result_trust' => 'Result trust',
'artifact_truth' => 'Artifact truth',
'no_action_needed' => 'No action needed',
'count' => 'Count',
'guidance' => 'Guidance',
'findings' => 'Findings',
'reports' => 'Reports',
'operations' => 'Operations',
'pending_verification' => 'Pending verification',
'verified_cleared' => 'Verified cleared',
'terminal_outcomes' => 'Terminal outcomes',
'pending' => 'Pending',
'operation' => 'Operation',
'operation_description' => 'Inspect the latest review composition or refresh run.',
'executive_pack' => 'Executive pack',
'view_executive_pack' => 'View executive pack',
'executive_pack_description' => 'Open the current export that belongs to this review.',
'customer_workspace' => 'Customer workspace',
'open_customer_workspace' => 'Open customer workspace',
'customer_workspace_description' => 'Open the customer-safe review workspace prefiltered to this environment.',
'view_evidence_snapshot' => 'View evidence snapshot',
'evidence_snapshot_description' => 'Return to the evidence basis behind this review.',
],
'findings' => [
'all' => 'All',
'needs_action' => 'Needs action',
'overdue' => 'Overdue',
'risk_accepted' => 'Risk accepted',
'resolved' => 'Resolved',
'actions' => 'Actions',
'open_approval_queue' => 'Open approval queue',
],
'policy' => [
'common' => [
'policy' => 'Policy',
'policies' => 'Policies',
'type' => 'Type',
'visibility' => 'Visibility',
'category' => 'Category',
'restore' => 'Restore',
'platform' => 'Platform',
'settings' => 'Settings',
'external_id' => 'External ID',
'last_synced' => 'Last synced',
'snapshot' => 'Snapshot',
'version' => 'Version',
'actor' => 'Actor',
'created' => 'Created',
'captured' => 'Captured',
'platform_label_windows' => 'Windows',
'platform_label_android' => 'Android',
'platform_label_ios' => 'iOS',
'platform_label_macos' => 'macOS',
'platform_label_all' => 'All',
'platform_label_mobile' => 'Mobile',
'open_operation' => 'Open operation',
'more' => 'More',
'backup_name' => 'Backup name',
'backup_name_default_prefix' => 'Backup',
'source_microsoft_intune' => 'Source: Microsoft Intune',
'type_delete_to_confirm' => 'Type DELETE to confirm',
'type_delete_to_confirm_validation' => 'Please type DELETE to confirm.',
'preview_only_dry_run' => 'Preview only (dry-run)',
],
'resource' => [
'sync_action_primary' => 'Sync policies',
'sync_action_secondary' => 'Sync',
'sync_modal_heading' => 'Sync policy inventory',
'sync_modal_description' => 'This queues a background sync operation for supported policy types in the current environment.',
'sync_permission_tooltip' => 'You do not have permission to sync policies.',
'capture_snapshot_action' => 'Capture snapshot',
'capture_snapshot_modal_heading' => 'Capture snapshot now',
'capture_snapshot_modal_subheading' => 'This queues a background job that captures the latest configuration for the current environment and stores a new policy version.',
'capture_snapshot_include_assignments' => 'Include assignments',
'capture_snapshot_include_assignments_helper' => 'Captures assignment include/exclude targeting and filters.',
'capture_snapshot_include_scope_tags' => 'Include scope tags',
'capture_snapshot_include_scope_tags_helper' => 'Captures policy scope tag IDs.',
'capture_snapshot_unavailable_title' => 'Snapshot capture unavailable',
'capture_snapshot_in_progress_title' => 'Snapshot already in progress',
'capture_snapshot_in_progress_body' => 'An active run already exists for this policy. Opening run details.',
'capture_snapshot_permission_tooltip' => 'You do not have permission to capture policy snapshots.',
'visibility_source_unavailable_description' => 'The connected source did not return this policy or is currently unavailable. Historical restore remains available.',
'visibility_source_unavailable_backup_items' => 'The connected source did not return this policy or is currently unavailable. Historical backup items remain available for restore selection.',
'details_section' => 'Policy details',
'tab_general' => 'General',
'tab_json' => 'JSON',
'general_field_name' => 'Name',
'general_field_platforms' => 'Platforms',
'general_field_technologies' => 'Technologies',
'general_field_template_reference' => 'Template reference',
'general_field_setting_count' => 'Setting count',
'general_field_version' => 'Version',
'general_field_last_modified' => 'Last modified',
'general_field_created' => 'Created',
'general_field_description' => 'Description',
'general_empty_state' => 'No general metadata available.',
'general_fallback_field' => 'Field',
'template_fallback' => 'Template',
'settings_empty_state' => 'No policy snapshot available yet.',
'settings_empty_state_helper' => 'This policy has been inventoried but no configuration snapshot has been captured yet.',
'snapshot_metadata_only_helper' => 'Graph returned :status for this policy type. Only local metadata was saved; settings and restore are unavailable until Graph works again.',
'graph_error_fallback' => 'an error',
'snapshot_json_section' => 'Policy snapshot (JSON)',
'payload_size' => 'Payload size',
'large_payload_warning' => 'Large payload (:size KB) - may impact performance',
'settings_available' => 'Available',
'settings_missing' => 'Missing',
'filter_active' => 'Active',
'filter_ignored' => 'Ignored locally',
'filter_source_unavailable' => 'Source unavailable',
'filter_all' => 'All',
'export_to_backup' => 'Export to backup',
'current_backup_unavailable' => 'Current backup unavailable',
'restore_action' => 'Restore',
'restore_bulk_action' => 'Restore policies',
'restore_permission_tooltip' => 'You do not have permission to restore policies.',
'policy_restored' => 'Policy restored',
'ignore_action' => 'Ignore',
'ignore_bulk_action' => 'Ignore policies',
'ignore_permission_tooltip' => 'You do not have permission to ignore policies.',
'policy_ignored' => 'Policy ignored',
'empty_state_heading' => 'No policies in inventory yet',
'empty_state_description' => 'Run a sync to build this environment\'s policy inventory, including versions, restore readiness, and governance evidence.',
'delete_queued_body' => 'Queued deletion for :count policies.',
],
'versions' => [
'backup_quality_section' => 'Backup quality',
'related_context_section' => 'Related context',
'diff_tab' => 'Diff',
'backup_quality' => 'Backup quality',
'snapshot_mode_full' => 'Full',
'snapshot_mode_metadata_only' => 'Metadata only',
'assignment_quality' => 'Assignment quality',
'next_action' => 'Next action',
'integrity_note' => 'Integrity note',
'boundary' => 'Boundary',
'quality_highlight_metadata_only' => 'Metadata only',
'quality_highlight_assignment_fetch_failed' => 'Assignment fetch failed',
'quality_highlight_assignments_captured_separately' => 'Assignments captured separately',
'quality_highlight_orphaned_assignments' => 'Orphaned assignments',
'quality_highlight_integrity_warning' => 'Integrity warning',
'quality_highlight_unknown_quality' => 'Unknown quality',
'compact_summary_full_payload' => 'Full payload',
'compact_summary_unknown_quality' => 'Unknown quality',
'compact_summary_no_degradations_detected' => 'No degradations detected',
'summary_full_no_degradations' => 'No degradations were detected from the captured snapshot and assignment metadata.',
'summary_unknown_quality' => 'Quality is unknown because this record lacks enough completeness metadata to justify a stronger claim.',
'summary_no_degradations' => 'No degradations were detected.',
'next_action_open_version_detail' => 'Open the version detail if you need raw settings or diff context.',
'next_action_prefer_stronger_version' => 'Prefer a stronger version or inspect the version detail before restore.',
'raw_diff_advanced' => 'Raw diff (advanced)',
'prune_versions' => 'Prune versions',
'prune_modal_description' => 'Only versions captured more than the specified retention window (in days) are eligible. Newer versions will be skipped.',
'retention_days' => 'Retention days',
'retention_days_helper' => 'Versions captured within the last N days will be skipped.',
'manage_permission_tooltip' => 'You do not have permission to manage policy versions.',
'restore_versions' => 'Restore versions',
'restore_versions_modal_heading' => 'Restore :count policy versions?',
'restore_versions_modal_description' => 'Archived versions will be restored back to the active list. Active versions will be skipped.',
'force_delete_versions' => 'Force delete versions',
'force_delete_versions_modal_heading' => 'Force delete :count policy versions?',
'force_delete_versions_modal_description' => 'This is permanent. Only archived versions will be permanently deleted; active versions will be skipped.',
'restore_via_wizard' => 'Restore via wizard',
'restore_via_wizard_modal_heading' => 'Restore version :version via wizard?',
'restore_via_wizard_modal_subheading' => 'Creates a 1-item backup set from this snapshot and opens the restore run wizard prefilled.',
'restore_run_permission_tooltip' => 'You do not have permission to create restore runs.',
'metadata_only_tooltip' => 'Disabled for metadata-only snapshots (Graph did not provide policy settings).',
'restore_disabled_metadata_title' => 'Restore disabled for metadata-only snapshot',
'restore_disabled_metadata_body' => 'This snapshot only contains metadata; Graph did not provide policy settings to restore.',
'different_tenant_title' => 'Policy version belongs to a different environment',
'missing_policy_title' => 'Policy could not be found for this version',
'backup_set_name' => 'Policy version restore - :policy - v:version',
'archive' => 'Archive',
'archived_title' => 'Policy version archived',
'force_delete' => 'Force delete',
'force_deleted_title' => 'Policy version permanently deleted',
'restored_title' => 'Policy version restored',
'empty_state_heading' => 'No policy versions',
'empty_state_description' => 'Capture or sync policy snapshots to build a version history.',
'open_backup_sets' => 'Open backup sets',
'related_entry_current_policy_version' => 'Current policy version',
'related_entry_policy' => 'Policy',
'related_entry_policy_version' => 'Policy version',
'related_action_view_policy' => 'View policy',
'related_action_view_policy_version' => 'View policy version',
'reference_policy_number' => 'Policy #:id',
'reference_version_number' => 'Version :version',
'related_record_fallback' => 'Open related record',
'assignment_fetch_failed_orphaned' => 'Assignment fetch failed and orphaned targets were detected.',
'assignment_fetch_failed' => 'Assignment fetch failed during capture.',
'assignment_orphaned' => 'Orphaned assignment targets were detected.',
'assignment_no_issues' => 'No assignment issues were detected from captured metadata.',
'fallback_display_name' => 'Version :version',
],
'relation' => [
'restore_to_microsoft_intune' => 'Restore to environment',
'restore_heading' => 'Restore version :version to environment?',
'restore_subheading' => 'Creates a restore run for the current environment using this policy version snapshot.',
'missing_context_title' => 'Missing tenant or user context.',
'restore_run_failed_title' => 'Restore run failed to start',
'restore_run_started_title' => 'Restore run started',
'no_versions_captured' => 'No versions captured',
'no_versions_captured_description' => 'Capture or sync this policy again to create version history entries.',
],
'badges' => [
'active' => 'Active',
'ignored_locally' => 'Ignored locally',
'source_unavailable' => 'Source unavailable',
'ignored_source_unavailable' => 'Ignored + source unavailable',
],
'taxonomy' => [
'policies' => 'Policies',
],
],
'notifications' => [
'locale_override_saved' => 'Language override applied.',
'locale_override_cleared' => 'Language override cleared.',
'user_preference_saved' => 'Language preference saved.',
'user_preference_cleared' => 'Language preference cleared.',
'workspace_settings_saved' => 'Workspace settings saved',
'workspace_settings_unchanged' => 'No settings changes to save',
'workspace_setting_reset' => 'Workspace setting reset to default',
'setting_already_default' => 'Setting already uses default',
],
'validation' => [
'unsupported_locale' => 'Choose a supported language.',
],
];