{"common":{"homeTabLabel":"Home","homeTabDescription":"Welcome to your home page","accountMembers":"Team Members","membersTabDescription":"Here you can manage the members of your team.","billingTabLabel":"Billing","billingTabDescription":"Manage your billing and subscription","dashboardTabLabel":"Dashboard","settingsTabLabel":"Settings","profileSettingsTabLabel":"Profile","subscriptionSettingsTabLabel":"Subscription","dashboardTabDescription":"An overview of your account's activity and performance across all your projects.","settingsTabDescription":"Manage your settings and preferences.","emailAddress":"Email Address","password":"Password","modalConfirmationQuestion":"Are you sure you want to continue?","imageInputLabel":"Click here to upload an image","cancel":"Cancel","clear":"Clear","notFound":"Not Found","forbidden":"Forbidden","backToHomePage":"Back to Home","goBack":"Try Again","genericServerError":"Sorry, something went wrong.","genericServerErrorHeading":"Sorry, something went wrong while processing your request. Please contact us if the issue persists.","pageNotFound":"Page not found","pageNotFoundSubHeading":"The page you're looking for doesn't exist or has been moved. Check the URL or head back to the homepage.","tenantNotFound":{"description":"This item doesn't exist in this workspace, or you don't have access to it. Check the link, or go back to the workspace.","backToWorkspace":"Back to workspace","reference":"Support reference: {{reference}}"},"genericError":"Something went wrong","genericErrorSubHeading":"We ran into an unexpected issue. Please try again, and if the problem persists, reach out to our support team.","anonymousUser":"Anonymous","tryAgain":"Try Again","theme":"Theme","language":"Language","lightTheme":"Light","darkTheme":"Dark","systemTheme":"System","expandSidebar":"Expand Sidebar","collapseSidebar":"Collapse Sidebar","documentation":"Documentation","getStarted":"Get Started","getStartedWithPlan":"Get Started with {{plan}}","retry":"Retry","contactUs":"Contact Us","loading":"Loading. Please wait...","yourAccounts":"Your Accounts","continueKey":"Continue","skip":"Skip","info":"Info","signedInAs":"Signed in as","buildVersion":"Build {{sha}}","pageOfPages":"Page {{page}} of {{total}}","dataTable":{"pagination":"Pagination","firstPage":"First page","previousPage":"Previous page","nextPage":"Next page","lastPage":"Last page","showingRange":"Showing {{from}} to {{to}} of {{total}} rows"},"showingRecordCount":"Showing {{pageSize}} of {{totalCount}} rows","noData":"No data available","pageNotFoundHeading":"404","pageForbidden":"Access denied","pageForbiddenSubHeading":"You don't have permission to view this page. If you believe this is a mistake, contact your administrator.","pageForbiddenHeading":"403","errorPageHeading":"500","notifications":"Notifications","notificationsWithCount":"Notifications, {{count}} unread","notificationsList":"Notification list","dismissNotification":"Dismiss notification","noNotifications":"No notifications","notificationOpensWorkspace":"Opens in {{workspace}}","notificationWorkspaceSwitched":"You are now in {{workspace}}","justNow":"Just now","newVersionAvailable":"New version available","newVersionAvailableDescription":"A new version of the app is available. It is recommended to refresh the page to get the latest updates and avoid any issues.","newVersionSubmitButton":"Reload and Update","back":"Back","routes":{"home":"Home","account":"Account","members":"Members","billing":"Billing","dashboard":"Dashboard","insights":"Insights","insightsOverview":"Overview","insightsDashboards":"Insights dashboards","settings":"Settings","profile":"Profile","application":"Application","translations":"Translations","translationCoverage":"Translation coverage","domainEventDelivery":"Domain Event Delivery","helpSupport":"Help & Support","finance":"Finance","admin":"Admin","tasks":"Tasks","knowledgeBase":"Knowledge Base","training":"Training","forum":"Forum","chat":"Chat","businessCapability":"Business capability","businessUnderstanding":"Business understanding","platformModuleSuffix":"platform","forms":"Forms","myWork":"My work","processDesigner":"Process designer","myTasks":"My tasks","data":"Data","systemAdvisory":"System Advisory","businessProcesses":"Business Processes","processAdmin":"Process admin","dataEntities":"Data Entities","operations":"Operations","agentDefinitions":"Agent definitions","aiProviders":"AI Models & Keys","fieldSecurity":"Field Security","navigationMenuEditor":"Navigational Menu Editor","publicSite":"Public Site","publicSiteLeads":"Public Site Leads","financeRateCards":"Finance rate cards","runCost":"Run cost","usageCost":"Usage cost","costExplorer":"Cost explorer","costModels":"Cost models","revenueAndMargin":"Revenue and margin","revenueStreams":"Revenue streams","costSources":"Cost sources","financeBudgets":"Finance budgets","financePeriodClose":"Finance period close","journals":"Journals","unpricedUsage":"Unpriced usage","externalGl":"External GL","companyRoles":"Company Roles","reportingLines":"Reporting lines","glExport":"GL export","financeScenarios":"Scenarios","financeForecast":"Forecast and alerts","epSuggestions":"EP Suggestions","commandCenter":"Command Center","marketplace":"Marketplace","partnerDashboard":"Partner Dashboard","setupHub":"Setup hub","assistantProposals":"Assistant proposals","workflows":"Workflows","workflowAdmin":"Workflow admin","createFormFromEntity":"Create form from entity","testCenter":"Test Center","createNew":"Create new","createNewLabel":"Create new {{label}}","communityForum":"Community Forum","fxCoverage":"FX coverage"},"operativeWorkflow":{"pageTitle":"Workflows","pageDescription":"Run workflows. Start a new instance or open an existing one.","taskInbox":"Task inbox","taskInboxHint":" — all open steps assigned to you or unassigned in your swimlanes.","noWorkflowsTitle":"No published workflows yet","noWorkflows":"Design and publish a business process before you can start a running instance. Setup Hub walks you through the path.","emptyDesignCta":"Design a business process","emptyCreateCta":"Open workflow admin","emptySetupHubCta":"Back to Setup Hub","colWorkflow":"Workflow","colSlug":"Slug","colVersion":"Version","colAction":"Action","startInstance":"Start","openWorkflow":"Open","openWorkflowAria":"Open workflow {{slug}}","runReport":{"groupLabel":"Run report","generate":"Generate run report","generating":"Generating run report…","view":"View run report","download":"Download run report","loading":"Loading run reports…","empty":"No run report yet"},"advancedMeta":{"regionLabel":"Operative workspace context","title":"Operative workspace","stepsSummary":"{{completed}}/{{count}} steps","actorsSummary":"{{count}} actors","entitiesSummary":"{{count}} fields","owner":"Owner","assignee":"Assignee","created":"Created","updated":"Updated","sla":"SLA","unassignedOwner":"Unassigned owner","unassigned":"Unassigned","capturedData":"Captured data","noCapturedData":"No captured data yet for this step.","nextActions":"Permitted next actions","permitted":"Permitted","unavailable":"Unavailable","blockers":"Blockers","history":"History","stepKeyTooltip":"Step key: {{key}}","noAssignee":"No assignee","capturedDataHidden":"{{count}} more fields not shown","capturedDataHidden_one":"{{count}} more field not shown","capturedDataHidden_other":"{{count}} more fields not shown"},"catalogReadErrorTitle":"The workflow catalogue could not be loaded","catalogReadErrorDescription":"Something went wrong while reading the catalogue. Trying again usually works.","catalogReadForbiddenTitle":"You do not have access to the workflow catalogue","catalogReadForbiddenDescription":"Ask an administrator for access to workflows in this workspace.","instanceReadErrorTitle":"This workflow run could not be loaded","instanceReadErrorDescription":"Something went wrong while reading this run. Trying again usually works.","instanceReadForbiddenTitle":"You do not have access to this workflow run","instanceReadForbiddenDescription":"Ask an administrator for access to this workflow.","readRetry":"Try again"},"roles":{"owner":{"label":"Owner"},"member":{"label":"Member"},"consultant_manager":{"label":"Practice manager"}},"otp":{"requestVerificationCode":"Request Verification Code","requestVerificationCodeDescription":"We must verify your identity to continue with this action. We'll send a verification code to the email address {{email}}.","sendingCode":"Sending Code...","sendVerificationCode":"Send Verification Code","enterVerificationCode":"Enter Verification Code","codeSentToEmail":"We've sent a verification code to the email address {{email}}.","verificationCode":"Verification Code","enterCodeFromEmail":"Enter the 6-digit code we sent to your email.","verifying":"Verifying...","verifyCode":"Verify Code","requestNewCode":"Request New Code","errorSendingCode":"Error sending code. Please try again.","errors":{"noEmail":"Your account has no email address, so we can't send a verification code. Add one in your account settings.","emailMismatch":"That email address doesn't match your account. Reload the page and try again.","sendFailed":"We couldn't send your verification code. Please try again.","invalidEmail":"Please enter a valid email address.","invalidCode":"Please enter the 6-digit verification code."}},"cookieBanner":{"title":"Hey, we use cookies 🍪","description":"This website uses cookies to ensure you get the best experience on our website.","reject":"Reject","accept":"Accept"},"dropzone":{"success":"Successfully uploaded {{count}} file(s)","error":"Error uploading {{count}} file(s)","errorMessageUnknown":"An unknown error occurred.","errorMessageFileUnknown":"Unknown file","errorMessageFileSizeUnknown":"Unknown file size","errorMessageFileSizeTooSmall":"File size is too small","errorMessageFileSizeTooLarge":"File size is too large","uploading":"Uploading...","uploadFiles":"Upload {{count}} file(s)","maxFileSize":"Maximum file size: {{size}}","maxFiles":"You may upload only up to {{count}} files, please remove {{files}} files.","dragAndDrop":"Drag and drop or","select":"select files","toUpload":"to upload","errorMessage":"This file could not be uploaded. {{message}}"},"sessionTimeoutWarningTitle":"Session about to expire","sessionTimeoutWarningDescription":"For your security, you will be signed out in {{timeRemaining}} unless you continue activity.","sessionTimeoutWarningContinue":"Continue session","operationsWorkbench":{"pageTitle":"Operations","pageDescription":"Filter-first work queue — action priority ordering, cursor pagination, then open the work.","links":{"workflows":"All workflows","inbox":"My task inbox"},"empty":{"title":"No operational activity yet","description":"When workflow runs start, they will appear here in stage lanes with workforce awareness.","openWorkflows":"Open workflows"},"filters":{"title":"Filters","workflow":"Workflow","version":"Version","team":"Team","assignee":"Assignee","stage":"Stage","signal":"Signal","age":"Age","sla":"SLA","all":"All","unassignedOption":"Unassigned","more":"More filters","reset":"Reset","resultCount":"{{count}} results","allActive":"All filters are active — remove a chip to adjust.","degradedReference":"reference unavailable"},"savedViews":{"title":"Saved views","empty":"No saved views yet. Set filters, name the view, then save to share within the tenant.","scopeShared":"Shared","scopePersonal":"Personal"},"bottleneck":{"none":"No bottleneck in {{stage}}","watch":"{{stage}} watch: {{wip}} WIP, rising aging","heat":"{{stage}} heat: {{wip}} WIP, {{overdue}} overdue","critical":"{{stage}} critical bottleneck: {{wip}} WIP, {{overdue}} overdue"},"actionSummary":{"title":"Action-first triage","unassigned":"Unassigned","slaBreached":"SLA breached","atRisk":"At risk","blocked":"Blocked","failedRetrying":"Failed / retrying","zeroUnassigned":"All open work has an owner","zeroSlaBreached":"No SLA breaches","zeroAtRisk":"Nothing at risk","zeroBlocked":"Nothing blocked","zeroFailedRetrying":"No failures or retries"},"workByState":{"title":"Work by state","hint":"States are independent — select a state to filter the queue.","intake":"Intake","active":"Active","waiting":"Waiting","blocked":"Blocked","suspended":"Suspended","compensating":"Compensating","done":"Done","cancelled":"Cancelled"},"queue":{"title":"Work queue","subtitle":"{{count}} matching transactions — sorted by action priority, then SLA and age","owner":"Owner","unassigned":"Unassigned","stale":"stale","noStep":"No open step","age":"{{duration}} old","open":"Open","preview":"Preview","viewQueue":"Queue list","viewKanban":"Kanban lanes","kanbanDisabled":"Kanban is available when the filtered set has 100 or fewer items","emptyTitle":"No matching work in this queue","emptyDescription":"Adjust filters or wait for new workflow activity.","pagination":{"next":"Next page","first":"Back to first page"},"sla":{"ok":"SLA OK","at_risk":"At risk","breached":"SLA breached"},"exception":{"misconfig":"Misconfiguration detected","failed_retrying":"Failed — retrying","step_failed":"Step failed","blocked":"Blocked","sla_breached":"SLA breached"}},"actions":{"claim":"Claim","assign":"Assign","assignTo":"Assign to…","assignDescription":"Choose an eligible team member for this step.","suspend":"Suspend","retry":"Retry","bulkToolbar":"Bulk queue actions","selectedCount":"{{count}} selected","bulkAssign":"Bulk assign","bulkSuspend":"Bulk suspend","bulkRetry":"Bulk retry","bulkClaim":"Bulk claim","bulkAssigneeRequired":"Select an assignee first.","clearSelection":"Clear selection","claimSuccess":"Task claimed.","assignSuccess":"Task assigned.","suspendSuccess":"Work suspended.","retrySuccess":"Retry requested.","staleState":"This item changed — queue refreshed.","failed":"Action failed.","bulkResult":"{{succeeded}} succeeded, {{failed}} failed ({{stale}} stale).","unavailable":{"noOpenStep":"No open step to act on","alreadyAssigned":"Already assigned","notUnassigned":"Not unassigned","noPermissionClaim":"You cannot claim this task","noPermissionAssign":"You cannot assign this task","noPermissionSuspend":"You cannot suspend this work","noPermissionRetry":"You cannot retry this work","stepNotActive":"Step is not active","notRetryable":"Not eligible for retry","alreadySuspended":"Already suspended","delegatedLimited":"Delegated access does not include this action"}}},"kb.article.reviseButton":"Revise article","kb.article.continueRevisionButton":"Continue revision","kb.revision.pendingBannerTitle":"Revision in progress","kb.revision.pendingBannerDescription":"Readers still see the published version until this revision is published.","kb.revision.saveButton":"Save revision","kb.revision.publishButton":"Publish revision","kb.revision.editDescription":"Update the article content. Readers keep seeing the published version until you publish this revision.","kb.revision.startPromptTitle":"Start a revision","kb.revision.startPromptDescription":"Readers keep seeing the published version until you publish a revision. Start a revision to edit the article.","kb.revision.startErrorTitle":"Could not start revision","kb.revision.startErrorDescription":"We could not start a revision for this article. Refresh the page and try again, or contact support if it keeps happening.","kb.revision.backToArticleButton":"Back to article","navigation":{"tasksNoneTitle":"No task views yet","tasksNoneDescription":"Task views are the pages your team works from day to day. Add the first one to fill this panel.","tasksNotPermittedDescription":"No task views are available to you yet. Your workspace administrator can add them.","tasksAllPromotedTitle":"Everything is at the top level","tasksAllPromotedDescription":"All of your task views are currently shown as their own entries in the sidebar, so there is nothing left in this panel.","manageNavigation":"Manage navigation","workspaceSections":"Workspace sections"},"tax":{"providerFailure":{"unreachable":{"title":"The tax service could not be reached","guidance":"It may be a brief interruption. Try again in a moment."},"timeout":{"title":"The tax service did not answer in time","guidance":"It may be busy. Try again in a moment."},"declined":{"title":"The tax service declined to determine this document","guidance":"Retrying will not change the answer. Check the document’s details and your registration with the service."},"unusableAnswer":{"title":"The tax service’s answer could not be used","guidance":"The answer did not hold together, so none of it was accepted. Quote the reference below if you contact support."},"evidenceRejected":{"title":"The determination could not be recorded","guidance":"The answer arrived but the record of it was refused, so nothing was kept. Quote the reference below if you contact support."},"notConfigured":{"title":"No tax service is configured for this workspace","guidance":"An administrator needs to finish setting it up before documents can be determined this way."},"unknown":{"title":"The tax service could not determine this document","guidance":"Nothing about the document changed. Quote the reference below if you contact support."},"nothingWritten":"Nothing on this document was changed.","reference":"Reference:","retry":"Try again"},"field":{"inclusivity":"Included in the price","jurisdiction":"Jurisdiction","jurisdictionCode":"Code","rateRatio":"Rate (0.16 = 16%)","taxType":"Tax type","treatment":"Treatment","zeroReason":"Reason, if zero"},"inclusivity":{"exclusive":"No","inclusive":"Yes"},"panel":{"addComponent":"Add tax","determineAndSubmit":"Determine and submit","determining":"Determining…","explainer":"You state the jurisdiction, kind and rate. The amounts are calculated and cannot be typed over.","noLines":"Add a line before determining tax.","removeComponent":"Remove","title":"Tax"},"treatment":{"charged":"Charged","informational":"Informational","withheld":"Withheld"},"zeroReason":{"exempt":"Exempt","none":"—","outOfScope":"Out of scope","reverseCharge":"Reverse charge","thresholdNotMet":"Threshold not met","zeroRated":"Zero rated"}},"views":{"activeFilters":"Active filters"},"error":"Error","planCardLabel":"Plan","planCardDescription":"Choose the plan that fits how you work.","planPickerAlertErrorTitle":"Sorry, we couldn't start your checkout.","planPickerAlertErrorDescription":"Something went wrong setting up your payment. Please try again, or contact us if the problem continues.","repeatPassword":"Repeat Password","status":{"completed":"Completed","inProgress":"In progress","pending":"Waiting","waiting":"Waiting for event","skipped":"Skipped","expired":"Expired","cancelled":"Cancelled","failed":"Failed","draft":"Draft","final":"Final","superseded":"Superseded","deleted":"Deleted","blocked":"Blocked","active":"Active","archived":"Archived","activated":"Activated","approved":"Approved","pendingApproval":"Pending approval","rejected":"Rejected","refused":"Refused","refusedSeparationOfDuties":"Refused — separation of duties","posted":"Posted","accepted":"Accepted","reconciled":"Reconciled","awaitingRelease":"Awaiting release","paid":"Paid","submitted":"Submitted","issued":"Issued","voided":"Voided"},"workflowRun":{"blockedNotification":"A workflow run stopped before it could finish. Open it to see why and what to do next.","taskAssignedNotification":"A task was assigned to you. Open it to see what is needed."},"newReleaseHeading":"A new version was released","newReleaseSubHeading":"Loading it now — this only takes a moment.","detailLevel":{"label":"Detail level","simple":"Simple","advanced":"Advanced"},"openProfileMenu":"Open your profile menu","superAdmin":"Super Admin","modulesNavigation":"Modules","toggleSidebar":"Toggle sidebar","expandSubmenu":"Expand submenu","toggleTheme":"Toggle theme","density":{"switchToComfortable":"Switch to comfortable density","switchToCompact":"Switch to compact density","toggleHint":"Toggle comfortable / compact density (⇧D)","compact":"Compact","comfortable":"Comfortable"},"documentViewer":{"zoomOut":"Zoom out","resetZoom":"Reset zoom","zoomIn":"Zoom in","download":"Download","openInNewTab":"Open in new tab","cannotPreview":"This document type can’t be previewed here. Download it to open in the right application.","downloadToView":"Download to view"}},"integrations":{"integration_signature":"The request signature is invalid.","integration_schema":"The payload does not match the declared schema.","integration_replay":"The request timestamp or nonce is outside the replay policy.","integration_idempotency":"The request needs a valid idempotency key.","integration_correlation":"The correlated record or workflow instance was not found in this account.","integration_declaration":"The integration declaration is invalid.","integration_credential":"A required credential slot is empty.","integration_delivery":"The HTTP delivery failed.","integration_egress":"The destination is not permitted by the account egress policy.","integration_runtime":"The runtime operation could not complete.","integration_not_found":"The integration endpoint was not found.","title":"Integrations","editor":"Advanced JSON declaration","key":"Key","kind":"Kind","configuration":"Configuration","enabled":"Enabled","save":"Save","replay":"Replay","attempts":"Attempts","definitions":"Definitions","runAs":"Run as member","chooseMember":"Select a workspace member.","advancedJson":"Advanced JSON","editorNew":"New declaration","editorEditing":"Editing {{key}}","newDeclaration":"New declaration","edit":"Edit","enableNamed":"Enable {{key}}","statusEnabled":"Enabled","statusDisabled":"Disabled","enabledNotice":"{{key}} is enabled.","disabledNotice":"{{key}} is disabled.","noDefinitions":"No integrations declared yet. Declare one below.","saved":"Saved {{key}}.","saving":"Saving…","fixIssues":"Fix the highlighted fields, then save again.","keyHint":"Letters, numbers and . _ : - (up to 160).","enabledHint":"Only enabled integrations run. Keep it disabled while you set it up.","advancedHint":"The declaration as JSON, for what the form does not cover.","advancedOnly":"This declaration uses options the form cannot show, so it opens in Advanced JSON.","openAdvanced":"Edit as JSON","openVisual":"Back to the form","optional":"Optional","kinds":{"connector":"Connector","endpoint":"Endpoint (inbound)","subscription":"Subscription"},"kindHints":{"connector":"An outbound HTTP call the platform makes for you, with retries.","endpoint":"An inbound address another system calls to start or update work here.","subscription":"Runs an action whenever a platform event happens."},"summary":{"connector":"{{method}} to {{host}}","subscription":"When {{event}} happens","endpoint":{"hmac":"HMAC signature · credential {{slot}}","bearer":"Bearer token · credential {{slot}}"}},"connector":{"requestHeading":"Request","method":"Method","url":"URL","urlHint":"The host must be on this workspace’s egress allowlist.","allowHost":"Allow {{host}}","headers":"Headers","headersHint":"An authentication header takes a credential from the vault by name; the secret is never shown. Only Content-Type and Accept take a fixed value.","noHeaders":"No headers.","headerName":"Header name","headerSource":"Value from","sourceCredential":"Credential","sourceValue":"Fixed value","removeHeader":"Remove header {{name}}","credential":"Credential","chooseCredential":"Choose a credential","prefix":"Prefix","prefixNone":"None","prefixBearer":"Bearer","headerValue":"Value","noCredentials":"There are no credentials in the vault yet.","manageCredentials":"Manage credentials","addHeader":"Add header","body":"Body template","bodyHint":"JSON. Insert request data with {\"expr\": …} and a credential with {\"slot\": \"key\"}.","deliveryHeading":"Delivery","timeoutMs":"Timeout (ms)","maxAttempts":"Maximum attempts","baseSeconds":"First retry after (s)","maxSeconds":"Longest wait between retries (s)","rangeHint":"{{min}}–{{max}}","retryHint":"Each retry waits twice as long as the one before, up to the longest wait.","testMode":"Test mode","testModeHint":"Checks every credential and records the call it would make, without sending it.","protectedEgress":{"heading":"Protected values this connector may send","hint":"Nothing chosen: every protected value is left out of the request. A chosen field is sent only when an owner (or someone a policy names) allowed it, and every send is recorded. Secrets and one-way values are never sent.","entity":"Entity","none":"Send no protected values","fields":"Encrypted fields to send","noEntities":"No active entity has encrypted fields."}},"endpoint":{"identityHeading":"Identity","runAsHint":"The member whose permissions the work runs with.","auth":"Authentication","authKinds":{"hmac":"HMAC signature","bearer":"Bearer token"},"credentialSlot":"Verification credential","requestHeading":"Request","payloadSchema":"Payload schema","payloadSchemaHint":"JSON Schema the request body must match. {} accepts any object.","correlationKind":"Correlates to","correlationKinds":{"record":"A record","workflow_instance":"A workflow instance"},"correlationPath":"Correlation field","pathHint":"A field of the request, for example payload.id.","correlationWorkflowId":"Workflow","correlationKeyName":"Correlation key name","idempotencyPath":"Idempotency field","replayWindowSeconds":"Replay window (s)"},"subscription":{"eventKey":"Event","eventKeyHint":"The event key, for example orders.approved."},"action":{"heading":"Then","kind":"Action","kinds":{"start_workflow":"Start a workflow","write_record":"Write a record","resume_step":"Resume a waiting step","call_connector":"Call a connector"},"workflowId":"Workflow","entityId":"Data entity","op":"Operation","ops":{"create":"Create","update":"Update","transition":"Transition"},"transitionKey":"Transition key","eventKey":"Event key","connectorKey":"Connector","chooseConnector":"Choose a connector","noConnectors":"Declare a connector first.","chooseWorkflow":"Choose a workflow","chooseEntity":"Choose a data entity"},"issues":{"keyRequired":"Enter a key.","keyInvalid":"Use only letters, numbers and . _ : - (up to 160).","urlRequired":"Enter the URL.","urlInvalid":"This is not a valid URL.","urlScheme":"The URL must start with https:// or http://.","urlSecret":"Do not put a secret in the URL. Use a credential header instead.","hostNotAllowed":"{{host}} is not on the egress allowlist.","headerNameRequired":"Enter the header name.","headerNameInvalid":"{{name}} is not a valid header name.","headerReserved":"The platform sets {{name}}; it cannot be declared.","headerDuplicate":"{{name}} is declared twice.","headerSlotRequired":"Choose the credential for {{name}}.","slotRequired":"Choose a credential.","slotInvalid":"{{slot}} is not a valid credential key.","slotUnknown":"There is no credential {{slot}} in the vault.","headerNeedsCredential":"{{name}} must take its value from a credential. Only Content-Type and Accept take a fixed value.","headerValueTooLong":"The value of {{name}} is too long (256 characters at most).","bodyInvalid":"The body template is not valid JSON.","bodySecret":"The body looks like it contains a secret. Insert it with {\"slot\": \"key\"} instead.","timeoutRange":"Enter a timeout from 100 to 60000 ms.","retryAttemptsRange":"Enter from 1 to 50 attempts.","retryBaseRange":"Enter from 1 to 3600 seconds.","retryMaxRange":"Enter from 1 to 86400 seconds.","retryMaxBelowBase":"The longest wait cannot be shorter than the first retry.","declarationInvalid":"The declaration is not valid.","runAsRequired":"Choose the member it runs as.","payloadSchemaInvalid":"The payload schema must be a JSON object.","pathRequired":"Enter the request field.","pathInvalid":"This field path is not allowed.","replayRange":"Enter from 1 to 86400 seconds.","workflowIdInvalid":"Choose a workflow.","entityIdInvalid":"Choose a data entity.","transitionKeyRequired":"Enter the transition key.","eventKeyRequired":"Enter the event key.","connectorRequired":"Choose a connector.","connectorUnknown":"There is no connector {{connector}}.","endpointCannotCallConnector":"An endpoint cannot call a connector directly. Use a subscription.","jsonInvalid":"The JSON is not valid.","protectedEgressEntity":"Choose the entity whose protected values this connector may send.","protectedEgressFields":"Choose at least one encrypted field, or send no protected values."},"pageDescription":"Connect other systems: outbound connectors, inbound endpoints and event subscriptions.","attemptsEmpty":"No attempts yet.","attemptNumber":"Attempt {{number}}","technicalDetails":"Technical details","operationId":"Operation","correlation":"Correlation","attemptStatus":{"accepted":"Accepted","duplicate-replayed":"Duplicate, answered again","refused":"Refused","delivered":"Delivered","test":"Test (not sent)","retry":"Will retry","dead-letter":"Stopped after retries","requeued":"Queued again"}},"integration":{"refusals":{"noExecutionIdentity":"The endpoint has no current execution member. Select a workspace member before receiving requests.","connectorLiteralSecret":"A secret is typed into this connector's URL or body. Declarations are backed up and promoted with the workflow, so a credential must come from a credential slot: remove it and reference a slot instead.","templatedAuthPosition":"Step {{step}} was stopped before it called out: {{name}} would carry a value from the field {{field}}, and a credential may only come from the step's credential or connector. Remove that value, choose a credential for the step, and publish a new version.","literalAuthPosition":"Step {{step}} was stopped before it called out: {{name}} holds a credential typed into the step. Remove it, choose a credential for the step instead, and publish a new version.","urlUserinfo":"Step {{step}} was stopped before it called out: its URL carries a user name or password. Remove it from the URL, choose a credential for the step instead, and publish a new version."}},"authorization":{"refusals":{"action":"Your role does not allow this action. Ask a workspace owner or administrator to review your role and permissions.","field":"You cannot change one or more of these fields.","identity":"Your identity could not be authorized for this workspace.","override":"An override requires workspace ownership and an audit reason.","policy":"A workspace policy does not allow this operation.","relationship":"A related record does not meet the access policy.","row":"This record does not meet the access policy.","sandbox":"Test personas are available only to owners in an enabled sandbox.","segregation":"This action requires a different person to preserve separation of duties.","transition":"This transition is not allowed by the access policy.","unavailable":"Authorization could not be verified. Try again later."},"editor":{"title":"Authorization policies","new":"New policy","advanced":"Advanced JSON","action":"Action","resource":"Resource ID","resourceEntity":"Entity","resourceEntityPick":"Choose an entity…","roles":"Company roles (none selected denies all)","allRoles":"Allow all company roles","row":"Required row values","writable_fields":"Writable fields (comma separated; blank allows all)","transition_keys":"Allowed transitions (comma separated; blank allows all)","distinct_actor_fields":"Distinct actor fields (comma separated)","relationships":"Relationships: field and target entity ID","denyOwn":"Refuse own records","enabled":"Enabled","save":"Save policy","saved":"The policy was saved.","persona":"Sandbox test persona","member":"Workspace member","reason":"Reason","switch":"Switch test persona","switched":"The test persona switch was recorded.","record":"Record ID","values":"Proposed values (JSON)","preview":"Preview with selected policy action","allowed":"This action is allowed by the policy.","add":"Add condition","remove":"Remove","history":"Authorization history","actor":"Actor","effectiveActor":"Effective actor","outcome":"Outcome","time":"Time","refused":"Refused","override":"Override","key":"Field","value":"Value","restore":"Restore my identity.","restored":"Your identity was restored and recorded.","persistentPersona":"The selection persists in this workspace and applies to supported writes until you restore your identity."},"adminAuthority":{"title":"You don't have access to this page","backHome":"Back to workspace home","reasons":{"settingsManage":"This page needs the Manage settings permission. Ask a workspace owner or administrator to grant it, or to make the change for you.","owner":"Only the workspace owner can use this page. Ask them if something here needs to change.","formsManage":"This page needs permission to design forms and processes (Manage workflows, or the Author responsibility in Process Admin). Ask a workspace owner or administrator."},"refusals":{"settingsManage":"You need the Manage settings permission to do this. Nothing was changed.","owner":"Only the workspace owner can make this change. Nothing was changed.","formsManage":"You need permission to design forms and processes to do this. Nothing was changed."}}},"tenant-backup":{"queued":"The export is queued.","completed":"The export is ready to download.","nonBlankTenant":"Restore requires a blank tenant.","unsupportedRecoveryData":"This archive contains unsupported recovery data.","digestMismatch":"The archive failed its integrity check.","title":"Backup","exportTitle":"Export a backup","exportDescription":"The archive includes configuration and history. Document bytes and credentials are excluded.","exportAction":"Create an export","download":"Download the archive","compareTitle":"Compare backups","compareDescription":"Compare every exported row. Changes to identifiers remain visible.","baseBundle":"Choose the base archive.","compareLive":"Compare against this tenant.","candidateBundle":"Choose the comparison archive.","compareAction":"Compare","differenceCount":"Differences found: {{count}}","artefact":"Artefact","change":"Change","fields":"Fields","added":"Added","removed":"Removed","changed":"Changed","restoreTitle":"Restore a backup","restoreUnavailable":"Restoring backups is not available in this version.","checkTarget":"Check this tenant","blankTarget":"This tenant is blank. This check does not reserve it.","ownerRequired":"Backups need a workspace owner, and restoring a backup needs the primary owner.","disabled":"Backup tools are currently disabled.","selectBundle":"Choose an archive first.","archiveTooLarge":"The archive exceeds the 25 MiB limit.","comparisonFailed":"Comparison failed. Check archive integrity and try again.","requestRefused":"The request was refused.","readFailed":"Progress could not be read. Try again.","workerFailed":"The worker failed. Retry the export.","status":{"pending":"The export is queued.","running":"The export is running.","completed":"The archive is ready to download.","failed":"The export failed."},"downloadRefused":"The request was refused.","invalidRequest":"The request was refused.","notFound":"The request was refused.","checkpointFailed":"The request was refused.","missingReference":"The request was refused.","invalidContent":"The request was refused.","secretContent":"The request was refused.","restoreTarget":"Blank workspace","selectTarget":"Choose a blank workspace","typeConfirmation":"Type this sentence to confirm:","restoreAction":"Restore into a blank workspace","confirmationRequired":"Type the exact target workspace slug.","jobAlreadyRunning":"A restore is already running in this workspace.","archiveIncomplete":"Choose a complete archive exported from this workspace.","incompleteRevisionChain":"The archive is missing part of the record history.","restoreCancelled":"The restore was cancelled. Completed batches are preserved.","cancelRequested":"Cancellation requested. The current batch will finish first.","cancelRestore":"Cancel restore","resumeRestore":"Resume restore","restoreBatches":"Completed batches: {{count}}","restoreCounts":"{{restored}} restored, {{replayed}} replayed, {{refused}} refused of {{total}}","restored":"Restored","replayed":"Replayed","refused":"Refused","downloadIdentityMap":"Download identity map","zeroDifferences":"No differences found.","comparisonUnavailable":"Comparison is unavailable for this restore.","comparisonPending":"Comparison is pending.","credentialRequired":"Credentials must be supplied separately.","newRestore":"Start another restore","restorePhases":{"configuration":"Configuration drafts","activation":"Activation","records":"Records","history":"Ledger and runs","comparison":"Comparison"},"restoreStatus":{"pending":"The restore is queued.","running":"The restore is running.","completed":"The restore report is ready.","refused":"The restore was refused. Read the report.","failed":"The restore stopped. Resume from its checkpoint."},"documentContentUnavailable":"The request was refused.","missingActor":"The request was refused.","dependencyCycle":"The request was refused.","restoreIntentMismatch":"The request was refused.","unsupportedVersion":"The request was refused.","unsupportedArtefact":"The request was refused.","configurationMismatch":"The request was refused.","invalidConfiguration":"The request was refused.","duplicateArtefact":"The request was refused.","importRefused":"The request was refused.","recordAlreadyExists":"The request was refused.","invalidOperationKey":"The request was refused.","restoreAdapterUnavailable":"The request was refused.","restoreIntent":"Source: {{source}} → Target: {{target}} · Archive: {{archive}}","typeTargetSlug":"Type the target workspace slug to confirm:","restoreMode":"Recovery mode","viaDrafts":"Through configuration drafts and activation","asIs":"As-is history","ambiguousIdentityMap":"The identity map names more than one target for the same source record.","claimFailed":"The restore batch could not be claimed. Try again.","invalidBatchSize":"The restore batch size is outside the allowed range.","missingIdentity":"The archive does not name the account or the record identity it belongs to.","targetReserved":"This workspace is being restored; wait for the restore to finish before making changes.","legacyProtectedValues":"This workspace still has values in the retired personal-data format. Once they are moved to its keys, back it up again.","protectedKeysUnavailable":"The protected values in this backup could not be opened with the source workspace's keys. Nothing was restored.","protectedKeyReused":"The restore would have reused the source workspace's keys. Nothing was restored."},"tenant-clock":{"title":"Tenant clock","description":"Administrators can set an offset in non-production environments. This replaces the current offset; enter 0 to restore real time. Explicit historical dates do not change.","current":"Current offset: {{seconds}} seconds","seconds":"Offset in whole seconds","reason":"Reason","save":"Set offset","saved":"Clock offset saved.","indicator":"Tenant clock offset: {{seconds}} seconds","refusals":{"environment":"This environment does not permit clock changes.","input":"Enter a whole-second offset and a reason.","unavailable":"Tenant clock could not be verified."}},"recovery":{"UNAVAILABLE":"Recovery is unavailable right now. Try again in a moment; nothing was changed.","INTENT_MISMATCH":"This retry describes different work from the original request, so it was refused. Start a new request instead of changing this one.","ILLEGAL_TRANSITION":"That recovery action is not allowed from the current exception state. Refresh the queue and choose a permitted action.","RESOLVE_EVIDENCE_REQUIRED":"An exception cannot be marked resolved without verified business evidence or an authorized disposition. Add one and try again.","EXCEPTION_NOT_FOUND":"That recovery exception was not found in this workspace.","STALE_REVISION":"Someone else updated this exception. Refresh and try again with the current revision.","INTENT_NOT_FOUND":"That recovery intent was not found in this workspace.","INVALID_REQUEST":"That recovery request was incomplete or invalid.","queue":{"pageTitle":"Recovery exceptions","pageDescription":"Blocked and failed work with age, owner, held resources, and guarded recovery actions.","backToOperations":"Back to Operations","forbiddenTitle":"Recovery queue unavailable","forbiddenDescription":"You do not have permission to read recovery exceptions in this workspace.","age":"{{duration}} old","attempts":"{{count}} attempts","leaseOwner":"Lease: {{owner}}","blockedVisible":"Blocked — visible in queue","empty":{"title":"No recovery exceptions","description":"When durable recovery records a failure, it appears here for operator action."},"filters":{"active":"Active","open":"Open","compensationFailed":"Compensation failed","resolved":"Resolved","all":"All"},"states":{"open":"Open","retrying":"Retrying","compensating":"Compensating","compensation_failed":"Compensation failed","resolved":"Resolved","cancelled":"Cancelled"},"detail":{"empty":"Select an exception to inspect failure context and permitted actions.","intent":"Intent","step":"Step","error":"Error code","heldResources":"Held resources","attemptHistory":"What was tried","reasonLabel":"Reason (required for every action)","resolveEvidenceTitle":"Resolve evidence","resolveEvidenceHelp":"Resolve requires verified business state with evidence, or a recorded authorized disposition. Reason alone is not enough.","verifiedBusinessState":"Verified business state","correctionPayload":"Correction payload (JSON)","escalationTarget":"Escalation target (member id)"},"actions":{"retry":"Retry","compensate":"Compensate","cancel":"Cancel","resolve":"Resolve","correct":"Correct","escalate":"Escalate","resolveEvidenceHint":"Resolve requires evidence before submit.","reason":{"terminalState":"This exception is already terminal.","illegalTransition":"The database does not permit this action from the current state.","noPermissionAct":"You do not have permission to act on recovery exceptions.","noPermissionEscalate":"You do not have permission to escalate recovery exceptions.","noPermissionRead":"You do not have permission to read recovery exceptions.","resolveEvidenceRequired":"Add verified business evidence or an authorized disposition before resolve."}},"groupEditor":{"title":"Compensation group","description":"Declare a reversible group on the intent before execution — one step per line.","selectException":"Select an exception to declare a compensation group for its intent.","groupKey":"Group key","steps":"Reversible steps (one per line)","submit":"Declare group"}}},"user-assistant":{"title":"Assistant","subtitle":"Ask about your work in this workspace. It can only see what you can see.","placeholder":"Ask about your tasks or records…","send":"Send","loading":"Loading…","thinking":"Thinking…","empty":"Ask a question to get started.","you":"You","assistant":"Assistant","defaultAssistantName":"Assistant","toolsUsed":"Checked: {{tools}}","withheld":"Some fields are hidden from you and were not used: {{fields}}","errors":{"noProvider":"No AI model is set up for the assistant in this workspace. An administrator can assign one in AI settings.","modelUnavailable":"The assistant could not be reached. Your question was saved — try again in a moment.","modelUnusable":"The assistant replied in a form this workspace could not use. Try rephrasing your question.","emptyMessage":"Type a question first.","conversationNotFound":"That conversation is not available.","conversationFailed":"The conversation could not be saved. Try again.","assistantVersionRetired":"This conversation uses an Assistant version that is no longer available. Start a new conversation to use the current Assistant.","titleEmpty":"Type a name for the conversation.","renameFailed":"The name could not be changed. Try again.","switchFailed":"The assistant could not be changed. Try again.","assistantProfileUnavailable":"That assistant is no longer available in this workspace. Pick another one."},"proposals":{"pageTitle":"AI action approvals","pageDescription":"Actions the assistant proposes. Nothing runs until you approve it.","proposeTitle":"Propose an action","proposeDescription":"Stage a report for approval. Approving it generates the report.","empty":"No proposals yet.","approve":"Approve","reject":"Reject","action":{"generate_workflow_catalog":"Generate workflow catalogue","generate_data_quality_assessment":"Generate data quality assessment"},"risk":{"low":"Low risk","medium":"Medium risk","high":"High risk"},"status":{"pending":"Pending","approved":"Approved","rejected":"Rejected"}},"referenceNotice":{"default":"Reference information; check with the person responsible before acting."},"citations":{"title":"Sources","version":"Version {{version}}","effectiveOn":"In force since {{date}}","lastReformedOn":"Last amended {{date}}","officialSource":"Official source","validityNotes":"Validity notes from the sources:"},"kbNoMatch":{"answer":"I could not find an approved source in the Knowledge Base for this, so I will not give a factual answer. You can look in the Knowledge Base, or start a workflow to ask the person responsible.","openKb":"Open the Knowledge Base","startWorkflow":"See workflows you can start","suggestions":"Did you mean…?"},"grounding":{"badge":{"generated":"Draft","grounded":"Grounded","mixed":"Mixed","insufficient_evidence":"Evidence unavailable","fromFiles":"Based on your files","incomplete":"Incomplete"},"badgeLabel":"Answer status: {{status}}. Open for details.","explanation":{"generated":"Created using your information and general professional knowledge; factual claims were not independently verified.","grounded":"Based on the sources and workspace records listed with this answer.","mixed":"Generated work plus factual claims, each cited beside the claim it supports.","insufficient_evidence":"A factual part of this answer needs an approved source, and none was found, so it was withheld.","placeholders":"Where a fact had no approved source, the answer shows it as pending instead of stating it.","userProvided":"Some statements repeat information you provided; they were not independently verified.","fromFiles":"Created from the files you attached; what they say is shown as your input and was not independently verified.","incomplete":"Not everything you asked for is covered by the sources. What was and was not covered:"},"pendingClaim":"Pending: no approved source was found.","extractiveHeading":"I did not find the text you asked for. Related sources in the Knowledge Base:","extractiveRelatedHeading":"Related sources in the Knowledge Base:","workspaceUnconfirmed":"I could not confirm this with this workspace's tools, so I will not answer it from memory. Try asking again, or open the workspace page it is about.","regulated":{"attributed":"{{claim}} (source: {{source}})","reference":"Secondary reference — {{source}} contains this reference: «{{quote}}»","excerpt":"{{source}} says: «{{quote}}»","excerptOnly":"The approved source does not state what you asked; this is the text available:"},"coverage":{"identifier":"Item {{id}}","status":{"addressed_supported":"addressed, with its source","not_found":"not found in the approved sources","ambiguous_not_applicable":"ambiguous or not applicable"},"sections":{"counterarguments":"Counterarguments","comparison":"Comparison","requirements":"Requirements","deadlines":"Deadlines","exceptions":"Exceptions","precedents":"Precedents","risks":"Risks"}},"unqualifiedModelRefusal":"This workspace's AI model is not qualified to answer this kind of regulated question, so I will not write an answer with it. Ask the workspace owner to choose a qualified model, or look in the Knowledge Base.","qualificationExtractiveHeading":"This workspace's AI model is not qualified to write this kind of answer. The exact text of the relevant sources in the Knowledge Base:"},"memory":{"errors":{"notAuthorized":"Only a member of this workspace can keep Assistant memory here.","disabled":"Personal Assistant memory is switched off for this workspace.","categoryNotAllowed":"This kind of memory is not allowed in this workspace.","textEmpty":"Write something to remember.","textTooLong":"A memory is at most 1,000 characters. Shorten it and try again.","secretRefused":"Memory never keeps passwords, keys, tokens, card numbers or account numbers.","entryLimit":"You can keep at most 100 memories in this workspace. Forget one first.","textBudget":"Your memories in this workspace are limited to 32 KB of text. Shorten or forget one first.","proposalLimit":"Too many suggestions are waiting. Save or decline some first.","duplicate":"You already keep this exact memory.","notFound":"That memory does not exist or is not yours.","invalidState":"This memory can no longer be changed that way.","invalidProvenance":"The conversation this suggestion came from is not yours.","notConfirmed":"A memory is saved only when you confirm it.","immutableField":"The owner, workspace and kind of a memory never change.","revisionAppendOnly":"Earlier versions of a memory cannot be changed."}},"retention":{"errors":{"notOwner":"Only the workspace owner can change how long the Assistant keeps things.","notMember":"Only a member of this workspace can see its Assistant retention settings.","belowMinimum":"The Assistant keeps things for at least 12 months.","invalidOption":"Choose 13, 24, 36 or 60 months, or keep conversations until they are deleted.","basicPlanDefaultOnly":"On your plan the Assistant keeps things for 13 months. To choose a longer period, upgrade your plan or add Assistant retention controls.","coldTierTooSoon":"Attachments can move to cold storage after 30 days at the earliest.","coldTierRequiresUpgrade":"On your plan attachments move to cold storage after 90 days. To choose another setting, upgrade your plan or add Assistant retention controls."},"options":{"months13":"13 months (default)","months24":"24 months","months36":"36 months","months60":"60 months","untilDeleted":"Until deleted"},"legalHoldNotice":"A legal hold is in place: nothing is deleted when its retention period ends until the hold is lifted.","notifications":{"downgradeGraceStarted":"Your plan changed. The Assistant keeps your current retention settings for a short grace period; after that, your new plan's retention rules apply. See the end date in Settings.","downgradeGraceEnded":"The grace period after your plan change has ended. The Assistant now follows your plan's retention rules.","addonLapsedGraceStarted":"Your Assistant retention controls add-on has ended. The Assistant keeps your current retention settings for a short grace period; after that, your plan's retention rules apply. See the end date in Settings.","addonLapsedGraceEnded":"The grace period after your Assistant retention controls add-on ended is over. The Assistant now follows your plan's retention rules."}},"conversations":{"title":"Conversations","listDescription":"Your conversations with the Assistant in this workspace.","new":"New conversation","newTitle":"New conversation","untitled":"Untitled conversation","empty":"You have no conversations yet.","loadMore":"Load more","loadingMore":"Loading…","loadFailed":"Your conversations could not be loaded.","truncated":"Showing the {{count}} most recent messages of this conversation.","rename":"Rename conversation","renameLabel":"Conversation name","save":"Save name","cancel":"Cancel","retry":"Try again","opening":"Opening…"},"profile":{"pickForNew":"Assistant for this conversation","defaultName":"{{name}} (default)","using":"Assistant: {{name}}","switch":"Change assistant","switching":"Changing…","basicNotice":"This conversation uses the basic assistant.","continueInNew":"Continue in a new conversation","retiredNotice":"The assistant this conversation uses is no longer available.","useCurrent":"Use {{name}}"},"boundary":{"switched":"Switched to {{name}}, version {{version}}","upgraded":"Upgraded to {{name}}, version {{version}}","switchedNoVersion":"Switched to {{name}}"},"document":{"download":"Download Word","downloadLabel":"Download this answer as a Word document","downloading":"Preparing…","options":"Document options","profileLabel":"Branding","profiles":{"own":"Own brand ({{name}})","neutral":"Neutral (no logo)"},"titleLabel":"Document title","includeDate":"Include the date","requested":"Your Word document is ready","requestedPrevious":"The previous answer, as a Word document","sources":"Sources","page":"Page {{page}} of {{pages}}","untitled":"Assistant answer","failed":"The document could not be generated. Please try again.","signedOut":"Your session has ended. Sign in again to download the document.","ready":"{{filename}} is ready. If the download did not start:","save":"Save the file","profileChosen":"Branding: {{profile}}","profileNote":"Note: the Word document will be prepared with the branding profile {{profile}}.","partnerMissing":"There is no branding profile for «{{partner}}» yet, so Neutral (no logo) was selected. An owner can add it as a partner profile.","mentionsWarning":"The text mentions {{terms}}. Do you want me to rewrite it without mentioning it?","rewrite":"Rewrite without it","rewriteRequest":"Rewrite your previous answer without mentioning {{terms}}. Keep everything else the same."},"attachments":{"attach":"Attach files","attachHint":"Documents, spreadsheets, text, images and audio","dropHere":"Drop files to attach them","defaultMessage":"Please review the attached files.","remove":"Remove {{name}}","pending":"Files for this message","untitledConversation":"Attached files","conversationFiles":"Files in this conversation","state":{"uploading":"Uploading…","scanning":"Checking…","ready":"Ready","needs_verification":"Needs review","unavailable":"Not readable","rejected":"Not accepted"},"verify":"Verify extraction","verified":"Verified","capability":{"imageUnavailable":"Reading images is not available in this workspace.","audioUnavailable":"Transcribing audio is not available in this workspace."},"reasons":{"local_only_no_processor":"This workspace uses local AI processors only, and none of them can read this kind of file.","no_route":"No AI model is set up to read this kind of file.","model_cannot_read_images":"This workspace's AI model cannot read images.","no_transcription_route":"This workspace's AI provider does not offer audio transcription.","ai_use_excluded":"This file is excluded from AI use, so the Assistant only knows its name.","no_text_layer":"This PDF has no text layer (it looks like a scan), so it cannot be read. Attach the pages as JPG or PNG images, or upload a PDF that contains text.","type_unsupported":"The Assistant cannot read this kind of file.","processor_unavailable":"The file could not be read right now. Try again later.","unusable_processor_output":"The reading of this file could not be used. Try again later.","unreadable_file":"The file could not be opened. It may be damaged or protected.","empty_file":"The file has no text.","no_speech":"No speech was found in this recording.","extraction_not_saved":"The reading of this file could not be completed, so the Assistant will not use it. Attach it again.","refused":"The data protection policy did not allow this file to be read."},"refusals":{"heic_unsupported":"HEIC photos cannot be read yet. Export the photo as JPG or PNG and attach it again.","type_unsupported":"This kind of file cannot be attached. Use DOCX, PDF, XLSX, CSV, TXT, MD, JPG, PNG, M4A, MP3, WAV or OGG.","conversation_not_found":"This conversation is not available.","empty":"The file is empty.","too_large":"The file is larger than allowed ({{limit}}).","quota":"The workspace's document storage is full ({{limit}}).","content_type":"The file's content does not match an accepted type.","infected":"The file was blocked by the malware scan.","scan_failed":"The file could not be scanned, so it was not accepted.","scan_unavailable":"The file was stored but could not be scanned, so the Assistant will not read it.","upload_failed":"The file could not be uploaded. Try again.","too_many":"You can attach up to {{count}} files per message."},"verification":{"title":"Verify extraction","description":"Compare the original with what was read. Correct anything wrong, then confirm. The original reading is kept.","source":"Original","extracted":"Extracted text","uncertain":"Passages to check","uncertainItem":"Uncertain","unreadableItem":"Unreadable","inferredItem":"Inferred","noPreview":"No preview for this kind of file: compare with your copy.","confirm":"Confirm text","cancel":"Cancel","saving":"Saving…","loading":"Loading…","previewLoading":"Loading the preview…","reasons":{"handwriting":"Handwriting","low_confidence":"Low confidence","unreadable":"Unreadable passages","inferred":"Inferred words","speaker_attribution":"Speakers not identified"},"stale":"This extraction changed in another tab. Reopen it to review the latest version.","failed":"The confirmed text could not be saved.","empty":"The text cannot be empty.","loadFailed":"The extraction could not be loaded."},"answerNeedsVerification":"Draft: attached files still need your review before this can be final ({{count}})."},"letter":{"pendingField":"To complete: {{field}}","ask":{"addressAndSigner":"Which address should the letter go to, and who signs it?","address":"Which address should the letter go to?","signer":"Who signs the letter?"}},"recordDocuments":{"limitations":{"not_found":"I could not find a document called “{{name}}” on the records you can see. Check the name, or open the record and look in its Documents panel.","unavailable":"“{{name}}” is stored on the record but is not available right now (it is blocked or being removed), so I cannot read it.","no_version":"“{{name}}” has no current version I can read. Open the record’s Documents panel to check it.","not_clean":"“{{name}}” has not passed the security scan yet, so I cannot read it. Try again once its scan shows it as clean.","privileged":"“{{name}}” is classified as privileged, so its content is never shared with the Assistant. Open it from the record’s Documents panel.","ai_excluded":"“{{name}}” is stored on the record, but it is not enabled for AI use, so I cannot read its content. Ask an owner to approve AI use for this document; meanwhile you can open it from the record’s Documents panel.","type_unsupported":"I can read text documents stored on a record (PDF, Word, Excel, CSV or plain text). “{{name}}” is an image or a recording: attach it to this conversation and I can describe or transcribe it.","too_large":"“{{name}}” is too large for me to read from the record. Attach the pages you need to this conversation instead.","unreadable":"I could not find any readable text in “{{name}}” (for example, a scanned PDF without a text layer). Attach it to this conversation to have it read.","read_failed":"I could not read “{{name}}” from the record just now. Try again in a moment, or open it from the record’s Documents panel."}}},"auth":{"signUpHeading":"Create an account","signUp":"Sign Up","signUpSubheading":"Fill the form below to create an account.","signUpChooseDifferentPath":"Choose a different path","signUpPersonaConsultantTitle":"Consultant","signUpPersonaConsultantDescription":"Register as a consultant and create or manage only your assigned client teams.","signUpPersonaIndividualTitle":"Individual","signUpPersonaIndividualDescription":"Create your own workspace without a consultant involved.","signUpPersonaOrganizationTitle":"Organization","signUpPersonaOrganizationDescription":"Create a company workspace and invite teammates after signup.","signUpMagicConsultantTitle":"Join as a consultant","signUpMagicConsultantDescription":"Use a magic link to create your consulting practice. You can add or connect clients afterwards.","signUpMagicIndividualTitle":"Join as an individual","signUpMagicIndividualDescription":"Use a magic link to create your own workspace without going through a consultant.","signUpMagicOrganizationTitle":"Join as an organization","signUpMagicOrganizationDescription":"Use a magic link to create your company workspace and invite teammates after signup.","signInHeading":"Sign in to your account","signInSubheading":"Welcome back! Please enter your details","signIn":"Sign In","getStarted":"Get started","updatePassword":"Update Password","signOut":"Sign out","signingIn":"Signing in...","signingUp":"Signing up...","verifyingCaptcha":"Checking you're not a robot...","doNotHaveAccountYet":"Do not have an account yet?","alreadyHaveAnAccount":"Already have an account?","signUpToAcceptInvite":"Please sign in/up to accept the invite","clickToAcceptAs":"Click the button below to accept the invite with as <b>{{email}}</b>","acceptInvite":"Accept invite","acceptingInvite":"Accepting Invite...","acceptInviteSuccess":"Invite successfully accepted","acceptInviteError":"Error encountered while accepting invite","acceptInviteWithDifferentAccount":"Want to accept the invite with a different account?","alreadyHaveAccountStatement":"I already have an account, I want to sign in instead","doNotHaveAccountStatement":"I do not have an account, I want to sign up instead","signInWithProvider":"Sign in with {{provider}}","signInWithPhoneNumber":"Sign in with Phone Number","signInWithEmail":"Sign in with Email","signUpWithEmail":"Sign up with Email","passwordHint":"Ensure it's at least 8 characters","repeatPasswordDescription":"Please repeat your password to confirm it","repeatPasswordHint":"Type your password again","repeatPassword":"Repeat password","passwordForgottenQuestion":"Forgot Password?","passwordResetLabel":"Reset Password","passwordResetSubheading":"Enter your email address below. You will receive a link to reset your password.","passwordResetSuccessMessage":"Check your Inbox! We emailed you a link for resetting your Password.","passwordRecoveredQuestion":"Password recovered?","passwordLengthError":"Please provide a password with at least 6 characters","sendEmailLink":"Send Email Link","sendingEmailLink":"Sending Email Link...","sendLinkSuccessDescription":"Check your email, we just sent you a link. Follow the link to sign in.","sendLinkSuccess":"We sent you a link by email","sendLinkSuccessToast":"Link successfully sent","getNewLink":"Get a new link","verifyCodeHeading":"Verify your account","verificationCode":"Verification Code","verificationCodeHint":"Enter the code we sent you by SMS","verificationCodeSubmitButtonLabel":"Submit Verification Code","sendingMfaCode":"Sending Verification Code...","verifyingMfaCode":"Verifying code...","sendMfaCodeError":"Sorry, we couldn't send you a verification code","verifyMfaCodeSuccess":"Code verified! Signing you in...","verifyMfaCodeError":"Ops! It looks like the code is not correct","reauthenticate":"Reauthenticate","reauthenticateDescription":"For security reasons, we need you to re-authenticate","errorAlertHeading":"Sorry, we could not authenticate you","emailConfirmationAlertHeading":"We sent you a confirmation email.","emailConfirmationAlertBody":"Welcome! Please check your email and click the link to verify your account.","resendLink":"Resend link","resendLinkSuccessDescription":"We sent you a new link to your email! Follow the link to sign in.","resendLinkSuccess":"Check your email!","authenticationErrorAlertHeading":"Authentication Error","authenticationErrorAlertBody":"Sorry, we could not authenticate you. Please try again.","sendEmailCode":"Get code to your Email","sendingEmailCode":"Sending code...","resetPasswordError":"Sorry, we could not reset your password. Please try again.","emailPlaceholder":"your@email.com","inviteAlertHeading":"You have been invited to join a team","inviteAlertBody":"Please sign in or sign up to accept the invite and join the team.","acceptTermsAndConditions":"I accept the <TermsOfServiceLink /> and <PrivacyPolicyLink />","termsOfService":"Terms of Service","privacyPolicy":"Privacy Policy","orContinueWith":"Or continue with","redirecting":"You're in! Please wait...","lastUsedMethodPrefix":"You last signed in with","methodPassword":"email and password","methodOtp":"OTP code","methodMagicLink":"email link","methodOauth":"social sign-in","methodOauthWithProvider":"<provider>{{provider}}</provider>","methodDefault":"another method","existingAccountHint":"You previously signed in with <method>{{method}}</method>. <signInLink>Already have an account?</signInLink>","linkAccountToSignIn":"Link account to sign in","linkAccountToSignInDescription":"Add one or more sign-in methods to your account","noIdentityLinkedTitle":"You have no way to sign in again yet","noIdentityLinkedDescription":"Your email address is verified — that is how you got here. But you have not set a password or connected a provider, so nothing is linked to your account that you can sign in with next time. You can continue now and add one whenever you like from your account settings.","errors":{"Invalid login credentials":"The credentials entered are invalid","User already registered":"This credential is already in use. Please try with another one.","Email not confirmed":"Please confirm your email address before signing in","default":"We have encountered an error. Please ensure you have a working internet connection and try again","generic":"Sorry, we weren't able to authenticate you. Please try again.","linkTitle":"Sign in failed","linkDescription":"Sorry, we weren't able to sign you in. Please try again.","codeVerifierMismatch":"It looks like you're trying to sign in using a different browser than the one you used to request the sign in link. Please try again using the same browser.","minPasswordLength":"Password must be at least 8 characters long","passwordsDoNotMatch":"The passwords do not match","minPasswordNumbers":"Password must contain at least one number","minPasswordSpecialChars":"Password must contain at least one special character","Signups not allowed for otp":"OTP is disabled. Please enable it in your account settings.","uppercasePassword":"Password must contain at least one uppercase letter","insufficient_aal":"Please sign-in with your current multi-factor authentication to perform this action","otp_expired":"The email link has expired. Please try again.","same_password":"The password cannot be the same as the current password","weakPassword":{"title":"Password is too weak","description":"Your password does not meet the security requirements:","reasons":{"length":"Password must be at least 8 characters long","characters":"Password must contain lowercase, uppercase, numbers, and special characters","pwned":"This password has been found in a data breach. Please choose a different password"}}},"sessionExpiredTitle":"Session expired","sessionExpiredDescription":"Your session is no longer valid. Please sign in again to continue.","resendingLink":"Resending link...","setupAccount":"Set up your account","identitySwitched":{"title":"You are now signed in as someone else","description":"The link you opened belongs to a different account, so we switched to it.","signedInAs":"Signed in as","previousEnded":"Whoever was signed in before has been signed out on this device.","continue":"Continue"},"signUpPasswordConsultantDescription":"Create your consulting practice with an email address and a password. You can add or connect clients afterwards.","signUpPasswordIndividualDescription":"Create your own workspace with an email address and a password, without going through a consultant.","signUpPasswordOrganizationDescription":"Create your company workspace with an email address and a password, then invite teammates after signup.","emailConfirmationSentTo":"We sent a confirmation link to {{email}}. Open it to finish creating your account.","emailConfirmationTroubleshooting":"Nothing after a minute or two? Check your spam or junk folder. If the address above is wrong, sign up again with the right one.","resendConfirmation":"Send it again","resendConfirmationCooldown":"You can send it again in {{seconds}}s","resendConfirmationSent":"Sent. Check your inbox again.","resendConfirmationFailed":"We could not send it again just now. Wait a moment and try once more.","emailAddress":"Email address","password":"Password","showPassword":"Show password","hidePassword":"Hide password"},"account":{"accountTabLabel":"Account Settings","accountTabDescription":"Manage your account settings","homePage":"Home","billingTab":"Billing","settingsTab":"Settings","multiFactorAuth":"Multi-Factor Authentication","multiFactorAuthDescription":"Set up Multi-Factor Authentication method to further secure your account","updateProfileSuccess":"Profile successfully updated","updateProfileError":"Encountered an error. Please try again","updatePasswordSuccess":"Password update request successful","updatePasswordSuccessMessage":"Your password has been successfully updated!","updatePasswordError":"Encountered an error. Please try again","updatePasswordLoading":"Updating password...","updateProfileLoading":"Updating profile...","name":"Your Name","nameDescription":"Update your name to be displayed on your profile","emailLabel":"Email Address","accountImage":"Your Profile Picture","accountImageDescription":"Please choose a photo to upload as your profile picture.","profilePictureHeading":"Upload a Profile Picture","profilePictureSubheading":"Choose a photo to upload as your profile picture.","updateProfileSubmitLabel":"Update Profile","updatePasswordCardTitle":"Update your Password","updatePasswordCardDescription":"Update your password to keep your account secure.","currentPassword":"Current Password","newPassword":"New Password","repeatPassword":"Repeat New Password","repeatPasswordDescription":"Please repeat your new password to confirm it","yourPassword":"Your Password","updatePasswordSubmitLabel":"Update Password","updateEmailCardTitle":"Update your Email","updateEmailCardDescription":"Update your email address you use to login to your account","newEmail":"Your New Email","repeatEmail":"Repeat Email","updateEmailSubmitLabel":"Update Email Address","updateEmailSuccess":"Email update request successful","updateEmailSuccessMessage":"We sent you an email to confirm your new email address. Please check your inbox and click on the link to confirm your new email address.","updateEmailLoading":"Updating your email...","updateEmailError":"Email not updated. Please try again","passwordNotMatching":"Passwords do not match. Make sure you're using the correct password","emailNotMatching":"Emails do not match. Make sure you're using the correct email","passwordNotChanged":"Your password has not changed","emailsNotMatching":"Emails do not match. Make sure you're using the correct email","cannotUpdatePassword":"You cannot update your password because your account is not linked to an email.","setupMfaButtonLabel":"Setup a new Factor","multiFactorSetupErrorHeading":"Setup Failed","multiFactorSetupErrorDescription":"Sorry, there was an error while setting up your factor. Please try again.","multiFactorAuthHeading":"Secure your account with Multi-Factor Authentication","multiFactorModalHeading":"Use your authenticator app to scan the QR code below. Then enter the code generated.","factorNameLabel":"A memorable name to identify this factor","factorNameHint":"Use an easy-to-remember name to easily identify this factor in the future. Ex. iPhone 14","factorNameSubmitLabel":"Set factor name","unenrollTooltip":"Unenroll this factor","unenrollingFactor":"Unenrolling factor...","unenrollFactorSuccess":"Factor successfully unenrolled","unenrollFactorError":"Unenrolling factor failed","factorsListError":"Error loading factors list","factorsListErrorDescription":"Sorry, we couldn't load the factors list. Please try again.","factorName":"Factor Name","factorType":"Type","factorStatus":"Status","mfaEnabledSuccessTitle":"Multi-Factor authentication is enabled","mfaEnabledSuccessDescription":"Congratulations! You have successfully enrolled in the multi factor authentication process. You will now be able to access your account with a combination of your password and an authentication code sent to your phone number.","verificationCode":"Verification Code","addEmailAddress":"Add Email address","verifyActivationCodeDescription":"Enter the 6-digit code generated by your authenticator app in the field above","loadingFactors":"Loading factors...","enableMfaFactor":"Enable Factor","disableMfaFactor":"Disable Factor","qrCodeErrorHeading":"QR Code Error","qrCodeErrorDescription":"Sorry, we weren't able to generate the QR code","multiFactorSetupSuccess":"Factor successfully enrolled","submitVerificationCode":"Submit Verification Code","mfaEnabledSuccessAlert":"Multi-Factor authentication is enabled","verifyingCode":"Verifying code...","invalidVerificationCodeHeading":"Invalid Verification Code","invalidVerificationCodeDescription":"The verification code you entered is invalid. Please try again.","unenrollFactorModalHeading":"Unenroll Factor","unenrollFactorModalDescription":"You're about to unenroll this factor. You will not be able to use it to login to your account.","unenrollFactorModalBody":"You're about to unenroll this factor. You will not be able to use it to login to your account.","unenrollFactorModalButtonLabel":"Yes, unenroll factor","selectFactor":"Choose a factor to verify your identity","disableMfa":"Disable Multi-Factor Authentication","disableMfaButtonLabel":"Disable MFA","confirmDisableMfaButtonLabel":"Yes, disable MFA","disablingMfa":"Disabling Multi-Factor Authentication. Please wait...","disableMfaSuccess":"Multi-Factor Authentication successfully disabled","disableMfaError":"Sorry, we encountered an error. MFA has not been disabled.","sendingEmailVerificationLink":"Sending Email...","sendEmailVerificationLinkSuccess":"Verification link successfully sent","sendEmailVerificationLinkError":"Sorry, we weren't able to send you the email","sendVerificationLinkSubmitLabel":"Send Verification Link","sendVerificationLinkSuccessLabel":"Email sent! Check your Inbox","verifyEmailAlertHeading":"Please verify your email to enable MFA","verificationLinkAlertDescription":"Your email is not yet verified. Please verify your email to be able to set up Multi-Factor Authentication.","authFactorName":"Factor Name (optional)","authFactorNameHint":"Assign a name that helps you remember the phone number used","loadingUser":"Loading user details. Please wait...","linkPhoneNumber":"Link Phone Number","dangerZone":"Danger Zone","governedDeletion":{"heading":"This account cannot be deleted yet","onHold":"Records in this account are under a legal hold, and a record on hold cannot be deleted. Release every hold before deleting the account.","hasDocuments":"Records in this account keep governed documents, so the account cannot be deleted. Remove the documents first, or archive the records."},"dangerZoneDescription":"Some actions cannot be undone. Please be careful.","deleteAccount":"Delete your Account","deletingAccount":"Deleting account. Please wait...","deleteAccountDescription":"This will delete your account and the accounts you own. Furthermore, we will immediately cancel any active subscriptions. This action cannot be undone.","deleteProfileConfirmationInputLabel":"Type DELETE to confirm","deleteAccountErrorHeading":"Sorry, we couldn't delete your account","needsReauthentication":"Reauthentication Required","needsReauthenticationDescription":"You need to reauthenticate to change your password. Please sign out and sign in again to change your password.","language":"Language","languageDescription":"Choose your preferred language","noTeamsYet":"You don't have any teams yet.","createTeam":"Create a team to get started.","createTeamButtonLabel":"Create a Team","linkedAccounts":"Linked Accounts","linkedAccountsDescription":"Connect other authentication providers","unlinkAccountButton":"Unlink {{provider}}","unlinkAccountSuccess":"Account unlinked","unlinkAccountError":"Unlinking failed","linkAccountSuccess":"Account linked","linkAccountError":"Linking failed","linkEmailPasswordButton":"Add Email & Password","linkEmailPasswordSuccess":"Email and password linked","linkEmailPasswordError":"Failed to link email and password","linkingAccount":"Linking account...","accountLinked":"Account linking request sent. Please wait...","unlinkAccount":"Unlink Account","failedToLinkAccount":"Failed to link account","availableMethods":"Available Methods","availableMethodsDescription":"Connect your account to one or more of the following methods to sign in","linkedMethods":"Sign-in methods linked to your account","alreadyLinkedMethodsDescription":"You have already linked these accounts","confirmUnlinkAccount":"You are unlinking this provider.","unlinkAccountConfirmation":"Are you sure you want to unlink this provider from your account? This action cannot be undone.","unlinkingAccount":"Unlinking account...","accountUnlinked":"Account successfully unlinked","linkEmailPassword":"Email & Password","linkEmailPasswordDescription":"Add password authentication to your account","noAccountsAvailable":"No other method is available at this time","linkAccountDescription":"Link account to sign in with {{provider}}","updatePasswordDescription":"Add password authentication to your account","setEmailAddress":"Set Email Address","setEmailDescription":"Add an email address to your account","setEmailSuccess":"Email set successfully","setEmailSuccessMessage":"We sent you an email to confirm your email address. Please check your inbox and click on the link to confirm your email address.","setEmailLoading":"Setting your email...","setEmailError":"Email not set. Please try again","emailNotChanged":"Your email address has not changed","routes":{"settings":"Settings"}},"teams":{"home":{"pageTitle":"Home"},"settings":{"teamLanguagesTitle":"Team languages","teamLanguagesDescription":"Choose which locales members may select while working in this team. Leave all selected to allow every language the app supports.","teamDefaultLocaleLabel":"Default locale for this team (optional)","teamDefaultLocaleNone":"No team default (use global preference)","teamLanguagesSave":"Save languages","translationsPageTitle":"Team translations","translationCoveragePageTitle":"Translation coverage","translationCoveragePageDescription":"Compare workflow step labels, form titles and field labels, and entity definitions against your team translation mappings for every locale you allow besides the reference locale.","translationCoverageReferenceLocale":"Reference locale (source text)","translationCoverageTargetLocales":"Checked locales","translationCoverageNoTargets":"Add at least one more team language than the reference locale to see missing entries. You can configure languages in team settings.","translationCoverageNoGaps":"No missing dynamic translations were found for the checked locales.","translationCoverageColDomain":"Area","translationCoverageColResource":"Resource","translationCoverageColLocale":"Locale","translationCoverageColPath":"Mapping path","translationCoverageColSource":"Default text","translationCoverageDomainWorkflow":"Workflow","translationCoverageDomainForm":"Form","translationCoverageDomainEntity":"Entity","translationCoverageOpenMappings":"Edit translation mappings","translationCoverageGapsFound_one":"{{count}} missing mapping","translationCoverageGapsFound_other":"{{count}} missing mappings","translationCoverageTableHint":"Add the listed keys under <code>dynamicMappings</code> on the translation mappings page.","translationsPageDescription":"Manage team translation overrides in a key × locale grid. AI can propose missing translations for review before you apply them.","translationsSave":"Save mappings","translationsOpenSettings":"Open team settings","translationsSavedToast":"Translation mappings saved.","translationsTabEditor":"Editor","translationsTabCoverage":"Coverage","translationsTabQueue":"Work queue","translationsStatusComplete":"Complete","translationsStatusMissing":"Missing","translationsStatusNeedsReview":"Needs review","translationsRefLocale":"Reference: {{locale}}","translationsMissingCount":"{{count}} missing","translationsFilterLocale":"Locale","translationsFilterStatus":"Status","translationsFilterQuery":"Filter","translationsFilterQueryPlaceholder":"Filter by key, resource, or source text…","translationsFilterAll":"All","translationsColKey":"Key","translationsColSource":"Source","translationsColActions":"Actions","translationsColComplete":"Complete","translationsColCoverage":"Coverage","translationsEmptyGrid":"No translation keys match the current filters. Add team languages or create workflows, forms, or entities to translate.","translationsGridAria":"Team translation key by locale grid","translationsCoverageAria":"Translation coverage by locale","translationsCopyKey":"Copy key","translationsCopiedKey":"Key copied","translationsCopyFailed":"Could not copy key","translationsAiSuggestMissing":"Suggest missing with AI","translationsAiSuggestLocale":"Suggest all missing ({{locale}})","translationsAiSuggestRow":"Suggest translation","translationsAiNothingMissing":"No missing translations to suggest.","translationsAiProviderMissing":"No AI provider configured for this team. Open AI provider settings to configure one.","translationsAiOpenProviders":"Open AI provider settings","translationsAiEmpty":"Translation assistant returned no proposals.","translationsAiProposed":"{{count}} proposals ready for review","translationsAiReviewTitle":"Review AI proposals ({{count}})","translationsAiReviewHint":"Select proposals to keep, then approve. Nothing is saved until you apply and click Save mappings.","translationsAiDiscard":"Discard","translationsAiApproveApply":"Approve selected","translationsAiApplied":"Applied {{count}} proposals to the draft. Save to persist.","translationsRevertRow":"Clear overrides for this key","translationsAdvancedRaw":"Advanced: raw mappings JSON","translationsQueueEmpty":"No open translation items.","translationsOpenEditor":"Open in editor","pageTitle":"Settings","pageDescription":"Manage your Team details","teamLogo":"Team Logo","teamLogoDescription":"Update your team's logo to make it easier to identify","teamName":"Team Name","teamNameDescription":"Update your team's name","dangerZone":"Danger Zone","dangerZoneDescription":"This section contains actions that are irreversible","teamBrandingTitle":"Team branding","teamBrandingDescription":"Manage the LerniFlow brand name, light and dark logos, and palette for team-owned pages.","branding":{"lightLogo":"Light logo","lightLogoDescription":"Used on light backgrounds and as the default public-site logo.","darkLogo":"Dark logo","darkLogoDescription":"Used on dark surfaces. Leave empty to fall back to the light logo.","brandName":"Brand name","primaryColor":"Primary color","accentColor":"Accent color","colorNotSet":"Not set: the platform default is used.","colorUseDefault":"Use default","themeTokensTitle":"Theme tokens","themeTokensDescription":"Configure fonts, size scale, radius, logo sizing, and additional surface colors for the team workspace. Team styling acts as the workspace default while users can still override light/dark/system mode personally.","bodyFont":"Body font","headingFont":"Heading font","baseFontSize":"Base font size","lineHeight":"Line height","radiusScale":"Radius scale","workspaceLogoSize":"Workspace logo size","publicLogoSizeDefault":"Public logo size default","cardColor":"Card color","cardForeground":"Card foreground","mutedSurface":"Muted surface","mutedForeground":"Muted foreground","borderColor":"Border color","inputColor":"Input color","ringColor":"Ring color","sidebarBackground":"Sidebar background","sidebarForeground":"Sidebar foreground","sidebarAccent":"Sidebar accent","sidebarAccentForeground":"Sidebar accent foreground","recoveryCopyTitle":"Recovery copy","recoveryCopyDescription":"Override password reset and update-page messaging without changing the main team sign-in copy.","resetPageTitle":"Reset page title","updatePageTitle":"Update page title","resetPageSubtitle":"Reset page subtitle","updatePageSubtitle":"Update page subtitle","resetSupportText":"Reset support text","updateSupportText":"Update support text","resetHelperText":"Reset helper text","updateHelperText":"Update helper text","backToSignInLabel":"Back-to-sign-in label","saveButton":"Save branding","savingLoading":"Saving branding...","savingSuccess":"Branding updated.","savingError":"Unable to save branding.","assetLoading":"Updating brand asset...","assetSuccess":"Brand asset updated.","assetError":"Unable to update the brand asset."},"hubSectionGeneral":"Team identity","hubSectionLanguages":"Languages","hubSectionAdvanced":"Security & privacy","hubNavAria":"Settings sections","teamLanguagesErrorNone":"Select at least one language for this team.","teamLanguagesErrorDefaultNotEnabled":"Default locale must be one of the enabled languages.","teamLanguagesUpdated":"Team languages updated.","teamDefaultLocalePlaceholder":"Use app default when a locale is not allowed","sessionTimeoutTitle":"Session timeout policy","sessionTimeoutDescription":"Configure team-level inactivity and absolute session timeout values.","sessionIdleTimeoutLabel":"Idle timeout (minutes)","sessionMaxSessionLabel":"Max session (minutes)","sessionWarningLabel":"Warning before timeout (seconds)","sessionIdleTimeoutRange":"Idle timeout must be between {{min}} and {{max}} minutes.","sessionMaxSessionRange":"Max session must be between {{min}} and {{max}} minutes.","sessionWarningRange":"Warning time must be between {{min}} and {{max}} seconds.","sessionWarningBelowIdle":"Warning time must be lower than idle timeout.","sessionResolveValidation":"Please resolve validation errors before saving.","sessionWholeNumbers":"Use whole numbers for all timeout values.","sessionTimeoutUpdated":"Team timeout settings updated.","sessionTimeoutSave":"Save timeout policy","privacyTitle":"AI privacy","privacyDescription":"Pin this workspace to local-only inference. When enabled, AI prompts stay on your local Ollama instance and are never sent to remote LLM providers.","privacyStatusAria":"Privacy posture summary","privacyStatusHeading":"Current privacy posture","privacyLocalOnlyLabel":"Local-only AI","privacyPiiRedactionLabel":"PII redaction","privacyStatusOn":"ON","privacyStatusOff":"OFF","privacyLocalOnlyToggle":"Local-only LLM inference","privacyLocalOnlyHint":"Requires a reachable local Ollama endpoint configured for this deployment.","privacySave":"Save privacy settings","privacyUpdated":"Privacy settings updated.","translationCoverageDomainNavigation":"Navigation","i18nErrors":{"defaultLocaleNotSupported":"That default language is not available in this app.","invalidJson":"That is not valid JSON. Fix the syntax and try again.","loadFailed":"We could not load your team settings. Please try again.","localeNotSupported":"One or more of the languages you chose is not available in this app.","rootNotObject":"The top level must be a JSON object, not a list or a value.","saveFailed":"We could not save your team settings. Please try again.","suggestFailed":"We could not get translation suggestions. Please try again."},"sessionPolicyErrors":{"updateDenied":"You do not have permission to change the session timeout for this team.","loadFailed":"We could not load your team settings. Please try again."},"privacyErrors":{"updateDenied":"You do not have permission to change privacy settings for this team."},"readOnly":{"title":"You do not have permission to change this","ownerOnly":"Only a workspace owner can change the workspace name and address. Ask one of them if this needs to change.","settingsManage":"Changing these settings needs the Manage settings permission. Ask a workspace administrator to grant it, or to make the change for you."},"workflowGovernanceTitle":"Workflow governance","workflowGovernanceDescription":"Controls how workflow step permissions apply to owners and administrators.","ownersMayActOnAnyStepLabel":"Owners may act on any workflow step","ownersMayActOnAnyStepHint":"When on (default), owners and administrators can capture any step regardless of the role it requires. Turn off to make each step’s declared role bind everyone, owners included. Separation of duties always applies either way.","workflowGovernanceSaved":"Workflow governance updated.","workflowGovernanceSaveFailed":"Could not update workflow governance.","workflowGovernanceErrors":{"updateDenied":"You do not have permission to change workflow governance.","loadFailed":"Could not load workflow governance settings."},"moneyDisplay":{"title":"Money display","description":"Default number of decimal places for amounts. Leave blank to use each currency’s own standard. Individual entity or form fields can override this.","decimalsLabel":"Default decimal places (0–8)","decimalsPlaceholder":"Currency standard","rangeError":"Enter a whole number from 0 to 8, or leave blank.","save":"Save","saving":"Saving…","saved":"Money display settings saved.","saveFailed":"Could not save the money display settings.","loadFailed":"Could not load the money display settings.","updateDenied":"You do not have permission to change these settings."},"testAssuranceTitle":"Test Assurance","testAssuranceDescription":"Let this workspace run examples from Test Center and Design Assurance.","testAssuranceEnabledLabel":"Test Assurance is on","testAssuranceEnabledHint":"When on, consultants can write examples and run them against the current draft. The deployment switch must also be on.","testAssuranceSaved":"Test Assurance setting saved.","testAssuranceSaveFailed":"Could not update Test Assurance.","testAssuranceErrors":{"updateDenied":"You do not have permission to change Test Assurance for this team.","loadFailed":"Could not load Test Assurance settings.","saveFailed":"Could not save Test Assurance settings."},"referenceNotice":{"title":"Assistant reference notice","description":"Shown under every Assistant answer that is based on the Knowledge Base. Leave a language blank to use the platform wording.","platformDefault":"Platform default","blankHint":"Blank uses the platform default for that language.","save":"Save notice","saving":"Saving…","saved":"Reference notice saved","updateDenied":"You need permission to manage settings to change this notice.","loadFailed":"The workspace settings could not be loaded. Try again.","saveFailed":"The notice could not be saved. Try again."}},"members":{"pageTitle":"Members","errors":{"noPermissionDefineRoles":"You do not have permission to define team roles for this account.","noPermissionManageRoles":"You do not have permission to manage member roles.","cannotUpdateCustomRoles":"You cannot update custom roles for this member.","noPermissionManageTimeouts":"You do not have permission to manage member timeouts.","cannotUpdateTimeout":"You cannot update the timeout for this member.","cannotUpdateMember":"You cannot update this member.","cannotLoadMember":"That member could not be loaded.","noPermissionPrimaryRoles":"You do not have permission to change primary roles.","timeoutSettingsLoadFailed":"The account timeout settings could not be loaded.","saveFailed":"That change could not be saved."}},"billing":{"pageTitle":"Billing"},"yourTeams":"Your Teams ({{teamsCount}})","createTeam":"Create a Team","creatingTeam":"Creating Team...","personalAccount":"Personal Account","searchAccount":"Search Account...","membersTabLabel":"Members","memberName":"Name","youLabel":"You","emailLabel":"Email","roleLabel":"Role","primaryOwnerLabel":"Primary Owner","joinedAtLabel":"Joined at","invitedAtLabel":"Invited at","inviteMembersPageSubheading":"Invite members to your Team","createTeamModalHeading":"Create Team","createTeamModalDescription":"Create a new Team to manage your projects and members.","teamNameLabel":"Team Name","teamNameDescription":"Your team name should be unique and descriptive","createTeamSubmitLabel":"Create Team","createTeamSuccess":"Team created successfully","createTeamError":"Team not created. Please try again.","createTeamLoading":"Creating team...","settingsPageLabel":"General","createTeamDropdownLabel":"New team","changeRole":"Change Role","removeMember":"Remove from Account","inviteMembersSuccess":"Members invited successfully!","inviteMembersError":"Sorry, we encountered an error! Please try again","inviteMembersLoading":"Inviting members...","removeInviteButtonLabel":"Remove invite","addAnotherMemberButtonLabel":"Add another one","inviteMembersButtonLabel":"Send Invites","removeMemberModalHeading":"You are removing this user","removeMemberModalDescription":"Remove this member from the team. They will no longer have access to the team.","removeMemberSuccessMessage":"Member removed successfully","removeMemberErrorMessage":"Sorry, we encountered an error. Please try again","removeMemberErrorHeading":"Sorry, we couldn't remove the selected member.","removeMemberLoadingMessage":"Removing member...","removeMemberSubmitLabel":"Remove User from Team","chooseDifferentRoleError":"Role is the same as the current one","updateRole":"Update Role","updateRoleLoadingMessage":"Updating role...","updateRoleSuccessMessage":"Role updated successfully","updatingRoleErrorMessage":"Sorry, we encountered an error. Please try again.","updateMemberRoleModalHeading":"Update Member's Role","updateMemberRoleModalDescription":"Change the role of the selected member. The role determines the permissions of the member.","roleMustBeDifferent":"Role must be different from the current one","memberRoleInputLabel":"Member role","updateRoleDescription":"Pick a role for this member.","updateRoleSubmitLabel":"Update Role","transferOwnership":"Transfer Ownership","transferOwnershipDescription":"Transfer ownership of the team to another member.","transferOwnershipInputLabel":"Please type TRANSFER to confirm the transfer of ownership.","transferOwnershipInputDescription":"By transferring ownership, you will no longer be the primary owner of the team.","deleteInvitation":"Delete Invitation","deleteInvitationDialogDescription":"You are about to delete the invitation. The user will no longer be able to join the team.","deleteInviteSuccessMessage":"Invite deleted successfully","deleteInviteErrorMessage":"Invite not deleted. Please try again.","deleteInviteLoadingMessage":"Deleting invite. Please wait...","confirmDeletingMemberInvite":"You are deleting the invite to <b>{{ email }}</b>","transferOwnershipDisclaimer":"You are transferring ownership of the selected team to <b>{{ member }}</b>.","transferringOwnership":"Transferring ownership...","transferOwnershipSuccess":"Ownership successfully transferred","transferOwnershipError":"Sorry, we could not transfer ownership to the selected member. Please try again.","deleteInviteSubmitLabel":"Delete Invite","youBadgeLabel":"You","updateTeamLoadingMessage":"Updating Team...","updateTeamSuccessMessage":"Team successfully updated","updateTeamErrorMessage":"Could not update Team. Please try again.","updateLogoErrorMessage":"Could not update Logo. Please try again.","teamNameInputLabel":"Team Name","teamLogoInputHeading":"Upload your team's Logo","teamLogoInputSubheading":"Please choose a photo to upload as your team logo.","updateTeamSubmitLabel":"Update Team","inviteMembersHeading":"Invite Members to your Team","inviteMembersDescription":"Invite members to your team by entering their email and role.","emailPlaceholder":"member@email.com","membersPageHeading":"Members","inviteMembersButton":"Invite Members","invitingMembers":"Inviting members...","inviteMembersSuccessMessage":"Members invited successfully","inviteMembersErrorMessage":"Sorry, members could not be invited. Please try again.","invitePermissionDenied":"You do not have permission to invite members.","inviteRoleNotAllowed":"You cannot invite members into a role above your own.","pendingInvitesHeading":"Pending Invites","pendingInvitesDescription":" Here you can manage the pending invitations to your team.","noPendingInvites":"No pending invites found","loadingMembers":"Loading members...","loadMembersError":"Sorry, we couldn't fetch your team's members.","loadInvitedMembersError":"Sorry, we couldn't fetch your team's invited members.","loadingInvitedMembers":"Loading invited members...","invitedBadge":"Invited","duplicateInviteEmailError":"You have already entered this email address","invitingOwnAccountError":"Hey, that's your email!","dangerZone":"Danger Zone","dangerZoneSubheading":"Delete or leave your team","deleteTeam":"Delete Team","deleteTeamDescription":"This action cannot be undone. All data associated with this team will be deleted.","deletingTeam":"Deleting team","deleteTeamModalHeading":"Deleting Team","deletingTeamDescription":"You are about to delete the team {{ teamName }}. This action cannot be undone.","deleteTeamInputField":"Type the name of the team to confirm","leaveTeam":"Leave Team","leavingTeamModalHeading":"Leaving Team","leavingTeamModalDescription":"You are about to leave this team. You will no longer have access to it.","leaveTeamDescription":"Click the button below to leave the team. Remember, you will no longer have access to it and will need to be re-invited to join.","deleteTeamDisclaimer":"You are deleting the team {{ teamName }}. This action cannot be undone.","leaveTeamDisclaimer":"You are leaving the team {{ teamName }}. You will no longer have access to it.","deleteTeamErrorHeading":"Sorry, we couldn't delete your team.","leaveTeamErrorHeading":"Sorry, we couldn't leave your team.","a11y":{"membersPageTabs":"Team members sections","memberDirectoryTable":"Team member directory","memberDirectorySearch":"Search team members","selectedMemberDetails":"Selected member details","memberActionsMenu":"Actions for {{name}}","invitationActionsMenu":"Actions for invitation to {{email}}","invitationsTable":"Pending team invitations","invitationsSearch":"Search pending invitations","inviteEmailInput":"Email address for invitation {{index}}"},"searchMembersPlaceholder":"Search members","createTeamErrorHeading":"Sorry, we couldn't create your team.","createTeamErrorMessage":"We encountered an error creating your team. Please try again.","transferTeamErrorHeading":"Sorry, we couldn't transfer ownership of your team.","transferTeamErrorMessage":"We encountered an error transferring ownership of your team. Please try again.","updateRoleErrorHeading":"Sorry, we couldn't update the role of the selected member.","updateRoleErrorMessage":"We encountered an error updating the role of the selected member. Please try again.","searchInvitations":"Search Invitations","updateInvitation":"Update Invitation","removeInvitation":"Remove Invitation","acceptInvitation":"Accept Invitation","renewInvitation":"Renew Invitation","resendInvitation":"Resend Invitation","expiresAtLabel":"Expires at","expired":"Expired","active":"Active","inviteStatus":"Status","inviteNotFoundOrExpired":"Invite not found or expired","inviteNotFoundOrExpiredDescription":"The invite you are looking for is either expired or does not exist. Please contact the team owner to renew the invite.","backToHome":"Back to Home","renewInvitationDialogDescription":"You are about to renew the invitation to {{ email }}. The user will be able to join the team.","renewInvitationErrorTitle":"Sorry, we couldn't renew the invitation.","renewInvitationErrorDescription":"We encountered an error renewing the invitation. Please try again.","signInWithDifferentAccount":"Sign in with a different account","signInWithDifferentAccountDescription":"If you wish to accept the invitation with a different account, please sign out and back in with the account you wish to use.","acceptInvitationHeading":"Join {{accountName}}","acceptInvitationDescription":"Click the button below to accept the invitation to join {{accountName}}","continueAs":"Continue as {{email}}","joinTeamAccount":"Join Team","joiningTeam":"Joining team...","leaveTeamInputLabel":"Please type LEAVE to confirm leaving the team.","leaveTeamInputDescription":"By leaving the team, you will no longer have access to it.","reservedNameError":"This name is reserved. Please choose a different one.","specialCharactersError":"This name cannot contain special characters. Please choose a different one.","teamSlugLabel":"Team URL","teamSlugDescription":"Only English letters (a-z), numbers (0-9), and hyphens (-) are allowed. Example: my-team-name","slugRequiredForNonLatinName":"Since your team name uses non-English characters, please provide a URL using only English letters","invalidSlugError":"Only English letters (a-z), numbers (0-9), and hyphens (-) are allowed","duplicateSlugError":"This URL is already taken. Please choose a different one.","checkingPolicies":"Loading. Please wait...","policyCheckError":"We are unable to verify invitations restrictions. Please try again.","invitationsBlockedMultiple":"Invitations are currently not allowed for the following reasons:","invitationsBlockedDefault":"Invitations are currently not allowed due to policy restrictions.","policyErrors":{"subscriptionRequired":"An active subscription is required to invite team members.","paddleTrialRestriction":"Cannot invite members during trial period with per-seat billing on Paddle."},"policyRemediation":{"subscriptionRequired":"Please upgrade your plan or activate your subscription","paddleTrialRestriction":"Wait until trial period ends or upgrade to full plan"},"membersPage":{"tabDirectory":"Directory","tabWorkflowRoles":"Workflow roles","tabApiAccess":"API access","tabInvitations":"Invitations","roleSummaryAria":"Team role summary","summaryOwners":"Owners","summaryMembers":"Members","summaryInvited":"Invited","directoryHeading":"Team members","directoryDescription":"See who is on the team and manage access.","emptyTitle":"No members yet — invite your first teammate","emptyDescription":"Invite colleagues so they can collaborate on workflows and documents.","noSearchResults":"No members match your search.","statusActive":"Active","unassigned":"Unassigned","noEmail":"No email","unknown":"Unknown","denseTableHeading":"Member table","denseTableDescription":"Dense table for scanning, sorting, and power-user actions.","noPermissionWorkflowRoles":"You do not have permission to manage workflow roles.","noPermissionApiAccess":"You do not have permission to manage member API access.","selectedMemberDetails":"Selected member details","selectedMemberDetailsDescription":"Select a member from the directory table to review and edit role, additional workflow roles, API access, and session timeout.","noMemberSelected":"No member selected.","userIdLabel":"User ID","primaryRole":"Primary role","selectRolePlaceholder":"Select role","additionalWorkflowRoles":"Additional workflow roles","noCustomTeamRoles":"No custom team roles defined.","sessionTimeoutOverride":"Session timeout override (minutes)","inheritTeamDefault":"inherit team default ({{minutes}})","apiRouteAccess":"API route access","allowApiRoutes":"Allow member to access API routes","saveSelectedMemberDetails":"Save selected member details","cannotEditSelfOrOwner":"You cannot edit yourself or the primary owner from this panel.","selectMemberFirst":"Select a member first.","cannotEditMember":"You cannot edit this member from this view.","memberDetailsUpdated":"Member details updated.","selectMemberAria":"Select {{name}}","timeoutMustBeWholeNumber":"Session timeout override must be a whole number between {{min}} and {{max}} minutes.","timeoutOutOfRange":"Session timeout override must be between {{min}} and {{max}} minutes.","workflowRolesCardTitle":"Member workflow roles and timeout override","workflowRolesCardDescription":"Each member keeps one primary role and can also belong to multiple custom workflow roles. Session timeout defaults to team policy ({{minutes}} min) unless overridden here.","mainRole":"Main role: {{role}}","createTeamRolesFirst":"Create team roles first.","saveMemberConfiguration":"Save member configuration","workflowRolesUpdated":"Member workflow roles and timeout updated.","customRolesCardTitle":"Team roles for workflow swimlanes","customRolesCardDescription":"Define team-specific roles that can be assigned to multiple users and used in workflow swimlane step permissions.","roleName":"Role name","roleNamePlaceholder":"Example: underwriting_reviewer","hierarchyLevel":"Hierarchy level","roleDescription":"Description","roleDescriptionPlaceholder":"Optional description for consultants and admins.","createRole":"Create role","existingTeamRoles":"Existing team roles","noCustomTeamRolesYet":"No custom team roles yet.","noDescription":"No description","hierarchyLevelValue":"level {{level}}","roleNameTooShort":"Role name must be at least 2 characters.","teamRoleCreated":"Team role created.","apiAccessCardTitle":"Member API route access","apiAccessCardDescription":"Set which team users are allowed to access protected API routes when this control is enforced in runtime.","apiAccessUpdated":"Member API access updated.","save":"Save","delegationPanelTitle":"Delegation Scope / Engagement Access Statement","delegationPanelDescription":"Generate an immutable statement of this engagement's permitted accounts, capabilities/actions, access level, effective and expiry dates, granted-by, and revocation status. When no active grant exists the document stores a labeled empty state — access is never fabricated. Secrets and tokens are not included.","delegationGenerating":"Generating…","delegationGenerate":"Generate access statement","delegationEmpty":"No Delegation Scope Statement artifacts yet.","delegationGenerated":"Generated {{fileName}}","engagementPanelTitle":"Engagement Activity & Artifact Register","engagementPanelDescription":"Generate an immutable register of this engagement's summary, the consultant's activity log, deliverables/artifacts (type, checksum, created, acceptance), and grant/revocation timeline. When no activity or artifacts exist the document stores a labeled empty state — facts are never fabricated. Secrets and tokens are not included.","engagementGenerating":"Generating…","engagementGenerate":"Generate engagement register","engagementEmpty":"No Engagement Register artifacts yet.","engagementGenerated":"Generated {{fileName}}","viewArtifact":"View","downloadArtifact":"Download"},"navigationMenuEditor":{"sidebarHelpTitle":"How this appears in the team sidebar","sidebarHelpP1":"Static groups (Application, Admin, Settings) stay in the main column. Your Tasks entries are loaded dynamically: each top-level task row (folders, workflows, etc.) shows in the flyout when someone clicks Tasks — same pattern as reference dashboards where Dashboard / Pages / Apps open a second column of links.","sidebarHelpP2":"Multi-level menus: under Parent, choose Top level or any existing row (folder, workflow, route, etc.) to nest further. Drag rows to reorder and re-parent, or use the move buttons.","addItemTitle":"Add item","labelField":"Label","labelPlaceholder":"e.g. Expenses","kindField":"Kind","kindFolder":"folder","kindWorkflow":"workflow","kindRoute":"route","kindFormSchema":"form_schema","kindDataEntity":"data_entity","parentField":"Parent (optional)","parentHint":"Nest under any row below (folder, workflow, route, …), not only folders.","parentTopLevel":"Top level","workflowField":"Workflow","workflowPlaceholder":"Select workflow","workflowNone":"None","targetRequiredHint":"Pick what this menu item should open.","formSchemaField":"Form","formSchemaPlaceholder":"Select form","formSchemaNone":"None","dataEntityField":"Data entity","dataEntityPlaceholder":"Select data entity","dataEntityNone":"None","routeTargetField":"Route","routeTargetPlaceholder":"Select route","routeTargetNone":"None","routeTargetDashboard":"Dashboard","routeTargetInsights":"Insights","routeTargetInsightsDashboards":"Insights dashboards","routeTargetOperativeWorkflowTasks":"My tasks","routeTargetBusinessProcesses":"Business processes","routeTargetBusinessProcessTasks":"My tasks","routeTargetKnowledgeBase":"Knowledge base","routeTargetForum":"Forum","routeTargetChat":"Chat","routeTargetFormsAdmin":"Forms admin","routeTargetDataEntitiesAdmin":"Data entities admin","routeTargetSettings":"Settings","routeTargetMembers":"Members","advancedPathsTitle":"Path overrides","advancedPathsDescription":"Override the default URL derived from your target selection. Use [account] and [workflowSlug] placeholders where needed.","primaryPathField":"Primary path (optional, use [account] and [workflowSlug] for workflows)","primaryPathHint":"Folders: if empty, the folder row uses the first child's URL (e.g. a linked workflow). Set a path here to override the folder click target.","primaryPathPlaceholder":"/home/[account]/operativeworkflow/[workflowSlug]","secondaryPathField":"Secondary path (optional, e.g. New — use [account] and [workflowSlug])","secondaryPathPlaceholder":"/home/[account]/operativeworkflow/[workflowSlug]#operative-workflow-new-instance","createButton":"Create","treeHeading":"Menu structure","emptyTree":"No navigation items yet. Add one above.","dragHandle":"Drag to reorder","expandFolder":"Expand folder","collapseFolder":"Collapse folder","moveUp":"Move up","moveDown":"Move down","indent":"Indent (nest under previous item)","outdent":"Outdent (move to parent level)","delete":"Delete","previewTitle":"Live sidebar preview","previewDescription":"Shows the same sidebar navigation your team members see. Updates instantly as you edit the tree.","previewChromeHint":"Preview — navigation links are inactive here.","visibilitySelectItemHint":"Select a menu item to assign which roles can see it in the sidebar.","visibilityUnavailableTitle":"Role visibility is not available for “{{label}}”","visibilityUnavailableHint":"Folders, Settings/Admin targets, and lockout-sensitive entries stay visible to all members. Choose a workflow, form, data entity, or other already-authorized route.","visibilityTitle":"Who can see “{{label}}”","visibilityDescription":"Map team roles to this entry. Leave all unchecked so every member sees it. Owners always see every entry.","visibilitySystemRoles":"Team membership roles","visibilityCompanyRoles":"Company roles","visibilityNoCompanyRoles":"No company roles yet. Create them under Settings → Company roles.","visibilityEmptyMeansAll":"No roles selected = visible to all members (backward compatible).","visibilitySave":"Save visibility","visibilityRoleOwner":"Owner","visibilityRoleMember":"Member","dataEntityHint":"Opens this entity's records grid in the Data workspace (already access-checked).","railHelpTitle":"How this appears in the team navigation","railHelpP1":"Top-level groups (Application, Admin, Settings) become modules in the icon rail — Settings sits at the bottom. Clicking a module opens its panel of links, and choosing a link closes the panel again to give the work area the full width. Your Tasks entries are loaded dynamically and appear inside the panel for the module they belong to.","level1Title":"First level","level1Description":"The entries in the icon rail. Reorder them, rename them for your team, or hide the ones you do not use. Application, Admin and Tasks are always shown.","level1Save":"Save","level1Cancel":"Cancel","level1Hidden":"hidden","level1RenamedHint":"Renamed — other languages will appear in Translations.","level1MoveUp":"Move {{label}} up","level1MoveDown":"Move {{label}} down","level1Rename":"Rename","level1AlwaysShown":"This entry is always shown.","level1Show":"Show","level1Hide":"Hide","level1SaveFailed":"Could not save.","treeTitle":"Sidebar structure","treeDescription":"Everything your team sees in the sidebar, in one tree. Indentation decides the level: use the arrows to move an entry, or to nest it under the one above. Select an entry to rename, hide or reset it.","treeSearchPlaceholder":"Search the sidebar…","treeNoMatches":"Nothing matches that search.","treeOriginPlatform":"built in","treeOriginTenant":"yours","treeIndent":"Nest under the entry above","treeOutdent":"Move out one level","treePropertiesTitle":"Selected entry","treeNameLabel":"Name","treeNamePlaceholder":"Leave blank to use the built-in name","treeRestoreEntry":"Reset this entry","treeRestoreAll":"Reset the whole sidebar","appearanceHint":"The icon shows in the sidebar next to the label.","appearanceFirstLevel":"Show at the first sidebar level","appearanceSaveFailed":"Could not save.","appearanceSave":"Save appearance","addItemControl":"Add menu item","inspectorEmpty":"No menu item selected.","treeSearchNoMatches":"No menu entries match that search.","renameFailed":"Rename failed","saving":"Saving…","visibilitySaveFailed":"Failed to save visibility","originBuiltIn":"built in","iconGroup":{"workspace":"Workspace","process":"Process","data":"Data & documents","people":"People & knowledge","finance":"Finance","ai":"AI","operations":"Operations","admin":"Administration"},"appearanceEmpty":"Select a menu item to choose its icon and where it appears.","appearanceFirstLevelNested":"Only a top-level item can appear at the first level. Move it to the top level first.","appearanceFirstLevelRoot":"Appears beside Application and Admin. With no children of its own it becomes a direct link.","appearanceHeading":"Appearance","appearanceIconDefault":"Default","bulkAlreadyHidden":"Every selected entry must currently be shown.","bulkAlreadyShown":"Every selected entry must currently be hidden.","bulkCannotHide":"The selection contains an entry that must always be shown.","bulkHide":"Hide","bulkMoveTo":"Move to","bulkResetAuthored":"Resetting presentation applies only to built-in entries.","bulkResetNoOverride":"Every selected entry must have a presentation override.","bulkResetPresentation":"Reset presentation","bulkSelectFirst":"Select at least one entry.","bulkSelectedCount":"{{count}} selected","bulkShow":"Show","inspectorHeading":"Inspector","moveDialogDescription":"Choose a valid destination for the selected entries.","moveDialogTitle":"Move selected entries","moveNoDestinations":"No valid destinations match that search.","moveSearchPlaceholder":"Search destinations","selectForBulk":"Select {{label}} for bulk actions","topLevel":"Top level","previewAsRoleLabel":"Preview as","previewRoleAll":"Administrator (everything)","previewRoleMember":"Member (no company role)","opensDestinationLabel":"Opens","createActionToggleLabel":"Also add a “Create new {{label}}” shortcut","createInvalid":"Check the item's details and try again.","createForbidden":"You don't have permission to change the navigation menu.","createFailed":"The menu item wasn't saved. Try again.","createUnconfirmed":"We couldn't confirm whether the menu item was saved. Trying again is safe: it won't create a duplicate.","createSavedUnconfirmed":"The menu item was saved, but the editor couldn't confirm it right away, so it reloaded. The new item is selected.","previewDestinationNotice":"The preview applies menu visibility and each workflow's step permissions. Other destination permissions may hide more items, and they still govern access.","visibilityAccessBoundary":"Hiding an item doesn't restrict access to its page. The page's own permissions still decide who can open it."},"welcome":{"title":"Welcome to LerniFlow","description":"Let’s get your team workspace ready. Confirm how your company or team should appear inside LerniFlow.","trialStatusLabel":"Trial status","trialStatusActive":"Active","trialDaysRemainingLabel":"Days remaining","trialDaysRemainingValue":"{{count}} days left","capabilitiesTitle":"What you can do now","limitationsPrompt":"Want to know what’s included?","limitationsLink":"See plan details","goToDashboard":"Go to dashboard"},"deleteInvitationErrorTitle":"Sorry, we couldn't delete the invitation.","deleteInvitationErrorMessage":"We encountered an error deleting the invitation. Please try again.","errors":{"memberApiAccess":{"notAllowedToManage":"You do not have permission to manage member API access.","notAllowedForMember":"You cannot update API route access for this member.","updateFailed":"That API access change could not be saved. Please try again."}},"updateTeamNotPermitted":"Only a workspace owner can change the name and address. Your change was not saved.","delegatedAccessBadge":"Delegated access","opportunity":{"pageTitle":"Opportunities","pageDescription":"AI-drafted findings you review and move toward a decision. Value is a scenario, not revenue.","empty":"No opportunities yet. Save an AI finding as a draft to start.","moveTo":"Move to","confidenceLabel":"Confidence","benefitRange":"Benefit: {{low}}–{{high}} (base {{base}})","status":{"draft":"Draft","evidence_needed":"Evidence needed","client_review":"Client review","approved":"Approved","planned":"Planned","realized":"Realized","rejected":"Rejected"},"confidence":{"low":"Low","medium":"Medium","high":"High"},"saveDenied":"You cannot save opportunities for this client.","titleRequired":"An opportunity needs a title.","saveFailed":"That opportunity could not be saved. Please try again.","notFound":"That opportunity was not found.","transitionDenied":"You cannot change this opportunity.","sameStatus":"The opportunity is already at that stage.","transitionFailed":"That change could not be saved. Please try again."},"aiActions":{"decidedIsFinal":"This proposal has already been decided.","proposalIsImmutable":"A proposal cannot be changed after it is created.","proposeDenied":"You cannot propose actions for this workspace.","summaryRequired":"A proposal needs a summary.","notFound":"That proposal was not found.","decideDenied":"You cannot decide this proposal.","badDecision":"That is not a valid decision.","proposeFailed":"That proposal could not be saved. Please try again.","decideFailed":"That decision could not be saved. Please try again.","executeFailed":"The approved action could not be completed. Please try again."}},"billing":{"units":{"member_one":"member","member_other":"members"},"subscriptionTabSubheading":"Manage your Subscription and Billing","planCardTitle":"Your Plan","planCardDescription":"Below are the details of your current plan. You can change your plan or cancel your subscription at any time.","planRenewal":"Renews every {{interval}} at {{price}}","planDetails":"Plan Details","checkout":"Proceed to Checkout","trialAlertTitle":"Your Trial is ending soon","trialAlertDescription":"Your trial ends on {{date}}. Upgrade to a paid plan to continue using all features.","billingPortalCardButton":"Visit Billing Portal","billingPortalCardTitle":"Manage your Billing Details","billingPortalCardDescription":"Visit your Billing Portal to manage your subscription and billing. You can update or cancel your plan, or download your invoices.","cancelAtPeriodEndDescription":"Your subscription is scheduled to be canceled on {{- endDate }}.","renewAtPeriodEndDescription":"Your subscription is scheduled to be renewed on {{- endDate }}","noPermissionsAlertHeading":"You don't have permissions to change the billing settings","noPermissionsAlertBody":"Please contact your account owner to change the billing settings for your account.","checkoutSuccessTitle":"Done! You're all set.","checkoutSuccessDescription":"Thank you for subscribing, we have successfully processed your subscription! A confirmation email will be sent to {{ customerEmail }}.","checkoutSuccessBackButton":"Proceed to App","cannotManageBillingAlertTitle":"You cannot manage billing","cannotManageBillingAlertDescription":"You do not have permissions to manage billing. Please contact your account owner.","manageTeamPlan":"Manage your Team Plan","manageTeamPlanDescription":"Choose a plan that fits your team's needs. You can upgrade or downgrade your plan at any time.","basePlan":"Base Plan","billingInterval":{"label":"Choose your billing interval","month":"Billed monthly","year":"Billed yearly"},"perMonth":"month","custom":"Custom Plan","lifetime":"Lifetime","trialPeriod":"{{period}} day trial","perPeriod":"per {{period}}","redirectingToPayment":"Redirecting to checkout. Please wait...","proceedToPayment":"Proceed to Payment","startTrial":"Start Trial","perTeamMember":"Per team member","perUnitShort":"Per {{unit}}","perUnit":"Per {{unit}} usage","teamMembers":"Team Members","includedUpTo":"Up to {{upTo}} {{unit}} included in the plan","fromPreviousTierUpTo":"for each {{unit}} for the next {{ upTo }} {{ unitPlural }}","andAbove":"above {{ previousTier }} {{ unit }}","startingAtPriceUnit":"Starting at {{price}}/{{unit}}","priceUnit":"{{price}}/{{unit}}","forEveryUnit":"for every {{ unit }}","setupFee":"plus a {{ setupFee }} setup fee","perUnitIncluded":"({{included}} included)","features":"Features","featuresLabel":"Features","detailsLabel":"Details","planPickerLabel":"Pick your preferred plan","planCardLabel":"Manage your Plan","planPickerAlertErrorTitle":"Error requesting checkout","planPickerAlertErrorDescription":"There was an error requesting checkout. Please try again later.","subscriptionCancelled":"Subscription Cancelled","cancelSubscriptionDate":"Your subscription will be cancelled at the end of the billing period on {{date}}","noPlanChosen":"Please choose a plan","noIntervalPlanChosen":"Please choose a billing interval","status":{"free":{"badge":"Free Plan","heading":"You are currently on the Free Plan","description":"You're on a free plan. You can upgrade to a paid plan at any time."},"active":{"badge":"Active","heading":"Your subscription is active","description":"Your subscription is active. You can manage your subscription and billing in the Customer Portal."},"trialing":{"badge":"Trial","heading":"You're on a trial","description":"You can enjoy the benefits of plan until the trial ends"},"past_due":{"badge":"Past Due","heading":"Your invoice is past due","description":"Your invoice is past due. Please update your payment method."},"canceled":{"badge":"Canceled","heading":"Your subscription is canceled","description":"Your subscription is canceled. It is scheduled to end at end of the billing period."},"unpaid":{"badge":"Unpaid","heading":"Your invoice is unpaid","description":"Your invoice is unpaid. Please update your payment method."},"incomplete":{"badge":"Incomplete","heading":"We're waiting for your payment","description":"We're waiting for your payment to go through. Please bear with us."},"incomplete_expired":{"badge":"Expired","heading":"Your payment has expired","description":"Your payment has expired. Please update your payment method."},"paused":{"badge":"Paused","heading":"Your subscription is paused","description":"Your subscription is paused. You can resume it at any time."},"succeeded":{"badge":"Succeeded","heading":"Your payment was successful","description":"Your payment was successful. Thank you for subscribing!"},"pending":{"badge":"Pending","heading":"Your payment is pending","description":"Your payment is pending. Please bear with us."},"failed":{"badge":"Failed","heading":"Your payment failed","description":"Your payment failed. Please update your payment method."}},"plans":{"starter":{"name":"Starter","description":"For small businesses and independent professionals putting a reliable system in place."},"growth":{"name":"Growth","description":"For growing businesses and consulting teams that need more automation, insight, and capacity."},"scale":{"name":"Scale","description":"For larger organizations and consultants managing high-volume client portfolios."},"partner":{"name":"Partner","description":"For independent consultants and firms building a business with their own client portfolio."}},"entitlements":{"title":"Plan & usage","description":"Current subscription tier, trial status, and usage limits.","trialTitle":"Free trial","currentTier":"Current tier","billingInterval":"Billing interval","intervalAnnual":"Annual","intervalMonthly":"Monthly","trialDaysRemaining":"Days remaining: {{count}} (ends {{date}})","trialEnds":"Trial ends {{date}}","seatsUsed":"Seats used","aiCallsThisMonth":"AI calls this month","usageOfIncluded":"{{used}} of {{included}} included","tiers":{"trial":"Trial","free":"Free"},"banner":{"title":"Trial ending soon","description":"Your trial ends on {{date}}. Add a payment method to keep access.","upgrade":"Upgrade now"}},"storage":{"title":"Storage","descriptionTenant":"What your plan includes and what you are using. LerniFlow sets these allowances; you can see them but not change them.","descriptionPlatform":"This account’s effective storage allowance and usage, as the tenant sees it.","readOnly":"Read-only","ofAllowance":"of {{allowance}} used","planSource":"Included in the {{plan}} plan","meterLabel":"Storage used","legendStored":"Stored: {{value}}","legendInProgress":"Uploading or being scanned: {{value}}","legendAvailable":"Available: {{value}}","fullNotice":"Your storage is full. New uploads are paused; existing files stay readable and downloadable.","unavailableTitle":"Uploads are paused","storedSoFar":"Stored so far: {{value}}","pools":{"training_content":"Training content"},"poolUsage":"{{used}} of {{allowance}}","poolHints":{"training_content":"From the Training & Documentation add-on. Only training videos and media can use it."},"perFileLimit":"Largest file you can upload","pilotAllowance":"Pilot allowance","pilots":{"record_documents_pilot":"Record documents pilot"},"manualPlans":{"beta":"Beta Access","pro":"Pro","enterprise":"Enterprise","internal":"Internal"},"protectedExcess":"Kept for a legal hold beyond the allowance","addonAllowances":{"intro":"Training render minutes (first 60 days)","recurring":"Training render minutes per month"},"minutes":"{{value}} minutes","breakdownTitle":"What is using storage","nothingStored":"Nothing is stored yet.","categories":{"document_version":"Documents and their versions","generated_document":"Generated documents","kb_upload":"Knowledge base uploads","chat_attachment":"Chat attachments","training_media":"Training videos and media","text_extraction":"Extracted text","tenant_backup":"Backups"},"shownSeparately":"shown separately","errors":{"allowanceExceeded":"This upload does not fit in your storage allowance. Free up space or ask your owner about your plan.","perFileCeilingExceeded":"This file is larger than the largest file you can upload.","reservationReleased":"This upload was cancelled. Start it again.","reservationNotFound":"This upload could not be found.","exceedsReservation":"The stored file is larger than the space reserved for it.","alreadyCommitted":"This upload is already stored.","idempotencyConflict":"This upload was already started with a different file.","invalidBytes":"The file size is not valid.","invalidIdempotencyKey":"The upload reference is not valid.","invalidReleaseReason":"The reason for removing this file is not valid.","unknownCategory":"This kind of file is not recognised.","unknownAccount":"This account could not be found.","forbidden":"Only LerniFlow can record storage use.","unavailable":"Storage could not be checked. The upload was stopped; try again in a moment.","notMember":"Only members of this account can see its storage.","loadFailed":"Your storage allowance could not be loaded.","planUnknown":"Your workspace has no plan on record, so nothing can be stored yet. Ask your owner to contact LerniFlow.","allowanceUnavailable":"Your plan’s storage allowance is not set up, so nothing can be stored right now. Ask your owner to contact LerniFlow.","ceilingUnavailable":"The largest file size is not set up, so nothing can be stored right now. Ask your owner to contact LerniFlow.","legalHoldNotActive":"Only a record under an active legal hold can be preserved beyond the storage limits."}},"meterAllowances":{"errors":{"notMember":"Only members of this account can see its allowances."}}},"marketing":{"pricingPage.metaTitle":"Choose how you want to evaluate LerniFlow.","pricingPage.metaDescription":"Start with a 15-day trial. No credit card is required.","pricingPage.title":"Choose how you want to evaluate LerniFlow.","pricingPage.subtitle":"Start with a 15-day trial. No credit card is required.","pricingPage.trial.title":"Evaluate your own operating use case","pricingPage.trial.body":"Use the trial to assess a defined process, form, record model, or consultant scenario. Some capabilities require administrator setup or a separate entitlement.","pricingPage.trial.gatingNote":"If a capability included for your workspace is not visible, ask your workspace administrator to turn it on.","pricingPage.consultedStart.title":"Need a consultant-led evaluation?","pricingPage.consultedStart.body":"Tell us about the operation, client portfolio, entities, or integrations you need to assess.","pricingPage.primaryCta":"Start a 15-day trial","pricingPage.secondaryCta":"Talk through your evaluation","pricingPage.questionsTitle":"Questions","pricingPage.questions.trial.title":"Evaluate your own operating use case","pricingPage.questions.trial.body":"Use the trial to assess a defined process, form, record model, or consultant scenario. Some capabilities require administrator setup or a separate entitlement.","pricingPage.questions.gating.title":"If a capability included for your workspace is not visible, ask your workspace administrator to turn it on.","pricingPage.questions.gating.body":"If a capability included for your workspace is not visible, ask your workspace administrator to turn it on.","pricingPage.questions.consultedStart.title":"Need a consultant-led evaluation?","pricingPage.questions.consultedStart.body":"Tell us about the operation, client portfolio, entities, or integrations you need to assess.","trustPage.metaTitle":"Understand how LerniFlow handles access, data, and operational control.","trustPage.metaDescription":"Review evidenced product controls, privacy disclosures, AI data handling, service terms, and the information available for your assessment.","trustPage.title":"Understand how LerniFlow handles access, data, and operational control.","trustPage.subtitle":"Review evidenced product controls, privacy disclosures, AI data handling, service terms, and the information available for your assessment.","trustPage.sections.access.title":"Account-scoped access","trustPage.sections.access.body":"LerniFlow uses account-scoped roles, permissions, and publishing controls for client and tenant workspaces.","trustPage.sections.change.title":"Controlled configuration promotion","trustPage.sections.change.body":"Approved tenant configuration can be promoted from sandbox to production.","trustPage.sections.ai.title":"AI data handling","trustPage.sections.ai.body":"Review the data categories, providers, purposes, retention, configuration options, and administrator responsibilities that apply to AI use.","trustPage.sections.privacy.title":"Privacy and legal notices","trustPage.sections.privacy.body":"Review the applicable privacy policy, cookie policy, terms of service, and available data-processing information.","trustPage.cta":"Request trust information for your assessment.","trustPage.resourcesLabel":"Trust and policy resources","product.title":"One platform for the operation behind your business.","product.subtitle":"Bring processes, records, forms, documents, knowledge, collaboration, and financial control into a configurable business operations platform.","product.operations.title":"Model and run the work","product.operations.body":"Design role-aware processes, route decisions, collect structured information, manage records, and produce documents.","product.ai.title":"Use AI with operating context","product.ai.body":"Use AI assistance for process, entity, and form creation with tenant processes, knowledge, and records as context.","product.control.title":"Connect execution and financial control","product.control.body":"Track cost activity, work across entity currencies, review supported KPIs, and prepare supported GL exports.","product.global.title":"Operate across supported languages and entities","product.global.body":"Use eight interface locales, localized knowledge, per-entity currencies, FX reporting, and controlled configuration promotion.","product.cta":"Choose the product area you want to evaluate.","productOperations.title":"Model the way your business works. Then run it with control.","productOperations.subtitle":"Design role-aware processes, route work by condition, collect structured information, manage related records, and produce reviewable documents.","productOperations.designer.title":"Start with a graphical operating model","productOperations.designer.body":"Use graphical authoring, structured configuration, and role swimlanes to make responsibilities and decisions visible.","productOperations.execution.title":"Handle work that does not finish in one sitting","productOperations.execution.body":"Use approvals, conditional routes, batch operations, and steps that pause and resume when the required outside response is received.","productOperations.forms.title":"Collect the information each step requires","productOperations.forms.body":"Generate role-aware step forms from the underlying schema and configure master-detail, calculated, and tabular form sections.","productOperations.documents.title":"Create and review operating documents","productOperations.documents.body":"Generate documents from configured templates, review them in the workspace, and record signed acknowledgement.","productAi.title":"Put AI to work in the context of your operation.","productAi.subtitle":"Use tenant processes, knowledge, and records as context while AI helps create processes, entities, and forms.","productAi.useCase.title":"Apply AI to a defined operating task","productAi.useCase.body":"Describe the process, entity, or form you need, review the generated starting point, and refine it before use.","productAi.roi.title":"Evaluate return instead of accepting a generic AI promise","productAi.roi.body":"Choose a repeatable task, record the current time and review effort, test the same task with LerniFlow, and compare the accepted result. Publish an ROI conclusion only when the method and evidence support it.","productAi.controls.title":"Choose the applicable AI controls","productAi.controls.body":"Eligible workspaces can use optional controls that include a locally hosted model option, PII redaction, and bring-your-own-key. Ask your workspace administrator which controls are enabled.","productAi.cta":"Evaluate an AI use case","financialControl.title":"Connect operating work to financial control.","financialControl.subtitle":"Track cost activity, manage entity currencies, review supported Finance and Sales KPIs, and prepare supported GL export bundles.","financialControl.cost.title":"Keep a cost subledger close to the operation","financialControl.cost.body":"Record cost activity in LerniFlow and connect it to an external general ledger through supported integration and export patterns.","financialControl.exports.title":"Prepare supported GL exports","financialControl.exports.body":"Create export bundles for QuickBooks, ContPAQi, and SAP Business One when the applicable add-on is enabled and configured.","financialControl.insights.title":"Use the KPI content that is actually available","financialControl.insights.body":"The current KPI library includes Finance and Sales content.","financialControl.cta":"Explore financial control","globalOperations.title":"Add supported languages, entities, and currencies without changing platforms.","globalOperations.subtitle":"Use the product interface in eight locales, maintain localized knowledge, manage per-entity currencies and FX reporting, and move approved configuration from sandbox to production.","globalOperations.language.title":"Give teams an interface they can use","globalOperations.language.body":"The product interface is available in eight locales, and the Knowledge Base supports per-locale content and search.","globalOperations.entity.title":"Represent a multi-entity operation","globalOperations.entity.body":"Configure legal entities with their own currencies and use FX reporting across the configured operation.","globalOperations.promotion.title":"Move approved configuration into production","globalOperations.promotion.body":"Promote tenant configuration from sandbox to production rather than recreating that configuration in the production workspace.","globalOperations.scope.title":"Confirm local requirements separately","globalOperations.scope.body":"Language and currency support do not establish local tax, privacy, employment, accounting, accessibility, or sector-specific legal coverage.","globalOperations.cta":"Assess global fit","marketplace.title":"Package expertise as installable solutions.","marketplace.subtitle":"Publish, rate, feature, and install eligible workflow templates and add-ons through the LerniFlow marketplace.","marketplace.business.title":"Start from a reusable solution","marketplace.business.body":"Install eligible templates and add-ons, including available Inventory, GL export, and asset-finance originations bundles.","marketplace.consultant.title":"Turn delivery knowledge into a product","marketplace.consultant.body":"Publish eligible templates and add-ons so that supported solution components can be installed in another workspace.","marketplace.commercial.title":"Review the commercial terms before selling","marketplace.commercial.body":"Paid offerings are governed by the marketplace seller terms, including revenue allocation, fees, taxes, refunds, payout timing, intellectual property, and removal rules.","marketplace.cta":"Explore marketplace solutions.","resourcesHub.title":"Evaluate, configure, and operate LerniFlow.","resourcesHub.subtitle":"Use product documentation, verified product updates, trust information, and support routes.","resourcesHub.docs.title":"Documentation","resourcesHub.docs.body":"Find configuration and operating guidance.","resourcesHub.updates.title":"Product updates","resourcesHub.updates.body":"Review published changes and applicable availability details.","resourcesHub.trust.title":"Trust information","resourcesHub.trust.body":"Review access, data-handling, privacy, and operational-control information.","resourcesHub.support.title":"Support","resourcesHub.support.body":"Get help with an existing LerniFlow workspace.","resourcesHub.cta":"Open documentation","navProduct":"Product","navConsultants":"Consultants","navBusinesses":"Businesses","navResources":"Resources","navPricing":"Pricing","solutions":"Solutions","forConsultants":"For Consultants","forBusinesses":"For Businesses","startTrial15Days":"Start free for 15 days","startTrial15DaysHeader":"Free for 15 days","bookDemo":"Book a demo","joinAsConsultant":"Join as a consultant","explorePlans":"Explore plans","blog":"Blog","blogSubtitle":"Practical ideas for smarter systems, useful automation, and sustainable growth.","blogMetaTitle":"Smart Business Systems and Growth Insights","blogMetaDescription":"Ideas for saving time, putting AI to work, controlling costs, and growing with confidence.","changelog":"Changelog","changelogSubtitle":"Product updates for automation, reporting, AI assistance, and business controls.","changelogMetaTitle":"Platform Changelog","changelogMetaDescription":"Track improvements across business systems, automation, AI assistance, and reporting.","noChangelogEntries":"No changelog entries found","changelogPaginationNext":"Next Page","changelogPaginationPrevious":"Previous Page","changelogNavigationPrevious":"Previous","changelogNavigationNext":"Next","documentation":"Documentation","documentationSubtitle":"User guides for consultants and for individuals or businesses using LerniFlow.","docsMetaTitle":"Documentation and Guides","docsMetaDescription":"Implementation and operations guides for teams and consultants.","pricing":"Pricing","pricingSubtitle":"Start with a 15-day free trial, then choose the plan that fits your business, team, or client portfolio.","pricingMetaTitle":"Pricing for Businesses and Independent Consultants","pricingMetaDescription":"Try LerniFlow free for 15 days, then choose Starter, Growth, Scale, or the consultant-focused Partner tier.","backToBlog":"Back to blog","noPosts":"No posts found","blogPaginationNext":"Next Page","blogPaginationPrevious":"Previous Page","readMore":"Read more","contactFaq":"Still have questions? Our team can help.","contact":"Contact","contactMetaTitle":"Contact Sales and Solutions","contactMetaDescription":"Talk with our team about getting started, bringing clients, controlling costs, and choosing a plan.","about":"About","product":"Product","legal":"Legal","termsOfService":"Terms of Service","termsOfServiceDescription":"Service terms for platform access, subscriptions, and usage obligations.","cookiePolicy":"Cookie Policy","cookiePolicyDescription":"How we use cookies and similar technologies in the platform.","privacyPolicy":"Privacy Policy","privacyPolicyDescription":"How we collect, use, and protect customer and operational data.","contactDescription":"Speak with our team about putting LerniFlow to work for your business or clients.","contactHeading":"Tell us what you want your business to do better","contactSubheading":"Share your goals and biggest time or cost drains. We will help you find a practical next step.","contactName":"Your name","contactEmail":"Work email","contactMessage":"How can we help?","sendMessage":"Send message","contactSuccess":"Message sent","contactError":"Unable to send message","contactSuccessDescription":"Thank you. We received your request and will reply shortly.","contactErrorDescription":"Please try again or email us directly if the issue continues.","logoTagline":"Smart Business, Simple Life","footerDescription":"The business system that keeps your know-how together, automates the busywork, and helps you grow without losing control of time or budget.","copyright":"© {{year}} {{product}}. All rights reserved.","home.metaTitle":"A standard platform for non-standard businesses | LerniFlow","home.metaDescription":"Configure processes, records, forms, controls, and knowledge around the way your operation creates value.","home.heroPillLabel":"Standard platform. Non-standard business.","home.heroPillText":"One system for your business, your team, and your AI","home.heroTitle":"Run the business you built—not somebody else's template.","home.heroSubtitle":"LerniFlow is a standard platform for non-standard businesses. Configure processes, records, forms, controls, and knowledge around the way your operation creates value.","home.heroImageAlt":"Platform operations dashboard","home.audience.consultants.title":"I advise clients","home.audience.consultants.description":"Create client accounts, operate with account-scoped permissions, and package expertise as reusable solutions.","home.audience.consultants.cta":"Explore LerniFlow for consultants","home.audience.businesses.title":"I run a business","home.audience.businesses.description":"Keep the operating differences that help you compete while bringing execution, knowledge, and financial control into one platform.","home.audience.businesses.cta":"Explore LerniFlow for businesses","home.aiHeading":"Make AI earn its place in the operation","home.aiDescription":"Use your processes, knowledge, and records as context while AI helps create processes, entities, and forms. Evaluate the result against a task your team already performs.","home.aiImageAlt":"AI assistance grounded in operating context","home.workflowCapabilities.setup":"A business system shaped around how your company works","home.workflowCapabilities.design":"Your know-how captured clearly in one place","home.workflowCapabilities.reporting":"Results, costs, and KPIs your team can see","home.workflowCapabilities.notifications":"Timely alerts before important work gets missed","home.workflowCapabilities.actions":"Automation and AI that move work forward","home.consultantsHeading":"Build a business from what you know","home.consultantsDescription":"Use LerniFlow as the foundation for your consulting business: package your expertise, bring your own clients, and create lasting client value.","home.consultantOutcomes.onboard":"Onboard and manage multiple client accounts","home.consultantOutcomes.configure":"Turn your know-how into client-ready systems and automation","home.consultantOutcomes.manage":"Coordinate consultant and client teams in one workspace","home.consultantOutcomes.recurring":"Offer one-time projects or recurring services through the Partner tier","home.businessesHeading":"Get results without blowing the budget","home.businessesDescription":"Give IT, Finance, Revenue, and Operations one clear view of work, costs, AI spend, and the results that matter.","home.businessOutcomes.selfImplement":"Self-serve setup or consultant-led implementation","home.businessOutcomes.standardize":"Keep company know-how consistent and accessible","home.businessOutcomes.review":"See costs, AI spend, budgets, and revenue KPIs together","home.businessOutcomes.growth":"Prove quick ROI while adapting to new ways of working","home.pricingPillLabel":"15-day free trial","home.pricingPillText":"Start without a credit card.","home.pricingHeading":"Start simple. Grow when the results prove it.","home.pricingSubheading":"Choose a plan for your business or client portfolio, with clear limits and no mystery around extra usage.","home.finalCtaHeading":"Ready for a business that takes less out of you?","home.finalCtaSubheading":"Start free for 15 days. Put your know-how in one place, automate the busywork, and see value before you commit.","consultants.metaTitle":"Turn your operating expertise into a repeatable client offering | LerniFlow","consultants.metaDescription":"Register as a consultant, create client accounts, invite client owners, operate with account-scoped permissions, and package reusable solutions.","consultants.title":"Turn your operating expertise into a repeatable client offering.","consultants.subtitle":"Register as a consultant, create client accounts, invite client owners, operate with account-scoped permissions, and package reusable solutions.","consultants.servicesTitle":"Turn your expertise into results clients can see","consultants.servicesDescription":"Use LerniFlow to capture your methods, put them into action, and give every client a consistent experience.","consultants.services.onboarding":"Onboard clients with structured setup and governance","consultants.services.configuration":"Turn your know-how into client-specific systems, reports, and automation","consultants.services.reporting":"Show clients progress, costs, and results with clear reporting","consultants.services.managed":"Keep delivering value through ongoing services with clear KPIs","consultants.monetizationTitle":"Create income on your terms","consultants.monetizationDescription":"Package your expertise as a project, retainer, or ongoing service and manage it through the Partner tier.","consultants.monetization.oneTime":"One-time implementation and transformation projects","consultants.monetization.recurring":"Recurring advisory subscriptions and optimization retainers","consultants.monetization.programs":"Ongoing improvement and growth services backed by real results","consultants.monetization.teams":"Team accounts for consultant and client collaboration","consultants.ctaTitle":"Ready to build the business your expertise deserves?","consultants.ctaSubtitle":"Join through the Partner tier, bring your own clients, and start turning your know-how into repeatable revenue.","businesses.metaTitle":"Keep the operation that makes your business different | LerniFlow","businesses.metaDescription":"Model your processes, records, forms, approvals, documents, and knowledge in a standard platform configured around the way your team works.","businesses.title":"Keep the operation that makes your business different.","businesses.subtitle":"Model your processes, records, forms, approvals, documents, and knowledge in a standard platform configured around the way your team works.","businesses.operationsTitle":"One system across IT, Finance, Revenue, and Operations","businesses.operationsDescription":"Keep work, company know-how, ownership, and results connected as your teams adapt to changing times.","businesses.operations.selfImplement":"Self-implement with guided setup and templates","businesses.operations.standardize":"Keep important work, approvals, and company know-how consistent","businesses.operations.visibility":"See delays, risks, costs, and revenue KPIs in time to act","businesses.operations.alerts":"Configure alerts and actions to keep teams responsive","businesses.improvementTitle":"Quick ROI on your systems and your AI","businesses.improvementDescription":"Connect spending to results, stay on budget, and make new ways of working pay off sooner.","businesses.improvement.aiReview":"Track AI spend alongside the value it helps create","businesses.improvement.initiatives":"Choose investments by expected cost, impact, and return","businesses.improvement.program":"Tie improvements to revenue, margin, service, and business goals","businesses.improvement.scale":"Grow capacity without losing budget visibility or control","businesses.ctaTitle":"Deliver results without blowing the budget","businesses.ctaSubtitle":"Start free for 15 days or book a demo to see how LerniFlow connects automation, AI spend, budgets, and business results.","pricing.trial.title":"15 days free","pricing.trial.description":"Use LerniFlow free for 15 days to put your business know-how in one place, automate busywork, and see the value before choosing a plan.","pricing.trial.userLimit":"Includes up to 3 users","pricing.trial.storageLimit":"Includes up to 10 GB storage","pricing.trial.bandwidthLimit":"Includes up to 25 GB monthly bandwidth","pricing.overage.title":"Know what you are spending","pricing.overage.description":"Each plan has clear included limits. If you use more, extra charges are measured by unit and shown during checkout and on your invoices so you can stay on budget.","pricing.faq.limitsQuestion":"What happens when I reach plan limits?","pricing.faq.limitsAnswer":"You can upgrade at any time, or continue on your current tier and pay overage fees for additional usage.","pricing.faq.overageQuestion":"How are overage fees charged?","pricing.faq.overageAnswer":"Overages are billed based on measured consumption above plan limits and are listed clearly in your billing statement.","pricing.product.starter.name":"Starter","pricing.product.growth.name":"Growth","pricing.product.scale.name":"Scale","pricing.product.partner.name":"Partner","pricing.plan.starter.badge":"Best for getting started","pricing.plan.starter.description":"For small businesses and independent professionals putting a reliable system in place.","pricing.plan.starter.cta":"Choose Starter","pricing.plan.starter.limitUsers":"Up to 10 users included","pricing.plan.starter.limitStorage":"Up to 100 GB storage included","pricing.plan.starter.limitBandwidth":"Up to 500 GB monthly bandwidth included","pricing.plan.starter.overage":"Overage fees apply above included limits","pricing.plan.growth.badge":"Most selected","pricing.plan.growth.description":"For growing businesses and consulting teams that need more automation, insight, and capacity.","pricing.plan.growth.cta":"Choose Growth","pricing.plan.growth.limitUsers":"Up to 40 users included","pricing.plan.growth.limitStorage":"Up to 500 GB storage included","pricing.plan.growth.limitBandwidth":"Up to 2 TB monthly bandwidth included","pricing.plan.growth.overage":"Usage-based overages for users, storage, and bandwidth","pricing.plan.growth.ai":"Advanced AI help for business trends and next steps","pricing.plan.scale.badge":"For complex operations","pricing.plan.scale.description":"For larger organizations and consultants managing high-volume client portfolios.","pricing.plan.scale.cta":"Choose Scale","pricing.plan.scale.limitUsers":"Up to 150 users included","pricing.plan.scale.limitStorage":"Up to 2 TB storage included","pricing.plan.scale.limitBandwidth":"Up to 10 TB monthly bandwidth included","pricing.plan.scale.overage":"Tiered overage rates for high-volume growth","pricing.plan.scale.advanced":"Priority support and advanced controls","pricing.plan.partner.badge":"For consultant partners","pricing.plan.partner.description":"For independent consultants and firms building a business with their own client portfolio.","pricing.plan.partner.cta":"Choose Partner","pricing.plan.partner.limitUsers":"Up to 150 users included","pricing.plan.partner.limitStorage":"Up to 2 TB storage included","pricing.plan.partner.limitBandwidth":"Up to 10 TB monthly bandwidth included","pricing.plan.partner.overage":"Partner-tier overage rates for users, storage, and bandwidth","pricing.plan.partner.advanced":"Partner support and controls for managing multiple client businesses","terms.sections.use.title":"Use of the Service","terms.sections.use.body":"You may use the platform in accordance with applicable laws and these terms. You are responsible for user access management, account security, and the legality of data you submit.","terms.sections.subscriptions.title":"Subscriptions and Billing","terms.sections.subscriptions.body":"Paid subscriptions renew based on your selected billing interval unless canceled according to plan terms. Trial and paid plans include usage limits; overage fees apply where usage exceeds those limits.","terms.sections.liability.title":"Service Availability and Liability","terms.sections.liability.body":"We work to maintain reliable service and timely issue resolution. To the extent permitted by law, liability is limited to fees paid for the service period directly affected by a confirmed issue.","cookies.sections.types.title":"Cookie Types We Use","cookies.sections.types.body":"We use essential cookies for authentication and security, preference cookies for language and interface settings, and analytics cookies to improve product performance.","cookies.sections.control.title":"Managing Cookie Preferences","cookies.sections.control.body":"You can manage cookie settings through your browser controls. Disabling some cookies may impact sign-in flows, saved preferences, or platform functionality.","additionalInfoBeforeGa":"Additional information will be published before General Availability.","navTrust":"Trust","navSupport":"Support","navBetaProgram":"Beta Program","trust.metaTitle":"Customer Trust","trust.metaDescription":"How LerniFlow approaches security, privacy, transparency, and Design Partner confidence.","trust.title":"Customer Trust","trust.subtitle":"What Design Partners can expect from LerniFlow during evaluation, onboarding, and operation.","trust.scopeNote":"This page describes Customer Platform trust posture. Consultant-facing public experiences are owned separately.","trust.sections.securityPrinciples.title":"Security Principles","trust.sections.securityPrinciples.body":"LerniFlow is built as a multi-tenant Customer Platform with account-scoped access controls. See the Security page for capabilities that exist in the product today.","trust.sections.privacy.title":"Privacy","trust.sections.privacy.body":"Privacy commitments are published on the Privacy Policy page. While that document remains in attorney review, treat it as draft and contact privacy@lerniflow.com for Design Partner questions.","trust.sections.transparency.title":"Transparency","trust.sections.transparency.body":"Additional information will be published before General Availability.","trust.sections.designPartnerProgram.title":"Design Partner Program","trust.sections.designPartnerProgram.body":"Additional information will be published before General Availability.","trust.sections.productMaturity.title":"Product Maturity","trust.sections.productMaturity.body":"Additional information will be published before General Availability.","trust.sections.customerData.title":"Customer Data","trust.sections.customerData.body":"Customer organizations own the operational data they submit in their workspace. Platform processing is limited to delivering and securing the service as described in applicable policies.","trust.sections.operationalVisibility.title":"Operational Visibility","trust.sections.operationalVisibility.body":"Authorized administrators can use the Operations workbench to see active, waiting, overdue, and stuck work, plus workforce awareness signals grounded in current assignments.","trust.sections.support.title":"Support","trust.sections.support.body":"Design Partners can reach support@lerniflow.com or use the Contact form.","trust.sections.roadmapPhilosophy.title":"Roadmap Philosophy","trust.sections.roadmapPhilosophy.body":"Additional information will be published before General Availability.","support.metaTitle":"Support","support.metaDescription":"How to get help with LerniFlow during Design Partner evaluation and operation.","support.title":"Support","support.subtitle":"Customer Platform support channels for Design Partners.","support.contactTitle":"How to reach us","support.contactBody":"Email <SupportEmail /> or use the <ContactLink /> form. In-product Help & Support also links to support@lerniflow.com.","support.slaTitle":"Response times and escalation","betaLimitations.metaTitle":"Beta Program","betaLimitations.metaDescription":"Known limitations and expectations for the LerniFlow controlled beta.","betaLimitations.title":"Beta Program","betaLimitations.subtitle":"What Design Partners should expect during the controlled beta.","betaLimitations.summaryTitle":"Known limitations","betaLimitations.docsLink":"Open user documentation","betaLimitations.items.workflows":"Some advanced publishing and configuration paths may still require guided support during beta.","betaLimitations.items.messaging":"Background messaging and worker-dependent demos may require environment validation.","betaLimitations.items.selfService":"First-time advanced configuration may still require support assistance.","betaLimitations.items.support":"Contact support@lerniflow.com if you hit a blocker not listed here.","betaLimitations.policyTitle":"Beta program policy","betaLimitations.policyBody":"Additional information will be published before General Availability.","home.differenceHeading":"Keep what makes the operation different.","home.differenceDescription":"The way your business operates can be part of why customers choose you. Your core system should represent that difference, not erase it.","home.differenceImageAlt":"Configured business operation","home.operatingModelHeading":"Turn the operating model into daily execution","home.operatingModelDescription":"Route work by condition, assign responsibilities by role, pause for outside responses, generate step forms, and keep related records and documents together.","home.globalHeading":"Grow without changing platforms","home.globalDescription":"Support teams in eight interface locales, manage legal entities with their own currencies, and move approved configuration from sandbox to production.","home.consultantReminderHeading":"Turn your operating expertise into a repeatable client offering.","home.consultantReminderDescription":"Create client accounts, operate with account-scoped permissions, and package expertise as reusable solutions.","home.questionsHeading":"Questions","home.questions.template.question":"Do I have to fit a fixed operating template?","home.questions.template.answer":"LerniFlow provides standard product capabilities while allowing a workspace administrator to configure processes, forms, records, roles, and approvals for the operation.","home.questions.gating.question":"Will every capability appear in a new trial?","home.questions.gating.answer":"Some capabilities require administrator setup or a separate entitlement. Ask your workspace administrator to turn on the capabilities included for your workspace.","home.finalCta":"Start a 15-day trial—no credit card required.","businesses.imageAlt":"Configured business operations","businesses.execution.title":"Turn the operating model into daily execution","businesses.execution.body":"Route work by condition, assign responsibilities by role, pause for outside responses, generate step forms, and keep related records and documents together.","businesses.financial.title":"Connect operations to financial control","businesses.financial.body":"Track cost activity, work with legal-entity currencies and FX reporting, use Finance and Sales KPIs, and prepare supported GL export bundles.","businesses.ai.title":"Apply AI to work you can evaluate","businesses.ai.body":"Describe the process, entity, or form you need and use LerniFlow’s AI assistance to create a starting point in the context of your operation.","businesses.global.title":"Support a multilingual, multi-entity operation","businesses.global.body":"Use the product interface in eight locales, maintain localized knowledge, manage entity currencies, and promote approved configuration from sandbox to production.","businesses.questionsHeading":"Questions","businesses.questions.custom.question":"Is LerniFlow a custom software project?","businesses.questions.custom.answer":"LerniFlow is a standard product. Administrators configure supported product capabilities for the workspace rather than replacing the platform with a separate codebase.","businesses.questions.coverage.question":"Does language and currency support cover every local legal requirement?","businesses.questions.coverage.answer":"No. Language, entity, and currency capabilities do not by themselves establish tax, employment, privacy, accounting, or sector-specific legal coverage. Confirm the requirements for each jurisdiction before deployment.","businesses.cta":"Start a 15-day trial—no credit card required.","consultants.imageAlt":"Consultant client-account command centre","consultants.manage.title":"Manage client work from one command centre","consultants.manage.body":"Move across client accounts while roles, permissions, and publishing controls remain scoped to the applicable account.","consultants.reuse.title":"Build once. Reuse with control.","consultants.reuse.body":"Publish and install workflow templates and eligible add-ons, including available Inventory, GL export, and asset-finance originations bundles.","consultants.delivery.title":"Give the client an operating system, not a slide deck","consultants.delivery.body":"Translate recommendations into configured processes, forms, records, responsibilities, documents, and operating knowledge.","consultants.marketplaceNote":"Commercial terms for paid marketplace offerings apply. Review the seller terms before publishing a paid add-on.","consultants.questionsHeading":"Questions","consultants.questions.revenue.question":"Does LerniFlow guarantee consulting revenue?","consultants.questions.revenue.answer":"No. LerniFlow provides client-account and marketplace capabilities; client acquisition, service pricing, sales results, and marketplace earnings depend on the consultant’s offering and the applicable commercial terms.","consultants.questions.access.question":"How is client access controlled?","consultants.questions.access.answer":"Roles, permissions, and publishing controls are scoped to the applicable client account. Review the permission guide before assigning access.","consultants.cta":"Start a 15-day consultant trial—no credit card required.","navigation.product":"Product","navigation.forBusinesses":"For Businesses","navigation.forConsultants":"For Consultants","navigation.pricing":"Pricing","navigation.resources":"Resources","navigation.platformOverview":"Platform overview","navigation.operations":"Operations","navigation.aiInContext":"AI in context","navigation.financialControl":"Financial control","navigation.globalOperations":"Global operations","navigation.marketplace":"Marketplace","navigation.documentation":"Documentation","navigation.productUpdates":"Product updates","navigation.trust":"Trust","navigation.support":"Support","navigation.contact":"Contact","cookieConsent.title":"Cookie preferences","cookieConsent.intro":"We use only what is necessary to run this site unless you say otherwise. You can change this at any time.","cookieConsent.necessary":"Necessary","cookieConsent.necessaryHint":"Required for the site to work. Always on.","cookieConsent.analytics":"Analytics","cookieConsent.analyticsHint":"Helps us understand which pages are useful.","cookieConsent.marketing":"Marketing","cookieConsent.marketingHint":"Used to measure campaigns and show relevant content.","cookieConsent.acceptAll":"Accept all","cookieConsent.necessaryOnly":"Necessary only","cookieConsent.save":"Save choices","cookieConsent.manage":"Cookie preferences","cookieConsent.saved":"Your cookie preferences have been saved.","cookieConsent.policyLink":"Read the cookie policy","legalLanguageNotice":"This legal document is provided in English. Translated versions may be available in your language settings.","legalLanguageDocsLink":"View documentation","consultantPricing.pageTitle":"Consultant plans","consultantPricing.pageSubtitle":"What you pay LerniFlow to run your practice. Separate from what you earn from your clients.","consultantPricing.contactSales":"Contact sales","consultantPricing.free":"Free","consultantPricing.clientsLabel":"Included clients","consultantPricing.seatsLabel":"Included seats","consultantPricing.aiLabel":"AI usage","consultantPricing.trialLabel":"Trial","consultantPricing.cancellationLabel":"Cancellation","consultantPricing.unlimited":"Unlimited","consultantPricing.subscriptionVsEarnings":"These plans are your LerniFlow subscription — a cost of running your practice. They are separate from your practice economics: what your clients pay you, your delivery cost, margin, and commissions all live in your practice workspace, not here.","consultantPricing.plan.starter.name":"Starter","consultantPricing.plan.starter.aiLimit":"Limited AI assistance for one client workspace","consultantPricing.plan.starter.trial":"No trial needed — starts free","consultantPricing.plan.starter.cancellation":"Cancel anytime; the workspace stays read-only","consultantPricing.plan.practice.name":"Practice","consultantPricing.plan.practice.aiLimit":"Full AI assistance across your client portfolio","consultantPricing.plan.practice.trial":"Talk to sales about a trial","consultantPricing.plan.practice.cancellation":"Monthly or annual; cancel before renewal","consultantPricing.plan.scale.name":"Scale","consultantPricing.plan.scale.aiLimit":"Highest AI limits and priority processing","consultantPricing.plan.scale.trial":"Talk to sales about a pilot","consultantPricing.plan.scale.cancellation":"Custom terms agreed with sales"},"command-center":{"page":{"title":"Command Center","description":"Your operating system for every customer engagement — portfolio visibility, delegation status, and fast paths to client workspaces."},"focus":{"headline":"Today's focus","summarySingular":"1 customer needs your attention this morning.","summaryPlural":"{{count}} customers need your attention this morning.","allClearHeadline":"You're on track","allClearSummary":"No customers need immediate action. Review recent activity or open a client workspace to create value.","guidance":{"epPending":"The client is reviewing your Experience Profile suggestion. Follow up if approval is delayed.","atRisk":"This engagement may be stalling. Open the workspace and restore implementation momentum.","deploying":"Deployment is underway. Confirm workflows and configuration are ready for go-live.","provisioning":"New engagement — complete initial setup and align the right Experience Profile.","pendingDelegation":"Delegation is not fully active. Confirm the client has granted your practice access.","default":"This client needs a check-in to keep the engagement moving forward."}},"overview":{"activeClients":"Active clients","needsAttention":"Needs attention","operating":"Operating"},"attentionQueue":{"title":"Attention queue","description":"Clients that need your action now — early implementation stages or pending customer decisions."},"portfolio":{"repairStarterSuite":"Repair starter suite","repairing":"Repairing…","repairDone":"Starter suite repaired: {{verified}} of {{requested}} verified, {{failed}} failed.","title":"Customer portfolio","description":"Every client your practice holds a delegation for, including any that are paused. Delegation level controls what you can configure in each workspace.","columnClient":"Client","columnDelegation":"Delegation","columnLifecycle":"Lifecycle","columnHealth":"Health","columnActions":"Actions","identityPending":"Identity pending platform projection","awaitingClientOwner":"Awaiting client owner","clientOwned":"Client-owned","invitationPending":"Invited {{email}} — link valid until {{date}}","invitationExpired":"The invitation to {{email}} has expired","noInvitationSent":"No owner has been invited yet","resendInvitation":"Resend invitation","resending":"Sending…","accessPaused":"Paused by client","accessPausedNote":"The client has paused your access. They can lift it at any time.","ownershipDue":"Ownership due by {{date}}","ownershipOverdue":"Ownership overdue — this workspace can finish work already running, but cannot start anything new until a client owner accepts.","accessEnded":"Engagement ended","accessEndedNote":"This engagement has ended. Working here again would need a new grant from the client.","accessExpired":"Access expired","accessExpiredNote":"The client's approval for this workspace has expired. Only the client can renew it.","accessExpiresOn":"Access until {{date}}","accessExpiredOn":"Expired {{date}}","cancelInvitation":"Cancel invitation","cancelling":"Cancelling…","changeRecipient":"Change recipient","newRecipientPlaceholder":"owner@company.com","sendInvitation":"Send invitation","sending":"Sending…","invitationCancelled":"Invitation cancelled.","deliveryFailed":"We couldn't email the invitation — copy the secure link and share it directly.","invitationEmailed":"Invitation emailed.","deliveryStatus":{"queued":"Email queued for sending","sending":"Email sending…","sent":"Email sent — awaiting delivery confirmation","failed":"Delivery problem — the invitation email was not sent. Change the address or resend.","delivered":"Email delivered","bounced":"Delivery problem — the invitation email bounced. Change the address.","opened":"Email opened","complained":"The recipient marked the email as spam. Use a different address."},"ended":{"owner":"Client owner: {{who}}","ownerUnnamed":"recorded, name not available","sponsored":"Sponsored by your practice; not yet handed over to the client","endedOn":"Access ended {{date}}","endedOnBy":"Access ended {{date}} by {{who}}","byClient":"Ended by the client"}},"activity":{"title":"Recent customer activity","description":"Delegation changes and experience profile suggestions across your portfolio."},"actions":{"openTwin":"Open Twin","openWorkspace":"Open workspace","open":"Open","suggestEp":"Suggest EP","reviewEpStatus":"View EP suggestion","setupPractice":"Set up your practice","inviteMembers":"Invite practice members","partnerDashboard":"Open Partner Dashboard"},"empty":{"title":"Your customer portfolio starts here","description":"The Command Center is your operating system for every customer engagement. When a customer grants your practice delegation access, their workspace appears here — with status, delegation level, and one-click access to deliver value faster.","stepLabel":"Step {{step}}","step1Title":"Win the engagement","step1Description":"Agree scope with your customer and create or identify their LerniFlow workspace.","step2Title":"Receive delegation","step2Description":"The client owner grants your practice configure, deploy, support, or train access.","step3Title":"Deliver from one place","step3Description":"Monitor status, act on attention items, and open each customer workspace without switching contexts."},"error":{"title":"Unable to load Command Center","description":"We could not load your customer portfolio. Your session is still secure — try again or return to your workspace home.","retry":"Try again","reload":"Reload page"},"health":{"unavailable":"Not yet available","partial":"Partial signal","full":"Healthy signal"},"stages":{"pending_delegation":"Pending delegation","provisioning":"Provisioning","deploying":"Deploying","operating":"Operating","at_risk":"At risk","paused":"Paused","closed":"Closed"},"accessLevels":{"configure":"Configure","deploy":"Deploy","support":"Support","train":"Train"},"epSuggestion":{"pending":"EP suggestion pending","approved":"EP suggestion approved","rejected":"EP suggestion rejected"},"relative":{"today":"Today","yesterday":"Yesterday","daysAgo":"{{count}} days ago"},"a11y":{"todaysPriorities":"Today's priorities","gettingStartedSteps":"Getting started steps","loadingCommandCenter":"Loading command center","portfolioOverview":"Portfolio overview","recentActivityList":"Recent activity list","customerPortfolioTable":"Customer portfolio table"},"frontDoor":{"twinHint":"Command Center is your front door. Open Twin for a five-minute Briefing of each customer’s business — the Business Digital Twin is the destination."},"staffing":{"assign":"Assign colleague","cancel":"Cancel","remove":"Remove {{name}} from this engagement","unstaffed":"Nobody from your practice is named on this engagement yet.","errors":{"notAllowed":"Only a practice owner or consultant manager can change who works on a client.","notAPracticeMember":"That person is not a member of your practice.","alreadyStaffed":"They are already named on this engagement.","notFound":"That engagement could not be found.","alreadyEnded":"That assignment has already ended.","failed":"The staffing change could not be saved."}},"extension":{"errors":{"notAllowed":"Only a practice owner or consultant manager can request more time.","noSponsorship":"This client has no ownership deadline to extend.","alreadyExtended":"This deadline has already been extended once, which is the limit.","alreadyRequested":"A request for this deadline is already waiting for a decision.","tooLong":"An extension can be between 1 and 14 days.","justificationTooShort":"Please explain the reason in at least 20 characters.","failed":"The request could not be sent."}},"accessLevelChoice":{"deploy":"Deploy — change drafts and request a production deploy","configure":"Configure — change drafts, no deploy","support":"Support — read only, for answering questions","train":"Train — read only, for teaching the client's people"},"practiceHub":{"title":"Set up your practice","description":"Configure how your practice sells, delivers, and governs its work.","comingSoon":"Coming soon","cards":{"profile":{"title":"Practice profile","description":"Your practice's name, branding, and workspace defaults."},"team":{"title":"Team & responsibilities","description":"Invite colleagues and set who can do what."},"clients":{"title":"Clients","description":"Provision client workspaces and hand them off to their owners."},"governance":{"title":"Approvals & governance","description":"Roles, permissions, and who must approve high-impact actions."},"integrations":{"title":"Integrations","description":"Connect email and the external systems your practice uses."},"services":{"title":"Services & packages","description":"Define what you sell and how you bill for it."}}},"consultantFiles":{"pageTitle":"Files and promotions","pageDescription":"What your practice has put into each client workspace and asked to promote, beside what each client allows.","backToPortfolio":"Back to Command Center","linkTitle":"Files and promotions","linkDescription":"Your files in each client, the environments you may use, and where each promotion stands.","linkAction":"Open files","noClientsTitle":"No clients yet","noClientsDescription":"When a client grants your practice access, their workspace appears here with your files and promotion requests.","unnamedClient":"Unnamed client","kind":{"run":"Run in {{environment}}","definition":"Workflow design","workspace":"Workspace deliverable"},"filterClients":"Show files for","allClients":"All clients","searchPlaceholder":"Search files or workflows","accessExpired":"Access expired","accessPaused":"Access paused","allowedEnvironments":"Allowed environments:","noEnvironments":"none recorded","expiredOn":"Access expired {{date}}","accessUntil":"Access until {{date}}","noEndDate":"No end date","promotionRule":"Files and promotion requests stay within these environments. A promotion to production waits for the client owner.","notNamed":"You are not named on this client, so its files are not shown to you. Ask your practice to staff you on it.","hiddenExpired":"The client's approval has lapsed, so files and promotions here are hidden until they extend it.","hiddenPaused":"The client has paused your practice's access, so files and promotions here are hidden until they resume it.","filesTitle":"Files ({{count}})","noMatches":"No files match your search.","noFiles":"Your practice has not added any files here yet.","columns":{"file":"File","where":"Belongs to","workflow":"Workflow","promotion":"Promotion","by":"Added by","date":"Added"},"notPromoted":"Not promoted yet","unnamedPerson":"Unnamed consultant","promotionsTitle":"Promotion requests ({{count}})","noPromotions":"Your practice has not requested a promotion here yet.","unnamedWorkflow":"Unnamed workflow","requestedBy":"requested by {{who}} on {{date}}","status":{"pending_owner_approval":"Waiting for the owner","approved":"Approved","rejected":"Rejected","applied":"Promoted","failed":"Failed","unknown":"Unknown status"}}},"setupHub":{"checklistTitle":"Your setup checklist","checklistDescription":"Complete these steps to go from capturing requests to a running business process.","checklistProgress":"{{completed}} of {{total}} complete","checklistPrimaryStepHint":"Start here","checklistOpenStep":"Open step","checklistMarkComplete":"Mark complete","checklistMarkIncomplete":"Mark incomplete","checklist":{"captureFormTitle":"Capture a customer request","captureFormDescription":"Create a form that intake teams use to open work.","captureFormNarrative":"Forms are how work enters your workspace.","designProcessTitle":"Design your business process","designProcessDescription":"Model the workflow that turns requests into completed work.","designProcessNarrative":"Visual design keeps the path clear for operators.","connectTitle":"Connect forms to your process","connectDescription":"Associate intake forms and data with the workflow they start.","connectNarrative":"Connected forms become executable work.","assignPeopleTitle":"Assign people and roles","assignPeopleDescription":"Route steps to the right owners and approvers.","assignPeopleNarrative":"Clear ownership prevents stalled work.","documentsTitle":"Attach document outputs","documentsDescription":"Add templates that produce customer-facing outputs.","documentsNarrative":"Documents close the loop with the customer.","runWorkflowsTitle":"Run your first workflow","runWorkflowsDescription":"Start an instance and complete the first human steps.","runWorkflowsNarrative":"Execute an end-to-end path with real or sample data.","trackActivityTitle":"Track activity and history","trackActivityDescription":"Confirm completion state and review the audit trail.","trackActivityNarrative":"History builds trust for operators and admins."},"crossLinksTitle":"Related setup paths","crossLinksDescription":"Jump between forms, process design, documents, and activity without losing context.","crossLinks":{"formsToProcess":"Open process designer","formsToSetup":"Return to Setup Hub","processToForms":"Open forms","processToActivity":"Open workflow activity","processToDocuments":"Open document templates","processToSetup":"Return to Setup Hub","activityToProcess":"Open process designer","documentsToProcess":"Open process designer"},"contextualHelp":{"workflowEmptyTitle":"Create your first business process","workflowEmptyDescription":"Design a simple path, then publish and run one instance from Setup Hub guidance.","runWorkflowsIntakeNote":"If nothing appears yet, finish capturing a request form and publishing a process first."},"helpResourcesTitle":"Help & resources","helpDocsLink":"Help & docs","revisitTitle":"Revisit","revisitDescription":"Open the first-run pages again at any time.","revisitOnboarding":"Onboarding wizard","revisitWelcome":"Welcome page","checklistStepsLabel":"Setup checklist steps"},"firstValue":{"gettingStartedTitle":"Get to first value","gettingStartedDescription":"A Form captures a customer request → a Workflow (business process) runs → people and AI complete steps → Document Templates produce outputs → Workflow Activity records the trail.","dismissGettingStarted":"Dismiss","whereYouAreTitle":"Where you are","whereYouAreDescription":"You are setting up {{workspaceName}}.","openSetupHub":"Open Setup Hub","learnWorkflows":"How work fits together","stepCaptureTitle":"Capture","stepCaptureDescription":"Create the form that opens work.","stepPlanTitle":"Plan","stepPlanDescription":"Design the business process path.","stepRunTitle":"Run","stepRunDescription":"Start and complete the first instance.","stepTrackTitle":"Track","stepTrackDescription":"Confirm state and review history.","guidedSetupTitle":"Guided first workflow","guidedSetupDescription":"Use self-serve steps when you can; request help for first publish if your tenant needs deployment assistance.","guidedSetupSelfServeTitle":"You can do this now","guidedSetupSelfServeItems":"Create a form, design a simple process, invite an approver, and open Setup Hub checklist steps.","guidedSetupAssistedTitle":"May need LerniFlow assistance","guidedSetupAssistedItems":"First production publish / deployment sync for a brand-new company workflow.","scheduleGuidedSetup":"Request guided setup","workflowActivityTitle":"Workflow activity","workflowActivityDescription":"See running and completed work in one place after you publish.","openWorkflowActivity":"Open workflow activity","myWorkEmptyTitle":"No work assigned yet","runWorkflowsEmptyTitle":"No workflows running yet","myWorkEmptyWhyTitle":"Why this is empty","runWorkflowsEmptyWhyTitle":"Why this is empty","myWorkEmptyWhyDescription":"Tasks appear here after a published workflow creates assignments for you.","runWorkflowsEmptyWhyDescription":"Start an instance from a published process, or finish Setup Hub publish guidance first.","runWorkflowsEmptyIntakeTitle":"Need intake first?","myWorkEmptyFutureTitle":"What happens next","runWorkflowsEmptyFutureTitle":"What happens next","myWorkEmptyFutureDescription":"When work is assigned, you will complete human tasks and approvals here.","runWorkflowsEmptyFutureDescription":"After the first instance starts, operators complete tasks and approvers decide.","adminPageTitle":"Business processes","adminPageDescription":"Design, review, and manage your team's processes visually. Open a process map, connect forms and data, and monitor live activity.","adminYourProcessesTitle":"Your processes","adminYourProcessesDescription":"Visual cards show each process map at a glance. Open to edit, or design a new process in the designer.","adminYourProcessesReadOnlyDescription":"Review published and draft process maps for this client workspace.","adminEmptyTitle":"No {{pluralLabel}} yet","adminEmptyDescription":"Create your first {{workflowLabel}} to start automating how work moves through your team.","adminEmptyPrimaryCta":"Create your first process","adminEmptyCreateWithAi":"Create with AI","adminEmptySetupHub":"Go to Setup Hub","adminDesignProcess":"Design a process","adminCreateBlank":"Create blank process","adminCreateWithAi":"Create with AI","adminForms":"Forms","adminDocumentTemplates":"Document Templates","adminWorkflowActivity":"Workflow Activity","adminDecisions":"Decisions","adminAdvancedTitle":"Advanced","adminDecisionsConfigured":"{{count}} definition(s) configured. Open the dedicated editor to manage routing rules.","adminDecisionsEmpty":"Configure routing rules in a dedicated editor — not on this landing page. No definitions yet.","adminOpenDecisionEditor":"Open decision editor","adminOpsHealthTitle":"Operations health","adminOpsHealthHint":"Check that your workspace is ready to run processes before going live.","adminOpsHealthLink":"Open operations health","adminEmptyMoreWays":"More ways to start","adminWizardDescription":"Optional accelerator: describe your process and let the assistant prepare a draft process map with decisions and case handling. Prefer a blank draft if you want to design the path yourself.","adminWizardChooseAi":"Choose your AI providers","adminWizardOr":"or","adminWizardConfigureEmail":"configure email providers","adminWizardPromptLabel":"Describe the process goal","adminWizardPromptPlaceholder":"Example: Build an onboarding process with approval routing, escalation, notifications, and exception handling.","adminWizardArtifactsLabel":"What to generate","adminWizardArtifactProcessMap":"Process map","adminWizardArtifactDecisions":"Decision rules","adminWizardArtifactCases":"Case handling","adminWizardEntityStrategyLabel":"How to handle forms and data","adminWizardEntityReuse":"Reuse existing forms and data only","adminWizardEntityAsk":"Ask before creating new data","adminWizardEntityCreate":"Allow creating new forms and data if needed","adminWizardUrlName":"URL name","adminWizardStatusHint":"Only active processes appear in the live workspace. Keep this as active for immediate testing.","adminWizardPromptRequired":"Please describe the process before generating a draft.","adminWizardArtifactsRequired":"Select at least one item to generate (process map, decision rules, or case handling).","adminWizardThinking":"The assistant is drafting your process — this can take up to a minute while the model generates and validates the draft. Please keep this dialog open.","readiness":{"title":"Workspace readiness","description":"What this workspace has, checked against the real thing.","firstValueReady":"You have a workflow ready to run.","firstValueNotReady":"Configure a workflow to reach first value.","workflows":"Workflows","forms":"Forms","entities":"Data entities","integrations":"Integrations","workflowsRunnable":"{{runnable}} of {{total}} runnable","none":"None yet"},"evidence":{"title":"Evidence coverage","summary":"{{present}} of {{total}} evidence domains present","domains":{"workflows":"Workflows","forms":"Forms","entities":"Data entities","records":"Records","runs":"Workflow runs","integrations":"Integrations","kpis":"KPIs","documents":"Documents","decisions":"Decisions","financial":"Financial facts"}},"dismissGettingStartedLabel":"Dismiss getting started panel","deploymentCalloutBody":"First workflow deployment requires a one-time setup step with the LerniFlow team. This typically takes less than 24 hours.","deploymentCalloutCta":"Request deployment assistance"},"twin-briefing":{"page":{"title":"Twin Briefing","description":"A five-minute visual story of this customer's business — where they have been, where they are, and what matters next."},"hero":{"eyebrow":"Business Digital Twin","lede":"See the customer story first. Drill into detail only when you need it.","identityPending":"Identity still syncing — names may be provisional."},"nav":{"commandCenter":"Command Center","briefing":"Briefing","map":"Business Map","timeline":"Business Timeline","actions":"Next Actions"},"story":{"title":"The story so far","beenLabel":"Where they have been","nowLabel":"Where they are now","nextLabel":"Where they are going","maturityLabel":"Implementation maturity","who":{"known":"{{name}} — a delegated customer workspace in your practice portfolio.","pending":"Customer identity is still projecting; treat labels as provisional."},"been":{"early":"Early in the engagement path — little of the delivery journey is complete yet.","progressing":"They have already moved through earlier delivery stages.","advanced":"Most of the delivery journey is behind them; focus shifts to operating outcomes."},"now":{"attention":"Needs attention today — open the recommended action before expanding into detail.","stable":"No urgent attention signals — use this Briefing to prepare context for the next conversation."},"next":{"steady":"Continue steady delivery and keep the workspace healthy.","restore":"Restore implementation momentum before the engagement stalls.","awaitEp":"Wait for — or follow up on — the client's Experience Profile decision.","setup":"Complete initial setup and align the right Experience Profile.","golive":"Confirm workflows and configuration are ready for go-live.","deepen":"Deepen the Twin with the Business Map, Timeline, and Next Actions surfaces."},"maturity":{"pending_delegation":"Delegation not fully active","provisioning":"Early setup","deploying":"Go-live in motion","operating":"Operating","at_risk":"At risk","paused":"Paused","closed":"Closed"}},"journey":{"title":"Implementation journey","description":"A single path from first grant to operating — not a stage table.","enteredPrefix":"Current stage since","status":{"complete":"Behind them","current":"Here now","upcoming":"Ahead"}},"relationship":{"title":"Who is connected","description":"Practice, delegation bond, and customer workspace — the people and access that matter for this Twin.","practice":"Your practice","bond":"Delegation","customer":"Customer workspace","agentsFog":"AI agents","agentsFogHint":"Active agents appear here when the Twin graph projects them.","peopleFog":"People & roles","peopleFogHint":"Stakeholders appear here when identity is linked to the Twin."},"customer":{"title":"What this customer is","description":"Delegation and workspace identity from the engagement ledger.","workspace":"Client workspace","delegation":"Delegation","slug":"Workspace"},"health":{"title":"Business health","description":"Engagement health signals from the portfolio ledger.","partial":"Partial health signals — treat as directional only.","full":"Health signals are available for this Twin."},"capabilities":{"title":"Business capabilities","description":"Org at the center; open the Business Map to explore capability silhouettes and process corridors.","finance":"Finance","operations":"Operations","growth":"Growth","org":"Org","fogLabel":"Not yet mapped"},"workflows":{"title":"Workflows that matter","description":"Critical customer workflows will light this corridor when Process Studio projects into the Twin.","unavailable":"No workflow heat yet — open the client workspace if you need live process detail today."},"entities":{"title":"Connected data","fog":"Business entities will attach here once the Twin information layer projects."},"implementation":{"title":"Execution state","description":"Deployments, EP decisions, and delivery progress.","unavailable":"Detailed execution telemetry is not on the Twin graph yet. Lifecycle stage and EP status are the current truth."},"attention":{"title":"What needs attention today","empty":"Nothing acute from engagement signals — prepare context, then continue delivery.","risks":"Risks","opportunities":"Opportunities"},"risks":{"title":"Current risks","empty":"No acute risks from engagement signals.","atRisk":{"title":"Engagement at risk","description":"Lifecycle marked at risk. Restore momentum in the customer workspace before the relationship stalls."},"epPending":{"title":"Experience Profile awaiting client","description":"A suggested Experience Profile is still pending customer review."},"identity":{"title":"Identity projection incomplete","description":"Client name or slug is not fully available from Platform yet."}},"opportunities":{"title":"Current opportunities","empty":"No near-term opportunities surfaced from engagement state.","suggestEp":{"title":"Suggest an Experience Profile","description":"New provisioning engagement — align the right EP to accelerate setup."},"exploreMap":{"title":"Explore the Business Map","description":"Navigate capabilities and processes visually — then Inspect what matters."}},"priorities":{"title":"Focus for this customer","empty":"No urgent focus item — continue steady delivery."},"activity":{"title":"Recent business events","empty":"No recent portfolio events for this customer yet.","description":"A short timeline of what changed — not a full audit log."},"ai":{"title":"AI observations","badge":"Advisory only","description":"Hints derived from engagement signals. Accept only what you can verify in the visual story.","empty":"No advisory observations for this state.","operatingSteady":"Lifecycle looks operating with no urgent flags — use Briefing to prepare the conversation, not to firefight.","attention":{"epPending":"A customer decision on Experience Profile is outstanding — that is likely the first talking point.","atRisk":"Lifecycle is at risk — prioritize restoring momentum over exploring new scope.","deploying":"Deployment is underway — confirm go-live readiness before expanding the agenda.","provisioning":"Still provisioning — align setup and Experience Profile before deep operating reviews.","pendingDelegation":"Delegation may not be fully active — confirm access before promising configuration work.","default":"This engagement carries an attention flag — start with the recommended next action."},"why":{"attentionSignal":"Why: built from lifecycle stage and Experience Profile status in the engagement ledger.","lifecycle":"Why: derived from the current consultant engagement lifecycle stage only."}},"why":{"label":"Why am I seeing this?","journey":{"summary":"Journey path from engagement lifecycle","detail":"Stops come from the consultant engagement ledger. We do not invent progress — completed stages are only those behind the current lifecycle stage."},"relationship":{"summary":"Practice ↔ customer bond from delegation","detail":"The middle bond shows your active delegation access level. People and AI agent nodes stay fogged until those Twin projections exist."},"capabilities":{"summary":"Capability silhouette on the Business Map","detail":"Finance, Operations, and Growth are Map altitudes. Fog means maturity is unknown — not zero."},"ai":{"summary":"AI rephrases signals — it does not invent facts","detail":"Observations are advisory copy over the same engagement facts you already see. Nothing here overrides the visual story."}},"nextActions":{"title":"Recommended move","frame":"Act on this customer here. Explore Map, Timeline, and Actions from the Twin path above."},"actions":{"openTwin":"Open Twin","openWorkspace":"Open workspace","openMap":"Open Business Map","backToCommandCenter":"Back to Command Center","showDetail":"Show signal detail","hideDetail":"Hide signal detail"},"signal":{"ready":"Ready","partial":"Partial","unavailable":"Unavailable"},"a11y":{"journey":"Implementation journey path","relationship":"Practice and customer relationship","capabilities":"Business capability constellation","timeline":"Recent business events timeline","risks":"Current business risks","opportunities":"Current opportunities","nextActions":"Recommended next actions","ai":"Advisory AI observations","loading":"Loading Twin Briefing","story":"Customer business story"},"error":{"title":"Unable to load Twin Briefing","description":"We could not open this customer's Twin. Return to Command Center and try again.","retry":"Try again","commandCenter":"Command Center"},"notFound":{"title":"Twin not found","description":"This engagement is not in your active portfolio, or the link is outdated."}},"twin-inspector":{"chrome":{"title":"Object Inspector","close":"Close Inspector","breadcrumbTwin":"Twin","breadcrumbBriefing":"Briefing","breadcrumbMap":"Business Map","breadcrumbTimeline":"Business Timeline","breadcrumbActions":"Next Actions","breadcrumbSurface":"Surface","healthUnavailable":"Health not projected","healthPartial":"Health partially available","healthFull":"Health available"},"facets":{"overview":"Overview","relations":"Relationships","activity":"Activity","connections":"Connections","actions":"Actions"},"types":{"organization":"Customer","engagement":"Engagement","capability":"Capability","workflow":"Workflow","workflow_run":"Workflow run","business_event":"Business event","risk":"Risk","opportunity":"Opportunity","ai_agent":"AI agent","actor":"Person / role","data_entity":"Data entity","surface":"Twin surface"},"status":{"delegated":"Delegated access","identityPending":"Identity pending","journeyCurrent":"Current journey stage","journeyClosed":"Journey closed","fog":"Not projected yet","severityHot":"Hot","severityWatch":"Watch","opportunity":"Opportunity","recorded":"Recorded"},"identity":{"clientAccountId":"Client account","slug":"Slug","grantId":"Delegation grant","engagementId":"Engagement","stageEntered":"Stage entered","capabilityId":"Capability id","riskId":"Risk id","opportunityId":"Opportunity id","eventId":"Event id","eventType":"Event type","occurredAt":"Occurred at","twinId":"Twin object id"},"overview":{"whyTitle":"Why this matters","roleTitle":"Role in the business","identityTitle":"Identity","organization":{"purpose":"{{name}} is the customer organization in this Twin — the anchor for delegation, journey, and delivery.","summary":"Currently in stage {{stage}}. Details deepen as Platform projections land.","role":"Primary business object consultants explore from Briefing, Map, and workspace entry points."},"engagement":{"displayName":"Engagement journey","purpose":"The consultant–customer delivery engagement — lifecycle stage and journey position.","summary":"Active stage: {{stage}}. Stage overrides stay on Command Center; Inspector explains context.","role":"Connects practice portfolio attention to Twin understanding and next actions."},"capability":{"purpose":"A business capability silhouette on this Twin. Maturity and process bindings are not projected yet.","summary":"Open the Business Map to see this capability in context — process corridors stay fogged until projected.","role":"Organizes how the customer creates value; workflows bind underneath when Process Studio projects them."},"risk":{"purpose":"An attention signal derived from engagement and portfolio facts — not a fabricated health score.","role":"Guides what to address before expanding into deeper Twin navigation."},"opportunity":{"purpose":"A constructive next move suggested from known portfolio state.","role":"Keeps consultants moving with clear GUI actions instead of inventing insights."},"business_event":{"purpose":"A recorded portfolio or engagement event touching this customer.","summary":"Use the timeline to understand recent change — not as a full audit system.","role":"Grounds the Twin in what actually happened in Platform / portfolio systems."},"workflow":{"purpose":"Workflow definitions will project here once Process Studio links to the Twin.","summary":"Definition not projected on the Twin yet.","role":"Describes how work runs for the customer once process projection lands."},"workflow_run":{"purpose":"Live or historical workflow executions for this Twin.","summary":"Execution telemetry is not on the Twin yet.","role":"Will show operational motion once Canvas / run projection lands."},"data_entity":{"purpose":"Business data entities touched by customer processes.","summary":"Entity catalog is not projected on the Twin yet.","role":"Will become the Galaxy / Map data layer later."},"ai_agent":{"purpose":"AI agents bound to this customer Twin.","summary":"Agent roster is not projected yet — advisory AI stays labeled separately.","role":"Will show assistive agents without claiming automated decisions."},"actor":{"purpose":"People and roles in the customer or practice orbit of this Twin.","summary":"People graph is not projected yet.","role":"Will clarify ownership and handoffs when identity projection deepens."}},"relations":{"title":"Connected objects","empty":"No traversable neighbors yet.","toEngagement":"Engagement","peopleFog":"People (not projected)","workflowsFog":"Workflows (not projected)","upstream":"Depends on","downstream":"Supports / owns","related":"Related","traverse":"Open in Inspector","openSurface":"Open surface","whyTitle":"Why connected","panelDescription":"What is connected, why it matters, and where to go next."},"activity":{"title":"Recent activity","empty":"No recent events for this object.","fog":"Activity for this object will appear when Platform projections land."},"connections":{"workflows":"Connected workflows","data":"Connected data","ai_agents":"Connected AI agents","emptyReady":"No connections listed."},"fog":{"relations":{"summary":"This relationship is a silhouette until Platform projection lands.","unlock":"Unlocks when the Twin graph projects this edge with verified evidence."},"workflows":{"summary":"Workflow links are not projected on this Twin yet.","unlock":"Unlocks when Process Studio projects definitions into the Twin."},"data":{"summary":"Data connections are not projected yet.","unlock":"Unlocks with Data Entity / Galaxy projection."},"aiAgents":{"summary":"No AI agent bindings are projected for this object yet.","unlock":"Unlocks when agent roster lands — never invent agents here."},"activity":{"summary":"No object-local activity timeline yet.","unlock":"Unlocks when Business Events project per Twin object."}},"actions":{"title":"Available actions","openWorkspace":"Open customer workspace","openMap":"Open Business Map","mapLocked":"Business Map is available from the Twin navigation surface.","copyDeepLink":"Copy Inspector link","linkCopied":"Inspector link copied","backToCommandCenter":"Back to Command Center","inspectOrganization":"Inspect customer","explain":"Explain this object","explainHint":"Advisory only — does not change the Twin or claim Platform health."},"ai":{"explain":{"organization":"This customer anchors the Twin. Explore journey stage, risks, and fog capabilities before deeper Map work.","engagement":"Engagement stage explains delivery posture. Prefer Command Center for stage changes; use Inspector to understand context.","capability":"Capabilities are silhouettes on the Business Map — treat maturity as unknown, not zero.","risk":"This risk comes from known portfolio signals. Act through the linked GUI action when present.","opportunity":"This opportunity is derived from engagement state, not generative speculation.","business_event":"This event is a recorded fact. Use it to orient — not as a fabricated trend.","workflow":"Workflow definitions will explain operating reality once Process Studio projects into the Twin.","workflow_run":"Runs are fogged until execution telemetry projects — do not invent live status.","data_entity":"Data entities stay fogged until the Twin gains an entity projection.","ai_agent":"Agent bindings are unavailable; advisory explanations here are not live agents.","actor":"People and roles will appear when identity and org charts project into the Twin."}},"stubs":{"workflow":{"name":"Workflow corridor"},"workflow_run":{"name":"Workflow execution"},"data_entity":{"name":"Data entities"},"ai_agent":{"name":"AI agents"},"actor":{"name":"People & roles"}},"a11y":{"dock":"Business Object Inspector","facets":"Inspector facets","closeHint":"Press Escape to close the Inspector"}},"twin-map":{"page":{"title":"Business Map","description":"Navigate the customer's business visually — then Inspect what matters."},"nav":{"commandCenter":"Command Center","briefing":"Twin Briefing","map":"Business Map","timeline":"Business Timeline","actions":"Next Actions"},"chrome":{"eyebrow":"Business Digital Twin","lede":"Explore like a map. Select a place, then follow a connection into the Inspector.","searchPlaceholder":"Search organizations, capabilities, processes…","center":"Center","zoomIn":"Zoom in","zoomOut":"Zoom out","reset":"Reset view","legend":"Altitudes","relations":"Relationship styles","whereAmI":"You are exploring","fogHint":"Dashed places are not projected yet — honest fog, not empty."},"altitude":{"engagement":"Engagement","organization":"Organization","capability":"Capabilities","process":"Processes"},"relation":{"ownership":"Ownership","dependency":"Dependency","execution":"Execution","information_flow":"Information flow","delegation":"Delegation","selected":"Selected connection","follow":"Follow a connection","why":"Why this connection"},"groups":{"structure":"Structure","value":"Value stream","attention":"Attention signals","fog":"Not projected yet","fogTag":"not projected"},"nodes":{"engagement":"Engagement journey","processFinance":"Finance processes","processOps":"Operations processes","processGrowth":"Growth processes"},"a11y":{"canvas":"Business Map canvas","selected":"Selected map object","instructions":"Drag to pan. Use plus and minus to zoom. Enter opens Inspector. Escape clears selection.","loading":"Loading Business Map"},"emptySearch":"No map places match that search."},"twin-timeline":{"page":{"title":"Business Timeline","description":"What has happened for this customer — a chronological Twin story, not a report dump."},"nav":{"commandCenter":"Command Center","briefing":"Twin Briefing","map":"Business Map","timeline":"Business Timeline","actions":"Next Actions"},"chrome":{"eyebrow":"Business Digital Twin","lede":"Read the customer's story over time. Select any event to Inspect the object it touches.","whatHappened":"What has happened","fogHint":"Missing event classes stay fogged until Twin projects them — we never invent history.","filterAll":"All events","tableView":"Compact list","timelineView":"Timeline","empty":"No honest timeline events for this customer yet.","undated":"Observed now","objectRef":"Object","investigate":"Investigate next","fogLane":"Not available yet","tableColWhen":"When","tableColWhat":"What"},"kind":{"customer_identity":"Customer","delegation_granted":"Delegation granted","delegation_revoked":"Delegation revoked","stage_change":"Implementation stage","ep_suggestion":"Experience Profile","business_event":"Business event","risk_signal":"Risk","opportunity_signal":"Opportunity","workflow_deployed":"Workflow deployed","workflow_executed":"Workflow executed","document_produced":"Document","ai_recommendation":"AI recommendation"},"events":{"customerIdentity":{"title":"Customer in portfolio","summaryReady":"{{name}} is the delegated customer this Twin represents.","summaryPending":"Customer identity is still projecting — treat the label as provisional."},"delegationGranted":{"title":"Delegation granted","summary":"Access level {{accessLevel}} is active for this engagement."},"stageChange":{"title":"Implementation stage changed","summaryFromTo":"Moved from {{from}} to {{to}} ({{source}}).","summaryTo":"Entered stage {{to}} ({{source}}).","summaryCurrent":"Current stage is {{stage}} — full stage history is not projected yet."},"epSuggestion":{"title":"Experience Profile suggestion","summary":"A suggestion is awaiting customer review."},"businessEvent":{"title":"Business event","summary":"{{description}}"},"riskSignal":{"title":"Open risk attention","summary":"Current attention from Briefing — create/resolve history is not yet a Twin event stream."},"opportunitySignal":{"title":"Open opportunity","summary":"Current opportunity from Briefing — not a fabricated create event."}},"fog":{"workflowDeployed":{"summary":"Workflow deploy history is not projected into Twin yet.","unlock":"Unlocks when deployment events join the Twin timeline."},"workflowExecuted":{"summary":"Workflow execution history is not projected into Twin yet.","unlock":"Unlocks when run provenance joins the Twin timeline."},"documentProduced":{"summary":"Document production history is not available here yet.","unlock":"Unlocks when document events join the Twin timeline."},"aiRecommendation":{"summary":"AI accept/reject decisions are never invented.","unlock":"Unlocks when recommendation decisions are recorded in Twin."},"delegationRevoked":{"summary":"Delegation revoke events are not in this feed yet.","unlock":"Unlocks when revoke audit joins portfolio activity."},"riskHistory":{"summary":"Shown as current attention — not a create/resolve timestamp.","unlock":"Risk create/resolve history lands with the Twin event stream."},"opportunityHistory":{"summary":"Shown as current opportunity — not a fabricated create event.","unlock":"Opportunity history lands with the Twin event stream."}},"a11y":{"list":"Business Timeline events","selectEvent":"Select event to open Object Inspector","instructions":"Use arrow keys to move between events. Enter opens Inspector. Escape closes Inspector.","loading":"Loading Business Timeline"}},"twin-next-actions":{"page":{"title":"Next Actions","description":"Decide what to do next for this customer — from verified Twin facts only, never invented recommendations."},"nav":{"commandCenter":"Command Center","briefing":"Twin Briefing","map":"Business Map","timeline":"Business Timeline","actions":"Next Actions"},"chrome":{"eyebrow":"Business Digital Twin","lede":"Your action board for this customer. Every card is backed by platform data — fog means we will not invent a next step.","whatNext":"What should I do next?","fogHint":"Unavailable action classes stay fogged until Twin projects the facts — no predictive AI here.","headlineHot":"Attention required","headlineSteady":"Steady next steps","summaryHot":"Start with the hottest verified action. Everything else waits its turn.","summarySteady":"No urgent blockers in Twin — use these steps to stay oriented and prepared.","why":"Why it matters","relatesTo":"Related object","goesTo":"Takes you to","fogLane":"Not available yet","openInspector":"Inspect object","openDestination":"Go","empty":"No verified next actions for this engagement yet.","urgency":{"hot":"Urgent","soon":"Soon","steady":"Steady","fog":"Fog"}},"category":{"implementation":"Implementation","configuration":"Configuration","collaboration":"Collaboration","follow_up":"Follow-up","review":"Review","validation":"Validation","learning":"Learning","preparation":"Preparation"},"dest":{"workspaceOrBriefing":"Customer workspace or Twin Briefing","briefing":"Twin Briefing","epOrWorkspace":"Experience Profile flow","fog":"Unavailable until Twin projects workflows","inspectEngagement":"Object Inspector · Engagement","ep":"Experience Profile suggestion","workspace":"Customer workspace","timeline":"Business Timeline","map":"Business Map","inspector":"Object Inspector","inspectRisk":"Risk attention · Twin"},"actions":{"resolveBlocker":{"title":"Resolve implementation blocker","why":"Lifecycle is at_risk — restore momentum before expanding scope."},"continueImplementation":{"title":"Continue implementation","why":"Engagement is in {{stage}} — keep delivery moving on verified next setup steps."},"completeSetup":{"title":"Complete setup","why":"Provisioning is incomplete — finish core setup before operating work."},"workflowConfig":{"title":"Continue workflow configuration","why":"Workflow configuration actions appear when Twin projects workflow objects."},"reviewDelegation":{"title":"Review delegation","whyPending":"Delegation is pending — confirm access before promising configuration work.","whyIdentity":"Customer identity is still projecting — verify the bond before deep work."},"reviewEp":{"title":"Review Experience Profile status","why":"A suggestion is awaiting customer review — that decision unblocks setup."},"suggestEp":{"title":"Suggest an Experience Profile","why":"Provisioning with no EP suggestion yet — align the profile to accelerate setup."},"openWorkspace":{"title":"Open customer workspace","why":"Work in the delegated customer workspace when you need to act, not just observe."},"reviewTimeline":{"title":"Review recent Timeline","why":"See what has already happened before choosing the next conversation."},"reviewActivity":{"title":"Review recent activity","why":"{{count}} portfolio events are on the Twin Timeline for this customer."},"orientMap":{"title":"Orient on the Business Map","why":"Know where you are in the customer business before drilling into one object."},"inspectOrg":{"title":"Inspect the customer organization","why":"Open the Object Inspector on the organization anchor for this Twin."},"prepareBriefing":{"title":"Prepare from Twin Briefing","why":"Use the five-minute story before a customer conversation."},"followRisk":{"title":"Follow open risk attention","why":"Briefing surfaced a verified attention signal for this engagement."}},"fog":{"validation":{"summary":"Validation checklists are not projected into Twin yet.","unlock":"Unlocks when validation run status joins Twin Next Actions."},"learning":{"summary":"Learning / enablement actions are not invented from thin air.","unlock":"Unlocks when enablement content is linked to the engagement Twin."},"workflowConfig":{"summary":"Workflow objects are not on this Twin yet — no fake config tasks.","unlock":"Unlocks when workflow configuration projects into Twin."}},"a11y":{"board":"Next Actions board","selectAction":"Select action to focus and Inspect related object","instructions":"Use arrow keys to move between actions. Enter opens the destination or Inspector. Escape closes Inspector.","loading":"Loading Next Actions"}},"twin-shell":{"nav":{"aria":"Twin surfaces","commandCenter":"Command Center","briefing":"Briefing","map":"Business Map","timeline":"Business Timeline","actions":"Next Actions"},"chrome":{"eyebrow":"Business Digital Twin","journeyHint":"You are exploring one continuous Twin — selection is preserved when you move between surfaces."}},"twin-relationships":{"kinds":{"owns":"Owns","realized_by":"Realized by","execution_scope":"Execution scope","delegates":"Delegates access","carries_risk":"Carries risk","carries_opportunity":"Carries opportunity","has_event":"Has timeline event","about":"About","opens_timeline":"Opens Business Timeline","opens_actions":"Opens Next Actions"},"why":{"delegates":"This engagement grants {{accessLevel}} access for {{name}} — the living delivery relationship.","owns":"{{name}} owns this capability as part of how the business creates value.","ownsFog":"{{name}} will own this capability once the catalog projects onto the Twin — silhouette only.","realizedByFog":"Capabilities will be realized by business processes once Process Studio projects definitions — honest fog.","executionScopeFog":"Processes will execute inside this engagement journey once runtime projects — not shown as green.","carriesRisk":"This engagement in stage {{stage}} currently carries this attention risk.","carriesOpportunity":"This engagement in stage {{stage}} surfaces this constructive next move.","hasEvent":"This recorded event belongs to the engagement story: {{description}}.","aboutOrg":"This business event is about {{name}} — navigate to understand the customer context.","opensTimeline":"Follow chronological business events for this engagement on the Business Timeline.","opensActions":"Follow verified next actions this engagement currently drives."},"badges":{"delegation":"Delegation","capability":"Capability","silhouette":"Silhouette","processFog":"Process fog","riskHot":"Hot risk","riskWatch":"Watch risk","opportunity":"Opportunity","timeline":"Timeline","actions":"Actions","recorded":"Recorded"},"confidence":{"verified":"Verified","inferred":"Inferred","silhouette":"Silhouette"},"facet":{"lede":"What is connected, why it matters, and where to go next.","dependsOn":"Depends on","dependents":"What depends on this","explore":"Explore next","localGraph":"Neighborhood"},"direction":{"upstream":"Depends on","downstream":"Supports / owns","related":"Related"},"arrow":{"upstream":"←","downstream":"→","related":"↔"}},"gl-export":{"recentRuns":{"title":"Recent runs","description":"Headless GL export runs for this account. Status, reconciliation, and downloadable artifacts appear here after the batch worker finishes.","empty":"No export runs yet. Headless requests and owner test exports will show up here.","headless":"Headless path","recordCount":"{{count}} records","columns":{"status":"Status","request":"Request / run","config":"Config / source","asOf":"As of","counts":"Counts / reconciliation","actions":"Actions"},"details":{"requestId":"Request id","runId":"Run id","segmentId":"Segment id","createdAt":"Created","reconciliation":"Reconciliation","failure":"Failure reason"},"runPrefix":"run {{id}}","workflowPrefix":"wf {{id}}","download":"Download {{fileName}}","downloadRejected":"Download rejected rows ({{fileName}})"},"status":{"queued":"Queued","running":"Running","completed":"Completed","failed":"Failed"},"testExport":{"title":"Run test export","description":"Owner convenience only — enqueues the same gl.export.requested contract through the headless path. Not a synchronous export.","segmentLabel":"Segment","runButton":"Run test export","configNotReady":"Save and activate a ready configuration before running a test export.","noSegments":"Create a data segment first, then choose it here for a test export.","queued":"Test export queued ({{id}}).","existingRun":"Existing run returned for this request ({{id}}).","failed":"Test export failed"},"marketplaceBundle":{"title":"QuickBooks File Integration","summary":"Export general-ledger journal lines to QuickBooks Desktop via IIF or CSV files with owner configuration and headless runs.","roleConfigManager":"GL Export Config Manager","workflowHeadless":"Export GL to QuickBooks","workflowConfig":"Complete Export Configuration","kbGuide":"GL Export Field Mapping Guide","runReport":"GL Export Run Report","mappingAgent":"GL Export Mapping Assist"},"config":{"pageTitle":"GL export","readiness":"Readiness","statuses":{"draft":"Draft","ready":"Ready","invalid":"Invalid"},"viewOnly":"View only — team owners can save and activate this configuration.","columns":{"sourceAccount":"Source account","quickbooksAccount":"QuickBooks account","remove":"Remove"},"sourceCodePlaceholder":"e.g. 1000","saving":"Saving…","saveAndActivate":"Save & activate","savedReady":"Configuration saved and marked ready.","savedInvalid":"Configuration saved with validation issues — status is invalid.","saveFailed":"Save failed"},"errors":{"ownerOnlySave":"Only a team owner can save or activate the GL export configuration.","ownerOnlyTest":"Only a team owner can run a test GL export.","configMissing":"There is no GL export configuration yet. Save and activate one first.","configNotReady":"The configuration is {{status}}. Save and activate it before running a test export.","enqueueFailed":"The test export could not be queued (code {{code}}).","accessDenied":"You do not have access to this workspace's GL export files.","artifactNotFound":"That export file no longer exists.","artifactNotGlExport":"That file is not a GL export file."},"issues":{"config":{"account_mapping_blank_source":"A mapping row is missing a source account code.","account_mapping_duplicate_source":"Source account \"{{source}}\" appears more than once in the mapping.","account_mapping_empty":"Account mapping is empty; map every source account before exporting.","account_mapping_blank_target":"Source account \"{{source}}\" is mapped to a blank target account.","invalid_balance_tolerance":"Balance tolerance must be a non-negative number of cents."}}},"forum":{"post":{"acceptedAnswer":"Accepted answer"},"reactions":{"thumbsUp":"Thumbs up ({{count}})","thumbsDown":"Thumbs down ({{count}})","summary":"{{likes}} likes and {{dislikes}} dislikes","error":"Could not update reaction"},"permalink":{"copy":"Copy link to this message","copied":"Message link copied to clipboard","copyFailed":"Could not copy message link"},"errors":{"threadCreateFailed":"That discussion could not be created. Please try again.","replyCreateFailed":"That reply could not be posted. Please try again.","flagFailed":"That report could not be submitted. Please try again.","moderateFailed":"That moderation action could not be applied. Please try again.","postNotFound":"That post was not found.","readAccessRequired":"You do not have access to this discussion.","accessCheckFailed":"Your access to this discussion could not be checked.","reactionSaveFailed":"That reaction could not be saved. Please try again.","reactionRemoveFailed":"That reaction could not be removed. Please try again.","searchFailed":"That search could not be completed. Please try again."}},"chat":{"pageTitle":"Chat","pageDescription":"Workspace live chat for active members.","channelsHeading":"Channels","emptyTitle":"No channels yet","emptyDescription":"When chat channels are created for this workspace, they will appear here.","newChannel":"New channel","createDialogTitle":"Create a channel","createDialogDescription":"Name the channel and choose who can participate.","channelName":"Channel name","channelDescription":"Description (optional)","membershipLabel":"Membership","membershipAll":"All team members","membershipSelected":"Selected members","createChannel":"Create channel","unread":"Unread","lastActivity":"Last activity {{when}}","noMessagesYet":"No messages yet","openChannelAria":"Open channel: {{name}}","channelsAria":"Chat channels","errors":{"notAMember":"You are not a member of this channel.","messageSendFailed":"That message could not be sent. Please try again.","messageLookupFailed":"That message could not be loaded. Please try again.","messageNotFound":"That message was not found.","markReadFailed":"That channel could not be marked as read.","attachOwnMessagesOnly":"You can only attach files to your own messages.","fileInvalid":"That file could not be read.","fileEmpty":"That file is empty.","fileTooLarge":"That file is larger than the 20 MB attachment limit.","uploadFailed":"That attachment could not be uploaded. Please try again.","attachmentSaveFailed":"That attachment could not be saved. Please try again.","accessCheckFailed":"Your access to that attachment could not be checked.","attachmentForbidden":"You do not have access to this attachment.","attachmentLookupFailed":"That attachment could not be loaded. Please try again.","attachmentNotFound":"That attachment was not found.","downloadUrlFailed":"That attachment could not be downloaded. Please try again.","membershipCheckFailed":"Your membership of this channel could not be checked.","ownersAdminsOnlyCreateChannel":"Only account owners and admins can create channels.","channelCreateFailed":"That channel could not be created. Please try again.","sentButAttachmentFailed":"Message sent, but the attachment failed.","sentButAttachmentFailedReason":"Message sent, but the attachment failed: {{reason}}"}},"branding":{"sessionNotice":{"pageTitle":"Session notice branding","hubNavLabel":"Branding","hubTitle":"Session expired notice","hubDescription":"Customize the colors shown when a member's session expires and they must sign in again.","hubOpenButton":"Open branding settings","formTitle":"Session expired notice colors","formDescription":"Override the platform default (near-black background, white text and border). Leave a field on platform default to inherit the standard look.","backgroundLabel":"Background","backgroundTooltip":"Fill color behind the session-expired alert. Use a solid dark color so the notice stays readable over any page.","textLabel":"Text","textTooltip":"Color for the title and description inside the session-expired alert.","borderLabel":"Border","borderTooltip":"Outline color around the session-expired alert block.","useDefault":"Use platform default","saveButton":"Save branding","resetAllButton":"Reset to platform default","backToSettings":"Back to settings","previewTitle":"Live preview","previewDescription":"This is how the session-expired notice will look with your current color choices.","readOnlyHint":"You can preview branding here. Only the team owner or members with settings permission can change these colors.","saveSuccess":"Session notice branding saved."},"errors":{"sessionNoticeDenied":"You do not have permission to change the session notice for this workspace."}},"company-roles":{"pageTitle":"Company Roles","pageDescription":"Define business roles for your team. Assign users to roles and link human workflow steps to those roles in Process Designer.","introTitle":"Company roles are business responsibilities — not system permissions.","introDescription":"Examples: Purchasing Manager, Inventory Clerk, Billing Specialist. System permissions such as roles.manage or account owner control who can administer the team. Company roles describe who does the work and will eventually route tasks in My Work.","listTitle":"Role hierarchy","listCaption":"Operational roles ordered by hierarchy level","createRole":"Create role","searchPlaceholder":"Search roles…","searchAria":"Search company roles","statusFilterAria":"Filter company roles by status","emptyTitle":"No company roles yet","emptyDescription":"Create your first business role to assign work and describe responsibilities.","emptyFiltered":"No roles match this search or filter.","selectPrompt":"Select a company role or create a new one.","readOnlyNotice":"You can view company roles but cannot manage them. Contact a team owner or admin.","form.createTitle":"Create company role","form.editTitle":"Edit company role","form.displayName":"Display name","form.displayNamePlaceholder":"Purchasing Manager","form.roleKey":"Role key (stable slug)","form.roleKeyPlaceholder":"purchasing-manager","form.roleKeyHint":"Stable key: {{key}} (does not change when the display name changes)","form.hierarchyLevel":"Hierarchy level","form.hierarchyLevelHint":"Higher numbers sit higher in the ladder (approvers above specialists).","form.description":"Description","form.descriptionPlaceholder":"Who performs this responsibility in your organization?","form.save":"Save","form.deactivate":"Deactivate","form.advancedFields":"Advanced fields","members.title":"Users in this role","members.description":"Assign team members who perform this business role. This is separate from their system permission (owner, member, etc.).","members.openMembers":"Open Members","members.save":"Save member assignments","members.unnamed":"Unnamed member","usage.title":"Workflow usage","usage.loading":"Loading usage…","usage.none":"Not referenced in workflow drafts or published step permissions yet.","usage.line":"{{workflow}} → {{step}}","messages.saved":"Saved.","messages.deactivated":"Role deactivated.","messages.membersSaved":"Member assignments saved.","messages.reordered":"Hierarchy updated.","messages.duplicated":"Role duplicated — review and save.","actions.edit":"Edit role","actions.deactivate":"Deactivate role","actions.duplicate":"Duplicate role","actions.moveUp":"Move up in hierarchy","actions.moveDown":"Move down in hierarchy","chips.level":"Level {{level}}","chips.members":"{{count}} members","chips.members_one":"{{count}} member","chips.members_other":"{{count}} members","chips.usage":"{{count}} workflows","hierarchy.ladderAria":"Company role hierarchy ladder","errors":{"noPermissionManage":"You do not have permission to manage company roles.","couldNotSaveRole":"The company role could not be saved.","couldNotUpdateStatus":"The role status could not be updated.","couldNotAssignMembers":"The members could not be assigned.","roleNotFound":"That company role was not found.","invalidJsonBody":"The request body is not valid JSON.","nameRequired":"A name is required.","couldNotListRoles":"The company roles could not be listed.","couldNotCreateRole":"The company role could not be created.","couldNotLoadRole":"The company role could not be loaded.","couldNotUpdateRole":"The company role could not be updated.","couldNotDeactivateRole":"The company role could not be deactivated.","couldNotLoadRoleDetails":"The role details could not be loaded. Reopen the role to try again."},"status":{"all":"All statuses","active":"Active","inactive":"Inactive","archived":"Archived"}},"reporting-lines":{"title":"People and reporting lines","manager":"Manager","directReport":"Direct report","effectiveFrom":"Effective from","effectiveTo":"Effective to","effectiveToOptional":"Effective to (optional)","ongoing":"Ongoing","unknownPerson":"Unknown person","inactivePerson":"Former member","saved":"Saved.","monitor":{"activeLines":"Active reporting lines","vacancies":"People without a manager","inactiveManagers":"Lines with inactive managers"},"tree":{"title":"Organization","description":"Each active direct manager relationship for this workspace.","empty":"No reporting lines yet. Assign a direct manager below."},"exceptions":{"title":"Exceptions","description":"Gaps, inactive managers, and cycles to fix before workflows rely on them.","missing":"{{person}} has no active direct manager.","inactive":"{{person}} reports to someone who is no longer a member.","cycle":"{{person}} is part of a reporting cycle.","none":"No gaps, inactive managers, or cycles right now."},"editor":{"title":"Assign a direct manager","description":"One active direct manager per person at a time. Effective dates control when it applies."},"delegation":{"title":"Temporary delegation","description":"When a manager is away, a delegate can receive tasks without changing the organization chart.","delegator":"Manager (delegator)","delegate":"Delegate","count":"{{count}} delegation records"},"actions":{"assign":"Save reporting line","endNow":"End now","addDelegation":"Save delegation"},"audit":{"title":"Audit trail","description":"Who changed reporting lines and delegations, with the values before and after.","reporting_line":{"created":"Reporting line created","changed":"Reporting line changed","ended":"Reporting line ended"},"delegation":{"created":"Delegation created","changed":"Delegation changed","ended":"Delegation ended"}},"errors":{"invalidRequest":"That request was not valid.","loadFailed":"Reporting lines could not be loaded.","previewFailed":"Manager preview could not be run.","save_failed":"The change could not be saved.","no_permission":"You do not have permission to manage reporting lines.","self_management":"A person cannot be their own manager.","self_delegation":"A person cannot delegate to themself.","cycle_detected":"That assignment would create a cycle in the reporting line.","relationship_ambiguous":"More than one direct manager is active for that period.","person_not_current_member":"Both people must be current members of this workspace.","stale_revision":"Someone else changed this relationship. Reload and try again.","invalid_period":"The effective dates are not valid.","not_found":"That reporting line was not found.","delegation_ambiguous":"More than one delegation is active for that period."}},"bp-designer":{"wizard":{"title":"Add a step","description":"Pick what happens in this step, who does it, and how it connects to the rest of your workflow.","label":"Step name","stepKey":"Step key","stepKeyOptional":"Optional — used in exports and integrations","kindLegend":"Step type","kindCommon":"Common steps","kindAdvanced":"Advanced / Integrations","showAdvancedKinds":"Show integration and data steps","hideAdvancedKinds":"Hide integration and data steps","actorHint":"This controls how the step looks on the canvas. You can change it later in the inspector.","actorHuman":"Person","actorAi":"AI agent","roleLabel":"Who does this step?","roleOptionalHint":"Optional. A role is a lane in the process, not a person — assign real members to roles under Company Roles, or this step has nobody to go to when the process runs.","rolePickerDefault":"Use default role","roleCustomKey":"Custom role key","roleCustomPlaceholderHuman":"e.g. Store associate","roleCustomPlaceholderAi":"e.g. inventory lookup agent","connectHint":"On the canvas, drag from one step’s connect handle to another step to link them.","connectAutoAfter":"When you finish, this step will connect after “{{stepKey}}”.","connectAutoStart":"When you finish, we will connect from Start when possible.","skipPref":"Skip this wizard next time (use the canvas and inspector instead). You can reopen it anytime with Configure with wizard.","close":"Close","reviewKind":"Type","reviewLabel":"Name","reviewActor":"Performer","reviewRole":"Role","reviewAddAfter":"Add after","reviewRoleDefault":"Default","steps":{"kind":{"title":"What kind of step?","description":"Choose the step type and give it a clear name."},"actor":{"title":"Who performs this step?","description":"Choose whether a person or an AI agent works this step."},"functional-role":{"title":"Who does this step?","description":"Pick a team role or lane. You can leave this blank — we will use a sensible default."},"integration":{"title":"Integration config","description":"Endpoint, vault key reference, and data-entity request/response mapping. Same object as Advanced JSON."},"emit-event":{"title":"Emit Business Event","description":"Event name, payload mapping from data-entity fields, and derived tenant topic (read-only)."},"connect":{"title":"Connect to the next step","description":"On the canvas, drag from one step to another to connect them. When you finish, we can connect this step automatically."},"review":{"title":"Review","description":"Check this step before you add it. Everything here can still be changed afterwards in the inspector."},"document":{"title":"Document and record","description":"Pick the published template this step renders and the record it is about."}},"discardTitle":"Discard this step?","discardBody":"You have changes in this wizard. Nothing has been added to the workflow yet. Discard them, or keep editing and choose Finish to add the step.","discard":"Discard","continueEditing":"Continue editing"},"palette":{"title":"Steps","subtitle":"Click to add · wizard helps you configure","common":"Common","advanced":"Advanced / Integrations","laneNote":"Swimlanes come from the roles you assign to steps — they are not added separately."},"stepKind":{"start":"Start","humanTask":"Human task","aiAgentTask":"AI agent task","decision":"Decision","end":"End","restCall":"REST call","soapCall":"SOAP call","mcpTool":"MCP tool","emitBusinessEvent":"Emit business event","queryCollection":"Query collection","aggregateCollection":"Aggregate collection","sendEmail":"Send email","generateDocument":"Generate document","waitForReply":"Wait for reply"},"inspector":{"title":"Step details","subtitle":"Edit the selected step","empty":"Select a step or connection on the canvas to edit it here.","label":"Name","labelAria":"Step name","actorType":"Performer","actorHuman":"Person","actorAi":"AI agent","role":"Who does this step?","rolePlaceholder":"Team role or agent name","roleAriaLabel":"Who does this step","advanced":"Advanced","kind":"Step type","stepKey":"Step key","assignee":"Assigned role key","connections":"Connections","connectionsHint":"Connect, relabel, or remove links to other steps.","gatewayBranches":"Decision branches","gatewayHint":"Add branches with labels and conditions. The default branch does not need a condition.","validation":"Checks","validationOk":"No issues found for this step.","advancedStepJson":"Advanced step JSON","advancedTriggerJson":"Advanced trigger JSON","advancedFormats":"Import and export","advancedFormatsHint":"Use the toolbar for workflow JSON and process model interchange. Select a step for step JSON, or Start for trigger JSON.","duplicate":"Duplicate","delete":"Delete","convertToDecision":"Convert to decision","deleteEdge":"Delete connection","edgeFrom":"From","edgeTo":"To","edgeRoute":"Route","edgeLabel":"Label","edgeReconnect":"Reconnect to","noConnections":"No outgoing connections yet","noBranches":"No branches yet — add at least two","newConnection":"New connection","addBranch":"Add branch","connect":"Connect","routeReset":"Reset routes","validTarget":"Choose a target step…","closeSheet":"Close","defaultMark":"default","branchKeyPlaceholder":"Branch key (e.g. approved)","routeKeyPlaceholder":"Route key (next)","branchLabelPlaceholder":"Branch label (e.g. Approved)","edgeLabelPlaceholder":"Connection label","nodeKind":{"start":"Start","end":"End","taskHuman":"Human task","taskReview":"Review task","taskApproval":"Approval task","taskAgent":"AI agent task","taskSystem":"System task","taskException":"Exception task","decision":"Decision","merge":"Merge"}},"toolbar":{"label":"Process designer toolbar","groupHistory":"History","groupAuthor":"Add to the process","groupView":"View","undo":"Undo","redo":"Redo","addStep":"Add step","addStepHint":"Add a step after Start","addStepAfterSelectionHint":"Add a step after the selected one","decision":"Decision","decisionHint":"Add a decision: a point where the process branches","autoLayout":"Auto-layout","autoLayoutHint":"Arrange the steps automatically. You can undo this.","fit":"Fit","fitHint":"Show the whole process","statusValid":"No issues","statusIssues":"Issues to fix: {{count}}","more":"More","configureWithWizard":"Configure with wizard","advancedGroup":"Advanced","advancedJson":"Advanced JSON","processModel":"Process model","shortcuts":"Keyboard shortcuts","deleteSelection":"Delete selection"},"header":{"titleFallback":"Process designer","versionChip":"v{{version}}","published":"Published","publishedHint":"This version is published and live for new instances.","publish":"Publish…","publishHint":"Publish this draft as a live version","publishBlockedHint":"Resolve the issues to publish ({{count}})","fixToPublish":"Fix issues to publish","draftNoPublish":"Draft","saveDraft":"Save draft","saving":"Saving…","statusDraft":"Draft","statusUnsaved":"Draft · unsaved changes","statusSaved":"Draft · saved {{ago}}","justNow":"just now","diagnostics":"Diagnostics"},"canvas":{"issueError":"This step has a problem to fix","issueWarning":"This step needs attention","processSettings":"Process settings"},"gateway":{"decision":"Decision","decisionHint":"Each outcome of the decision goes to a step. Anything else takes the default branch.","noDecisionsAvailable":"No active decisions yet. Create one under Decisions.","decisionNotFound":"Decision \"{{key}}\" is not active in this account. Activate it or pick another.","noOutcomes":"This decision has no outcomes yet. Add rules to it under Decisions.","outcomeTargetAria":"Step for outcome {{outcome}}","notMapped":"— Not mapped —","unmappedOutcome":"Outcome \"{{outcome}}\" has no step. Pick one.","defaultBranch":"Otherwise","noDefault":"— No default branch —","orphanedBranch":"\"{{route}}\" → {{target}} is not an outcome of this decision, so it can never be taken. Map an outcome to {{target}} or remove it.","removeBranch":"Remove","missingTarget":"A branch goes to a step that no longer exists. Pick another step.","attachDecisionTable":"Attach a decision table to route this gateway","attachDecisionTableHint":"Each outcome of the table goes to a step; anything else takes the Otherwise branch.","chooseDecisionTable":"Choose a decision table…","inputsTitle":"Decision inputs","inputsHint":"Choose the record field each input of the decision reads.","inputFieldAria":"Record field for decision input {{input}}","inputBoundTo":"Reads {{field}}.","noRecordFields":"No record fields to choose from yet. Bind a data entity to a step of this process first."},"startTrigger":{"title":"Start trigger","authoringNote":"Authoring only — this trigger is saved with the design and does not launch runs.","manualHint":"Manual is the default — users launch the workflow from the app.","apply":"Apply trigger","fields":{"type":"Type","eventName":"Event name","eventType":"Event type","stream":"Stream","topicFilter":"Topic filter","domain":"Domain","resolvedTopic":"Resolved topic","payloadMap":"Payload map","mode":"Mode","every":"Every","unit":"Unit","cron":"Cron","timezone":"Timezone","startAt":"Start at","endAt":"End at","segment":"Segment (fan-out)","nextRun":"Next run","method":"Method","route":"Route","auth":"Auth","resolvedUrl":"Resolved URL","bodyMap":"Body map"},"types":{"manual":"Manual","kafka":"Kafka event","scheduler":"Scheduler","inbound_rest":"Inbound REST"},"domains":{"workflow":"Workflow","data":"Data"},"modes":{"interval":"Every N units","cron":"Cron expression"},"units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","weeks":"weeks","months":"months","years":"years"},"auth":{"api_key":"API key","bearer":"Bearer token","none":"None"},"placeholders":{"segment":"segment UUID (optional)"},"mapping":{"sourcePlaceholder":"source path","targetPlaceholder":"workflow input","sourceAria":"Source path for mapping {{index}}","targetAria":"Workflow input for mapping {{index}}","remove":"Remove mapping","removeAria":"Remove mapping {{index}}","add":"+ mapping"},"wizard":{"title":"Configure Start trigger","subtitle":"Manual · Kafka · Scheduler · Inbound REST (authoring only)","close":"Close"}},"integrationConfig":{"fields":{"endpoint":"Endpoint","action":"Action","authKey":"Auth key","envelope":"Envelope","server":"Server","tool":"Tool"},"placeholders":{"wsdl":"WSDL ref / URL (not fetched)","authKey":"vault key name (not a secret)","selectTool":"Select tool…"},"requestMapping":"Request mapping (entity → out)","responseMapping":"Response mapping (in → entity)","phaseNote":"Phase A authoring only — credentials are vault key references; no external calls at runtime.","mapping":{"entityAria":"Entity field for mapping {{index}}","externalAria":"External path for mapping {{index}}","remove":"Remove mapping","removeAria":"Remove mapping {{index}}","add":"+ mapping"}},"collectionStep":{"query":{"description":"Resolve a data segment and load matching rows into instance context."},"aggregate":{"description":"Reduce a context array into a summary value written back under the into key.","ops":{"count":"Count","sum":"Sum","collect":"Collect","groupCount":"Count by group"}},"fields":{"segmentId":"Segment ID","intoKey":"Into key","limit":"Limit","fromKey":"From key","operation":"Operation","field":"Field"},"placeholders":{"segmentId":"UUID of saved segment","queryIntoKey":"context key for loaded rows","limit":"optional max rows","fromKey":"context array key","field":"numeric or grouping field","aggregateIntoKey":"context key for summary"}},"contextMenu":{"dismiss":"Dismiss context menu","nodeMenu":"Step actions","laneMenu":"Lane actions","canvasMenu":"Canvas actions","addNextStep":"Add next step","addNextDecision":"Add next decision","createConnection":"Create connection","setActorHuman":"Performer: person","setActorAi":"Performer: AI agent","changeLane":"Change lane…","addSubmenu":"Add","fitView":"Fit view","renameLane":"Rename lane…","addLane":"Add lane","deleteLane":"Delete lane"},"edge":{"title":"Connection","reconnectAria":"Reconnect this connection to another step"},"businessEvent":{"removeMapping":"Remove mapping","addMapping":"Add mapping","eventName":"Event name","eventType":"Event type","eventTypePlaceholder":"Optional type label","domain":"Domain","domainWorkflow":"Workflow","domainData":"Data","stream":"Stream","streamPlaceholder":"Defaults to the event name","topic":"Topic","topicHint":"Topic for this account, derived automatically (read-only)","payloadMapping":"Payload mapping (entity → event)","phaseNote":"Authoring only — the topic is derived automatically. Events are not emitted at runtime and event chaining is not active.","chainDepthLimit":"Chain depth limit","chainDepthDefault":"Defaults to {{limit}} when unset.","completionEmit":"On completion, emit business event"},"advancedFormats":{"severity":{"unsupported":"unsupported","lossy-mapping":"partial mapping","export-gap":"not exported","load-gap":"not loaded"},"titleWorkflowJson":"Advanced: workflow JSON","titleProcessModel":"Advanced: process model import / export","close":"Close","workflowJson":"Workflow JSON","workflowJsonDescription":"Validated against the schema and applied to the draft; the canvas redraws.","interchangeNote":"Process model XML is for import and export only. You keep designing in LerniFlow — the interchange format is not the editor.","importTitle":"Import process model XML","importPlaceholder":"Paste process model XML…","lossyReportTitle":"Unsupported or partially mapped elements (review before applying)","confirmLossy":"I understand that unsupported elements will be dropped from this import (required to apply).","notProcessModelXml":"This does not look like process model XML.","applyImport":"Apply import to draft","exportTitle":"Export process model XML","generateExport":"Generate export","exportLossyNotesTitle":"Export notes (concepts that will not come back on re-import)"},"designerCanvas":{"defaultNextStepLabel":"Next step","canvasAria":"Workflow diagram canvas","emptyHint":"Right-click the canvas (or long-press) and choose Add step to begin authoring this draft.","addFirstStep":"Add your first step","noStepSelected":"No step selected","stepMissing":"The step could not be found after validation"},"laneDialog":{"changeLanePrompt":"Role (lane) for this step:","addLanePrompt":"Role for the new lane:","addLaneDefault":"New role","cannotDeleteLane":"This lane cannot be deleted.","title":"Rename lane","description":"Role key for this swimlane","inputLabel":"Lane role key","cancel":"Cancel","submit":"Rename","cannotDeleteLastLane":"You cannot delete the last lane. Rename it instead, or add another lane first."},"designerHost":{"validationFailed":"The draft did not pass validation.","construct":"Element:","startFresh":"Start fresh in the designer","startFreshHint":"Starting fresh opens an empty draft with Start and End on a role lane. The stored process model is not overwritten until you save the draft. Process model import and export remain available."},"demoHost":{"title":"Process designer · retail-product-pricing sample","subtitle":"Draft only · the canvas fills the window","themeLight":"Light","themeDark":"Dark","loading":"Loading sample workflow…"},"inspectorSections":{"workflowChaining":"Workflow chaining","trigger":"Trigger","triggerType":{"manual":"Manual","kafka":"Kafka event","scheduler":"Schedule","inbound_rest":"Incoming REST call","inbound_email":"Incoming email"},"stepJson":"Step JSON","stepJsonDescription":"Validated against the schema and applied to the selected step in the draft; the canvas redraws.","startTriggerJson":"Start trigger JSON","startTriggerJsonDescription":"Validated against the schema; a second view of the form above (draft only — the trigger does not fire yet)."},"notes":{"recoveryTitle":"This workflow cannot open in the designer yet","recoveryUnsupported":"This process model uses elements the designer does not support ({{constructs}}). Choose “Start fresh in the designer” to open an empty draft you can edit.","recoveryParseFailure":"This process model could not be converted into a workflow. Choose “Start fresh in the designer” to open an empty draft you can edit.","unsupportedImport":"The element “{{construct}}” is not supported and will not be imported.","unsupportedLoad":"The element “{{construct}}” is not supported and will not load into the designer.","conditionImport":"The flow “{{flow}}” has the condition “{{expression}}”. LerniFlow routes by outcome, not by expressions, so this branch is imported without it. Route the gateway with a decision table (outcome → step, plus Otherwise).","conditionLoad":"The flow “{{flow}}” has the condition “{{expression}}”, which LerniFlow cannot route on, so the branch loads without it. Route the gateway with a decision table.","droppedNext":"The link from step “{{step}}” to “{{target}}” was dropped: that target is not part of the workflow (often an unsupported element).","droppedTransition":"The route “{{route}}” from step “{{step}}” to “{{target}}” was dropped: that target is not part of the workflow.","startSubstituted":"The start step “{{missing}}” was not found; “{{substitute}}” is used instead.","exportStepTypes":"LerniFlow step types (person, AI agent, decision…) export as generic tasks and gateways, so their full meaning does not survive a round trip.","exportFormKey":"Form bindings are not exported as portable elements.","exportMcpTool":"AI agent tool settings are not included in a standard export.","exportRouteLabels":"Custom route labels export as flow names but may not re-import with the same keys.","exportSwimlanes":"Swimlanes are rebuilt from roles on import; their exact layout is not kept.","exportHasFormKeys":"This workflow has form bindings, which are not exported.","exportHasMcpTools":"This workflow has AI agent tools, which are not included in a standard export.","bridgeGateway":"The gateway “{{step}}” becomes a decision step that routes by outcome.","bridgeEnd":"The end step “{{step}}” is kept as the end of the workflow.","bridgeLanes":"{{count}} lane(s) kept; swimlanes are rebuilt from roles.","bridgeOther":"Part of the model was adjusted while converting it.","importXmlRequired":"Paste the process model XML to import.","importNoSteps":"No steps were found in this process model.","importBlocked":"The import is blocked because it contains unsupported elements. Review the report and confirm to import anyway.","validation":{"startStepMissing":"The start step “{{step}}” is not one of the workflow’s steps. Choose an existing step to start from.","endStepMissing":"The end step “{{step}}” is not one of the workflow’s steps. Remove it or add that step.","nextStepMissing":"Step “{{step}}” continues to “{{target}}”, which is not one of the workflow’s steps. Connect it to an existing step.","routeTargetMissing":"The route “{{route}}” of step “{{step}}” leads to “{{target}}”, which is not one of the workflow’s steps. Connect it to an existing step.","agentStepWithoutTool":"The AI agent step “{{step}}” has no tool selected yet.","gatewayTooFewBranches":"The decision “{{step}}” has {{count}} branch(es); a decision needs at least two.","gatewayWithoutDecision":"The decision “{{step}}” has no decision table yet. Attach one so it knows which way to route.","stepUnreachable":"Step “{{step}}” cannot be reached from the start step."}},"generateDocument":{"unavailableHere":"Document templates are not available here. Open this workflow from Workflows to choose one.","templateLabel":"Document template","templatePlaceholder":"Choose a published template","templateOption":"{{name}} · v{{version}}","templateOptionNotPublished":"{{name}} · v{{version}} ({{status}}, not published)","noPublishedTemplates":"There are no published document templates yet. Publish one under Document templates, then choose it here.","pinned":"This workflow version uses {{name}} v{{version}}. A newer version of the template is only used once you choose it.","newerVersion":"Version {{version}} of this template is published.","useNewerVersion":"Use v{{version}}","recordLabel":"Record this document is about","recordPlaceholder":"Choose a data entity","recordHint":"The run’s record of this entity supplies the document’s data, and the document is linked to that record.","recordHintExpected":"This template reads {{entity}} records.","formatLabel":"Produce as","format":{"pdf":"PDF","html":"HTML page","docx":"Word document (DOCX)"},"manageTemplates":"Manage document templates","errorTemplateRequired":"Choose a published document template.","errorRecordRequired":"Choose the record this document is about."}},"promotion":{"acceptanceQueue":{"title":"Promotion acceptance","pageDescription":"Review validated promotion bundles and map integration bindings before accepting.","description":"Staged bundles awaiting target owner acceptance appear here.","iconTooltip":"Cross-deployment promotion bundles staged on this target deployment.","empty":"No bundles are waiting for acceptance.","bindings":"Integration bindings","bindingsTooltip":"Map each required integration to a credential owned by this account.","selectCredential":"Select target credential","noBindingRequired":"No target binding required","accept":"Accept promotion","reject":"Reject promotion","notReady":"Acceptance withheld — resolve binding issues first.","viewRoute":"View route chain","outcome":{"accepted":"Bundle accepted — ready for apply.","rejected":"Bundle rejected."}},"routeChain":{"title":"Promotion route chain","pageDescription":"Read-only view of the configured promotion path and deployment catalog.","description":"Operators inspect the ordered environment chain and registered deployments.","environments":"Environment chain","environmentsTooltip":"Per-tenant ordered promotion path (ADR-009 A2).","deployments":"Deployment catalog","deploymentsTooltip":"Registered physical deployments participating in cross-deployment promotion.","ordinal":"Order","enforcement":"Enforcement","production":"Production","strict":"Strict","warn":"Warn","slug":"Deployment","baseUrl":"Base URL","kind":"Kind","local":"Local","yes":"Yes","backToAcceptance":"Back to acceptance queue","emptyChain":"No environment chain configured for this account.","emptyDeployments":"No deployments registered in the promotion catalog."},"reasons":{"sameEnvironment":"The source and target environments must differ.","backwardNotAllowed":"A promotion cannot move backward to a lower environment.","adjacentOnly":"Only adjacent environment promotions are allowed, one stage at a time.","mustStartFromCurrent":"Version {{version}} is deployed to {{environment}}; a promotion must start from that environment.","mustBeActive":"The workflow must be active before it can be promoted (current status: {{status}}).","alreadyPending":"A promotion request is already pending for this workflow.","sourceOutOfScope":"Your environment scope does not allow the source environment ({{environment}}).","targetOutOfScope":"Your environment scope does not allow the target environment ({{environment}}).","valid":"This is a valid adjacent promotion.","consultantScopeDenied":"Your consultant environment scope does not allow this target environment.","autoApprovedNonProduction":"Non-production promotions are approved automatically when your environment scope allows it.","consultantNeedsOwnerApproval":"Production promotions from consultants need the customer owner to approve.","ownerApprovesDirectly":"As the customer owner you can approve this production promotion directly.","productionNeedsConsultantAndOwner":"A production promotion needs a consultant to submit it and the owner to approve it.","ownerOnlyDecides":"Only an owner of the customer workspace can decide this promotion request.","onlyPendingCanBeDecided":"Only requests awaiting owner approval can be decided.","ownerDecisionAccepted":"The owner decision was accepted."},"errors":{"decideDenied":"You do not have permission to accept or reject promotions for this workspace.","invalidState":"This bundle is no longer waiting for a decision. Refresh to see its current state.","decideFailed":"We could not record your decision. Please try again.","notFound":"This promotion bundle was not found."},"comparison":{"description":"Review the configuration changes before accepting this bundle.","identical":"The configurations are identical.","added":"Added {{artefact}}.","removed":"Removed {{artefact}}.","changed":"Changed {{artefact}}: {{keys}}.","unavailable":"This configuration cannot be compared. Review the bundle before accepting it."},"readiness":{"ungated":{"title":"Promotions to this workspace are not checked for test readiness.","why":"This workspace has no readiness policy, so accepting a bundle here is not a pass.","next":"Set a readiness policy so promotions to this workspace are checked.","policyLink":"Open the readiness policy"},"verdict":{"READY":"Ready","READY_WITH_WARNINGS":"Ready with warnings","BLOCKED":"Blocked","READY_WITH_WARNINGS_SELF_APPROVED":"Ready with warnings — Self-approved"},"policy":"Policy {{key}} version {{version}}","decidedAt":"Decided {{when}}","evidenceCount":"{{count}} evidence records","copyDigest":"Copy","candidatePrefix":"Candidate","policyPrefix":"Policy digest","warnings":{"present":"The source recorded warnings with this decision.","next":"Review them before you accept.","selfApproved":"The source approved this candidate with a single-operator self-approval, not independent approval.","selfApprovedNext":"Accept it only if this workspace’s policy allows self-approved candidates."},"refusal":{"claim_missing":{"title":"This bundle has no signed readiness decision.","next":"Push again from the source after it records a ready decision."},"claim_digest_mismatch":{"title":"The signed decision does not match this bundle.","next":"Push the bundle that was decided, not a later draft."},"claim_blocked":{"title":"The source decision is blocked.","next":"Fix the source candidate, then push again."},"claim_no_source_slug":{"title":"This bundle does not name its source workspace.","next":"Receive the bundle through signed ingress so the source is present."},"policy_not_adopted":{"title":"This decision used a policy this workspace has not adopted.","next":"Adopt that policy here, or push under a policy this workspace uses.","link":"Open the readiness policy"},"claim_class_mismatch":{"title":"The signed change class does not match this change here.","next":"Push again from the source so it decides under the class this change has in this workspace."},"claim_self_approval_unverifiable":{"title":"The signed self-approval evidence does not verify.","next":"Push again from the source; exception evidence cannot be repaired here."},"claim_self_approval_production":{"title":"A self-approved candidate cannot be accepted into production.","next":"Get an independent approval on the source, then push again."},"claim_self_approval_critical":{"title":"A critical candidate cannot rest on a self-approval.","next":"Get an independent approval on the source, then push again."},"claim_self_approval_refused":{"title":"This workspace does not accept self-approved candidates.","next":"Allow self-approved candidates in the readiness policy, or get an independent approval on the source."}}},"reasonLabel":{"unrecognized":"The decision reason is not available in this version.","applyFailed":"It could not be applied to the target environment."},"environmentErrors":{"environment_limit_reached":"Your plan includes one non-production environment. Add the Additional environment add-on to create more.","environment_not_authorized":"Only a workspace owner can manage environments.","environment_slug_invalid":"Use lowercase letters, numbers and hyphens. \"production\" is reserved.","environment_slug_taken":"Another environment already uses this identifier.","environment_display_name_invalid":"Give the environment a name.","environment_purpose_invalid":"Choose a purpose from the list.","environment_capacity_exhausted":"This deployment cannot hold another non-production environment yet.","environment_class_immutable":"An environment cannot switch between production and non-production.","design_environment_must_be_non_production":"The Assistant design environment must be an active non-production environment.","environment_not_in_account":"That environment belongs to another account."},"releaseReviewerErrors":{"release_reviewer_not_authorized":"Only the account owner can manage release reviewers.","release_reviewer_email_invalid":"Enter a valid email address.","release_reviewer_expiry_invalid":"Choose an expiry between one hour and 30 days from now.","release_reviewer_candidate_not_found":"This release candidate was not found in this account.","release_reviewer_target_not_in_account":"That environment belongs to another account.","release_reviewer_target_not_production":"A release reviewer can only be invited for an active production environment.","release_reviewer_is_author":"An author of this release candidate cannot review it.","release_reviewer_is_member":"This person is already a member of the account. Members approve through the usual approval step.","release_reviewer_already_invited":"This person already has an open invitation for this candidate and environment.","release_reviewer_limit_reached":"This candidate already has the maximum number of open reviewer invitations.","release_reviewer_not_live":"This invitation is no longer open.","release_reviewer_not_found":"This invitation was not found.","release_reviewer_email_unverified":"Verify your email address before accepting this invitation.","release_reviewer_revoked":"This invitation was revoked by the account owner.","release_reviewer_expired":"This invitation has expired.","release_reviewer_already_used":"A decision has already been recorded for this invitation.","release_reviewer_not_accepted":"Accept the invitation before reviewing.","release_reviewer_wrong_digest":"This invitation covers a different release candidate. A new candidate needs a new invitation.","release_reviewer_wrong_target":"This invitation covers a different target environment.","release_reviewer_decision_invalid":"Choose approve, reject or request changes.","release_reviewer_note_too_long":"The note is too long (2,000 characters at most).","release_reviewer_scope_immutable":"An invitation cannot be changed. Revoke it and send a new one.","release_reviewer_transition_invalid":"This invitation cannot move to that state.","release_reviewer_audit_append_only":"The reviewer history cannot be changed."}},"data-entities":{"schemaDesigner":{"generated":{"sectionTitle":"Auto-generated identifier","enableLabel":"Generate on create","templateLabel":"Template","templateHint":"Literal text plus {seq:width} and optional {yyyy}, {yy}, {mm}","scopeLabel":"Sequence scope","scopeEntity":"Per entity (default)","scopeYear":"Per calendar year","scopeMonth":"Per calendar month","readOnlyLabel":"Read-only after create","previewLabel":"Next value preview","previewPlaceholder":"Enter a valid template to preview","patternMismatch":"Preview does not match field pattern","patternOk":"Preview matches field pattern"},"relationship":{"targetEntityLabel":"Target entity","selectTarget":"Select target entity","displayFieldLabel":"Display field","selectDisplayField":"Select display field","noDisplayFields":"No fields on target entity schema yet — enter a property name manually","enforceExistsLabel":"Enforce target exists on write","requiredStatesLabel":"Required target states","requiredStatesHint":"Comma-separated lifecycle states the referenced record must be in, e.g. approved. The picker offers only those records; a write to any other state is refused.","stateOfLabel":"State of","stateOfHint":"Optional. A relationship field on the referenced record: the required states then apply to the record that field points at, one hop away (the line's order, not the line). Leave empty to require the referenced record's own state.","availableWhenLabel":"Offer only while","availableWhenHint":"Optional. A numeric condition the target must still satisfy to appear in the picker, e.g. remaining is greater than 0. Calculated fields count, so a balance the entity maintains can drive the list.","availableWhenNoCondition":"No condition — offer every record","availableWhenOperatorLabel":"Comparison","availableWhenValueLabel":"Threshold","availableWhenIncomplete":"This condition is incomplete and will not be saved. Choose a field, a comparison and a threshold, or clear the field to offer every record.","availableWhenNoNumericFields":"The target entity has no numeric or calculated fields yet — add one to filter on it.","availableWhenOperator":{"gt":"is greater than","gte":"is at least","lt":"is less than","lte":"is at most","eq":"equals","ne":"does not equal"}},"typeChange":{"lossTitle":"This type change removes field metadata","lossBody":"Changing {{field}} to {{type}} removes what only a number can carry. The field will no longer be validated or shown that way:","confirm":"Change type and remove","cancel":"Keep {{type}}"},"metadata":{"x_money":"Money (currency and minor units)","x_numeric":"Decimal places and rounding","x_uom":"Unit of measure","x_relationship":"Link to another entity","x_generated":"Generated identifier","x_sensitivity":"Sensitivity","x_derived":"Calculated value","x_rollup":"Rollup","x_managed":"Managed balance"},"metadataLoss":{"confirmSave":"This version stops declaring:\n{{items}}\n\nSave anyway?"},"numberFacets":{"moneyAdvancedOnly":"This field's money declaration can only be edited in Advanced JSON.","isMoney":"This is money","currencySource":"Currency","sourceFixed":"One currency for every record","sourceField":"A currency field on the record","currencyCode":"Currency code (ISO 4217)","minorUnits":"Minor units","minorUnitsFor":"Minor units for {{code}}","currencyField":"Field that holds the currency","permittedCurrencies":"Permitted currencies (comma-separated codes)","minorUnitsHint":"Minor units are the decimal places the amount is stored with. They default to the currency's standard (USD 2, JPY 0) and can be changed.","scale":"Decimal places stored","scaleNotSet":"Not set","rounding":"Rounding","roundingDefault":"Default rounding","scaleHint":"Values with more places are rounded to this many when saved.","scaleHintMoney":"For money, each currency's minor units decide the places; this applies when no currency is known.","problem":{"invalidCode":"Use a three-letter ISO 4217 code, such as USD or EUR.","noCurrencies":"Add at least one permitted currency.","currencyFieldMissing":"Choose the field that holds the currency code."},"roundingMode":{"half_even":"Half to even (banker's)","half_up":"Half up","half_down":"Half down","up":"Away from zero","down":"Toward zero","ceil":"Up (ceiling)","floor":"Down (floor)"}},"assignee":{"explain":"A person on the record, chosen from this workspace's members. Name the field after what your business calls them (for example \"Account manager\" or \"Case handler\"). It is kept in the record's participant list, never as a typed value; while access restrictions are off it changes nobody's access.","roleLabel":"Role on the record","roles":{"responsible":"Responsible person","team_member":"Team member","observer":"Observer"},"roleHelp":{"responsible":"The one person accountable for the record.","team_member":"Someone who works on the record.","observer":"Someone who follows the record without working on it."},"roleTaken":"Another person field of this entity already uses this role. Choose a different role.","companyRoleLabel":"Choose from","anyMember":"Any member of the workspace","companyRoleHelp":"Narrow the choice to members who hold this company role.","companyRoleInactive":"This company role is no longer active. Choose another one or allow any member.","companyRolesUnavailable":"Company roles could not be loaded. Any member can be chosen.","requiredHelp":"Mark the field as required to keep one person named at all times: the person can be changed but not removed."}},"admin":{"pageTitle":"Data Entities","loading":"Loading data entities workspace","saved":"Saved.","cloned":"Cloned to a new draft version.","deleted":"Deleted.","createdViaWizard":"Created draft entity via wizard.","subtitle":"Versioned schemas for data passed between process steps.","heading":"Data entities","createWizard":"Create wizard","new":"New","catalog":"Catalog","catalogDescription":"Browse and filter data entity versions for this team.","search":"Search data entities","searchPlaceholder":"Search name or key","searchAria":"Search data entities by name or key","filterByStatus":"Filter by status","selectForEditor":"Select for editor","createEntity":"Create data entity","noneSelected":"No entity selected","chooseFromCatalog":"Choose an entity from the catalog to view its schema.","editor":"Entity editor","editorDescription":"Identity, fields, constraints, and workflow relationships.","readOnly":"You have read-only access to the data entity catalog for this team.","identity":"Identity","identityDescription":"Display name, stable key, version, and summary.","name":"Name","key":"Key","version":"Version","description":"Description","fields":"Fields","fieldsDescription":"Visual schema designer — default authoring surface for entity properties.","save":"Save","advancedJsonSchema":"Advanced: edit as JSON schema (meta-schema-validated)","samplePayload":"Sample payload","validateSample":"Validate sample","relationships":"Relationships","relationshipsDescription":"Workflow and step references that consume or produce this entity.","selectToViewUsage":"Select an entity to view usage.","cloneVersion":"Clone version","activate":"Activate","deprecate":"Deprecate","archive":"Archive","delete":"Delete","notReferenced":"Not referenced yet.","notReferencedDescription":"This entity is not referenced by any workflow step.","activationFailedAfterCreate":"The entity was created, but activating it failed: {{reason}}","confirmDeleteVersion":"Delete this data entity version?","generatedFrom":"Generated from form {{form}}.","generatedFromCurrent":"The schema matches the form.","generatedFromOutOfDate":"The schema is out of date: {{changes}}.","generatedFromAdded":"new fields {{fields}}","generatedFromRemoved":"removed fields {{fields}}","generatedFromRetyped":"changed shape for {{fields}}","updateFromForm":"Update schema from form","updatedFromForm":"The schema now matches the form."},"dictionary":{"title":"Data Dictionary","description":"Generate a Data Dictionary / Entity Schema document for this account's data entities. Each entity includes name, key, version, status, field metadata (type, required, validation, sensitivity, ownership), and a sensitive-data-handling summary. Stored as an account-scoped HTML artifact you can view or download.","generate":"Generate data dictionary report","empty":"No data dictionary artifacts yet","emptyDescription":"Generate a report to document entity schemas, field metadata, and sensitivity summaries.","loading":"Loading data dictionary artifacts…","generated":"Generated {{fileName}}","generating":"Generating…"},"export":{"title":"Data-Entity Export","description":"Generate a paired schema + data export of this account's data entities. Schema includes name, fields, types, validation, and sensitivity/ownership. The data file includes authorized entity records","format":"Format","generate":"Generate data entity export","empty":"No data-entity export artifacts yet","emptyDescription":"Generate a paired schema and data export in CSV or JSON format.","generating":"Generating…"},"common":{"view":"View","download":"Download","cancel":"Cancel"},"field":{"add":"Add field","advancedJson":"Advanced: field JSON schema","advancedJsonDescription":"Meta-schema-validated single-property schema. Validate & apply round-trips into the wizard fields.","name":"Field name","type":"Field type","required":"Required field","enumValues":"Enum values","enumPlaceholder":"draft, active, closed","enumHint":"Comma or newline separated.","format":"Format","pattern":"Pattern","min":"Min","max":"Max","noConstraints":"No extra constraints for this type. Continue to the next step.","noOtherEntities":"No other entities in the catalog yet. Enter a target entity key manually; it will be referenced when that entity exists.","relatedEntityKey":"Related entity key","selectTargetEntity":"Select target entity","typeShort":"Type","requiredShort":"Required","requiredSuffix":"required"},"wizard":{"createEntity":"Create data entity","advancedJson":"Advanced: entity JSON schema","advancedJsonDescription":"Meta-schema-validated schema editing. Validate & apply round-trips fields through the data-entity model.","noFields":"No fields yet. Add at least one field.","addFieldToEntity":"Add field to entity","generateSample":"Generate sample","activateAfterCreate":"Activate after create","enumCommaSeparated":"Enum values (comma-separated)","formatOptional":"Format (optional)"},"designer":{"parseError":"Schema parse error","advancedOnlyDetected":"Advanced-only schema properties detected","noFields":"No fields yet. Add a field to define entity properties.","shapeErrors":"Schema shape errors","fieldInspector":"Field inspector","constraints":"Constraints","sensitivity":"Sensitivity","formatPlaceholder":"email, uri, …","selectFieldRow":"Select a field row to inspect and edit constraints.","liveValidation":"Live sample-payload validation","liveValidationDescription":"Validates the sample payload against the schema built from the visual field grid (updates as you edit fields).","valid":"Valid","sampleValidates":"Sample payload validates against the current schema.","validationErrors":"Validation errors","visualGrid":"Visual field grid — add, edit, delete, and reorder entity properties. Changes update the schema; use Save to persist.","advancedEditor":"Advanced: edit as JSON schema","advancedOnlyNote":"Some fields include keys that cannot be edited visually. Use Advanced: edit as JSON schema below for full fidelity.","rules":{"title":"Record rules","description":"Conditions a record must satisfy before it can be saved. Enforced on every save, whoever makes it.","add":"Add rule","addCheck":"Add condition","addGuard":"Only sometimes","always":"Always","alwaysApplies":"This rule applies to every record.","appliesWhen":"Applies when","comparedWith":"Compared with","comparedWithLiteral":"A fixed value","comparedWithRelatedField":"A related record's field","literalValue":"Value","relatedRecord":"Related record","relatedField":"Field on that record","absoluteTolerance":"Absolute ±","percentTolerance":"Percent ±","useAbsolute":"Absolute","usePercent":"Percent","field":"Field","id":"Rule name","joinAll":"All of these","joinAny":"Any of these","messageKey":"Message key","mustHold":"Must be true","none":"No rules yet.","notEditable":"Edited as JSON","notEditableDetail":"This rule nests deeper than the editor shows, so it is left exactly as written. Edit it in the schema JSON.","operator":"Condition","operators":{"present":"has a value","absent":"is empty","eq":"is","neq":"is not","gt":"is more than","gte":"is at least","lt":"is less than","lte":"is at most","within":"is within tolerance of"},"problemsTitle":"These rules will block activation","reasonCode":"Reason code","shownOn":"Shown on"},"rollups":{"title":"Calculated from related records","description":"Keep a field equal to a count or a total of the records that point at this one. It is updated on every save and cannot be typed into.","add":"Add calculated field","locked":"This field is maintained by the platform and cannot be edited by hand.","none":"No calculated fields yet.","operation":"Calculate","operations":{"sum":"Total of","count":"How many"},"problemsTitle":"These calculated fields will block activation","source":"From records of","sourceLabelKey":"Name for those records","valueField":"Adding up","via":"Linked by","viaMissing":"No field links back to this entity","field":"Field","noNumberField":"Add a number field first — a calculated value needs somewhere to live."},"lifecycle":{"title":"Approval and status","description":"Give records a status, and decide what may be changed once somebody has committed to them.","add":"Set up statuses","addLock":"Freeze a collection","addState":"Add status","addTransition":"Add action","asksForDecision":"Asks someone to decide","decidesAccept":"Approves","decidesNone":"Not a decision","decidesReject":"Rejects","freezes":"Freezes the record","from":"From","governedFields":"What a decision is about","governedFieldsHint":"Only these fields are frozen, and only these count as a change that needs deciding again. Anything else stays editable.","labelKey":"Name key","lockSource":"Records of","lockVia":"Linked by","lockViaMissing":"No field links back to this entity","lockedCollections":"Collections frozen with the record","lockedCollectionsHint":"While the record is frozen, these related records cannot be added, changed, removed or moved.","none":"Records of this entity have no status.","problemsTitle":"This will block activation","remove":"Remove","startsIn":"New records start in","stateKey":"Status key","states":"Statuses","supersedes":"Undoes the approval","to":"To","transitionKey":"Action key","transitions":"Actions","version":"Version","final":"Final","finalHint":"Nothing leaves this state, by design: a posted movement, a paid invoice. Records here never move again."},"enterSample":"Enter sample data before validating.","invalidSample":"The sample data is not valid JSON.","invalidSchema":"The schema is not valid.","invalidSchemaJson":"The schema is not valid JSON.","unableToParse":"This could not be read as JSON.","visualGridReadOnly":"Visual field grid — the entity properties as configured. You have read-only access, so nothing here can be changed.","noFieldsReadOnly":"No fields yet. Someone who can manage data entities has to define them.","selectFieldRowReadOnly":"Select a field row to inspect its constraints.","advancedOnlyRoundTrip":"The designer keeps these keys exactly as they are when you save; only their values cannot be edited here.","fieldTitle":"Title","fieldTitleHint":"What people see for this field. Changing it moves no record and needs no new version."},"fieldType":{"string":"String","number":"Number","boolean":"Yes / no","date":"Date","enum":"Choice list","relationshipToEntity":"Link to another entity","array":"List of rows","object":"Object","assignee":"Person (assignee)"},"sensitivity":{"none":"None","pii":"Personal data","secret":"Secret"},"errors":{"accountMismatch":"This request does not match the current account.","accessDenied":"You do not have access to this.","invalidRequest":"That request was not valid.","requestFailed":"The request could not be completed.","dictionaryGenerationFailed":"The data dictionary could not be generated.","exportGenerationFailed":"The export could not be generated.","artifactNotFound":"That artifact was not found.","recordUnavailable":"That record is not available.","entityNotFound":"That data entity was not found.","recordNotFound":"That record was not found.","notAReferenceField":"That field is not a reference field.","notPermitted":"You are not permitted to do that.","recordNotFoundOrDeleted":"That record was not found, or it has already been deleted.","recordNotFoundOrActive":"That record was not found, or it is already active.","taxNotConfigured":"Tax determination is not configured for this kind of record.","packageNotFullyInstalled":"This package is not fully installed in this workspace.","tax":{"dateMissing":"This document needs a tax date before a tax service can determine it. The service answers under the rules in force on that date, so it cannot be assumed.","dateFormat":"\"{{value}}\" is not a date the tax service can use. It must be written as YYYY-MM-DD.","currencyMissing":"This document needs a currency before it can be determined.","deliveryCountryMissing":"This document needs a delivery country before a tax service can determine it — the field \"{{field}}\" is empty or is not a two-letter country code. Where something is delivered decides what tax applies, so it cannot be assumed.","customerStatusUnknown":"\"{{value}}\" is not a customer tax status this platform understands. It must be one of {{allowed}}.","refused":"The tax could not be determined ({{code}})."},"couldNotLoadUsage":"The usage information could not be loaded.","couldNotActivateEntity":"The data entity could not be activated.","write":{"allocationInvalidQuantity":"The effect quantity must be nonnegative; correct the quantity and save again.","appendOnly":"This record cannot be changed after it is written. Post a reversing record instead.","businessPolicy":"Field {{field}} expects {{expected}}; received {{actual}}.","constraintRuleViolated":"{{fields}} does not satisfy rule {{ruleId}}: {{reason}}. Correct the value and save again.","constraintViolated":"{{fields}} does not satisfy a rule on this record ({{details}}). Correct the value and save again.","constraintWithinInvalidBasis":"{{fields}} cannot be checked against its tolerance basis ({{details}}). Fix the basis so the value can stay within tolerance, then save again.","constraintWithinViolated":"{{fields}} on this record must be within {{tolerance}} of {{reference}} (rule {{ruleId}}). Adjust the value to stay within tolerance, then save again.","correlationPayloadMismatch":"A record with this correlation key already exists and the payload is not the same. Send an update to change it.","derivationCycle":"This save would create a circular calculation involving {{fields}}. Change one of the linked values and try again.","derivedRequiresPipeline":"This record has values the platform maintains. It can only be saved through the write pipeline — open it from the Data workspace or an approved writer and try again.","duplicate":"Another record already uses the same values for {{fields}}. Change those fields, or open the existing record instead.","effectHeld":"This record still holds an allocation involving {{fields}}. Release it first, then try again.","effectInsufficient":"Not enough is available for {{fields}}: you asked for {{requested}} but only {{available}} is available. Reduce the amount or choose a different source.","effectKindRequired":"Effect declaration \"{{effectKey}}\" is missing a kind. Open the entity in the designer, select Effects, choose declaration \"{{effectKey}}\", and set kind to consume for debits, credit for credits, or transfer when moving between two records.","effectPolicy":"Effect on {{fields}} requires {{expected}}; received {{actual}}. Correct the reference or quantity, or ask an administrator to reverse the effect and try again.","effectSourceInvalid":"The effect source is unavailable or is this record itself; choose another source and save again.","forbidden":"You no longer have permission to make this change; ask a workspace administrator to review your access.","generatedNeedsIdempotencyKey":"Generated identifier fields require an idempotency key when creating a record.","generatedNeedsSequence":"Generated identifier fields need a sequence allocator, which this request did not provide.","generatedStageFailed":"The generated values could not be applied.","guardOpenChildren":"This record still has open related items under {{fields}}. Close or remove them before you continue.","idempotencyConflict":"This save identifier was already used for different changes; reload the record and submit a new save.","intentMismatch":"This change no longer matches the save that was started. Reload the record and try again.","intentMismatchForEntity":"This change no longer matches the save that was started for {{entity}}. Reload the record and try again.","intentMismatchForRecord":"This change no longer matches the save that was started for {{entity}} record {{record}}. Reload the record and try again.","intentMismatchForRevision":"This change no longer matches the save that was started for {{entity}} record {{record}} at revision {{revision}}. Reload the record and try again.","invalidEmail":"Some email fields are not valid: {{details}}","invalidNumber":"Some numeric fields are not valid: {{details}}","invalidReference":"A reference points at something that is not available.","lifecycleRefused":"{{detail}} ({{code}})","managedFields":"Some fields are maintained by the platform and cannot be set here: {{details}}","notFound":"This record is no longer available; reload the list and choose an existing record.","previewBoundaryRefused":"The preview was refused by a record rule. Review the highlighted fields and try again.","protectedValue":"State {{state}} protects {{fields}}. Policy: {{policy}}. Take an explicit transition or ask an administrator for a correction with a reason.","referenceExpectsRecord":"Field {{field}} expects a record reference, not the text \"{{value}}\". Pick the record with the relationship picker.","referenceMoved":"A record that {{fields}} points at changed since you opened this form. Reload to see the latest values, then save again.","referenceNotInRequiredState":"{{field}} must point at a record in one of these states: {{states}}.","revisionConflict":"This record changed while you were editing it; reload the latest values and apply your changes again.","revisionMismatch":"This record changed since you opened it. Reload to see the latest values, then re-apply your edits.","rollupSourceInvalid":"The rollup for {{field}} cannot be calculated because a related record contains a non-numeric value.","schemaMismatch":"Some values do not match the field definition: {{details}}","sequenceExhausted":"The identifier sequence for \"{{template}}\" has run out: {{seq}} exceeds template width {{width}}.","stateNotAllowed":"{{fields}} requires the source to be in one of these states: {{states}} — move it to an allowed state, then try again.","stateRecordNotFound":"The record required for this state check is unavailable; repair the relationship and save again.","stateRequirementInvalid":"The state check needs a related record and an allowed state; complete the relationship or ask an administrator to fix the rule.","temporalOverlap":"The version in state {{state}} conflicts at {{fields}}. Required policy: {{policy}}. Close the previous version and open the next in one operation.","transitionGuard":"Transition {{transition}} from state {{state}} failed guard {{guard}} for {{fields}}. Required policy: {{policy}}. Correct the field or related records, then try again.","validationError":"This change no longer matches the record or its open decision request; reload it and review the changes before saving again.","collectionRowIdentityDuplicate":"Two rows in {{fields}} claim the same row identity. Reload the record and try again — each row must be distinct.","referenceNoLongerAvailable":"The {{field}} you chose is no longer available ({{condition}}). Someone may have used the rest while this was open — pick another, or reload to see what is left.","patternMismatch":"{{field}} does not match the pattern this field requires.","fieldsInvalidFormat":"These fields are not in the required format: {{fields}}.","identifierWrongVariant":"{{field}} is a valid identifier, but not the kind that {{discriminator}} requires for this record.","identifierInvalid":{"mx_rfc":"{{field}} is not a well-formed RFC: check the letters, the date and the check digit. Only the format is checked, not registration with SAT.","mx_curp":"{{field}} is not a well-formed CURP: check the letters, the date, the state and the check digit. Only the format is checked, not registration with RENAPO.","iban":"{{field}} is not a valid IBAN: check the country code, the length and the check digits. The account itself is not verified.","eu_vat":"{{field}} is not in the format of an EU VAT number for its country. Registration is not verified.","es_nif":"{{field}} is not a valid NIF or NIE: check the number and its control letter. Registration is not verified.","br_cpf":"{{field}} is not a valid CPF: check the 11 digits and the check digits. Registration is not verified.","br_cnpj":"{{field}} is not a valid CNPJ: check the 14 digits and the check digits. Registration is not verified."}},"recordChangedSinceOpened":"This record changed since you opened it. Reload to see the latest values, then re-apply your edits.","deleteNeedsOwnerOrAdmin":"Deleting records requires an account owner or admin. Ask an admin to remove this record.","recordStillReferenced":"This record is still referenced by {{where}}. Remove or reassign those references before deleting.","collection":{"unknownCollection":"This record has no collection called \"{{key}}\".","notEditedHere":"\"{{key}}\" is not edited here.","sourceEntityMissing":"No entity named \"{{key}}\" is available."},"piiMetadataInvalid":"This schema uses the retired personal-data format: {{details}}","lifecycle":{"governedFieldLocked":"That field is locked while the record is under approval.","lockedRecordChildWrite":"Related items cannot be changed while this record is locked.","transitionNotAvailable":"That step is not available from the state this record is in.","decisionWithoutRequest":"There is no open approval request to decide on.","decisionBySubmitter":"You submitted this request, so you cannot decide it. Ask another approver.","approvalBasisMoved":"This record changed after the approval was requested. Submit it again so the approver sees what they are approving.","attestationDrifted":"What was attested no longer matches this record. Review and attest again.","determinationStale":"The determination behind this record is out of date. Run it again before continuing.","askAgainNotAllowed":"Only the person who asked for the decision, or a record administrator, can ask again.","askAgainFailed":"The decision could not be asked for again. Try again, or ask an administrator if it keeps happening.","noOpenRequest":"There is no open decision request to ask again; reload the record to see its current decision status."},"entityNotGeneratedFromForm":"This entity was not generated from a form, so there is nothing to update it from.","recordLockedByLifecycle":"This record is in a locked state and cannot be deleted.","import":{"invalidDate":"That value is not a date this field can use.","invalidBoolean":"That value is not a yes/no this field can use.","unknownField":"That column maps to a field that is not on this entity.","referenceMissing":"No matching record was found for {{fields}}.","referenceAmbiguous":"More than one record matches {{fields}}. Use an id instead.","xlsxNotEnabled":"Spreadsheet files are not enabled yet. Export or save as CSV and try again.","notFound":"That import was not found.","reverseNotAllowed":"Only a finished import can be reversed.","reverseFailed":"The import could not be reversed.","atomicBlockedByRefusal":"Atomic mode cannot apply while any row would be refused. Fix the refused rows, or use batched mode."},"upgradeRequired":"This entity already has records. Review the upgrade dry-run, then confirm to apply.","upgradeForbidden":"You are not allowed to upgrade entity declarations for this workspace.","upgradeRequiresActiveEntity":"Only the current active entity can be upgraded.","upgradeRefused":"The upgrade was refused. The previous schema stays active.","upgradeCannotExpressSchemaChange":"That schema change cannot be expressed as an upgrade ({{details}}).","upgradePreviousSchemaMissing":"The previous schema was not retained for this upgrade, so reactivation is not available.","upgradeIncompatibleRecord":"Record {{recordId}} is incompatible: {{reason}}.","release":{"notAuthenticated":"Sign in to release a hold.","keyMissing":"A release needs its own reference so it is not applied twice.","reasonRequired":"Say why this hold is being released. A hold can be what stands between a period and its close.","holdNotFound":"That hold no longer exists. Reload to see the current holds.","notPermitted":"You cannot release a hold on this workspace.","notAReservation":"That is not a reservation, so it cannot be released this way.","alreadyReversed":"That hold was already reversed and holds nothing.","invalidQuantity":"Release a quantity greater than zero.","exceedsHold":"That hold is only worth {{remaining}}; you asked to release {{requested}}.","keyReused":"That release reference has already been used for something else. Use a new one.","actorMismatch":"A release is recorded against the person making it. Sign in as that person and try again.","unknownHoldKind":"That is not a kind of hold this can release."},"projection":{"declarationIncomplete":"This projection is not fully declared. Name the source collection, the target entity and an operation before running it.","sourceNotFound":"The record this projection reads from no longer exists. Check it was not deleted, then run the step again.","targetNotFound":"No entity named {{entityKey}} exists in this workspace. Create it in Data Entities, or point the projection at an existing entity.","revisionMissing":"Revision {{revision}} of this record was not kept, so the projection cannot bind to what was approved. Approve the record again to create a revision it can read.","collectionMissing":"This record carries no {{fields}} to project. Check the projection names the collection the form captures.","rowIdentityMissing":"A row in {{fields}} has no row identity, so it cannot be projected without guessing. Open the record, save it again to assign identities, then retry.","inputConflict":"This record changed after the projection ran: it committed revision {{committedRevision}} and now reads {{requestedRevision}}. Run a new projection rather than repeating the old one.","referenceNotFound":"No {{entityKey}} matches {{value}} in {{fields}}. Create that record, or correct the value on the row.","referenceAmbiguous":"{{matches}} records of {{entityKey}} match {{value}} in {{fields}}. Make the value unique, or point the reference at a field that is.","mappingIncomplete":"This projection does not produce {{fields}}, which {{entityKey}} requires. Map those fields, or make them optional on the entity.","parentEntityMismatch":"This step's rows cannot be related to {{fields}}: that field holds a {{expectedEntity}}, and the record they come from is a {{sourceEntity}}. Point it at a field that holds a {{sourceEntity}}, or create the {{expectedEntity}} first and relate the rows to that.","parentNotARelationship":"{{fields}} on {{entityKey}} is not a relationship, so the rows cannot be related to anything through it. Declare it as a reference to another entity, or remove it from the projection.","headerUnresolved":"No {{entityKey}} matches {{value}}, and this projection does not say how to create one. Add a create declaration for the header, or correct the value it looks up.","headerAmbiguous":"{{matches}} records of {{entityKey}} match {{value}} in {{fields}}. Make that value unique, or match on a field that is.","headerIncomplete":"This projection cannot create the {{entityKey}} it needs: nothing maps to {{fields}}, which that record requires. Map those fields from the source, or resolve an existing {{entityKey}} instead of creating one.","headerValueMissing":"This submission carried no value for {{fields}}, which a {{entityKey}} requires. The mapping is there, but the field it reads is empty — capture it on the form, or map those fields from something the submission does carry.","headerTransitionUnreachable":"This step should move the record it creates to a new state, but \"{{transitionKey}}\" cannot be taken from \"{{state}}\". Choose a transition the lifecycle allows from there, or move the record back.","headerTransitionRefused":"The record this step created could not be moved by \"{{transitionKey}}\": {{detail}} Nothing downstream can use it until it moves, so the step is not finished."},"reference":{"availabilityUnavailable":"Availability could not be checked for this reference right now. Try again; if it keeps happening, tell an administrator.","availabilityOperatorInvalid":"This reference declares a comparison the platform does not support. Open the entity and choose one of the supported comparisons."},"search":{"tooManyConditions":"A search can have at most 20 conditions. Remove one and try again."},"assignee":{"notFound":"This record could not be found.","reasonTooLong":"The reason is too long. Keep it under 1,000 characters.","notAssigneeField":"This field is not a person field.","managedInRoster":"Access to this record is restricted, so its people are managed in the record's access roster. Change them there.","notAllowed":"You are not allowed to change this record.","readOnly":"You cannot change this field.","required":"This field needs a person. Choose one before saving.","notMember":"That person is not a member of this workspace. Choose a current member.","notInCompanyRole":"That person does not hold the company role this field requires. Choose someone who does.","notEligible":"That person cannot be chosen for this record. Choose someone else.","holdsAnotherRole":"That person already holds another role on this record. Choose someone else.","tooManyRecords":"Too many records were asked for at once.","saveFailed":"The person could not be saved. Try again."},"fieldRule":{"invalidPattern":"The Pattern of {{field}} is not a valid regular expression. Correct it or clear it before saving.","unknownPreset":"{{field}} names an identifier preset that does not exist. Choose one from the list or clear it.","unknownVariantField":"The identifier of {{field}} is decided by a field this entity does not have. Choose another field or clear it."}},"data":{"couldNotSave":"The record could not be saved.","couldNotDelete":"The record could not be deleted.","readOnlyForYou":"You can read this record but not change it. Ask a team owner for permission to edit."},"dataEntities":{"emptyTitle":"No data entities yet","emptyBody":"Create one to describe the shape of data your processes pass around.","noMatchTitle":"Nothing matches that search","noMatchBody":"Try a different name, key or version."},"notice":{"activated":"Activated.","archived":"Archived.","createdActivated":"Created and activated.","deprecated":"Deprecated.","saveFailed":"That could not be saved.","validationFailed":"Validation did not pass."},"upgrades":{"counts":"Backfilled records: {{backfills}} · Recomputed records: {{recompute}}","refused":"Refused","title":"Configuration changes applied in place","empty":"No upgrades have been applied.","unavailable":"Upgrade history could not be loaded.","conflicts":"Replaced declarations: {{count}}","confirmTitle":"Confirm entity upgrade","confirmPrompt":"Review the dry-run report, then confirm to apply the upgrade.","confirmSummary":"Affected {{affected}} · Compatible {{compatible}} · Incompatible {{incompatible}} · Backfills {{backfills}} · Recomputes {{recompute}}","effectsWillNotRefire":"These effects will not re-fire on historical records: {{effects}}","incompatibleRecord":"Record {{recordId}}: {{reasons}}","confirmApply":"Apply upgrade","confirmCancel":"Cancel","applied":"Upgrade applied.","reactivateHint":"Reactivating a previous configuration restores the earlier schema for new work only. Records keep their current values; nothing is deleted or rolled back.","reactivateDryRun":"Check configuration reactivation","reactivateApply":"Reactivate previous configuration","reactivateDryRunOk":"The previous configuration can be reactivated. Records would not change.","reactivateApplied":"Previous configuration reactivated. Records kept their values.","reactivateFailed":"Reactivation failed.","blockingIssues":"Apply is blocked until these are resolved:","runningInstancesRequired":"{{count}} running instances would be refused at submit: {{field}}. Declare a backfill or default, or wait for those runs to finish."},"operations":{"panelTitle":"Operations","panelDescription":"Keyed writes, effects, allocations and compensations for this record.","runPanelTitle":"Operation ids","runPanelDescription":"Records and allocations this run produced, linked by operation key.","adminTitle":"Operations ledger","adminDescription":"Read-only view of keyed operations across entities. Filter and export.","loading":"Loading operations…","noOperations":"No operations recorded for this filter yet.","noRunOperations":"No keyed entity writes recorded for this run yet.","refusalLedgerGap":"Refused attempts are not written to the operation ledger today; only successful or replayed outcomes appear here.","op":"Operation","actor":"Actor","time":"Time","step":"Step","granted":"granted","shortfall":"shortfall","allocation":"allocation","allocations":"Allocations held or credited","compensations":"Compensations and releases","openTenantView":"Open tenant Operations view","filterEntity":"Entity","filterOutcome":"Outcome","allEntities":"All entities","refresh":"Refresh","exportCsv":"Export CSV","detailTitle":"Ledger row detail","openRecord":"Open record","replayedCount":"Replayed ×{{count}} · last {{time}}","movesTitle":"Workflow version moves","movesEmpty":"No version moves or dry runs yet.","moveKindDryRun":"Dry run","moveKindApplied":"Applied move","outcomes":{"created":"Created","updated":"Updated","saved":"Saved","allocated":"Allocated","released":"Released","replayed":"Replayed","applied":"Applied","projected":"Projected","restored":"Restored","duplicate":"Duplicate","refused":"Refused","attested":"Attested","kept_old":"Kept previous value"}},"history":{"panelTitle":"History","panelDescription":"Every saved revision of this record, with a field-level compare you can open read-only.","tabsLabel":"Record history sections","tabList":"Revisions","tabCompare":"Compare","loading":"Loading history…","loadingCompare":"Comparing revisions…","empty":"No revisions are stored for this record yet.","revisionLabel":"Revision {{number}}","schemaVersion":"Schema {{label}}","actor":"Actor","source":"Source","time":"When","field":"Field","before":"Before","after":"After","compareWithPrevious":"Compare with previous","compareSelected":"Compare","selectOlder":"Older revision","selectNewer":"Newer revision","showUnchanged":"Show unchanged fields","hideUnchanged":"Hide unchanged fields","protected":"Protected","noDiff":"No field differences are visible with your current access.","loadMore":"Load earlier revisions","openSource":"Open source evidence","sources":{"interactive":"Interactive edit","workflow":"Workflow","import":"Import","migration":"Entity migration","correction":"Correction","unknown":"Unknown"},"changes":{"added":"Added","removed":"Removed","changed":"Changed","unchanged":"Unchanged"},"recordTabsLabel":"Record sections","tabDetails":"Details","operation":"Operation","reason":"Reason","summarize":"Summarize visible changes","summarizing":"Summarizing…","summaryTitle":"Summary","summaryUnavailable":"A summary is not available. The comparison above is complete.","booleanYes":"Yes","booleanNo":"No","showMoreChanges":"Show more changes","viewUnified":"Unified diff","viewSideBySide":"Side by side","operations":{"created":"Created","updated":"Updated","deleted":"Deleted","restored":"Restored"}},"pinnedSchema":{"validatesAgainstStartVersion":"This record is validated against the schema version it was created under, not the latest declaration."},"import":{"title":"Import","description":"Upload a CSV, map columns to fields, preview validation, then apply.","backToRecords":"Back to records","file":"CSV file","csvOnly":"CSV only for now. Spreadsheet formats need an approved dependency.","mapping":"Column mapping","skipColumn":"Skip","mode":"Mode","modeAtomic":"Atomic","modeBatched":"Batched","batchSize":"Batch size","preview":"Preview","execute":"Apply import","reverse":"Reverse this import","downloadErrors":"Download error report","counts":"Counts","rowOutcomes":"Row outcomes","disposition":"Disposition","problems":"Problems","parsed":"{{count}} rows ready","previewReady":"Preview ready","executeDone":"Import {{status}}","reversed":"Import reversed","existingRecordId":"Existing record id","recordIdNotFound":"The existing record id was not found in this entity.","invalidRecordId":"Enter a valid record id.","reverseUpdatesNotSupported":"Imports containing updates or replays cannot be reversed."},"ruleEditors":{"remove":"Remove","problemsTitle":"These declarations will block activation","derived":{"title":"Derived values","description":"Compute a field from other fields on the same record.","add":"Add derived value","none":"No derived values yet.","field":"Field","expression":"Expression","inputs":"Input fields","pickField":"Pick a field","scale":"Decimal scale","whenEmpty":"When inputs are empty","whenEmptyNull":"Leave empty","whenEmptyZero":"Use zero","previewSample":"Preview on sample","previewResult":"Sample result: {{value}}","problemsTitle":"These derived values will block activation"},"rollup":{"title":"Rollups","description":"Keep a field equal to a fact about related records.","add":"Add rollup","none":"No rollups yet.","field":"Field","op":"Calculate","ops":{"sum":"Sum","count":"Count","min":"Minimum","max":"Maximum"},"source":"From records of","via":"Linked by","viaMissing":"No field links back to this entity","valueField":"Value field","whereStates":"Only in states","whereStatesHint":"Comma-separated state keys","netOfCompensations":"Net of compensations","problemsTitle":"These rollups will block activation"},"uniqueness":{"title":"Uniqueness","description":"Refuse a write when another live record already holds the same values.","add":"Add uniqueness rule","none":"No uniqueness rules yet.","id":"Rule name","fields":"Fields","scope":"Scope","scopeLineage":"Across lineage","scopeEntity":"This version only","states":"Only in states","statesHint":"Comma-separated state keys","normalize":{"trim":"Trim spaces","caseInsensitive":"Ignore letter case"},"problemsTitle":"These uniqueness rules will block activation"},"effects":{"title":"Effects","description":"Consume or credit a related balance in the same write.","add":"Add effect","none":"No effects yet.","key":"Effect key","kind":"Kind","kinds":{"consume":"Consume","credit":"Credit"},"via":"Related record","quantityField":"Quantity field","balanceField":"Balance field","limit":"When balance is short","limits":{"exact":"Refuse the write","partial":"Grant what remains"},"requireState":"Require source states","requireStateHint":"Comma-separated state keys","idempotencyHint":"Idempotency","idempotencyDetail":"The write correlation key plus this effect key identify the allocation.","problemsTitle":"These effects will block activation"},"lifecycle":{"title":"Lifecycle","description":"States, transitions, and protected fields for a record.","add":"Set up lifecycle","none":"No lifecycle declared.","initial":"Initial state","states":"States","addState":"Add state","transitions":"Transitions","addTransition":"Add transition","from":"From","to":"To","locked":"Locks governed fields","protectedFields":"Protected fields","protectedFieldsHint":"Frozen while a locking state is active.","guards":"Transition guards","guardsHint":"Conditions that must hold before a transition may run.","guardsNone":"No transition guards yet.","guardsAbsent":"No transition guards on this transition yet.","problemsTitle":"This lifecycle will block activation","addGuard":"Add guard","addClause":"Add condition","guardId":"Guard name","guardField":"Field","guardOperator":"Condition","guardRight":"Compare to","guardRightValue":"A value","guardRightField":"Another field","guardJoin":"Combine conditions","guardJoinNone":"Single condition","guardJoinAnd":"and","guardJoinOr":"or","guardNot":"not","guardExplain":"Explain: {{sentence}}","guardExplainField":"field {{field}}","guardExplainValue":"“{{value}}”","guardExplainOtherField":"field {{field}}","guardTry":"Try transition preview","guardPreviewRefused":"Preview refused: {{sentence}}","guardPreviewPassed":"Preview allowed: {{sentence}}","guardOpaque":"Advanced guard (edit as JSON)","guardOpaqueDetail":"This guard uses facets the visual editor does not show. It is kept exactly as written."},"preview":{"title":"Try it","description":"Preview a write or check existing records against the draft rules. Side-effect free.","operation":"Operation","ops":{"create":"Create","update":"Update"},"payload":"Sample payload","tryIt":"Try it","checkExisting":"Check existing records","outcome":"Outcome","refusal":"Refusal","derived":"Record after derived values","rollups":"Rollup deltas","effects":"Effects before / after","existingViolations":"Existing-record violations","notAGuarantee":"Snapshot observation only — not a guarantee of a later commit.","errorTitle":"Preview could not run","permissionDenied":"Write permission is required to preview.","invalidPayload":"Sample payload must be valid JSON.","entityRequired":"Save the entity before previewing against records.","failed":"Preview failed."},"temporal":{"title":"Temporal validity","description":"Versions of a record that must not overlap for the same key.","add":"Set up temporal validity","none":"No temporal validity declared.","keyFields":"Key fields","keyFieldsHint":"Versions that share these values must not overlap in time.","effectiveFrom":"Effective from field","effectiveTo":"Effective to field","formatDateHint":"Both date fields are saved with format: date so the upgrade path can check stored versions.","nonOverlapHint":"For one key, open intervals must not overlap. Closing one version and opening the next happens in a single operation.","closeAndOpenHint":"On the record sheet, Close and open next version ends the current interval and starts the next without overlap.","problemsTitle":"This temporal declaration will block activation"}},"records":{"closeAndOpen":"Close and open next version","closeAndOpenHint":"Close this version and open the next one in a single operation. Key fields stay the same.","closeAndOpenFrom":"Next version starts on","closeAndOpenFromRequired":"The next version needs a start date.","closeAndOpenSubmit":"Close and open","saveReplayed":"Already saved — this request was a repeat.","closeAndOpenReplayed":"This close-and-open was already applied; nothing changed.","documents":{"title":"Documents","description":"Files kept with this record. Every upload is quarantined and scanned before anyone can download it.","loading":"Loading documents…","empty":"No documents on this record yet.","upload":"Upload file","uploading":"Uploading…","uploadNewVersion":"Upload new version","download":"Download","downloadBlocked":"Available once the scan is clean","versions":"Version history ({{count}})","uploadedBy":"Uploaded by {{name}}","onHold":"On legal hold","generate":"Generate document","generateChoose":"Choose a template","generateSubmit":"Generate","generating":"Generating…","generatedAttached":"Added to this record's documents.","noTemplates":"No published template is set up for this kind of record.","startWorkflow":"Start workflow from this record","startWorkflowNamed":"Start “{{workflow}}”","scan":{"quarantined":"Quarantined","clean":"Clean","infected":"Infected","failed":"Scan failed","skipped":"Not scanned"},"status":{"active":"Active","blocked":"Blocked","pending_cleanup":"Pending cleanup"},"classification":{"standard":"Standard","privileged":"Privileged","personal_data":"Personal data","public_disclosure":"Public disclosure"},"source":{"attachment":"Attachment","file_field":"File field","generated":"Generated","workflow_upload":"Workflow upload","portal_upload":"Portal upload","connector":"Connector"},"accessLog":{"title":"Access log","empty":"No access events recorded yet.","show":"Show access log","hide":"Hide access log","events":{"view":"Viewed documents","download":"Downloaded","deny":"Access denied","hold_placed":"Legal hold placed","hold_released":"Legal hold released","wall_change":"Access wall changed","upload":"Uploaded","scan_blocked":"Blocked by scan","governance_change":"Classification or AI use changed"}},"errors":{"notFound":"That document could not be found.","forbidden":"Only an account owner can read the access log.","empty":"The file is empty.","tooLarge":"The file is larger than {{limit}}.","contentType":"This file type is not allowed. Use PDF, PNG, JPEG, DOCX, XLSX, PPTX, CSV, JSON or plain text.","quota":"Your workspace has reached its {{limit}} document storage limit.","versionConflict":"Someone uploaded a newer version first. Reload and try again.","documentUnavailable":"This document is not accepting new versions.","infected":"The malware scan found a threat. The file was rejected.","scanFailed":"The malware scan could not finish, so the file was not accepted. Try again shortly.","storageFailed":"The file could not be stored. Try again.","uploadFailed":"The upload failed.","uploadFieldsMissing":"Choose a file to upload.","quarantined":"This file is not downloadable until the scan is clean.","noVersion":"This document has no downloadable version yet.","auditFailed":"The download could not be recorded in the access log, so it was not started.","loadFailed":"Documents could not be loaded.","generateFailed":"The document could not be generated.","generateNotAttached":"The document was generated but not attached to this record. Try again.","generateOutputFormatUnavailable":"This template has no supported stored output format. Choose Produce as in the template, save it, and try again.","downloadFailed":"The download could not be started.","overageUnavailable":"Your plan cannot store more documents right now. Contact your administrator.","onHold":"This record is under a legal hold, so its documents cannot be removed.","notHeld":"This record is not under a legal hold.","alreadyHeld":"This record is already under a legal hold.","reasonRequired":"Give a reason for the legal hold.","recordHasDocuments":"This record keeps governed documents, so it cannot be deleted. Remove the documents first, or archive the record.","generateMissingFields":"This record leaves fields the template requires blank: {{fields}}. Fill them on the record and generate again.","generateTemplateError":"The template could not render this record: {{detail}}","ownerRequired":"Only a workspace owner can lower a document's classification.","invalidClassification":"That classification cannot be applied to this document.","needsSecondPerson":"Lowering a document's protection needs a second person. Upload it as Standard, or open Lowering protection to request it with a reason.","aiUseNeedsSecondPerson":"Allowing AI use needs a second person. Open Lowering protection to request it with a reason; a workspace owner other than you decides.","aiUsePrivileged":"A privileged document is always excluded from AI.","invalidAiUse":"That AI use cannot be applied to this document."},"hold":{"title":"Legal hold","place":"Place legal hold","release":"Release legal hold","reasonLabel":"Reason","reasonPlaceholder":"Why this record must be preserved","submitPlace":"Place hold","submitRelease":"Release hold","cancel":"Cancel","recordOnHold":"This record is under a legal hold. Its documents cannot be deleted or cleaned up.","ownerOnly":"Only an account owner can place or release a legal hold."},"chooseFormat":"File format","classificationLabel":"Classification for new uploads","changeClassification":"Classification of {{name}}","loadingTemplates":"Loading templates…","downgrade":{"title":"Lowering protection","request":"Request lower protection…","explain":"Raising a document's protection is immediate. Lowering it — a lower classification, or AI use made more permissive — needs a second person: a workspace owner other than the requester decides. Every request and decision is recorded.","document":"Document","chooseDocument":"Choose a document","newClassification":"New classification","keepClassification":"Keep the classification","newAiUse":"New AI use","keepAiUse":"Keep the AI use","aiUse":{"inherit":"Inherit (excluded)","allowed":"Allowed","excluded":"Excluded"},"privilegedNoAi":"A privileged document is always excluded from AI.","reason":"Why should its protection be lowered?","submit":"Send request","cancel":"Cancel","requested":"Request sent. A workspace owner other than you decides.","decided":{"approved":"Approved and applied.","rejected":"Request rejected.","withdrawn":"Request withdrawn."},"change":"{{from}} → {{to}} · {{fromAi}} → {{toAi}}","askedBy":"Asked by {{name}}: {{reason}}","approve":"Approve","reject":"Reject","withdraw":"Withdraw","selfApprove":"Approve as the only member…","waiting":"Waiting for a workspace owner to decide.","singleOperator":{"body":"Your workspace has one member and its owner enabled single-operator exceptions. Approving your own request is recorded as a self-approval, not as an independent review.","reason":"Why are you approving it yourself?","acknowledgement":"I understand this is not an independent review and will be recorded as a self-approval.","confirm":"Approve as self-approved"},"status":{"pending":"Pending","approved":"Approved","rejected":"Rejected","withdrawn":"Withdrawn","superseded":"Superseded"},"selfApproved":"self-approved","errors":{"notFound":"That document was not found.","invalid":"That classification or AI use is not valid.","privilegedAiExcluded":"A privileged document is always excluded from AI.","notADowngrade":"That does not lower the document's protection; change it directly.","reasonRequired":"Give a reason for the request.","pendingExists":"This document already has an open request.","notPending":"This request was already decided.","approverRequired":"Only a workspace owner can decide this request.","secondPersonRequired":"Someone other than the requester must decide this request.","singleOperatorReasonRequired":"Give a reason to approve your own request.","singleOperatorAcknowledgementRequired":"Confirm that this is not an independent review.","superseded":"The document changed after the request; ask again if it is still needed.","failed":"The request could not be completed. Try again."}},"aiUse":{"label":"AI use","uploadLabel":"AI use for new uploads","change":"AI use of {{name}}","value":"AI: {{value}}","help":"AI use decides whether the Assistant may read a document's content. Allowed: the Assistant can read it when someone who can see this record asks. Excluded: never. Inherit: follows the record's AI policy; no record or entity AI policy for files exists yet, so it counts as excluded. Excluding is immediate; allowing needs a workspace owner other than you to approve it.","privilegedLocked":"A privileged document is always excluded from AI. Its classification must be lowered first (a request a second person approves) before its AI use can change.","options":{"inherit":"Inherit (excluded)","allowed":"Allowed","excluded":"Excluded"}}}},"collectionsEditor":{"title":"Child collections","hint":"Create a child entity with a relationship to this entity, then choose it here. Configure calculations and totals in the calculation and rollup editors below.","key":"Collection key","source":"Child entity · relationship","editable":"Allow line editing","order":"Field order","up":"Move {{field}} up","down":"Move {{field}} down","remove":"Remove collection","add":"Add collection"},"versioning":{"inUse":{"title":"This entity is already in use","intro":"Changes could affect:","records_one":"{{count}} record","records_other":"{{count}} records","runs_one":"{{count}} open workflow run","runs_other":"{{count}} open workflow runs","consumers_one":"{{count}} form or workflow step that uses it","consumers_other":"{{count}} forms or workflow steps that use it","question":"Create a new version so existing work stays protected?","create":"Create new version","creating":"Creating the new version…","checking":"Checking where this entity is used…","checkFailed":"Where this entity is used could not be checked. Nothing was saved. Try again.","backToEdit":"Go back to editing","reviewNewTab":"Review impact first (opens in a new tab)","unsavedNote":"Your changes are not saved yet. They stay here while you decide."},"banner":{"editing":"You are editing version {{draft}}. Version {{active}} stays active until you move records to this version.","appliedLabel":"Authored {{version}} · applied","appliedBadge":"Applied","appliedNote":"This draft is how version {{version}} was written. That version is now the current version of this entity; this copy is kept for history.","currentVersionNote":"Current version: {{current}}. {{stored}} is the label this entity was created with; it stays so existing references keep working.","unsavedConfirm":"This draft has changes that are not saved yet. Leave without saving them?","unsavedTitle":"Leave this draft without saving?","unsavedStay":"Stay and keep editing","unsavedLeave":"Leave without saving","entityVersionDescription":"Data entity version {{version}}","review":"Review and move records","activateInstead":"This draft belongs to an entity with records. Use Review and move records to activate it."},"steps":{"label":"Migration steps","whatChanged":"What changed","chooseRecords":"Choose records","makeReady":"Make records ready","exceptions":"Resolve exceptions","preview":"Preview","apply":"Apply","progress":"Progress","result":"Result","current":"Step {{number}} of {{total}}: {{name}}","protection":"Protected data"},"assistant":{"title":"Move records to version {{version}}","catchUpTitle":"Move records from version {{from}} to version {{version}}","description":"Version {{active}} stays in use until you apply. Nothing changes before the Apply step.","next":"Continue","back":"Back","loading":"Checking the records…","backToEntity":"Back to the entity","retry":"Try again"},"changed":{"intro":"This version adds these fields. Everything else stays the same.","added":"Added","required":"Required","optional":"Optional","type":{"string":"Text","number":"Number","integer":"Whole number","boolean":"Yes or no"},"unsupportedTitle":"This version cannot be moved to with the assistant yet","unsupportedIntro":"The assistant cannot move records to this version yet. It found:","problem":{"removed":"The field {{field}} was removed.","changed":"The field {{field}} was changed.","relaxed":"The field {{field}} is no longer required.","tightened":"The existing field {{field}} became required.","unsupportedType":"The new field {{field}} has a type the assistant cannot fill yet.","unsupportedDeclaration":"The new field {{field}} is calculated or managed, which the assistant cannot fill yet.","entityDeclaration":"An entity rule changed.","nothingAdded":"This version adds no fields.","unsupportedRetype":"The field {{field}} changes to a type the assistant cannot convert.","protectionChanged":"How the field {{field}} is stored changes. That is done in Data protection, not in a new version.","protectedChange":"The encrypted field {{field}} changes in a way that needs its values unencrypted. That is not possible here.","nothingChanged":"This version changes nothing that records hold.","entityDeclarationNamed":"This version changes {{declaration}} of the entity.","changedAttributes":"The field {{field}} changes {{attributes}}.","requiredGeneratedOrLinked":"The new field {{field}} is required and generates its value or links another entity, so the existing records would have no value."},"introSlice2":"These fields change in this version. Fields not shown stay exactly as they are.","kind":{"added":"Added","kept":"Unchanged","renamed":"Renamed","retyped":"Changes type","constrained":"Stricter","removed":"Moves into other fields"},"protected":"Encrypted","protectedHint":"Encrypted values move unchanged. They cannot be converted, mapped or calculated here.","renamedFromTo":"{{from}} becomes {{to}}","retype":{"textToChoice":"Text becomes a choice list","choiceChanged":"The choices change","choiceToText":"A choice list becomes free text","numberToMoney":"A number becomes an amount of money","integerToNumber":"Whole numbers may now have decimals","numberToInteger":"Numbers become whole numbers","textToNumber":"Text becomes a number","numberToText":"A number becomes text"},"removedHint":"Not part of the new version. Its values must move into new fields first.","constrainedHint":"Stricter rules: some existing values may need a correction.","facet":{"string":"Text","choice":"Choice list","number":"Number","integer":"Whole number","boolean":"Yes or no","money":"Money","other":"Other"},"protectionHint":"Its storage changes: the values move to the new protection when records move.","declaration":{"x_lifecycle":"the lifecycle","x_unique_constraints":"the uniqueness rules","x_constraints":"the record rules","x_effects":"the effects on other records","x_temporal":"the dated history","x_periods":"the periods","x_append_only":"the append-only setting","x_correlation_key":"the correlation key","x_correlation_material_fields":"the correlated fields","type":"the kind of entity","other":"an advanced setting ({{key}})"},"attribute":{"x_relationship":"its link to another entity","x_derived":"its calculation","x_rollup":"its collection total","x_managed":"who manages its value","x_uom":"its unit","items":"its list items","properties":"its inner fields","x_table":"its table","other":"an advanced setting ({{key}})"},"closest":{"removeFromDraft":"The assistant cannot move records with this change yet. Take it out of this draft and the rest of the changes can be applied.","newField":"To change it anyway: add a new field with the new definition, give it the old values with “Copy from another field” in Make records ready, and stop using the old one.","makeOptional":"Make the field optional: existing records get no value, and new records get theirs when they are created."},"config":{"intro":"This version also changes how the entity is set up. No record value changes:","title":"The entity’s name changes.","description":"The entity’s description changes.","collectionsAdded":"Child collections added: {{collections}}.","collectionsRemoved":"Child collections removed: {{collections}}. Their records are kept.","collectionsChanged":"Child collections changed: {{collections}}.","generatorAdded":"{{field}} is generated as {{template}} when a record is created. Existing records keep their values; numbering continues after the highest number already used.","generatorChanged":"The generated identifier of {{field}} changes to {{template}}. Existing records keep their values.","generatorRemoved":"{{field}} is no longer generated. Existing records keep their values.","recordsUnchanged":"No field changes what records hold: every record moves to this version as it is.","labels":"Field labels change: {{fields}}."},"patternHint":"New pattern or format: values that do not match it are listed so you can fix them, keep them as they are, or keep their records on the current version."},"scope":{"intro":"Only records that are still being worked on move. Finished records stay as they are.","inProcess":"In process","inProcessHint":"Used by an open workflow run, or not in a finished state. Always included.","drafts":"Drafts","draftsHint":"In the first state, with no open workflow run.","final":"Finished","finalHint":"In a finished state. Never changed here.","otherVersion":"On another version","otherVersionHint":"Already on a different version. Not part of this move.","count_one":"{{count}} record","count_other":"{{count}} records","includeDrafts":"Include drafts","pulledIn_one":"{{count}} draft is included because a record that moves refers to it.","pulledIn_other":"{{count}} drafts are included because records that move refer to them.","referencedElsewhere_one":"{{count}} of these records is referred to by records of other entities. Those references keep working.","referencedElsewhere_other":"{{count}} of these records are referred to by records of other entities. Those references keep working."},"ready":{"intro":"Tell the assistant what each record gets for every new or changed field.","useValue":"Use a value","copyField":"Copy from another field","leaveEmpty":"Leave empty","valueLabel":"Value for every record","copyLabel":"Copy from","noCopyCandidates":"No other field has the same type.","choose":"Choose…","yes":"Yes","no":"No","requiredHint":"Required: every record that moves needs a value.","optionalHint":"Optional: records may move without a value.","problem":{"missingRule":"Choose how records get a value.","defaultDoesNotFit":"This value does not fit the field.","copyNotSameType":"Choose a field of the same type.","unknownField":"This field is not part of the version.","conversionRequired":"Choose how the values are converted.","protectedField":"Encrypted values cannot be read or written here. Keep the current value.","ruleNotAllowed":"This field keeps its values; it takes no rule.","invalidMap":"Choose where the values come from.","mapValueDoesNotFit":"A mapping gives a value the field does not accept.","invalidConversion":"This conversion is not possible. Choose another.","invalidSplit":"Choose a text field to split.","invalidMerge":"Choose at least two fields of a matching kind.","invalidExpression":"Correct the formula.","fieldIdRequired":"Save the new version again so this field has its own identity.","removedNotCarried":"The field {{field}} is not in the new version. Move its values into a new field first.","needsAssignee":"Choose who decides for the records that need a person.","recordDecisionNotAllowed":"A decision for {{field}} on one record is not possible for this kind of change.","recordValueDoesNotFit":"A value typed for {{field}} on one record does not fit the field.","sequenceNotGenerated":"{{field}} is not generated, so it has no numbering to continue.","sequenceBelowHighest":"Numbering for {{field}} must continue above the highest number already used."},"readyCount_one":"{{count}} record is ready","readyCount_other":"{{count}} records are ready","needsCount_one":"{{count}} record needs a value","needsCount_other":"{{count}} records need a value","peopleCount_one":"{{count}} record waits for a person","peopleCount_other":"{{count}} records wait for a person","nothingToFill":"Nothing needs a value: every changed field carries its values across.","valueLabelFix":"Value for records whose current value does not fit","leaveAsIs":"Keep the current value","rule":{"human":"Ask a person","map":"Map existing values","convert":"Convert the value","split":"Take part of another field","merge":"Combine fields","expression":"Calculate","keep":"Keep the current values that do not match (tolerated)"},"hint":{"textToChoice":"Every value must become one of the new choices, or go to a person.","choiceChanged":"Values that are no longer a choice must be mapped, or go to a person.","choiceToText":"Every choice is kept as text.","numberToMoney":"Amounts are rounded to the currency. Choose how, and check the preview.","integerToNumber":"Whole numbers are kept as they are.","numberToInteger":"Decimals are rounded. Choose how.","textToNumber":"Text that is not a number cannot be converted. Choose what happens to it.","numberToText":"Numbers are written as text.","retype":"Choose how each value changes type.","constrained":"Values that fit the stricter rule are kept. Choose what the others get."},"protected":"This field is encrypted. Its values move exactly as they are; they cannot be transformed here.","humanHint":"Each record that needs this value goes to the person you choose below. It stays on its version until they decide.","ifNoValueHuman":"If no value can be made for a record, ask a person","map":{"source":"Values from","loading":"Reading the values in use…","hidden":"You are not allowed to see these values, so they cannot be mapped here. Ask a person instead.","allMapped":"Every value in use has a mapping.","open_one":"{{count}} value still needs a mapping or a person.","open_other":"{{count}} values still need a mapping or a person.","more_one":"{{count}} more value is in use. Values without a mapping stop the move until they have one.","more_other":"{{count}} more values are in use. Values without a mapping stop the move until they have one.","value":"Current value","records":"Records","becomes":"Becomes","keeps":"Kept as it is","choose":"Choose…","askPerson":"Ask a person","undoAsk":"Map it instead","askRest_one":"Ask a person about the {{count}} value left","askRest_other":"Ask a person about the {{count}} values left"},"convert":{"source":"Convert from","fixedCurrency_one":"Amounts become {{currency}}, with {{count}} decimal place.","fixedCurrency_other":"Amounts become {{currency}}, with {{count}} decimal places.","fieldCurrency":"Each amount takes the currency in the record's {{field}} field.","to":{"money":"The value becomes an amount of money.","integer":"The value becomes a whole number.","number":"The value becomes a number.","text":"The value becomes text."},"rounding":"Rounding","roundingHint":"The preview shows which records are rounded.","mode":{"half_even":"To the nearest, halves to even","half_up":"To the nearest, halves up","down":"Toward zero","up":"Away from zero"}},"split":{"source":"Split","delimiter":"At each","part":"Take part number","rest":"And everything after it","delimiterName":{"space":"Space","comma":"Comma","semicolon":"Semicolon","dash":"Dash","slash":"Slash","bar":"Vertical bar","newLine":"Line break"}},"merge":{"sources":"Combine these fields, in the order you tick them","order":"Position {{position}}","policy":"When more than one has a value","policyName":{"join":"Put them together","firstNonEmpty":"Use the first that has a value","conflictToHuman":"Ask a person when they differ"},"separator":"Between them","separatorName":{"space":"A space","comma":"A comma","dash":"A dash","semicolon":"A semicolon","newLine":"A line break"}},"expression":{"label":"Formula","help":"Use + − × ÷ with the fields below, numbers, comparisons and round(value, places). Nothing else is run.","insert":"Insert {{field}}","noInputs":"No number or yes/no field can be used in a formula.","ok":"The formula can be used.","problem":{"syntax":"The formula cannot be read. Check it for typing mistakes.","operator":"The formula uses something that is not allowed here.","field":"The formula uses a field that is not a number or yes/no value, or that is encrypted.","tooLarge":"The formula is too long. Make it shorter.","literal":"Only numbers and yes/no values can be written in a formula."}},"assignee":{"nobody":"nobody yet","someone":"A team member","title":"Who decides","intro":"Records that need a person go to them as work items. Each record stays on its version until they decide.","person":"A person","role":"Anyone with a role"},"protectedAdded":"This new field is encrypted, so the assistant cannot fill it. Records move without a value; while it is required, they cannot move.","keepHint":"Records keep the value they have. The new rule applies when a value is entered or changed."},"exceptions":{"intro":"These records cannot move with the choices so far. Change a choice, or keep them on version {{version}}.","none":"Every record in scope is ready or staying on its version.","record":"Record","reason":"Reason","runs":"Open runs","outcome":"Outcome","unnamed":"Record without a name","restricted":"A record you cannot open","missing":"Needs a value for {{fields}}","refused":"The value for {{fields}} does not fit","keepOld":"Keep on version {{version}}","stays":"Stays on version {{version}}","willMove":"Will move","more":"Show more","keptTitle_one":"Staying on version {{version}} ({{count}} record)","keptTitle_other":"Staying on version {{version}} ({{count}} records)","undoAll":"Undo all","keepAllShown_one":"Keep the {{count}} record shown on version {{version}}","keepAllShown_other":"Keep the {{count}} records shown on version {{version}}","chosen":"Kept by your choice","closureConflict_one":"Kept on its version, but {{count}} record that moves refers to it","closureConflict_other":"Kept on its version, but {{count}} records that move refer to it","unmapped":"No mapping for the current value of {{fields}}","person":"A person decides {{fields}}","pulledIn":"Included because a record that moves refers to it","closureIntro_one":"{{count}} record you chose to keep on version {{version}} is needed by a record that moves. Let it move too, or keep the records that refer to it on version {{version}} as well.","closureIntro_other":"{{count}} records you chose to keep on version {{version}} are needed by records that move. Let them move too, or keep the records that refer to them on version {{version}} as well.","peopleTitle_one":"Waiting for a person ({{count}} record)","peopleTitle_other":"Waiting for a person ({{count}} records)","peopleIntro":"These records stay on version {{version}} until a person decides. After you apply, they appear in the migration as work items.","waitsForPerson":"Waits for a person","currentValue":"{{field}} now: {{value}}","fix":"Use this value","keepValue":"Keep the current value","valueDoesNotFit":"This value does not fit {{field}}.","decidedTitle":"Decided one by one ({{count}})","decidedFix":"{{record}}: {{field}} gets the value you typed","decidedKeep":"{{record}}: {{field}} keeps its current value","decidedPerson":"{{record}}: a person decides {{field}}","undoDecision":"Undo"},"preview":{"intro":"This is exactly what Apply will do. Values you are not allowed to see are hidden.","counts":"Records","inProcess":"In process","draft":"Drafts","final":"Finished","ready":"Ready to move","needsValue":"Need a value","stayingOld":"Staying on their version","blocked":"Blocked","otherVersion":"On another version","changes":"Changes","field":"Field","before":"Before","after":"After","empty":"Empty","hidden":"Hidden","runsTitle":"Open workflow runs these records are part of","runsIntro":"Runs keep the version they started with. Their records are not changed behind them.","noRuns":"No open workflow run uses these records.","openTasks_one":"{{count}} open task","openTasks_other":"{{count}} open tasks","moreRuns_one":"and {{count}} more run","moreRuns_other":"and {{count}} more runs","unnamedRun":"Workflow run","blockedApply":"Resolve the records that need a value before applying.","planDigest":"Plan fingerprint","stale":"Updating the preview for your latest choices…","runState":{"pending":"Waiting to start","in_progress":"In progress","waiting_for_approval":"Waiting for approval","approved":"Approved","paid":"Paid","completed":"Completed","cancelled":"Cancelled","rejected":"Rejected","failed":"Failed","other":"In progress"},"needsHuman":"Wait for a person","closureConflict":"Needed by a moving record","pulledIn":"Included by reference","moneyTitle":"Money","moneyCurrency_one":"{{count}} amount in {{currency}}","moneyCurrency_other":"{{count}} amounts in {{currency}}","moneyRounded_one":"{{count}} amount is rounded","moneyRounded_other":"{{count}} amounts are rounded","moneyUnchanged_one":"{{count}} amount stays exactly as it is","moneyUnchanged_other":"{{count}} amounts stay exactly as they are","moneyCurrencyUnknown_one":"{{count}} amount has no known currency and cannot be converted","moneyCurrencyUnknown_other":"{{count}} amounts have no known currency and cannot be converted","fromField":"from {{field}}","movedOut":"Moved into new fields","noteCurrencyUnknown":"No known currency","noteRounded":"Rounded ({{currency}})","noteExact":"Exact ({{currency}})"},"apply":{"summary_one":"Version {{version}} becomes active for new records, and {{count}} record moves to it.","summary_other":"Version {{version}} becomes active for new records, and {{count}} records move to it.","staying_one":"{{count}} record stays on version {{active}}.","staying_other":"{{count}} records stay on version {{active}}.","finalNote":"Finished records are not changed.","confirm":"Activate version {{version}} and move records","applying":"Starting…","blockedReadOnly":"You can review this move, but only people allowed to apply migrations can start it.","blockedStale":"Wait until the preview shows your latest choices.","people_one":"{{count}} record stays on version {{active}} until {{assignee}} decides.","people_other":"{{count}} records stay on version {{active}} until {{assignee}} decides.","blockedConsumers":"Resolve every consumer that still uses a moved field before applying.","blockedApproval":"Run the dry run and have it approved before applying.","checking":"Checking consumers and approvals…"},"progress":{"title":"Moving records","writesContinue":"Business work continues while records move. Each record is moved on its own; nothing is locked for the whole company.","done_one":"{{done}} of {{count}} record handled","done_other":"{{done}} of {{count}} records handled","canLeave":"You can leave this page. Records keep moving on the server, and you can come back any time from Version and migration history.","pollFailed":"Progress could not be checked just now. Records keep moving; this page will try again.","announce":"{{percent}} done","pausedFailure":"Moving stopped because a record could not move. Records that moved stay moved. Check the evidence, then resume.","pausedOperator":"Moving is paused. Records that moved stay moved; nothing else moves until you resume.","resume":"Resume moving records","pause":"Pause","pausedCustody":"Moving stopped because protected data keys were unavailable. Nothing was changed or exposed. Resume once key custody is healthy.","failuresTitle":"Why records could not move","failuresUnchanged":"Nothing in these records was changed; they stay on the previous version. Resume, then move them again from the result — the new version is kept as you designed it."},"result":{"migrated":"Moved","stayed_old":"Stayed on their version","needs_repreview":"Changed while moving","failed":"Could not move","pending":"Waiting","leased":"Moving","repreviewHint":"Records that changed while moving were not overwritten. They stay on version {{version}} and can be moved later.","failedHint":"Records that could not move stay on version {{version}} and behave as before.","moveRemaining":"Move records still on version {{version}}","evidence":"Evidence","evidenceHint":"Every record that moved or stayed has an evidence entry. It holds fingerprints and field names, never values.","exportCsv":"Download evidence (CSV)","exportJson":"Download evidence (JSON)","status":{"completed":"The move is complete.","running":"Records are still moving on the server.","other":"This move has stopped.","paused":"Moving is paused.","awaiting_people":"Everything automatic is done. Some records wait for a person."},"openRecords":"Open the records","needs_human":"Waiting for a person","awaitingPeopleHint_one":"{{count}} record waits for a person. It stays on version {{version}} until they decide.","awaitingPeopleHint_other":"{{count}} records wait for a person. They stay on version {{version}} until someone decides."},"history":{"title":"Version and migration history","versions":"Versions","current":"Current","records_one":"{{count}} record","records_other":"{{count}} records","origin":{"baseline":"Starting version","version":"New version","in_place":"Changed in place","created":"First version"},"showRecords":"Show its records","moveToCurrent":"Move to the current version","migrations":"Record moves","noMigrations":"No records have been moved between versions.","batch":"From version {{from}} to version {{to}}","status":{"running":"Moving","completed":"Complete","other":"Unknown","paused":"Paused","awaiting_people":"Waiting for people"},"unavailable":"Version history could not be loaded.","outcomeCount":"{{outcome}}: {{value}}","viewProgress":"View progress","viewResult":"View result"},"chip":{"version":"Version {{label}}","filtering":"Showing records on version {{label}}.","clearFilter":"Show all versions","olderVersionNote":"This record stays on version {{label}}. It is edited with that version's form and rules."},"refusals":{"intentMismatch":"This move was already started with different choices. Start again from the preview.","planChanged":"The choices changed after the preview. Check the preview again, then apply.","schemaChanged":"The entity changed since this preview. Check the preview again.","inProgress":"Records of this entity are already being moved. Wait for that move to finish.","needsRemediation":"Some records still need a value. Give them one or keep them on their version.","unsupportedChange":"This version changes something the assistant cannot move records across yet.","forbidden":"You are not allowed to do this for this entity.","invalidPlan":"These choices cannot be applied. Check each new field.","failed":"The records could not be moved. Nothing was changed.","protectedField":"Encrypted values cannot be read, converted or written here. They move unchanged.","needsAssignee":"Choose who decides for records that need a person.","closureRequired":"A record that moves refers to a record left behind. Let that record move too, or keep the records that refer to it on their version.","paused":"This migration is paused. Resume it first.","notRunning":"This migration is not moving records right now.","remediationClosed":"This record was already decided.","notAssignee":"This record is assigned to someone else.","protectionUnacknowledged":"Confirm what stops working for each protected field before starting.","protectionNeedsReentry":"One-way values cannot be turned back into readable values. Choose to clear them for re-entry.","protectionBlocked":"Something still depends on a field this version protects. Remove or redesign it first.","protectionIndependentApproval":"Someone other than you must approve this change.","protectionApprovalRequired":"This change cannot be undone the usual way, so it needs an approval first.","finalScopeRequired":"Decide what happens to records in a final state before starting.","protectionWithPeople":"A version that changes how fields are stored cannot also wait for people. Split it into two versions.","finalOnlyForProtection":"Final records can only move for a version that changes nothing but protection.","consumersReference":"A form, workflow, report, view or integration still uses a field this version removes or renames. Resolve each one under What changed first.","consumersSetMissing":"The evolution set chosen for the forms and workflows was not found or was already activated. Choose another.","consumersRefused":"The forms and workflows changing with this version could not be activated. Nothing was changed.","approvalRequired":"This workspace needs a dry run of its own records, approved by an administrator, before records move.","approvalRejected":"The dry run was rejected. Change the plan, then run the dry run again.","dryRunStale":"The plan or the version changed since the dry run, or it expired. Run the dry run again.","approvalNotIndependent":"A breaking change needs approval from someone other than the person who authored it or ran the dry run.","approvalForbidden":"Only an account administrator can approve moving these records.","repinIncompatible":"Running workflows can only move to a version that only adds optional fields.","planNotPortable":"This plan names records or people of this workspace, so it cannot be promoted. Stop keeping chosen records on the old version and choose a role instead of a person.","finalRecordProtected":"A final record changes only through an approved correction.","reasonRequired":"Write a reason of at least 10 characters.","requestProtectionBatch":"A migration that changed how fields are stored cannot be restored here.","requestAlreadyInverted":"This migration has already been restored.","requestNotAllowed":"This migration cannot be corrected or restored now.","requestNothingToMove":"There is nothing to move.","requestOpen":"Another request for this migration is waiting. Open it or withdraw it first.","requestNotIndependent":"In production, someone other than the requester must approve.","requestNotApproved":"The request is not approved yet.","requestExpired":"The request expired. Make a new one.","requestClosed":"This request is already closed.","revisionReferenced":"This version is still in use, so it cannot be retired.","revisionRetired":"This version is retired and can no longer be used.","evidenceUnsigned":"No evidence signing key is configured, so a signed package cannot be made.","evidenceIntegrity":"An evidence entry no longer matches its stored fingerprint. The package was not signed; contact support.","evidenceTooLarge":"This migration has more evidence than one signed package can hold. Contact support for a package split in parts.","readFailed":"This could not be checked. Nothing was changed. Try again.","unreachable":"The server could not be reached. Nothing was changed. Check your connection and try again.","signedOut":"Your session ended. Sign in again, then try again. Nothing was changed."},"workbench":{"title":"Records waiting for a person","intro_one":"{{count}} record waits for a decision before it can move from version {{from}} to version {{to}}.","intro_other":"{{count}} records wait for a decision before they can move from version {{from}} to version {{to}}.","filterLabel":"Show","filter":{"open":"Waiting","closed":"Decided","all":"All"},"mine":"Only records I can decide","paused":"This migration is paused. Decisions can be made again when it resumes.","noneOpen":"No record is waiting for a person.","none":"No records to show.","select":"Select","decision":"Missing decision","assignee":"Who decides","reason":{"askPerson":"needs a value from a person","mappedToPerson":"its current value was given to a person to decide","noValue":"no value could be made for it","mergeConflict":"the fields it combines disagree"},"status":{"open":"Waiting","completed":"Moved","kept_old":"Kept on its version","superseded":"No longer needed"},"decide":"Decide","bulkIntro_one":"Decide the same for the {{count}} selected record.","bulkIntro_other":"Decide the same for the {{count}} selected records.","bulkDifferent":"The selected records need different decisions. Decide them one by one, or keep them on their version.","bulkKeepOld_one":"Keep the {{count}} selected record on version {{version}}","bulkKeepOld_other":"Keep the {{count}} selected records on version {{version}}","valueHidden":"Current value hidden","currentValue":"Now: {{value}}","outcome":{"completed":"Moved to the new version.","replayed":"Already decided.","kept_old":"Kept on its version.","superseded":"The record changed version or was removed, so no decision is needed.","refused":"The record could not move. Nothing was changed.","recordChanged":"The record changed while you were deciding. Check it again, then decide.","incomplete":"A decision is still missing for {{fields}}.","valueRefused":"The value for {{fields}} does not fit the new version.","recordRemoved":"The record was removed.","versionChanged":"The record is already on another version.","writeRefused":"The record could not be written. Nothing was changed."},"comment":"Note (optional)","commentHint":"Saved with the decision, for the people who read the evidence.","moving":"Moving…","submit":"Move to version {{version}}"},"protection":{"intro":"Changing how these fields are stored moves every value they hold. Nothing moves until you apply, and no value is shown here.","fromTo":"{{from}} → {{to}}","destructive":"Needs approval","transformation":{"none":"Nothing changes for the values.","encrypt":"Each value is encrypted with your workspace’s own key.","encrypt_and_index":"Each value is encrypted, and a keyed lookup index is added for exact matches.","hmac":"Each value is replaced by a keyed one-way fingerprint. The original is gone once the record moves.","add_index":"Values stay encrypted, and a keyed lookup index is added for exact matches.","remove_index":"Values stay encrypted; the lookup index is removed.","reindex":"The lookup index is rebuilt with the new letter-case rule.","decrypt_to_hmac":"Each value is decrypted in memory, replaced by a keyed one-way fingerprint, and the encrypted copy is destroyed.","decrypt_to_plaintext":"Each value is decrypted and stored as readable text again.","reentry":"The current values cannot be carried over. They are cleared, and people enter them again."},"values_one":"{{count}} value moves: {{inProcess}} in process, {{drafts}} drafts, {{final}} final.","values_other":"{{count}} values move: {{inProcess}} in process, {{drafts}} drafts, {{final}} final.","history_one":"{{count}} older copy in version history is protected too.","history_other":"{{count}} older copies in version history are protected too.","lossesTitle":"What stops working for this field","gainsTitle":"What starts working for this field","capability":{"display":"Showing the value to people with permission","recover":"Getting the original value back","exactSearch":"Searching for an exact value","partialSearch":"Searching for part of a value","rangeFilter":"Filtering by a range","sort":"Sorting by this field","uniqueness":"Keeping values unique","calculation":"Calculations and totals","plainExport":"Exports and documents without the protected-data permission"},"acknowledge":"I understand what stops working","reentryTitle":"Values must be entered again","reentryBody":"One-way protected values cannot be turned back into readable values. To store this field differently, its current values are cleared and people enter them again.","reentryChoice":"Clear the values so people can enter them again","noRollback":"This cannot be undone. Once records move, recovery means entering the values again.","noRollbackDone":"This migration cannot be undone. Recovery means entering the values again, or a new version.","removesProtection":"Protection is removed: values are stored as readable text again.","blockersTitle":"This cannot start yet","blocker":{"type":"{{field}} holds a kind of value that cannot be protected.","derived":"A calculated value uses {{field}}.","correlationKey":"{{field}} is used to match records.","rules":"A lifecycle or business rule uses {{field}}.","uniqueness":"{{field}} must stay unique. Choose exact lookup instead.","rollup":"A total on {{entity}} adds up {{field}}.","sortIndex":"A sorted view uses {{field}}.","requiredReentry":"{{field}} is required, so its values cannot be cleared for re-entry.","sort":"The view “{{consumer}}” sorts by {{field}}.","filter":"“{{consumer}}” filters {{field}} in a way a protected field cannot answer.","grouping":"“{{consumer}}” groups by {{field}}.","aggregate":"The report “{{consumer}}” adds up {{field}}.","export":"The document template “{{consumer}}” places {{field}}.","integration":"The connector “{{consumer}}” is declared to send {{field}}, which would have no original value."},"finalTitle_one":"{{count}} record is in a final state","finalTitle_other":"{{count}} records are in a final state","finalBody":"Final records are not changed unless you decide so. Moving them changes only how the value is stored.","finalInclude":"Move them too","finalLeave":"Leave them as they are (their values stay in the old form)","approved":"Approved","approvalNeeded":"Needs approval","approvalIndependent":"An owner other than the person who applies it must approve this exact plan.","approvalSingle":"An owner must approve this exact plan.","fingerprint":"Plan fingerprint {{digest}}","approve":"Approve this change","approving":"Approving…","approvalPending":"Waiting for an approval of this plan.","neededTitle":"Still needed","problem":{"protectionUnacknowledged":"Confirm what stops working for {{field}}.","protectionNeedsReentry":"Choose to clear {{field}} for re-entry.","reentryOfRequiredField":"{{field}} is required, so its values cannot be cleared.","protectionWithPeople":"This version also asks people to decide records. Change protection in a version of its own.","protectionBlocked":"Remove what depends on {{field}}.","finalScopeRequired_one":"Decide what happens to the {{count}} final record.","finalScopeRequired_other":"Decide what happens to the {{count}} final records.","protectionApprovalRequired":"An approval of this plan."},"consumers":{"title":"What uses these fields","none":"No form, workflow, report, view, integration, document or test uses these fields.","unavailable":"What uses these fields could not be listed right now. Anything that blocks the change is still shown above.","type":{"form":"Form","workflow":"Workflow","report":"Report","saved_view":"Saved view","integration":"Integration","test_spec":"Test","document":"Document template","connector":"Connector"},"impact":{"blocked":"Must change first","sealed":"Writes are protected","masked":"Sees a protected value","rerun":"Run again"}}},"consumers":{"title":"Where this entity is used","intro":"Forms, workflows, reports, saved views, integrations and tests that use this entity. A field this version removes or renames cannot stay in use.","blocking_one":"{{count}} consumer still uses a field this version removes or renames.","blocking_other":"{{count}} consumers still use a field this version removes or renames.","clear":"No consumer is left using a removed or renamed field.","type":{"form":"Form","workflow":"Workflow","report":"Report","saved_view":"Saved view","integration":"Integration","test_spec":"Test"},"resolution":{"unaffected":"Not affected","replaced":"Replaced by version {{version}}","rewrite":"Updated to the new name","unresolved":"Still uses it","rerun":"Runs again","review":"Check the new type"},"usesRenamed":"Uses {{from}}, now {{to}}","uses":{"removed":"Uses {{field}}, which this version removes","renamed":"Uses {{field}}, which this version renames","retyped":"Uses {{field}}, whose type changes","missing":"Uses {{field}}, which this version does not have"},"howTo":{"form":"Add a new version of this form without the old field to an evolution set, then choose that set below.","workflow":"Add a new version of this workflow that uses the new field to an evolution set, then choose that set below.","report":"Update it to the new name below, or remove the field from the report first.","saved_view":"Update it to the new name below, or remove the field from the view first.","integration":"Pause this integration, or change what it receives, before applying.","test_spec":"This test runs again on the candidate before promotion."},"rewrite":"Update to the new field name when this version activates","unaffected_one":"{{count}} more consumer uses this entity and is not affected.","unaffected_other":"{{count}} more consumers use this entity and are not affected.","setLabel":"Forms and workflows that change with this version","setHint":"Choose the evolution set that holds their new versions. It activates together with this version.","setNone":"No evolution set","setOption_one":"{{names}} ({{count}} item)","setOption_other":"{{names}} ({{count}} items)","tests_one":"{{count}} test applies to this entity and runs again before promotion.","tests_other":"{{count}} tests apply to this entity and run again before promotion."},"repin":{"label":"Move running workflows to this version at their next step","hint":"A run waiting on a task keeps its version until that task is done; it moves when its next step begins.","notCompatible":"Only a version that adds optional fields can move running workflows. Runs keep the version they started with.","applyNote":"Running workflows move to version {{version}} at their next step. Tasks already open are not changed."},"governance":{"title":"Approval before records move","state":{"approved":"Approved","needsDryRun":"Dry run needed","rejected":"Rejected","waiting":"Waiting for approval"},"introPromoted":"Version {{version}} arrived by promotion. Its tests ran where it was built; before records move here, run a dry run of this workspace's own records and have an administrator approve it.","introProduction":"This is a production workspace. Before records move, run a dry run of its records and have an administrator approve it.","dryRunCounts":"Dry run of this workspace's records — ready to move: {{ready}}; staying on their version: {{staying}}; waiting for a person: {{people}}; final and unchanged: {{final}}.","breaking":"This version changes existing fields, so someone other than its author approves it.","compatible":"This version only adds optional fields.","dryRunExpired":"The last dry run expired. Run it again.","dryRunChanged":"The plan changed since the last dry run. Run it again.","dryRunNeeded":"This plan has no dry run yet.","dryRunAgain":"Run the dry run again","dryRun":"Run a dry run of this workspace's records","noteLabel":"Note for the record (optional)","typeToApprove":"Type {{version}} to confirm","approve_one":"Approve moving {{count}} record to version {{version}}","approve_other":"Approve moving {{count}} records to version {{version}}","reject":"Reject","waitingForOther":"Waiting for another administrator to approve this dry run."},"promotion":{"title":"Promote this version","intro":"Keeps this version and its rules ready for promotion with the workflows that use it. Records, people and protected values never travel; the receiving workspace runs its own dry run.","prepared":"Ready for promotion. Freeze the workflow in the Test Center to include it.","prepare":"Prepare for promotion"},"promoted":{"title":"Versions received by promotion","intro":"Nothing has moved yet. Open the version to run a dry run of this workspace's records and have it approved.","version":"Version {{version}}","status":{"awaiting_dry_run":"Waiting for a dry run","draft_created":"Draft ready","applied":"Applied"},"contents":"Rules: {{rules}} · Consumers: {{consumers}}","open":"Open the version","start":"Start the dry run"},"batchSummary":{"consumers":"Changed with this version — forms and workflows activated: {{replaced}}; reports and views updated to new field names: {{rewritten}}.","approved":"Approved after a dry run of this workspace's records ({{environment}}).","repinned":"{{count}} running workflows moved to this version at their next step.","repinned_one":"{{count}} running workflow moved to this version at its next step.","repinned_other":"{{count}} running workflows moved to this version at their next step."},"failure":{"protectedValue":"A protected value could not be stored in its new form.","keys":"A protected value could not be opened with this workspace's keys.","permission":"The person moving the records may not change them.","state":"The record is at a step that does not allow this change.","rule":"The record no longer meets a rule of the new version.","other":"The record could not be saved."},"capacity":{"waiting":"Waiting for capacity","waitingHint":"Other workspaces are moving records too, so this migration takes its fair share. It continues automatically; nothing needs to be done.","since":"Waiting since"},"evidencePackage":{"download":"Download signed evidence package","hint":"The signed package lets an auditor check every evidence entry against the fingerprint the database stored when it was written, without LerniFlow.","unavailable":"A signed evidence package is not available here: this workspace has no evidence signing key configured.","fingerprint":"Signing key fingerprint","verifyCommand":"Verify offline"},"governed":{"title":"Corrections and restores","batchKind":{"correction":"Correction of final records","inverse":"Restore of records moved by a migration"},"approvedOn":"Approved on","restored":"Restored","viewRequest":"View the request","viewCompensated":"View the migration it restores","finalTitle":"Final records","finalHint":"{{total}} final records stayed on version {{version}}. The assistant never changes closed work; moving it is a separate correction that needs a reason and an approval.","finalNone":"No final records stayed behind.","protectionBatch":"This migration changed how fields are stored. Its final records and its rollback follow the data protection rules.","requestCorrection":"Request a correction","undoTitle":"Undo this migration","undoHint":"Records nobody has changed since they moved can be restored exactly. Records with later activity are kept as they are and listed for a corrective new version.","reactivationIsNotRollback":"Reactivating a previous configuration changes the entity’s definition only. It does not change any record.","alreadyRestored":"This migration has already been restored.","requestInverse":"Plan a restore","requests":"Requests","kind":{"final_correction":"Correction of final records","inverse":"Restore"},"status":{"awaiting_approval":"Waiting for approval","approved":"Approved","rejected":"Rejected","applied":"Applied","cancelled":"Withdrawn"},"open":"Open","newTitle":{"final_correction":"Correct final records","inverse":"Restore records"},"explain":{"final_correction":"These final records stayed on version {{from}} when the rest moved to {{to}}. A correction moves them to {{to}} with the same plan, once an administrator approves your reason.","inverse":"A restore moves records back from version {{to}} to {{from}}, exactly as they were before the migration. Only records nobody has changed since are restored."},"disposition":{"correct":"Will move","restore":"Can be restored exactly","compensate":"Changed since, kept","unavailable":"Cannot move"},"compensateHint":"Records changed after the migration are never rolled back: that would erase later work. To change them, create a corrective new version.","independentRequired":"This is a production workspace: an administrator other than the requester must approve.","approvalRequired":"An administrator must approve before anything moves.","problem":{"notFound":"This migration was not found.","notAMigration":"Only a migration made with the assistant can be corrected or restored.","protectionBatch":"A migration that changed how fields are stored is not restored here; data protection decides what can be undone.","notCompleted":"Wait until this migration is complete.","alreadyInverted":"This migration has already been restored."},"openExisting":"Open the request already waiting","nothingToMove":"There is nothing to move.","backToMigration":"Back to the migration","reasonLabel":{"final_correction":"Why must these final records change?","inverse":"Why must these records be restored?"},"reasonHint":"At least {{min}} characters. The reason is kept with the evidence and shown to the approver.","submitting":"Sending…","submit":{"final_correction":"Request the correction","inverse":"Request the restore"},"waitingForApprover":"You made this request, so another administrator must approve it.","noteLabel":"Note for the record (optional)","approveHint":{"final_correction":"Approving lets the requester move these closed records to the new version.","inverse":"Approving lets the requester restore these records to their earlier version."},"approve":"Approve","reject":"Reject","applying":"Starting…","apply":{"final_correction":"Move the final records","inverse":"Restore the records"},"applyHint":{"final_correction":"Each record is checked again; a record that changed since the request is not overwritten.","inverse":"Each record is checked again; a record that changed since the request is kept as it is."},"cancel":"Withdraw the request","requestTitle":{"final_correction":"Correction of final records: version {{from}} to {{to}}","inverse":"Restore: version {{from}} back to {{to}}"},"expired":"Expired","requestedBy":"Requested by","approval":"Approval","decidedBy":{"approved":"Approved by {{name}} on","rejected":"Rejected by {{name}} on"},"reason":"Reason","note":"Approver’s note","expires":"Valid until","openBatch":"Follow the progress","records":"Records","unnamedRecord":"Record without a visible name","itemReason":{"needsPerson":"needs a person’s decision","valueMissing":"a required value is missing","valueRefused":"a value does not fit the new version","changedSinceMigration":"changed after the migration","versionChanged":"moved to another version","recordRemoved":"deleted","noHistory":"its earlier state was not kept","historyDiffers":"its earlier state cannot be proven","other":"cannot move"},"moreRecords":"Show more records","scopeDigest":"Frozen scope fingerprint"},"retention":{"retired":"Retired","kept":"Kept while in use — running workflows: {{runs}}, migrations: {{migrations}}, evidence entries: {{evidence}}","retire":"Retire this version","reasonLabel":"Why retire version {{version}}?","retireHint":"Nothing refers to this version any more. Retiring keeps it for the record, but no record or migration can use it again.","confirm":"Retire","keep":"Keep it"},"sequence":{"title":"Numbering of {{field}}","continues":"The next record gets {{value}}.","highest":"The highest number already used in this period is {{count}}.","none":"No record uses this numbering yet.","chooseLabel":"Continue at (optional)","chooseHint":"Leave it empty to continue right after the highest number.","belowHighest":"Choose {{count}} or more: a lower number is already used."}},"recordDocuments":{"title":"Generated documents","empty":"No documents have been generated about this record yet.","loadFailed":"The documents generated about this record could not be loaded.","templateVersion":"{{template}} v{{version}}","generatedBy":"Generated by {{name}}","unknownActor":"an unknown user","openRun":"Open run","download":"Download"},"assignee":{"formerMember":"{{name}} (former member)","pending":"{{name}} (awaiting approval)","unnamed":"Unnamed person","formerMemberShort":"Former member","lookupFailed":"The people could not be loaded. Try again.","choose":"Choose a person","searchPeople":"Search people","noPeople":"No one in this workspace matches.","clear":"Clear person","nobody":"Nobody"},"sequenceCounter":{"title":"Where the series continues","saveFirst":"Save the entity to see and set where this series continues.","periodLabel":"Current period","wholeEntity":"Counter for the whole entity","nextLabel":"Next record gets","highestLabel":"Highest number already used","templateUnsaved":"The template has unsaved changes. The counter belongs to the saved field.","continueAt":"Continue at","preview":"The next record will be {{value}}.","minimum":"Must be at least {{minimum}}: a lower number is already used in this period.","reasonLabel":"Why are you changing it?","save":"Set next number","audited":"Records already numbered are never renumbered. Every change is recorded with your name and reason.","saved":"The next record will get number {{value}}.","errors":{"belowFloor":"That number is already used in this period. The highest used is {{floor}}; choose a larger number.","exceedsWidth":"That number has more digits than the template allows ({{width}}).","reasonRequired":"Say why you are changing where the series continues.","invalidValue":"Enter a whole number of 1 or more.","notGenerated":"This field is not a generated sequence in the saved entity. Save it first.","keyMismatch":"This counter does not belong to this field.","failed":"The counter could not be read or changed. Try again."}},"identifierPresets":{"title":"Identifier validation","none":"None","hint":"Checks a common identifier's shape and check digit. A Pattern, if any, still applies.","example":"Example of a valid value: {{example}}","formatOnly":"Only the format is checked. Whether the identifier is registered is not.","patternInvalid":"This is not a valid regular expression, so it cannot be saved.","variantField":"Which kind is required is decided by","variantFieldHint":"For each option, choose the kind of identifier a record with that option needs.","variantFieldNone":"Add a list-of-options field to decide which kind each record needs. Until then, any kind is accepted.","anyVariant":"Any kind","variantFor":"Kind required for {{value}}","mx_rfc":{"label":"Mexico — RFC","hint":"13 characters for a person, 12 for a company; the date and the SAT check digit are checked.","variants":{"person":"Person (13 characters)","company":"Company (12 characters)"}},"mx_curp":{"label":"Mexico — CURP","hint":"18 characters; the date, the state code and the check digit are checked."},"iban":{"label":"IBAN (bank account)","hint":"Country code, national length and the mod-97 check digits. Spaces are removed."},"eu_vat":{"label":"EU VAT number","hint":"Country prefix and that country's format. There is no check digit."},"es_nif":{"label":"Spain — NIF / NIE","hint":"8 digits and a control letter, or X/Y/Z, 7 digits and a control letter.","variants":{"dni":"NIF (Spanish national ID)","nie":"NIE"}},"br_cpf":{"label":"Brazil — CPF","hint":"11 digits with two check digits. Dots and the hyphen are removed."},"br_cnpj":{"label":"Brazil — CNPJ","hint":"14 digits with two check digits. Dots, slash and hyphen are removed."}},"gridExport":{"export":"Export","title":"Export records","description":"Choose what to include. The grid’s current filters and your choices decide the file.","scope":"Scope","selectedRows":"Selected rows","allMatching":"All matching rows","columns":"Columns","visibleColumns":"Visible columns","canonical":"Canonical values","formatted":"Formatted values","formatMode":"Format","estimatedCount":"Estimated count: {{count}}","background":"Background processing","backgroundRequired":"A background job is required. You will be notified when the file is ready.","backgroundNotRequired":"This export downloads immediately.","timezone":"Timezone","confirm":"Export","ready":"Ready","expired":"This export has expired.","refused":"You do not have permission to export these records.","notReady":"This export is not ready yet.","notificationReady":"Your record export is ready.","noColumns":"Choose at least one column you can read.","noSelection":"Select at least one row, or export all matching rows.","queued":"The export is running in the background. You will be notified when it is ready.","timezoneInvalid":"Enter a recognised timezone.","selectPage":"Select rows on this page","selectRow":"Select row"}},"evolution":{"pageTitle":"Evolution","pageDescription":"Analyse and activate coordinated draft changes across entities, forms, workflows and decisions.","draftsTitle":"Draft artefacts","draftsDescription":"Select drafts to group into an evolution set.","noDrafts":"No draft artefacts are waiting.","operationKeyLabel":"Operation key","reasonLabel":"Reason","analyse":"Analyse","activateSet":"Activate set","reactivatePrevious":"Reactivate previous","reportTitle":"Compatibility report","ledgerTitle":"Evolution ledger","ledgerEmpty":"No evolution sets yet.","refreshLedger":"Show loaded ledger","activated":"The set is active.","reactivated":"Previous configuration is active again. Records and runs were not changed.","report":{"compatible":"This reference is compatible.","canActivate":"All references are compatible. The set may be activated.","cannotActivate":"One or more references are incompatible. Activation is refused.","recordCount":"{{count}} records on this entity","recordsCompatible":"Records for {{entity}} are compatible.","recordsIncompatible":"Records or schema changes for {{entity}} are incompatible.","upgradeCounts":"Backfill: {{backfill}}; recompute: {{recompute}}."},"refusals":{"activationRefused":"Activation was refused. Fix the named artefact and retry with the same operation key.","artefactMissing":"An artefact in this set no longer exists. Remove it from the set or restore it.","artefactNotActivatable":"An artefact in this set is archived or deprecated and cannot be activated.","concurrentChange":"The entity changed while this set was being analysed. Analyse it again, then activate.","decisionMissing":"A workflow step points at a decision that is not in the set.","fieldRemovedFromEntity":"A live form still uses field \"{{field}}\" that this entity draft no longer declares.","ownerOnly":"Only a team owner can analyse or activate an evolution set. Ask an owner to activate it.","pinnedStepMissing":"A running instance is pinned to step \"{{stepKey}}\" that this workflow draft no longer has.","recordUpgradeRefused":"The record upgrade was refused, so nothing was activated. The cause is shown below; fix it and retry with the same operation key.","recordsWouldBeOrphaned":"Activating this draft as a separate entity would leave the live records behind. The live entity is upgraded in place instead — retry with the same operation key.","stepEntityMissing":"A workflow step points at an entity that is not in the set.","stepFormMissing":"A workflow step points at a form that is not in the set."}},"client-errors":{"clientErrors":{"duplicateEntityNameVersion":"An item with that name and version already exists.","duplicateValue":"An item with that value already exists.","generic":"Something went wrong. Please try again or contact your administrator."}},"finance":{"budgets":{"alerts":{"actionFailed":"Action failed","success":"Success"},"dashboard":{"columns":{"actual":"Actual","budget":"Budget","remaining":"Remaining","status":"Status","variancePct":"Variance %","workflow":"Workflow"},"description":"Server-authoritative base amounts. Client does not recompute variance math.","empty":"No budget or posted actual data for the selected period.","title":"Variance dashboard"},"editor":{"activate":"Activate","active":"Active:","amountLabel":"Amount ({{currency}})","createDraft":"Create draft","description":"Amount in base currency ({{currency}}). A distinct Finance approver must activate.","draftsAwaiting":"Drafts awaiting activation","noActive":"No active budget for this scope.","notes":"Notes","title":"Budget editor","versionHistory":"Version history"},"filters":{"allWorkflows":"All workflows","costLens":"Cost lens","environment":"Environment","lensAll":"All internal cost","lensGl":"GL-eligible only","period":"Period","selectPeriod":"Select period","selectWorkflow":"Select workflow","workflow":"Workflow"},"flagOff":{"description":"This area isn't turned on for your workspace. Contact LerniFlow support to enable it.","title":"Budget variance isn't enabled for this workspace"},"forbidden":{"description":"You do not have permission to view budgets for this environment.","title":"Access denied"},"messages":{"budgetActivated":"Budget activated.","draftCreated":"Draft budget created."},"pageDescription":"Base-currency budgets and posted-actual variance by workflow, environment, and period.","pageTitle":"Finance budgets","status":{"noActual":"No actual","onTrack":"On track","overrun":"Overrun","unbudgeted":"Unbudgeted","zeroBudget":"Zero budget"}},"externalGl":{"connector":{"approveActivate":"Approve & activate","description":"Type, tier, and delivery are fixed to Generic async / Webhook. Signing secret values are never shown — only key ID and validation status.","displayName":"Display name","draftCreated":"Connector draft created","endpoint":"HTTPS endpoint","flagOffDescription":"This integration isn't turned on for your workspace. Contact LerniFlow support to enable it.","flagOffTitle":"External GL integration isn't enabled for this workspace","list":"Connectors","requestApproval":"Request approval","saveDraft":"Save connector draft","signingKeyId":"Signing key ID","testConnection":"Test connection","title":"Connect — Generic async webhook","hostAndKey":"{{host}} · key {{key}}","tested":"Tested","notTested":"Not tested"},"connectorsEmpty":"No connectors yet. Add one to send ledger entries to an external system.","cost":{"blocked":"Blocked","commercialPreview":"Commercial volume preview","deliveredDescription":"Operational volumes (batches, lines, webhook calls, bytes, compute, storage, KMS, retries, DLQ, reconciliation). Excludes tenant journal values and Stripe records.","deliveredTitle":"Delivered-cost operations","deliveryQuality":"Delivery quality","deliveryQualityDescription":"Service quality metrics without internal rate detail.","deliveryRun":"Delivery run","entitlementDescription":"Live/LKG source, decision age/expiry, suspension, blocked jobs, retry eligibility.","entitlementOperations":"Entitlement operations","flagOffDescription":"This area isn't turned on for your workspace. Contact LerniFlow support to enable it.","flagOffTitle":"GL cost metering isn't enabled for this workspace","permitsNewJobs":"Permits new jobs","marginInputsTitle":"Delivered cost & margin inputs","marginInputsDescription":"Minimum price floor is a margin input (delivered_cost / 0.10), not a catalog price. Numeric plan tiers remain blank this phase.","runId":"Run {{id}}…","deliveredCost":"Delivered cost: {{value}}","minimumPrice":"Minimum recognized price (input, not catalog): {{value}}","grossMargin":"Gross margin: {{value}} (required ≥ {{required}})","costBreakdown":"Standing: {{standing}} · Volume: {{volume}} · Shared: {{shared}}","commercialPreviewDescription":"Projection version {{version}} — explicitly not Stripe invoice truth.","notStripeInvoiceTruth":"not Stripe invoice truth","blockedJobs":"Blocked jobs: {{blocked}} · Retry eligible: {{retryEligible}}","lkgExpires":"LKG expires: {{when}}","notApplicable":"n/a","incompleteMetering":"incomplete metering"},"entitlementCacheEmpty":"No entitlement cache rows yet.","mapping":{"approve":"Approve mapping","environment":"Environment","mapValidate":"Map & validate","newDraft":"New mapping draft","previewValidate":"Preview / validate","requestApproval":"Request mapping approval","description":"Account code and cost_center must map exactly once. No wildcard or suspense rows.","previewResult":"Preview result","linesMapped":"Lines {{mapped}}/{{total}} mapped","validator":"validator {{version}}","gapToResolve":"1 gap to resolve.","gapsToResolve":"{{quantity}} gaps to resolve.","ruleCounts":"{{accounts}} accounts · {{dimensions}} dimensions","excludedFromGl":"excluded from GL"},"meteredEmpty":"No metered delivery operations yet.","pageDescription":"Self-serve generic webhook connector, mapping, validation, and dual-control activation.","pageTitle":"External GL","projectionsEmpty":"No commercial projections yet.","sync":{"approveRelease":"Approve release","batchReleased":"Batch released for delivery","description":"Close batch delivery, release gate, attempts, endpoint host, source/target totals, acknowledgement, and evidence. Acknowledged runs are immutable — no resend bypass.","downloadCsv":"Download exact 1C CSV","fallbackVerified":"Exact 1C CSV fallback verified","flagOffTitle":"GL sync delivery isn't enabled for this workspace","knownSafeQueued":"Known-safe retry queued","retryKnownSafe":"Retry known-safe","title":"Sync workspace","immutable":"immutable","postingKey":"posting key {{key}}…","endpointHost":"Endpoint host","attempts":"Attempts","sourceTotals":"Source totals","sourceTotalsValue":"{{debit}} / {{credit}} {{currency}} ({{lines}} lines)","artifactTotals":"Artifact totals","artifactTotalsValue":"{{debit}} / {{credit}} ({{lines}} lines)","sourceSha":"Source SHA-256","artifactSha":"Artifact SHA-256","externalPostingRef":"External posting ref","lastError":"Last error","statusTimeline":"Status timeline"},"syncRunsEmpty":"No sync runs for this connector yet. Runs appear here after the first export.","valuedCostEmpty":"No valued delivery cost yet.","errors":{"createConnectorFailed":"The connector could not be created.","connectionTestFailed":"The connection test did not succeed.","activationFailed":"The activation request failed.","approvalFailed":"The approval failed.","csvFallbackFailed":"The CSV fallback download failed.","createMappingDraftFailed":"The mapping draft could not be created.","saveMappingFailed":"The mapping could not be saved.","mappingActivationFailed":"The mapping activation request failed.","mappingApprovalFailed":"The mapping approval failed.","previewFailed":"The preview could not be produced.","syncReleaseApprovalFailed":"The sync release approval failed.","syncRetryFailed":"The sync retry failed.","disabled":"The external GL integration is switched off.","syncDeliveryDisabled":"GL sync delivery is switched off.","subledgerNotProvisioned":"The subledger customer is not provisioned.","financePermissionRequired":"This needs finance permission.","endpointRejected":"The endpoint was rejected ({{code}})."},"status":{"nonPostingTestRecorded":"Non-posting test recorded.","activationRequested":"Activation requested.","connectorActivated":"Connector activated.","mappingDraftCreated":"Mapping draft created.","mappingActivationRequested":"Mapping activation requested.","mappingActivated":"Mapping activated."}},"periodClose":{"actions":{"alreadyRequested":"A close is already requested for this period and is waiting for a different approver. You cannot request it twice.","approveClose":"Approve close","reopen":"Reopen period","requestClose":"Request period close","closeInProgress":"This period has an approved close that has not finished yet. You will see it complete, or a reason it stopped."},"alerts":{"actionFailed":"Action failed","success":"Success","notice":"Notice"},"audit":{"action":"Action","actor":"Actor","detail":"Detail","empty":"No audit entries for this period.","recorded":"Recorded","when":"When","title":"Progress and audit"},"filters":{"environment":"Environment","period":"Period","selectPeriod":"Select period"},"flagOff":{"description":"This area isn't turned on for your workspace. Contact LerniFlow support to enable it.","title":"Period close isn't enabled for this workspace"},"forbidden":{"description":"You do not have permission to view period close for this environment.","title":"Access denied"},"glExport":{"created":"Created","description":"Immutable CSV batches verified server-side before download.","download":"Download CSV","lines":"Lines","sha256":"SHA-256","title":"GL export","preview":"Preview","hidePreview":"Hide preview","previewLoading":"Loading preview…","previewEmpty":"This batch has a header but no export lines.","previewFailed":"The preview could not be loaded. Try again, or download the CSV.","evidence":"Source evidence","hideEvidence":"Hide evidence","downloaded":"Downloaded GL export ({{lines}} lines, SHA-256 {{sha}}…)."},"pageDescription":"Request, approve, and export the general-ledger close for an environment and period.","pageTitle":"Finance period close","preview":{"description":"Server-authoritative preview totals. Client does not recompute GL export math.","journalCount":"Journal count","noBlockers":"No blockers reported for this period.","none":"No preview","selectPrompt":"Select an environment and period to load the close preview.","totalCredit":"Total credit","totalDebit":"Total debit"},"status":{"approved":"Approved","closed":"Closed","closing":"Closing","completed":"Completed","failed":"Failed","open":"Open","pendingApproval":"Pending approval","processing":"Processing","reopened":"Reopened"},"blockers":{"title":"Blockers","heldReservation":"Reservation {{holdId}} still holds {{quantity}} of {{balanceField}} on record {{recordId}} (effect {{effectKey}}, source {{sourceRecordId}}). Release that reservation before this period can close.","heldEffect":"Allocation {{holdId}} still holds {{quantity}} of {{balanceField}} against record {{recordId}} (effect {{effectKey}}, source {{sourceRecordId}}). Release that hold before this period can close.","heldTruncated":"{{count}} more held items are not listed. Release the named ones, then review this period again.","release":"Release","releaseQuantity":"How much to release","releaseReason":"Why this hold is being released","releaseReasonHint":"A hold can be what stands between a period and its close. Say what happened.","releaseCancel":"Cancel","released":"The hold was released. The blockers below are re-read from the server."},"reopen":{"ownerOnly":"Reopening needs a workspace owner. Finance permission is not enough, because it undoes a close someone else approved.","provisional":"This period was closed and then reopened. Reports that treated the close as final are provisional until it is closed again.","reasonLabel":"Reason for reopening","recorded":"The period is open again. Journals posted while it was closed are listed below."},"interim":{"empty":"No journal was posted while this period was closed.","flag":"Flag","howToList":"An operator lists these rows from v_period_reopen_interim_postings for this period.","postedIntoClosed":"Posted into this period while it was closed","priorPeriodAdjustment":"Posted into a later period as a prior-period adjustment because this period was closed","title":"Postings while this period was closed"},"latePosting":{"title":"Late posting and prior-period adjustment","description":"Submit one usage event through the production pipeline. It is rated, assigned an economic period and posted by the same code path a workflow uses — nothing here writes a journal directly. An event whose moment falls in a closed period is refused and held below.","occurredAt":"When it happened (UTC, economic moment)","eventKey":"Correlation / idempotency key","connectorCode":"Connector code","quantity":"Quantity (requests)","submit":"Submit usage event","sameKeyNote":"Resubmitting the same key with the same details must not post twice. Change the key to post again.","quarantineTitle":"Held usage","quarantineEmpty":"No usage is being held for this environment.","colEvent":"Event","colReason":"Reason","colWhen":"Held","ppa":"Authorize as prior-period adjustment","ppaConfirm":"Authorize","ppaReasonPlaceholder":"Why this may post into the open period","ppaApplied":"Authorized. The event was posted into the open period against its original economic period.","notPpaResolvable":"Fix the cause and resubmit","knownConnectors":"This environment knows:","noConnectors":"This environment has no integration connectors, so an integration event cannot be rated here.","costCenter":"Cost centre","costCenterHint":"Required. An expense line posted without one blocks the period close and cannot be corrected afterwards, because a posted journal line is immutable."},"openPeriod":{"action":"Open next period","label":"Next period","noneDescription":"A period has to be open before usage can be rated or a month can be closed. Opening the first one starts the calendar at the current month.","noneTitle":"No accounting period exists yet","openFirst":"Open the first period","opened":"Period {{period}} is open."},"journals":{"title":"Journals in this period","description":"Every posted journal, and how a correction relates to what it corrected. A reversal does not erase an entry; it offsets it, so the gross total rises while the net effect is what stands.","when":"When","memo":"Entry","debit":"Debit","credit":"Credit","effect":"Effect","grossDebit":"Gross debit","netDebit":"Net debit (after reversals)","reversedBy":"Reversed by {{id}} on {{when}} by {{actor}}","reverses":"Reverses {{id}}, by {{actor}}","actorNotRecorded":"an actor that was not recorded","status":{"in_effect":"In effect","reversed":"Reversed","reversal":"Reversal"}},"closing":{"approved":"Approved. The close is running now and this page will update when it finishes.","description":"The close was approved and is running in the background. This page updates itself when it finishes; the period stays open until then.","title":"This period is closing"},"workspaceTitle":"Close workspace — {{period}}","requestsSummary":"Close requests ({{count}})","requestSubmitted":"Close request {{requestId}} submitted."},"rateCards":{"actions":{"activate":"Activate","approve":"Approve","review":"Review","submitForApproval":"Submit for approval","createNewVersion":"Create new version","submitNewVersion":"Submit new version for approval","cancelNewVersion":"Cancel","activateNow":"Activate now"},"columns":{"action":"Action","actor":"Who","effective":"Effective","kind":"Kind","notes":"Notes","rate":"Rate","rateCard":"Rate card","status":"Status","when":"When","actions":"Actions","pricing":"Pricing"},"empty":"No rate cards in this view.","fields":{"actual":"Actual","aiModel":"AI model","currency":"Currency","effectiveFrom":"Effective from (UTC)","effectiveTo":"Effective to (UTC, optional)","environment":"Environment","humanRole":"Human role","integrationConnector":"Integration connector","noSubjects":"This environment has no subjects of this type, so no rate can be created for it yet.","rateAmount":"Rate amount","ratedOn":"Rated on {{unit}} quantities reported by {{schema}}.","selectEnvironment":"Select environment","selectSubject":"Select subject","standard":"Standard","subject":"Subject","subjectType":"Subject type","unit":"Unit","unitUnusable":"A {{unit}} rate cannot be applied to {{quantityUnit}} quantities. Choose a unit the rating engine can convert.","valuation":"Valuation","utcHint":"Times are in UTC, not your local time: 22:00 here means 22:00 UTC."},"futureRatesNotice":"Future rates activate only on/after effective from.","history":{"empty":"No approval history yet.","title":"History"},"ownerOptInGl":"Owner opt-in to GL","pageDescription":"Submit, review, and approve human-role and AI-model rates. A distinct Finance approver is required.","pageTitle":"Finance rate cards","sandboxNotice":"Sandbox is simulated and excluded from GL","sandboxSimulated":"Simulated costs only, excluded from GL postings.","secondApproverNotice":"A second Finance approver must approve. Self-approval is blocked.","errors":{"subledgerNotProvisioned":"The subledger customer is not provisioned for this account.","saveFailed":"The rate card could not be saved.","sandboxOptInFailed":"The sandbox could not be opted into GL.","versionMustStartLater":"A new version must start after the version it replaces. Choose a later effective date.","effectiveInvalid":"Enter the effective date and time in UTC.","activation":{"permissionDenied":"Only the account owner or a member who manages billing can activate a rate. Ask a finance manager to activate it.","notYetEffective":"This rate becomes effective at {{effectiveFrom}}. It can be activated from then on.","notApproved":"Only an approved rate can be activated. Refresh the page: this rate may already be active or replaced.","backdateBlocked":"This rate cannot be activated: live journals already exist after its effective time. Create a new version that starts later.","notFound":"This rate card no longer exists or is not visible to you. Refresh the page.","transient":"The rate could not be activated just now. Try again in a moment.","fxCoverageMissing":"This rate cannot be activated: an exchange rate from its currency to the ledger's is missing for part of its dates, so its usage would be held as FX_NOT_FOUND. Open FX coverage to see the gaps and fix them."},"versionMustStartAfter":"Not saved: a new version must start after {{effectiveFrom}}, when the version it replaces starts. {{entered}} is not later. Your date is kept; choose a later one.","effectiveStoredDifferently":"Saved, but with Effective from {{stored}}, not {{entered}} as entered. Check the rate before it is approved."},"version":{"title":"New version of {{subject}}","description":"The current rate ({{rate}}) is approved and locked. Your changes become a new version that needs a second Finance approver. Once activated it replaces the current rate from its effective date; usage before that keeps the original rate.","submitted":"New version submitted for approval","lockedHint":"Approved rates are locked. Create a new version to change this rate.","number":"Version {{version}}","replaces":"replaces version {{version}}","mustStartAfterHint":"A new version must start after {{effectiveFrom}}.","submittedEffective":"New version submitted for approval, effective from {{effectiveFrom}}"},"alerts":{"actionFailed":"Action failed","saved":"Saved","requestFailed":"Request failed"},"customerLine":"Customer {{name}} · functional {{currency}}","optedIn":"Opted in {{when}}.","createTitle":"Create and submit a rate","tabs":{"pending":"Pending ({{count}})","approved":"Approved ({{count}})"},"auditTitle":"Approval audit","kinds":{"role":"Role","connector":"Connector","ai":"AI"},"distinctApproverRequired":"A distinct Finance approver is required","messages":{"sandboxOptedIn":"Sandbox opted into GL","submitted":"Rate submitted for approval","reviewed":"Rate reviewed","approved":"Rate approved","activated":"Rate activated","submittedEffective":"Rate submitted for approval, effective from {{effectiveFrom}}"},"approverNotice":{"title":"You can approve rates","description":"Approve pending rates below. Requesting a rate and activating an approved one need a finance manager: the account owner or a member who manages billing."},"activation":{"notYetEffective":"Can be activated from {{effectiveFrom}}.","awaitingManager":"Approved. A finance manager activates it once it is effective.","backdateBlocked":"Cannot be activated: a live journal at {{latestJournalAt}} is later than its effective time. Create a new version that starts after it.","fxCoverageMissing":"Cannot be activated yet: no exchange rate covers {{from}} → {{to}} for all of its dates. Add the missing coverage first."},"pricingState":{"pricing":"Pricing usage","awaitingActivation":"Not pricing: awaiting activation"},"awaitingActivation":{"title":"Approved rates not pricing usage yet: {{count}}","manager":"Approval does not activate a rate. Until you activate it, usage for its subject is held as unpriced (RATE_NOT_FOUND).","others":"Approval does not activate a rate. Until a finance manager (the account owner or a member who manages billing) activates it, usage for its subject is held as unpriced (RATE_NOT_FOUND).","review":"Show approved rates"},"readiness":{"heldEvents":"Held usage this rate would price: {{count}} events (RATE_NOT_FOUND). Activation prices usage recorded from then on; it does not release events already held.","heldEventsAtLeast":"Held usage this rate would price: at least {{count}} events (RATE_NOT_FOUND). Activation prices usage recorded from then on; it does not release events already held.","fxMissing":"No {{from}} → {{to}} exchange rate covers now. Usage priced by this rate would be held as FX_NOT_FOUND."},"nextStep":{"title":"Next step: activate the rate","description":"Approval does not activate a rate. It prices no usage until a finance manager activates it.","managersNotified":"The finance managers have been notified to activate it."},"notifications":{"awaitingActivation":"A rate card was approved. It prices no usage until a finance manager activates it."},"copy":{"ledger":{"simulated":"Simulated","live":"Live"},"status":{"draft":"Draft","pending_approval":"Pending approval","approved":"Approved, not active","active":"Active","activated":"Activated","superseded":"Superseded","rejected":"Rejected"},"review":{"subjectMissing":"No {{kind}} \"{{code}}\" in {{ledger}}. Add it there first; the copy never uses another ledger's subject.","subjectUnknown":"This subject is not visible in this ledger.","openEnded":"open-ended","fx":"Exchange rate","fxNone":"None needed: priced in {{currency}}","fxNeeded":"Needs a {{from}} → {{to}} exchange rate to price usage","blockedTitle":"This copy cannot be requested","blockedSubject":"The subject does not exist in {{ledger}}, so no rate can be copied there yet."},"scope":{"label":"Ledgers","thisOnly":"{{ledger}} only","thisOnlyHint":"The rate prices usage in this ledger.","both":"Both ledgers ({{ledger}} and {{other}})","bothHint":"One request, one approval: both cards activate together or not at all. They are independent afterwards."},"provenance":{"package":"Requested for both ledgers, with {{other}}","copied":"Copied from {{ledger}}","copiedVersion":"Copied from {{ledger}} version {{version}}"},"actions":{"copyTo":"Copy to {{ledger}}","requestCopy":"Request the copy for approval","submitBoth":"Submit both for approval","approveBoth":"Approve both ledgers","reviewBoth":"Review both ledgers","activateBoth":"Activate both ledgers"},"dialog":{"title":"Copy this rate to {{ledger}}","description":"The copy is a new rate in {{ledger}} with the same terms. Check both cards before you request it.","ownApproval":"The copy needs its own approval and activation. Later changes to either card do not reach the other.","alreadyCopied":"Copies of this rate already requested in {{ledger}}: {{count}}."},"package":{"title":"Approve a rate for both ledgers","description":"This request creates one card in each ledger. Check both before approving.","oneApprovalNote":"One approval approves both cards. They are then activated together, or not at all.","selfApprovalNote":"A single-operator exception decides one card per confirmation: this approves the {{ledger}} card, and the other ledger's card needs its own confirmation. Both still activate together.","waitingForSibling":"Activates together with the {{other}} card, which is still waiting for approval."},"messages":{"copied":"Copy requested in {{ledger}}. It is waiting for approval there.","bothSubmitted":"Submitted for approval in both ledgers (this one and {{other}}).","packageApproved":"Approved for both ledgers. Activate them together.","packageActivated":"Activated in both ledgers."},"fromUnpriced":{"title":"Copy the {{code}} rate from {{other}} to {{ledger}}","description":"Usage in {{ledger}} is unpriced because the {{code}} rate exists only in {{other}}. Choose the rate to copy:","none":"{{other}} has no approved or active rate for {{code}} to copy. Create one in this ledger instead.","managerOnly":"A finance manager (the account owner or a member who manages billing) can copy it."},"audit":{"package_approved":"Approved for both ledgers","package_activated":"Activated in both ledgers"},"errors":{"subjectMissing":"The {{subjectKind}} \"{{code}}\" does not exist in the {{ledger}} ledger. Add it there first, then copy the rate.","notDecided":"Only an approved or active rate can be copied. For a new rate, choose \"Both ledgers\" when you create it.","noOtherLedger":"This workspace has no other ledger to copy to.","packageIncomplete":"Both cards of a two-ledger rate must be approved before either is activated.","notInPackage":"This rate is not part of a two-ledger request.","permissionDenied":"Only a finance manager (the account owner or a member who manages billing) can do this.","failed":"The rate could not be copied just now. Try again in a moment."}}},"runCost":{"columns":{"driver":"Driver","flags":"Flags","retry":"Retry","step":"Step","base":"Base","presentation":"Presentation"},"empty":"No posted run cost yet. Complete a human step, AI run, integration call, or infra usage event after Finance activates an actual rate.","errors":{"overlayUnavailable":"Couldn't load this run's cost. The other figures on this page are unaffected; try again in a few minutes.","fxRateNotFound":"FX rate not found","unavailable":"Run cost unavailable","fxRateNotFoundBody":"No exact-date snapshot for {{asOfDate}} {{base}}→{{presentation}} ({{fxSource}}). Import that snapshot — latest, inverse, and triangulation are not used."},"filters":{"asOfDate":"As-of date","environment":"Environment","fxSource":"FX source","noRunSelected":"No run selected","presentationCurrency":"Presentation currency","run":"Run","selectRun":"Select a run"},"flags":{"exclGl":"excl. GL","glEligible":"GL-eligible","simulated":"simulated","live":"live"},"fx":{"description":"Finance-only. Snapshots are append-only and keyed by exact date, pair, and source.","from":"From","importFailed":"Import failed","importSnapshot":"Import snapshot","pair":"Pair","rate":"Rate","source":"Source","title":"FX snapshot import","asOf":"As-of","to":"To"},"metrics":{"envelopesReceived":"Envelopes received","journalsPosted":"Journals posted","quarantined":"Quarantined","usageRows":"Usage rows"},"pageDescription":"Posted run cost by step, with presentation-currency conversion and FX snapshot management.","pageTitle":"Run cost","fxSources":{"spot":"Spot","periodEnd":"Period end","contract":"Contract"},"perRunCost":"Per-run cost","overlayRate":"Rate {{rate}}","fromStoredSnapshot":"from stored FX snapshot","baseNoFxRow":"base (no FX row)","retryTimes":"retry × {{quantity}}","total":"Total","readOnly":"Read-only: you can see each run and its totals. Rates and reconciliation are visible to finance roles.","pricing":{"title":"Events in this run","openRun":"Open the run","unknownEnvironment":"another environment","noPricedEvents":"No priced events yet","noPricedEventsUnpriced":"Usage from this run reached this environment but was not priced ({{total}} events). The reason for each is below.","noPricedEventsElsewhere":"Nothing from this run reached this environment. Its usage was recorded in another ledger environment, shown below.","noPricedEventsNoUsage":"No usage from this run has reached the ledger yet. Usage is recorded when a step with a pricing role completes, an AI call runs or an integration is called.","columns":{"when":"When (UTC)","step":"Step","subject":"Subject","quantity":"Quantity","rateCard":"Rate card","amount":"Amount"},"subjectKinds":{"human_role":"Pricing role","ai_model":"AI model","integration_connector":"Connector","infra":"Infrastructure"},"rateCardLine":"Version {{version}} · {{rate}}","unpricedTitle":"Not priced","diagnosis":{"rateApprovedNotActive":"A rate covered this moment (version {{version}}, effective {{effectiveFrom}}), but it was approved and not yet activated when the event happened. Activate it on Rate cards; the held event can then be released for pricing.","ratePendingNotActive":"A rate covered this moment (version {{version}}, effective {{effectiveFrom}}), but it was still waiting for approval when the event happened.","rateStartsLater":"The rate for this subject starts at {{effectiveFrom}} (version {{version}}), after this event happened.","rateInOtherEnvironment":"This event was recorded in {{eventEnvironment}}, but this subject has a rate only in {{environment}}. A rate prices events of its own environment only.","noRate":"This subject has no rate. Create and activate one on Rate cards.","nothingToPrice":"Nothing to price: no active time was recorded for this step (it was completed without being claimed or assigned), so the event carried 0. A rate card cannot price it; the time it waited is in Usage cost.","rateInForce":"A rate is in force for this moment now (version {{version}}, effective {{effectiveFrom}}); it was not when the event was rated. Re-rate the held event from Unpriced usage.","noPeriod":"This ledger has no accounting period for {{date}}. Create the period on Period close; the held event can then be posted.","periodClosing":"The accounting period {{period}} covering the event is closing; nothing more posts to it.","periodClosed":"The accounting period {{period}} covering the event is closed. Post it as a prior-period adjustment on Period close."},"reasons":{"RATE_NOT_FOUND":"No active rate for this subject at the event time.","RATE_AMBIGUOUS":"More than one rate applies at the event time.","PERIOD_CLOSED":"The accounting period of the event time is closed.","FX_NOT_FOUND":"No exchange rate from the rate's currency to the ledger currency at the event time.","DIMENSION_MISSING":"This ledger does not know the subject: no pricing role, model or connector has that code.","FEATURE_DISABLED":"Usage pricing is not enabled for this environment.","SCHEMA_INVALID":"The event did not match its schema.","ENV_INVALID":"The event named an environment this ledger does not have.","other":"Not priced: {{reason}}."},"elsewhere":"{{environment}}: {{priced}} priced, {{unpriced}} not priced.","viewInEnvironment":"View in {{environment}}","unavailable":"This run's events could not be read just now. The rest of the page is unaffected; try again in a few minutes.","noRateInForce":"none in force at the event time","noPricedEventsNothingToPrice":"Every event from this run that reached this environment had nothing to price ({{total}} events): they carried 0, so nothing was posted and nothing is held.","closedTitle":"Nothing to price (closed)","closedBadge":"Nothing to price","closedReason":"Closed: the event carried 0 (no active time was recorded for this step), so there was nothing to price. Nothing was posted and nothing is held; the time it waited is in Usage cost.","elsewhereWithClosed":"{{environment}}: {{priced}} priced, {{unpriced}} not priced, {{closed}} with nothing to price."}},"actions":{"approve":"Approve"},"errors":{"actionFailed":"That could not be completed.","closeAlreadyRequested":"A close is already in progress for this period. Only one can be active at a time.","financePermissionRequired":"You do not have permission to close periods in this workspace.","periodCloseDisabled":"Period close is switched off in this environment. Ask LerniFlow to enable it before requesting a close.","periodClosedPosting":"That period is closed, and a reversal posts into the same period. Reopen it, or raise a prior-period adjustment.","periodNotOpen":"This period is not open, so a close cannot be requested for it.","reopenReasonRequired":"A reason is required to reopen a closed period.","reopenRoleRequired":"Only a workspace owner can reopen a closed period.","selfApprovalNotAllowed":"You requested this close, so somebody else has to approve it.","subledgerNotProvisioned":"The subledger customer is not provisioned for this account.","ppaReasonRequired":"A reason is required to authorize a prior-period adjustment.","rerateReasonRequired":"A reason of 1 to 1000 characters is required to re-rate held usage.","rerateNotEligible":"Only usage held for a missing rate, overlapping rates, a missing exchange rate or a missing model can be re-rated. A closed period is released through a prior-period adjustment.","rerateRunNotFound":"That re-rate run was not found for this account.","rerateOperatorRequired":"The support path must name the platform operator who runs it.","operatorEvent":{"eventKeyRequired":"A correlation key is required.","connectorRequired":"A connector code is required.","quantityInvalid":"Quantity must be a whole number greater than zero.","occurredAtInvalid":"That is not a valid date and time.","costCenterRequired":"A cost centre is required. Without one the expense line would block the period close and could not be corrected afterwards."},"closeNotPendingApproval":"That close request is no longer awaiting approval — it may already be approved, or have been cancelled. Refresh to see its current state.","journalAlreadyReversed":"This entry has already been reversed. Its correction is on the chain below.","journalNotPosted":"Only a posted entry can be reversed."},"operatorEvent":{"outcome":{"posted":"Posted. The event was rated and posted to the ledger.","duplicate":"Already posted. The same key and details were submitted before, so nothing was posted twice.","periodClosed":"Held: the economic period for that moment is closed. Authorize it below as a prior-period adjustment, or reopen the period.","rateNotFound":"Held: this workspace has no active rate card for that connector. Add one under Finance → Rate cards and resubmit.","rateAmbiguous":"Held: more than one rate card matches that connector. Narrow their applicability and resubmit.","fxNotFound":"Held: no exchange rate was available for that currency and date.","dimensionMissing":"Held: a required dimension for that event is missing.","schemaInvalid":"Held: the event did not match the usage schema.","featureDisabled":"Held: usage rating is disabled for this workspace.","envInvalid":"Held: that environment is not valid for rating.","quarantined":"Held by the pipeline. See the reason below.","notYetProcessed":"Submitted. The pipeline has not reached it yet — reload in a moment to see the outcome.","payloadMismatch":"That correlation key already belongs to a different event. Nothing was posted. Use a new key, or resubmit the original details.","alreadyProcessed":"Already processed. This key was resolved by an earlier submission and nothing was posted again."}},"journals":{"pageTitle":"Journals","pageDescription":"Find a posted journal by account, description, amount, correlation key or id — see what it was made of, whether it was corrected, and whether it reached the general ledger.","empty":"No journals match. Try a different correlation key, or clear the filters.","ppa":"Prior-period adjustment","inspect":"Inspect","hide":"Hide","filters":{"environment":"Environment","period":"Period","allPeriods":"All periods","search":"Search journals","searchPlaceholder":"Account code, description, amount, correlation key, or journal id","apply":"Search","effect":"Effect","allEffects":"Any effect"},"columns":{"when":"When","key":"Correlation key","posting":"Posting period","economic":"Economic period","debit":"Debit","credit":"Credit","effect":"Effect","account":"Account","costCentre":"Cost centre"},"effect":{"in_effect":"In effect","reversed":"Reversed","reversal":"Reversal"},"detail":{"journalId":"Journal id","memo":"Description","exported":"Exported in","notExported":"Not yet exported","runId":"Run"},"lineage":{"reversedBy":"This entry was reversed by {{actor}}.","reverses":"This entry reverses another, by {{actor}}.","openReversal":"Open the reversing entry","openOriginal":"Open the entry it reverses"},"chain":{"title":"Correction chain — {{count}} entries, oldest first","here":"you are here","open":"Open","by":"by {{actor}}"},"reverse":{"action":"Reverse this journal","explain":"A reversal is an additional entry, not an erasure: the original stays on the ledger and both remain visible. It posts into the same period, so the period must be open.","reason":"Why this entry is being reversed","cancel":"Cancel"}},"serviceCatalog":{"pageTitle":"Service catalog","pageDescription":"What your practice sells, and what you have sold to each client.","addOfferingTitle":"Add an offering","baseAmountHint":"A list price for reference. Nothing is billed here.","nameLabel":"Offering name","pricingModelLabel":"Pricing model","baseAmountLabel":"Base amount","currencyLabel":"Currency","saveOffering":"Save offering","attachEngagementTitle":"Record an engagement","contractValueHint":"The value you agreed with the client. Not recognized revenue, not cash.","clientLabel":"Client","selectClient":"Select a client…","offeringLabel":"Offering","noOffering":"No offering","contractValueLabel":"Contract value","attachEngagement":"Record engagement","noClients":"You have no delegated clients to record an engagement against yet.","offeringsHeading":"Offerings","offeringsEmpty":"No offerings yet.","engagementsHeading":"Engagements","engagementsEmpty":"No engagements yet.","notRevenueNote":"Contract value is the agreed figure — not recognized revenue and not cash.","unknownClient":"Unknown client","clientRequired":"Choose a client first.","pricingModel":{"recurring_retainer":"Recurring retainer","fixed_fee":"Fixed fee","time_and_materials":"Time and materials","usage_outcome":"Usage or outcome","mixed":"Mixed"},"offeringDenied":"You cannot manage the catalog for this practice.","nameRequired":"An offering needs a name.","engagementDenied":"You cannot record an engagement for this client.","offeringFailed":"That offering could not be saved. Please try again.","engagementFailed":"That engagement could not be saved. Please try again."},"economicLedger":{"costPageTitle":"Delivery cost","costPageDescription":"What each engagement costs to serve. Estimates and actuals stay distinct; correct a mistake with a reversal.","revenuePageTitle":"Revenue and collections","revenuePageDescription":"What each engagement has booked, billed, recognized, and collected. Correct a mistake with a reversal.","engagementLabel":"Engagement","selectEngagement":"Select an engagement…","kindLabel":"Type","amountLabel":"Amount","record":"Record","noEngagements":"Record an engagement in the service catalog first.","empty":"No events recorded yet.","reverse":"Reverse","reversalTag":"reversal","engagementRequired":"Choose an engagement first.","kind":{"planned":"Planned","committed":"Committed","actual":"Actual","allocated":"Allocated","booked":"Booked","billed":"Billed","recognized":"Recognized","collected":"Collected"},"immutable":"An economic event cannot be edited. Record a reversal instead.","recordDenied":"You cannot record economic events for this client.","notFound":"That economic event was not found.","alreadyReversed":"That event has already been reversed.","badKind":"That is not a valid event type.","badAmount":"Enter a valid amount.","recordFailed":"That event could not be recorded. Please try again.","reverseFailed":"That event could not be reversed. Please try again.","revenueNotSystemOfRecord":"This is your practice revenue and collections view — not a tax invoicing system of record. Approved amounts can be exported to your accounting system."},"commissions":{"pageTitle":"Commissions","pageDescription":"Deterministic, versioned sales commissions — separate from revenue and profit. Every line traces to an eligible event; a rerun never double-pays.","notRevenueNote":"Commissions are compensation, not revenue or profit. The engine is authoritative; a plan change is a new version, never an edit.","planFormTitle":"New commission plan","nameLabel":"Plan name","versionLabel":"Version","eligibilityLabel":"Eligible on","baseRateLabel":"Base rate (fraction, e.g. 0.05)","tierFromLabel":"Tier from amount (optional)","tierRateLabel":"Tier rate (optional)","currencyLabel":"Currency","savePlan":"Save plan","plansHeading":"Plans","plansEmpty":"No plans yet.","calculate":"Calculate this period","runsHeading":"Statements","runsEmpty":"No statements yet.","statusLabel":"Status","moveTo":"Move to","totalsLabel":"Total","lineTraceHeading":"Line trace","base":"Base","rate":"Rate","commission":"Commission","tier":"Tier","nameRequiredUi":"Enter a plan name.","status":{"draft":"Draft","calculated":"Calculated","reviewed":"Reviewed","approved":"Approved","payable":"Payable","paid":"Paid","disputed":"Disputed","adjusted":"Adjusted","reversed":"Reversed"},"planDenied":"You cannot manage commission plans for this practice.","nameRequired":"A commission plan needs a name.","planImmutable":"A commission plan cannot be edited. Create a new version.","lineImmutable":"A commission line cannot be changed. Rerun or adjust the run.","runImmutable":"Only a commission run’s status may change.","runDenied":"You cannot run commissions for this practice.","runNotFound":"That commission run was not found.","planNotFound":"That commission plan was not found.","planFailed":"That plan could not be saved. Please try again.","calcFailed":"That calculation could not be completed. Please try again.","transitionFailed":"That status could not be changed. Please try again.","periodTotal":"Period total","noChange":"No new eligible events — nothing to record.","runKind":{"original":"Original","adjustment":"True-up"},"reasonLabel":"Reason","sourceLabel":"Client · engagement","whenLabel":"Event time","sourceUnknown":"Unknown source","reason":{"new_revenue":"New recognized revenue","reversal":"Revenue reversal","unknown":"Unknown source"}},"cockpit":{"pageTitle":"Profitability","pageDescription":"Revenue, cost, and margin reconciled from the economic ledger. Actuals only; contracted value is not revenue.","asOf":"As of","portfolioHeading":"Portfolio","byClientHeading":"By client","client":"Client","contracted":"Contracted","recognizedRevenue":"Recognized revenue","collectedRevenue":"Collected","cost":"Delivery cost","margin":"Gross margin","marginPct":"Margin %","commissions":"Commissions (all statements)","na":"N/A","empty":"No economic activity yet.","reconciledNote":"Every figure sums ledger events; recognized revenue and cost are actuals.","contractedNote":"Contracted is the agreed value — not recognized revenue.","unknownClient":"Unknown client","portfolioTotal":"Portfolio total"},"exceptions":{"pageTitle":"Operations","pageDescription":"Actionable exceptions across your practice, most urgent first.","empty":"No open exceptions. Nothing needs attention right now.","unknownClient":"a client","severity":{"high":"High","medium":"Medium","low":"Low"},"kind":{"engagement_no_activity":{"label":"Engagement with no activity","hint":"Record cost or revenue for this engagement, or end it."},"cost_without_revenue":{"label":"Cost without recognized revenue","hint":"Recognize revenue for this engagement, or check the cost is correct."},"disputed_commission":{"label":"Disputed commission statement","hint":"Resolve the dispute, then recalculate or adjust the statement."}},"subjectClient":"Client: {{name}}","subjectPeriod":"Period: {{period}}"},"serviceUnavailable":{"title":"Finance figures are unavailable right now","description":"The finance service did not answer, or it has no data for this workspace yet. Nothing is shown as zero and your operations are not affected. Try again in a few minutes."},"usageCost":{"pageTitle":"Usage cost","pageDescription":"What your work cost: usage priced with your approved rate cards, by workflow, step, module and entity.","states":{"forbidden":{"title":"Finance permission required","description":"Only the account owner and members with finance permission can see usage cost. Ask an owner for access."},"not_configured":{"title":"Usage cost is not connected yet","description":"The Tenant Economics Service is not configured for this environment, so no figures are shown. Nothing is being counted as zero."},"unavailable":{"title":"Usage cost is unavailable right now","description":"The Tenant Economics Service did not answer. Your operations are not affected; try again in a few minutes."}},"filters":{"active":"Showing only","remove":"Remove filter {{name}}","clearAll":"Clear filters","workflowId":"Workflow","stepKey":"Step","module":"Module","feature":"Feature","entityId":"Entity","meter":"Usage type","period":"Period","from":"From","to":"To","apply":"Apply","billable":"Billable","billableAll":"Billable and non-billable","billableOnly":"Billable only","nonBillableOnly":"Non-billable only","groupBy":"Group by"},"periods":{"last_7_days":"Last 7 days","last_30_days":"Last 30 days","this_month":"This month","last_month":"Last month","custom":"Custom range"},"groupBy":{"workflow":"Workflow","step":"Step","module":"Module","feature":"Feature","entity":"Entity","meter":"Usage type","day":"Day"},"costBehavior":{"variable":"All usage costs shown here are variable: they grow with use. Fixed costs are added with cost models."},"labels":{"unknownWorkflow":"Workflow no longer available","noWorkflow":"Not attributed to a workflow","noStep":"Not attributed to a step","noModule":"No module","noFeature":"No feature","unknownEntity":"Entity no longer available","noEntity":"Not attributed to an entity","noMeter":"Unknown usage","noDay":"No date","noSubject":"Not identified"},"modules":{"workflow":"Workflows","integrations":"Integrations","storage":"Storage","assistant":"Assistant","insights":"Insights","email":"Email","forms":"Forms","knowledge_base":"Knowledge base","public_site":"Public site","theme_studio":"Theme studio","agent_definition":"Agents"},"features":{"workflow_agent_step":"AI workflow step","workflow_human_step":"Human workflow step","workflow_assistant_draft":"Workflow drafting assistant","integration_rest_call":"REST integration call","assistant_personal":"Personal assistant","email_intent_classification":"Email classification","forms_schema_draft":"Form drafting","insights_business_profile":"Business profile","insights_concept_mapping":"Concept mapping","insights_dashboard_draft":"Dashboard drafting","insights_recommendations":"Recommendations","knowledge_base_translation":"Knowledge base translation","public_site_draft":"Public site drafting","theme_studio_assistant":"Theme assistant","agent_definition_soul_draft":"Agent drafting"},"meters":{"ai_model_call":"AI calls","ai_model_call_refused":"Refused AI calls","human_step_time":"Human time","integration_call":"Integration calls","infra_storage":"Storage"},"freshness":{"current":"Current","stale":"Stale","needs_attention":"Needs attention","asOf":"As of {{time}}","noData":"No usage has been received yet","lastReceived":"Last received {{time}}","staleHelp":"The pipeline has not reported in over {{minutes}} minutes; figures may be behind.","quarantined":"{{value}} events held for review","processing":"Processing","processingHelp":"{{value}} events are still processing."},"completeness":{"incomplete":"Some usage has no rate yet"},"kpis":{"priced":"Priced cost","pricedEvents":"{{value}} priced events","billable":"Billable cost","billableEvents":"{{value}} billable events","nonBillable":"Non-billable cost","nonBillableEvents":"{{value}} non-billable events","unpriced":"Unpriced usage","unpricedHelp":"Events without an approved rate: {{billable}} billable, {{nonBillable}} non-billable. They are not counted as zero.","unpricedNone":"All usage in this view has a rate.","nothingPriced":"No priced usage"},"reasons":{"no_rate":"No approved rate","ambiguous_rate":"More than one rate applies","unit_mismatch":"Rate unit does not match","subject_unknown":"Role, model or connector not recorded","quantity_unreported":"Quantity not reported","no_cost_basis":"Nothing to cost","platform_usage":"Platform usage","no_component_rate":"No rate for this part"},"groups":{"empty":"No usage in this period for the selected filters.","caption":"Usage cost by {{groupBy}}","cost":"Priced cost","events":"Events","unpriced":"Unpriced","actions":"Actions","split":"({{billable}} billable, {{nonBillable}} non-billable)","drill":"Open","drillLabel":"Open {{name}}","evidence":"Evidence","evidenceLabel":"Show evidence for {{name}}","truncated":"Only the 200 largest groups are shown. Narrow the filters to see the rest."},"evidence":{"title":"Evidence","description":"Each amount traced to its event, quantity, rate card version and currency.","close":"Close evidence","empty":"No events match these filters.","billable":"Billable","nonBillable":"Non-billable","correction":"Correction","workflow":"Workflow","step":"Step","received":"Received","fx":"Currency conversion","fxApplied":"Converted","fxNone":"None: shown in the rate card's currency","rate":"Rate {{rate}} per {{unit}}, effective {{from}}","more":"Show older events"},"components":{"ai_tokens":"Tokens","ai_retries":"Retries","human_active_time":"Active time","integration_requests":"Requests","ai_refused":"Refused call","platform_usage":"Platform usage","reported_amount":"Reported amount"},"units":{"token":"tokens","request":"requests","retry":"retries","call":"calls","second":"seconds","hour":"hours","millisecond":"milliseconds","byte":"bytes","message":"messages","object":"items"},"status":{"priced":"Priced","unpriced":"Unpriced","not_applicable":"Not costed"},"perUnit":{"token":"token","request":"request","retry":"retry","call":"call","second":"second","hour":"hour","millisecond":"millisecond","byte":"byte","message":"message","object":"item"},"pricingSetup":{"title":"Pricing setup needed","description":"Some usage in this view has no cost yet. Each item below says what is missing and where to fix it; usage is priced as soon as it is.","subjectKinds":{"human_role":"role","ai_model":"model","integration_connector":"connector"},"ledgers":{"sandbox":"Sandbox","production":"Production"},"noPricingRole":{"title":"Human time with no pricing role ({{count}} events)","body":"These steps are captured by roles that are not mapped to a pricing role, so a rate card cannot price their time:","step":"{{step}}: captured by {{roles}} ({{count}} events)","stepNoRoles":"{{step}}: no capture role is set on the step ({{count}} events)","action":"Map roles to pricing roles"},"noRate":{"title":"No rate for {{kind}} {{name}}","body":"{{count}} events have no active rate in the {{ledger}} ledger that covers when the work happened.","approvedNotActive":"A rate for {{name}} is approved but not active yet. Activate it on Rate cards to price this usage.","pendingApproval":"A rate for {{name}} is waiting for approval.","otherLedger":"A rate for {{name}} exists in the {{otherLedger}} ledger, but this environment prices with the {{ledger}} ledger.","effectiveLater":"The rate for {{name}} starts after this work happened. Usage before its start date stays unpriced.","action":"Open Rate cards"},"other":{"body":"{{count}} events are affected."}}},"costAllocation":{"previewLabel":"Preview of a cost model, not actual cost","actualLabel":"Actual cost","kind":{"preview":"Preview — not actual","actual":"Actual"},"monthRange":"{{from}} to {{to}}","previewNote":"Preview changes before they affect actual costs. These figures apply the model on screen to that month's recorded activity; nothing is saved and nothing changes until the model is approved.","noModel":{"title":"No approved cost model for part of this period","description":"No cost model applied in {{months}}. Only direct usage cost is shown for those months."},"kpi":{"direct":"Direct cost","directHelp":"Metered usage priced with your rate cards","allocatedFixed":"Allocated fixed","allocatedFixedHelp":"Fixed costs assigned by driver","allocatedVariable":"Allocated variable","allocatedVariableHelp":"Rates per driver unit","unallocated":"Unallocated","unallocatedHelp":"No driver quantity to assign it by","total":"Business total","totalHelp":"Direct, allocated and unallocated"},"unallocatedTitle":"Some cost could not be assigned","unallocatedNote":"Unallocated costs remain in the business total until you choose a driver.","otherCurrencies":"Direct cost in {{currencies}} is shown on its own and not used as a driver in {{currency}}.","unnamed":"Not named","pools":{"title":"Where each cost went","directTo":"directly to {{name}}","equalAcross":"equal split across {{target}}","byDriver":"by {{driver}} across {{target}}","barLabel":"{{allocated}} of {{total}} allocated","allocated":"Allocated","unallocated":"Unallocated","of":"of","variable":"Variable portion: {{amount}} for {{quantity}} {{unit}}","targets":"Received by: {{value}}","driverQuantity":"driver total {{quantity}} {{unit}}"},"reasons":{"no_driver_quantity":"No activity was measured for this driver, so this amount stays unallocated.","no_targets":"Nothing matched this cost's targets, so this amount stays unallocated."},"rows":{"caption":"Full cost by {{dimension}}","empty":"No cost recorded for this period.","unattributed":"Not attributed to a {{dimension}}","elsewhere":"{{amount}} allocated to another dimension","truncated":"Showing the 200 largest. Narrow the period to see the rest."},"dimensions":{"entity":"Entity","record":"Record","workflow":"Workflow","step":"Step","business":"Business"}},"costExplorer":{"pageTitle":"Cost explorer","pageDescription":"The full cost of your work by entity, record, workflow, step and business: usage cost plus the costs you declared, allocated by your approved cost model.","dimensionLabel":"Show cost by","from":"From month","to":"To month","apply":"Apply","maxMonths":"Up to 12 months at a time. Amounts are in each model's currency.","linkModels":"Cost models","linkUsage":"Usage cost evidence","states":{"forbidden":{"title":"Finance permission required","description":"Only the account owner and members with finance permission can see costs. Ask an owner for access."},"not_configured":{"title":"Cost figures are not connected yet","description":"The Tenant Economics Service is not configured for this environment, so no figures are shown. Nothing is being counted as zero."},"unavailable":{"title":"Cost figures are unavailable right now","description":"The Tenant Economics Service did not answer. Your operations are not affected; try again in a few minutes."},"invalid":{"title":"This model cannot be previewed yet","description":"Some costs are incomplete. Check each cost's amounts, driver and target, then preview again."}},"lineage":{"title":"Cost models in this view","checkedAt":"Allocation service last checked for cost models:","version":"{{name}} · v{{version}}","states":{"applied":"Applied","other_ledger":"Other ledger","processing":"Processing","failed":"Delivery failed"},"ledgers":{"sandbox":"Sandbox ledger","production":"Production ledger"},"approvedAt":"Approved","effective":"Effective","effectiveFrom":"From {{from}}","effectiveRange":"{{from}} to {{to}}","publishedAt":"Sent","receivedAt":"Received by allocation","appliedTo":"Allocates the figures below for {{months}}.","otherLedger":"Approved for the {{ledger}}, but this environment allocates with the {{allocationLedger}}, so it will not apply here.","openDesigner":"Open the cost model designer for the {{ledger}}","processing":"On its way to the allocation service. The figures update as soon as it is received.","processingRetrying":"Delivery is being retried (attempt {{attempts}}). The figures update as soon as it is received.","refresh":"Check again","failed":"This version could not be delivered to the allocation service.","retry":"Retry delivery","retryNeedsManager":"Ask an owner or billing manager to retry delivery.","noneApplied":{"title":"No approved model is allocating this view yet","description":"Each approved version above says why. Unallocated cost is shown in the totals until a version applies."},"errors":{"retryFailed":"Delivery could not be retried. Try again in a few minutes.","notDecided":"Only an approved cost model version can be delivered."}}},"costModels":{"pageTitle":"Cost models","pageDescription":"Declare what your business spends — rent, salaries, software — and how each cost is shared across your entities, records, workflows and steps.","states":{"forbidden":{"title":"Finance permission required","description":"Only the account owner and members with finance permission can see cost models. Ask an owner for access."},"not_provisioned":{"title":"Finance is not set up for this workspace","description":"Finance environments have not been provisioned yet, so there is nowhere to keep a cost model."}},"environment":"Environment","environments":{"sandbox":"Sandbox","production":"Production"},"someone":"A team member","defaultName":"Cost model","noActive":{"title":"No cost model yet","description":"Without a model, only direct usage cost is counted. Declare your costs to see the full cost of your work."},"statuses":{"draft":"Draft","pending_approval":"Waiting for approval","active":"Active","superseded":"Replaced","rejected":"Rejected"},"activeSince":"Version {{version}}, in force from {{month}}. Approved by {{approver}}.","openExplorer":"See allocated costs","newVersion":"Change the model","createFirst":"Create a cost model","pendingBy":"Submitted by {{person}} to take effect from {{month}}.","approve":"Approve and activate","withdraw":"Withdraw","reject":"Reject","rejectReason":"Why is it rejected?","confirmReject":"Reject this version","draftBy":"Draft by {{person}}. It has not been submitted.","continueDraft":"Continue editing","discard":"Discard draft","designer":{"title":"Cost model designer","description":"Build each cost step by step. The picture on the left shows where every cost will go.","pools":"Costs in this model","addPool":"Add a cost","removePool":"Remove this cost"},"fields":{"modelName":"Model name","currency":"Currency","startMonth":"Takes effect from","poolName":"Name of this cost","poolNamePlaceholder":"e.g. Office rent","category":"What kind of cost is it?","behavior":"How does it behave?","fixedAmount":"Amount per month ({{currency}})","variableRate":"Rate per {{unit}} ({{currency}})","target":"What does it land on?","method":"How is it shared?","driver":"Share it in proportion to","filterWorkflow":"Only activity of workflow","filterEntity":"Only activity of entity","anyWorkflow":"Any workflow","anyEntity":"Any entity","directTarget":"Which {{target}}?","chooseOne":"Choose one"},"currencyLocked":"A model keeps the currency its approved versions use.","steps":{"source":"Choose the cost","behavior":"Fixed, variable or mixed","target":"Choose the targets","driver":"Choose how it is shared","preview":"Preview with last month's activity"},"previewIntro":"Preview changes before they affect actual costs. See what each target would receive and what would stay unallocated.","previewMonth":"Month of activity","previewBy":"Show by","runPreview":"Preview","previewUnavailable":"Previews need the Tenant Economics Service, which is not connected in this environment. You can still submit the model.","submit":"Submit for approval","saveDraft":"Save draft","cancel":"Cancel","fixProblems":"Complete every cost before saving.","history":{"title":"Versions and history","range":"{{from}} to {{to}}","from":"From {{from}}","actions":{"draft_saved":"Saved as a draft by {{person}}","submitted":"Submitted for approval by {{person}}","approved":"Approved and activated by {{person}}","rejected":"Rejected by {{person}}","superseded":"Replaced by a newer version, approved by {{person}}","discarded":"Draft discarded by {{person}}"}},"toasts":{"saved":"Draft saved","submitted":"Submitted for approval","approved":"Cost model approved and active","rejected":"Version rejected","discarded":"Draft discarded"},"errors":{"permission":"You need finance permission to do this.","invalid":"Some costs are incomplete or inconsistent. Check each cost and try again.","reference":"A cost names a workflow, step or entity that no longer exists.","openVersion":"Another version is already being prepared for this environment.","notDraft":"This version was already submitted; changes need a new version.","notPending":"This version is no longer waiting for approval.","draftOfAnother":"Only the person who started this draft can change it.","startsBeforeCurrent":"A new version must start after the month the current one started.","reasonRequired":"Say why the version is rejected.","currencyFixed":"A new version must use the same currency as the approved ones.","saveFailed":"The cost model could not be saved. Try again.","notProvisioned":"Finance is not set up for this workspace."},"categories":{"salary":"Salaries","rent":"Rent","software":"Software","insurance":"Insurance","contract":"Contracts","equipment":"Equipment","infrastructure":"Infrastructure","other":"Other"},"behaviors":{"fixed":"Fixed","variable":"Variable","mixed":"Mixed"},"behaviorHelp":{"fixed":"The same amount every month, whatever the activity.","variable":"Grows with activity: a rate per unit of the driver.","mixed":"A fixed monthly part plus a rate per unit, kept apart."},"targets":{"entity":{"plural":"Entities","singular":"entity","help":"Customers, orders, products…"},"record":{"plural":"Records","singular":"record","help":"Each individual record"},"workflow":{"plural":"Workflows","singular":"workflow","help":"Each business process"},"step":{"plural":"Steps","singular":"step","help":"Each step of a workflow"}},"methods":{"driver":{"label":"By activity","short":"By activity","help":"In proportion to a measured driver."},"direct":{"label":"All to one","short":"Direct","help":"The whole cost to one target you choose."},"equal":{"label":"Equal split","short":"Equal split","help":"The same share to every target with activity.","warning":"An equal split ignores how much each target actually did. Choose it only when that is what you mean."}},"drivers":{"runs":{"label":"Workflow runs","help":"How many times each target ran","unitSingular":"run","unitPlural":"runs"},"step_executions":{"label":"Step executions","help":"How many steps were completed","unitSingular":"step execution","unitPlural":"step executions"},"records":{"label":"Records processed","help":"How many records the work touched","unitSingular":"record","unitPlural":"records"},"active_hours":{"label":"Active hours","help":"Time people actively worked","unitSingular":"hour","unitPlural":"hours"},"ai_tokens":{"label":"AI tokens","help":"Tokens sent to and received from AI models","unitSingular":"token","unitPlural":"tokens"},"requests":{"label":"Requests","help":"AI and integration requests","unitSingular":"request","unitPlural":"requests"},"direct_cost":{"label":"Direct cost","help":"In proportion to each target's usage cost","unitSingular":"unit of cost","unitPlural":"units of cost"}},"graph":{"label":"Where each cost goes","empty":"Add a cost to see where it goes.","perMonth":"{{amount}} per month","perUnit":"{{amount}} per {{unit}}","unallocatedStays":"What cannot be assigned stays visible as unallocated business cost.","only":"only {{name}}"},"problems":{"nameRequired":"Give this cost a name.","amountRequired":"Enter the monthly amount.","amountInvalid":"The monthly amount must be a number, like 1500 or 1500.50.","rateRequired":"Enter the rate per unit.","rateInvalid":"The rate must be a number, like 0.25.","directTargetRequired":"Choose the target that receives the whole cost.","amountTooPrecise":"The amount has more decimals than the currency allows.","amountPositive":"Amounts must be greater than zero.","combinationInvalid":"This combination of choices is not supported."}},"margin":{"pageTitle":"Revenue and margin","pageDescription":"Understand what your work costs, what it earns, and where margin changes.","viewLabel":"Show","views":{"margin":"Margin","revenue":"Revenue"},"dimensionLabel":"Group by","dimensions":{"source":"Revenue stream"},"states":{"forbidden":{"title":"Revenue and margin are for finance members","description":"Ask the account owner for the billing or finance approver permission."},"not_configured":{"title":"Tenant economics is not connected yet","description":"Revenue and margin appear here once the Tenant Economics Service is configured for this environment. Your records keep producing revenue facts in the meantime."},"unavailable":{"title":"Revenue and margin are unavailable right now","description":"The Tenant Economics Service did not answer. Nothing is lost: facts wait in the queue and appear when it is back. Try again in a few minutes."}},"linkStreams":"Revenue streams","linkCosts":"Cost explorer","reconciled":"Reconciled to the facts","notReconciled":"Does not reconcile to the facts","empty":"No recognized revenue or cost in this period yet.","inCurrency":"In {{currency}}","kpi":{"recognized":"Recognized revenue","recognizedHelp":"Earned under each stream's recognition policy. Never booked or billed amounts.","variableCost":"Variable cost","variableCostHelp":"Usage cost plus the variable part of your cost pools.","contribution":"Contribution margin","contributionHelp":"Recognized revenue minus variable cost.","allocatedFixed":"Allocated fixed cost","allocatedFixedHelp":"Fixed costs your cost model assigned by a driver.","unallocated":"Unallocated cost","unallocatedHelp":"Fixed cost with no driver. It stays in the business total until you choose one.","operating":"Operating margin","operatingHelp":"Contribution margin minus allocated fixed and unallocated cost."},"definition":"Margin uses recognized revenue only. Contribution margin subtracts variable cost; operating margin also subtracts fixed cost. Amounts in different currencies are never added together.","rowsTruncated":"The 200 largest rows. The remainder row holds the rest, so the columns still add up to the business total.","rowsCaption":"Every row plus the remainder adds up to the business total.","unnamed":"Unnamed or removed","consultant":"Consultant engagements","remainder":"Everything else","remainderHelp":"Revenue and cost without this attribution, cost assigned at another level, and unallocated cost.","revenueEmpty":"No revenue in this period yet. Declare where revenue comes from in Revenue streams.","stages":{"booked":"Booked","billed":"Billed","fulfilled":"Fulfilled","recognized":"Recognized","collected":"Collected"},"stageHelp":{"booked":"A commercial commitment, such as an accepted order. Not revenue yet.","billed":"Invoiced. Not necessarily earned or collected.","fulfilled":"Delivered or accepted: what point-in-time revenue waits for.","recognized":"Earned under the stream's recognition policy.","collected":"Cash received."},"invoiceIsBilled":"An invoice is billed revenue. Choose when it becomes earned in Revenue streams.","revenueRowsCaption":"Booked, billed, recognized and collected are separate measures and are never added together.","unattributed":"Without this attribution"},"revenueStreams":{"pageTitle":"Revenue streams","pageDescription":"Say where your revenue comes from and when it is earned. No code, no JSON: pick an entity, its money field and its statuses.","states":{"forbidden":{"title":"Revenue streams are for finance members","description":"Ask the account owner for the billing or finance approver permission."},"not_provisioned":{"title":"Finance is not set up for this workspace","description":"Revenue streams need the workspace's finance environments. Ask the account owner to set up Finance first."}},"someone":"Someone","environment":"Finance environment","intro":"Each stream reads one entity. Its records become revenue facts: booked, billed, fulfilled and collected, as their status changes. A stream starts counting once someone other than its author approves it.","issues":{"title":"Records needing attention: {{count}}","reasons":{"amount_not_a_number":"Amount is not a number: {{count}}","amount_precision":"Amount has more decimals than its currency: {{count}}","currency_unsupported":"Currency is not a supported ISO 4217 code: {{count}}","period_invalid":"Service period is missing or ends before it starts: {{count}}","protected_value":"A field the stream reads is now protected: {{count}}","processing_error":"Could not be processed: {{count}}"}},"noMoney":{"title":"No entity has a money field yet","description":"Mark a number field as money in the entity's field inspector (Data). Protected and personal fields are never offered as revenue."},"empty":{"title":"No revenue stream yet","description":"Create one from an entity that holds what you sell: invoices, orders, subscriptions or services."},"newStream":"New revenue stream","history":"History","actions":{"draft_saved":"{{person}} saved a draft","submitted":"{{person}} submitted it for approval","approved":"{{person}} approved it","rejected":"{{person}} rejected it","superseded":"{{person}} replaced it with a newer version","discarded":"{{person}} discarded a draft"},"openRevenue":"See revenue by stage","statuses":{"draft":"Draft","pending_approval":"Waiting for approval","active":"Active","superseded":"Replaced","rejected":"Rejected"},"activeSince":"Version {{version}} reads {{entity}}. Approved by {{approver}}.","notActive":"Reads {{entity}}. Not counting yet.","unnamedEntity":"an entity","newVersion":"New version","pendingBy":"Version {{version}}, submitted by {{person}}","approve":"Approve and activate","withdraw":"Withdraw","reject":"Reject","rejectReason":"Why?","confirmReject":"Confirm","draftBy":"Draft of version {{version}} by {{person}}","edit":"Edit","submit":"Submit for approval","discard":"Discard","amountLine":"Revenue is {{field}}, in {{currency}}.","currencyFromField":"the currency in {{field}}","stageUnused":"Not tracked","onCreated":"When the record is created","onStatus":"When {{field}} is {{values}}","earnedOverPeriod":"Earned daily over the service period","earnedHere":"Earned here","recognition":{"onFulfillment":{"title":"When it is fulfilled","description":"Earned at a point in time, when the record reaches Fulfilled (delivery or acceptance).","summary":"Earned when fulfilled."},"onInvoiceDate":{"title":"On the invoice date","description":"Earned at a point in time, when the record is billed. Choose this only if your policy recognizes on invoicing.","summary":"Earned on the invoice date."},"overPeriodFromInvoice":{"title":"Daily over the service period, from the invoice","description":"The billed amount is earned in equal daily parts across the service period, for subscriptions and retainers.","summary":"The billed amount is earned daily from {{start}} to {{end}}."},"overPeriodFromBooking":{"title":"Daily over the service period, from the booking","description":"The booked amount is earned in equal daily parts across the service period.","summary":"The booked amount is earned daily from {{start}} to {{end}}."},"notRecognized":{"title":"Not earned yet","description":"Booked, billed and collected are tracked, but nothing counts as earned. Margin does not use it.","summary":"Tracked, not earned."}},"cancelLine":"{{values}} reverses everything it produced.","editor":{"titleNew":"New revenue stream","titleVersion":"New version of this stream","description":"Only plain fields are offered: a protected field, or one holding personal data, can never be revenue.","name":"Name","namePlaceholder":"Invoices","entity":"Where revenue comes from","pick":"Choose…","amount":"Amount","amountHelp":"A money field. Its currency comes from the field's money settings.","statusField":"Status field","noStatus":"No status: stages happen on creation","stages":"Stages","stagesHelp":"A stage reached stays reached (a paid invoice is still billed) until a cancel status or deletion reverses it. Changing an amount reverses and replaces the fact.","modes":{"unused":"Not tracked","created":"On creation","status":"By status"},"cancel":"Statuses that cancel","cancelHelp":"Moving to one of these reverses every fact the record produced.","recognition":"When is it earned?","recognitionHelp":"Orders never become revenue merely because they exist. An invoice is billed revenue; choose when it becomes earned.","period_start_field":"Service starts","period_end_field":"Service ends","noDate":"No date","periodHelp":"Both days are included. Revenue earned over time is split into equal daily parts, exact to the cent."},"problems":{"name":"Give the stream a name.","entity":"Choose where revenue comes from.","amount":"Choose the money field that holds the amount.","noStage":"Track at least one stage.","statusField":"Choose the status field.","stageValues":{"booked":"Choose the statuses that mean booked.","billed":"Choose the statuses that mean billed.","fulfilled":"Choose the statuses that mean fulfilled.","collected":"Choose the statuses that mean collected."},"cancelOverlap":"A status cannot both reach a stage and cancel.","recognition":"Choose when the revenue is earned.","recognitionStage":{"booked":"Track Booked, or choose another recognition.","billed":"Track Billed, or choose another recognition.","fulfilled":"Track Fulfilled, or choose another recognition."},"period":"Choose both service period dates."},"saveAndSubmit":"Save and submit for approval","saveDraft":"Save draft","cancelEditing":"Cancel","toasts":{"saved":"Draft saved","submitted":"Submitted for approval","approved":"Approved: the stream is counting","rejected":"Rejected","discarded":"Draft discarded"},"errors":{"permission":"You need the finance permission to do this.","protectedField":"A protected or personal field can never be a revenue source.","amountNotMoney":"Mark the amount as money in the field inspector first.","field":"A chosen field no longer exists or has the wrong kind.","invalid":"This stream is not complete yet. Check the stages and the recognition.","reference":"That entity is not available in this workspace.","entityHasStream":"This entity already has a revenue stream. Create a new version of it instead.","entityFixed":"A stream keeps its entity. Create a new stream for another entity.","openVersion":"This stream already has a version being written or waiting for approval.","notDraft":"Only a draft can be changed.","notPending":"This version is not waiting for approval anymore.","draftOfAnother":"Only the person who started this draft can change it.","reasonRequired":"Say why.","saveFailed":"Could not save. Try again.","notProvisioned":"Finance is not set up for this workspace."}},"glExport":{"pageTitle":"GL export","pageDescription":"Send your cost and revenue to your own general ledger, in real time or in batches, mapped to your chart of accounts.","states":{"forbidden":{"title":"GL export is for finance members","description":"Ask the account owner for the finance role to see and configure GL export."},"not_provisioned":{"title":"Finance is not set up yet","description":"GL export needs the workspace's finance environments. Ask the account owner to set up Finance first."}},"someone":"A member","unnamedDestination":"Destination","environment":"Finance environment","noLedger":{"title":"Your general ledger stays yours","description":"LerniFlow does not replace your general ledger. It prepares and reconciles postings to it."},"destinations":{"title":"Destinations","description":"Where postings go, to which book, when, and how your economics map to your chart of accounts.","new":"New destination","reconcile":"Reconciliation","empty":{"title":"No destination yet","description":"Add a destination to send your cost and revenue to your general ledger: a file you import, or a connector you approved."}},"editor":{"titleNew":"New destination","titleVersion":"New version","description":"Every choice here is visual. Once approved, this version decides how postings are prepared; a change is a new version, approved again.","name":"Destination name","namePlaceholder":"For example: Monthly revenue to QuickBooks","steps":{"target":"1. Where the postings go","book":"2. Which book","when":"3. When","what":"4. What is exported","chart":"5. Your chart of accounts","rules":"6. Posting rules","segments":"7. Segments (optional)"},"exportFrom":"Export from","exportFromHelp":"Nothing that happened before this day is sent.","ownership":"One book receives each fact once: two destinations of the same book cannot export the same kind of fact, whether they run in real time or in batches."},"targets":{"generic_csv":{"label":"CSV file","description":"One line per debit or credit, with accounts, segments and a stable reference."},"generic_json":{"label":"JSON file","description":"The posting document as data, for any system that imports JSON."},"quickbooks_iif":{"label":"QuickBooks Desktop (IIF)","description":"General journal entries to import into QuickBooks Desktop."},"quickbooks_csv":{"label":"QuickBooks (CSV)","description":"Journal entries in QuickBooks' CSV layout."},"sap_b1_dtw":{"label":"SAP Business One (DTW)","description":"Journal entry header and line files for the Data Transfer Workbench."},"contpaqi_polizas":{"label":"CONTPAQi (pólizas)","description":"Pólizas to import into CONTPAQi Contabilidad."},"connector":{"label":"Approved connector","description":"Sent automatically to an external GL connector you approved, signed, with retries.","named":"Connector: {{name}}","unknown":"a connector that is no longer approved","pick":"Connector","noneTitle":"No approved connector","noneDescription":"Set up and approve a connector in Finance → External GL first, or choose a file."}},"book":{"named":"Book: {{name}} ({{code}})","name":"Book name","namePlaceholder":"For example: Acme México 2026","code":"Book code","help":"Destinations with the same book code post to the same book.","locked":"A new version keeps its destination's book. To post to another book, add a destination."},"mode":{"realtime":"Real time","batch":"Batch","realtimeHelp":"Postings are prepared every minute, as facts arrive.","batchHelp":"Postings are prepared on a schedule. The first production run waits for an operator's release."},"schedule":{"dailyAt":"Batch · daily at {{hour}} UTC","weeklyAt":"Batch · every {{day}} at {{hour}} UTC","monthlyAt":"Batch · day {{day}} of each month at {{hour}} UTC","cadence":"Every","weekday":"Day of the week","monthDay":"Day of the month","hour":"Time (UTC)","cadences":{"daily":"Day","weekly":"Week","monthly":"Month"}},"weekdays":{"1":"Monday","2":"Tuesday","3":"Wednesday","4":"Thursday","5":"Friday","6":"Saturday","7":"Sunday"},"detail":{"label":"Detail","transaction":{"label":"Each transaction","description":"One entry per fact."},"daily":{"label":"Daily summary","description":"One entry per day, family, accounts and segments."},"period":{"label":"Period summary","description":"One entry per month, dated on its last day. Monthly batches only."}},"families":{"usage_cost":{"label":"Usage cost","description":"What your AI, people and integrations cost, priced by your rate cards."},"declared_cost":{"label":"Declared costs","description":"The costs you declared in your cost model (salaries, rent, software), per closed month."},"revenue_booked":{"label":"Booked revenue","description":"Orders and commitments you accepted. Not earned yet."},"revenue_billed":{"label":"Billed revenue","description":"What you invoiced."},"revenue_recognized":{"label":"Recognized revenue","description":"What you earned, day by day, under your recognition policy."},"revenue_collected":{"label":"Collected revenue","description":"Payments you received."}},"accountTypes":{"asset":"Asset","liability":"Liability","equity":"Equity","revenue":"Revenue","expense":"Expense"},"chart":{"help":"The accounts of your own chart that postings go to, with their type. Any of the five types can be used on either side.","code":"Account code","name":"Account name","type":"Type","remove":"Remove account","add":"Add account"},"rules":{"family":"What","debit":"Debit","credit":"Credit","noAccount":"No account chosen","help":"For each kind of fact, the account it debits and the account it credits.","pick":"Choose an account","typical":"Usually: {{types}}","example":"Example posting","exampleDebit":"Dr {{account}}","exampleCredit":"Cr {{account}}","corrections":"A correction reverses the original posting on the accounts it went to; it never changes what was already sent."},"segments":{"help":"Send a workflow, a data entity, a cost centre or a module to one of your GL's segments (class, project, department). Leave empty to send none.","dimension":"LerniFlow dimension","value":"Value","pick":"Choose","codePlaceholder":"Code","key":"Segment","code":"Segment code","remove":"Remove segment","add":"Add segment","dimensions":{"cost_center":"Cost centre","workflow":"Workflow","entity":"Data entity","module":"Module"}},"problems":{"title":"Before this can be saved","none":"Ready to submit","name":"Give the destination a name (up to 120 characters).","connector":"Choose an approved connector, or a file destination.","bookCode":"The book code uses letters, digits, dots, dashes or underscores (up to 64).","bookName":"Give the book a name.","schedule":"A batch destination needs a schedule.","hour":"Choose an hour from 00:00 to 23:00 UTC.","weekday":"Choose the day of the week.","monthDay":"Choose a day of the month from 1 to 28.","periodIsMonthly":"A period summary is a monthly batch.","exportFrom":"Choose the first day to export.","families":"Choose what is exported.","chart":"Add the accounts postings go to (up to 200).","accountCode":"Account codes use letters, digits and . _ : / - (up to 64).","accountName":"Give every account a name.","accountType":"Choose every account's type.","accountTwice":"Each account code once.","rule":"Choose the accounts for everything that is exported.","ruleAccount":"A posting rule uses accounts of your chart.","ruleSameAccount":"A rule debits and credits different accounts.","segments":"Up to 200 segment mappings.","segmentSource":"Choose the value of each segment mapping, once.","segmentCode":"Segment names and codes use letters, digits and . _ : / - (up to 64).","segmentTwice":"Each value is mapped once."},"status":{"draft":"Draft · v{{version}}","pending_approval":"Waiting for approval · v{{version}}","active":"Active · v{{version}}","superseded":"Replaced · v{{version}}","rejected":"Rejected · v{{version}}"},"open":{"draft":"Draft v{{version}} by {{who}}.","pending":"Version {{version}} is waiting for approval (submitted by {{who}})."},"actions":{"edit":"Edit","submit":"Submit for approval","discard":"Discard","approve":"Approve","reject":"Reject","withdraw":"Withdraw","rejectReason":"Why?","confirmReject":"Confirm","cancel":"Cancel","newVersion":"Change (new version)","saveAndSubmit":"Save and submit for approval","saveDraft":"Save draft"},"history":{"title":"Versions","approvedBy":"approved by {{who}}","rejectedBy":"rejected by {{who}}","createdBy":"created by {{who}}","actions":{"registered":"Prepared","released":"Released","claimed":"Picked up","sent":"Sent","retry_scheduled":"Retry scheduled","acknowledged":"Acknowledged","rejected":"Rejected","dead_lettered":"Retries exhausted","lease_expired":"No answer recorded","downloaded":"File downloaded","import_confirmed":"Import confirmed","import_rejected":"Import refused","retry_requested":"Retry requested","decided":"Decided"}},"toasts":{"saved":"Draft saved.","submitted":"Submitted for approval.","discarded":"Draft discarded.","approved":"Approved. The destination is active.","rejected":"Rejected.","released":"Released for delivery.","downloaded":"File downloaded. Import it, then confirm what your GL did.","retrying":"It will be sent again now.","confirmed":"Recorded.","decided":"Decision recorded."},"delivery":{"title":"Delivery","description":"Every posting LerniFlow prepared, where it stands, and its evidence.","empty":{"title":"Nothing prepared yet","description":"Postings appear here once an active destination has facts to send."}},"reconciliation":{"title":"Reconciliation","description":"What your economics say is due, against what your book received.","none":"Reconciliation appears once a destination is approved.","pick":"Destination","reconciles":"Everything due was exported","pendingBadge":"Some amounts are still pending","period":"{{from}} to {{to}}","nothing":"Nothing due in this period yet.","rowReconciles":"Reconciled","rowHeld":"Held below the currency's precision: {{count}}","rowPending":"Pending","footnote":"Pending: not prepared yet, below the currency's precision, or not due (a period that has not ended). Figures are your economics as the explorers show them; LerniFlow keeps no ledger balance.","notReceived":{"title":"Not received yet","description":"The economics service has not received this destination yet. Approved destinations arrive within a few minutes."},"columns":{"month":"Month","family":"What","currency":"Currency","economics":"Due","exported":"Exported","pending":"Pending","status":"Status"}},"service":{"not_configured":{"title":"Delivery is not connected","description":"The economics service is not configured for this environment, so no postings are prepared yet. Destinations can still be designed and approved."},"unavailable":{"title":"Delivery is temporarily unavailable","description":"The economics service did not answer. Nothing is lost: postings are prepared and sent once it is back."}},"freshness":{"current":"Current","stale":"Stale","needs_attention":"Needs attention","processing":"Processing","preparedAt":"Last prepared","notYet":"Not prepared yet"},"timeline":{"label":"Where this posting stands","stages":{"prepared":"Prepared","sent":"Sent","acknowledged":"Acknowledged","reconciled":"Reconciled"},"exceptions":{"awaiting_release":"Waiting for release","retrying":"Retrying","rejected":"Rejected","period_locked":"Period locked","needs_decision":"Needs decision","file_fallback_ready":"File fallback ready","totals_differ":"Totals differ","excluded":"Excluded","replaced":"Replaced"}},"run":{"title":"{{destination}} · {{date}}","summary":"{{debit}} {{currency}} · {{lines}} lines · {{sources}} source facts","reference":"Reference your GL sees","periodLocked":"Your GL refused this posting because its period is locked. Decide what to do: nothing moves by itself.","evidence":"Evidence","familyLine":"{{family}}: {{posted}} {{currency}} posted ({{exact}} exact) from {{items}} facts","actions":{"release":"Release","download":"Download file","fallback":"Download file fallback","confirm":"Confirm import","retryNow":"Retry now","decide":"Decide"},"fields":{"totals":"Debit / credit","totalsValue":"{{debit}} / {{credit}} {{currency}}","lines":"Lines","sources":"Source facts","rounding":"Rounding difference","documentHash":"Document hash","sourceHash":"Source facts hash","artifactHash":"Sent file hash","exportKey":"Export key","acknowledgement":"Acknowledgement","acknowledgedValue":"{{lines}} lines, {{debit}} / {{credit}}","notAcknowledged":"Not acknowledged yet","attempts":"Attempts","nextAttempt":"next"}},"rejections":{"transient":"temporary failure","ambiguous":"no clear answer","authentication":"credentials refused","mapping":"posting refused","period_locked":"period locked","permanent":"refused"},"decisions":{"retry_after_reopen":{"label":"Send again","description":"The period was reopened in your GL, or the cause was fixed. The same posting, same reference."},"move_to_open_period":{"label":"Move to an open period","description":"A prior-period adjustment: the same lines, dated on the day you choose."},"exclude":{"label":"Exclude","description":"Never send it. Its facts will not be exported again."},"reverse_and_regenerate":{"label":"Regenerate","description":"Drop this posting and prepare its facts again with the destination's current version."}},"confirm":{"title":"What did your GL do?","description":"Posting {{reference}}: {{debit}} {{currency}} in {{lines}} lines.","lines":"Lines imported","debit":"Debit total","credit":"Credit total","reference":"Reference in your GL (optional)","notes":"Note (optional)","submit":"Record","outcomes":{"matched":"Imported, with these exact totals","different":"Imported, with other totals","period_locked":"Refused: the period is locked","mapping":"Refused: an account or segment was not accepted","authentication":"Refused: access was denied","permanent":"Refused for another reason"}},"decide":{"title":"Decide what happens to this posting","description":"Posting {{reference}} dated {{date}}. An authorized decision, with a reason, is recorded with the evidence.","postingDate":"New posting date","reason":"Reason","submit":"Record decision"},"errors":{"permission":"You do not have the finance role for this.","invalid":"Something in this destination is not valid. Check the highlighted steps.","connector":"Choose a connector that is approved in this finance environment.","scopeOverlap":"Another destination of this book already exports one of these kinds of facts.","bookFixed":"A new version keeps its destination's book.","openVersion":"This destination already has a version being written or waiting for approval.","notDraft":"Only a draft can be changed.","notPending":"This version is not waiting for approval.","draftOfAnother":"Only the person who wrote this draft can change it.","reasonRequired":"Say why.","postingDate":"Choose a posting date after the original one.","totalsRequired":"Enter the line count and both totals your GL shows.","deliveryState":"This posting is not in a state for that.","saveFailed":"Could not save. Try again.","notProvisioned":"Finance is not set up for this workspace.","serviceUnavailable":"The economics service is not available. Try again later.","documentChanged":"This posting does not match its evidence and was not sent.","protectedValue":"This posting carried a protected value and was not sent.","accountUnknown":"This posting uses an account that is not in the destination's chart.","currencyPrecision":"This file format cannot show this currency exactly. Use CSV or JSON.","targetUnsupported":"This file format is not available.","writerRefused":"The file could not be written completely, so it was not produced."}},"decisionTools":{"environment":"Finance environment","errors":{"permission":"You need finance management permission to change this.","invalid":"Some values are not valid. Check the amounts, months and thresholds.","scenarioNameTaken":"A scenario with this name already exists.","budgetExists":"A budget for this target and currency already exists.","budgetTarget":"Choose a workflow or entity of this workspace.","ruleBudget":"That budget no longer exists.","notFound":"It was not found. Reload the page.","saveFailed":"It could not be saved. Try again.","notProvisioned":"Finance is not set up for this workspace yet."}},"scenarios":{"pageTitle":"Scenarios","pageDescription":"Try a price, a volume, a fixed cost and a variable rate, and see the margin, the break-even point and how sensitive it is. A scenario is never actual.","states":{"forbidden":{"title":"Finance permission required","description":"Only the owner, billing managers and finance approvers can use scenarios."},"not_provisioned":{"title":"Finance is not set up yet","description":"This workspace has no finance environment yet."},"not_configured":{"title":"Scenario results are not available here","description":"The Tenant Economics Service is not connected to this environment. You can still edit and save scenarios."},"unavailable":{"title":"Results are temporarily unavailable","description":"The Tenant Economics Service did not answer. Nothing was lost; try again in a moment."},"invalid":{"title":"These assumptions cannot be computed","description":"Check that every amount has at most 6 decimals and is not negative."},"currencies_differ":{"title":"That month mixes currencies","description":"The month's cost models use different currencies. Choose another month."}},"saved":{"title":"Saved scenarios","new":"New","empty":"No saved scenarios yet. Adjust the levers and save one."},"assumptions":{"title":"Assumptions","description":"Type a value or drag its slider. Results update as you go."},"fields":{"name":"Scenario name","namePlaceholder":"For example: New price for 2027","currency":"Currency","volumeUnit":"Volume is counted in","step":"Sensitivity step","steps":"Steps","stepsEachWay":"{{count}} each way","stepsTooWide":"The step times the number of steps can be at most 90%."},"volumeUnits":{"units":"units","runs":"workflow runs","records":"records","step_executions":"step executions","hours":"hours","customers":"customers","orders":"orders"},"levers":{"pricePerUnit":{"label":"Price per unit","help":"What one unit earns."},"volume":{"label":"Volume","help":"How many units in the period."},"fixedCost":{"label":"Fixed cost","help":"Costs that do not change with volume: rent, salaries, software."},"variableRate":{"label":"Variable cost per unit","help":"What one more unit costs: usage, materials, time."},"slider":"Change {{lever}}","invalid":"Enter an amount of zero or more, with at most 6 decimals.","typeToSlide":"Type a value above zero to use the slider.","fromStart":"{{change}} from {{start}}"},"save":"Save scenario","delete":"Delete","savedMessage":"Scenario saved.","readOnly":"You can explore scenarios. Saving needs finance management permission.","deleteConfirm":{"title":"Delete \"{{name}}\"?","description":"The saved assumptions are removed. No actual figure is affected.","cancel":"Cancel"},"notActual":"Scenario — not actual","notActualNote":"Computed from the assumptions on screen. Never included in actual figures or GL exports.","resultLabel":"Scenario result, not actual","result":{"revenue":"Revenue","variableCost":"Variable cost","contributionMargin":"Contribution margin","fixedCost":"Fixed cost","operatingMargin":"Operating margin"},"breakEven":{"units":"Break-even volume","revenue":"Break-even revenue","marginOfSafety":"Margin of safety","never":"Never breaks even","unreachable":"Each unit costs as much as or more than it earns, so no volume covers the fixed cost. Raise the price or lower the variable cost.","roundedUp":"The exact break-even volume is {{volume}}; it is rounded up to the next whole unit."},"chart":{"aria":"Revenue and total cost by volume. Your volume: {{volume}}. Break-even: {{breakEven}}.","revenue":"Revenue","totalCost":"Total cost","fixedCost":"Fixed cost","yourVolume":"Your volume ({{volume}})","breakEvenPoint":"Break-even ({{breakEven}})"},"sensitivity":{"title":"Sensitivity","description":"Operating margin when one lever changes and the others stay as planned.","caption":"Operating margin by change in each lever, with the break-even volume under it.","lever":"Lever","asPlanned":"As planned","breakEvenAt":"breaks even at {{units}}"},"loss":"Loss","exactNote":"Every figure is computed with exact decimals and rounded half to even at the currency's precision.","baseline":{"title":"Start from actuals","description":"Take a month's actual revenue and cost and divide them by a volume, to start the scenario from reality.","month":"Month","volume":"Volume","load":"Load actual figures","volumeWas":"Volume: {{volume}} {{unit}}","empty":"No actual revenue or cost in that month.","line":"Revenue {{revenue}} · Variable cost {{variable}} · Fixed cost {{fixed}}","use":"Use as starting point","noVolume":"No volume that month","startedFrom":"Started from the actual figures of {{month}}."}},"forecast":{"pageTitle":"Forecast and alerts","pageDescription":"Budgets against actual cost, alerts when something needs attention, and a forecast that shows how it was made.","states":{"forbidden":{"title":"Finance permission required","description":"Only the owner, billing managers and finance approvers can see forecasts and alerts."},"not_provisioned":{"title":"Finance is not set up yet","description":"This workspace has no finance environment yet."},"not_configured":{"title":"Not available here","description":"The Tenant Economics Service is not connected to this environment. Budgets and rules can still be edited."},"unavailable":{"title":"Temporarily unavailable","description":"The Tenant Economics Service did not answer. This is not a zero; try again in a moment."},"invalid":{"title":"These settings cannot be evaluated","description":"Check the budgets' amounts and the rules' thresholds."},"currencies_differ":{"title":"That month mixes currencies","description":"The month's cost models use different currencies."}},"month":"Month","title":"Forecast","description":"Revenue and cost for the coming months, learned from complete past months.","method":"Method","history":"Months learned from","horizon":"Months ahead","methods":{"trailing_average":{"label":"Recent average","explanation":"Each coming month is the average of the last {{window}} complete months."},"linear_trend":{"label":"Linear trend","explanation":"A straight line fitted by least squares to the last {{window}} complete months, continued forward."}},"notActual":"Forecast — not actual","resultLabel":"Forecast, not actual","range":"Learned from {{from}} to {{to}}","empty":"No revenue or cost in those months yet.","insufficient":"Only {{used}} usable months; this method needs at least {{needed}}.","chart":{"aria":"Actual and forecast revenue and cost in {{currency}} by month.","revenue":"Recognized revenue","cost":"Total cost","forecastPart":"Forecast (not actual)"},"table":{"month":"Month","basis":"Basis","revenue":"Recognized revenue","cost":"Total cost","margin":"Operating margin","forecast":"Forecast","actual":"Actual"},"methodology":{"title":"How this forecast was made","window":"Months used","minimum":"Minimum needed","rounding":"Rounding","months":"{{count}} months","roundingHalfEven":"Exact decimals, rounded half to even at the currency's precision","assumptions":"Assumptions","excluded":"Months left out"},"assumptions":{"complete_months_only":"Only complete months are used; the current month is not.","cost_models_carry_forward":"Costs keep behaving as in the months used, under the cost models then in force.","recognized_revenue_only":"Revenue is recognized revenue, not booked or billed.","unallocated_cost_included":"Unallocated cost is included in total cost.","no_currency_conversion":"Each currency is forecast on its own; nothing is converted.","other":"An additional assumption applies."},"excludedReasons":{"cost_model_currencies_differ":"its cost models use different currencies","other":"its figures could not be used"},"alerts":{"title":"Alerts","firingCount":"Needs attention: {{count}}","allClear":"All clear","monthProgress":"Day {{elapsed}} of {{days}} of the month.","none":"No alert rules are on.","states":{"firing":"Needs attention","ok":"OK","no_data":"No data"},"kinds":{"budget_overrun":{"title":"Budget: {{budget}}","rule":"Actual cost goes over the budget by more than","firing":"Actual cost is {{observed}} against the budget, beyond the {{threshold}} allowed.","ok":"Actual cost is {{observed}} against the budget, within {{threshold}}.","no_data":"There is no actual cost to compare with this budget yet."},"forecast_overrun":{"title":"Month-end forecast: {{budget}}","rule":"At the month's pace, cost goes over the budget by more than","firing":"At this pace the month ends {{observed}} against the budget, beyond the {{threshold}} allowed.","ok":"At this pace the month ends {{observed}} against the budget, within {{threshold}}.","no_data":"There is not enough of the month yet to project it."},"cost_above_amount":{"title":"Cost above {{threshold}}","rule":"Business cost in a month goes above an amount","firing":"Cost this month is {{observed}}, above {{threshold}}.","ok":"Cost this month is {{observed}}, not above {{threshold}}.","no_data":"There is no cost in {{currency}} this month."},"unallocated_share":{"title":"Unallocated cost","rule":"Unallocated cost goes above this share of the period's cost","firing":"{{observed}} of this month's cost is unallocated, above {{threshold}}.","ok":"{{observed}} of this month's cost is unallocated, within {{threshold}}.","no_data":"There is no cost model or no cost this month."},"stale_data":{"title":"Finance data freshness","rule":"Finance data is stale","firing":"Finance data is stale, so figures may be behind.","ok":"Finance data: {{observed}}.","no_data":"Freshness is not known yet."},"negative_operating_margin":{"title":"Negative operating margin","rule":"Operating margin is negative for consecutive months","firing":"Operating margin in {{currency}} was negative in {{months}}.","ok":"Operating margin was not negative in every one of the months checked.","no_data":"There are not enough complete months yet."},"missing_meter":{"title":"Missing meters","rule":"A meter that reported last month has been silent for (days)","firing":"No usage this month from: {{meters}}.","ok":"Every meter that reported last month has reported this month.","no_data":"There was no usage last month to compare with."}}},"budgets":{"title":"Budgets","description":"A monthly cost budget for the business, a workflow or an entity, against actual cost and where the month is heading.","add":"Add budget","empty":"No budgets yet. Add one to compare actual cost with a plan.","unnamed":"Unnamed budget","wholeBusiness":"Whole business","targetGone":"No longer available","perMonth":"{{amount}} per month","range":"{{from}} to {{to}}","from":"From {{from}}","edit":"Edit {{name}}","notInForce":"This budget does not cover the month shown.","noData":"No actual cost to compare yet.","barAria":"Actual {{actual}}, month-end forecast {{forecast}}, budget {{budget}}.","actualToDate":"Actual to date","variance":"{{value}} against budget","monthEnd":"Month-end at this pace","runRate":"Forecast, not actual","addTitle":"Add a budget","editTitle":"Edit budget","dialogDescription":"A monthly cost budget. Deleting a budget also removes its alert rules.","fields":{"name":"Name","dimension":"Budget for","workflow":"Workflow","entity":"Entity","choose":"Choose…","noTargets":"There is nothing to choose yet.","amount":"Amount per month","from":"From month","to":"Until month","toHelp":"Leave empty to keep it going."},"dimensions":{"business":"Whole business","workflow":"A workflow","entity":"An entity"},"delete":"Delete budget","save":"Save budget"},"rules":{"title":"Alert rules","description":"The recommended alerts are on until you change them. Every change is recorded.","addAmount":"Add a cost limit","newAmountScope":"New cost limit","default":"Recommended","percent":"Threshold (%)","currency":"Currency","amount":"Amount","periods":"Months","days":"Days","enabled":"On","save":"Save","reset":"Back to recommended","remove":"Remove"}},"access":{"denied":{"title":"Finance permission required","description":"Only the account owner and members with finance permission (billing management or finance approval) can open this page. Delegated access does not include Finance. Ask an owner of this workspace for access.","reference":"Reference: {{reference}}"},"errors":{"forbidden":"You do not have finance permission for this action, so nothing was changed. Ask an owner of this workspace for access."},"readOnly":{"title":"Read-only view","description":"You can see these rates. Requesting, approving or changing a rate needs the account owner, billing management or finance approval."},"decisionReadOnly":"You can see this version. Only a finance approver can approve or reject it.","notSetUp":{"title":"Finance isn't set up for this workspace yet","descriptionManager":"This workspace has no finance ledger yet, so there is nothing to show here. Open setup to finish configuring the workspace.","descriptionMember":"This workspace has no finance ledger yet, so there is nothing to show here. The account owner or a billing manager can set it up.","setupLink":"Open setup"}},"pricingRoles":{"title":"Pricing roles","description":"Human time on a workflow step is priced by the role that captures the step. Choose which pricing role each company and system role is priced as; a role left unpriced records its time but gives it no cost.","columns":{"role":"Role","pricedAs":"Priced as"},"kinds":{"system":"System role","company":"Company role"},"notPriced":"Not priced","errors":{"unknownPricingRole":"That pricing role does not exist in this workspace's ledger. Choose one from the list.","roleNotOnAccount":"That company role does not belong to this workspace."}},"ledgerEnvironment":{"label":"Environment","sandbox":"Sandbox (simulated)","production":"Production","sandboxHint":"Simulated cost: priced with Sandbox rates and never posted to the general ledger.","productionHint":"Real cost: priced with Production rates and posted to the ledger.","runExecutesIn":"This run executes in","showRunEnvironment":"Show this run in {{environment}}","openRunCost":"Run cost","sources":{"legacy_default":"It started before runs recorded their environment, so its cost was posted to Production.","production":"It runs in production.","deployment":"This deployment is not production.","test_workspace":"It runs in a test workspace.","test_run":"It is marked as a test run.","workflow_environment":"It runs in a lower workflow environment (development, test or stage).","parent_run":"It is part of a Sandbox run."}},"unpricedUsage":{"pageTitle":"Unpriced usage","pageDescription":"Usage the ledgers held back without a price, why, and where to fix it. Production and Sandbox are priced separately.","readOnly":{"title":"How held usage is released","description":"Events held for a missing rate, exchange rate or subject, or for overlapping rates, are re-rated automatically, usually within about a minute, once this ledger gains what was missing: a rate card covering them is activated (or the overlapping one is superseded), an exchange rate for the pair is added, or the AI model, pricing role or connector is registered. Approving a rate is not enough; it must be active. A finance administrator can also preview and re-rate them by hand below, with a reason. Events in a closed period are released from Period close, never by a re-rate."},"ledgers":"Ledgers","openCount":"Unpriced: {{count}}","oldest":"Oldest held event: {{when}}","nothingHeld":"Nothing held.","unknownLedger":"another ledger","approvedNotActive":{"title":"Approved rate cards that are not active: {{count}}","description":"An approved rate prices nothing until it is activated. Only active rates price usage.","open":"Open Rate cards"},"unassigned":"Held events outside any ledger of this workspace: {{count}}. LerniFlow support can trace them by their event key.","empty":{"title":"No unpriced usage in {{ledger}}","description":"Every usage event that reached this ledger was priced."},"filterByReason":"Filter by reason","allReasons":"All reasons · {{count}}","groupsTitle":"What is held, and how to fix it","groupCounts":"Events: {{events}} · Runs: {{runs}}","subject":"{{kind}}: {{code}}","subjectKinds":{"human_role":"Pricing role","ai_model":"AI model","integration_connector":"Connector","infra":"Infrastructure","unknown":"Unknown subject"},"facts":{"quantity":"Quantity: {{quantity}} {{unit}}","between":"From {{from}} to {{to}}","pair":"Needs an exchange rate from {{from}} to {{to}}"},"readiness":{"readyToRerate":"What was missing is now in place: these events should be re-rated automatically within about a minute. If they are still held after that, report it to LerniFlow support.","approvedNotActive":"A rate covers these events (version {{version}}, from {{from}}), but it is approved and not active.","pendingApproval":"A rate covers these events (version {{version}}, from {{from}}), but it is still waiting for approval.","startsLater":"This subject’s rate starts at {{from}}, after these events happened.","otherEnvironment":"This subject has a rate only in {{ledger}}. A rate prices its own ledger only.","noRate":"This subject has no rate in this ledger.","infraNotDiagnosed":"Readiness for infrastructure usage (priced by cost drivers) is not diagnosed on this page yet."},"reasons":{"RATE_NOT_FOUND":{"title":"No rate","why":"No active rate for this subject covered the moment the usage happened."},"RATE_AMBIGUOUS":{"title":"More than one rate","why":"More than one active rate applied at that moment, so none was used."},"DIMENSION_MISSING":{"title":"Unknown subject","why":"This ledger does not know the pricing role, AI model or connector the usage names."},"FX_NOT_FOUND":{"title":"No exchange rate","why":"The rate is in a different currency from the ledger’s, and no exchange rate covered that moment."},"PERIOD_CLOSED":{"title":"Closed period","why":"The accounting period of that moment is closed."},"FEATURE_DISABLED":{"title":"Pricing switched off","why":"Pricing for this kind of usage is not enabled for this workspace."},"PAYLOAD_MISMATCH":{"title":"Changed resubmission","why":"The same event was sent again with different details; the first version stands."},"SCHEMA_INVALID":{"title":"Unreadable event","why":"The event did not match its schema."},"ENV_INVALID":{"title":"Unknown ledger","why":"The event named a ledger this workspace does not have."},"other":{"title":"Not priced: {{reason}}","why":"The ledger held this event back."}},"actions":{"activateRate":"Activate the approved rate","approveRate":"Review and approve the waiting rate","coverEarlierDates":"Add a rate version that covers these dates","copyRate":"Copy the rate from the other ledger","createRate":"Create a rate for this subject","resolveOverlap":"Resolve the overlapping rates","registerModel":"Register or map this AI model","registerRole":"Register this pricing role in the ledger","reviewRoleMapping":"Check the pricing-role mapping","registerSubject":"Register this subject in the ledger","configureFx":"Configure an exchange rate for this pair","inspectFxFeed":"Inspect the exchange-rate feed","priorPeriodAdjustment":"Authorize a prior-period adjustment","enablePricing":"Ask LerniFlow to enable pricing for this usage","contactSupport":"Nothing to fix here: quote the event key to LerniFlow support","priceInfrastructure":"Price this infrastructure usage (cost drivers)","rerateOnActiveRate":"Re-rated automatically within about a minute once a rate covering these dates is activated","rerateOnFx":"Re-rated automatically within about a minute once an exchange rate for this pair and these dates is added","rerateOnSubject":"Re-rated automatically within about a minute once this subject is registered in the ledger","rerateOnModel":"Re-rated automatically within about a minute once this AI model is registered, or mapped to a model the ledger already knows","retryRerate":"Preview and re-rate these events by hand","reportStillHeld":"Still held a few minutes after the fix? Quote an event key to LerniFlow support"},"requires":{"manage":"Needs a finance administrator (owner or billing management)","approve":"Needs a finance approver"},"notYetAvailable":"Not yet available","automatic":"Automatic","eventsTitle":"Held events","eventsTruncated":"Showing the newest {{shown}} of {{total}}.","columns":{"when":"When (UTC)","reason":"Reason","subject":"Subject","run":"Run","quantity":"Quantity","currency":"Currency","eventKey":"Event key"},"openRun":"Open run cost","step":"Step: {{step}}","pair":"{{from}} to {{to}}","unavailable":{"title":"Unpriced usage could not be read","description":"The ledger did not answer just now. Nothing was changed; try again in a few minutes."},"errors":{"environmentNotInLedger":"That ledger does not belong to this workspace."},"workbench":{"title":"Re-rate held usage: {{ledger}} ledger","description":"Preview what a re-rate would post, then re-rate exactly the previewed events with a reason. The same rater prices them as if they had just arrived. Nothing already posted changes, and re-rating twice never posts twice.","reasonsLabel":"Held reasons to re-rate","preview":"Preview the re-rate","previewWritesNothing":"A preview changes nothing.","totals":{"evaluated":"Held events previewed","wouldPost":"Would post","wouldStayHeld":"Would stay held","wouldBeRefused":"Would be refused","alreadyPosted":"Already posted","amount":"Would post in total","nothingToPrice":"Nothing to price"},"truncated":"This preview covers the oldest {{count}} held events. Re-rate them, then preview again for the rest.","columns":{"group":"Reason and subject","events":"Events","wouldPost":"Would post","amount":"Amount","rateCard":"Rate-card version","fx":"Exchange rate used","stillHeld":"Still held because"},"version":"Version {{version}}","refused":"Refused: {{count}}","alreadyPosted":"Already posted: {{count}}","reasonLabel":"Why are you re-rating these events?","reasonPlaceholder":"For example: the reviewer rate was activated on 1 October.","reasonCount":"{{count}} / {{max}} characters","retry":"Re-rate the previewed events ({{count}})","confirmTitle":"Re-rate held usage in the {{ledger}} ledger?","confirmDescription":"Held events to rate again: {{count}}. The preview showed {{post}} would post, for {{amount}}. A posted journal cannot be edited afterwards; a correction goes through a reversal or a prior-period adjustment.","cancel":"Cancel","confirm":"Re-rate now","progress":"Re-rated {{done}} of {{total}} events…","doneTitle":"Re-rate finished","done":"Evaluated: {{evaluated}} · Posted: {{posted}} ({{amount}}) · Still held: {{held}} · Refused: {{refused}} · Already posted: {{already}}. The run and its evidence are in the history below.","stillRunningTitle":"Still running","stillRunning":"The run is still going and keeps its checkpoint. Continue it from the re-rate history below.","nothingToPrice":"Nothing to price: {{count}}","closedNothingToPrice":"Closed with nothing to price (quantity 0): {{count}}. Nothing was posted for them."},"history":{"title":"Re-rate history","description":"Every re-rate of this ledger, automatic, by a finance administrator or by LerniFlow support, with its reason and what it did. Download the evidence of a run as CSV.","empty":"No re-rate has run in this ledger yet.","columns":{"when":"When","who":"Who","reason":"Reason","before":"Held events evaluated","after":"Outcome","amount":"Posted","actions":"Actions"},"modes":{"automatic":"Automatic","manual":"By hand","support":"LerniFlow support"},"byAutomatic":"After a change to: {{triggers}}","bySupport":"Operator: {{operator}}","aFinanceManager":"A finance administrator","triggers":{"rate_card":"a rate card","fx_rate":"an exchange rate","ai_model":"an AI model","ai_model_alias":"an AI model alias","human_role":"a pricing role","integration_connector":"a connector","cost_driver":"a cost driver"},"selected":"Limited to previewed events: {{count}}","after":"Posted: {{posted}} · Still held: {{held}} · Refused: {{refused}} · Already posted: {{already}}","running":"Stopped at its checkpoint","continue":"Continue","export":"Download evidence (CSV)","working":"Working…","nothingToPrice":"Closed with nothing to price: {{count}}"},"notifications":{"appearedProduction":"New usage in the Production ledger could not be priced. Open Unpriced usage to see why and fix it.","appearedSandbox":"New usage in the Sandbox ledger could not be priced. Open Unpriced usage to see why and fix it.","agedProduction":"Usage in the Production ledger has been unpriced for more than seven days. Open Unpriced usage to fix it.","agedSandbox":"Usage in the Sandbox ledger has been unpriced for more than seven days. Open Unpriced usage to fix it.","notRepairedProduction":"An automatic re-rate in the Production ledger left usage unpriced: what it needs is still missing. Open Unpriced usage to see the fix.","notRepairedSandbox":"An automatic re-rate in the Sandbox ledger left usage unpriced: what it needs is still missing. Open Unpriced usage to see the fix.","supportRerateProduction":"LerniFlow support re-rated held usage in your Production ledger. The run, its reason and its evidence are in the re-rate history.","supportRerateSandbox":"LerniFlow support re-rated held usage in your Sandbox ledger. The run, its reason and its evidence are in the re-rate history."},"nothingToPrice":{"title":"Nothing to price (closed)","total":"Closed: {{count}}","description":"Usage whose quantity was 0, for example a step completed without being claimed (no active time). No rate card could price it, so it is closed: nothing is posted, nothing is held and it does not block period close. The newest are listed.","columns":{"when":"When (UTC)","step":"Step","subject":"Subject","quantity":"Quantity","run":"Run"},"openRun":"Open the run cost"}},"aiModels":{"title":"AI models","description":"Every AI model your workspace and LerniFlow run is a model of both ledgers, Production and Sandbox. Register a code that is not listed, or say that two codes are priced as one. Every change applies to both ledgers.","none":"This ledger has no AI models yet.","noPrice":"A model is not a price. Usage of a model stays unpriced until a rate card for it is active in its ledger; LerniFlow never applies a default price.","registerFromRateCard":"Model not listed? Register it, or map it to one that is","origin":{"platformCatalog":"LerniFlow catalog","tenantCatalog":"Your AI settings","registered":"Registered","provisioned":"Provisioned"},"columns":{"code":"Code","provider":"Provider","origin":"Source","alsoPricedAs":"Also prices"},"observed":{"title":"“{{code}}” was used but is not a model of this ledger","description":"Register it as a model of its own and give it a rate card, or map it to a model you already price. The held usage is re-rated automatically."},"aliases":{"title":"Aliases","columns":{"usedCode":"Used code","pricedAs":"Priced as","applies":"Applies","declaredBy":"Declared by","reason":"Reason"},"window":"{{from}} → {{to}}","always":"Always","open":"open","byPlatform":"LerniFlow","byTenant":"Your team","retire":"Retire","retireReason":"Why retire it?","retireConfirm":"Retire alias"},"register":{"title":"Register a model","description":"The exact code the usage carries, as written. Versions and tags are part of the code.","submit":"Register in both ledgers"},"alias":{"title":"Map a code to a model","description":"Usage of the used code is priced as the chosen model. Nothing is mapped unless you declare it.","submit":"Map in both ledgers"},"fields":{"code":"Model code","codeHint":"For example gpt-4o-mini or qwen2.5:7b: letters, digits and _ . : / + -. Stored exactly as typed.","provider":"Provider (optional)","providerPlaceholder":"openai, anthropic, ollama…","usedCode":"Used code","pricedAs":"Priced as","selectModel":"Choose a model","appliesFrom":"Applies from (UTC, optional)","appliesFromHint":"Leave it empty to apply to every event of this code.","reason":"Reason"},"messages":{"registered":"{{code}} is now a model of both ledgers. Give it a rate card to price its usage.","aliased":"{{code}} is now priced as {{model}} in both ledgers.","retired":"The alias {{code}} no longer applies from now on."},"errors":{"codeInvalid":"A model code is letters, digits and _ . : / + -, starting with a letter or digit. Check the code as the usage shows it.","providerInvalid":"A provider is letters, digits and _ . : / + -. Correct it or leave it empty.","codeIsAlias":"“{{code}}” is already priced as “{{model}}”. Retire that alias first to register it as a model of its own.","aliasCollision":"“{{code}}” is already priced as “{{model}}”. Retire that alias before you map it again.","aliasShadowsModel":"“{{code}}” is already a model of this ledger. Give it a rate card instead of mapping it.","aliasTargetMissing":"“{{model}}” is not a model of both ledgers. Register it first.","aliasIsItself":"A code cannot be mapped to itself. Choose another model.","reasonRequired":"Say why, in 1 to 1000 characters.","aliasNotFound":"“{{code}}” has no alias in force. Refresh the page.","aliasPlatformOwned":"LerniFlow maps “{{code}}”. Contact LerniFlow support to change it.","permissionDenied":"Only a finance manager can change the AI models of the ledgers. Ask your workspace owner.","failed":"The AI model could not be saved. Try again."}},"fxCoverage":{"pageTitle":"FX coverage","pageDescription":"The exchange rates that price usage in both ledgers: where each rate comes from, which dates it covers, and what waits on it.","unavailable":{"title":"FX coverage is unavailable right now","description":"The coverage could not be read. Try again in a moment; nothing was changed."},"rules":{"title":"One exchange rate for Production and Sandbox","oneRate":"An exchange rate belongs to the workspace, not to a ledger: Production and Sandbox always convert with the same rate.","resolution":"Usage converts with the latest rate published at or before the moment it happened. A rate is valid for at most {{hours}} hours; older than that, usage is held as FX_NOT_FOUND instead of using a stale rate.","sources":"Banxico FIX covers USD and MXN: it takes effect at 12:00 Mexico City time on the day it is published, weekends and holidays keep the previous one, and MXN → USD is its reciprocal. Any other pair needs a governed rate, approved by a second person. Rates are never derived through a third currency."},"pending":{"title":"Rates waiting for approval: {{count}}","description":"A requested rate prices nothing until another finance approver approves it."},"empty":{"title":"No exchange rate is needed","description":"Every rate card is in {{currency}}, the ledger's currency, and no usage is held for an exchange rate."},"otherPair":{"title":"Request a rate for another pair","description":"For a currency no platform source publishes, for example before creating a rate card in it. The ledger's currency is {{currency}}."},"pairTitle":"{{from}} → {{to}}","status":{"covered":"Covered now","expired":"Expired","missing":"Not covered"},"sourceBadge":{"platform":"{{source}} · series {{series}}","tenant":"Governed workspace rate"},"sources":{"banxico":"Banxico FIX","tenant_manual":"Workspace rate","correction":"Correction","identity":"Same currency"},"notNeeded":"No rate card uses this pair","timeline":{"window":"Last {{days}} days","covered":"{{from}} to {{to}}: covered by {{source}}","gap":"{{from}} to {{to}}: not covered"},"facts":{"latest":"Latest rate in force from {{at}} ({{age}} h ago)","validUntil":"valid until {{at}}","reciprocal":"rate {{rate}} (1 / {{observed}})","rate":"rate {{rate}}","nextExpected":"next publication expected {{at}} ({{time}} {{zone}})"},"failures":{"unsupported_pair":"No platform source publishes this pair. Request a governed rate for it.","pending_manual_approval":"A rate for this pair is waiting for approval by a finance approver.","stale_feed":"The latest rate is more than seven days old, so it no longer prices usage. A newer rate is needed.","missing_observation":"No rate covers these dates."},"nearingExpiry":"The rate in force expires within 48 hours.","feedNotConnected":"{{source}} is the source for this pair, but its daily publication does not reach this workspace's ledgers yet. Until it does, usage in this pair stays held and re-rates on its own once the rates arrive.","feed":{"title":"Feed health","status":{"on_time":"On time","late":"Late","stale":"Stale","never_received":"Never received"},"lastFix":"Last {{source}} rate received: {{day}} (revision {{revision}}), {{hours}} h ago","expected":"expected by now: {{day}}","workspaceInStep":"This workspace holds the latest rate, for Production and Sandbox.","workspaceBehind":"This workspace does not hold the latest rate yet; it is applied within minutes of arriving.","lateHint":"The {{source}} publication is later than expected. A Banxico holiday also reads as late. Usage in this pair stays held and re-rates on its own when the rate arrives; the platform team is alerted.","staleHint":"The last {{source}} rate is more than seven days old, so nothing in this pair can be priced until a new one arrives. The platform team is alerted."},"dependents":{"cards":"Rate cards in this currency","card":"{{ledger}} · {{subject}} · {{status}} · {{rate}} from {{from}}","held":"Usage held for this rate","heldEvents":"{{ledger}}: {{count}} events for {{subject}}, the oldest from {{oldest}}"},"observations":{"title":"Rates","effective":"In force from","pair":"Pair","rate":"Rate","source":"Source","revision":"Revision","actions":"Actions","observedOn":"published for {{day}}","superseded":"Revision {{revision}}, replaced","live":"Revision {{revision}}"},"requests":{"title":"Requests","approved":"Approved. The rate applies to both ledgers, and held usage re-rates within about a minute.","rejected":"Rejected.","status":{"pending_approval":"Waiting for approval","approved":"Approved","rejected":"Rejected"},"kind":{"manual":"Rate {{rate}} from {{from}} to {{to}}","correction":"Correction to {{rate}} of the rate from {{from}}"},"evidence":"Source: {{source}} · Evidence: {{evidence}}","reason":"Reason: {{reason}}","notes":"Decision notes: {{notes}}","otherApprover":"You requested this rate, so another finance approver decides it.","notesLabel":"Decision notes (required to reject)"},"actions":{"openCoverage":"Open FX coverage for {{from}} → {{to}}","requestRate":"Request a governed rate","requestCorrection":"Request a correction","approve":"Approve","reject":"Reject","submitRate":"Send for approval","submitCorrection":"Send correction for approval"},"form":{"title":"Exchange rate needed: {{from}} → {{to}}","blocked":"This rate can be saved and approved, but not activated until its dates are covered. {{reason}}","nearingExpiry":"Covered now, but the rate in force expires within 48 hours.","covered":"Covered for its dates so far.","draftAllowed":"Saving the request never waits for an exchange rate; activation does.","sourceReference":"Where the rate comes from","evidence":"Evidence","reason":"Reason","requested":"Sent for approval. It prices nothing until another finance approver approves it.","manualHint":"A governed rate applies to both ledgers once approved. It covers at most seven days from its start; enter a new one for later dates.","from":"From currency","to":"To currency","rate":"Rate (one unit of the first currency in the second)","effectiveFrom":"In force from (UTC)","effectiveTo":"In force until (UTC, optional)","maxAge":"At most seven days after the start.","correctionRequested":"Correction sent for approval. Posted journals stay as they are; held usage re-rates once it is approved.","correctionHint":"An exceptional correction replaces this rate from its start, once another person approves it. Journals already posted are never changed.","correctedRate":"Corrected rate"},"errors":{"invalidPair":"Enter two different three-letter currency codes.","platformPair":"A platform source already publishes this pair, so a workspace rate cannot replace it. Request a correction of one of its rates instead.","invalidRate":"Enter a positive rate with at most eight decimals, different from the one it corrects.","invalidRange":"Enter a start date, and an end within seven days after it (or none).","evidenceRequired":"Say where the rate comes from and give its evidence.","reasonRequired":"Give a reason (up to 1000 characters).","alreadyRated":"A rate for this pair already starts at that moment. Request a correction of it instead.","alreadyRequested":"A request for this pair and moment is already waiting for approval.","rateNotFound":"That rate no longer exists or is not visible to you. Refresh the page.","correctionSuperseded":"That rate has already been replaced. Refresh the page and correct the current one.","requestNotFound":"That request no longer exists or is not visible to you. Refresh the page.","notPending":"That request has already been decided. Refresh the page.","selfApproval":"You requested this rate, so another finance approver has to decide it.","notesTooLong":"Keep the notes under 1000 characters.","noLedger":"Finance is not set up for this workspace yet.","unknownSourcePair":"That platform source does not publish this pair.","revisionConflict":"That publication conflicts with the revision already recorded.","rateCardNotFound":"That rate card no longer exists or is not visible to you.","unavailable":"The exchange-rate coverage could not be checked just now.","transient":"That could not be done just now. Try again in a moment."}},"fxReference":{"errors":{"invalidEvent":"That exchange-rate publication does not follow its contract and was not applied.","contentMismatch":"That exchange-rate publication differs from the one already recorded and was not applied.","sourceMismatch":"That exchange-rate publication does not match its platform source configuration and was not applied."}},"costSources":{"pageTitle":"Cost sources","pageDescription":"Say which money field on a record is a cost, when it is recognized, and publish it.","forbidden":"You need a finance role to open cost sources.","notProvisioned":"This workspace is not ready for finance yet.","designerTitle":"New cost source","name":"Name","entity":"Record type","amountField":"Money field","recognition":"When the cost is recognized","recognitionDefault":"The default is an explicit lifecycle event. Field-change recognition is something you opt into.","recognitionLifecycle":"When the record reaches a lifecycle state","recognitionWorkflow":"When a workflow action is recorded","recognitionCreated":"When the record is created","recognitionFieldChange":"When a chosen field changes (opt in)","actionField":"Action field","actionValue":"Value that recognizes the cost","qualifyingField":"Field whose change qualifies","dateField":"Date of the cost","dateCreated":"When the record was created","category":"Cost category","effectiveFrom":"Effective from","save":"Save draft","submit":"Submit for approval","publish":"Publish","previewTitle":"Preview sample records","preview":"Preview facts","publishedTitle":"Cost sources","empty":"No cost source has been saved yet.","recordFactsTitle":"Cost from this record","recordFact":"{{amount}} {{currency}} from {{field}} ({{event}})","categories":{"salary":"Salary","rent":"Rent","software":"Software","insurance":"Insurance","contract":"Contract","equipment":"Equipment","infrastructure":"Infrastructure","other":"Other"},"errors":{"permission":"You do not have permission to change cost sources.","selfApproval":"Someone else has to publish a cost source you prepared.","protectedField":"A hidden or protected field cannot be a cost source.","currency":"Currency must come from the money field as one fixed code or one currency field.","crossTenant":"That record type belongs to another workspace.","amount":"Choose a money field of this record type.","saveFailed":"The cost source could not be saved.","notProvisioned":"This workspace is not ready for finance yet."},"currencyFixed":"Currency {{code}} comes from this money field.","currencyField":"Currency comes from the field {{field}}.","previewEmpty":"This record type has no sample record to preview yet.","problems":{"name":"Give the cost source a name.","entity":"Choose a record type.","amount":"Choose a money field.","category":"Choose a cost category.","effectiveFrom":"Choose the date this source starts.","recognition":"Choose when the cost is recognized.","lifecycleValues":"Choose the lifecycle state that recognizes the cost.","workflowAction":"Name the action field and the value that recognizes the cost.","qualifyingField":"Choose the field whose change qualifies.","eligibility":"Eligibility needs both a field and a value.","field":"A field name is not valid."},"statuses":{"draft":"Draft","pending_approval":"Waiting for approval","active":"Published","superseded":"Replaced","rejected":"Rejected"}}},"marketplace":{"pageTitle":"Workflow Marketplace","pageDescription":"Browse, install, rate, and discuss reusable workflow templates.","common":{"featured":"Featured","private":"Private","tryAgain":"Try again","reloadPage":"Reload page","backToMarketplace":"Back to marketplace","cancel":"Cancel","previous":"Previous","next":"Next","free":"Free","install":"Install","installing":"Installing…","comments":"Comments","browseApprovedPackages":"Browse approved packages"},"componentTypes":{"data_entity":"Entity","entityUpgrade":"Entity upgrade","workflow":"Workflow","form_schema":"Form","workflow_record_start_binding":"Record start","navigation":"Menu","translation":"Strings","role":"Role","agent":"Agent","document_template":"Document","api_inbound":"API In","api_outbound":"API Out","public_page":"Page"},"detail":{"yourRating":"Your rating","commentPlaceholder":"Share how you use this template, a tip, or a question…","errorTitle":"Could not load template","errorDescription":"We could not load this workflow template. Try again or return to the marketplace.","loading":"Loading template details"},"list":{"commentPlaceholder":"Share a tip or ask a question…","publishTemplate":"Publish workflow as template","categoryExample":"e.g. Procurement","coverPreview":"Cover preview","noImage":"No image","uploadCover":"Upload cover image","removeCover":"Remove cover image","remove":"Remove","coverUrl":"Cover image URL","coverUrlPlaceholder":"…or paste an image URL","readOnlyNotice":"You can browse, rate, and comment. Installing or publishing a template requires workflow-manage access in this workspace.","yourOrganization":"Your organization","publicTemplates":"Public templates","emptyTitle":"No templates published yet","publishWorkflow":"Publish a workflow","publishLibraryTitle":"Publish a workflow to the library","publishLibraryDescription":"Turn one of this workspace's workflows into a reusable template — private to your organization or public to the whole marketplace.","loading":"Loading workflow marketplace","errorTitle":"Could not load marketplace","errorDescription":"We could not load workflow templates. Try again or reload the page."},"browse":{"pageTitle":"Marketplace packages","pageDescription":"Search, filter, and browse approved marketplace packages.","viewPackage":"View package","workflowTemplates":"Workflow templates","searchPlaceholder":"Search packages by title or summary…","search":"Search","sort":"Sort","sortRelevance":"Relevance","sortNewest":"Newest","sortPriceAsc":"Price: low to high","sortPriceDesc":"Price: high to low","sortRating":"Rating","category":"Category","allCategories":"All categories","publisher":"Publisher","allPublishers":"All publishers","componentType":"Component type","allTypes":"All types","price":"Price","allPrices":"All prices","freeOnly":"Free only","paidOnly":"Paid only","featuredPackages":"Featured packages","empty":"No approved marketplace packages match your filters."},"installed":{"pageTitle":"Installed packages","pageDescription":"Activate or uninstall marketplace packages provisioned for this workspace.","noChanges":"No component changes detected.","applyUpdate":"Apply update","activateAll":"Activate all","uninstall":"Uninstall","component":"Component","type":"Type","status":"Status","uninstallConfirmTitle":"Uninstall package?","uninstallConfirmBody":"This reverses the install using recorded provenance. Tenant resources created by this install will be deactivated or removed. This action cannot be undone from this screen.","applyUpdateConfirmTitle":"Apply package update?","settingsHeading":"How this workspace runs it","settingsDefault":"package default","settingsSaving":"Saving…","setupNeededHeading":"Setup needed before this can be used","setupNeededBody":"This package installed correctly. It is waiting on the following before it can be activated.","setupNeededSecret":"a credential is required","setupNeededValue":"a value is required","componentBlocked":"Blocked","componentBlockedDetail":"Waiting on {{field}}"},"package":{"catalog":"Package catalog","requiresAdmin":"Installing packages requires workflow admin access in this workspace.","askOwner":"Ask your team owner to purchase this add-on for the workspace.","legacyRatings":"Legacy ratings preserved from the original workflow template."},"publish":{"pageTitle":"Submit package listing","pageDescription":"Set suggested price and sales tax, then submit for mandatory LerniFlow review.","submissionTitle":"Publisher submission","submissionBody":"Package listings require mandatory LerniFlow human review before they become marketplace-visible. Suggested price and tax details are captured here for your listing.","package":"Package","selectPackage":"Select package","release":"Release","selectRelease":"Select release","suggestedPrice":"Suggested price (USD units)","currency":"Currency","taxCode":"Sales tax code (advisory)","taxCodePlaceholder":"e.g. SaaS-DIGITAL","taxInfo":"Sales tax info (JSON)","submitForReview":"Submit for review","status":"Status","suggested":"Suggested","approvedPublic":"Approved (public)","visible":"Visible","actions":"Actions","noListings":"No listings yet.","submitPriceChange":"Submit price change"},"packageAccess":{"notEntitled":"This account does not have the package that installed this resource.","adminRequired":"This action requires full workflow administration access.","managePermissionRequired":"Installing, updating and removing packages is for workspace owners and administrators. Ask one of them to make the change."},"errors":{"noFileProvided":"No file was provided.","imageTooLarge":"That image is too large. The maximum is 3 MB.","unsupportedImageType":"That image type is not supported. Use PNG, JPEG, WebP, GIF or SVG.","coverUploadFailed":"The cover image could not be uploaded.","workspaceNotFound":"That workspace was not found.","needManageToInstall":"You need workflow-manage access in this workspace to install a template.","templateNotFound":"That template was not found.","needManageToPublish":"You need workflow-manage access to publish a template.","chooseWorkflow":"Choose a workflow to publish.","nameRequired":"Give the template a name.","ratingRange":"A rating must be between 1 and 5.","commentRequired":"Write a comment first.","commentTooLong":"That comment is too long. The maximum is {{max}} characters.","actionFailed":"That could not be completed.","install":{"failed":"That package could not be installed. Please try again.","activateFailed":"That package could not be activated. Please try again.","uninstallFailed":"That package could not be uninstalled. Please try again.","releaseNotFound":"That package release was not found.","releaseMismatch":"That release belongs to a different package."},"update":{"failed":"That update could not be applied. Please try again.","rolledBack":"The update failed and everything was rolled back. Nothing changed.","installNotFound":"That installed package was not found.","installNotUpdatable":"This installation cannot be updated in its current state.","releaseNotFound":"That target release was not found.","releaseMismatch":"That release belongs to a different package.","releaseNotApproved":"That release has not been approved yet.","releaseNotNewer":"That release is not newer than the one installed.","alreadyInProgress":"An update is already running for this package.","publishFailed":"That release could not be published. Please try again."}}},"bp-admin":{"admin":{"delegatedAccess":"Delegated access","layoutDescription":"Account-scoped control center for processes, forms, agents, operations, and governance.","subtitle":"Business process administration for this account.","title":"BP Admin"},"agents":{"description":"Discover inline AgentTask extraction charters configured on workflow steps. Shared reusable agent definitions arrive in a later slice.","emptyInline":"No AI agent steps yet. Author AgentTask extraction charters inline on workflow steps (Workflow admin → Steps → AI agent task). They will appear here automatically.","nameColumn":"Agent / charter name","noMatches":"No agents match the current filters.","openWorkflowAdmin":"Open Workflow admin","searchPlaceholder":"Search by agent name, charter, workflow, or step","viewProcess":"View process"},"common":{"cancel":"Cancel","delete":"Delete","edit":"Edit"},"emailIntents":{"actionType":"Action type","addIntent":"Add intent","addRule":"Add rule","description":"Define the email intent taxonomy for this account and map each intent to a deterministic action. Classification and runtime routing are configured here; execution happens in later slices.","description2":"Description","enabled":"Enabled","expectedFields":"Expected fields (JSON)","inputMapping":"Input mapping (JSON)","intent":"Intent","intentId":"Intent ID","intentIdPlaceholder":"e.g. onboarding.request","intentsEmptyBody":"Intents name what an incoming email is about, so rules can route it.","intentsEmptyTitle":"No intents yet","label":"Label","labelPlaceholder":"e.g. Onboarding request","minConfidence":"Minimum confidence","rulesEmptyBody":"A rule decides which intent an email gets. Without one, nothing is classified.","rulesEmptyTitle":"No rules yet","selectIntent":"Select an intent to inspect expected fields.","targetWorkflow":"Target workflow"},"forms":{"description":"Discover shared forms, review structural validation, and see which processes use each schema. Editing opens the existing Form Builder.","empty":"No forms yet. Open Form Builder to create the first schema.","emptyState":"Empty","invalid":"Invalid","noMatches":"No forms match the current filters.","openBuilder":"Open Form Builder","openBuilderShort":"Open builder","processUsage":"Process usage","searchPlaceholder":"Search by name or description","unused":"Unused","usedByProcess":"Used by a process","valid":"Valid","validation":"Validation"},"governance":{"effectiveAccess":"Effective access","effectiveAccessDescription":"For each member, effective access combines membership, role, direct grants, and delegated grants. Delegated access cannot be used to elevate permissions.","manageMembers":"Manage members & roles","noCapabilities":"No BP capabilities.","noDirectCapabilities":"No direct capabilities.","ownershipNote":"Account ownership does not change when you grant these capabilities.","readOnlyNotice":"You can review effective access. Only account owners and members with Manage BP permissions can change direct grants.","selfGrantBlocked":"You cannot grant or revoke capabilities for yourself.","subtitle":"Bounded responsibilities for Business Process administration.","title":"BP capabilities"},"instances":{"completed":"Completed","empty":"No instances launched yet","instance":"Instance","launched":"Launched"},"operations":{"description":"Day-2 operational monitoring lives in the Operations workbench. Use this BP Admin entry to jump into account-scoped queues and workforce awareness.","openWorkbench":"Open operations workbench","title":"Operations"},"overview":{"accountScopedChanges":"Account-scoped changes visible to BP administrators.","active":"Active","activeProcesses":"Active processes","agentsShell":"AI agents shell","aiAgents":"AI agents","archivedInactive":"Archived / inactive","completed":"Completed","draftProcesses":"Draft processes","forms":"Forms","latestUpdates":"Latest process and form updates","lifecycleSummary":"Lifecycle summary","manageForms":"Manage forms","needsAttention":"Needs attention","noRecentActivity":"No recent process or form activity for this account yet.","openDesigner":"Open process designer","openOperations":"Open operations","operationalSummary":"Operational summary","overdue":"Overdue","quickActions":"Quick actions","recentActivity":"Recent activity","stuck":"Stuck","viewWorkbench":"View workbench","waiting":"Waiting"},"processes":{"all":"All","allStatuses":"All statuses","archive":"Archive","archived":"Archived","create":"Create","createBlank":"Create blank process","deprecate":"Deprecate","deprecated":"Deprecated","description":"Search, filter, and manage account process definitions. Published versions are immutable once they have runtime items; create a next version to change the graph.","draft":"Draft","duplicate":"Duplicate","edit":"Edit","empty":"No processes yet.","enterName":"Enter a process name","filterByOwner":"Filter by owner","name":"Process name","nameColumn":"Name","nextVersion":"Next version","noMatches":"No processes match the current filters.","open":"Open","openGraphicalDesigner":"Open graphical designer","owner":"Owner","pendingReview":"Pending review","publish":"Publish","published":"Published","readOnlyNotice":"You can browse the catalog. Process mutations require workflow manage permission.","searchByName":"Search by name","status":"Status","updatedFrom":"Updated from","updatedTo":"Updated to","validate":"Validate","versionNotice":"Active published versions are selected for new instances. Running instances stay pinned to the workflow version they started on. Referenced or published artifacts cannot be hard-deleted.","actionSucceeded":"Done.","draftSaved":"Draft saved."},"segments":{"addSegment":"Add segment","dataEntity":"Data entity","description":"Segments are reusable saved filters over a data entity. They define the set of records targeted by batch, fan-out, and bulk workflow operations.","emptyBody":"A segment is a saved filter over one data entity. Add one to reuse it across processes.","emptyTitle":"No segments yet","filterJson":"Filter (JSON)","name":"Name","namePlaceholder":"e.g. Active customers","noPreview":"Record preview is not shown for this segment.","selectSegment":"Select a segment to inspect its filter."},"versions":{"inactive":"Inactive","published":"Published","publishedBy":"Published By"},"errors":{"notAllowedToAccess":"You are not allowed to access BP Admin.","notAllowedToManage":"You are not allowed to manage processes.","nameRequired":"A process name is required.","processNotFound":"That process was not found.","duplicateFailed":"The process could not be duplicated.","duplicateStepFailed":"The process could not be duplicated: step \"{{stepKey}}\" could not be copied.","duplicatePermissionsFailed":"The process was duplicated, but step permissions could not be copied.","cloneFailed":"The next version could not be created.","definitionInvalid":"The process definition is not valid. Open the designer to correct it.","approverOnlyPublish":"Only workflow approvers can publish processes.","approverOnlyDeprecate":"Only workflow approvers can deprecate processes.","deprecateRequiresPublished":"Only published processes can be deprecated.","cannotHardDelete":"This process cannot be deleted.","approverOnlyArchive":"Only workflow approvers can archive processes.","lifecycleUpdateFailed":"That change could not be saved. Please try again.","noGraphToValidate":"This process has no diagram steps to validate. Open the designer to add them.","publishedVersionImmutable":"Published versions with runtime items cannot be changed. Create a next version first.","referencedCannotHardDelete":"Referenced or published processes cannot be deleted. Deprecate published processes instead."}},"form-builder":{"actions":{"addPiiTemplate":"Add PII field template","addPiiTemplateShort":"Add PII Field Template","publish":"Publish draft","publishShort":"Publish","save":"Save form schema","saveShort":"Save","useMinimumIntake":"Use minimum intake template","validate":"Validate form schema","validateShort":"Validate","saveDraft":"Save draft","saveDraftShort":"Save draft"},"advanced":{"description":"Schema-validated field JSON — enable editing, review diff, then Validate & apply. Never saves on blur.","title":"Advanced Configuration (JSON)"},"aggregations":{"avg":"Average","count":"Count","none":"None","sum":"Sum"},"ai":{"assistance":"AI assistance","placeholder":"e.g. create a simple contact form with name, email, message","promptLabel":"AI assistance prompt"},"builder":{"addFieldWizard":"Add field with configuration wizard","addOption":"Add option","canvas":"Canvas","canvasWidth":"Design canvas viewport width","default":"Default","deleteField":"Delete field","designCanvas":"Form design canvas","emptyCanvas":"Add a field from the palette to start designing.","fieldId":"Field id","fieldType":"Field type","fieldTypeLocked":"Field type is set when the field is added. To change it, remove this field and add a new one.","helpText":"Help text","helpTextHint":"Shown under the field at runtime","inspector":"Inspector","label":"Label","max":"Max","min":"Min","noOptions":"No options yet. Add at least one value.","options":"Options","outline":"Outline","palette":"Palette","placeholder":"Placeholder","required":"Required","schemaErrorHint":"Open Advanced: edit as JSON below to fix the schema, then return to Design.","selectField":"Select a field to edit its properties.","type":"Type","requiredTag":"required","noId":"no id","fieldCount":"{{count}} fields","advancedCount":"+{{count}} advanced","invalidJsonSchema":"Invalid JSON schema","numericRange":"Numeric range (min / max)","dateBounds":"Date bounds (ISO min / max)","lengthBounds":"Length bounds (min / max characters)","validated":"Validated — schema is ready to publish","untitledField":"(untitled)","dragAria":"Drag {{label}}","selectFieldAria":"Select field {{label}}","invalidJson":"Invalid JSON"},"computed":{"displayFormat":"Display format","displayFormatLabel":"Computed field display format","expression":"Expression","expressionPlaceholder":"e.g. subtotal * 0.16"},"container":{"addField":"Add field","fieldsInside":"Fields inside this section","value":"Value"},"dataTypes":{"date":"Date","integer":"Integer","number":"Number","string":"Text"},"fields":{"autoCreateEntity":"Auto-create linked data entity if missing","description":"Description","name":"Name","public":"Public","version":"Version"},"formats":{"currency":"Currency","none":"Default","percent":"Percent","scientific":"Scientific"},"list":{"clone":"Clone selected form schema","cloneShort":"Clone","createNew":"Create new form schema","delete":"Delete selected form schema","deleteShort":"Delete","emptyBody":"Forms collect what a process step needs from a person.","emptyTitle":"No forms yet","heading":"Form Schemas","new":"New","examplesTitle":"Examples from LerniFlow ({{count}})","examplesBody":"Shared example forms. They are not part of your team's forms and cannot be attached to your steps."},"modes":{"advancedJson":"Advanced: edit as JSON","editJson":"Edit as JSON (schema-validated)","visualBuilder":"Default visual builder (Palette / Canvas / Inspector / Outline)."},"pageDescription":"Manage form schemas for this account. Create, clone, edit, delete, preview, and capture data.","pageTitle":"Form Schemas","preview":{"arabic":"Arabic (RTL)","chinese":"Mandarin Chinese","english":"English","french":"French","language":"Preview language","languageLabel":"Language","spanish":"Spanish"},"table":{"addColumn":"Add column","capturedHint":"Captured in form data for Computed summary fields.","columns":"Columns","computedHint":"When set, column is read-only and computed per row.","editable":"Editable","expressionPlaceholder":"e.g. qty * price","footerAggregation":"Footer aggregation","noColumns":"No columns yet. Add columns for qty, price, computed importe, etc.","subtotalKeyPlaceholder":"e.g. subtotal","subtotalPlaceholder":"e.g. Subtotal"},"wizard":{"addAndConfigure":"Add & configure a field","addLineItemColumns":"Add line-item columns","calculatedField":"Calculated field (formula)","computedSummaryHint":"Computed summary fields evaluate against captured form data (including table footer capture keys).","defaultOptionsHint":"Default options are applied. Edit options in the inspector after adding the field.","fieldKey":"Field key","formulaPlaceholder":"e.g. quantity * unitPrice","pattern":"Pattern (regex)","patternPlaceholder":"Optional regular expression","quickStart":"Quick start: add the three columns of a typical line-item table — Quantity, Unit price, and a computed Line total.","rounding":"Rounding","roundingMode":"Rounding mode","skipCalculation":"Skip calculation to add a standard input field.","summaryPlaceholder":"e.g. subtotal + tax","tableHelp":"Add a column per value (e.g. Quantity, Unit price). Give a column an expression like <code>quantity * unitPrice</code> to compute a total for each row, and set a footer <strong>Sum</strong> to total the column — the footer capture key makes that total available to Computed summary fields (e.g. tax, grand total). No JSON required.","width":"Width","widthAutomatic":"Automatic (based on field type)","widthFull":"Full width","widthHint":"How wide the field appears on the form. Automatic keeps free-text compact and long fields full-width.","widthMedium":"Medium","widthShort":"Short","unitPrice":"Unit price","lineTotal":"Line total","quantity":"Quantity","subtotal":"Subtotal","type":{"text":"Text","textarea":"Long text","email":"Email","number":"Number","currency":"Currency","date":"Date","select":"Select","radio":"Radio group","nativeselect":"Dropdown","checkbox":"Checkbox","switch":"Switch","slider":"Slider","table":"Table","computed":"Computed","accordion":"Accordion","tabs":"Tabs","collapsible":"Collapsible"},"typeFallback":"Field","typeAria":"Field type {{label}}"},"invalidSchemaJson":"Invalid schema JSON","precision2to8":"Precision (2–8)","columnHeader":"Header","accessorKey":"Accessor key","dataType":"Data type","computedExpression":"Expression (computed column)","footerLabel":"Footer label","aggregation":"Aggregation","footerCaptureKey":"Footer capture key","invalidSchemaJsonTitle":"Invalid Schema JSON","noFieldsYet":"No fields yet","advancedPreserved":"Advanced (preserved)","formAuthoring":"Form authoring","previewAndCapture":"Preview & Capture","widget":{"text":"Text","textarea":"Long text","email":"Email","number":"Number","currency":"Currency","slider":"Slider","date":"Date","select":"Select","radio":"Radio group","nativeselect":"Dropdown","checkbox":"Checkbox","switch":"Switch","table":"Table","computed":"Computed","accordion":"Accordion","tabs":"Tabs","collapsible":"Collapsible","boolean":"Yes / no","addAria":"Add {{kind}} field"},"numberFormat":{"decimal":"Decimal","integer":"Integer","currency":"Currency","percent":"Percent"},"dateFormat":{"iso":"ISO (YYYY-MM-DD)","us":"US (MM/DD/YYYY)","eu":"EU (DD/MM/YYYY)"},"admin":{"governmentId":"Government ID","governmentIdDesc":"Government-issued identifier","requestAi":"Request AI assistance","requesting":"Requesting…"},"status":{"loadedIntakeTemplate":"Loaded minimum intake template. Review and save.","validationEmptySchema":"Validation failed: schema JSON is empty","validationInvalidJson":"Validation failed: invalid JSON schema","validationNameRequired":"Validation failed: name is required","error":"Error: {{message}}","deleted":"Deleted","enterPrompt":"Enter a prompt","schemaUpdatedFromAi":"Schema JSON updated from AI","aiError":"AI error: {{message}}","fixSchemaBeforePii":"Fix schema JSON before inserting the PII template.","insertedPiiTemplate":"Inserted the PII field template.","published":"Published","saved":"Saved","savedDraft":"Saved as draft"},"errors":{"piiInvalid":"This form uses the retired personal-data format: {{details}}","couldNotLoadAccount":"The account could not be loaded.","couldNotSaveSchema":"The form schema could not be saved.","couldNotCreateEntity":"The data entity could not be created.","couldNotLink":"The form could not be linked to its entity.","couldNotDeleteSchema":"The form schema could not be deleted.","promptRequired":"A prompt is required.","aiNoResponse":"The AI service returned no response.","aiRequestFailed":"The AI service could not be reached. Please try again.","entityNotGeneratedFromForm":"This form has no entity generated from it to update.","formCannotMaintainEntity":"This form cannot maintain that entity. Required fields it does not capture: {{missing}}. Fields the entity does not have: {{unknown}}.","couldNotLinkEntity":"The link could not be saved.","formNotFound":"The form could not be found.","entityNotFound":"The data entity could not be found.","couldNotPublishSchema":"The draft could not be published.","formDoesNotCaptureRequired":"This form does not capture {{missing}}, which the entity requires. Add those fields — checking the names match the entity's — or make them optional on the entity.","formAddsFieldsTheEntityLacks":"This form adds {{unknown}}, which the entity has no field for. Add them to the entity, or remove them from the form."},"confirm":{"deleteSchema":"Delete this form schema?"},"entityLink":{"linkedTo":"Linked entity: {{name}} ({{status}})","upToDate":"The entity schema matches this form.","outOfDate":"The entity schema is out of date: {{changes}}.","added":"new fields {{fields}}","removed":"removed fields {{fields}}","retyped":"changed shape for {{fields}}","update":"Update entity schema","updated":"The entity schema now matches this form.","activeNeedsUpdate":"The linked entity is active and was left unchanged; use Update entity schema when you want it to follow this form.","status":{"draft":"draft","active":"active","deprecated":"deprecated","archived":"archived"},"chooseEntity":"Choose an entity…","link":"Link to entity","unlink":"Unlink entity","linked":"The form is linked to the entity.","unlinked":"The form is no longer linked to an entity."},"lifecycle":{"label":"Status","draft":"Draft","active":"Active","deprecated":"Deprecated","archived":"Archived","unsaved":"Not saved yet"}},"public-site":{"pageTitle":"Public Site","pageDescription":"Configure the tenant microsite in focused sections, preview changes, and publish only after review.","leads":{"pageTitle":"Public Site Leads","pageDescription":"Review inbound leads from your published public forms and export CSV snapshots.","denied":"You do not have permission to view leads for this account.","exportCsv":"Export CSV","viewPiiUsage":"View PII usage","empty":"No leads yet.","submittedAt":"Submitted at","name":"Name","email":"Email","source":"Source","status":"Status"},"pii":{"pageTitle":"PII usage","pageDescription":"Inspect entity-level PII classifications and workflow-step protection policies.","denied":"You do not have permission to inspect sensitive PII metadata.","noEntities":"No entities found.","noPolicies":"No workflow-step PII policies found.","forgetDescription":"Provide a subject identifier (email or phone) to redact PII while retaining non-personal transactional records.","forgetPlaceholder":"email@example.com or +15551234","forgetTitle":"Right to be forgotten","noMetadata":"No PII metadata","processing":"Processing…","runForget":"Run forget request","loadFailed":"Failed to load PII usage.","unableForget":"Unable to process forget request.","forgetCompleted":"Forget request {{id}} completed. Redacted {{count}} rows.","notAvailable":"n/a","enterIdentifier":"Enter an email or phone identifier.","accountAndIdentifierRequired":"Both an account and an identifier are required.","forgetFailed":"The forget request could not be processed."},"admin":{"revisionWorkflow":"Revision workflow","editSite":"Edit site","previewPublish":"Preview & publish","basicsPages":"Basics & pages","lookLayout":"Look & layout","leadForms":"Lead forms","integrations":"Integrations","basicsDescription":"Site identity, default hero, SEO, and the page tree (JSON).","headerHtmlNote":"When header HTML is set, it replaces the default nav links (theme toggle stays).","lookDescription":"Override team workspace branding only when this microsite should look different.","brandingOverrides":"Branding overrides","brandingNote":"Team branding defaults come from workspace settings. Add values here only when this public site should look different from the team workspace.","publicForms":"Public Forms","publicFormsDescription":"Add public forms that can collect leads from your tenant site.","formActive":"Form is active","newForm":"New Form","createWorkflow":"Create Workflow from Public Form","deleteForm":"Delete Form","edit":"Edit","noForms":"No forms created yet.","internalIntegration":"Internal Workflow Integration","internalIntegrationDescription":"Use these links to configure workflows/forms against the generated schema and data entity.","openFormsAdmin":"Open Forms Admin","openDataEntities":"Open Data Entities","previewPublishing":"Preview & publishing","previewNote":"Preview shows the latest draft, in-review, or approved content (whichever is newest).","publishNote":"Publish only works after a reviewer approves.","openPreviewNewTab":"Open preview (new tab)","previewPopup":"Preview in popup","openLiveSite":"Open live site","pagesJsonInvalid":"Pages JSON is invalid. Fix it before saving draft.","saveDraft":"Save draft","submittedForReview":"Submitted for review. A Public-site Reviewer can approve.","submitForReview":"Submit for review","revisionApproved":"Revision approved. Someone with publish permission can go live.","approve":"Approve","revisionRejected":"Revision rejected. Editors should save a new draft.","reject":"Reject","publish":"Publish","useDefault":"Use default","revisionWorkflowNote":"Save a draft, submit for review, then a member with the Public-site Reviewer role (<code>public_site_reviewer</code>) approves. Publishing requires an approved revision and the publish permission (owners and designated roles).","pagesJsonNote":"Use <code>slug</code> for route path (home is empty string), <code>html</code> for custom content, and <code>forms</code> array to place one or many forms on a page. Set <code>showInNav: false</code> on a page to hide it from automatic top navigation only (the page route still works).","htmlPlaceholderExample":"<p>Explore <a href=\"{{ps_page_href:about}}\">{{ps_page_title:about}}</a> or <a href=\"{{ps_form_href:contact-us}}\">contact us</a>.</p>","newPageSeedHtml":"<section><h2>Why us</h2><p>Add your HTML content here.</p></section>","field":{"siteTitle":"Site title","subdomain":"Subdomain","contactFormTitle":"Contact form title","contactFormKey":"Contact form key","contactFormDescription":"Contact form description","contactSubmitLabel":"Contact submit label","entitySchemaType":"Data entity schema type","entitySchemaVersion":"Data entity schema version","heroHeadline":"Hero headline","heroSubheadline":"Hero subheadline","ctaLabel":"CTA label","ctaHref":"CTA href","seoTitle":"SEO title","seoDescription":"SEO description","topNavigation":"Top navigation","navigationSource":"Navigation source","customLayoutHtml":"Custom layout HTML (optional)","headerNavHtmlOverride":"Header navigation HTML override","publicThemeDefault":"Public theme default","layoutPreset":"Layout preset","brandNameOverride":"Brand name override","lightLogoOverride":"Light logo URL override","darkLogoOverride":"Dark logo URL override","primaryColorOverride":"Primary color override","accentColorOverride":"Accent color override","backgroundColorOverride":"Background color override","foregroundColorOverride":"Foreground color override","utilityBar":"Utility bar","heroLayout":"Hero layout","heroDensity":"Hero density","navigationStyle":"Navigation style","sectionSpacing":"Section spacing","cardStyle":"Card style","surfaceStyle":"Surface style","ctaStyle":"CTA style","bodyFont":"Body font","headingFont":"Heading font","baseFontSize":"Base font size","lineHeight":"Line height","radiusScale":"Radius scale","workspaceLogoSizeFallback":"Workspace logo size fallback","publicLogoSize":"Public logo size","cardColor":"Card color","cardForeground":"Card foreground","mutedSurface":"Muted surface","mutedForeground":"Muted foreground","borderColor":"Border color","inputColor":"Input color","ringColor":"Ring color","sidebarBackground":"Sidebar background","sidebarForeground":"Sidebar foreground","sidebarAccent":"Sidebar accent","sidebarAccentForeground":"Sidebar accent foreground","customCssOverride":"Custom CSS override","formKey":"Form key","formName":"Form name","entityTypeShort":"Entity schema type","entityVersionShort":"Entity schema version","successMessage":"Success message","leadRetentionMonths":"Keep submissions for (months)","leadRetentionHint":"Submissions older than this are deleted automatically. Leave empty to use the default of 24 months.","formSchemaJsonPreview":"Form schema JSON preview","nameColumn":"Name","activeColumn":"Active","actionColumn":"Action","publicPagesJson":"Public pages JSON (supports multiple pages, HTML and forms)","manualNavSlugs":"Manual nav slugs (one per line or comma-separated; use home for homepage)","belowHeroHtml":"Below hero HTML (replaces nothing by itself — use with preset toggles)","hideChildPagesGrid":"Hide preset “child pages” card grid (financial preset)","hideOtherAreasCards":"Hide preset “Other areas” explore cards (financial preset)","requiredFields":"Required fields (comma-separated)","allowedFields":"Allowed fields (comma-separated)","formSchemaNameLabel":"Form schema name:","dataEntityLabel":"Data entity:","runAs":"Choose the member who runs these submissions.","runAsRequired":"Choose an execution member.","runAsHelp":"Only a workspace owner can change this member. Submissions are refused until a current workspace member is selected."},"createForm":"Create form","updateForm":"Update form","formSavedWithArtifacts":"Form saved. Internal schema \"{{schema}}\" and entity \"{{entity}}\" are ready for workflows and forms.","unableSaveForm":"Unable to save form.","formDeleted":"Form deleted. Refresh to see the updated list.","draftSavedSynced":"Draft saved. Internal schema synced: {{schema}} → {{entity}}.","publishedOpenSite":"Published. Open your site and refresh to see the change.","workflowCreated":"Workflow created. Open: {{url}}","useTeamTheme":"Use team theme","useTeamThemeNote":"Clears this site's own colours, fonts and radius so it follows the team theme (the platform default when the team uses Vanilla). Brand name, logos, layout and custom CSS stay. Save to apply.","denied":"You don't have permission to manage the public site. Ask a workspace owner to make the change or to grant you access."},"publicSite":{"notPublishedTitle":"Site not published yet","notPublishedBody":"This tenant site does not have a published revision. Save your draft and click Publish from the Public Site admin module, then refresh this URL.","noRevisionFound":"No public site or revision found. Save a draft from the Public Site admin page first."},"visitor":{"cookieNote":"Necessary cookies stay enabled so the public site can work. You can separately allow analytics and marketing cookies for this site.","necessaryOnly":"Necessary only","savePreferences":"Save preferences","acceptAll":"Accept all","necessaryAlwaysOn":"Necessary cookies are always enabled.","pageNotFound":"Page not found","pageNotConfigured":"This page is not configured in the published public-site revision.","nextPage":"Next page","otherAreas":"Other areas","explore":"Explore","publicJourneys":"Public journeys for measurable growth and lead capture.","publicPages":"Public pages for lead capture, service discovery, and business growth."},"piiUsage":{"loading":"Loading PII usage…","entityHeading":"Entity field classifications","entity":"Entity","version":"Version","piiFields":"PII fields","policyHeading":"Workflow step protection policies","workflow":"Workflow","step":"Step","mode":"Mode","encryptedFields":"Encrypted fields","tokenizedFields":"Tokenised fields"},"defaults":{"leadCaptureName":"Lead capture","leadCaptureThanks":"Thanks! We will contact you shortly."},"errors":{"noPermissionManageSite":"You do not have permission to manage public sites for this account.","subdomainInvalid":"The subdomain is not valid. Use lowercase letters, numbers and hyphens only.","subdomainReserved":"That subdomain is reserved. Choose a different one.","titleRequired":"A site title is required.","noPermissionSubmitReview":"You do not have permission to submit public site changes for review.","saveDraftFirst":"Save a draft before submitting it for review.","latestMustBeDraft":"The latest revision must be a draft. Save your changes as a draft first.","noPermissionApprove":"You do not have permission to approve public site revisions. Ask for the Public-site Reviewer role.","siteNotFound":"The public site was not found.","noRevisionWaiting":"No revision is waiting for review.","noPermissionReject":"You do not have permission to reject public site revisions.","noPermissionPublish":"You do not have permission to publish public sites for this account.","createDraftFirst":"Create a draft before publishing.","noApprovedRevision":"There is no approved revision to publish. Submit a draft for review, then have a Public-site Reviewer approve it.","noPermissionManageForms":"You do not have permission to manage forms for this public site.","createSiteDraftFirst":"Create a public site draft before adding forms.","formKeyAndNameRequired":"A form key and name are required.","siteNotFoundForAccount":"No public site was found for this account.","needWorkflowManage":"You need the workflow.manage permission to scaffold workflows from forms.","createSiteFirst":"Create your public site first.","formNotFound":"The form was not found.","entityNotCreated":"The data entity {{schemaType}} v{{schemaVersion}} could not be created or found.","schemaNotCreated":"The internal form schema \"{{schemaName}}\" v{{schemaVersion}} could not be created or found.","revisionStatusUnsupported":"The site's revision workflow is not available yet. Please contact your administrator.","couldNotUpdateRevision":"The revision could not be updated.","couldNotCreateSite":"The public site could not be created.","couldNotUpdateSite":"The public site could not be updated.","couldNotSaveForm":"The form could not be saved.","couldNotUpsertEntity":"The internal data entity could not be saved.","couldNotCreateWorkflow":"The workflow could not be created.","couldNotPublishSite":"The public site could not be published.","couldNotUpsertSchema":"The internal form schema could not be saved.","workflowCreatedNoLink":"The workflow was created, but no link came back for it.","invalidLeadRetention":"Keep submissions for a whole number of months between 1 and 120, or leave it empty for the default.","reviewPermissionRequired":"Approving or rejecting a site revision needs the review permission.","publishPermissionRequired":"Publishing the site needs the publish permission."},"ai":{"couldNotGenerate":"The page could not be generated. Please try again.","couldNotSaveDraft":"The draft could not be saved."},"submit":{"unknownHost":"This site could not be identified.","unavailable":"Submissions cannot be accepted right now. Please try again shortly.","captchaFailed":"The captcha check did not pass. Please try again.","fieldProblem":"The field \"{{field}}\" is {{reason}}.","emailRequired":"An email address is required.","formUnavailable":"This form is not available.","fieldRequired":"{{field}} is required.","idempotencyKeyReused":"This Idempotency-Key was already used for a different submission.","rejectedByService":"The submission was rejected.","couldNotSubmit":"Your request could not be submitted. Please try again.","tooLarge":"That submission is too large.","fieldTooLong":"The field \"{{field}}\" is too long.","tooMany":"Too many submissions. Please wait before trying again.","thankYou":"Thank you. We will contact you shortly."}},"workflow-admin":{"decisions":{"backToAdmin":"Back to workflow admin","keyContains":"Decision key contains","scope":"Scope","allScopes":"All scopes","accountWideOnly":"Account-wide only","noMatches":"No decision definitions match current filters.","versionHistory":"Version history","edit":"Edit","clone":"Clone","activateVersion":"Activate version","delete":"Delete","compareVersions":"Compare versions","leftVersion":"Left version","rightVersion":"Right version","selectTwo":"Select two versions to compare.","noDifferences":"No differences found between selected versions.","decisionKey":"Decision key","accountWide":"Account-wide (all workflows)","status":"Status","description":"Description","optionalDescription":"Optional description","rulesGrid":"Rules grid","rulesGridHelp":"Author gateway routing visually. DMN JSON is generated for the existing runtime evaluator.","advancedJson":"Advanced: edit as JSON","advancedJsonHelp":"Escape hatch for full-fidelity DMN JSON. Valid grid-compatible edits round-trip back into the rules grid.","cancelEdit":"Cancel edit","hitPolicy":"Hit policy","pageTitle":"Decision definitions","pageDescription":"Author gateway routing with a visual rules grid. DMN JSON remains available as an advanced escape hatch.","hitFirst":"FIRST (top match wins)","hitUnique":"UNIQUE (exactly one match)","outcomeOutputName":"Outcome output name","decisionIdOptional":"Decision id (optional)","addInput":"Add input","removeInput":"Remove input","addRule":"Add rule","removeRule":"Remove rule","input":"Input","operator":"Operator","value":"Value","valueTo":"Value to","outcome":"Outcome","createNewVersionFrom":"Create new version from this","liveVersionNote":"Live. New instances use this version; running instances keep the version they started on.","frozenVersionNote":"Published versions cannot be edited. Create a new version to change the rules.","draftCreated":"Draft v{{version}} created. Edit it below, then activate it to make it live.","editDraftTitle":"Edit draft v{{version}}","createDraftTitle":"Create decision draft","draftStatusHelp":"Saved as a draft. It goes live only when you activate it in the version history, which archives the version it replaces.","saveDraft":"Save draft","createDraft":"Create draft","saving":"Saving…","keyAndScopeFixed":"The key and scope of an existing version cannot change.","gridGenerateFailed":"Unable to generate DMN JSON from the grid.","keyRequired":"Decision key is required.","confirmDeleteVersion":"Delete this decision definition version?","filters":"Filters","workflowScope":"Workflow: {{name}}","definitionsTitle":"Decision definitions","versionDiff":"Version diff","diffPath":"Path","diffLeft":"Left","diffRight":"Right","gridUnavailable":"Grid unavailable for this definition","gridUnavailableHelp":"Use {{advanced}} below.","inputTypeNumber":"Number","inputTypeString":"String","inputTypeBoolean":"Boolean","inputTypeReference":"Reference data","inputVariables":"Input variables","expressionKey":"Expression / key","inputType":"Type","referenceDataKey":"Reference data key","rules":"Rules","hitFirstHelp":"Rules are evaluated top to bottom. The first matching row wins.","hitUniqueHelp":"Exactly one row may match. Preview reports a conflict when sample values match more than one row.","decisionIdPlaceholder":"routing","newInputLabel":"Input {{number}}","newOutputLabel":"Output {{number}}","confirmRemoveInput":"This input is filled in on rule(s) {{rules}}. Remove it anyway?","confirmRemoveOutput":"This output is filled in on rule(s) {{rules}}. Remove it anyway?","addOutput":"Add output","removeOutput":"Remove output","inputColumns":"Input columns","outputColumns":"Output columns","inputColumn":"Input","outputColumn":"Output","moveColumnEarlier":"Move column earlier","moveColumnLater":"Move column later","columnLabel":"Label","outputName":"Output name","outputRequired":"Required on every row","referenceEntity":"Reference entity","referenceField":"Reference field","selectReferenceEntity":"Choose an entity…","selectReferenceField":"Choose a field…","operatorAny":"Any value","operatorScalar":"Compare","operatorIn":"In set","operatorBetween":"Range","setPlaceholder":"Comma-separated values","lowerBoundary":"Lower bound mode","upperBoundary":"Upper bound mode","ruleDetails":"Details","ruleDescription":"Description (optional)","validationTitle":"Fix these issues before saving","previewTitle":"Match preview","previewHelp":"Enter sample input values and run the same evaluator the workflow uses.","runPreview":"Run preview","previewMatched":"Row {{rule}} matches with output {{output}}.","previewNoMatch":"No row matches these sample values.","previewConflict":"UNIQUE hit policy: rules {{rules}} all match this sample. Change those rules or the sample so only one rule matches.","selectBoolean":"Choose…","booleanTrue":"True","booleanFalse":"False","validation":{"inputsRequired":"At least one input is required.","outputsRequired":"At least one output is required.","rulesRequired":"At least one rule is required.","enabledRuleRequired":"At least one enabled rule is required.","inputNameRequired":"Input name is required.","outputNameRequired":"Output name is required.","inputNameUnique":"Input name must be unique.","outputNameUnique":"Output name must be unique.","referenceRequired":"Reference inputs require an entity and field.","setEmpty":"A set needs at least one value.","intervalNotNumber":"Ranges require a number column.","boundOrder":"The lower bound must be below the upper bound.","valueRequired":"A value is required.","numberInvalid":"Enter a canonical number.","booleanInvalid":"Choose true or false.","outputRequired":"A required output needs a value."},"confirmRemoveAction":"Remove column","keepColumn":"Keep column"},"emailProviders":{"pageTitle":"Email Providers","pageDescription":"Configure inbound and outbound email for workflow triggers and SendEmail steps — with secrets vaulted like AI provider keys.","description":"Workflow email steps and inbound triggers use these providers in priority order (lowest number first). SMTP passwords, API keys, and inbound webhook secrets are encrypted at rest and never shown again after saving.","provider":"Provider","labelOptional":"Label (optional)","labelPlaceholder":"e.g. Primary SMTP","fromAddress":"From address","replyTo":"Reply-to","sendingDomain":"Sending domain (Mailgun)","priority":"Priority","smtpHost":"SMTP host","smtpPort":"SMTP port","smtpUser":"SMTP user","apiBaseUrl":"API base URL (Mailgun)","inboundSecretPlaceholder":"shared secret for inbound email webhooks","inboundAddresses":"Inbound addresses","add":"Add","smtpSecure":"SMTP secure (TLS)","enabled":"Enabled","addProvider":"Add email provider","saved":"Email provider saved.","removed":"Email provider removed.","none":"No email providers configured — platform environment defaults are used.","saving":"Saving…","save":"Save provider"},"aiProviders":{"pageTitle":"AI Providers","pageDescription":"Choose which AI vendors the workflow designer uses, in priority order — with your own API keys.","description":"The workflow designer tries these vendors in priority order (lowest number first) and falls back to the platform default if none succeed. Your API keys are encrypted at rest and never shown again after saving.","vendor":"Vendor","model":"Model","labelPlaceholder":"e.g. Primary OpenAI","maxTokens":"Max tokens (optional)","addProvider":"Add provider","modelChoose":"Choose a model…","modelsLoad":"Load models from provider","modelsLoading":"Loading models…","modelsTypeInstead":"Type a model instead","vendorLabel":{"openai":"OpenAI","anthropic":"Anthropic (OpenAI-compatible)","openaiCompatible":"OpenAI-compatible endpoint","ollama":"Ollama (self-hosted)"},"modelHint":{"openai":"e.g. gpt-4o, gpt-4o-mini","anthropic":"e.g. claude-sonnet-4, claude-opus-4","openaiCompatible":"the model id your endpoint serves","ollama":"e.g. qwen2.5:7b, llama3.1"},"savedNotice":"Provider saved.","removedNotice":"Provider removed.","keySet":"key set","noKey":"no key","disabledSuffix":"disabled","keyBlankHint":"(leave blank to keep the current key)","notRequiredOllama":"not required for Ollama","saveProvider":"Save provider","savingLabel":"Saving…"},"aiAssignments":{"title":"Assistant model routing","description":"Choose which AI vendor and model each assistant uses. Leave unset to inherit the platform default. A tenant default (*) applies to every assistant and agentic step unless a more specific choice overrides it.","stepOverrideNote":"An individual agentic step can also override this routing where that step is configured.","overrideProvider":"Override provider","inheritDefault":"Inherit default","resetToDefault":"Reset to default","systemProvider":{"openai":"OpenAI (platform credentials)","anthropic":"Anthropic (platform credentials)","openaiCompatible":"OpenAI-compatible (platform credentials)","ollama":"Ollama (platform credentials)"},"sourceLabel":{"tenant":"Tenant override","tenantDefault":"Tenant default","system":"System default","systemAll":"System default (all)","env":"Environment default","none":"Not configured"},"chooseProvider":"Choose a provider before saving.","noProvider":"No provider","noModel":"No model","optionalOverride":"(optional override)","useConfiguredModel":"Use configured provider model","savingLabel":"Saving…","saveLabel":"Save","modelPlaceholder":"e.g. gpt-4o-mini","effectiveLabel":"Effective:"},"health":{"pageTitle":"Workflow operations health","pageDescription":"Validate Kafka, Spring Boot worker, and Mailpit connectivity before testing no-human workflow paths.","reloadHint":"Reload this page to rerun checks.","testAt":"Then test your workflow at:"},"designerPreview":{"title":"BP Designer","readOnly":"Server-precomputed read-only preview","pageDescription":"Draft-only custom-engine designer (P3). Advanced process-model import/export remains available under Workflow Admin. No publish/cutover."},"common":{"cancel":"Cancel","edit":"Edit","delete":"Delete"},"panels":{"generateHtml":"Generate HTML","generatePdf":"Generate PDF","generateCsv":"Generate CSV","view":"View","download":"Download","generating":"Generating…","generateControlsAssessment":"Generate assessment","generateCatalog":"Generate workflow catalog","generateExecDeck":"Generate executive deck","generateOnboardingPack":"Generate implementation pack","generatedFile":"Generated {{fileName}}"},"controls":{"title":"Controls, compliance, and audit readiness","description":"Assess published workflows in the active client grant, show control and evidence gaps, and package an advisory owner-review deliverable.","formats":"Generated HTML, PDF, and DOCX assessments.","empty":"No assessment yet. Empty grant scope is reported honestly."},"heatmap":{"title":"Cross-workflow maturity heatmap","description":"Portfolio inventory of published workflows with a maturity heatmap across documentation, automation, controls, exception handling, and AI-agent usage. Scores are rule-based from workflow definitions — consultant output is advisory until the owner accepts.","empty":"No maturity heatmaps yet. Accounts with no published workflows render an honest empty state."},"dataQuality":{"title":"Data quality / entity assessment","description":"Account-scoped scan of authorized data entities for schema completeness, required-field population, null/empty coverage, type/format anomalies, and duplicate keys. Scores follow a documented rubric — consultant output is advisory until the owner accepts.","empty":"No data quality assessments yet. Accounts with no authorized entities render an honest empty state."},"execDeck":{"title":"Executive assessment deck","description":"Generate a consultant-authored, presentation-ready deck summarizing assessment findings, maturity, risks, and recommendations for stakeholders. Advisory until the client owner accepts.","formats":"Generated PPTX deck and PDF fallback.","empty":"No executive deck yet. Empty grant scope produces an honest empty-state deck."},"onboardingPack":{"title":"Implementation / onboarding pack","description":"Turn published workflows and owner-approved recommendations into an advisory rollout, role onboarding, and handover-readiness pack.","formats":"Generated HTML, PDF, and DOCX packs.","empty":"No pack yet. Missing workflows, roles, or approved recommendations will be shown as honest empty states."},"retention":{"title":"Retention / disposition report","description":"Prove artifact lifecycle and retention obligations are being met, with lifecycle totals, retention status, and overdue disposition exceptions.","empty":"No retention / disposition reports yet."},"templateInventory":{"title":"Template inventory, version history, and usage","description":"List every document template with version history and usage counts so admins can prevent uncontrolled templates and run impact analysis before retiring a version.","empty":"No template inventory reports yet. An empty account produces an honest empty-state, not fabricated counts."},"catalog":{"title":"Workflow Catalog","description":"Generate a Workflow Inventory / Process Catalog for this account. The catalog lists every business process with name, slug, version, status, step count, owner and cost-center metadata when present, published date, and last updated — plus portfolio summary counts and status groupings.","empty":"No workflow catalog artifacts yet. Accounts with no workflows will show a labeled empty state in the generated catalog."},"accessDenied":{"title":"Workflow admin","description":"Create and edit business process models for this client workspace.","requestAccess":"Request access via Practice","backHome":"Back to workspace home","operatingAccessRequired":"Operating access required","unavailable":"Workflow Admin unavailable","missingFacet":"Missing facet:","contactGrantor":"Contact <grantor>{{grantor}}</grantor> to request access.","reasons":{"signedOut":"Sign in to manage workflows for this workspace.","entitlementOwner":"Workflow design isn’t enabled on your current plan yet. Upgrade your plan to start building workflows.","entitlementMember":"This workspace does not have Workflow Admin entitlement on the current plan.","environmentScope":"You have {{level}} operating access but no development environment scope for this client.","noOperatingAccess":"Operating access is not provisioned for this client. Request configure or deploy access with development environment scope.","noLocalPermission":"You need workflow.manage permission or account ownership to open Workflow Admin.","readOnlyAccess":"You have read-only operating access for this client. Configure or deploy access is required to create or edit workflows."},"grantors":{"workspaceAdministrator":"Your workspace administrator","ownPlanSettings":"You can enable it from your plan / billing settings","billingOwner":"The workspace owner (billing / plan administrator)","delegatingAdministrator":"The client tenant administrator who granted your delegation","clientAdministrator":"The client tenant administrator","ownerOrAdministrator":"The workspace owner or an administrator","delegationManager":"The client tenant administrator who manages consultant delegations"},"facets":{"capability":"capability","environment":"environment"},"levels":{"configure":"configure","deploy":"deploy"}},"card":{"locked":"Locked — this version has run history","view":"View","deprecate":"Deprecate","archive":"Archive","delete":"Delete","publish":"Publish…","publishAria":"Publish {{name}}","requestPromotion":"Request promotion…"},"client":{"readOnlyCatalog":"Read-only process catalog","existingForms":"Existing forms to reuse","noForms":"No forms found for this account.","existingEntities":"Existing entities to reuse","noEntities":"No entities found for this account.","wizardLog":"Wizard conversation log","noTurns":"No turns yet. Each prompt/response turn is logged for efficiency analysis.","name":"Name","version":"Version","status":"Status","draftPreview":"Generated draft preview","drafting":"The assistant is drafting your process","reviewDraft":"Review draft and create workflow","back":"Back","noProcesses":"No processes to review yet","noProcessesDescription":"This client workspace has no workflow definitions visible to your delegation.","processCatalog":"Process catalog","pagination":"Workflow catalog pagination","prevPage":"Previous workflow page","previous":"Previous","nextPage":"Next workflow page","next":"Next","wizardEfficiency":"Wizard efficiency dashboard","platformAdminsOnly":"Visible only to LerniFlow platform administrators.","firstTurnRate":"Valid-on-first-turn rate","promotionRequests":"Promotion requests","promotionDescription":"Review recent environment promotion requests. Production requests from consultants require owner approval.","promotionAria":"Environment promotion requests","approve":"Approve","reject":"Reject","upgradeHint":"Upgrade the account plan or assign a beta/pro/internal subscription.","draftFailedHttp":"Failed to generate draft (HTTP {{status}}).","draftConfidenceLow":"The assistant draft could not be schema-validated, so a safe starter graph was used instead. Review/edit before creating or publishing.","draftConfidenceMedium":"Draft generated and auto-adjusted to fit the workflow schema. Review the steps, or ask follow-up prompts to refine it, before creating the workflow.","draftConfidenceHigh":"Draft generated. You can ask follow-up prompts to refine it, or continue to create the workflow.","assistantUnreachable":"Unable to reach workflow assistant.","readOnlyCatalogDescription":"You can review client process definitions here. Configure or deploy operating access is required to create or edit workflows.","sendPrompt":"Send prompt / continue conversation","creating":"Creating…","createWorkflow":"Create workflow","turnCount":"Turn count","avgLatency":"Avg latency","createUnconfirmed":"We could not confirm the workflow was created. Reload the page to check the list before trying again.","saveUnconfirmed":"We could not confirm the save. Reload the page to check before trying again.","approvePromotionAria":"Approve promotion from {{source}} to {{target}} for {{workflow}}","rejectPromotionAria":"Reject promotion from {{source}} to {{target}} for {{workflow}}","speakerYou":"You","speakerAssistant":"Assistant","statusOption":{"draft":"Draft","active":"Active","inactive":"Inactive"},"showingProcesses":"Showing {{shown}} of {{total}} processes.","pageOf":"Page {{page}} of {{total}}","latencyMs":"{{ms}} ms"},"onboardingCard":{"dismiss":"Dismiss onboarding guidance","description":"Design processes visually, connect forms and data, and monitor live activity — without starting from raw process-modeling jargon.","designProcess":"Design a process","learnMore":"Learn how it fits","title":"Create your first {{label}}","defaultLabel":"business process"},"processMapPreview":{"unavailable":"Process map preview unavailable","ariaLabel":"Process map preview for {{name}}"},"blankDraft":{"nameRequired":"Name is required.","slugRequired":"Slug is required.","noIdReturned":"Workflow was created, but its id was not returned.","create":"Create blank workflow","description":"Start with an empty draft in the visual designer. You can add steps yourself — no AI prompt required. AI-assisted creation remains available as a separate option.","name":"Name","namePlaceholder":"e.g. Customer request intake","slug":"Slug","version":"Version","cancel":"Cancel","descriptionField":"Description","descriptionPlaceholder":"What this process is for. Optional.","createDraft":"Create blank draft","createUnconfirmed":"We could not confirm the draft was created. Try again: if it was created, you will be taken to it instead of getting a second copy."},"destructive":{"affectedInstances":"Affected instances","typeNameToConfirm":"Type the workflow name to confirm permanent deletion","confirmTitle":"Confirm {{action}} — {{name}}","confirmButton":"Confirm {{action}}","confirming":"Confirming…","kind":{"delete":"delete","clone":"clone","archive":"archive","deprecate":"deprecate"},"consequence":{"delete":"Permanently removes this draft workflow, its steps, and permissions. This cannot be undone and there is no recovery.","clone":"Creates a new draft copy from this version. The source workflow and any running instances are unchanged.","archive":"Soft-archives this version: hidden from new work, but existing instances remain pinned. Retained per tenant policy for audit and recovery.","deprecate":"Stops new instances from this published version. Running instances continue on the pinned workflow id until they complete."},"instanceImpact_one":"{{count}} workflow instance references this version.","instanceImpact_other":"{{count}} workflow instances reference this version.","instanceImpactDelete":"Hard delete is not available while instances exist.","instanceImpactPinned":"They remain pinned to this workflow id after this action."},"promotion":{"empty":"No promotion requests yet","emptyDescription":"Environment promotion requests appear here once consultants submit stage changes. Production promotions require client owner approval.","submitted":"Promotion request submitted.","title":"Environment promotion","description":"Request a stage change for this workflow. Production promotions require client owner approval.","route":"Promotion route","selectRoute":"Select route","noRoutes":"No promotion routes are available for this workflow yet.","loading":"Loading promotion routes","selectValidRoute":"Select a valid promotion route before submitting.","routeUnavailable":"{{label}} — unavailable: {{reason}}","routesLoadFailed":"Unable to load promotion routes.","submitting":"Submitting…","request":"Request promotion","currentEnvironment":"Current deployed environment: {{environment}}","dialogTitle":"Request promotion","historyTitle":"Promotion history","historyEmpty":"No promotion requests for this workflow yet.","historyRequestedBy":"Requested by {{who}}","historyRequesterYou":"you","historyRequesterUnknown":"another user","effectSummary":"Submit a promotion request ({{route}}) for this workflow in {{workspace}}. Production promotions require client owner approval."},"errors":{"generationReference":"Reference: {{id}}","accessRequestUpdateFailed":"The access request could not be updated.","assistantUnavailable":"The workflow assistant is not available for this account.","assistantLocalOnly":"The workflow assistant is not available for local-only tenants: prompts cannot be sent to a remote service.","artifactSaveDeniedForClient":"The report could not be saved to this client workspace. Confirm your consultant delegation is active, then try again. If it keeps happening, ask the client owner to check document generation access.","workflowUnavailableRefresh":"This workflow is no longer available. Refresh the page and pick a published process.","decisionDefinitionInvalidJson":"The decision definition must be valid JSON.","dmnJsonInvalid":"That DMN definition is not valid JSON.","decisionReferenceNotAllowed":"One or more reference inputs use an entity or field you cannot use.","decisionRevisionConflict":"This draft changed while you were editing. Reload and try again.","decisionKeyRequired":"A decision key is required.","decisionSaveFailed":"The decision definition could not be saved.","decisionDefinitionNotFound":"That decision definition was not found.","versionLocked":"This workflow version is locked and cannot be changed.","stepNotFound":"That step no longer exists. Refresh the workflow to see its current steps.","stepSaveFailed":"The step could not be saved.","stepSavedGraphSyncFailed":"The step was saved, but the gateway diagram could not be updated. Reopen the designer to refresh it.","notAllowedToManage":"You are not allowed to manage workflows.","workflowNotFound":"That workflow was not found.","graphInvalid":"The workflow diagram is not valid. Open the designer to correct it.","graphSyncFailed":"The workflow steps could not be updated from the diagram.","emailFlowDraftFailed":"The email flow drafts could not be saved.","approverOnlyPublish":"Only workflow approvers can publish or deactivate workflow versions.","processModelUnparsable":"That process model could not be read.","publishIncomplete":"This workflow is not ready to publish. Review the items listed below.","referencedCannotHardDelete":"Referenced or published workflows cannot be deleted. Archive or deprecate instead.","publishedCannotHardDelete":"Published or referenced workflows cannot be deleted. Deprecate published versions instead.","deleteNotPermitted":"That workflow was not found, or you are not allowed to delete it.","cannotHardDelete":"This workflow cannot be deleted.","approverOnlyArchive":"Only workflow approvers can archive workflows.","approverOnlyDeprecate":"Only workflow approvers can deprecate published workflows.","deprecateRequiresPublished":"Only published workflows can be deprecated.","cloneFailed":"The new version could not be created.","cloneStepFailed":"The new version could not be created: step \"{{stepKey}}\" could not be copied.","clonePermissionsFailed":"The copy could not be created: its step permissions could not be copied. Nothing was left behind; try again or contact support.","assessment":{"inputInvalid":"That request was not valid. Reload the page and try again.","generationFailed":"That document could not be generated. Please try again.","requestFailed":"That request could not be completed. Please try again.","artifactNotFound":"That document was not found.","accessDenied":"You do not have access to that document.","uploadFieldsMissing":"Some upload details are missing. Choose a file and try again.","uploadInvalid":"That file could not be accepted. Check the format and size, then try again."},"aiProvider":{"modelRequired":"A model is required.","loadFailed":"The AI providers could not be loaded. Please try again.","saveFailed":"That AI provider could not be saved. Please try again.","savedButKeyFailed":"The provider was saved, but its API key could not be stored. Add the key again.","modelListFailed":"The model list could not be loaded for that provider."},"emailProvider":{"inputInvalid":"Check the highlighted fields and try again.","saveFailed":"That email provider could not be saved. Please try again.","savedButCredentialFailed":"The provider was saved, but its password or API key could not be stored. Enter the credential again.","savedButWebhookSecretFailed":"The provider was saved, but its inbound webhook secret could not be stored. Enter it again."},"promotion":{"requestNotFound":"That promotion request was not found.","requestFailed":"That promotion request could not be submitted. Please try again.","decisionFailed":"That decision could not be recorded. Please try again."},"workflowIdMissing":"That workflow could not be identified. Reopen it from the process list and try again.","formNotAvailable":"That form is not available to this workspace. Choose one from the list, or create it here first.","formLookupFailed":"The form could not be checked. Try again, or ask an administrator if it keeps happening.","restStep":{"urlInvalid":"Step {{step}}: the URL is not valid. Use a full address.","urlRequired":"Step {{step}}: enter the URL this REST call step calls.","urlScheme":"Step {{step}}: use an address that starts with https:// or http://.","urlHostTemplated":"Step {{step}}: the host must be written out in full, not inserted from workflow values.","hostNotAllowed":"Step {{step}} calls {{host}}, which is not on your allowed hosts. Add it in Settings, Integration egress, or change the URL.","credentialUnknown":"Step {{step}} uses the credential {{credential}}, which is not configured. Choose a configured credential.","connectorRequired":"Step {{step}}: choose the connector it calls through.","connectorUnknown":"Step {{step}} calls the connector {{connector}}, which is not declared.","connectorDisabled":"Step {{step}} calls the connector {{connector}}, which is disabled.","secretHeader":"Step {{step}}: the header {{header}} would carry a secret. Choose a credential instead.","secretInConfig":"Step {{step}} contains a secret value. Choose a credential instead.","secretUrl":"Step {{step}}: the URL contains what looks like a secret. Choose a credential instead.","secretQueryParam":"Step {{step}}: the query parameter {{param}} contains what looks like a secret. Choose a credential instead.","secretBody":"Step {{step}}: the body contains what looks like a secret. Choose a credential instead.","templateInvalid":"Step {{step}}: {{field}} is not a field name.","templateUnknownField":"Step {{step}}: {{field}} is not a field of this workflow."},"processModelConditionExpressions":"This process model has branch conditions LerniFlow cannot route on. Route those gateways with a decision table (outcome → step), then import again.","decisionVersionImmutable":"This version is published and cannot be edited. Create a new version from it, edit the draft, then activate it.","piiPolicyRetired":"Step PII policies are retired. Classify the fields as personal data under Data protection; their copies in each run are then protected with this workspace's keys.","documentStepInvalid":"The Generate document step “{{step}}” cannot produce its document as configured. Select it in Design to see what to fix."},"aiAssignmentErrors":{"notAllowed":"You do not have permission to manage AI assignments for this workspace.","accountNotFound":"That workspace could not be found, or you do not have access to it.","loadFailed":"We could not load the AI assignments. Please try again.","invalidAssignment":"That AI assignment is not valid.","unsupportedConsumer":"That is not something an AI model can be assigned to.","agentDefinitionNotFound":"That agent does not exist in this workspace.","modelInvalid":"The model name must be text.","invalidTenantProvider":"That is not one of your configured providers.","invalidProvider":"That is not a provider this app supports.","chooseOneProvider":"Choose either one of your configured providers or a system provider, not both.","unsupportedProvider":"That AI provider is not supported.","modelRequired":"Choose a model.","maxTokensInvalid":"Max tokens must be a whole number greater than zero.","tenantProviderNotFound":"That configured provider could not be found.","saveFailed":"We could not save the AI assignment. Please try again.","resetFailed":"We could not reset the AI assignment. Please try again."},"instanceMove":{"title":"Move running instances","description":"Preview and apply moving in-flight runs from older published versions to this version. Incompatible runs are refused with the step and reason.","noTargets":"No other published versions exist for this workflow slug.","targetVersion":"Target version","dryRun":"Dry run","apply":"Apply move","dryRunSummary":"Version {{version}}: {{movable}} movable, {{refused}} refused.","refusedInstance":"Instance stopped at step \"{{step}}\": {{reason}}.","invalidInput":"The move request was incomplete.","dryRunFailed":"The dry run could not be completed.","applyFailed":"The move could not be applied.","incompatibleInstances":"{{count}} running instance(s) are incompatible and blocked the move.","dryRunRecorded":"Dry run recorded ({{id}}); no instance was changed.","historyTitle":"Recent moves and dry runs","historyEmpty":"No moves or dry runs yet.","historyFailed":"The move history could not be loaded.","kindDryRun":"Dry run","kindApplied":"Applied move","selectTarget":"Select target version"},"readiness":{"ready":"Ready to run","notReady":"{{count}} to resolve before this can run","check":{"runnable":"Has runnable steps","configured":"Configuration complete"}},"readinessBlocker":{"reason":{"missing_form_and_completion":"People work on this step, but nothing lets them complete it. Attach a form, or give it an outcome that finishes the step.","graph_invalid":"The diagram around this step is not valid. Open it in Design and fix its connections.","document_default_locale_missing":"This step generates a document, but its default language has no template. Add a template for the default language.","entity_schema_incompatible":"This step’s form captures data its data entity would refuse. Align the form fields with the entity.","entity_not_active":"This step is bound to a data entity that is not active. Activate the entity first.","separation_of_duties_undeclared":"This step decides between outcomes but says nothing about who may decide. Set who may decide it.","projection_transition_unreachable":"This step moves a record to a state its lifecycle cannot reach. Choose a reachable state.","projection_header_stays_in_initial_state":"This step creates a record but never moves it on from its first state. Add the state it should move to.","ai_field_excluded":"This AI step uses a field that is excluded from AI. Remove the field from the step.","ai_field_unverified":"This AI step uses a field whose data protection could not be verified. Classify the field, or remove it from the step.","ai_record_lookup_invalid":"This AI step cannot look up matching records: choose the records to search and at least one field to compare, and take the names from one of the fields sent to the AI.","value_rule_invalid":"The value this step sets for {{field}} cannot be worked out: {{error}}. Open the step in Steps and use a fixed value, or correct the calculation.","nonexistent_target":"This step hands off to a step that does not exist. Point it at an existing step.","unreachable_when":"One of this step’s routes can never be taken. Fix or remove that route’s condition.","dead_end_outcome":"An outcome of this step leads nowhere. Connect it to the next step or to an end.","non_terminal_no_transition":"Nothing follows this step, and it is not an end. Connect it to the next step or to an end.","end_step_with_outgoing":"This step ends the process but still routes onward. Remove its outgoing routes, or make it an ordinary step.","form_step_no_routable_outcome":"This step’s form has no outcome that moves the work on. Add an outcome and route it.","gateway_missing_decision":"This decision point has no decision attached. Attach the decision that chooses the route.","gateway_unmapped_outcome":"A decision outcome here has no route. Map every outcome to a next step.","gateway_missing_target":"A route from this decision point has no next step. Choose where it goes.","gateway_nonexistent_target":"A route from this decision point goes to a step that does not exist. Point it at an existing step.","gateway_orphaned_branch":"A route from this decision point matches no outcome of its decision. Remove it, or map it to an outcome.","document_template_unselected":"This step generates a document but has no template. Open it in Design and choose a published template.","document_template_unavailable":"The document template this step uses ({{template}} {{version}}) is no longer available. Open it in Design and choose a published template.","document_template_not_published":"The document template this step uses, {{template}} v{{version}}, is {{status}}, not published. Publish that version, or choose a published one in Design.","document_record_binding_missing":"This step generates a document but does not say which record it is about. Open it in Design and choose the record’s data entity.","document_record_entity_unavailable":"The record this document is about is a {{entity}}, and that data entity is not active or no longer exists. Activate it, or choose another in Design.","document_record_binding_mismatch":"The template {{template}} reads {{templateEntity}} records, but this step is bound to {{entity}}. Bind the step to {{templateEntity}}, or choose a template that reads {{entity}}.","document_required_source_field_missing":"The template {{template}} needs {{fields}}, which {{entity}} does not have. Add the fields to the entity, or change the template’s mappings.","gateway_decision_input_missing":"Decision input “{{input}}” at {{step}} is not bound to a record field. Open the gateway and choose the field it reads.","gateway_decision_input_ambiguous":"Decision input “{{input}}” at {{step}} could read more than one field ({{field}}). Choose one in the gateway.","gateway_decision_input_not_numeric":"Decision input “{{input}}” at {{step}} is compared as a number, but its field {{field}} is not a number or money field. Bind a number or money field.","gateway_decision_input_incompatible":"Decision input “{{input}}” at {{step}} is bound to {{field}}, whose type it cannot compare. Bind a field of the input’s type.","value_rule_outcome_unknown":"The value this step sets for {{field}} applies on {{outcome}}, which this step cannot complete with. Open the step in Steps and choose one of its outcomes.","value_rule_every_outcome":"This step writes {{fields}} on every outcome, including ones the value does not describe. Choose the outcome each value belongs to."},"unknown":"Something on this step blocks it from running. Open the step and resolve it.","detail":"{{detail}}"},"modelQualification":{"title":"Grounding qualification","description":"Evidence-required answers in a regulated domain are written only by a model route that passed the LerniFlow grounding evaluation for that domain and language. An unqualified route is rerouted to a qualified one you configured, answered with exact excerpts from your sources, or refused — never just warned about.","domainTitle":"Regulated domain","domainDescription":"The regulated domain your workspace works in. Its evidence-required answers must come from a qualified model.","domainLabel":"Regulated domain","ownerOnlyHint":"Only the workspace owner can change the regulated domain.","derivedFromProfile":"Also {{domain}}: the workspace experience profile «{{profile}}» is regulated.","derivedFromPackage":"Also {{domain}}: an installed package is in the category «{{category}}».","domainSaved":"Regulated domain saved.","noRoutes":"No model route is configured for this workspace yet.","assistantRoute":"Used by the Assistant","statusListLabel":"Qualification by domain ({{locale}})","qualifiedLocales":"Qualified in: {{locales}}","warningTitle":"Not qualified for {{domains}} ({{locale}})","warningAssistant":"Regulated questions will not be answered by this model. The Assistant uses a qualified route you configured if there is one; otherwise it shows exact excerpts from your sources, or declines.","warningRoute":"This route will not be used for regulated answers in this domain and language until it is qualified.","footnote":"Qualification is recorded by the LerniFlow Product Office per provider, model, prompt contract, verifier, language and domain. A model that has not been evaluated is not qualified.","loadFailed":"The grounding qualification could not be loaded. Try again.","invalidDomain":"Choose one of the listed domains.","ownerOnly":"Only the workspace owner can change the regulated domain.","saveFailed":"The regulated domain could not be saved. Try again.","status":{"qualified":"Qualified","expired":"Expired","unqualified":"Not qualified","notEvaluated":"Not evaluated"},"domain":{"none":"None","legal":"Legal","medical":"Medical","financial":"Financial","otherRegulated":"Other regulated","general":"General"}}},"workflow-designer":{"common":{"view":"View","download":"Download","cancel":"Cancel","delete":"Delete","add":"Add","accept":"Accept","tip":"Tip:"},"editor":{"active":"Active","correlations":{"title":"Correlations","description":"Named paths used to correlate events with this workflow.","add":"Add correlation","remove":"Remove","none":"No correlations on this workflow.","name":"Name","source":"Source path"},"createFormFirst":"Create a form under Forms first if the list is empty — otherwise the running task will show “no form configured.”","definitionJson":"Workflow definition JSON","draft":"Draft","effectiveFrom":"Effective from","effectiveUntil":"Effective until","formSchema":"Form schema","inactive":"Inactive","manualCreationHint":"Manual creation can be toggled with `instance_creation.manual_enabled` (set it to `false` for auto-triggered workflows such as public lead intake).","name":"Name","pendingReview":"Pending review","publicationStatus":"Workflow publication status","publish":"Publish","publishRefusedInvalidDefinition":"Publish refused: the workflow definition is not valid JSON, so publishing would have dropped it. Fix the definition, save it, then publish.","publishWorkflow":"Publish workflow","published":"Published.","readOnlyView":"Read-only view — inspect workflow design and steps. Editing and publishing require configure or deploy access.","saveDefinition":"Save definition","saveDetails":"Save details","saveDetailsTitle":"Save workflow details","saveStep":"Save step","saved":"Saved.","savedDetailsOnly":"Workflow details saved. Your unsaved changes to the definition — including any service level, correlations or JSON edits — were NOT saved. Use Save definition to store them.","serviceLevel":{"title":"Service level","description":"Overall due timing for the workflow and what happens when it is overdue.","add":"Add service level","remove":"Remove service level","none":"No service level on this workflow.","dueAfter":"Due after","escalation":"When overdue","explain":{"dueIn":"Due in {{days}}d {{hours}}h {{minutes}}m","dueOnField":"Due on field {{field}}","reminder":"Remind {{days}}d {{hours}}h {{minutes}}m before via {{templateKey}}","escalationRole":"then reassign to role {{roleKey}}","escalationMember":"then reassign to member {{userId}}","escalationNotify":"then notify with {{templateKey}}","escalationTransition":"then move the record to {{targetState}}","escalationStartStep":"then start step {{stepKey}}","join":"; ","none":"No service level configured."}},"slug":"Slug","status":"Status","statusDefinition":"Status & definition","tabDesign":"Design","tabSpecification":"Specification","tabSteps":"Steps","validate":"Validate","validateForPublish":"Validate workflow for publish","version":"Version","versionLocked":"This workflow version is locked because it has run history.","versionLockedDetail":"This workflow version is locked because it has run history ({{instances}} workflow instances, {{leads}} public leads). Create a new version to continue editing.","workflowDetails":"Workflow details","definitionSaved":"Definition saved.","definitionInvalidJson":"That is not valid JSON. Fix the syntax and save again.","definitionNotObject":"A definition must be a JSON object.","definitionRefused":"The definition was not saved.","definitionAiDraftApplied":"AI draft applied to the editor. Review it, then choose Save definition to persist it.","unsavedCanvasTitle":"This canvas has changes you have not saved","unsavedCanvasBody":"Leaving the designer discards them. Save the draft first, or discard them deliberately.","unsavedCanvasStay":"Stay and save","unsavedCanvasDiscard":"Discard and leave","versionLockedTitle":"This version is locked","createNewVersion":"Create new version","creatingVersion":"Creating version…","firstDeploymentPending":"Your changes were saved. First live deployment still needs a one-time setup with the LerniFlow team — use Request deployment assistance below.","confirmActivate":"Activate \"{{name}}\" version {{version}} in {{client}}. The workflow will become live for new instances in this client workspace.","confirmDeactivate":"Deactivate \"{{name}}\" version {{version}} in {{client}}. New instances will no longer start from this version in this client workspace.","confirmPublish":"Publish \"{{name}}\" version {{version}} to {{client}}. The workflow will become live for new instances in this client workspace.","validationNoSteps":"Validation failed: add at least one runnable step before publish.","validationPassed":"Validated — workflow has runnable steps and operative completion configured.","pageDescriptionView":"View this process.","pageDescriptionEdit":"Edit this process.","backToWorkflows":"Back to workflows"},"steps":{"stepKey":"Step key","label":"Label","type":"Type","stepType":"Step type","newStepType":"New step type","dataEntityOptional":"Data entity (optional)","dataEntity":"Data entity","nextStepsJson":"Next steps JSON","addPiiTemplate":"Add PII Policy Template","permissions":"Step permissions","systemRole":"System role","teamRole":"Team role","capture":"Capture","remove":"Remove","addPermission":"Add permission","savePermissions":"Save permissions","gatewayRoutingNote":"Gateway routing is configured above (decision + outcome branches). Legacy exclusive-rule tables are no longer required for decision-backed gateways.","managedByGateway":"Managed by Gateway decision & branches below. Advanced JSON is kept in sync on save.","nextStepsHint":"Next steps (JSON array of step_key and optional condition)","versionLocked":"This workflow version is locked because it has run history.","noFormSchemas":"No form schemas yet. Create one in Forms, then return here to attach it.","labelExample":"Submit request","fieldAccess":{"title":"Field access at this step","hint":"Narrow what this step may change. Entity constraints, role permissions and lifecycle locks still apply; a step never widens them.","asPermitted":"As permitted","readOnly":"Read-only","hidden":"Hidden","noEntity":"Bind a data entity to this step to set field access.","valuesTitle":"Values set at this step","valuesHint":"On open fills an empty field with an editable default. On submit stores the computed value and makes the field read-only at this step. Expressions may use the record's fields, today and now (UTC).","onOpen":"On open","onSubmit":"On submit","field":"Field","expression":"Expression","when":"When","mode":"How the value is set","modeLiteral":"Fixed value","modeExpression":"Calculated","value":"Value","chooseValue":"Choose a value…","valuePlaceholder":"Text to store, e.g. Manager approved","expressionInvalid":"This calculation cannot be worked out: {{details}}. For a word or a status, use a fixed value.","confirmClearExpression":"This will clear the calculation: a fixed value cannot hold it. Continue?","addRule":"Add value rule","removeRule":"Remove","addField":"Field key…","addFieldAction":"Add","outcome":"Outcome","anyOutcome":"Every outcome","onOutcome":"On {{outcome}}","outcomeSummaryTitle":"What each outcome writes to the record","outcomeWritesNothing":"nothing is set by this step","outcomeWritesValue":"{{field}} = {{value}}","outcomeEveryWarning":"{{fields}}: set on every outcome, including the ones it does not describe. Choose the outcome each value belongs to.","target":"Writes to","targetStep":"This step's data","targetRunRecord":"The {{entity}} record the run is on","runRecordUnknown":"run's","outcomeWritesRecordValue":"{{field}} = {{value}} on the {{entity}} record","outcomeWritesStepOnlyValue":"{{field}} = {{value}} in this step only (no record)","outcomeSummaryNoRecord":"This step stores no record, so nothing it sets is saved to one. To change the record a run is about, choose the entity under “Runs on a record” for this workflow, then set the value with “Writes to: the record the run is on”.","outcomeSummaryRunRecordHint":"To change the {{entity}} record this run is on, set a value with “Writes to: the {{entity}} record the run is on”."},"deadlines":{"title":"Deadlines","description":"Due timing, reminders, and what happens when time runs out for this step.","add":"Add deadlines","remove":"Remove deadlines","none":"No deadlines on this step.","dueAfter":"Due after","dueNone":"No due time","dueDuration":"After a duration","dueRecordField":"On a record date field","recordField":"Record date field","days":"Days","hours":"Hours","minutes":"Minutes","reminders":"Reminders","addReminder":"Add reminder","removeReminder":"Remove reminder","templateKey":"Template key","notifyTemplateKey":"Notify template key","escalation":"When overdue","escalationKind":"Action","escalationNone":"No action","escalationKinds":{"reassign_role":"Reassign to a role","reassign_member":"Reassign to a member","notify":"Send a notification","transition_record":"Move the record","start_step":"Start another step"},"roleKey":"Role","memberUserId":"Member id","entityKey":"Entity key","targetState":"Target state","selectState":"Select a state","stepKey":"Step","explain":{"dueIn":"Due in {{days}}d {{hours}}h {{minutes}}m","dueOnField":"Due on field {{field}}","reminder":"Remind {{days}}d {{hours}}h {{minutes}}m before via {{templateKey}}","escalationRole":"then reassign to role {{roleKey}}","escalationMember":"then reassign to member {{userId}}","escalationNotify":"then notify with {{templateKey}}","escalationTransition":"then move the record to {{targetState}}","escalationStartStep":"then start step {{stepKey}}","join":"; ","none":"No deadlines configured.","dueBusinessDays_one":"Due {{count}} business day after the step starts","dueBusinessDays_other":"Due {{count}} business days after the step starts","dueBusinessDaysAfterField_one":"Due {{count}} business day after {{field}}","dueBusinessDaysAfterField_other":"Due {{count}} business days after {{field}}"},"dueBusinessDays":"After business days on a calendar","businessDaysCount":"Business days","calendar":"Business calendar","chooseCalendar":"Choose a calendar","manageCalendars":"Manage business calendars","countFrom":"Counted from","countFromStepStart":"When the step starts","notWaiting":"This step finishes as soon as it runs, so it has no deadline. Deadlines apply to steps that wait: a person's task, or waiting for an event or a reply.","notWaitingWarning":"This step finishes as soon as it runs: these deadlines never start. Remove them, or put them on a step that waits.","emptyFieldWarning":"If {{field}} is empty when the step starts, no deadline is set for that run."},"controlFlow":{"title":"Control flow","description":"Next step, split, join, or subprocess for this step. Saved on the workflow definition.","next":"Next step","nextNone":"No next step","kind":"Control kind","kindNone":"None","kindSplit":"Split","kindJoin":"Join","kindSubprocess":"Subprocess","splitInto":"Split into","joinInputs":"Join inputs","joinPolicy":"Join policy","joinCount":"Required count","joinOutputs":"Join outputs","addOutput":"Add output mapping","addMapping":"Add mapping","removeRow":"Remove","sourcePath":"Source path","targetPath":"Target path","subprocessWorkflow":"Child workflow","subprocessPick":"Select a published workflow","subprocessWorkflowId":"Workflow id","subprocessVersion":"Version","subprocessInputs":"Input mappings","subprocessOutputs":"Output mappings","policies":{"all":"Wait for all","firstWins":"First to finish wins; others are cancelled","any":"Any","nOfM":"N of M"},"explain":{"none":"No control flow on this step.","next":"Continues to {{stepKey}}","split":"Splits into {{branches}}","joinAll":"Joins {{inputs}} after all finish","joinAny":"Joins {{inputs}} when any finishes","joinNOfM":"Joins {{inputs}} when {{count}} finish","joinFirstWins":"Joins {{inputs}}; first to finish wins","cancellation":"losing branches are cancelled","subprocess":"Runs child workflow {{workflowId}} version {{version}}","join":"; "}},"introReadOnly":"Review steps, forms, and permissions for this workflow.","introEditable":"Add steps and map a form (and optional data entity) to each. Set who can view or capture data per step using system roles or your team’s custom roles.","confirmDelete":"Delete this step?","emptyHint":"No steps yet. Use <strong>+ Add step</strong> below — enter a step key and label to define the first task on this draft.","noFormHint":"Steps exist, but no form is linked yet. Expand a step, choose <strong>{{formSchema}}</strong>, then <strong>{{saveStep}}</strong>.","json":{"stepActions":"Step actions (JSON) — optional","stepDataConfig":"Step data config (JSON) — optional","stepDataConfigName":"Step data config (JSON)","stepIoConfig":"Step I/O config (JSON) — optional","stepIoConfigName":"Step I/O config (JSON)","gatewayConfig":"Gateway config (JSON) — optional"},"errors":{"invalidStepDataConfig":"Step data config is not valid JSON.","invalidNextSteps":"Next steps is not valid JSON.","invalidStepActions":"Step actions is not valid JSON.","invalidGatewayConfig":"Gateway config is not valid JSON.","invalidStepIoConfig":"Step I/O config is not valid JSON.","invalidAgentTaskConfig":"The agent task configuration is not valid. Check the step data config.","gatewayNeedsDecision":"A gateway needs a decision definition. Pick one from the list.","publishEventNeedsConfig":"A Publish event step needs an event. Choose which event it publishes.","sendEmailNeedsConfig":"A Send email step needs its email set up: recipient, template or message.","generateDocumentNeedsTrigger":"A Generate document step needs a document template to generate.","waitForReplyNeedsEventWait":"A Wait for reply step needs to know which reply it waits for.","keyAndLabelRequired":"Enter a step key and a label.","versionHasRunHistory":"This workflow version has run history. Create a new version before editing."}},"properties":{"clickStep":"Click a step in the diagram to configure its properties","invalidActionsJson":"Invalid actions JSON.","invalidStepIoJson":"Invalid step I/O JSON.","invalidAutomationJson":"Invalid automation JSON.","invalidHandoffJson":"Invalid cross-workflow handoff JSON.","formSchemaMode":"Form schema editor mode","visualFormPicker":"Visual form schema picker","visual":"Visual","formSchemaIdEntry":"Form schema ID code entry","code":"Code","formSchemaId":"Form Schema ID","formSchemaUuid":"Form schema UUID","dataEntity":"Data Entity","dataEntityMode":"Data entity editor mode","visualEntityPicker":"Visual data entity picker","dataEntityIdEntry":"Data entity ID code entry","dataEntityId":"Data Entity ID","dataEntityUuid":"Data entity UUID","stepHandoff":"Step hand-off","sideEffectActions":"Side-effect actions","inputOutputMapping":"Input/Output Mapping","crossWorkflowHandoff":"Cross-Workflow Handoff","applyChanges":"Apply Changes","formSchemaLabel":"Form Schema"},"decision":{"noRules":"No Decision Rules","addFirstRule":"Add First Rule","addRule":"Add Rule","conflicts":"Rule Conflicts Detected","evaluationOrder":"Evaluation Order","conditions":"Conditions","route":"Route","actions":"Actions","dragToReorder":"Drag to reorder","combineGroupsWith":"Combine groups with:","addConditionGroup":"Add Condition Group","addCondition":"Add Condition","addGroupOr":"Add Group (OR)","enterRoute":"Enter route...","match":"Match","matchAll":"ALL (AND)","matchAny":"ANY (OR)","selectField":"Select field...","selectOperator":"Select operator...","addFirstRuleHint":"Add your first routing rule to evaluate conditions and select a route.","evaluationOrderHint":"Rules are evaluated from top to bottom. The first matching rule wins."},"gateway":{"attachDecision":"Attach a decision definition, then map each outcome to the next step.","selectDecision":"Select a decision definition","mapToStep":"Map to step…","noActiveDecisions":"No active decisions — create one under Decisions admin","noRawJson":"No raw JSON required — publish will store evaluate_decision + labelled next_steps branches.","noOutcomes":"Selected decision has no extractable outcomes yet. Author rules in Decisions admin (e.g. auto / manager / finance), then re-select.","title":"Gateway decision & branches","decision":"Decision","scopeWorkflow":"this process","scopeAccount":"account","outcomeToTarget":"Outcome → target step","outcome":"Outcome","orphanedBranch":"Not an outcome of this decision — remap or remove","unmappedOutcome":"No step yet — pick one","removeBranch":"Remove","notMapped":"— Not mapped —","defaultBranch":"Otherwise (default branch)","defaultBranchHint":"Taken when no outcome has its own step.","noDefault":"— No default branch —","resolvedGraph":"Resolved branches","unmapped":"not mapped","inputsTitle":"Decision inputs","inputsHint":"Choose the record field each input of the decision reads.","inputComparesNumber":"Compared as a number","inputComparesValue":"Compared as a value","inputMatchedByName":"Reads the field with the same name.","inputReadsPath":"Reads {{path}}, as set in the decision.","selectField":"Choose a field","notBound":"— Not bound —","runValue":"Run value: {{field}}","inputMissing":"“{{input}}” reads no field of this record. Choose the field it compares.","inputAmbiguous":"“{{input}}” could read more than one field ({{field}}). Choose one.","inputNotNumeric":"“{{input}}” is compared as a number, but {{field}} is not a number or money field.","inputIncompatible":"“{{input}}” cannot compare {{field}}: the types differ.","fieldKind":{"number":"Number","integer":"Whole number","money":"Money","string":"Text","boolean":"Yes/no","date":"Date","other":"Other"}},"entity":{"fieldsOperations":"Fields & Operations","readFields":"Read Fields","writeFields":"Write Fields","variableMappings":"Variable Mappings","selectVariable":"Select variable","variableName":"Variable name","relationships":"Relationships","searchPlaceholder":"Search data entities...","notFound":"No data entities found.","noneAvailable":"No data entities available. Create a data entity first.","noneSelected":"No data entity selected. Select an entity above to configure field operations."},"form":{"fieldMappings":"Field Mappings","staticValue":"Static value","searchPlaceholder":"Search form schemas...","notFound":"No form schemas found.","noneAvailable":"No form schemas available. Create a form schema first.","noneSelected":"No form schema selected. Select a form above to see field preview and mappings."},"field":{"searchPlaceholder":"Search fields...","notFound":"No field found."},"value":{"selectValue":"Select value...","enterNumber":"Enter number...","enterValue":"Enter value..."},"operator":{"select":"Select operator..."},"bpmn":{"zoomIn":"Zoom in","zoomOut":"Zoom out","fit":"Fit","paletteHint":"Use the left palette to add tasks, events, gateways, lanes, and connectors. Click a node to edit form/entity/input-output bindings below."},"handoff":{"addAction":"Add action","defaultEnd":"Default → End","saveDefault":"Save default hand-off explicitly","actionsHint":"Each action labels an outcome and routes to the next step. Leave blank to use the default \"{{label}}\", which goes to {{step}}.","newActionLabel":"Continue","defaultTargetOption":"Default (\"{{label}}\" → {{step}})","resolvedTarget":"Resolved → {{target}}","resolvedEnd":"{{step}} (End)","noEndStep":"no End step available","outcome":"Outcome","targetStep":"Target step","resolvedDefault":"Resolved hand-off: {{label}} → {{target}} (the default; not saved until you add an action)","end":"End","requireReason":"Require a reason","requireReasonHelp":"The person choosing this action must explain it; the requester sees the reason on the returned task and in the run history.","presetApprove":"Approve","presetReject":"Reject","presetApproveReject":"Approve / Reject","noneConfigured":"No hand-off configured yet. Without one, publishing adds \"{{label}}\" to End."},"publish":{"changelogRequired":"Changelog (required)","changelogPlaceholder":"Summarize changes for operators (what moved, risk, rollback hints)…","waivers":"Published with reviewed completeness waivers","modalDescription":"This marks the draft as published and records an immutable snapshot for operators. Once instances run against this version, the graph locks — create a new version to change steps or forms.","advisoriesTitle":"Worth a look before this runs","advisory":{"separation_of_duties_undeclared":"this step decides between outcomes and says nothing about who may decide, so anyone with access can approve what they raised themselves. Set \"Decided by someone else\" on the step to change that.","projection_header_stays_in_initial_state":"this step projects a header into an entity that could still advance, but declares no transition, so the output stays in its initial state — the next process may refuse it. If it should move on, declare a \"then move it to\" transition on the projection.","value_rule_every_outcome":"a value this step sets on submit ({{fields}}) is written on every outcome — a rejection would record it too. Choose the outcome each value belongs to under \"Values set at this step\"."},"changelogMissing":"Describe what changed before publishing.","modalTitle":"Publish version {{version}}","publishing":"Publishing…","guidance":{"graphInvalid":"this step is incomplete for its type — open it in Steps, finish its configuration, then save the step.","missingFormAndCompletion":"attach a form schema or configure step actions, then save the step.","handoff":"fix the step hand-off configuration, then save the step."},"blocked":{"entitySchemaIncompatible":"Publish blocked — a form produces data its entity does not accept","entityNotActive":"Publish blocked — a step is bound to a data entity that is not active","entities":"Publish blocked — fix the data entities the steps write to","documentDefaultLocaleMissing":"Publish blocked — a Generate document step needs a template for its default locale","stepConfiguration":"Publish blocked — a step is missing its configuration","documentStep":"Publish blocked — a Generate document step cannot produce its document","stagesAndHandoffs":"Publish blocked — fix incomplete stages and broken step hand-offs","handoff":"Publish blocked — broken step hand-off","formOrCompletion":"Publish blocked — operative stages need a form or completion behavior"},"waivedNoForm":"waived; runtime may show “no form configured.”"},"shortcuts":{"title":"Keyboard Shortcuts","subtitle":"Speed up your workflow with these keyboard shortcuts","press":"Press"},"artifacts":{"controlMappingTitle":"Control & Compliance Mapping","futureStateTitle":"Future-state workflow proposal","proposalTitle":"Proposal title","proposalTitlePlaceholder":"e.g. Streamlined approval and automation path","futureStateSummary":"Future-state summary","futureStatePlaceholder":"Describe the recommended future-state design...","proposedChange":"Proposed change","expectedBenefit":"Expected benefit","operationalTitle":"Operational performance","onboardingTitle":"Role-based Onboarding Pack","targetRole":"Target role","selectWorkflowRole":"Select a workflow role","taskPacketTitle":"Step task packet / case file","stepAssignment":"Step assignment","selectStepAssignment":"Select a step assignment","aiControlSheetTitle":"AI-agent Instruction & Control Sheet","aiControlSheetEmpty":"No AI-agent control-sheet artifacts yet.","aiRiskTitle":"AI-agent Risk & Readiness Assessment","aiRiskEmpty":"No AI-agent risk-assessment artifacts yet.","handoverTitle":"Deployment Readiness / Handover Report","advisoryNote":"Consultant-authored output is advisory until the owner accepts.","handoverEmpty":"No handover-report artifacts yet.","backlogTitle":"Prioritized Improvement Backlog / Roadmap","backlogEmpty":"No improvement-backlog artifacts yet.","reviewPackTitle":"Workflow Review Pack","reviewPackEmpty":"No review-pack artifacts yet.","specTitle":"Workflow specification","specPublishFirst":"Publish the workflow before generating a specification.","specEmpty":"No specification artifacts yet.","versionDiffTitle":"Version Diff / Release Notes","fromVersion":"From version","toVersion":"To version","versionDiffEmpty":"No version-diff artifacts yet.","controlMappingDescription":"Map each published process step to its configured controls and stored operational evidence, with honest coverage gaps.","controlMappingEmpty":"No mappings yet. Published workflows without explicit controls will render a clear no-controls state.","futureStateEmpty":"No future-state proposals yet. Capture consultant recommendations above and generate HTML, PDF, and DOCX deliverables.","operationalDescription":"Generate an immutable HTML report of run volume, cycle time, SLA adherence, and exceptions for this workflow.","operationalEmpty":"No operational performance reports yet. Reports with no matching runs will clearly show an empty state.","onboardingDescription":"Publish a role-tailored onboarding pack (HTML, PDF, and DOCX) with the steps, inputs, attachments, approvals, and checklist relevant to each role on this workflow.","onboardingEmpty":"No onboarding packs yet for this role. Select a role with assigned workflow steps and generate a pack.","taskPacketDescription":"Assemble a per-step operator packet with instructions, required inputs, prior-step context, attachments, approvals, and a completion checklist. Selecting a different step changes the packet contents.","taskPacketNoAssignments":"No run-step assignments yet. Start a workflow run to produce a packet for an assigned step.","taskPacketEmpty":"No step packets yet. Generate HTML, PDF, and DOCX for the selected assignment.","sopTitle":"Human-step Work Instruction / SOP","sopDescription":"Turn the published workflow into frontline instructions for each human step, with automated steps retained as process context.","sopEmpty":"No work instructions yet. Workflows without human steps produce an explicit no-human-steps document.","aiControlSheetDescription":"Generate a governable control sheet for each AI-agent step: prompt and instructions, tools, guardrails, data access, autonomy, and human-oversight rules. Workflows with no AI-agent steps store a labeled empty state — agent configuration is never fabricated. Secrets are","handoverDescription":"Generate a consultant handover that records what is being handed over, deploy authority (deploy grant vs support-only), readiness, evidence lineage, and owner acceptance. Missing prerequisites are labeled and never fabricated. This report does not execute deploy.","backlogDescription":"Generate a consultant deliverable that sequences improvement items from process/spec completeness, AI-agent risk findings, review-pack change impact, and captured consultant findings. Empty assessment inputs store a labeled empty roadmap — improvements are never fabricated.","aiRiskDescription":"Generate a consultant deliverable that assesses each AI-agent step for autonomy, data-access scope, human oversight, guardrail adequacy, risk rating, and readiness. Workflows with no AI-agent steps store a labeled empty state — risk findings are never fabricated. Consultant-authored output is advisory until the owner accepts. Secrets are redacted.","futureStateDescription":"Compare the published workflow's current state to consultant-authored improvement recommendations. Current state is derived read-only; proposals are advisory until the owner accepts and never modify the source workflow.","specDescription":"Generate a portable specification of this process (nodes, lanes, roles, inputs/outputs, SLAs, retry/timeout, waiting events, human/AI attributes). Stored as an immutable HTML live view and a downloadable PDF, tied to this workflow version.","versionDiffDescription":"Generate a portable release-notes document between workflow versions (added, removed, and changed steps, transitions, roles/lanes, inputs / outputs, and metadata). The file is stored as an immutable artifact you can view or download.","reviewPackDescription":"Generate a pre-publish review pack for an approver: draft vs published change set, change impact (steps, roles/lanes, inputs/outputs, AI steps, decisions, chaining/promotion), validation/readiness, and an approver checklist. Stored as an immutable HTML artifact.","generating":"Generating…","generateSop":"Generate work instruction","generateVersionDiff":"Generate version diff","generateSpec":"Generate specification","generateFutureState":"Generate proposal (HTML, PDF, DOCX)","generateHandover":"Generate handover report","generateControlMapping":"Generate mapping","generateTaskPacket":"Generate step packet (HTML, PDF, DOCX)","generateAiControlSheet":"Generate control sheet","generateBacklog":"Generate improvement backlog","generateOnboarding":"Generate onboarding pack","generateOperational":"Generate performance report","generateAiRisk":"Generate risk assessment","generateReviewPack":"Generate review pack","versionDiffSingleHint":"Only one published version exists. Generate will store a labeled baseline — it will not fabricate a diff.","versionDiffCompareHint":"Compare two published versions, or a draft against the active published version.","generatedFile":"Generated {{fileName}}","generatedFutureState_one":"Generated {{count}} artifact (HTML, PDF, DOCX).","generatedFutureState_other":"Generated {{count}} artifacts (HTML, PDF, DOCX).","generatedForRole_one":"Generated {{count}} artifact for {{role}}.","generatedForRole_other":"Generated {{count}} artifacts for {{role}}.","exportPdf":"Export PDF","handoverAccepted":"Owner accepted this handover report. Deploy was not executed."},"aiDraft":{"prompt":"Prompt","applyToDefinition":"Apply to definition","generatedResponse":"Generated assistant response","responsePlaceholder":"Generated response will appear here.","generatedJson":"Generated assistant response JSON","description":"Generate structured process, decision, and case drafts through the backend workflow assistant service.","title":"AI workflow assistant draft","artifactProcessMap":"Process map","artifactDecisionRules":"Decision rules","artifactCaseHandling":"Case handling","defaultPrompt":"Create a consultant-ready workflow draft with approval routing, escalation, and exception case handling.","generationFailedStatus":"Generation failed ({{status}}). {{detail}}","generationFailed":"Generation failed: {{detail}}","unknownError":"Unknown error","generatedSuccess":"Generated {{artifacts}} draft successfully.","generateFirst":"Generate a draft first.","noDraftData":"Response did not include draft data.","applied":"Applied generated draft to definition editor.","parseFailed":"Cannot parse generated draft JSON.","generateDraft":"Generate draft"},"blankDraft":{"notOperable":"not operable at runtime","notPublishable":"not publishable yet","forms":"Forms","useMinimumIntake":"Use minimum intake template","steps":"Steps","dataEntity":"Data entity","openForms":"Open Forms","backToList":"Back to workflow list","saveAnytime":"Save details on the Workflow tab anytime. Publish stays incomplete","reasonAddStep":"add at least one step","reasonAttachForm":"attach a form schema to the first human step (otherwise the running task cannot capture input)","reasonChangeStatus":"change status from Draft when the process is ready (Active requires publish permission)","ariaNeedsForm":"Attach form guidance","ariaBlank":"Blank draft guidance","titleNeedsForm":"Next: attach a form — {{name}}","titleDraftCreated":"Draft created — {{name}}","needsFormBody":"Your draft has a first step, but it is still <strong>{{state}}</strong> until a form schema is linked. Without a form, participants see “no form configured.”","emptyBody":"This is a normal workflow draft with an empty canvas. It is <strong>{{state}}</strong> until you design the path.","needsFormStep1":"Open <formsLink>{{forms}}</formsLink> and create a minimum form (or select an existing compatible one). Use <strong>{{template}}</strong> if you need a starter schema — no AI required.","needsFormStep2":"Return here → <strong>{{steps}}</strong> → expand the step → choose <strong>{{formSchema}}</strong> → <strong>{{saveStep}}</strong>.","needsFormStep3":"Optionally set <strong>{{dataEntity}}</strong> (auto-created from the form when enabled). Then set status to Active when ready.","emptyStep1":"Open the <strong>{{steps}}</strong> tab and choose <strong>+ {{addStep}}</strong>. Enter a step key and label (minimum to get started).","emptyStep2":"Create or select a form in <formsLink>{{forms}}</formsLink>, then attach it on the step via <strong>{{formSchema}}</strong> → <strong>{{saveStep}}</strong>.","addStep":"Add step","saveAnytimeReasons":"Save details on the Workflow tab anytime. Publish stays incomplete while you still need to: {{reasons}}.","openStepsToAttach":"Open Steps to attach form","addFirstStep":"Add first step"},"stepActions":{"configure":"Configure automated actions when this step completes","addAction":"Add Action","sendNotification":"Send notification","actionType":"Action Type","sendEmail":"Send Email","generateDocument":"Generate Document","apiCall":"API Call","updateEntity":"Update Entity","createRecord":"Create Record","sendNotificationType":"Send Notification","templateOptional":"Template (Optional)","bodyOptional":"Body (Optional)","templateId":"Template ID","format":"Format","wordDocx":"Word (DOCX)","filenameOptional":"Filename (Optional)","dataSourceOptional":"Data Source (Optional)","endpointUrl":"Endpoint URL","httpMethod":"HTTP Method","requestBody":"Request Body (Optional, JSON)","timeout":"Timeout (ms, Optional)","entityId":"Entity ID","fieldName":"Field Name","newValue":"New Value","entityType":"Entity Type","recordData":"Record Data (JSON)","recipient":"Recipient","channel":"Channel","email":"Email","pushNotification":"Push Notification","message":"Message","toEmailAddress":"To (Email Address)","subject":"Subject","subjectExample":"Task Assigned: {workflow.title}","bodyExample":"Hello {workflow.assignee_name}, you have been assigned...","notificationExample":"You have a new task: {workflow.title}"},"actions":{"cancel":"Cancel","edit":"Edit"},"documentTrigger":{"defaultLocale":"Default locale","defaultLocaleHelp":"Used when the run's language has no template of its own.","noTemplateOption":"{{locale}} (no template)","missingTemplatePolicy":"If the run's language has no template","policyUseDefault":"Use the default locale's template","policyBlock":"Stop the run and notify"},"canvas":{"paneTooNarrow":"This pane is too narrow to edit the diagram comfortably. Widen it or open the designer in a larger view."},"projections":{"title":"Rows this step hands on","description":"On a chosen outcome, the rows captured here become records of another entity, related back to this one.","needsEntity":"Bind a data entity to this step first: rows are read from the record the step stores.","noCollections":"{{entity}} has no repeating table to read rows from. Add one to the entity, or to the form this step uses.","sourceCollection":"Rows from","targetEntity":"Each row becomes","onOutcome":"On outcome","add":"Add a projection","remove":"Remove","belongsTo":"What do these rows belong to?","belongsThisRecord":"This {{entity}}","belongsResolved":"A record found for each run","belongsNone":"Nothing","throughField":"Related through which field","noFieldHolds":"No field on the new record can hold this one","matchHeaderField":"Match {{entity}}'s","matchAgainst":"against this submission's","createIfMissing":"Create one if none is found","createIfMissingHint":"Without this, a run that finds no match stops and creates nothing.","fieldMapping":"What goes in each field","notMapped":"Not mapped","lookUpBy":"Look up by","nothingMapped":"Nothing is mapped yet, so the new records would be empty.","describeThisRecord":"Create {{target}} records linked to this {{source}}.","describeResolved":"Create {{target}} records linked to the {{header}} whose {{matchField}} matches this submission's {{from}}.","describeUnparented":"Create {{target}} records, linked to nothing.","problem":{"ownershipFieldNotARelationship":"That field does not point at a record, so nothing can be related through it.","ownershipFieldCannotHoldThisRecord":"That field holds a different kind of record than the one this step stores. Pick a field that can hold it, or find a record instead.","resolveIncomplete":"Say which field to match on, and what to match it against. Without both, no record can be found.","createIncomplete":"Creating a record needs at least one field to put in it.","lookupIncomplete":"One of the field mappings says to look a value up, but not which field to look it up by. Choose one, or map the value across as it is."},"thenMoveIt":"Then move it to","leaveWhereItIs":"Leave it where it is","transitionOption":"{{key}} — ends up {{to}}"},"separation":{"title":"Decided by someone else","description":"Stop the person who wrote it from approving it. Owners and administrators cannot override it.","whoIsRefused":"Who may not decide this step","priorStepActor":"Whoever completed the previous step","initiator":"Whoever started the run","noOverride":"No role overrides this rule. In a single-operator exception the person decides anyway, confirms it each time with a reason, and the decision is recorded as self-approved.","singleOperatorException":"The only exception is a documented single-operator exception, which the primary owner of a one-person workspace can turn on.","singleOperatorExceptionLink":"Single-operator exception settings","whoIsRefusedHint":"Choose one or more. Each one chosen is refused; owners and administrators too."},"versions":{"status":{"active":"Active","draft":"Draft","deprecated":"Deprecated","archived":"Archived","unknown":"Unknown status"},"retiredWarning":"This version is deprecated. New work should use the active version."},"restStep":{"typeLabel":"REST call","title":"REST call","summary":{"unconfigured":"REST call · not configured yet","direct":"Calls {{method}} {{host}}","connector":"Calls through connector {{connector}}","credential":"credential {{credential}}"},"target":{"label":"What this step calls","direct":"A web address","connector":"A declared connector"},"method":"Method","url":{"label":"URL","placeholder":"https://api.your-system.com/v1/orders"},"host":{"allowed":"{{host}} is on your allowed hosts.","allowedList":"Allowed hosts: {{hosts}}","noneAllowed":"No hosts are allowed yet. Add the host this step calls before it can run.","manage":"Manage allowed hosts","allow":"Allow","recheck":"Check again"},"credential":{"label":"Credential","none":"No credential (unauthenticated call)","missing":"{{credential}} (not configured)","empty":"No credentials are configured yet.","manage":"Manage credentials","hint":"The secret stays in the vault. The step stores only which credential to use.","types":{"bearer":"Bearer token","basic":"Username and password","api_key":"API key","header":"Custom header","custom":"Custom headers"}},"headers":{"label":"Headers","name":"Header name","value":"Value","add":"Add header","remove":"Remove header {{name}}"},"body":{"label":"Body template","placeholder":"{\"orderId\": \"…\"}","hint":"JSON or text. Put a workflow field name in double curly braces to insert its value."},"response":{"label":"Save from the response","hint":"Copy a value from the response into a workflow field, for example response path id into field orderId.","path":"Response path","field":"Workflow field","add":"Add a value to save","remove":"Remove this value"},"reliability":{"label":"Reliability","retries":"Retries when the call fails","default":"Platform default","noRetry":"Do not retry","idempotency":"Send an idempotency key","idempotencyHint":"Every attempt of this step sends the same {{header}} value, so the receiving system can ignore duplicates.","upTo_one":"Retry once","upTo_other":"Retry up to {{count}} times"},"connector":{"label":"Connector","choose":"Choose a connector","disabled":"disabled","hint":"The connector's address, credential, retries and idempotency apply.","emptyTitle":"No connectors declared yet","emptyBody":"A connector keeps an address, a credential and a retry policy in one place, so several steps can reuse them. Declare one in Integrations, or call a web address directly.","declare":"Declare a connector","useAddress":"Call a web address instead"},"advanced":{"label":"Advanced: edit as JSON","apply":"Apply JSON","invalid":"This JSON is not a valid REST call configuration."},"issues":{"urlRequired":"Enter the URL this step calls.","urlInvalid":"This URL is not valid. Use a full address, for example https://api.your-system.com/v1/orders.","urlScheme":"Use an address that starts with https:// or http://.","urlHostTemplated":"The host must be written out in full. You can insert workflow values in the path or query, not in the host.","hostNotAllowed":"{{host}} is not on your allowed hosts, so this call would be refused. Add the host to your allowed hosts, or use a different URL.","credentialUnknown":"The credential {{credential}} is not configured for this workspace.","connectorRequired":"Choose the connector this step calls through.","connectorUnknown":"The connector {{connector}} is not declared for this workspace.","connectorDisabled":"The connector {{connector}} is disabled. Enable it in Integrations before this step can run.","secretHeader":"The header {{header}} carries authentication or a secret. Choose a credential instead of typing its value.","secretInConfig":"This configuration contains a secret value. Choose a credential instead.","secretUrl":"This URL contains what looks like a secret. Choose a credential instead of putting it in the address.","secretQueryParam":"The query parameter {{param}} contains what looks like a secret. Choose a credential instead.","secretBody":"The body contains what looks like a secret. Choose a credential instead of typing it.","templateInvalid":"{{field}} is not a field name. Use a workflow field, with its name inside the double braces.","templateUnknownField":"{{field}} is not a field of this workflow. Use a field from one of its forms or entities, or a value an earlier step saves."},"sections":{"request":"Request details"},"summaries":{"headers_one":"{{count}} header","headers_other":"{{count}} headers","query_one":"{{count}} query parameter","query_other":"{{count}} query parameters","response_one":"{{count}} value saved","response_other":"{{count}} values saved","body":"body","none":"Nothing set","idempotencyOn":"idempotency key on"},"query":{"label":"Query parameters","name":"Parameter name","value":"Value","add":"Add parameter","remove":"Remove parameter {{name}}"},"integration":{"heading":"Integration","type":"Type","kinds":{"rest_call":"REST call","soap_call":"SOAP call","mcp_tool":"MCP tool"}}},"recordLookup":{"title":"Look up matching records","description":"Before the AI answers, find the records whose fields match the names in one of its input fields, with the records linked to them. The AI is given these facts and is told not to guess them.","enable":"Look up matching records for this step","entity":"Records to search","entityPlaceholder":"Choose an entity","matchFields":"Fields to compare","matchFieldsHelp":"Accents, letter case and punctuation are ignored.","noTextFields":"This entity has no text fields the AI may read.","namesFrom":"Field that holds the names","namesFromPlaceholder":"Choose an input field","namesFromHelp":"One of the fields sent to the AI. Separate several names with semicolons or line breaks.","noInputFields":"First choose the fields sent to the AI: the names must come from one of them.","includeLinks":"Include linked records","includeLinksHelp":"Also find the records that point at each match through a relationship, with their fields and the other records they point at.","excluded":"Excluded from AI","issueField":"“{{field}}” is not a text field of the chosen entity that the AI may read. Remove it.","issueNamesFrom":"The names field “{{field}}” is not sent to the AI. Choose one of the step's input fields.","issueEntity":"The chosen entity is no longer available. Choose another one."},"stepTypes":{"start":"Start","task":"Task","publishEvent":"Publish event","gateway":"Gateway","end":"End","sendEmail":"Send email","generateDocument":"Generate document","waitForReply":"Wait for reply","agentTask":"AI agent task","systemTask":"System task","waitForEvent":"Wait for event"},"assignment":{"title":"Who gets this task","description":"Leave it with everyone allowed to take it, give it to the person a field of the record names, or route it to a direct manager from reporting lines.","pool":"Anyone allowed to take it","recordField":"The record's {{field}}","managerSubmitter":"Submitter's manager","managerNamed":"Named person's manager","managerNamedPerson":"Person","useDelegation":"Follow active manager delegation when resolving","managerPreviewSubject":"Preview for sample person","managerPreview":"Preview resolved manager","managerPreviewResolved":"Would assign to {{name}}.","managerPreviewFailed":"Preview could not be run.","managerHint":"Configure reporting lines under Settings before publishing.","managerFallback":"If no manager is active, the delegate is inactive, or the resolved person may not complete the step, the task stays in the pool.","managerRefusal":{"manager_missing":"No direct manager is active for that person at the resolution time.","manager_inactive":"The manager is no longer a member of this workspace.","relationship_ambiguous":"More than one direct manager is active for that person.","cycle_detected":"The reporting line would cycle back to the same person.","delegation_ambiguous":"More than one delegation is active for that manager.","delegate_inactive":"The delegate is no longer a member of this workspace.","separation_of_duties":"Separation of duties would block that person after resolution.","subject_inactive":"That person is not a current member of this workspace.","relationship_kind_unsupported":"That relationship kind is not supported."},"fieldMissing":"This person field no longer exists on the entity. Choose another field or leave the task with everyone allowed.","noPersonFields":"No entity has a person field yet. Add one in the entity designer to route tasks to it.","fallback":"Applies when the run was started from that record. If the field names nobody, a former member or someone not allowed to take the task, the task stays with everyone allowed."},"runRecord":{"title":"Runs on a record","description":"A workflow that runs on a record is started from that record, and its steps can write what each outcome sets to it — for example, Approve sets Stage = Closed on the matter.","entity":"Entity","noEntity":"Does not run on a record","current":"Runs on a {{entity}} record.","none":"Does not run on a record.","save":"Save","saved":"Saved. Start this workflow from a record of that entity.","how":"Start it from a {{entity}} record (its page offers this workflow). In a step, choose “Writes to: the {{entity}} record the run is on” for the values an outcome sets.","errors":{"invalid":"Choose an entity, or none.","workflowNotFound":"This workflow could not be found.","entityNotFound":"That entity is not in this workspace.","notAllowed":"Only the workspace owner or someone who manages workflows can change this.","saveFailed":"The change could not be saved. Try again."}}},"workspace":{"audit":{"autoDeleted":"Logs older than your retention period are automatically deleted","dailyJob":"A scheduled job runs daily at 2 AM UTC","enterprise":"Enterprise","exportFirst":"Export logs before they're deleted if you need long-term records","nextPurge":"Changes will take effect on the next scheduled purge (2 AM UTC)","permanent":"Deletion is permanent and cannot be undone","policyDescription":"Audit logs older than the selected period will be automatically deleted. This helps manage storage costs while maintaining compliance.","policyTitle":"Retention Policy","recommended":"Recommended","storageWarning":"Storage Warning:","updateFailed":"Failed to update retention policy","updated":"Audit log retention policy updated"},"catalog":{"emptyDescription":"This client workspace has no workflow definitions visible to your delegation.","emptyTitle":"No processes to review yet","errorDescription":"We could not load workflow definitions for this workspace. Try again or reload the page.","errorTitle":"Could not load process catalog","loading":"Loading process catalog","pageDescription":"Read-only view of client process definitions for delegated consultants.","pageTitle":"Process catalog","readOnlyDescription":"Review published and draft process maps. Configure or deploy access is required to edit.","readOnlyTitle":"Read-only process catalog","reloadPage":"Reload page","tryAgain":"Try again"},"dashboard":{"noGeneratedDocuments":"No generated documents yet. They appear here as workflows produce them."},"data":{"booleanNo":"No","booleanYes":"Yes","delete":"Delete","deleteExplanation":"The record is moved to Deleted and can be restored. It is removed from grids, dashboards, exports, and workflow lookups until restored.","deleteRecord":"Delete record","deletedRecordsTitle":"Deleted records","filterAll":"All","filterByState":"Filter by state","filterCountsLoadedOnly":"Counts cover the records loaded so far.","filterCountsThisPage":"Counts cover this page only.","filterNeedsYou":"Needs you","filterSettled":"Settled","filterWaiting":"Waiting","lifecycleAwaitingOther":"Waiting for someone else to decide.","lifecycleAwaitingYou":"Waiting for your decision.","lifecycleLocked":"Some fields cannot be changed while it is here.","lifecycleState":"Status","loadMore":"Load more","loading":"Loading…","newRecord":"New record","noDeletedRecords":"No deleted records.","noDeletedRecordsBody":"Records you delete will appear here, and can be restored.","noDeletedRecordsTitle":"Nothing deleted","noEntities":"No data entities are available to you yet. Once your team defines business entities, they’ll appear here for you to manage their records.","noRecordsBody":"Add the first one, or import them from somewhere else.","noRecordsFound":"No records found.","noRecordsInFilterBody":"No records are in this state. Choose All to see the rest.","noRecordsInFilterTitle":"Nothing in this view","noRecordsTitle":"Nothing here yet","noRecordsYet":"No records yet.","pageDescription":"Browse and manage records for the business entities your team has defined.","pageTitle":"Data","recordsLoaded_one":"{{count}} record loaded","recordsLoaded_other":"{{count}} records loaded","recordsTotal_one":"{{count}} record","recordsTotal_other":"{{count}} records","restore":"Restore","startWorkflowOnRecord":"Start {{workflow}} for this record","stateColumn":"State","usingLinkedForm":"using the linked form","maintainedBy":"Maintained by {{producer}}","maintainedShort":"Maintained by the platform","viewRecord":"View record","editRecord":"Edit record","close":"Close","rowsCount_one":"{{count}} row","rowsCount_other":"{{count}} rows","fieldsCount_one":"{{count}} field","fieldsCount_other":"{{count}} fields","noMatches":"No records match \"{{query}}\".","referenceLookupFailed":"The lookup could not be completed. Try again.","lifecycleStaleAskAgain":"This record changed after the decision was asked for. Ask again so the approver decides on the current record.","lifecycleStaleWaitRequester":"This record changed after the decision was asked for. The requester can ask again.","lifecycleAskAgain":"Ask again","collectionRow":"Row","collectionCell":"Row {{row}} · {{field}}","recordSearch":{"filter":"Filter","filterActive_one":"Filter, {{count}} condition","filterActive_other":"Filter, {{count}} conditions","title":"Show records where","matchGroup":"Records must match","matchAll":"All conditions","matchAny":"Any condition","matchingAll":"Matching all of:","matchingAny":"Matching any of:","field":"Field","operator":"Condition","value":"Value","valueFrom":"From","valueTo":"To","and":"and","chooseValue":"Choose a value","addCondition":"Add condition","removeCondition":"Remove condition","apply":"Show results","clearAll":"Clear all","removeChip":"Remove {{condition}}","activeConditions":"Active search conditions","quotedValue":"“{{value}}”","betweenValues":"{{low}} and {{high}}","conditionPhrase":"{{field}} {{operator}} {{value}}","conditionPhraseNoValue":"{{field}} {{operator}}","matchingRecords_one":"{{count}} matching record","matchingRecords_other":"{{count}} matching records","shown_one":"{{count}} shown","shown_other":"{{count}} shown","emptyTitle":"No records match","emptyBody":"Change or remove a condition to see more records.","ops":{"text_contains":"contains","text_not_contains":"does not contain","text_eq":"is","text_neq":"is not","text_begins":"begins with","text_ends":"ends with","empty":"is empty","not_empty":"is not empty","num_eq":"equals","num_neq":"does not equal","num_gt":"is greater than","num_gte":"is at least","num_lt":"is less than","num_lte":"is at most","num_between":"is between","date_eq":"is on","date_neq":"is not on","date_gt":"is after","date_gte":"is on or after","date_lt":"is before","date_lte":"is on or before","date_between":"is between","bool_is_true":"is Yes","bool_is_false":"is No","choice_eq":"is","choice_neq":"is not","choice_in":"is any of","protected_eq":"is exactly"},"unfinished":"Complete or remove the highlighted condition."},"recordView":{"navigation":"Record navigation","previous":"Previous record","next":"Next record","position":"{{index}} of {{total}}","moreDetails":"More details","noFields":"This record has no fields to show.","emptyValue":"No value","positionLoaded":"{{index}} of {{total}} loaded"}},"data.attestsDepth_one":"{{count}} level deep","data.attestsDepth_other":"{{count}} levels deep","data.attestsExplained":"This decision covers the record and everything beneath it.","data.attestsRecords_one":"{{count}} record","data.attestsRecords_other":"{{count}} records","data.collectionAddRow":"Add","data.collectionEmpty":"Nothing here yet.","data.collectionEntityMissing":"This collection points at something that no longer exists.","data.collectionFrozen":"These cannot be changed while the record is in its current state.","data.collectionReadOnly":"These are not edited here.","data.collectionRemoveRow":"Remove","data.collectionsLoading":"Loading related records","data.couldNotDelete":"Could not delete the record.","data.couldNotSave":"Could not save the record.","data.deleteRecordTitle":"Delete this record?","data.discardChildEdits":"Related rows have unsaved changes. Close and discard them?","data.driftAdded_one":"{{count}} added","data.driftAdded_other":"{{count}} added","data.driftChanged_one":"{{count}} changed","data.driftChanged_other":"{{count}} changed","data.driftMoved_one":"{{count}} moved","data.driftMoved_other":"{{count}} moved","data.driftRemoved_one":"{{count}} removed","data.driftRemoved_other":"{{count}} removed","data.hideDeleted":"Hide deleted","data.lifecycleAttests":"This decision covers {{count}} records, to a depth of {{depth}}.","data.listSeparator":", ","data.newRecordTitle":"New record","data.noValue":"No value","data.refusal.approval_basis_moved":"This record changed after the decision was asked for. The requester can ask again on the current record; a reject is still open to you.","data.refusal.decision_by_submitter":"The person who asked for a decision cannot make it.","data.refusal.decision_without_request":"Nobody has asked for a decision on this record.","data.refusal.transition_not_available":"This cannot be done here.","data.refusalAttestationDrifted":"This changed after the decision was asked for: {{what}}.","data.saveRecord":"Save","data.showDeleted":"Deleted","forum":{"moderationDescription":"Review flagged workspace forum content.","moderationTitle":"Forum moderation","pageDescription":"Workspace discussions for active members.","pageTitle":"Forum","threadDescription":"Workspace discussion thread.","threadTitle":"Forum thread"},"glExport":{"accountMapping":"Account mapping","addRow":"Add mapping row","balanceTolerance":"Balance tolerance (cents)","chooseSegment":"Choose a segment for the test export.","dateFormat":"Date format","defaultCurrency":"Default currency","downloadFailed":"Download failed","fileNamePattern":"File name pattern","fileOptions":"File options","iif":"IIF (QuickBooks Desktop)","mappingDescription":"Map each LerniFlow source account to the QuickBooks account name or number used in the file.","outputFormat":"Output format","ownerOnly":"Only a team owner can save GL export configuration.","ownerOnlyTest":"Only a team owner can run a test export.","removeRow":"Remove row","sourceAccountCode":"Source account code","sourcePlaceholder":"e.g. Checking","targetAccount":"QuickBooks target account","toleranceHint":"Journals within this many cents of balance are accepted.","validation":"Validation","validationOk":"Mapping and options look complete. Save to mark the configuration ready.","viewDetails":"View details"},"home":{"allBuckets":"All buckets","allSources":"All sources","allWorkspaces":"All workspaces","applyFilters":"Apply filters","clientWork":"Client work","delegatedDescription":"Delegated client workspaces in environments your grant allows. Open a card to switch into that client operating context.","inProgress":"In progress","inboxFilters":"Inbox filters","myTeams":"My teams","needsAction":"Needs action","next":"Next","nextUnavailable":"Next page unavailable","noDelegated":"No delegated client workspaces","noDelegatedDescription":"When a client grants your practice configure or deploy access, their workspace appears here.","noTasks":"No tasks in this inbox","noTeams":"No teams yet","noTeamsDescription":"Join or create a team to resume work. Personal home only lists teams you belong to.","openNavMenu":"Open navigation menu","openTask":"Open task","openInsights":"{{team}} Insights","openWorkspace":"Open workspace","previous":"Previous","previousUnavailable":"Previous page unavailable","recent":"Recent","refresh":"Refresh","refreshHome":"Refresh home","someWorkspacesFailed":"Some workspaces could not be loaded","waiting":"Waiting","yourTeams":"Your teams","inbox":"Inbox","inboxIntro":"Directly assigned and owned human and approval tasks across your teams. Open a card to act in that workspace — this page does not execute work.","inboxIntroWithClients":"Directly assigned and owned human and approval tasks across your teams and delegated client workspaces. Open a card to act in that workspace — this page does not execute work.","inboxEmptyNoMembership":"When you join a team or receive a client delegation, assigned and owned tasks will appear here.","inboxEmptyFiltered":"Nothing needs attention in the current filters.","normalPriority":"Normal priority","transaction":"Transaction","updated":"Updated","source":"Source","workspace":"Workspace","clientOption":"{{label}} (client)","pageOf":"Page {{page}} of {{count}}","taskType":{"humanTask":"Human task","approval":"Approval"}},"insights":{"board":"Board","last12Months":"Last 12 months","last30":"Last 30 days","last7":"Last 7 days","last90":"Last 90 days","noDashboards":"No dashboards are available for this workspace.","notMeasurable":"Not currently measurable","pageDescription":"Saved KPI views for this workspace.","pageTitle":"Insights dashboards","period":"Period","starter":{"averageCycle":"Average workflow cycle time","badge":"Starter","completed":"Completed this period","completedThisPeriod":"Completed this period","completionRate":"Completion rate","customize":"Customize","customizeError":"The starter dashboard could not be created. Try again.","description":"A read-time overview built from the data and workflows you can access.","emptyDescription":"Create a data record or start a workflow. Your first activity will appear here automatically.","emptyTitle":"Nothing to measure yet","entities":"Records by data entity","entity":"Data entity","hours":"{{count}} hours","inProgress":"In progress","moneyByStage":"Money by status or lifecycle stage","noActivity":"Create a record or start a workflow to see recent activity.","noEntities":"Create a data entity and its first record to begin measuring it.","noMoney":"Add an accessible money field and a status or stage field to an entity to see totals here.","overdue":"Overdue","pending":"Pending","recentActivity":"Recent activity","recordCreated":"{{entity}} record created","savedDescription":"Starter indicators generated from this workspace's authorized metadata.","savedName":"Starter Insights","started":"Started this period","taskScope":{"personal":"Your assigned tasks","tenant":"Workspace-wide tasks"},"tasks":"Tasks","thisMonth":"New this month","thisWeek":"New this week","title":"Starter Insights","total":"Total","workflowActivity":"Workflow {{status}}","workflows":"Workflows"},"unavailable":"This dashboard is temporarily unavailable."},"knowledge":{"analytics":"Analytics","analyticsDescription":"Read-only coverage and translation metrics for this workspace.","analyticsTitle":"KB Analytics","articleDescription":"Workspace knowledge article","articleReview":"Article review","articleTitle":"Knowledge article","backToKb":"Back to Knowledge Base","editArticle":"Edit article","editDescription":"Update the Markdown draft and submit for review.","editDraft":"Edit draft","globalDescription":"Global guidance readable by every signed-in user, alongside this workspace's own articles above.","globalTitle":"LerniFlow Knowledge Base","newArticle":"New article","newArticleDescription":"Author a Markdown draft for this workspace.","noContentVersion":"No content version available.","noGlobalArticles":"No global articles published yet.","noSpaceConfigured":"Configure a knowledge space to get started.","pageDescription":"Browse and author workspace knowledge articles.","pageTitle":"Knowledge Base","publishControlsAdmin":"Publish controls require KB Admin.","reviewPublish":"Review & publish","reviewPublishDescription":"Approve drafts, publish, unpublish, or redact workspace articles.","reviewWorkbench":"Review workbench","spaceEmpty":"No articles in this space yet.","translationReview":"Translation review","translationReviewDescription":"Review proposed, in-review, and stale locale translations."},"onboarding":{"back":"Back","backToDashboard":"Back to dashboard","brandingLater":"You can update branding and members later from workspace settings.","buildYourself":"Name your workflow and design each step in the workflow designer.","companyName":"Company or team name","companyPlaceholder":"Acme Operations","continue":"Continue","description":"Description","descriptionPlaceholder":"Capture new customer requests and route them for review.","letAssistant":"Describe the process in plain language and let the assistant draft it for you to review.","openDesigner":"Open workflow designer","pageTitle":"Set up your workspace","progress":"Onboarding progress","skipForNow":"Skip for now","startFirstProcess":"Start the first process you want to run. Build it yourself, or let the assistant draft it.","startFirstProcessFull":"Start the first process you want to run. Build it yourself, or let the assistant draft it.","welcome":"Let's get your team workspace ready. Confirm how your company or team should appear inside LerniFlow.","workflowName":"Workflow name","workflowNamePlaceholder":"Customer intake","startFirstFull":"Start with your first process. You can add more at any time.","savingTeamName":"Saving…","teamNameSaveFailed":"The name could not be saved. Please try again."},"operations":{"browseWorkflows":"Browse workflows","clearSelection":"Clear selected transaction","currentStep":"Current step","detailPreview":"Selected transaction detail preview","empty":"No operational activity yet","emptyDescription":"When workflow runs start, they appear here live in stage lanes with workforce awareness.","loading":"Loading operations workbench","misconfigured":"Misconfigured — no current step (grounding §4.4)","noWorkforce":"No workforce summary yet","noWorkforceDescription":"No members or open work to summarize.","open":"Open","openWork":"Open work","overdue":"Overdue","owner":"Owner","ownerUnassigned":"Owner: unassigned","person":"Person","preview":"Preview","selectTransaction":"Select a transaction to preview its details here without leaving the board.","signals":"Signals","stageLanes":"Operational stage lanes","subState":"Transaction sub-state","unassigned":"Unassigned","workflow":"Workflow","workforce":"Workforce awareness","workforceDescription":"Who has work, who is idle, and who is carrying overdue or blocked work.","workforceDescriptionFull":"Who has work, who is idle, and who is carrying overdue or blocked work.","workforceFull":"Who is working on what, and where the load sits.","workforceResponsive":"Workforce load by person"},"partner":{"approved":"Approved","backToDashboard":"Back to Partner Dashboard","cancel":"Cancel","client":"Client","clientWorkspace":"Client workspace","couldNotSend":"Could not send suggestion","dashboard":"Partner Dashboard","epSuggestion":"EP suggestion","experienceProfile":"Experience profile","granted":"Granted","needGrant":"You need an active delegation grant before suggesting an experience profile. Return to the partner dashboard once a client has granted access.","noGrants":"No active delegation grants yet. When a client grants access, their workspace will appear here.","noPendingRequests":"No pending delegation requests.","none":"None","noteOptional":"Note (optional)","notePlaceholder":"Explain why this profile fits the client...","pageDescription":"Manage delegated client workspaces, EP suggestions, and commission activity.","pageTitle":"Partner Dashboard","pendingApproval":"Pending approval","pendingDisbursements":"Pending disbursements","pendingRequests":"Pending delegation requests","rejected":"Rejected","requested":"Requested","selectClient":"Select client","selectProfile":"Select profile","step1":"Step 1 — choose the delegated client workspace.","step2":"Step 2 — recommend a platform experience profile.","step3":"Step 3 — add context for the client owner (max 500 characters).","suggestAnother":"Suggest another","suggestEp":"Suggest EP","suggestEpDescription":"Recommend an experience profile for a delegated client workspace.","suggestEpTitle":"Suggest Experience Profile","suggestionSent":"Suggestion sent. Awaiting client approval.","view":"View"},"records":{"calculatedFromRecords":"Calculated from related records.","calculatedFromSource":"Calculated from related {{source}}.","maintainedBy":"Maintained by {{producer}}.","maintainedByPlatform":"Calculated automatically.","ruleRefused":"This does not satisfy a rule on this entity.","ruleRefusedReason":"This does not satisfy a rule on this entity: {{reason}}."},"teamLogin":{"checkParam":"Check the `team` parameter or use the standard sign-in page.","defaultSignIn":"Default sign in","description":"Sign in with email and password or request a magic link. Sign-up is disabled on team-branded login pages.","linkNotFound":"Team login link not found","title":"Team login"},"templates":{"detailDescription":"Template details, reviews, and installation.","documentDetailDescription":"Governed lifecycle, branding, produce, and workflow-triggered documents.","documentsDescription":"Author a structured document, preview with sample data, publish, and produce safe HTML.","documentsTitle":"User document templates","loadingTemplates":"Loading document templates","loadingWorkspace":"Loading document template workspace","noReviews":"No reviews yet.","errors":{"notAllowed":"You are not allowed to do that.","installFailed":"The template could not be installed.","workflowNotFound":"That workflow was not found.","publishFailed":"The template could not be published.","reviewFailed":"The review could not be recorded.","updateFailed":"The template could not be updated.","deleteFailed":"The template could not be deleted."}},"documentTemplates":{"templateNotFound":"That template was not found.","artifactNotFound":"That artifact was not found.","rollbackNeedsPublished":"Rolling back requires the current version to be published.","noPreviousVersion":"There is no previous version to restore.","publishedCannotMutate":"A published template version cannot be changed. Fork a successor instead.","consultantUnofficial":"Consultant-authored content stays unofficial until the owner approves it.","compileFailed":"The template could not be compiled: {{details}}","couldNotLoad":"The document templates could not be loaded.","createFailed":"The template could not be created.","upload":"Upload HTML template","uploading":"Uploading…","uploadInvalid":"Choose an .html file of up to 500,000 characters.","uploadEmpty":"That file has no text to turn into a template.","requestFailed":"That request could not be completed.","previewFailed":"The preview could not be produced.","livePreviewFailed":"The live preview could not be produced.","produceFailed":"The document could not be produced.","jobNotFound":"That job was not found.","officialArtifactNotFound":"No official artifact was found.","triggerNotFound":"That trigger was not found.","triggerInvalid":"That trigger is not valid: {{details}}","triggerSaveFailed":"The trigger could not be saved.","reissueFailed":"The document could not be reissued.","producedDocuments":"Produced documents","producedFrom":"{{workflow}} · run {{run}} · step {{step}}","openRun":"Open run","builder":{"field":"Field","chooseField":"Choose a field","otherField":"Other field…","otherFieldPlaceholder":"Name of a value the entity does not have","bindEntityHint":"Choose a bound data entity above to pick its fields by name.","format":"Show as","formatText":"Text","formatNumber":"Number","formatMoney":"Money","formatDate":"Date","fieldMissing":"The bound entity no longer has the field \"{{field}}\". Choose another field."},"previewLiveData":"Preview live data","livePreviewReady":"Live-data {{format}} preview ready.","produceFormat":"Produce {{format}}","producedDocument":"Produced {{format}} document.","producedReused":"Returned the document already produced for this request.","producedForRecord":"{{format}} document generated and added to the record's documents.","openRecordDocuments":"Open the record's documents","recordPicker":{"label":"Record","labelNamed":"{{entity}} record","hint":"Live preview and Produce use this stored record. Nothing is filled with sample values.","searchPlaceholder":"Search records","loading":"Loading records…","loadFailed":"The records could not be loaded. Try again.","empty":"No records match. Create the record first, or change the search.","choose":"Choose a record","bindFirst":"Bind this template to a data entity and save it to use live records.","chooseFirst":"Choose a record first."},"errors":{"recordRequired":"Choose a record. This template is produced from one stored record and never from sample values.","recordNotFound":"That record was not found, or you cannot read it.","recordWrongEntity":"That record belongs to another data entity than the one this template is bound to.","missingFields":"The record leaves fields this template requires blank: {{fields}}. Fill them on the record, or mark them optional in the template.","bindEntityFirst":"Bind this template to a data entity and save it before previewing live data.","notAttached":"The document was generated but could not be added to the record. Try again.","outputFormatUnavailable":"This template has no supported stored output format. Choose Produce as, save the template, and try again."},"retry":"Retry","retryQueued":"Retry started. The job shows its new result below.","jobRetriesExhausted":"This job has used all its attempts. Fix the cause and complete the step again.","jobErrors":{"missingFields":"the step left fields this template requires blank: {{fields}}","notAttached":"the document was produced but could not be filed with the record","rendererFailure":"the document could not be produced: {{detail}}"},"pageSetup":{"title":"Page setup","margins":"Margins","marginValue":"{{cm}} cm on every side","typeface":"Typeface","typefaces":{"sans":"Sans-serif (Arial)","serif":"Serif (Times New Roman)"},"fontSize":"Body text size","fontSizeValue":"{{pt}} pt","hint":"Applies to Word and PDF output. Page numbers follow the document's language, which is the team's default language unless a step names another."},"approval":{"onlyOwnersPublish":"Only a workspace owner can approve and publish a template.","approversHeading":"Who can approve","approversHint":"Any workspace owner who did not create or submit this template.","noApprover":"No other workspace owner can approve this template. Make another member an owner, or, in a one-member workspace, turn on the single-operator exception for document templates.","unnamedOwner":"A workspace owner","approve":"Approve","approved":"Template approved.","selfApprove":"Approve as the only operator…","selfApproved":"Self-approved as a single-operator exception.","selfApproveTitle":"Approve your own template?","selfApproveBody":"You created or submitted this template. The single-operator exception lets you approve it yourself. It is recorded as self-approved, never as independent approval.","selfApproveReason":"Why are you approving it yourself?","selfApproveAcknowledgement":"I understand that this approval is not an independent review.","selfApproveConfirm":"Self-approve","cancel":"Cancel","refusals":{"notOwner":"Only a workspace owner can approve a template.","notInReview":"Only a template in review can be approved.","preparerCannotApprove":"You created or submitted this template, so another workspace owner must approve it.","confirmationRequired":"Confirm the self-approval with a reason and the acknowledgement."}}},"access":{"queuePagination":"Work queue pages"},"actions":{"clear":"Clear"},"select":{"segment":"Segment"},"views":{"openFullTransaction":"Open the full transaction"},"templateLifecycle":{"unknownStatus":"The template status \"{{status}}\" is not one this platform knows.","illegalTransition":"A {{status}} template cannot be {{action}}.","immutablePublished":"A published or retired template version cannot be changed. Fork a successor instead.","forkRequiresPublished":"Only a published version can be forked into a successor draft.","pinMissing":"The pinned template version was not found.","noPublishedVersion":"There is no published template version available.","rollbackRequiresPublished":"Rolling back requires the current version to be published.","rollbackKeyMismatch":"The version to roll back to must share the same template key.","rollbackAccountMismatch":"A rollback cannot cross accounts."},"opsQueue":{"errors":{"stepNotFound":"That step was not found.","staleItem":"This item changed since you loaded the queue. Refresh and try again.","alreadyAssigned":"This task is already assigned.","stepNotActive":"This step is not active.","noPermissionClaim":"You do not have permission to claim this task.","assigneeRequired":"An assignee is required.","noPermissionAssign":"You do not have permission to assign this task.","userNotEligible":"The selected person is not eligible for this step.","noPermissionSuspend":"You do not have permission to suspend this work.","noPermissionRetry":"You do not have permission to retry this work.","notRetryable":"This item cannot be retried.","unknownAction":"That action is not one this queue supports.","actionFailed":"That action could not be completed.","bulkAssigneeRequired":"An assignee is required for a bulk assignment.","claimFailed":"That task could not be claimed. Please try again.","assignFailed":"That task could not be assigned. Please try again.","pauseFailed":"That task could not be paused. Please try again.","resumeFailed":"That task could not be resumed. Please try again."}},"errors":{"referenceSearchFailed":"Those records could not be searched. Please try again."},"accessDenied":{"title":"You do not have access to this page","description":"This is an authorization decision, not a sign-in problem.","needsCapability":"This page needs {{capability}}, and your role in this workspace does not include it.","needsUnknownCapability":"This page needs a permission your role in this workspace does not include.","pageRequested":"You asked for {{page}}.","whoCanGrant":"A workspace owner or an administrator can grant it. Everything else in this workspace still works normally.","backToWorkspace":"Back to the workspace","capability":{"workflowManage":"permission to manage workflows","fieldSecurityManage":"permission to manage field security","knowledgeRead":"access to the knowledge base","forumRead":"access to the forum","dataEntitiesManage":"permission to manage data entities","navigationManage":"permission to edit the navigation menu","operationsRead":"access to operations","documentTemplatesManage":"permission to manage document templates"}},"externalAccess":{"title":"External access","description":"Consulting practices that can act inside this workspace.","explainer":"These practices are not members of your workspace. They act here under access you granted, and you can end it at any time without asking them.","noneTitle":"No one outside your workspace has access","noneDescription":"When you grant a consulting practice access, it appears here with what it can do and who granted it.","grantedOn":"Granted {{date}}","grantedBy":"Granted by {{who}}","revoke":"End access","revokeConfirm":"End access now","revoking":"Ending…","keep":"Keep access","revokeExplainer":"{{practice}} loses access immediately. Nothing they set up here is removed, your workflows keep running, and the record of what they did stays in your audit history.","level":{"support":"Support — can look, cannot change","train":"Train — can run and demonstrate","configure":"Configure — can change drafts","deploy":"Deploy — can change drafts and request production deploy"},"errors":{"notAllowed":"You need permission to manage members before you can change who has access to this workspace.","notFound":"That access has already ended, or it does not belong to this workspace.","alreadyRevoked":"That access has already ended.","failed":"Access could not be ended. Please try again, or ask an administrator if it keeps happening.","alreadySuspended":"That access is already paused.","notSuspended":"That access is not paused.","pauseFailed":"Access could not be paused. Please try again, or ask an administrator if it keeps happening.","expiryInPast":"Choose a date after today. To stop access now, pause or end it instead.","expiryTooFar":"Choose a date within the next ten years, or choose no end date.","expiryNoEnvelope":"This access has no recorded scope, so it has no end date to change. Ask the practice to reconnect, or end the access.","expiryFailed":"The end date could not be changed. Please try again, or ask an administrator if it keeps happening.","expiryReasonTooLong":"Keep the reason to 500 characters or fewer.","regrantNotEnded":"That access has not ended, or it does not belong to this workspace.","regrantAlreadyLive":"This practice already has access to this workspace.","regrantNoEnvelope":"There is no recorded scope to grant again. Ask the practice to reconnect.","regrantFailed":"Access could not be granted. Please try again, or ask an administrator if it keeps happening."},"unnamedPractice":"Unnamed practice","suspended":"Paused","suspend":"Pause access","resume":"Resume access","namedConsultants":"Working here: {{who}}","nobodyNamed":"Nobody from this practice is currently named on your workspace.","environments":"Environments: {{environments}}","environmentsUnscoped":"No environment scope recorded","expiresOn":"Expires {{date}}","noExpiry":"No expiry","expired":"Expired","expiredOn":"Expired {{date}}","expiredNote":"This approval has lapsed, so the practice can no longer act in this workspace. Revoke it to end the engagement.","environment":{"development":"Development","test":"Test","stage":"Stage","production":"Production"},"expiryEditor":{"change":"Change end date","title":"How long {{practice}} can act here","reachUnchanged":"Only the end date changes. What they can reach stays the same: {{environments}}.","plus30":"+30 days","plus90":"+90 days","plus365":"+1 year","endDate":"Access ends on","noEndDate":"No end date (until you end it)","willEnd":"Access will end at the end of {{date}}.","willRun":"Access will continue until you pause or end it.","reason":"Reason (optional)","reasonPlaceholder":"For example: second project phase","pickDate":"Choose an end date, or choose no end date.","save":"Save end date","saving":"Saving…","cancel":"Cancel"},"expiryHistory":{"title":"End date changes","changed":"{{who}} changed it on {{date}}","someone":"Someone","newEnd":"ends","noEnd":"no end date","showAll":"Show all {{count}} changes","showFewer":"Show fewer"},"promotions":{"title":"What consultants promoted","description":"Every promotion a consulting practice asked for in this workspace, who asked, between which environments, and where it stands. Kept after their access ends.","none":"No consulting practice has requested a promotion here.","unnamedWorkflow":"Unnamed workflow","unnamedPerson":"Unnamed consultant","requestedBy":"requested by {{who}} on {{date}}","decidedBy":"decided by {{who}} on {{date}}"},"revokeReason":"Reason (optional)","revokeReasonPlaceholder":"For example: project finished","revokeReasonHint":"Visible to your team only; can't be edited later.","ended":{"title":"Ended access","description":"Practices that had access here and no longer do. The record stays even though the access has ended.","badge":"Ended","grantedOnBy":"Granted {{date}} by {{who}}","endedOn":"Ended {{date}}","endedOnBy":"Ended {{date}} by {{who}}","namedAtEnd":"Working here when it ended: {{who}}","reason":"Reason: {{reason}}","grantedAgain":"This practice has been granted access again. See the current access above.","regrant":"Grant access again","regrantExplainer":"This gives {{practice}} a new grant: {{level}}, in {{environments}}. The ended record below stays exactly as it is.","term":"How long","terms":{"30":"30 days","90":"90 days","365":"1 year","none":"No end date"},"reasonPlaceholder":"For example: second project phase","regranting":"Granting…","regrantConfirm":"Grant access","cancel":"Cancel"}},"form.fixValidationErrors":"Fix validation errors before saving.","form.enterNumber":"Enter a number.","references":{"balanceRemaining":"{{value}} {{field}} left","balanceUnknown":"{{field}} unknown","searchEntity":"Search {{entity}}…"},"formRenderer.items":"Items","formRenderer.add":"Add","formRenderer.remove":"Remove","formRenderer.actions":"Actions","formRenderer.itemNumber":"Item {{number}}","formRenderer.totalForCurrency":"Total ({{currency}})","formRenderer.noValue":"No value","formRenderer.sectionNumber":"Section {{number}}","formRenderer.defaultSection":"Fields","formRenderer.sectionComplete":"Section complete","formRenderer.sectionIncomplete":"Section incomplete","formRenderer.sectionEmpty":"Section empty","formRenderer.formTitle":"Form","formRenderer.stepOf":"Step {{current}} of {{total}}","formRenderer.expandAll":"Expand all","formRenderer.collapseAll":"Collapse all","formRenderer.summary":"Summary","formRenderer.noSteps":"This form has no steps yet.","formRenderer.submit":"Submit","formRenderer.moreActions":"More actions","formRenderer.captureData":"Capture data","formRenderer.capturedData":"Captured data","formRenderer.capturedDataPreview":"Captured data (preview only — nothing is saved)","formRenderer.fixErrorsToSeeOutput":"Fix the validation errors to see the output","formRenderer.couldNotBeSaved":"This could not be saved.","formRenderer.saveFailed":"Save failed.","formRenderer.selectPlaceholder":"Select…","formRenderer.selectDate":"Select a date","formRenderer.optionNumber":"Option {{number}}","formRenderer.columnNumber":"Column {{number}}","formRenderer.dataGrid":"Data grid","formRenderer.addRow":"Add row","formRenderer.noRows":"No rows yet. Add a row to enter data.","formRenderer.preview.button":"Button","formRenderer.preview.badge":"Badge","formRenderer.preview.cardContent":"Card content","formRenderer.preview.hover":"Hover","formRenderer.preview.tooltipContent":"Tooltip content","formRenderer.preview.accordion":"Accordion","formRenderer.preview.collapsible":"Collapsible","formRenderer.preview.slideNumber":"Slide {{number}}","formRenderer.preview.sampleCell":"Row {{row}} {{column}}","formRenderer.preview.hoverCardContent":"Hover card content","formRenderer.preview.actionNumber":"Action {{number}}","formRenderer.preview.command":"Command","formRenderer.preview.commandPlaceholder":"Type a command…","formRenderer.preview.contextMenu":"Context menu","formRenderer.preview.cut":"Cut","formRenderer.preview.copy":"Copy","formRenderer.preview.paste":"Paste","formRenderer.preview.openMenu":"Open menu","formRenderer.preview.openDialog":"Open dialog","formRenderer.preview.dialogTitle":"Dialog title","formRenderer.preview.dialogBody":"This is a dialog body for preview.","formRenderer.preview.openDrawer":"Open panel","formRenderer.preview.drawerTitle":"Panel title","formRenderer.preview.drawerContent":"Panel content","formRenderer.preview.openAlertDialog":"Open confirmation","formRenderer.preview.confirmAction":"Confirm action","formRenderer.preview.cannotBeUndone":"This action cannot be undone.","formRenderer.preview.cancel":"Cancel","formRenderer.preview.confirm":"Confirm","formRenderer.preview.avatarName":"Name for avatar","formRenderer.preview.calendarPreview":"Calendar preview","formRenderer.preview.name":"Name","formRenderer.preview.role":"Role","formRenderer.preview.label":"Label","formRenderer.preview.alertTitle":"Alert title","formRenderer.preview.alertDescription":"Alert description","formRenderer.preview.toastTitle":"Notification title","formRenderer.preview.toastDescription":"Notification description","formRenderer.preview.toggle":"Toggle","formRenderer.preview.on":"On","formRenderer.preview.off":"Off","formRenderer.draftRecoveredTitle":"Recovered unsaved values","formRenderer.draftRecoveredDescription":"This form had values that were not saved yet. They are filled back in — check them, then submit. Protected and personal fields are never kept and need to be entered again.","formRenderer.draftDiscard":"Discard","formRenderer.draftKeep":"Keep","formRenderer.draftSessionLostTitle":"Your session has ended","formRenderer.draftSessionLostDescription":"Nothing was submitted. Your values are kept on this device — sign in again and return to this run to finish.","formRenderer.draftSignInAgain":"Sign in again"},"settings":{"credentials":{"pageTitle":"Integration credentials","pageDescription":"Per-tenant vault for REST/SOAP auth keys. Secrets are encrypted and never shown after save — nodes reference the key only.","createOrRotate":"Create or rotate credential","encryptedNote":"Secrets are encrypted at rest and resolved only on the server during workflow execution. This page never displays secret values after save.","key":"Key","type":"Type","bearer":"Bearer token","basic":"Basic (user:pass)","apiKeyHeader":"API key header","customHeaderToken":"Custom header token","customHeadersJson":"Custom headers JSON","secretWriteOnly":"Secret (write-only)","secretPlaceholder":"Paste secret once — never shown again","stored":"Stored credentials","storedAria":"Stored integration credentials","empty":"No credentials yet","loading":"Loading integration credentials","errorDescription":"We could not load the credential vault for this workspace. Try again or reload the page.","errorTitle":"Could not load integration credentials","neededBy":"Needed by {{names}}","navLabel":"Integration credentials","saving":"Saving…","saveEncrypted":"Save encrypted","saved":"Saved credential “{{key}}”. The secret is encrypted and is not shown again.","saveFailed":"The credential could not be saved. Try again.","deleted":"Deleted credential “{{key}}”.","deleteFailed":"The credential could not be deleted. Try again.","deleteCredential":"Delete credential {{key}}","stillNeeded":"“{{key}}” is still needed by {{names}}. Uninstall or reconfigure them first, or revoke the credential if it must stop working now."},"egress":{"pageTitle":"Integration egress allowlist","pageDescription":"Control which external hosts REST integration nodes may call. Private and metadata addresses are always blocked by the SSRF guard.","addHost":"Add host","note":"REST integration nodes may only call hosts on this allowlist. Private, loopback, and cloud-metadata addresses are always blocked.","emptyNote":"REST integration nodes may only call external hosts on this allowlist. Private, loopback, and cloud-metadata addresses are always blocked.","hostname":"Hostname","hostPlaceholder":"api.partner.example","allowlisted":"Allowlisted hosts","allowlistedAria":"Integration egress allowlisted hosts","empty":"No hosts allowlisted yet","loading":"Loading integration egress allowlist","errorTitle":"Could not load egress allowlist","errorDescription":"We could not load the integration egress allowlist for this workspace. Try again or reload the page.","navLabel":"Integration egress","add":"Add","saving":"Saving…","added":"Allowlisted host “{{host}}”.","removed":"Removed “{{host}}” from the allowlist.","addFailed":"The host could not be added. Check the name and try again.","removeFailed":"The host could not be removed. Try again.","removeHost":"Remove allowlisted host {{host}}"},"common":{"tryAgain":"Try again","reloadPage":"Reload page"},"translations":{"coverage":"Translation coverage by domain and locale","domain":"Domain","locale":"Locale","coverageColumn":"Coverage","filterQueue":"Filter queue","filterPlaceholder":"Filter queue…","empty":"No open translation items.","openEditor":"Open translations editor"},"epSuggestions":{"pageTitle":"EP Suggestions","pageDescription":"Review experience profile recommendations from delegated consultants.","actionFailed":"Action failed","empty":"No pending EP suggestions from consultants.","pending":"Pending experience profile suggestions","suggestedProfile":"Suggested profile","consultant":"Consultant","note":"Note","suggested":"Suggested","actions":"Actions","decline":"Decline"},"outbox":{"pageTitle":"Domain Event Delivery","pageDescription":"Visually monitor and debug domain-event delivery for this workspace — status, attempts, and errors without digging into config or logs.","queuedForRetry":"Event queued for retry","activity":"Delivery activity","filterByStatus":"Filter delivery activity by status","status":"Status","allStatuses":"All statuses","empty":"No domain events yet","activityAria":"Domain event delivery activity","eventType":"Event type","occurred":"Occurred","attempts":"Attempts","account":"Account","error":"Error"}},"tenant-admin":{"agentDefinitions":{"archive":"Archive","changelog":"Changelog (for publish)","changelogPlaceholder":"What changed in this version","createDraft":"Create draft","draftCreated":"Draft agent created. Fill in the soul.md, then publish.","editAsNewVersion":"Edit as new version","empty":"No agent definitions yet. Create one to reuse an agent across multiple workflow steps.","model":{"configureLink":"Register a model","inherited":"Using the tenant default. A workflow step can still pin its own model.","noProviders":"No models are registered for this tenant yet.","stepOverride":"This agent runs on the selected model, unless a workflow step pins its own.","tenantDefault":"Tenant default","title":"Model"},"name":"Name","namePlaceholder":"e.g. Quote Drafter","nameRequired":"A name is required.","new":"New agent definition","ownerOnlyPublish":"Only a workspace owner can publish agent definitions.","pageDescription":"Create reusable, governed agent definitions (soul.md) that workflow AI-agent steps can pin — define once, publish a version, reuse everywhere.","pageTitle":"Agent definitions","purposeOptional":"Purpose (optional)","purposePlaceholder":"What this agent is for","requiredSections":"Required sections","saveDraft":"Save draft","selectPrompt":"Select an agent definition, or create one to get started.","noDescription":"No description","keyLabel":"key","publishedVersion":"Published v{{version}}","draftSoul":"soul.md — draft v{{version}}","status":{"published":"Published","draft":"Draft","archived":"Archived"},"readyToPublish":"Ready to publish.","completeSections":"Complete every required section first.","publishVersion":"Publish this version","itemsToResolve":"{{count}} item(s) to resolve.","publishVersionLabel":"Publish v{{version}}","notAllowedManage":"You are not allowed to manage agent definitions.","versionNotFound":"That version was not found.","onlyDraftPublishable":"Only a draft version can be published.","soulIncomplete":"soul.md is incomplete — resolve the {{count}} flagged section(s) before publishing.","noVersionsToBranch":"There are no versions to branch from.","ownerOnlyArchive":"Only a workspace owner can archive agent definitions.","couldNotCreate":"The agent could not be created.","couldNotPublish":"The agent could not be published.","savedAsDraftInstead":"{{reason}} It was saved as a draft under Admin → Agent definitions.","couldNotCreateDefinition":"The agent definition could not be created.","couldNotCreateVersion":"The first version could not be created.","couldNotSaveDraft":"The draft could not be saved.","couldNotCreateDraftVersion":"A new draft version could not be created.","couldNotArchive":"The agent definition could not be archived.","couldNotDraft":"The agent could not be drafted.","draftingUnavailable":"AI drafting was unavailable, so a blank template was inserted to fill in by hand.","draftingUnreachable":"The drafting service could not be reached.","describeAgent":"Describe what the agent should do.","groundingPolicy":{"title":"Grounding policy","description":"How strictly this Assistant must back facts with approved sources. It can only be stricter than the platform rules, and it applies once an owner publishes the version.","standard":{"label":"Standard","description":"Drafts may use general professional knowledge and are labelled Draft; facts, figures, legal and similar claims need a source."},"verified_only":{"label":"Verified only","description":"Every factual statement needs an approved source, even inside a draft; anything without one is shown as pending."}}},"createForm":{"backToForms":"Back to Forms","description":"Description","formName":"Form Name","pageDescription":"Select a data entity, choose fields, and bootstrap a form schema.","pageTitle":"Create Form from Data Entity","public":"Public","save":"Save","selectEntity":"Select data entity","sourceEntity":"Source Data Entity","version":"Version","invalidOrEmptySchema":"Invalid or empty schema","includeOptional":"Include optional fields","noFieldsFound":"No fields found on source schema.","generatedSchema":"Generated form schema","preview":"Preview"},"dataEntities":{"emptyBody":"Create a schema to define structured data for workflow steps.","emptyTitle":"No data entities yet","loadingDetail":"Loading data entity detail","noMatchBody":"Try a different search term or status filter.","noMatchTitle":"No entities match your filters"},"entityDetail":{"backToCatalog":"Back to catalog","description":"Description","editInWorkspace":"Edit in workspace","identity":"Identity","identityDescription":"Display name, stable key, version, and summary.","name":"Name","noFields":"No schema fields defined on this entity.","required":"Required","schemaFields":"Schema fields","schemaFieldsDescription":"Field name and type for this entity schema.","title":"Entity detail","type":"Type","version":"Version","metaTitle":"Data entity"},"fieldSecurity":{"allFields":"All fields","dataEntity":"Data entity","field":"Field","noEntities":"No data entities yet. Create one to configure field permissions.","pageDescription":"Control which roles can view or edit each data-entity field.","pageTitle":"Field security","selectEntity":"Select an entity","view":"View","edit":"Edit","saving":"Saving…","notAllowedManage":"You are not allowed to manage field permissions.","couldNotLoad":"Field permissions could not be loaded.","couldNotSave":"Field permissions could not be saved.","saved":"Saved"},"teamSignIn":{"approvePublish":"Approve publish","currentlyPublished":"Currently published","customHtml":"Custom HTML (above the branded sign-in form)","howThisWorks":"How this works","nothingPublished":"Nothing published yet. Approve a submitted version to show custom HTML on <code>/auth/team-login?team=…</code>.","ownerOnlyApprove":"Only a workspace owner can approve or reject this version.","pageTitle":"Team login HTML","pendingApproval":"Pending approval","previewDraft":"Preview draft (popup)","previewPending":"Preview pending (popup)","previewPublished":"Preview published (popup)","primaryOwner":"Primary team owner","published":"Published. Live team login page updated.","reject":"Reject","sanitizeNote":"Scripts and unsafe markup are stripped when submitted and when shown to users. Use this for hero copy, imagery, and layout around the existing login controls.","saveDraft":"Save draft","submitForApproval":"Submit for owner approval","submittedWaiting":"Submitted, waiting for a workspace owner to review.","systemAdmin":"Team system admin","preview":{"draft":"Draft preview (sanitised like live)","pending":"Pending approval (sanitised snapshot)","published":"Published (live on team login)","caveat":"not a substitute for the full sign-in page layout","noHtml":"No HTML for this variant."},"draftSaved":"Draft saved.","unableSaveDraft":"Unable to save draft.","unableSubmit":"Unable to submit.","waitingReview":"Waiting for a workspace owner to review.","unableApprove":"Unable to approve.","unableReject":"Unable to reject.","submittedForApproval":"Submitted for owner approval. A workspace owner can preview and publish.","submittedAt":"Submitted at {{when}}","rejectedKeptDraft":"Pending version rejected. Draft kept in editor.","noPermissionEdit":"You do not have permission to edit the team sign-in page.","noPermissionSubmit":"You do not have permission to submit changes.","primaryOwnerOnlyApprove":"Only a workspace owner can approve publishing.","primaryOwnerOnlyReject":"Only a workspace owner can reject a pending version.","couldNotSave":"The sign-in page could not be saved.","couldNotApprove":"The version could not be approved.","couldNotReject":"The version could not be rejected.","nothingPending":"Nothing is waiting for approval. Save a draft, then use “Submit for owner approval” first."},"transformations":{"clone":"Clone","delete":"Delete","description":"Description","destinationForm":"Destination Form","destinationVersion":"Destination Version","emptyBody":"A transformation reshapes form data before a step stores or sends it.","emptyTitle":"No transformations yet","name":"Name","new":"New","outputJson":"Output JSON","pageDescription":"Define mappings from data entities to form schemas with versioned transformations.","pageTitle":"Form Transformations","runPreview":"Run Preview","save":"Save","selectForm":"Select form","selectSource":"Select source","sourceEntity":"Source Data Entity","sourceJson":"Source JSON","sourceVersion":"Source Version","version":"Version","heading":"Transformations","mapping":"Mapping (to/from/constant/expression)","preview":"Preview"},"formTransformations":{"mappingMustBeArray":"Mapping must be a valid JSON array","invalidJson":"Invalid JSON in mapping or preview input","couldNotLoadAccount":"The account could not be loaded.","couldNotSave":"The transformation could not be saved.","couldNotDelete":"The transformation could not be deleted.","expressionRefused":"These fields use an expression the preview cannot evaluate, so they were left empty: {{fields}}. Use field names, arithmetic, comparisons and quoted text."},"status":{"error":"Error: {{message}}","saved":"Saved","deleted":"Deleted","invalidJsonSchema":"Invalid JSON schema"},"navigationMenu":{"pageDescription":"Curate the Tasks sidebar group: folders, workflow links, and optional secondary (New) paths. Use [account] in paths."}},"global-pages":{"assessment":{"capabilityTitle":"Capability Assessment","clientDescription":"Capability maturity across the clients you operate — open any client to see its evidence and next steps.","clientTitle":"Client assessments"},"chat":{"channelTitle":"Chat channel","livesInWorkspace":"Chat lives in your team workspace","pageTitle":"Chat","userDescription":"Chat runs inside your team workspace.","workspaceLiveChat":"Workspace live chat.","workspaceLiveChatChannel":"Workspace live chat channel."},"docTemplates":{"allTypes":"All types","cancel":"Cancel","delete":"Delete Template","deleteShort":"Delete","description":"Manage templates for document generation in workflows. User-authored HTML documents live in the visual template workspace.","excel":"Excel","fileType":"File type","search":"Search templates...","title":"Document Templates","upload":"Upload Template","userTemplates":"User document templates","word":"Word"},"forum":{"communityDescription":"Global discussions for eligible owners, consultants, and LerniFlow employees.","communityThread":"Community thread","communityTitle":"Community Forum","globalDiscussion":"Global forum discussion.","moderationGlobalDescription":"Review flagged content in the global community forum.","moderationTitle":"Forum moderation"},"knowledge":{"analyticsTitle":"KB Analytics","articleReview":"Article review","backToKb":"Back to Knowledge Base","editDraft":"Edit draft","globalAnalyticsDescription":"Read-only coverage and translation metrics for the global knowledge base.","globalAuthoringDenied":"Global authoring is limited to LF Insight Team members with KB permissions.","globalDescription":"Global guidance readable by every signed-in user.","globalEmpty":"No global articles published yet.","globalNotConfigured":"Global knowledge spaces are not configured yet.","globalReviewDescription":"Publish or redact global LerniFlow guidance.","globalReviewPublish":"Global review & publish","globalTitle":"LerniFlow Knowledge Base","globalTranslationDescription":"Review proposed, in-review, and stale global locale translations.","newGlobalArticle":"New global article","newGlobalDescription":"Author global guidance as the LF Insight Team tenant.","noContentVersion":"No content version available.","reviewWorkbench":"Review workbench","translationReview":"Translation review","updateGlobalDraft":"Update the global Markdown draft."}},"super-admin":{"nav":{"superAdmin":"Super Admin","dashboard":"Dashboard","accounts":"Accounts","commissionRates":"Commission Rates","marketplaceReviews":"Marketplace Reviews","businessProcesses":"Business Processes","home":"Home","aiModels":"AI Models & Keys","navigationModules":"Navigation Modules","meterAllowances":"Allowances","unpricedBacklog":"Unpriced usage","groundingQualifications":"Grounding qualifications"},"bp":{"pageTitle":"Business Processes Command Center","pageDescription":"A platform-wide overview of the business processes across your organizations.","previewMode":"Preview mode","workflows":"Workflows","totalSteps":"Total steps","workflowsCard":"Workflows"},"groundingEval":{"title":"Grounding eval answers","description":"Runs every fixture of a domain and locale through the real Assistant turn and the AI egress broker, on a synthetic tenant's configured Assistant route, then scores the answers with the eval runner. Only on {{environment}}; the fixtures' own sources are the only knowledge the model sees.","noSyntheticTenant":"There is no synthetic (Test Assurance) tenant to run the eval against.","tenant":"Synthetic tenant","scope":"Domain and locale","scopeOption":"{{domain}} · {{locale}} ({{fixtures}})","produce":"Produce answers and score","running":"Running the eval…","verdict":"Verdict","verdicts":{"qualified":"Passed every critical check","unqualified":"Failed a critical check","not_run":"Not run"},"route":"Route evaluated","runId":"Run id","digest":"Run digest","failures":"These fixtures got no answer: {{fixtures}}","fixturePassed":"passed every critical check","fixtureFailed":"failed: {{checks}}","downloadAnswers":"Download answers.json","downloadResult":"Download result.json","repetitions":"Runs per fixture","repetitionsHint":"A route can only be qualified on {{count}} runs of every fixture, with no critical failure in any of them.","stored":"Saved: this run's files stay downloadable under Recent runs.","notStored":"This run could not be saved. Download answers.json and result.json now, before you leave or reload the page.","gates":"Qualification gates","gatesMet":"met","gatesNotMet":"not met ({{gates}})","gateNames":{"fixtureSetVersion":"fixture set version {{version}} or later","fixtureCount":"at least {{count}} fixtures","categoryCoverage":"every fixture category covered","runCount":"at least {{count}} runs","criticalFailures":"no more than {{count}} critical failures"},"runSummaryLabel":"Run","runSummary":"Fixture set v{{version}}, {{fixtures}} fixtures, {{runs}} runs, {{failures}} critical failures","usageLabel":"Latency, tokens and cost","operational":{"label":"Operational latency","statuses":{"pass":"Pass","fail":"Fail","not_measured":"Not measured"},"summary":"p95 {{p95}} s, max {{max}} s (bar: p95 ≤ {{p95Bar}} s, max ≤ {{maxBar}} s); errors {{errors}} of {{attempts}} ({{errorRate}}), timeouts {{timeouts}} ({{timeoutRate}})","notAGate":"Reported only: operational latency is not a quality gate and does not block recording a qualification."},"usage":"{{answers}} answers; latency mean {{mean}} ms, max {{max}} ms; tokens: {{input}} input ({{cached}} cached), {{output}} output ({{reasoning}} reasoning); cost {{cost}}","cost":"{{cents}} US cents","costUnpriced":"not priced (a model has no confirmed rate, or a call reported no usage)","outcomes":"Outcome of every fixture in every run","fixture":"Fixture","repetitionHeader":"Run {{number}}","noAnswer":"no answer","answerFigures":"{{latency}} ms · {{tokens}} tokens","recentRuns":"Recent runs","recentRunsEmpty":"No run has been recorded yet.","recentRunLine":"{{route}} · {{domain}} · {{locale}} · {{runs}} runs · fixture set v{{version}} · {{verdict}} · {{failures}} critical failures","downloadFiles":"Download answers.json and result.json","downloadTrace":"Download gate trace","showTrace":"Show gate trace","hideTrace":"Hide gate trace","traceTitle":"Gate trace: each claim, the verifier verdict and the release decision","traceNotStored":"The gate trace could not be saved. Download it now.","traceEmpty":"This trace has no answers.","traceRepetition":"Run","traceClaim":"Claim","traceVerdict":"Verifier verdict","traceDecision":"Release decision","traceNoClaims":"No claims","traceFailure":"No answer ({{code}})","traceNotVerified":"not sent to the verifier","traceStatus":{"supported":"Released","user_provided":"Released (from the person)","withheld":"Withheld"},"errors":{"environment":"The grounding eval only runs on the sandbox or dev-b environment.","tenantNotSynthetic":"Choose a synthetic (Test Assurance) tenant. The eval never runs against a real tenant.","tenantNotAllowlisted":"This tenant is not in this environment's grounding-eval allowlist.","noFixtures":"There are no eval fixtures for that domain and locale.","noRoute":"This tenant has no AI route configured for the Assistant.","invalidInput":"Choose a tenant, a domain and a locale.","failed":"The eval could not be run. Try again.","runNotFound":"That run could not be read. Reload the page and try again.","traceNotFound":"This run has no gate trace. Runs saved before gate traces were kept have none."}},"commission":{"pageTitle":"Commission Rate Schedules","pageDescription":"Manage tiered commission rates — draft, activate, and view history (CP-006 / ADR-004).","currentRates":"Current rates","draftNew":"Draft new schedule","history":"History","attribution":"Attribution","rate":"Rate","effectiveFrom":"Effective from (UTC)","approvedBy":"Approved by","activate":"Activate schedule","tier":"Tier","status":"Status","effectiveFromShort":"Effective from","effectiveUntil":"Effective until","created":"Created","noHistory":"No rate schedule history."},"reviews":{"pageTitle":"Marketplace review queue","pageDescription":"Approve or reject publisher package listings before they become marketplace-visible.","queueTitle":"LerniFlow review queue","queueNote":"Super-admin reviewers only. Reviewers must not be the publisher submitter. Nothing becomes marketplace-visible without an approval recorded here.","package":"Package","publisher":"Publisher","state":"State","suggestedPrice":"Suggested price","taxCode":"Tax code","notes":"Notes","decision":"Decision","empty":"No submissions awaiting review.","reviewNotes":"Review notes","approve":"Approve","reject":"Reject"},"seeds":{"pageTitle":"Marketplace seed packages","pageDescription":"Publish or refresh first-party seed packages declared in the repo. Super-admin only.","idempotentTitle":"Idempotent seed publishing","publishRefresh":"Publish / refresh seed packages","slug":"Seed slug","displayName":"Display name","version":"Version","suggestedPrice":"Suggested price","components":"Components","created":"Created","releaseCreated":"Release created","publiclyVisible":"Publicly visible","idempotentNote":"Super-admin only. Re-running publish is safe: existing packages are skipped unless a seed version is bumped in the declarative source files. Use this to create or refresh first-party marketplace listings without running a script."},"accessDenied":{"title":"You do not have access to this workspace","available":"Your available workspaces:","none":"No team workspaces are available on this session.","backHome":"Back to home"},"ai":{"vendorRemoved":"Vendor removed.","vendorSaved":"Vendor saved.","routingUpdated":"Routing updated."},"errors":{"ai":{"unsupportedVendor":"That vendor is not supported.","modelRequired":"A model is required.","saveFailed":"That vendor could not be saved. Please try again.","deleteFailed":"That vendor could not be removed. Please try again.","modelListFailed":"The model list could not be loaded for that vendor.","unknownAssistant":"That assistant is not one this system knows.","providerNotFound":"That vendor was not found.","assignmentSaveFailed":"That routing change could not be saved. Please try again.","assignmentClearFailed":"That routing could not be cleared. Please try again."},"nav":{"saveFailed":"That change could not be saved. Please try again.","unknownIcon":"That icon is not one this system knows.","unsupportedLanguage":"That language is not supported.","unknownModule":"That module was not found."}},"sponsorshipExtensions":{"errors":{"failed":"The decision could not be saved."}},"platformAddons":{"cardTitle":"Platform add-ons (pilot)","cardDescription":"Manual activation for platform add-ons. Stripe checkout is not wired in S1.","emptyCatalogue":"No add-ons are active in the platform catalogue.","noOffers":"This add-on has no effective list price.","listPriceLabel":"List price:","pricePer":{"month":"{{price}} per month","year":"{{price}} per year"},"pendingOverrides":"Price overrides awaiting approval: {{count}}","overrideHelp":"Per-tenant prices require a second platform administrator to approve. The requester cannot approve their own request.","actions":{"saveEntitlement":"Save entitlement","requestOverride":"Request price override","approveOverride":"Approve","rejectOverride":"Reject","recordCost":"Record measured cost"},"fields":{"currency":"Currency","offer":"Offer","amountMinor":"Amount (minor units, e.g. cents)","lifecycleStatus":"Entitlement status","trialEndsOn":"Trial ends on","graceEndsOn":"Grace period ends on","reasonOptional":"Reason (optional, audited)","reasonRequired":"Reason (required, audited)","quantity":"Quantity (units)","billingInterval":"Billing interval","deliveredCostMinor":"Delivered cost per unit (minor units, e.g. cents)","measuredFrom":"Measured from","measuredTo":"Measured to","sourceNote":"Source of the measurement (required)"},"lifecycle":{"active":"Active","trial":"Trial","grace":"Grace period","cancelled":"Cancelled","inactive":"Inactive"},"messages":{"saved":"Add-on entitlement saved.","overrideRequested":"Price override submitted for approval by another platform administrator.","overrideApproved":"Price override approved.","overrideRejected":"Price override rejected.","costRecorded":"Measured cost recorded."},"errors":{"saveFailed":"The entitlement could not be saved.","overrideRequestFailed":"The price override request could not be saved.","overrideDecideFailed":"The override decision could not be saved.","loadFailed":"Add-on details could not be loaded. The rest of this account page still works.","currencyRequired":"Choose a currency from the add-on's list prices.","endDateRequired":"Choose an end date.","invalidDate":"Enter a valid date.","quantityInvalid":"Enter a whole number of units, at least 1.","costInvalid":"Enter a cost of zero or more.","sourceRequired":"Say where the measurement comes from.","costRecordFailed":"The measured cost could not be saved."},"addonNames":{"training_documentation":"Training & Documentation","assistant_core":"Assistant","assistant_memory":"Assistant memory","assistant_multimodal":"Assistant audio and images","assistant_scheduled_workflows":"Assistant scheduled workflows","assistant_retention_controls":"Assistant retention controls","environment_additional":"Additional environment","channel_whatsapp":"WhatsApp channel"},"notOnSale":"Not on sale","notOnSaleHelp":"Registered in the catalogue with no list price yet. Set a price from the 90% margin floor before it can be granted.","quantityBadge":"Units: {{count}}","pricePerUnit":{"month":"{{price}} per unit per month","year":"{{price}} per unit per year"},"intervals":{"month":"Monthly","year":"Yearly"},"floor":{"label":"90% margin floor: {{price}}","belowFloor":"Below the 90% margin floor","belowFloorHelp":"This price is below the 90% gross-margin floor. You can still submit it; the approving administrator will see the flag.","noMeasurement":"No delivered cost measured yet, so there is no price suggestion.","reportTitle":"Price suggestion (90% gross margin)","reportHelp":"Suggested minimum = measured delivered cost per unit / 0.10. An input for pricing, not a list price.","row":{"month":"Monthly: measured cost {{cost}}, suggested minimum {{price}}","year":"Yearly: measured cost {{cost}}, suggested minimum {{price}}"},"recordHelp":"Record a measured delivered cost per unit (platform-wide, for every account). The newest measurement sets the suggestion."}},"meterAllowances":{"pageTitle":"Allowances","pageDescription":"System-level plan and add-on allowances for every metered resource.","intro":"These allowances apply to every tenant. A change is saved as a new version with a reason and an effective date, and the audit trail records it. Tenants see their allowance and usage but cannot change them.","meters":{"storage":{"bytes":{"title":"Storage","description":"Bytes stored per account. Plans set the base, a pilot sets a floor, add-ons add to it. The per-file ceiling applies to every upload."}},"ai":{"calls":{"title":"AI calls","description":"Included AI calls per month. Enforcement is unchanged in this slice."}},"training":{"render_minutes":{"title":"Training render minutes","description":"Render minutes included with the Training add-on: an intro allowance for the first 60 days, then a monthly one. No automatic overage."}},"seats":{"active":{"title":"Seats","description":"Included active seats per plan. Enforcement is unchanged in this slice."}},"assistant":{"audio_seconds":{"title":"Assistant audio","description":"Successfully processed audio seconds per month (transcription). Measured only; no allowance or overage yet."},"image_pages":{"title":"Assistant images and pages","description":"Successfully processed images and pages per month (vision and OCR), by size tier where provider pricing needs one. Measured only; no allowance or overage yet."},"web_retrievals":{"title":"Assistant web retrievals","description":"Governed web searches and fetches included per month. Included in the Assistant; the amounts per plan are placeholders pending confirmation."}},"workflow":{"scheduled_runs":{"title":"Scheduled workflow runs","description":"Successfully launched scheduled runs per month. What a run consumes is metered separately. Measured only; no allowance or overage yet."}}},"units":{"ai":{"calls":"{{value}} calls"},"training":{"render_minutes":"{{value}} minutes"},"seats":{"active":"{{value}} seats"},"assistant":{"audio_seconds":"{{value}} seconds","image_pages":"{{value}} pages","web_retrievals":"{{value}} retrievals"},"workflow":{"scheduled_runs":"{{value}} runs"}},"plans":{"free":"Free","trial":"Trial","starter":"Starter","growth":"Growth","scale":"Scale","partner":"Partner","beta":"Beta Access","pro":"Pro","enterprise":"Enterprise","internal":"Internal"},"addons":{"training_documentation":"Training & Documentation"},"pilots":{"record_documents_pilot":"Record documents pilot"},"sources":{"plan":"Plan","addon":"Add-on","pilot":"Pilot","platform_ceiling":"Platform limit"},"pools":{"training_content":"Training content only"},"phases":{"intro":"First 60 days"},"perItemCeiling":"Per-file ceiling","columns":{"grant":"Grant","current":"In force","since":"Since (UTC)","scheduled":"Scheduled","actions":"Actions"},"versionLabel":"v{{version}}","fromDate":"from {{date}}","history":"Version history","openEnded":"open","newVersion":"New version","auditTitle":"Audit trail","auditDescription":"The latest 50 allowance changes and pilot assignments.","auditEmpty":"No changes yet.","actions":{"seeded":"Seeded","versioned":"New version","pilot_assigned":"Pilot assigned","pilot_revoked":"Pilot revoked"},"dialogTitle":"New version: {{grant}}","dialogDescription":"In force now: {{current}}. The current version is closed when the new one starts; nothing is overwritten.","effectiveLabel":"Takes effect","effectiveNow":"Now","effectiveScheduled":"On a later date","reasonLabel":"Reason","reasonPlaceholder":"Why this changes, and who decided it","cancel":"Cancel","save":"Save version","pilotControls":{"title":"Pilot allowances","description":"Give this account a pilot allowance. It raises the storage allowance to at least the pilot amount. Audited.","endsOn":"Ends on (optional)","assign":"Assign","revoke":"Revoke"},"errors":{"forbidden":"Only a platform admin with MFA can change allowances.","reasonRequired":"Give a reason for the change.","unknownMeter":"This meter does not exist.","invalidQuantity":"Enter a whole, non-negative amount.","unknownPlan":"This plan does not exist.","unknownAddon":"This add-on does not exist.","invalidGrantKey":"This grant key is not valid.","unknownGrantSource":"This grant source is not valid.","invalidPhase":"This phase is not valid.","unknownPool":"This pool does not exist for the meter.","backdated":"A version cannot start in the past.","beforeLatestVersion":"A new version must start after the latest one.","unknownAccount":"This account does not exist.","unknownPilot":"This pilot allowance does not exist.","endInPast":"The end date must be in the future.","pilotAlreadyAssigned":"This account already has this pilot allowance.","pilotNotAssigned":"This account does not have this pilot allowance.","loadFailed":"The allowances could not be loaded.","saveFailed":"The change could not be saved.","dateRequired":"Choose the date the version takes effect."},"quantityLabels":{"GiB":"Allowance (GiB)","MiB":"Allowance (MiB)","count":"Allowance (number)"}},"aiModelRegistry":{"title":"Pricing identities","description":"Every model above, and every code registered here, is a model of both ledgers of every tenant. Aliases price one code as another; nothing is mapped unless declared. A model is never a price: tenants approve their own rate cards.","catalog":"Catalogue codes","noProvider":"no provider","source":{"platformDefault":"runtime default","operator":"registered by an operator"},"disabled":"disabled","fields":{"code":"Model code","provider":"Provider (optional)","usedCode":"Used code","pricedAs":"Priced as (a catalogue code)","appliesFrom":"Applies from (UTC, optional)","reason":"Reason"},"register":"Register in every ledger","aliases":"Platform aliases","noAliases":"No platform aliases.","window":"from {{from}} until {{to}}","always":"always","open":"open","retireReason":"Why retire it?","retire":"Retire","declare":"Declare in every ledger","messages":{"registered":"{{code}} registered.","aliased":"{{code}} now rates as {{model}}.","retired":"{{code}} retired.","projected":"Projected into {{projected}} ledger(s); {{skipped}} skipped because the tenant already claims the code."}},"unpricedBacklog":{"pageTitle":"Unpriced usage backlog","pageDescription":"Usage held unpriced in every tenant ledger, by ledger and reason: counts and dates only. Tenants fix the causes in their own finance screens; support re-rates only once a cause is gone, through the same engine.","unavailable":{"title":"The backlog could not be read","description":"Reload the page. If it persists, check the database connection; nothing was changed."},"reconciliation":{"title":"Web ledger and finance-service parity","none":"No cutover reconciliation has been recorded yet.","summary":"Latest reconciliation ({{environment}}): {{status}}, {{differences}} differences, {{open}} of them in held usage, {{when}}.","status":{"reconciled":"reconciled","diverged":"diverged","incomplete":"incomplete"},"blocks":"Any divergence between the web ledger and finance-service, including in held usage and re-rate outcomes, blocks the T6 cutover. Reconcile after every release."},"totalsTitle":"By ledger and reason","ledgersTitle":"Tenant ledgers","empty":"No tenant ledger holds unpriced usage.","columns":{"ledger":"Ledger","reason":"Reason","events":"Events","ledgers":"Ledgers","fix":"What fixes it","tenant":"Tenant","held":"Held","oldest":"Oldest event","queue":"Automatic queue","lastRun":"Last re-rate","actions":"Actions"},"ledgerKinds":{"production":"Production","sandbox":"Sandbox"},"fix":{"tenantRateCard":"Tenant: create, copy or activate a rate card","tenantResolveOverlap":"Tenant: supersede the overlapping rate card","tenantRegisterSubject":"Tenant: register or map the model, role or connector","fxFeedOrGovernedRate":"Platform FX feed (Banxico FIX), or the tenant’s governed rate for another pair","periodClosePpa":"Tenant: Period close or prior-period adjustment (never a re-rate)","enablePricing":"Platform: enable pricing for this usage","producerDefect":"Platform: a producer defect; investigate the event source","investigate":"Investigate the event source"},"queue":"Pending: {{pending}} · Running: {{running}}","lastRun":"{{mode}}, {{when}}: evaluated {{evaluated}}, posted {{posted}}, held {{held}}, failed {{failed}}","noRun":"No re-rate yet","modes":{"automatic":"Automatic","manual":"By the tenant","support":"Support"},"support":{"open":"Support re-rate…","nothingEligible":"Nothing a re-rate releases","title":"Support re-rate: {{tenant}} · {{ledger}}","description":"A dry run first: it evaluates up to 1,000 of the oldest held events and changes nothing in the ledger. Only you can then execute exactly those events, within 30 minutes, through the same engine. The tenant’s finance administrators are told.","reasonsLabel":"Held reasons to re-rate","reasonLabel":"Reason: the ticket and what changed","reasonCount":"{{count}} / {{max}} characters","dryRun":"Run the dry run","previewed":"Dry run of {{previewed}} of {{candidates}} held events; it expires {{expires}}.","summary":"Evaluated {{evaluated}}: {{post}} would post ({{amount}} in the ledger currency), {{held}} would stay held, {{refused}} would be refused, {{already}} already posted.","columns":{"priorReason":"Held as","outcome":"Would","events":"Events","amount":"Amount","versions":"Rate-card versions","fx":"Exchange rates"},"outcomes":{"posted":"Post","quarantined":"Stay held","duplicate":"Already posted","payload_mismatch":"Be refused (payload changed)","failed":"Fail"},"execute":"Execute this dry run","confirmTitle":"Execute the support re-rate?","confirmDescription":"{{count}} held events in the {{ledger}} ledger of {{tenant}} will be rated again through the same engine. The dry run showed {{post}} would post.","cancel":"Cancel","confirm":"Execute","close":"Close","done":"Executed: evaluated {{evaluated}}, posted {{posted}}, still held {{held}}, refused {{refused}}, already posted {{already}}.","stillRunning":"The run is still going and keeps its checkpoint. Execute the same request again to continue it."},"requests":{"title":"Support requests (last 30 days)","empty":"No support re-rate was requested in the last 30 days.","columns":{"when":"When","operator":"Operator","ledger":"Tenant ledger","reason":"Reason","dryRun":"Dry run","status":"Status","outcome":"Outcome"},"status":{"previewed":"Dry run, not executed","executed":"Executed","expired":"Expired"},"dryRun":"Would post {{post}} of {{evaluated}}","outcome":"Posted {{posted}}, held {{held}}, refused or failed {{failed}}"},"errors":{"forbidden":"Only a platform admin with MFA can use the unpriced usage support path.","nothingToRerate":"This ledger holds no usage a re-rate can release.","requestNotFound":"That support request was not found.","notYourDryRun":"Only the operator who ran this dry run can execute it. Run your own dry run first.","dryRunExpired":"This dry run is more than 30 minutes old. Run it again before executing.","actionFailed":"The support action failed. Nothing was changed by this request."}},"groundingQualifications":{"pageTitle":"Grounding qualifications","pageDescription":"Which model routes are qualified to write evidence-required answers, per provider, model, prompt contract, verifier, domain and locale. Each decision rests on a grounding-eval run and is audited.","current":"Current decisions","noCurrent":"No qualification has been recorded. A route with no decision is unqualified.","scope":"{{domain}} · {{locale}}","version":"version {{version}}","window":"In force from {{from}} until {{until}}","approvedBy":"Approved by {{approver}} · domain reviewer {{reviewer}}","supersede":"Record a new decision","expire":"Expire","expireConfirm":"Expire this qualification","record":"Record a decision","recordDescription":"Paste or upload the eval runner's result.json. Its scope must match the decision and its digest is recorded as the evidence. A new decision supersedes the scope's current one.","fields":{"provider":"Provider","model":"Model","locale":"Locale","domain":"Domain","promptContractVersion":"Prompt contract version","verifierVersion":"Verifier version","status":"Decision","evalRunId":"Eval run id","productOfficeApprover":"Product Office approver","domainReviewer":"Domain reviewer","effectiveFrom":"In force from","expiresAt":"Expires on","resultJson":"Eval result (result.json)","resultFile":"Upload result.json","reason":"Reason"},"domains":{"legal":"Legal","medical":"Medical","financial":"Financial","other_regulated":"Other regulated","general":"General"},"statuses":{"qualified":"Qualified","unqualified":"Not qualified","expired":"Expired","superseded":"Superseded","pending":"Not yet in force"},"verdicts":{"qualified":"passed every critical check","unqualified":"failed a critical check"},"resultPlaceholder":"{ \"scope\": …, \"verdict\": …, \"runDigest\": \"sha256:…\" }","resultSummary":"The run {{verdict}} ({{fixtures}}). Digest: {{digest}}","submit":"Record decision","history":"History","columns":{"route":"Route","scope":"Domain · locale","status":"Status","version":"Version","recorded":"Recorded","reason":"Reason"},"messages":{"recorded":"The decision was recorded.","expired":"The qualification was expired."},"errors":{"invalid":"Fill in every field: provider, model, locale, domain, decision, run id, reason, approver, domain reviewer and dates.","resultUnreadable":"That is not a result.json from the grounding-eval runner.","resultScopeMismatch":"The result.json was produced for another provider, model, domain, locale, prompt contract or verifier.","resultNotRun":"The result.json is a dry run. Run the eval with answers first.","verdictMismatch":"A route can only be qualified on a run that passed every critical check.","expiryRequired":"Set an expiry date. Every qualification decision expires.","expiryBeforeEffective":"The expiry must be after the date the decision takes effect.","notCurrent":"That qualification is no longer the current one. Reload the page.","forbidden":"Only a super admin signed in with multi-factor authentication can record a decision.","failed":"The decision could not be recorded. Try again.","gatesNotMet":"A route can only be qualified on a run that meets the domain's qualification gates: a current fixture set, enough fixtures covering every category, enough runs, and no critical failure in any run. Record it as unqualified, or run the full evaluation.","runNotRecorded":"A route can only be qualified on a run recorded by the grounding-eval producer: run the evaluation on the AI Models page, then use that run's id and result.json unchanged."},"resultGates":"Fixture set v{{version}}, {{count}} fixtures, {{runs}} runs, {{failures}} critical failures. Qualification gates: {{gates}}."}},"operative-workflow":{"run":{"pageTitle":"Task inbox","pageDescription":"Open workflow instances across all active workflows where you can act on the current step.","inboxClear":"Your inbox is clear","inboxClearDescription":"No tasks are waiting for you right now. Open a workflow to start or resume work.","browseWorkflows":"Browse workflows","searchPlaceholder":"Workflow, step, status","noMatchingTasks":"No matching tasks","noMatchingDescription":"Try a different search term or clear the filter to see all inbox items.","loadingData":"Loading workflow data","loadingInstance":"Loading workflow instance","couldNotStart":"Could not start the workflow. Try again or contact your administrator.","startDescription":"Start a new run of this workflow. You will be taken to the first step to capture or view data.","noInstances":"No instances yet","noInstancesDescription":"Start a new run to capture the first step of this workflow.","manualStartUnavailable":"Manual start is unavailable for this workflow.","all":"All","searchByStatus":"Search by status or configured fields","sortHint":"Click any grid column header to sort ascending/descending.","noMatchingInstances":"No instances match the selected filters.","workspace":"Workspace","cancelRun":"Cancel this run","cancelRunDescription":"Ends the run without completing it. Everything captured so far is kept, and it moves to Cancelled.","cancelRunConfirm":"Cancel run","cancelRunPending":"Cancelling…","cancelRunKeep":"Keep it open","startHandsRunToSomeoneElse":"You can start this run, but you will not be able to complete any of its steps — it will wait for a colleague whose role covers them.","activityReason":"Reason","versionStartOrContinue":"v{{version}} · Start or continue an instance","backToWorkflows":"← Back to workflows","startDenied":{"readOnly":"Your operating access is read-only. Configure or deploy access with environment scope is required to start workflow instances.","missingEnvironment":"You have operating access but no environment scope for this client. Ask the client admin to grant environment scope.","missingGrant":"Operating access is not provisioned for this client. Request configure or deploy access with environment scope.","inactiveDelegation":"Delegation is not active for operations in this workspace.","signIn":"Sign in to start workflow instances for this workspace."}},"step":{"noCurrentStep":"No current step. The workflow may be misconfigured.","runtimeBlockedTitle":"Why it stopped","runtimeBlockedHelp":"The runtime refused to move this run to its next step. Fix what the reason names, then retry the step here; the run continues from where it stopped.","noFormConfigured":"This step has no form configured. Configure a form in Workflow admin.","noCompletionAction":"This step has no completion action configured.","assignTo":"Assign to","selectUser":"Select user","assignedToAnother":"This task is assigned to another user. You can review the data below but cannot submit changes.","comment":"Comment","cancel":"Cancel","typeNameToConfirm":"Type your name to confirm","yourFullName":"Your full name","completedInvoice":"Completed invoice (authoritative relational SoR)","optionalFormSchema":"Optional: attach a lightweight form schema for header notes. Relational lines are edited below.","optionalFormSchemaFull":"Optional: attach a lightweight form schema for header notes. Relational lines are edited below.","optionalFormSchemaNote":"Optional: attach a lightweight form schema for header notes. Relational invoice SoR is the SQL master/lines above.","runtimeBlockedRetry":"Retry this step","runtimeBlockedRetrying":"Retrying…","runtimeBlockedRetried":"The step ran. Refreshing the run…","runtimeBlockedRetryFailed":"The step could not be retried.","runtimeBlockedNewVersion":"This run cannot continue from here: the cause is in the published workflow version or in this run's data, and a published version with run history is locked. Create a new version with the fix, start a new run, and cancel this one.","runtimeReturnToStep":"Return to the step","runtimeReturningToStep":"Returning…","runtimeReturnedToStep":"Returned to the step. Refreshing the run…","runtimeReturnToStepHelp":"The value that stopped this run was captured at an earlier step. Return to that step to correct it, then submit again.","noCurrentStepStopped":"This run is stopped at an automatic step. The reason and the way to continue are below.","waitingRoleWithMembers":"This step is completed by {{role}}. Waiting for {{members}} to act — you can view the data but cannot complete it.","waitingRoleNoMembers":"This step must be completed by {{role}}, and no other member currently holds that role. Ask an admin to grant it or reassign the step. You can view the data but cannot complete it.","waitingRoleGeneric":"Waiting for an authorized role to act on this step. You can view the data but cannot complete the action."},"agentProposal":{"title":"Agent proposal ready for review","description":"Review the proposed values below. You can approve them as written, edit them before approval, or use the configured rejection action.","fields":"Proposed fields: {{fields}}","rejectAndRerun":"Reject and rerun agent","rerunTitle":"Reject this proposal?","rerunDescription":"Give a reason. The task stays open and the agent creates a new proposal.","rejectionReason":"Reason for rejection","rerunConfirm":"Reject and rerun","rerunning":"Rerunning…"},"waitEvent":{"title":"Waiting for an event","deliver":"Deliver event (owner / workflow manager)","label":"wait for event","payloadInvalid":"Payload must be valid JSON.","delivered":"Event delivered. {{matched}} wait(s) matched, {{resumed}} resumed.","deliveredWithCompleted":"Event delivered. {{matched}} wait(s) matched, {{resumed}} resumed, {{completed}} instance(s) completed.","parkedBody":"This instance is parked at a <strong>{{stepType}}</strong> step. It resumes automatically when a matching event is delivered — by another workflow that publishes it, an external system, or manually below.","awaitingEvent":"Awaiting event","timeout":"timeout {{at}}","eventKey":"Event key","correlationId":"Correlation id","payload":"Payload (JSON)","delivering":"Delivering…","deliverEvent":"Deliver event","correlationInline":"corr={{correlationId}}"},"reply":{"captured":"What was captured so far","subject":"Subject","message":"Message","placeholder":"Write the reply to send to the customer…","sendFailed":"Could not send the reply.","customerMessage":"Customer’s message","from":"From","to":"To","writeTitle":"Write the reply","sent":"Reply sent","sending":"Sending…"},"invoice":{"addLine":"Add line","percentHint":"Enter percent points (5 = 5%); Platform stores normalized_ratio","moveUp":"Move up","moveDown":"Move down","remove":"Remove","addLineBeforeSaving":"Add at least one line before saving","changedElsewhere":"Invoice changed elsewhere — reloading latest version","serverOverwrote":"Server overwrote tampered calc fields","masterChildNote":"Master + child lines in SQL. Workflow snapshot stores evidence only","create":"Create invoice","status":"Status","customer":"Customer","invoiceDate":"Invoice date","dueDate":"Due date","terms":"Terms","saveLines":"Save lines (server recompute)","markSubmitted":"Mark invoice submitted","totals":{"subtotal":"Subtotal","totalDiscount":"Total discount","totalTax":"Total tax","grandTotal":"Grand total","balanceDue":"Balance due"},"title":"Invoice","number":"Invoice #","lines":"Invoice lines","linesReadOnly":"Invoice lines (read-only)","noLines":"No lines yet — add at least one before save.","columns":{"description":"Description","code":"Code","quantity":"Qty","unitPrice":"Unit price","unit":"Unit","discountPct":"Disc %","taxPct":"Tax %","extended":"Extended","discount":"Discount","taxable":"Taxable","tax":"Tax","total":"Total","lineTotal":"Line total"},"boundElsewhereSave":"Invoice is bound to a different workflow instance — cannot save here","boundElsewhereSubmit":"Invoice is bound to a different workflow instance — cannot submit here","draftCreated":"Invoice draft created","linesSaved":"Lines saved — server totals applied","submitReplayed":"Submit replayed (idempotent — no duplicate)","submitted":"Invoice submitted","platformPendingLines":"Relational invoice lines require Platform <code>invoices</code> / <code>invoice_lines</code> (PR #192). Product UI is bound to Pancho contracts and waiting for schema on this DB.","masterChildEvidenceFields":"(invoiceId, lineIds, trusted totals)."},"docReview":{"generatePreview":"Generate a preview of this document from its template and the current workflow data.","noDocument":"No document available to review yet.","open":"Open","download":"Download","clickToEnlarge":"Click to enlarge","cannotPreview":"This document type can’t be previewed here. Download it to open it in its own application.","downloadToView":"Download to view","generatePreviewFull":"Generate a preview of this document from its template and the current workflow data.","cannotPreviewFull":"This document type can’t be previewed here. Download it to open it in its own application.","generatePreviewNote":"Generate a preview of this document from its template and the current run data.","cannotPreviewNote":"This document type can’t be previewed here. Download it to open it.","generateHere":"Generate a preview of this document from its template and the current data to review it here.","openInApp":"This document type can’t be previewed here. Download it to open in the right application.","generationFailed":"Generation failed.","regenerate":"Regenerate","generatePreviewButton":"Generate preview","enlargeFile":"Enlarge {{fileName}}"},"artifacts":{"view":"View","download":"Download","exceptionReport":"Exception report","noExceptionReports":"No exception report artifacts yet.","redactedRunSample":"Redacted run sample","noRedactedSamples":"No redacted run sample artifacts yet.","approvalReceipt":"Approval Receipt","noApprovalReceipts":"No approval receipt artifacts yet.","auditPackage":"Audit / Evidence Package","noEvidencePackages":"No evidence package artifacts yet.","generatedDocuments":"Generated documents","noGeneratedDocuments":"This run has not generated any documents yet.","fromStep":"from step","loading":"Loading documents…","hiddenDocuments":"{{count}} document(s) from this run are not visible to you. Ask a workflow manager if you need them.","generating":"Generating…","generateAuditPackage":"Generate evidence package","generateRedactedSample":"Generate redacted sample","generateApprovalReceipt":"Generate approval receipt","generateExceptionReport":"Generate exception report","generatedFile":"Generated {{fileName}}","exceptionReportHelp":"Generate an Exception / Incident Report for this {{workflowKey}} run: incident summary, step timeline, impact, and corrective-action placeholders. Runs without failures show an honest no-exception state.","redactedRunSampleHelp":"Generate a consultant-safe sample of this {{workflowKey}} run. Operational structure is kept; names, emails, personal identifiers, and schema-sensitive fields are redacted. Production run-data is denied (ADR-009).","approvalReceiptHelp":"Generate an immutable decision receipt for this {{workflowKey}} run (who decided, approve/reject, decision definition, timestamp, actor, run/step context, and recorded rationale). The file is stored as HTML evidence you can view or download. If no approval events exist, the receipt shows a labeled empty state instead of fabricating decisions.","auditPackageHelp":"Generate a defensible evidence record for this {{workflowKey}} run (overview, artifact manifest with SHA-256 checksums, audit trail, and lineage). The file is stored as an immutable HTML artifact you can view or download.","templateVersion":"template v{{version}}","openRecord":"Open record"},"errors":{"agentProposalMissing":"The agent proposal is not ready yet. Retry the agent before approving this task.","agentProposalSchemaRejected":"The proposal does not match the required field schema: {{fields}}.","actionFailed":"That action could not be completed.","artifactNotFound":"That artifact was not found.","assignedToAnotherUser":"This task is assigned to another user.","cancelFailed":"This run could not be cancelled. Please try again, or ask an administrator if it keeps happening.","cancelNotAllowed":"Only the person who started this run, or someone who can manage workflows, can cancel it.","chooseOutcome":"Choose how to complete this step: approve or reject.","connectorTypeMissing":"This connector step is missing its connector type. An administrator needs to fix the workflow definition.","decisionKeyMissing":"This decision step is missing its decision key. An administrator needs to fix the workflow definition.","deliverEventDenied":"You do not have permission to deliver events on this run. Ask someone who can manage workflows.","deliverEventFailed":"The event could not be delivered. Please try again, or ask an administrator if it keeps happening.","eventKeyRequired":"Choose the event to deliver.","forgetNeedsIdentifier":"A forget action needs an identifier field (identifier, email or phone) in the step data.","instanceAlreadyFinished":"That run has already finished, so there is nothing to cancel.","instanceCreateFailed":"That workflow could not be started. Please try again.","firstStepMaterializeFailed":"That workflow could not be started, and the run was discarded so nothing is left half-started. This is a configuration problem rather than a temporary one, so starting it again will not help. Ask an administrator to check the workflow's steps.","instanceNotFound":"That workflow run was not found.","invalidStepAction":"That step action is not valid.","invoice":{"actionFailed":"That invoice change could not be saved. Please try again.","platformNotReady":"Invoicing is not set up on this deployment yet."},"manualCreationDisabled":"This workflow cannot be started by hand. Its instances are created automatically by triggers.","manualStartDenied":"You are not allowed to start workflows in this workspace.","notPermittedForStep":"You do not have permission to act on this step.","outcomeMismatch":"The step's action does not match the outcome that was submitted.","ownerlessWorkspaceOverdue":"This workspace is past its ownership deadline. Work already running continues, but nothing new can start until someone from the client organisation accepts ownership.","recordEntityMismatch":"That record is not of the type this workflow starts from.","recordNotFound":"That record was not found.","recordStartNotConfigured":"This workflow is not set up to start from a record.","replyBodyRequired":"Write the reply before sending.","replyRecipientRequired":"Enter who this reply goes to.","replySendFailed":"The reply could not be sent. Please try again, or ask an administrator if it keeps happening.","replySubjectRequired":"Enter a subject.","stepNotFound":"That step was not found.","stepSaveFailed":"This step could not be saved. Please try again, or ask an administrator if it keeps happening.","stepAlreadyDecided":"This task was already completed. Refresh to see the latest result.","stepDecisionInProgress":"Someone is completing this task right now. Refresh to see the latest result.","typeNameToConfirm":"Type your name to confirm this action.","workflowNotFound":"That workflow was not found.","workflowNotRunnable":"This workflow has no runnable steps yet. Add steps in the designer before starting it.","commentRequired":"A comment is required for this action.","sendEmailConfigMissing":"This step is set to send an email but has no email configured. An administrator needs to fix the workflow definition.","sendEmailRecipientMissing":"This step is set to send an email but has no recipient. An administrator needs to fix the workflow definition.","sendEmailBodyMissing":"This step is set to send an email but the message has no content. An administrator needs to fix the workflow definition.","entityRecordNotStored":"The step was saved but its record could not be stored. Try again.","entityRecordRejected":"The step was not saved: its data entity does not accept the submission ({{details}}). Ask an administrator to update the entity schema from the form.","fieldNotEditableAtStep":"This step does not allow changing {{fields}}. Nothing was saved.","fieldNotAllowedAtStep":"This step does not accept a value for {{fields}}. Nothing was saved.","stepValueRuleFailed":"A value set at this step could not be worked out for {{field}}: {{details}}. Nothing was saved.","runRecordMissing":"This step writes {{fields}} to the record the run is on, but this run was not started from a record. Start the workflow from the record's page.","runRecordGone":"The record this run is on no longer exists, so this step cannot write to it. Nothing was saved.","runRecordNotWritten":"The record this run is on could not be updated. Nothing was saved; try again.","runRecordFieldUnknown":"This step writes {{fields}} to the record the run is on, but that record has no such field. Ask an administrator to correct the step.","cancelRefusedAllocationHeld":"This run still holds an allocation it has not released, so it cannot be cancelled. Release it first (a reversal run keyed on this run's allocation), then cancel.","formBoundsRejected":"The step was not saved: the form's own limits refuse the submission ({{details}}). Correct the values and submit again.","consumptionExceedsBalance":"This entry draws {{attempted}} from the selected record, but only {{available}} remains. Reduce it to {{available}} or less.","noStepToReturnTo":"There is no earlier step to return this run to.","returnBlockedByGovernedRecord":"This run cannot be returned: a record its step saved is under a legal hold or keeps governed documents.","entityRecordDuplicate":"The step was not saved: another record already carries the same {{fields}}. Open that record instead of creating a second one, or change the values.","entityRecordIntentMismatch":"The step was not saved: this change no longer matches the write that was started. Reload the step and try again.","entityRecordEffectInsufficient":"The step was not saved: not enough is available for {{fields}} — you asked for {{requested}} but only {{available}} is available. Reduce the amount or choose a different source.","entityRecordEffectHeld":"The step was not saved: this record still holds an allocation involving {{fields}}. Release it first, then submit again.","entityRecordConstraintViolated":"The step was not saved: {{fields}} does not satisfy a rule on this entity. Correct the value and submit again.","entityRecordReferenceMoved":"The step was not saved: a record that {{fields}} points at changed since you opened this step. Reload and submit again.","entityRecordDerivationCycle":"The step was not saved: this would create a circular calculation involving {{fields}}. Change one of the linked values and submit again.","entityRecordGuardOpenChildren":"The step was not saved: this record still has open related items under {{fields}}. Close or remove them before submitting.","entityRecordRevisionMismatch":"The step was not saved: this record changed since you opened the step. Reload and submit again.","projectionHasNoRecord":"This step is set to turn {{keys}} into records, but it stored no record to read them from. Bind a data entity to the step, or remove the projection.","projectionFailed":"The records this step produces could not be created ({{mapping}}). Nothing was created; check the projection's mapping and try again.","separationInitiator":"You started this run, and this step must be decided by someone else. Ask a colleague with the right role to take it.","separationPriorActor":"You completed the previous step, and this one must be decided by someone else. Ask a colleague with the right role to take it.","separationPriorActorUnknown":"This step's rule is that whoever completed the previous step may not decide it, and the run's history cannot be read back well enough to tell who that was, so nobody can decide it. Ask an administrator to check the workflow's steps.","readFailureReference":"Reference: {{correlationId}}"},"runtime":{"controlInvalid":"This control-flow declaration is invalid. Check its steps and join policy.","mappingConflict":"Output mappings overlap. Choose a separate target field for each output.","mappingMissing":"A mapped output is missing. Check the selected branch or child output.","childPinUnavailable":"The pinned child workflow version is unavailable. Choose an available published version.","childFailed":"The child workflow did not complete successfully. Review the child run before continuing.","correlationInUse":"An active run already uses this correlation key. Use a different value or finish that run.","entityNotFound":"This step writes to a data entity \"{{entityKey}}\" that does not exist on this account.","entityLookupFailed":"The data entity for this step could not be looked up.","recordIdSourceEmpty":"The record id source \"{{source}}\" resolved to nothing, so this step stopped rather than write against every record.","matchFieldEmpty":"The match field \"{{field}}\" resolved to nothing, so this step stopped rather than write against every record.","correlationFieldEmpty":"The correlation field \"{{field}}\" resolved to nothing, so this step stopped rather than write a record it could not correlate.","noMatchingRecord":"No existing \"{{entityKey}}\" record matched, so there was nothing to update.","entityWriteFailed":"Writing to \"{{entityKey}}\" failed, so this workflow stopped here.","manualReplyComposeHere":"This step has no form to fill in, so write the reply here. Sending it completes the step.","uniqueConstraintViolated":"Another record already uses the same {{fields}}, so this step did not write.","entityReadFailed":"Reading \"{{entityKey}}\" failed, so this workflow stopped here.","instanceNotFound":"That workflow run was not found.","instanceBlocked":"This workflow run is stopped and cannot continue.","workflowNotFoundForInstance":"The workflow behind this run was not found.","workflowMustBeActive":"This workflow must be published before a run can continue.","stepsMissing":"This workflow has no steps to run.","instanceStepsLoadFailed":"The steps of this run could not be loaded.","spikeDisabled":"The runtime spike is not enabled on this deployment.","spikeNotAllowlisted":"This run is not on the runtime spike allowlist.","spikeAccountNotAllowlisted":"The runtime spike is limited to allowlisted demo accounts.","spikeUnsupportedWorkflow":"The runtime spike does not support the workflow \"{{workflowSlug}}\".","spikeNotTagged":"This run is not tagged for the runtime spike.","documentTemplateMissing":"Step \"{{stepKey}}\" has no document template for locale \"{{locale}}\", so the document could not be generated.","documentTemplateMissingForLanguage":"Step \"{{stepKey}}\" has no document template for language \"{{language}}\" and is set to stop rather than use the \"{{defaultLocale}}\" template.","documentTriggerNoActor":"Step \"{{stepKey}}\" could not generate its document because the run has no recorded starter to act as.","documentTriggerNoArtifact":"Step \"{{stepKey}}\" ran but produced no document. {{detail}}","documentTriggerUnconfigured":"Step \"{{stepKey}}\" is a Generate document step with no template configured.","documentTemplateInputMissing":"Step \"{{stepKey}}\" could not generate its document: the template needs {{fields}}, and nothing in this run provides it. Capture it in a step before this one.","documentTemplateError":"Step \"{{stepKey}}\" could not generate its document: {{detail}}","stateNotAllowed":"Step \"{{entityKey}}\": the record is in state \"{{state}}\", and this run may only continue when it is in one of: {{states}}.","stateRecordUnresolved":"The record whose state this step checks (\"{{entityKey}}\", from \"{{source}}\") could not be found.","appendOnlyReplayDiffers":"\"{{entityKey}}\" already holds this record and it cannot be changed; this retry would have written something different, so the run stopped.","allocationInsufficient":"Step \"{{entityKey}}\": the quantity to allocate is more than what is still available. Reduce the quantity, or receive the difference as a separate exception; the step can be retried once the balance allows it.","allocationKeyReused":"Step \"{{entityKey}}\": this allocation was already taken under the same key with a different quantity. A retry must repeat the original request; a different one needs its own identity.","allocationNotFound":"Step \"{{entityKey}}\": no allocation carries the key this release names. Check the original's identity.","allocationInvalidQuantity":"Step \"{{entityKey}}\": the quantity to allocate must be greater than zero. Route a zero quantity around this step with a gateway.","releaseExceedsAllocation":"Step \"{{entityKey}}\": the quantity to release is more than the original allocation still holds. Reduce it to what remains.","releaseKeyReused":"Step \"{{entityKey}}\": this release was already made under the same key with a different quantity. A retry must repeat the original request.","postingWouldGoNegative":"Step \"{{entityKey}}\": this posting would take the position below zero. Check the quantity and the position it targets.","postingKeyReused":"Step \"{{entityKey}}\": this posting was already made under the same key with a different quantity. A retry must repeat the original request.","primitiveStateNotAllowed":"Step \"{{entityKey}}\": the record this step depends on is no longer in a state that allows it. Retry once the record is back in an allowed state.","split":"Split","join":"Join","subprocess":"Subprocess","step":"Step","parent":"Parent run","child":"Child run","averageScaleInvalid":"The valuation precision must be between 0 and 12 decimal places; ask an administrator to correct this step.","averageUnitCostInvalid":"The receipt unit cost cannot be negative; correct the cost and retry this step.","averageWouldGoNegative":"This movement would make the valuation quantity negative; reduce the quantity or replenish it before retrying.","averageUndefined":"This receipt leaves no positive quantity for an average cost; correct the position or receipt quantity before retrying.","releaseSourceMissing":"The original allocation source is no longer available; ask an administrator to restore it before releasing this allocation.","stepUnsupported":"Step \"{{stepKey}}\" has nothing that lets it finish: no action, form or automation is configured on it. Add one in the workflow designer.","stepNotInDefinition":"The workflow routes to a step \"{{stepKey}}\" that is not in this version. Point the route at a step that exists.","decisionNoRoute":"The decision at step \"{{stepKey}}\" chose no route: no rule applied to this case and no default outcome is set. Add a rule or a default outcome.","routeUnresolved":"Step \"{{stepKey}}\" finished, but none of its routes says where to go next: no route matches its outcome and none is set as the default. Add a default route, or a route for each outcome, in the workflow designer.","stepInputMissing":"Step \"{{stepKey}}\" has no form data to validate. Check that an earlier step collects the form, then retry this step.","eventWaitNotConfigured":"Step \"{{stepKey}}\" waits for an event, but no event is set on it. Choose the event it waits for in the workflow designer.","eventWaitRegistrationFailed":"Step \"{{stepKey}}\" could not start waiting for its event. Check the event and correlation settings on the step, then retry it.","publishEventNotConfigured":"Step \"{{stepKey}}\" publishes an event, but no event is set on it. Choose the event and topic in the workflow designer.","publishEventFailed":"Step \"{{stepKey}}\" could not publish its event. Check the step's event, topic and payload mapping in the workflow designer, then retry the step.","agentNoProvider":"Step \"{{stepKey}}\" has no AI model to run on. Choose a model for the step or its agent in the AI settings, then retry the step.","agentCallFailed":"The AI model for step \"{{stepKey}}\" did not answer. Check that the model is reachable in the AI settings, then retry the step.","agentRecordLookupFailed":"The AI step \"{{stepKey}}\" could not look up matching records. Check its \"Look up matching records\" settings (records to search, fields to compare and the field that holds the names), then retry the step.","agentOutputEmpty":"The AI agent at step \"{{stepKey}}\" returned nothing. Review the agent's instructions, then retry the step.","agentOutputNotJson":"The AI agent at step \"{{stepKey}}\" did not return structured output the workflow can use. Review the agent's instructions so it answers in the expected format, then retry the step.","agentNotRun":"Step \"{{stepKey}}\" did not run an AI agent and has no prepared output to continue with. Check that the step is set up as an AI step with an agent, then retry it.","restIntegrationDisabled":"Step \"{{stepKey}}\" calls an external service, but outbound REST calls are turned off on this platform. Ask an administrator to turn on REST integration, then retry the step.","restStepParked":"Step \"{{stepKey}}\" is waiting for its integration to be turned on. Ask an administrator to enable the integration, then retry the step.","restCallFailed":"Step \"{{stepKey}}\" could not complete its call to the external service. Check the step's connection, address and credentials, then retry the step.","postDeltaConfigInvalid":"Step \"{{stepKey}}\" records a quantity change, but its settings are missing or incomplete. Open the step in the workflow designer and complete them.","releaseConfigInvalid":"Step \"{{stepKey}}\" releases an allocated quantity, but its settings are missing or incomplete. Open the step in the workflow designer and complete them.","requireStateConfigInvalid":"Step \"{{stepKey}}\" checks the state of a record, but its settings are missing or incomplete. Open the step in the workflow designer and complete them.","aggregateEntityConfigInvalid":"Step \"{{stepKey}}\" totals records, but its settings are missing or incomplete. Open the step in the workflow designer and complete them.","averageCostConfigInvalid":"Step \"{{stepKey}}\" updates an average cost, but its settings are missing or incomplete. Open the step in the workflow designer and complete them.","allocateConfigInvalid":"Step \"{{stepKey}}\" allocates a quantity, but its settings are missing or incomplete. Open the step in the workflow designer and complete them.","computeConfigInvalid":"Step \"{{stepKey}}\" calculates values, but its settings are missing or incomplete. Open the step in the workflow designer and complete them.","renderTemplateConfigInvalid":"Step \"{{stepKey}}\" fills in a message template, but its settings are missing or incomplete. Open the step in the workflow designer and complete them.","notifyConfigInvalid":"Step \"{{stepKey}}\" sends a notification, but its settings are missing or incomplete. Open the step in the workflow designer and complete them.","entityReadConfigInvalid":"Step \"{{stepKey}}\" looks up a record, but its settings are missing or incomplete. Open the step in the workflow designer and complete them.","rulesetConfigInvalid":"Step \"{{stepKey}}\" evaluates a rule set, but its settings are missing or incomplete. Open the step in the workflow designer and complete them.","entityWriteConfigInvalid":"Step \"{{stepKey}}\" saves a record, but its settings are missing or incomplete. Open the step in the workflow designer and complete them.","postDeltaFailed":"Step \"{{stepKey}}\" could not record its quantity change: a record or field it names could not be found or read on this run. Check the entity and field settings on the step, then retry it.","releaseFailed":"Step \"{{stepKey}}\" could not release its allocation: a record or field it names could not be found or read on this run. Check the entity and field settings on the step, then retry it.","averageCostFailed":"Step \"{{stepKey}}\" could not update its average cost: a record or field it names could not be found or read on this run. Check the entity and field settings on the step, then retry it.","allocateFailed":"Step \"{{stepKey}}\" could not allocate its quantity: a record or field it names could not be found or read on this run. Check the entity and field settings on the step, then retry it.","aggregateEntityFailed":"Step \"{{stepKey}}\" could not total its records: a record or field it names could not be found or read on this run. Check the entity and field settings on the step, then retry it.","computeFailed":"Step \"{{stepKey}}\" could not calculate \"{{outputKey}}\": its formula uses a value this run does not have, or is not valid. Check the formula in the workflow designer, then retry the step.","rulesetReferenceUnresolved":"The rule set at step \"{{stepKey}}\" uses \"{{field}}\", which this run does not have. Check the rule set's fields, or collect the value in an earlier step, then retry this step.","rulesetEvaluationFailed":"The rule set at step \"{{stepKey}}\" could not be evaluated. Check that the rule set the step names exists and is published, then retry the step.","queryCollectionNotConfigured":"Step \"{{stepKey}}\" reads a collection of records, but no segment is set on it. Choose a segment in the workflow designer.","queryCollectionFailed":"Step \"{{stepKey}}\" could not load the records of its segment. Check that the segment still exists and its filter is valid, then retry the step.","aggregateCollectionNotConfigured":"Step \"{{stepKey}}\" summarizes a collection, but its settings are missing. Open the step in the workflow designer and complete them.","aggregateCollectionFieldRequired":"Step \"{{stepKey}}\" uses the \"{{op}}\" operation, which needs a field to work on, and none is set. Choose the field in the workflow designer.","aggregateCollectionNotAList":"Step \"{{stepKey}}\" summarizes \"{{fromKey}}\", but on this run that value is not a list. Check that the step points at a list an earlier step produces, then retry it.","bulkUpdateNotConfigured":"Step \"{{stepKey}}\" updates records in bulk, but its segment or changes are not set. Open the step in the workflow designer and complete them.","bulkUpdateFailed":"Step \"{{stepKey}}\" could not update the records of its segment. Check that the segment still exists and the fields it changes are valid, then retry the step.","bulkDeleteNotConfigured":"Step \"{{stepKey}}\" deletes records in bulk, but no segment is set on it. Choose a segment in the workflow designer.","bulkDeleteFailed":"Step \"{{stepKey}}\" could not delete the records of its segment. Check that the segment still exists and its filter is valid, then retry the step.","bulkDeleteRecordOnHold":"Step \"{{stepKey}}\" kept {{count}} record(s) under a legal hold: a record on hold cannot be deleted. Release the hold, then retry the step.","bulkDeleteRecordHasDocuments":"Step \"{{stepKey}}\" kept {{count}} record(s) that carry governed documents, so they cannot be deleted. Remove the documents first, or archive the records, then retry the step.","glExportNotConfigured":"Step \"{{stepKey}}\" exports to the general ledger, but its export settings are missing. Open the step in the workflow designer and complete them.","glExportEnqueueFailed":"Step \"{{stepKey}}\" could not queue its general ledger export. Check the export settings and the data the step sends, then retry the step.","sendEmailNotConfigured":"Step \"{{stepKey}}\" sends an email, but its email settings are missing. Open the step in the workflow designer and complete them.","sendEmailNoRecipient":"The email at step \"{{stepKey}}\" has no recipient on this run. Check the step's To field and that the value it uses is filled in by an earlier step.","sendEmailNoSubject":"The email at step \"{{stepKey}}\" has an empty subject on this run. Check the step's subject and that the values it uses are filled in by an earlier step.","sendEmailNoBody":"The email at step \"{{stepKey}}\" has an empty body on this run. Check the step's message and that the values it uses are filled in by an earlier step.","sendEmailCredentialMissing":"The email at step \"{{stepKey}}\" uses the credential \"{{credentialKey}}\", which is not set up. Add the credential in the integration settings, then retry the step.","sendEmailNoSender":"The email at step \"{{stepKey}}\" has no sender address. Set a from address on the account's email provider, then retry the step.","sendEmailFailed":"The email at step \"{{stepKey}}\" could not be sent: the email provider refused it or could not be reached. Check the account's email provider settings, then retry the step.","sendEmailAttachmentMissing":"The email at step \"{{stepKey}}\" attaches a document that could not be found on this run. Check that the Generate document step before it completed, then retry the step.","sendEmailProviderNotConfigured":"The email at step \"{{stepKey}}\" was not sent: no mail server is configured for this environment. Ask your administrator to set up the email provider, then retry the step.","sendEmailAuthFailed":"The email at step \"{{stepKey}}\" was not sent: the mail server rejected the sign-in. Check the SMTP user and password on the account's email provider, then retry the step.","sendEmailRecipientRejected":"The email at step \"{{stepKey}}\" was not sent: the mail server rejected a recipient address. Check the step's To, Cc and Bcc values, then retry the step.","sendEmailProviderRejected":"The email at step \"{{stepKey}}\" was not sent: the mail server refused the message. Check the sender address and sending domain on the account's email provider, then retry the step.","sendEmailProviderUnavailable":"The email at step \"{{stepKey}}\" could not be sent right now: the mail server could not be reached or asked to try later. Retry the step in a few minutes; it will not be sent twice.","saving":"Saving","writeBackSaved":"Saved","writeBackUpdated":"{{count}} updated","writeBackAdded":"{{count}} added","writeBackDeleted":"{{count}} deleted","actionFailed":"{{label}} failed.","decisionInputUnresolved":"The decision at step \"{{stepKey}}\" could not read a number for input \"{{input}}\" (from {{field}}): the value is empty or not a number. The run stopped here instead of taking a route. Correct the value, or bind the input to the right field.","agentRouteUnqualified":"Step \"{{stepKey}}\" needs regulated evidence ({{domain}}, {{locale}}), and its AI model is not qualified for it. Choose a qualified model for the step or its agent in the AI settings, then retry the step."},"instance":{"terminalCompleted":"This workflow instance is completed.","terminalRejected":"This workflow instance was rejected.","terminalCancelled":"This workflow instance was cancelled.","terminalComplete":"This workflow instance is complete.","snapshotEvidenceTitle":"Snapshot evidence (immutable)","snapshotEvidenceHelp":"The workflow snapshot stores evidence only — the invoice records remain the system of record.","noActiveStepInvoice":"No active step — showing the authoritative invoice record.","saveFailed":"Save failed.","ackConfirmStatement":"Please confirm the statement to continue.","ackTypeName":"Type your name to confirm.","claiming":"Claiming…","claimTask":"Claim task","reviewerFeedback":"Reviewer feedback","aiOutputTypeMismatch":{"title":"The AI could not fill some fields","body":"An AI step returned values of the wrong type for: {{fields}}. They were left empty so the case can still be saved — please fill them in."},"recordMatches":{"title":"Matching records found","description":"Looked up in the data before the AI step “{{step}}” ran. These are facts from the records, independent of what the AI wrote.","searched":"Searched name","match":"Matching record","links":"Linked records","noMatch":"No matching record","noLinks":"No linked records","truncated":"More matches exist than are shown.","scanLimit":"Not every record could be compared. Use more specific names to narrow the search.","matchType":{"exact":"Exact match","contains":"Contains the name","tokens":"All words match"}},"progress":"Progress","activity":"Activity"},"instanceList":{"status":{"in_progress":"In progress","waiting_for_approval":"Waiting for approval","approved":"Approved","paid":"Paid","completed":"Completed","rejected":"Rejected","returned":"Returned","cancelled":"Cancelled"},"couldNotStartStay":"Could not start the workflow. Stay in this workspace and try again. If this keeps happening, contact your administrator.","newInstance":"New instance","starting":"Starting…","startNew":"Start new","startUnavailable":"Start unavailable","recentInstances":"Recent instances","filterByStatus":"Filter by status","searchCurrentColumns":"Search current columns","sorting":"Sorting","columnStatus":"Status","columnAssignee":"Assignee","columnCreated":"Created","columnAction":"Action","openInstance":"Open instance {{id}}","configureColumnsHint":"Configure `workflow.definition.instance_list.fields` to choose additional columns for this grid.","columnCurrentStep":"Current step","turnYou":"Waiting on you","turnOthers":"Waiting on someone else","showingNewestOf":"Showing the newest {{shown}} runs; older runs are not listed.","showingAllRuns":"Showing every run you can open ({{count}}).","showAllRuns":"Show all runs","showRecentRuns":"Show recent runs only"},"inbox":{"search":"Search","columnWorkflow":"Workflow","columnStep":"Step","columnAssignment":"Assignment","unassigned":"Unassigned"},"instancePage":{"backToWorkflow":"← Back to workflow","reportsTab":"Reports & Evidence","description":"Instance · {{detail}}","noCurrentStep":"No current step","stepKeyAria":"Step key: {{key}}","instanceStatusAria":"Instance status: {{status}}","keyTag":"key","typeTag":"type","assignedTo":"Assigned to {{name}}","assign":"Assign","assigning":"Assigning…","sendReplyAndComplete":"Send reply & complete step","defaultAction":{"continue":"Continue","saveAndClose":"Save and close","continueWhen":"Continue ({{condition}})"},"defaultSection":"Fields","otherSection":"Other","fallbackForm":{"title":"{{step}} - Data Capture","section":"Required information","invalidEmail":"Enter a valid email address"},"evidence":{"invoiceId":"Invoice ID","lineCount":"Line count","grandTotal":"Grand total","subtotal":"Subtotal","totalTax":"Total tax","balanceDue":"Balance due","moneyScale":"Money scale","status":"Status","schemaVersion":"Schema version"},"meta":{"slaClosed":"Closed","slaOverdue":"Overdue","slaOnTrackWaiting":"On track · waiting","slaOnTrackUnassigned":"On track · unassigned","roleCannotCapture":"Your role cannot capture this step","assignedToAnother":"Task is assigned to another user","cannotActYet":"You cannot act on this step yet","blockerRoleCannotCapture":"Your role cannot capture this step.","blockerAssignedToAnother":"This task is assigned to another user.","blockerActionsNotPermitted":"Step actions are visible but not permitted for you."},"ui":{"commentDialog":{"title":"Add a comment","rejectTitle":"Reject this request","description":"Explain why this is being rejected or sent back. The requester will see this message.","placeholder":"Required","confirm":"Confirm"},"bannerTitle":"Reviewer feedback","terminalRejectedTitle":"Reason","requiredComment":"A comment is required for this action.","ack":{"description":"This records an attestation of record with your name and the time.","sign":{"verb":"Sign","title":"Sign document","statement":"I have reviewed this and sign it."},"validate":{"verb":"Validate","title":"Validate document","statement":"I have reviewed this and confirm it is valid."},"approve":{"verb":"Approve","title":"Approve","statement":"I have reviewed this and approve it."},"acknowledge":{"verb":"Acknowledge","title":"Acknowledge","statement":"I have reviewed and acknowledge this."}}},"timelineEmpty":"Nothing has happened yet.","assignedOnSave":"Assigned on save"},"decisionSuperseded":{"title":"This task was already decided by someone else.","inFlightTitle":"Someone else is deciding this task right now.","body":"Nothing you entered was saved. The actions are no longer available; this is the latest result.","stepResult":"Task result","runResult":"Process status","refresh":"Refresh"},"emailDelivery":{"title":"Emails sent by this run","description":"Who each email went to and what the email provider has reported. A step that sends an email completes when the provider accepts it; delivery is reported separately.","unavailable":"The emails of this run could not be read. Reload the page; if it persists, contact support.","to":"To","subject":"Subject","provider":"Provider","messageId":"Message ID","providerResponse":"Provider response","states":{"accepted":"Accepted by provider","deferred":"Delivery delayed","delivered":"Delivered","bounced":"Bounced","complained":"Marked as spam","logged":"Logged only","sending":"Sending","notSent":"Not sent"},"explanations":{"accepted":"The email provider accepted this message for delivery. That is not delivery: no delivered or bounced report has been received for it yet.","deferred":"The provider could not deliver it yet and is retrying. {{detail}}","delivered":"The recipient's mail server accepted the message.","bounced":"The message could not be delivered. {{detail}}","complained":"The recipient marked the message as spam. {{detail}}","logged":"Recorded by the log provider only; no email was sent to anyone.","sending":"A send attempt is in progress.","notSent":"The email was not handed to the provider. {{detail}}"},"notConfirmedHint":"Check the recipient address above. If the provider's delivery reports are connected, this changes to Delivered or Bounced; search the provider's logs by the message ID.","rejectedRecipients":"The provider refused these recipients: {{recipients}}"}},"workflow-timers":{"panel":{"title":"Timers","dueAt":"Due","remaining":"Remaining","remainingValue":"{{minutes}} min","overdue":"Overdue","none":"—","remindersSent":"Reminders sent","escalation":"Escalation","escalationState":{"none":"None","pending":"Pending","fired":"Fired","cancelled":"Cancelled"},"kind":{"reminder":"Reminder","due":"Due date","service_level":"Service level"},"timerStatus":{"pending":"Pending","claimed":"Processing","fired":"Fired","cancelled":"Cancelled","skipped":"Skipped","failed":"Failed"}},"refusals":{"stepNotFound":"That step could not be found.","stepNotActive":"That step is not open for assignment.","reassignFailed":"The step could not be reassigned.","timerClaimFailed":"The timer could not be claimed.","timerDispatchFailed":"The timer action could not be completed.","noEligibleAssignee":"No member holds the escalation role."}},"app-common":{"actions":{"approve":"Approve","cancel":"Cancel","clear":"Clear","clearFilters":"Clear Filters","confirm":"Confirm","deny":"Deny","exit":"Exit","next":"Next","open":"Open","previous":"Previous","retry":"Retry","run":"Run","view":"View","viewDetails":"View details","applySelected":"Apply selected","contactSupport":"Contact support","generateReport":"Generate report","upgradePlan":"Upgrade plan","rename":"Rename","save":"Save","saving":"Saving…"},"labels":{"status":"Status","customer":"Customer","period":"Period","plan":"Plan","pending":"Pending","available":"Available","unavailable":"Unavailable","alreadyMapped":"Already mapped","displayName":"Display name","resourceType":"Resource Type","fromDate":"From Date","toDate":"To Date","actionType":"Action Type","workflows":"Workflows","dashboards":"Dashboards","insights":"Insights","near":"Near","aspirational":"Aspirational"},"select":{"action":"Select action","language":"Select language","resource":"Select resource","segment":"Select segment","role":"Select your role"},"dates":{"last7":"Last 7 days","last30":"Last 30 days","last90":"Last 90 days","last12Months":"Last 12 months"},"home":{"title":"Personal Home","description":"Inbox and navigation hub for your teams and delegated client work.","loading":"Loading home","couldNotLoad":"Workspace home could not be loaded","welcome":"Welcome to your workspace","yourWork":"Your work here","yourRole":"Your role in this workspace","nextActions":"Next actions","noNextActions":"No next actions yet. Open workflows to start or resume work.","noWorkflows":"No workflows yet","runnableWorkflows":"Runnable workflows","noActiveWorkflows":"No active workflows are ready to run. Publish a workflow to start.","setupFirstWorkflow":"Set up your first workflow","installSuite":"Install the standard 6-workflow suite","openOperations":"Open Operations","openProcessCatalog":"Open process catalog","navMenu":"Navigational menu","openNavMenu":"Open navigation menu","operationalUnderstanding":"Operational Understanding","workByState":"Work by state","noPublishedWorkflows":"No published workflows yet. When the client publishes process definitions, they appear here.","processDefinitionsAppear":"Process definitions will appear here once published.","activeAndDraft":"Active and draft process definitions for this workspace.","delegatedAppearHere":"When a client grants your practice configure or deploy access, their workspace appears here with grant scope and environment labels.","noPublishedYet":"No published workflows yet. When the client publishes process definitions, they appear here and in the process catalog.","noActiveReady":"No active workflows are ready to run. Publish a workflow to start work from home.","openFindings":"Open Findings & Recommendations for the client's published process.","noWorkflowsYetDescription":"You do not have any workflows yet. Set up your first workflow to start running business processes in LerniFlow.","loadOfflineTitle":"You appear to be offline","loadCancelledTitle":"Loading cancelled","loadTimeoutTitle":"Home is taking longer than expected","loadOfflineDetail":"Reconnect to the network, then retry to load your workspace home.","loadCancelledDetail":"You stopped waiting for home content. Retry when you are ready.","loadTimeoutDetail":"We could not finish loading meaningful home content in time. Retry to try again.","grantOnClient":"Grant on {{clientName}}","grantLevels":{"configure":{"title":"Configure","summary":"You may design and operate in sandbox. Production deploy is not included in this grant."},"deploy":{"title":"Deploy","summary":"You may configure this client and request production deploy under this grant."},"support":{"title":"Support","summary":"Read-only assistance. Configure and deploy actions are not permitted."},"train":{"title":"Train","summary":"Training access only. Operational writes and production deploy are not permitted."}},"yourWorkFor":"Your work here for {{clientName}}","grantedAccount":"Granted account:","environments":"Environments:","notPermittedByGrant":"Not permitted by this grant.","delegatedActions":{"run_workflows":"Start client workflows and continue work already in progress.","edit_drafts":"Review and update workflow drafts in the client workspace.","view_data":"Inspect the client data structures available to your engagement.","request_promotion":"Prepare a workflow change for the client approval process."},"publishedWorkflows":"Published workflows","workflowVersion":"Version {{version}}","refreshToRetry":"Refresh the page to try loading your operational workspace again."},"tenant":{"operating":"Operating tenant","switchClient":"Switch client","switchClientWorkspace":"Switch client workspace","contentHidden":"Client workspace content is hidden until operating context is valid.","useExitOrSwitch":"Use Exit or Switch client in the banner to continue safely.","actingOnBehalfOf":"Acting on behalf of","actingOnBehalfOfAria":"Acting on behalf of {{clientName}}: {{state}}. {{consultant}} of {{consultantAccount}}, {{accessLevel}} access, {{expiry}}","noEnvironments":"no environments","confirmWriteTo":"Confirm write to {{clientName}}","confirmWriteDescription":"{{action}} in a client workspace you do not own. Verify the tenant before continuing.","confirming":"Confirming…","writeKinds":{"create":"Create workflow","publish":"Publish or deactivate workflow","delete":"Delete workflow","clone":"Clone workflow","stage-change":"Request environment promotion"},"expiry":{"untilRevoked":"Active until revoked","accessUntil":"Access until {{until}}","grantedUntilRevoked":"Granted {{granted}} · active until revoked","grantedAccessUntil":"Granted {{granted}} · access until {{until}}","granted":"Granted {{granted}}"}},"billing":{"trialEnded":"Trial ended","trialStatus":"Trial status","paymentRequired":"Payment required","paymentFailed":"We could not process your last payment. Update billing details to restore access.","readOnly":"Your workspace is read-only. Add a payment method to restore full access."},"audit":{"filters":"Audit log filters","clearFilters":"Clear audit log filters","pagination":"Audit log pagination","nextPage":"Next audit log page","previousPage":"Previous audit log page"},"access":{"approved":"Access request approved","denied":"Access request denied","noPending":"No pending access requests","queuePagination":"Queue pagination"},"views":{"activeFilters":"Active filters","saveAsNamed":"Save current filters as a named view","nameThis":"Name this view","enterName":"Enter a name for this view","savedView":"Saved view","savedViewName":"Saved view name","visibility":"Saved view visibility","delete":"Delete saved view","deleted":"Deleted view","setFilterFirst":"Set at least one filter before saving a view","operationsViewMode":"Operations view mode","openFullTransaction":"Open full transaction","errors":{"saveDenied":"You do not have permission to save views for this workspace.","deleteDenied":"You do not have permission to delete views for this workspace."}},"insights":{"readOnlyView":"A read-only view of the business metrics available from this workspace.","unavailable":"Insights are temporarily unavailable.","createDashboard":"Create dashboard","openDashboard":"Open dashboard","draftWithAi":"Draft a dashboard with AI","draftDescription":"Draft a visual workspace from available KPI metadata and your description.","noReadyKpis":"No Ready KPIs are available to add yet.","kpiTrend":"KPI trend","detectProfile":"Detect business profile","detectDescription":"Detect an industry and business functions from workflow and entity metadata.","matchConcepts":"Match business concepts to captured workflow fields. Only workflow and entity metadata is used.","suggestMappings":"Suggest data mappings","noSafeMatches":"No safe field matches were found.","detectFromNames":"Detect an industry and business functions from workflow and entity names. No tenant records are sent to AI.","matchConceptsFull":"Match business concepts to captured workflow fields. Only workflow and field names are shared with AI; applying a mapping always requires confirmation.","draftFromMetadata":"Draft a visual workspace from available KPI metadata and your confirmed business profile. Review it here before anything is created.","errors":{"chooseValidMappings":"Choose valid data mappings.","confirmFailed":"We could not confirm your business profile. Please try again.","confirmMappingsFailed":"The data mappings could not be confirmed.","createDashboardFailed":"The dashboard could not be created.","dashboardDraftInvalid":"The dashboard draft is not valid.","detectFailed":"We could not work out your business profile. Please try again.","draftDashboardFailed":"A dashboard could not be drafted.","kpiInvalid":"One of the dashboard KPIs is not valid.","mappingInvalid":"One of the selected mappings is not valid.","saveFailed":"We could not save your business profile. Please try again.","saveMappingsFailed":"The mappings could not be saved.","suggestMappingsFailed":"The data mappings could not be suggested.","unsupportedProfileValue":"Choose an industry and business function from the list.","validateConceptsFailed":"The concepts could not be validated.","validateDashboardFailed":"The dashboard could not be validated."}},"understanding":{"title":"Business Understanding","capabilities":"Business capabilities","exploreCapability":"Explore capability","objectiveProgress":"Objective progress","howToUse":"How to use this hub","whenNeedsAttention":"When a capability needs attention now, open Operations to see active work, waiting items, and next actions.","viewAssessment":"View assessment","viewAssessments":"View assessments","seeMaturity":"See capability maturity across all the clients you operate, and open any client for evidence and next steps.","seeMaturityFull":"See capability maturity across all the clients you operate, and open any client for evidence and next steps.","seeMaturityNext":"See capability maturity across all the clients you operate, and what each needs next."},"portfolio":{"createClientWorkspace":"Create client workspace","addClientForm":"Add client form","createDescription":"Create a new client workspace under your practice, with a delegation grant so you can operate it.","inviteOwner":"Invite the real client owner by email. When they accept, they become the workspace owner.","clientNamePlaceholder":"Acme Manufacturing","createFull":"Create a new client workspace under your practice, with a delegation grant so you can operate it — optionally pre-loaded with the standard workflow suite.","inviteOwnerFull":"Invite the real client owner by email. When they accept, they become the workspace owner and you keep operating it under your delegation grant.","ownerEmailPlaceholder":"owner@client.com","suiteNone":"Client workspace created. It now appears in your portfolio below.","suiteInstalled":"Client workspace created. Installed and verified all {{count}} starter workflows.","suitePartial":"Client workspace created. Verified {{verified}} of {{requested}} starter workflows — {{failed}} still need attention.","suiteFailed":"Client workspace created, but the starter workflows didn’t install. You can retry below.","retrySuiteInstall":"Retry install","retryingSuiteInstall":"Retrying…","clientAssessments":"Client assessments","addClientTitle":"Add a client","addClient":"Add client","clientName":"Client name","clientNameRequired":"Enter a client name.","delegationLevel":"Delegation level","creating":"Creating…","handOffTitle":"Hand off to the client owner (optional)","ownerEmail":"Client owner email","inviting":"Inviting…","sendOwnerInvite":"Send owner invite","invitationCreated":"Invitation created for {{email}}. Share this acceptance link:"},"settings":{"defaultTeam":"Default team","defaultTeamTitle":"Default Team","chooseDefaultTeam":"Choose which team opens by default when you go to Home.","saveDefaultTeam":"Save default team","menuItemLabel":"Menu item label","selectRowToRename":"Select a row in the menu structure to rename it.","changesLabel":"Changes the label shown in the sidebar. The item keeps its position.","glExport":"GL export","glExportDescription":"Map source accounts to QuickBooks and set file options. Once configured, exports run headlessly.","menuRenameHint":"Changes the label shown in the sidebar. The item keeps its position, route, and permissions.","menuRenameKeeps":"Changes the label shown in the sidebar. The item keeps its position, its children and its visibility settings.","taskNotifications":{"title":"Task notifications","description":"Choose what you are told about workflow tasks.","assigned":"Tell me when a task is assigned to me","saved":"Notification preference saved."}},"onboarding":{"choosePath":"Choose your workspace path","chooseDescription":"Choose how you want to get started. You can switch paths from sign-up if you change your mind.","selectPath":"Select the onboarding path that matches how you plan to use LerniFlow.","whatWillHappen":"What will happen","cannotComplete":"Unable to complete onboarding","needGuidance":"Need guidance while you set up? Open the docs, review known beta limitations, or contact support.","startFirstFull":"Start the first process you want to run. Build it yourself, or describe it and let the AI assistant draft it for you.","chooseHowFull":"Choose how you want to get started. You can switch paths from sign-up if you change your mind.","needGuidanceFull":"Need guidance while you set up? Open the docs, review known beta limitations, or contact support.","needGuidanceSetup":"Need guidance while you set up? Open the docs, review known beta limitations, contact support, or read our legal policies.","chooseHowSwitch":"Choose how you want to get started. You can switch paths from sign-up if needed.","errors":{"betaAccessFailed":"Your workspace was created, but we could not finish setting it up. Please contact support.","consultantProfileFailed":"Your workspace was created, but we could not finish setting up your consultant profile.","consultantRoleFailed":"Your workspace was created, but we could not give you the consultant manager role in it.","consultantTenantFailed":"Your workspace was created, but we could not finish setting it up as a consulting practice.","createWorkspaceFailed":"We could not create your workspace. Please try again.","experienceProfileFailed":"Your workspace was created, but we could not apply the experience you chose.","loadAccountFailed":"We could not load your account details. Please try again.","updateProfileFailed":"We could not update your profile. Please try again."},"personas":{"organization":{"title":"Organization","description":"Create the first team workspace for your organization."},"individual":{"title":"Individual","description":"Create a personal workspace you will use by default."},"consultant":{"title":"Consultant","description":"Create your consulting practice, then add or connect clients."}},"signingInWith":"Signing in with","displayNamePlaceholder":{"consultant":"How clients should know you","individual":"Your preferred display name","organization":"Primary admin display name"},"workspaceLabel":{"consultant":"Your consulting practice name","individual":"Workspace name","organization":"Organization workspace name"},"workspacePlaceholder":{"consultant":"Example: Aurora Process Advisory","individual":"Example: Javier Workspace","organization":"Example: Acme Finance Ops"},"businessRoles":{"owner":"Owner","operations":"Operations","sales":"Sales","administrator":"Administrator"},"settingUpWorkspace":"Setting up your workspace...","submitLabel":{"consultant":"Create consultant workspace","individual":"Create my workspace","organization":"Create organization workspace"},"personaTitle":{"consultant":"Set up your consultant workspace","individual":"Create your workspace","organization":"Create your organization workspace"},"personaDescription":{"consultant":"Create your consulting practice. You can add or connect clients straight afterwards.","individual":"Finish onboarding and create the team workspace you will use by default.","organization":"Finish onboarding and create the first team workspace for your organization."}},"docs":{"tableOfContents":"Documentation table of contents","topics":"Documentation topics"},"charts":{"revenue":"Revenue","fees":"Fees","logins":"Logins","pageViews":"Page Views","visitors":"Visitors","newCustomers":"New Customers","bestCustomers":"Best Customers","mrr":"Monthly recurring revenue","totalFees":"Total fees collected","totalRevenue":"Total revenue including fees","signedUpThisMonth":"Customers who signed up this month","topByMrr":"Showing the top customers by MRR","last3Months":"Showing total visitors for the last 3 months","last6Months":"Showing total visitors for the last 6 months","janJune2024":"January - June 2024","businessDashboard":"Business dashboard with analytics and growth trends"},"draft":{"internalReview":"This document is a draft prepared for internal review. It has not been approved."},"illustrations":{"consultant":"Consultant presenting a checklist to a client group","consumer":"Person discovering products on mobile and laptop devices","pricing":"Pricing balance scale showing features and value with ROI rocket","team":"Team collaborating around a shared workspace","workflow":"Workflow automation with connected process steps","business":"Business dashboard with analytics and growth trends"},"legal":{"draftBanner":"This document is a draft prepared for internal review. It has not been approved or adopted.","draftBannerFull":"This document is a draft prepared for internal review. It has not been reviewed by legal counsel and must not be published or relied upon until approved by an attorney and updated with final entity details."},"teamLogin":{"defaultSignInFull":"Default sign in","teamRecovery":"Team recovery","continueBranded":"Continue with the same branded workspace while requesting a reset or setting a new password.","continueTo":"Continue to {{brand}}","loginTo":"Login to {{brand}}","subtitleDefault":"Use your {{brand}} workspace credentials or request a magic link.","recoveryHint":"Forgot your password? Use the recovery link in the password form and keep the same team context.","orbitalAccess":"Orbital access","resetTitle":"Reset your {{brand}} access","resetSubtitle":"Request a password reset email and continue through the same team-branded route.","resetHelper":"We will email a recovery link that keeps the same team branding and redirect path.","updateTitle":"Set a new password for {{brand}}","updateSubtitle":"Set a new password without leaving the same team-branded recovery experience.","updateHelper":"Choose a new password and you will continue back into the intended team workspace."},"operations":{"workforceFull":"Who has work, who is idle, and who is carrying overdue or blocked open steps — from current assignments only.","workforceResponsive":"Workforce awareness — table at large viewports; cards on smaller screens","loadingWorkbench":"Loading operations workbench"},"errors":{"genericAction":"Something went wrong. Please try again.","notAuthenticated":"You are not signed in.","accountNotFound":"That account was not found.","noAccountAccess":"You do not have access to this account.","accountIdMissing":"An account id is required (the x-account-id header or an accountId query parameter).","accountMismatch":"That account id does not match the authorized account.","accessCheckFailed":"Account access could not be verified.","unexpected":"Something went wrong. Please try again.","forbidden":"You are not allowed to do that.","layout":{"widgetsNotArray":"The widget list must be an array.","tooManyWidgets":"A layout cannot contain more than {{max}} widgets.","widgetKeyMissing":"Every widget needs a non-empty key.","widgetVisibleMissing":"Every widget needs a visible true/false value.","duplicateWidgetKey":"The widget key \"{{key}}\" appears more than once.","unknownWidgetKey":"There is no widget called \"{{key}}\"."},"unauthorized":"You are not authorized.","notFound":"That was not found.","internal":"Something went wrong on our side. Please try again.","invalidRequest":"That request was not valid.","accountParameterMissing":"An account parameter is required.","teamNotFound":"That team was not found.","invalidTeamSlug":"That team identifier is not valid.","generationFailed":"That could not be generated. Please try again.","artifactNotFound":"That artifact was not found.","workflowNotFound":"That workflow was not found.","notAllowedManageWorkflows":"You are not allowed to manage workflows in this workspace.","processNotFound":"That process was not found.","instanceNotFound":"That run was not found.","bpAdmin":{"capabilityTitle":"You do not have permission to access BP Admin","capabilityDescription":"Contact your team administrator if you need access to manage processes, forms, or agents for this account.","crossTenantTitle":"You do not have access to this workspace","crossTenantDescription":"Ask an administrator of that workspace to invite you, or return to a workspace you can access.","artifactNotFound":"Resource not found or access denied."},"delegation":{"noGrantHolder":"No consultant organization holds delegation for this client.","grantNotActive":"Delegation grant is not active for this client workspace.","grantChanged":"Delegation changed or expired since this session started. Reselect the client workspace.","writesBlocked":"Delegated writes are blocked until the operating context is valid.","confirmRequired":"Write confirmation is required for delegated client changes.","confirmUnavailable":"Write confirmation is unavailable right now. Please try again.","confirmInvalid":"That write confirmation is invalid or has expired.","confirmRequestInvalid":"That write-confirmation request was not valid.","notNamed":"Your practice has not named you on this client engagement, so you cannot change this workspace.","grantRevoked":"The client revoked your practice's access to this workspace. Nothing was saved.","grantPaused":"The client paused your practice's access to this workspace. Nothing is saved until they resume it.","grantExpired":"Your practice's access to this workspace has expired. Nothing was saved; ask the client to renew it.","grantReadOnly":"Your practice's access to this workspace is read-only. Nothing was saved.","clientReadOnly":"This workspace is read-only for consultants until the client takes ownership. Nothing was saved.","environmentNotGranted":"The client has not granted your practice access to that environment. Nothing was saved.","confirmUnreachable":"Your confirmation did not reach the server. Confirm again; it will not be applied twice.","confirmRetrySafe":"The change may not have finished saving. Confirm again to retry safely; it will not be applied twice.","confirmReference":"Reference: {{reference}}"},"defaultTeam":{"lookupFailed":"That team could not be looked up. Please try again.","teamNotFound":"That team was not found.","updateFailed":"Could not update your default team."},"portfolio":{"notConsultantWorkspace":"This is not a consultant workspace.","notAMember":"You are not a member of this consultant workspace.","consultantsOnlyInvite":"Only consultants can invite client owners.","consultantsOnlyProvision":"Only consultants can provision client workspaces.","invalidEmail":"Enter a valid email address.","clientNameRequired":"A client name is required.","noActiveGrant":"You do not hold an active delegation grant on this client.","inviteFailed":"That invitation could not be sent. Please try again.","provisionFailed":"That client workspace could not be created. Please try again.","resendTooSoon":"Please wait a moment before resending.","noInstallRun":"There is no installation to retry."},"requestInvalid":"That request was not valid.","artifactReadFailed":"That document could not be read. Please try again.","collaboration":{"notEntitled":{"kb":"The Knowledge Base is not included in your current plan.","forum":"The Forum is not included in your current plan.","chat":"Chat is not included in your current plan."}},"taskNotifications":{"saveFailed":"Your notification preference could not be saved. Try again."}},"defaultTeam":{"saving":"Saving default team...","saved":"Default team updated."},"dashboardWidgets":{"slaTitle":"SLA Breaches","slaPoliciesError":"Unable to load SLA policies.","slaNoPolicies":"No SLA policies configured.","slaTrackingError":"Unable to load SLA tracking data.","slaAtRisk":"{{count}} at risk","slaNone":"No active SLA breaches or warnings.","slaCaption":"Tasks with SLA warnings or breaches","slaPolicy":"Policy {{id}}","dueLabel":"Due","createdLabel":"Created","startedLabel":"Started","parkedLabel":"parked","requestedLabel":"requested","generatedLabel":"Generated","trendUp":"Up vs last month","trendDown":"Down vs last month","trendNone":"No prior month data","financialTitle":"Financial Overview","financialError":"Unable to load financial overview.","financialCaption":"Monthly AI spend summary","aiSpendThisMonth":"AI Spend This Month","workflowRuns":"Workflow Runs","estCostPerRun":"Est. Cost per Run","viewDetails":"View details →","openTasksTitle":"Open Tasks by Role","openTasksError":"Unable to load open tasks.","noRoleCanCapture":"No role can capture","openCount":"{{count}} open","openTasksNone":"No pending tasks are waiting for any role.","openTasksCaption":"Pending workflow tasks grouped by the role permitted to capture them","agentRecsTitle":"Agent Recommendations","agentRecsError":"Unable to load agent recommendations.","agentRecsNone":"No agent outputs are waiting for review.","agentRecsCaption":"Agent execution outputs pending human review","untitledWorkflow":"Untitled workflow","workflowFallback":"Workflow","pendingReview":"pending review","pendingApprovalsTitle":"Pending Approvals","pendingApprovalsError":"Unable to load pending promotions.","pendingApprovalsNone":"No promotions are waiting for approval.","pendingApprovalsCaption":"Workflow promotions awaiting owner approval","workflowsInProgressTitle":"Workflows In Progress","workflowsInProgressError":"Unable to load workflow instances.","workflowsInProgressNone":"No workflows are currently in progress.","workflowsInProgressCaption":"Active workflow instances","activeCount":"{{count}} active","myTasksTitle":"My Tasks","myTasksNone":"No tasks assigned to you right now.","myTasksCaption":"Recent tasks assigned to you","totalCount":"{{count}} total","widgetUnavailable":"Widget unavailable","widgetNotRegistered":"The dashboard widget \"{{widgetKey}}\" is not registered.","recentDocumentsTitle":"Recent Documents","recentDocumentsError":"Unable to load generated documents.","recentDocumentsCaption":"Recently generated workflow artifacts","catalog":{"taskInbox":{"name":"My Tasks","description":"Recent tasks assigned to you"},"workflowsInProgress":{"name":"Workflows In Progress","description":"Active workflow instances for this team"},"pendingApprovals":{"name":"Pending Approvals","description":"Workflow publish requests awaiting review"},"openTasksByRole":{"name":"Open Tasks by Role","description":"Pending workflow tasks grouped by assigned role"},"recentDocuments":{"name":"Recent Documents","description":"Recently generated workflow artifacts"},"agentRecommendations":{"name":"Agent Recommendations","description":"Agent outputs awaiting human review"},"slaBreachAlert":{"name":"SLA Breaches","description":"SLA warnings and breaches for active tasks"},"financialOverview":{"name":"Financial Overview","description":"Monthly AI spend and estimated workflow run costs"},"mrrKpi":{"name":"MRR","description":"Monthly recurring revenue demo KPI"},"revenueKpi":{"name":"Revenue","description":"Total revenue demo KPI"},"visitorsChart":{"name":"Visitors","description":"Visitor traffic demo chart"},"customersTable":{"name":"Top Customers","description":"Top customers by MRR demo table"},"operationalReport":{"name":"Operational report","description":"Renders a tenant-authored operational report definition"},"starterEntityRecords":{"name":"Records by data entity","description":"Authorized totals and new records by data entity"},"starterWorkflows":{"name":"Workflow activity","description":"Started, completed, active, and completion rate"},"starterTasks":{"name":"Task activity","description":"Pending, overdue, and recently completed tasks"},"starterCycleTime":{"name":"Workflow cycle time","description":"Average completion time for workflow runs"},"starterMoney":{"name":"Money by stage","description":"Money fields summed by a declared status or lifecycle stage"},"starterActivity":{"name":"Recent activity","description":"Recent authorized record and workflow activity"}},"demo":{"mrrTitle":"MRR","mrrDescription":"Monthly recurring revenue","revenueTitle":"Revenue","revenueDescription":"Total revenue including fees","visitorsTitle":"Visitors","visitorsDescription":"Showing total visitors for the last 6 months","customersTitle":"Best Customers","customersDescription":"Showing the top customers by MRR"}},"dashboardLayout":{"dragWidget":"Drag {{name}}","moveWidgetUp":"Move {{name}} up","moveWidgetDown":"Move {{name}} down","hideWidget":"Hide {{name}}","editHint":"Drag to reorder or use the move buttons. Widget content is shown when you finish customizing.","saveFailed":"Failed to save dashboard layout.","resetFailed":"Failed to reset dashboard layout.","teamDashboard":"Team dashboard","editModeDescription":"Drag widgets to reorder, hide widgets, or add widgets from the panel below.","viewModeDescription":"Overview of tasks, workflows, and team activity.","resetToTeamDefault":"Reset to team default","resetToSystemDefault":"Reset to system default","doneCustomizing":"Done customizing","customize":"Customize","addWidget":"Add widget","allWidgetsAdded":"All registered widgets are already on your dashboard.","add":"Add","emptyState":"No widgets visible. Use Customize to add some, or jump to My Work or Run workflows.","myWork":"My Work","runWorkflows":"Run workflows","customizeDashboard":"Customize dashboard"},"dashboardAdmin":{"catalogTitle":"Dashboard catalog","catalogDescription":"Create role-scoped dashboards for your team. The Home dashboard keeps existing behavior.","noDashboards":"No dashboards yet","defaultBadge":"Default","createDashboard":"Create dashboard","nameLabel":"Name","descriptionLabel":"Description","noDescription":"No description","open":"Open","clone":"Clone","setDefault":"Set default","archive":"Archive","assignRoles":"Assign to company roles","assignedTo":"Assigned to {{name}}","visibilityAllMembers":"Visibility set to all members","allowAllMembers":"Allow all members"},"dataWorkspace":{"recordsInList":"Records in this list.","recordsForEntity":"Records for {{entityKey}}","import":"Import"}},"processes":{"details":"Details","diagramFitAll":"Fit all","diagramFitWidth":"Fit width","diagramFocusStart":"Focus start","diagramReset":"Reset","diagramZoomIn":"Zoom in","diagramZoomOut":"Zoom out","downloadArtifact":"Download","editProcess":"Edit process","executiveReportGenerate":"Generate Executive Workflow Report","executiveReportGenerateSuccess":"Executive Workflow Report generated.","executiveReportGenerating":"Generating report…","executiveReportHint":"Manual PPTX export from structured team-2-demo workflow data. No agent execution or LLM content.","executiveReportTitle":"Executive Workflow Report","instanceProgressEmpty":"No workflow instances are available for progress view on this process.","noRunsBody":"Runs appear here once someone starts this process.","noRunsTitle":"No runs yet","openTaskInbox":"Open task inbox","pageDescription":"View published process definitions for your team.","pageTitle":"Processes","processList":"Processes","processReportReadOnlyHint":"Read-only process summary for delegated consultant review. Generation remains with the client owner.","processReportSteps":"steps","processReportTitle":"Process Report","processReportUseRecommendationsPanel":"Use Findings & Recommendations below to generate, view, or download the HTML report.","publishedVersions":"Versions","runWorkflow":"Run workflow","runs":"Runs","runsSignedOut":"Sign in to view process runs.","runsUnavailable":"Process runs could not be loaded. Try again in a moment.","selectProcess":"Select a process","tenantProcessHomeDescription":"This process is active and ready to run. Start a new instance to capture work and track progress.","versionsEmpty":"No published versions yet.","versionsUnavailable":"Version history is unavailable right now.","workflowArtifactSuperseded":"superseded","generateApprovedRequisitionDocx":"Generate Approved Requisition Form (DOCX)","generateRequestOutcomePdf":"Generate Request Outcome Summary (PDF)","generatePricingSummaryXlsx":"Generate Pricing Summary (XLSX)","generateFleetLeaseInvoicePdf":"Generate Monthly Vehicle Lease Invoice (PDF)","myWorkEmptyRunWorkflows":"Run a workflow"},"knowledge-base":{"errors":{"forbidden":"You do not have permission for this action.","articleNotFound":"That article was not found.","conflict":"This article changed while you were editing. Reload it and try again.","invalidState":"That action is not available for this article right now.","validationFailed":"Check the article details and try again.","searchFailed":"That search could not be completed. Please try again.","ratingSaveFailed":"That rating could not be saved. Please try again.","ratingClearFailed":"That rating could not be removed. Please try again.","noteSubmitFailed":"That note could not be submitted. Please try again.","noteModerateFailed":"That note could not be moderated. Please try again.","noteDeleteFailed":"That note could not be deleted. Please try again.","upload":{"markdownOnly":"Only .md files can be uploaded.","fileEmpty":"That file is empty.","fileTooLarge":"That file is larger than the 512 KB limit.","mimeNotAllowed":"That file must be text/markdown or text/plain.","quarantined":"That upload was blocked by the malware scanner.","failed":"That upload could not be completed. Please try again."},"spaceNotAvailable":"That space isn't available in this Knowledge Base. Choose one of its spaces.","alreadyInSpace":"This article is already in that space.","slugTakenInSpace":"That space already has an article with the same address. Rename one of them, then try again.","secondPersonRequired":"This space requires someone other than the author to publish. Ask a colleague who can publish to review and publish this version."},"referencePolicy":{"title":"Reference and Assistant use","aiUseLabel":"The Assistant may use this article","aiUseAllowedHint":"Excerpts of the published version can be used to answer questions, with a citation.","aiUseExcludedHint":"This article is never sent to the Assistant’s AI model — not its text, not its title.","excludedBadge":"Not used by the Assistant","sourceUrlLabel":"Official source (link)","sourceUrlInvalid":"Enter a link that starts with http:// or https://","effectiveOnLabel":"In force since","lastReformedOnLabel":"Last amended","effectiveOnValue":"In force since {{date}}","lastReformedOnValue":"Last amended {{date}}","officialSource":"Official source","save":"Save","saving":"Saving…","errors":{"forbidden":"Only Knowledge Base managers and reviewers can change this.","invalid":"Check the link and the dates, then try again."}},"spacePicker":{"label":"Space","hint":"Choose where this article will live.","required":"Choose a space before saving the article."},"move":{"current":"In space: {{space}}","targetLabel":"Move to space","placeholder":"Move to…","button":"Move article","moving":"Moving…"},"analytics":{"scopeGlobal":"Scope: Global KB","scopeTenant":"Scope: Workspace KB","viewsNotRecorded":"Article views are not recorded yet, so there is no most-viewed ranking.","translationPending":{"title":"Translation pending","description":"Published articles with a translation still in draft or in review.","descriptionLocales":"Published articles with a translation into {{locales}} still in draft or in review.","empty":"No translations are pending.","countByStatus":"{{status}}: {{count}}"},"staleCoverage":{"title":"Stale coverage by locale","description":"Share of non-source locales that are missing or marked stale.","empty":"No articles in scope to measure coverage."},"columns":{"article":"Article","from":"Written in","to":"Translation into","status":"Status","locale":"Locale","total":"Total","stale":"Stale"},"status":{"draft":"Draft","in_review":"In review"}},"workbench":{"denied":"Publishing requires the KB Admin permission.","empty":"No articles awaiting review.","sourceUpdate":"Source update available","publish":"Publish","unpublish":"Unpublish","redact":"Redact"},"secondPerson":{"badge":"Needs another publisher","yourDraft":"You wrote this version, and its space requires a second person to publish it.","singleOperator":{"title":"Publish your own version?","body":"This space requires a second person to publish \"{{title}}\", and you are its author. Your workspace has one member and its owner enabled single-operator exceptions, so you may publish it yourself. It will be recorded as self-approved, not as an independent review.","reasonLabel":"Why are you publishing it without a second person?","acknowledgement":"I understand this is not an independent review and will be recorded as a self-approval.","cancel":"Cancel","confirm":"Publish as self-approved","reasonRequired":"Give a reason to publish your own version.","acknowledgementRequired":"Confirm that you understand this is not an independent review.","notAuthor":"You are not the author of this version, so no exception is needed.","notRequired":"This space does not require a second person any more. Publish it normally.","unavailable":"The single-operator exception is not available in this workspace. Ask a colleague to publish it."},"policy":{"title":"Who may publish","description":"When a second person is required, the author of a version cannot publish it: someone else with the publish permission reviews and publishes. Changes are recorded with the reason.","workspaceDefault":"Workspace default","off":"The author may publish","required":"A second person must publish","inherit":"Use the workspace default","effectiveRequired":"Second person required","effectiveOff":"Author may publish","spaceRule":"Publishing rule for {{space}}","reasonLabel":"Why are you changing it?","save":"Save rule","cancel":"Cancel","saved":"Publishing rule saved.","failed":"The publishing rule could not be saved. Try again.","managersOnly":"Only someone who manages the knowledge base can change this.","reasonRequired":"Give a reason for the change.","spaceNotFound":"That space does not belong to this workspace."}}},"training":{"catalogue":{"title":"Training catalogue","locked":"Locked","available":"Available","open":"Open","hiddenTitle":"Restricted item","empty":"No published training journeys yet.","lockedReason":"You do not have access to every source this journey references."},"errors":{"addonNotEntitled":"Training & Documentation is not active for this workspace.","noAccess":"You cannot access this journey.","noReferences":"This journey does not reference any source yet.","catalogueLoadFailed":"The training catalogue could not be loaded. Try again in a moment."}},"training-guided-tour":{"guidedTour":{"next":"Next","close":"Close guide","stoppedAtActionBar":"Guide stopped at the action bar (no submit)."}},"operational-surfaces":{"reportBuilder.addMeasure":"Add measure","reportBuilder.createDescription":"Build a report visually — no JSON editing required.","reportBuilder.createReport":"Create report","reportBuilder.createTitle":"New report","reportBuilder.drillAction":"View rows","reportBuilder.drillColumn":"Drill","reportBuilder.drillRowCount":"Drill returned {{count}} rows under your current access.","reportBuilder.editDescription":"Change grouping, measures, and presentation, then run or save.","reportBuilder.editTitle":"Edit report","reportBuilder.entityLink":"Reports","reportBuilder.fieldsAvailable":"fields available for grouping and measures.","reportBuilder.filtersHeading":"Filters","reportBuilder.filtersHint":"Add filters using the field chips in the builder.","reportBuilder.filtersEmpty":"No filters yet. Add one to limit the rows this report includes.","reportBuilder.filterField":"Field","reportBuilder.filterOperator":"Operator","reportBuilder.periodDays":"Days","reportBuilder.filterValue":"Value","reportBuilder.filterValueTo":"Upper bound","reportBuilder.removeFilter":"Remove filter","reportBuilder.addFilter":"Add filter","reportBuilder.sortField":"Sort by","reportBuilder.sortRemove":"Remove sort","reportBuilder.sortAdd":"Add sort","reportBuilder.groupBucket":"Group {{field}} by","reportBuilder.aging.current":"Current","reportBuilder.aging.days_1_30":"1–30 days","reportBuilder.aging.days_31_60":"31–60 days","reportBuilder.aging.days_61_90":"61–90 days","reportBuilder.aging.over_90":"Over 90 days","reportBuilder.calendarHeading":"Calendar","reportBuilder.calendarHint":"Relative dates use the tenant timezone. Week start follows the tenant setting, or the locale when the tenant has not chosen one.","reportBuilder.asOfLabel":"As of","reportBuilder.timezoneLabel":"Timezone","reportBuilder.weekStartLabel":"Week starts","reportBuilder.calendarSave":"Save calendar","reportBuilder.calendarSaved":"Calendar saved.","reportBuilder.evaluatedRange":"{{field}} is {{localDate}} in {{timezone}} ({{startUtc}} to {{endUtc}}).","reportBuilder.operator.eq":"is","reportBuilder.operator.ne":"is not","reportBuilder.operator.contains":"contains","reportBuilder.operator.not_contains":"does not contain","reportBuilder.operator.begins":"begins with","reportBuilder.operator.ends":"ends with","reportBuilder.operator.gt":"greater than","reportBuilder.operator.gte":"at least","reportBuilder.operator.lt":"less than","reportBuilder.operator.lte":"at most","reportBuilder.operator.between":"between","reportBuilder.operator.in":"is one of","reportBuilder.operator.is_true":"is yes","reportBuilder.operator.is_false":"is no","reportBuilder.operator.empty":"is empty","reportBuilder.operator.not_empty":"is not empty","reportBuilder.operator.today":"is today","reportBuilder.operator.last_n_days":"in the last days","reportBuilder.operator.next_n_days":"in the next days","reportBuilder.operator.current_week":"this week","reportBuilder.operator.current_month":"this month","reportBuilder.operator.current_year":"this year","reportBuilder.bucket.exact":"Exact value","reportBuilder.bucket.day":"Day","reportBuilder.bucket.week":"Week","reportBuilder.bucket.month":"Month","reportBuilder.bucket.quarter":"Quarter","reportBuilder.bucket.year":"Year","reportBuilder.bucket.aging":"Aging","reportBuilder.weekStart.locale":"Use locale","reportBuilder.weekStart.sunday":"Sunday","reportBuilder.weekStart.monday":"Monday","reportBuilder.weekStart.tuesday":"Tuesday","reportBuilder.weekStart.wednesday":"Wednesday","reportBuilder.weekStart.thursday":"Thursday","reportBuilder.weekStart.friday":"Friday","reportBuilder.weekStart.saturday":"Saturday","reportBuilder.groupByHeading":"Group by","reportBuilder.listDescription":"Author operational reports for this entity.","reportBuilder.listEmpty":"No reports yet. Create one to summarize this entity visually.","reportBuilder.listTitle":"Reports","reportBuilder.measureAliasLabel":"Alias","reportBuilder.measureFieldLabel":"Field","reportBuilder.measureFnLabel":"Function","reportBuilder.measureMixedCurrencies":"(mixed currencies)","reportBuilder.measuresHeading":"Measures","reportBuilder.nameLabel":"Report name","reportBuilder.presentationChart":"Chart","reportBuilder.presentationHeading":"Presentation","reportBuilder.presentationMetric":"Metric","reportBuilder.presentationTable":"Table","reportBuilder.previewEmpty":"No rows match this report under your current access.","reportBuilder.previewIdle":"Run the report to preview results here.","reportBuilder.previewLoading":"Loading report results…","reportBuilder.runReport":"Run report","reportBuilder.saveReport":"Save report","reportBuilder.saved":"Report saved.","reportBuilder.scopeLabel":"Sharing","reportBuilder.scopePrivate":"Private","reportBuilder.scopeShared":"Shared with team","reportBuilder.sortHeading":"Sort","reportBuilder.sortHint":"{{count}} readable fields available for sort.","reportBuilder.widgetLoading":"Loading report widget…","reportBuilder.widgetMissing":"This report definition is unavailable.","savedView.delete":"Delete view","savedView.empty":"No saved views yet. Set filters and columns, then save a view to return to this list quickly.","savedView.entityNotVisible":"You cannot access the underlying data for this view.","savedView.nameLabel":"View name","savedView.revisionMismatch":"This view changed elsewhere. Reload it and try again.","savedView.save":"Save view","savedView.scopePrivate":"Private","savedView.scopeShared":"Shared with team","savedView.title":"Saved views","savedView.unreadableField":"This view uses a field you cannot read.","relatedRecords.panelTitle":"Related records","relatedRecords.panelDescription":"Declared relationships from this record — forward links and records that reference it.","relatedRecords.loading":"Loading related records…","relatedRecords.forwardHeading":"Forward","relatedRecords.inverseHeading":"Inverse","relatedRecords.forwardVia":"Via {{field}}","relatedRecords.inverseVia":"Referenced by {{field}}","relatedRecords.empty":"No related records are visible under your current access.","relatedRecords.openRecord":"Open {{label}}","relatedRecords.requestFailed":"Related records could not be loaded. Try again later.","reportViewer.description":"A saved report, run with your own access.","reportViewer.readOnly":"You are viewing this report. Results reflect the records and fields you are allowed to see.","reportViewer.editLink":"Edit this report","reportViewer.createNotPermitted":"You do not have permission to create reports in this workspace. Ask an administrator for report authoring access.","reportViewer.createRefusedTitle":"Report authoring not permitted","reportDrill.title":"Records behind this figure","reportDrill.loading":"Loading the records behind this figure…","reportDrill.predicates":"Grouped by:","reportDrill.asOf":"Taken from a snapshot held until {{capturedAt}}.","reportDrill.record":"Record","reportDrill.noneVisible":"No rows here are visible to you under your current access.","reportDrill.withheldFields":"{{count}} field(s) are not shown because you may not read them."},"operational":{"refusals":{"account":"You do not have access to this workspace's operational data.","field":"You cannot use one or more fields in this request.","identity":"Your identity could not be authorized for this operational request.","index_not_ready":"This field is not ready for filtering or sorting yet. Ask an administrator to provision it, then try again.","query":"That operational query could not be run. Check the filters and sorting, then try again.","read":"The operational data could not be read. Try again later.","relationship_unavailable":"A related record is not available to you.","relationship_undeclared":"This navigation is not a declared relationship.","report":"That report is not available to you."},"views":{"refusals":{"identity":"This saved view request could not be authorized.","entity_not_visible":"You cannot access the underlying data for this view.","name_required":"A view name is required.","not_found":"That saved view was not found.","revision_mismatch":"This view changed elsewhere. Reload it and try again.","unknown_field":"This view references a field that does not exist.","unreadable_field":"This view uses a field you cannot read."}},"reports":{"refusals":{"identity":"This report request could not be authorized.","entity_not_visible":"You cannot access the underlying data for this report.","name_required":"A report name is required.","not_found":"That report definition was not found.","revision_mismatch":"This report changed elsewhere. Reload it and try again.","unknown_field":"This report references a field that does not exist.","unreadable_field":"This report uses a field you cannot read.","unreadable_group_field":"You cannot group by a field you are not allowed to read.","unreadable_measure_field":"You cannot aggregate a field you are not allowed to read.","unreadable_filter_field":"You cannot filter on a field you are not allowed to read.","unreadable_order_field":"You cannot order by a field you are not allowed to read.","operator":"That comparison is not available for this field.","between_bounds":"Enter a lower bound that is less than or equal to the upper bound.","aging_buckets":"Aging buckets must cover every age exactly once.","timezone":"Choose a timezone the workspace recognizes.","mixed_units":"This aggregate mixes incompatible units and cannot be shown.","pinned_view_not_found":"The pinned view for this report is missing or inaccessible."}},"snapshots":{"refusals":{"cross_tenant":"This drill snapshot belongs to another workspace and cannot be opened here.","expired":"This drill snapshot expired. Refresh the report and try again.","forged_actor":"This drill snapshot belongs to another user and cannot be opened with your session.","not_found":"That drill snapshot was not found or is no longer available.","revoked":"Your access changed and this drill snapshot is no longer available."}}},"test-assurance":{"banner":{"kicker":"Phase 0 prototype","title":"Design Assurance beside the workflow","description":"Click the readiness stamps and examples. The canvas is a mock of purchase request — not the frozen designer. Contract fakes only."},"canvas":{"title":"Purchase request","subtitle":"Mock canvas — not the frozen workflow designer","laneRequester":"Requester","laneApprover":"Approver","laneConnector":"Vendor connector","start":"Start","submit":"Submit request","gateway":"Amount limit","autoApprove":"Auto-approve ≤ 10,000.00","managerReview":"Manager review > 10,000.00","notifyVendor":"Notify vendor","end":"End"},"panel":{"title":"Design Assurance","casesHeading":"Examples on this draft","owner":"Next owner: {{owner}}","kicker":"Beside this workflow","description":"Read-only. These examples apply to this workflow on this draft.","specsHeading":"Specifications for this workflow","impactHeading":"Impacted by the unsaved change","lastResultHeading":"Last result","readOnly":"Read only","modeImpacted":"Impacted subset","modeFull":"Full suite","reasonSpecChanged":"The specification itself changed","reasonAppliesToChanged":"Something this specification names changed","reasonAppliesToDependent":"Something this specification depends on changed","fallbackFirstCandidate":"There is no previous candidate, so every specification runs.","fallbackGraphIncomplete":"The dependency graph is incomplete, so every specification runs.","fallbackDuplicateArtifact":"The same artifact is listed twice, so every specification runs.","fallbackBindingsChanged":"A binding changed, so every specification runs.","fallbackSuitesChanged":"A locked test suite changed, so every specification runs.","fallbackUnresolvedAppliesTo":"A specification names an artifact that is not on this candidate, so every specification runs.","impactedSubset":"Only the specifications reached by this change. If the graph cannot be trusted, the full suite runs and the reason is written here.","didNotExecute":"Did not execute — not the same as failed","failed":"Failed","ledgerCaption":"Each specification, why the unsaved change reaches it, and its last result","notImpacted":"Not reached by this change","noResult":"Not in this workflow's last run","kickerForm":"Beside this form","descriptionForm":"Read-only. These examples apply to this form and the records it writes.","kickerEntity":"Beside this entity","descriptionEntity":"Read-only. These examples apply to this entity and the rules on its fields.","runImpacted":"Run impacted specs","suggestExamples":"Suggest examples"},"owner":{"buyer":"buyer","designer":"designer","admin":"workspace admin"},"readiness":{"label":"Test Center readiness","blocked":"Blocked","readyWithWarnings":"Ready with warnings","ready":"Ready","neverPercent":"Readiness is never a score out of one hundred.","blockedHint":"A required example is expected-red, red, invalid, blocked before run, not-run, cancelled, stale (re-run required), or infrastructure error.","warningsHint":"Confirmed findings at or below the policy, or advisory AI findings, are not yet dispositioned.","readyHint":"Required examples passed on this draft snapshot.","nothingFailed":"Nothing failed — examples did not execute.","candidateHeading":"Candidate readiness","chip":"Open readiness","reasonsHeading":"Why this verdict","noReasons":"Nothing is blocking or warning on this candidate.","changeClass":{"low":"Low change","medium":"Medium change","high":"High change","critical":"Critical change"},"reason":{"evidence_missing":{"title":"Signed evidence for this candidate is missing.","next":"Run the required examples on this candidate."},"evidence_invalid":{"title":"The last evidence cannot be trusted.","next":"Repair the harness and re-run."},"evidence_stale":{"title":"The last evidence is older than the policy allows.","next":"Re-run the examples on this candidate."},"suite_not_run":{"title":"A required suite has not executed.","next":"Run the missing suite."},"case_failed":{"title":"An example failed on this candidate.","next":"Fix the design, then re-run."},"case_expected_red":{"title":"An example is still expected red — that is never a gate pass.","next":"Build the missing behaviour, then mark expected green when it exists."},"case_did_not_execute":{"title":"An example did not execute — that is not a failure.","next":"Run the example."},"case_invalid":{"title":"An example's evidence is invalid.","next":"Repair the run, then look at the examples again."},"nondeterminism":{"title":"The run was not deterministic, so a rerun could differ.","next":"Remove wall-clock, random, network, environment, or concurrent work, then re-run."},"teardown_unverified":{"title":"The test workspace was not verified clean after the run.","next":"Re-run and confirm teardown."},"stop_ship_failed":{"title":"A stop-ship example failed. This cannot be waived.","next":"Fix the design and re-run."},"finding_blocking":{"title":"A confirmed finding is above the policy threshold.","next":"Fix it, or request a waiver if the policy allows."},"finding_waived":{"title":"A finding is waived — waived is not passed.","next":"Track the compensating control until the waiver expires."},"finding_within_threshold":{"title":"A confirmed finding sits within the policy threshold.","next":"Disposition it when you are ready."},"ai_finding_needs_disposition":{"title":"An AI finding still needs an independent disposition.","next":"Have an independent reviewer disposition it."},"ai_finding_advisory":{"title":"An advisory AI observation is not yet dispositioned.","next":"Review it when you have time — it does not block."},"waiver_invalid":{"title":"A waiver is expired, over-long, or not independently approved.","next":"Request a valid waiver or fix the finding."},"disposition_unauthorized":{"title":"A disposition was set by someone who is not allowed to.","next":"An independent reviewer must set the disposition."},"policy_invalid":{"title":"The promotion policy is incomplete.","next":"Fix the policy so every change class is declared."},"approvals_missing":{"title":"Required independent approvals are missing.","next":"Ask an independent reviewer to approve."},"suite_unresolved":{"title":"A required suite has no example in this workspace.","next":"Create the examples, or change the readiness policy."},"approval_self_approved":{"title":"The approval requirement is met by one confirmed self-approval, not by independent approval.","next":"Self-approved is not independent approval. Invite an independent reviewer when you can."},"self_approval_refused":{"title":"A self-approval on this candidate does not count here.","next":"Confirm the self-approval again, or ask an independent reviewer. Critical and production candidates always need one."}},"approval":{"heading":"Approvals","progress":"{{received}} of {{required}} independent approvals","independentHint":"The author of this candidate cannot approve it.","authorCannotApprove":"You wrote this candidate, so you cannot approve it. Ask an independent reviewer.","roleRequired":"Your role cannot approve this change class.","alreadyApproved":"You have already approved this candidate.","approve":"Approve","reject":"Reject","rejected":"Rejection applies to this session only. It is not saved.","approveSelf":"Approve as the only member…","selfHint":"You wrote this candidate and you are the only member. Approving it needs a single-operator exception: a reason, an acknowledgement and a second confirmation. It is recorded as self-approved.","selfCritical":"This is a critical change. It needs an independent approver, even with single-operator exceptions on.","selfProduction":"This policy promotes to production. It needs an independent approver, even with single-operator exceptions on."},"waiver":{"heading":"Waivers","none":"No waivers on this candidate.","valid":"Valid waiver — this finding is recorded as not passed.","request":"Request a waiver","reason":"Why this finding can be waived","expiryDays":"Days until expiry","compensatingControl":"Compensating control","submit":"Submit waiver request","expired":"This waiver has expired.","overLong":"This waiver lasts longer than the policy allows.","selfApproved":"The author cannot approve their own waiver.","stopShip":"Stop-ship findings cannot be waived.","severityNotAllowed":"This severity cannot be waived under the policy.","missingRole":"The approver does not have the required role.","noControl":"The policy requires a compensating control.","reasonRequired":"Write why this finding can be waived.","pending":"Waiting for independent approval","doesNotCount":"This waiver does not count."},"previewFake":"Preview: approvals and waivers on this page are not saved.","live":{"emptyTitle":"No release candidate yet","emptyNext":"Freeze a candidate from the current draft. That records who changed it, and those people cannot approve it.","freeze":"Freeze a candidate","freezeWorkflow":"Freeze {{name}}","noWorkflow":"Create a workflow first, then freeze it as a candidate.","authorsHeading":"Who changed this candidate","authorsWhy":"Everyone who created or edited this draft counts as an author, so they cannot approve it or approve a waiver for it.","title":"Release candidate {{short}}","changeClassWhy":"Classified by comparing this frozen candidate with the last release.","changeClassUnclassified":"This change could not be classified against the last release, so it is treated as the most dangerous class.","changeClassBindings":"External connections or credentials changed, so this is a critical change.","changeClassAmbiguous":"The candidate lists the same artifact twice, so the change is treated as critical.","changeClassFirst":"This is the first frozen candidate for this workflow, so it is rated at the most dangerous artifact in it.","changeClassCriticalArtifact":"An authorization, role, or other critical artifact changed since the last release.","approveWaiver":"Approve this waiver","unavailable":"Test Assurance is off for this workspace."},"ungated":{"title":"Promotions are not gated by readiness.","why":"This workspace has no readiness policy, so this page does not pass or block a promotion."},"blockingLabel":"Blocking","warningLabel":"Warning","blockingHeading":"Blocking ({{count}})","demo":{"purchaseApprovalTitle":"Purchase approval candidate","purchaseApprovalWhy":"The purchase-approval workflow changed on this draft."},"actor":{"author":"Author","reviewer":"Independent reviewer","someone":"Reviewer"},"finding":{"paymentRelease":"Payment-release dual control","connectorRetry":"Vendor connector retry","generic":"A confirmed finding"},"candidateRun":{"heading":"Examples on this candidate","why":"Readiness counts only examples run against this frozen candidate, not against the current draft. Anyone who can run examples can start them; approval still needs someone who did not change the candidate.","start":"Run the required examples on this candidate","noPolicy":"There is no readiness policy yet, so no examples are required.","noSuites":"The readiness policy requires no examples.","state":{"notStarted":"Not run on this candidate","queued":"Queued","running":"Running","finished":"Finished","failedToRun":"Could not run","notRunnable":"Cannot run"},"reason":{"noSpec":"No examples with this name exist in this workspace. Create them, or change the readiness policy.","notForCandidate":"These examples are written for a different workflow than this candidate.","contentUnavailable":"This candidate was frozen before its content was kept, and the draft has changed since. Freeze a new candidate.","contentMismatch":"The stored content of this candidate does not match its fingerprint, so it is not run.","noCandidate":"This candidate does not exist in this workspace.","couldNotStart":"The run could not be started. Try again."},"statusUnavailable":"We couldn't check the status of these runs. They may still be running.","statusRetry":"Check again","selection":{"impactedEmpty":"No examples reach what changed in this candidate, so the policy's impacted examples add none.","contentUnknown":"This candidate's content could not be read, so every example is required.","selectsNothing":"The policy requires {{selector}}, but no example in this workspace matches it."}},"readyWithWarningsSelfApproved":"Ready with warnings — Self-approved","selfApproval":{"badge":"Self-approved","label":"Self-approved — single-operator exception","requirement":"The policy asks for {{count}} independent approval(s). One confirmed self-approval met it here; independence was not met.","by":"By {{name}}","reason":"Reason:","counted":"Counted toward the approval requirement, as a self-approval only. The candidate is at best “Ready with warnings — Self-approved”.","notCounted":{"critical":"Not counted: a critical candidate needs an independent approver.","production":"Not counted: a candidate that promotes to production needs an independent approver.","stale":"Not counted any more: the setting or the readiness policy changed since it was confirmed. Confirm it again.","role":"Not counted: this change class needs an approver role you do not hold."}}},"readinessSet":{"all":"All purchase-request examples","draft":"Draft still expected-red","failing":"Failing run on this draft","notRun":"Did not execute — not the same as failed","stale":"Stale evidence — re-run required","warnings":"Findings awaiting disposition","ready":"Candidate ready to freeze","invalid":"Harness invalid — simulator missing"},"state":{"expectedRed":"Expected red","red":"Red","green":"Green","stale":"Stale","invalid":"Invalid","infraError":"Infrastructure error","blocked":"Blocked before run","notRun":"Not run","cancelled":"Cancelled","count":"{{label}} {{count}}"},"nextRepair":{"label":"Next repair","none":"No repair needed on this example.","verb":{"expectedRed":"Build the design","red":"Fix the design","stale":"Rerun examples","invalid":"Repair the harness","infraError":"Restore the worker","blocked":"Grant the capability","notRun":"Run the example","cancelled":"Rerun after cancel"}},"case":{"belowLimit":{"title":"Below limit {{amount}} auto-approves with no manager task"},"atLimit":{"title":"At limit {{amount}} still auto-approves — the limit is inclusive"},"aboveLimit":{"title":"Above limit {{amount}} requires an independent purchasing manager","repair":"Add a manager-review step on the above-limit path and keep the requester off that task."},"separationOfDuties":{"title":"Requester cannot complete the manager approval on their own request","repair":"Refuse the manager task when the actor is the original requester; assign an independent approver."},"rejectionRework":{"title":"Rejected request returns to the requester, is corrected, and resubmitted"},"duplicateSubmission":{"title":"Duplicate submit of the same request must not send a second vendor effect","repair":"Make submit idempotent on the request identity so a second submit creates no extra vendor notification."},"timerEscalation":{"title":"Unclaimed manager review escalates after the service-level timer","repair":"Attach a due timer on manager review and an escalation to a covering approver."},"connectorTimeout":{"title":"Vendor connector timeout retries once without duplicating the effect","repair":"Run this example against the connector simulator with an injected timeout; do not call a live vendor."},"artifactVersionChange":{"title":"Form and entity version change leaves in-flight requests on the pinned version","repair":"Rerun the examples on the new draft snapshot; keep running instances pinned to the version they started on."},"workerLoss":{"title":"Worker loss during vendor notify is infrastructure, not a product fail","repair":"Retry the run after the worker is restored; do not treat this as a configuration defect."},"capabilityBlocked":{"title":"Simulator capability missing blocks the example before it can fail","repair":"Grant the connector-simulator capability for this workspace, then rerun."},"suiteNotRun":{"title":"Timer suite was scheduled but has not executed yet","repair":"Run the timer-escalation example; not-run is not a failure."},"runCancelled":{"title":"Manager review run was cancelled before a verdict","repair":"Rerun the example after the cancel; cancelled is not a product fail."}},"warning":{"undisposedFinding":"A confirmed finding at or below the policy is not yet dispositioned","aiAdvisory":"An advisory AI observation awaits disposition"},"a11y":{"prototype":"Design Assurance prototype","canvas":"Purchase request mock canvas","caseList":"Assurance examples","readiness":"Test Center readiness","readinessGroup":"Readiness scenarios"},"driver":{"expectedRefusalMissing":"The step was supposed to be refused and was not.","specMissing":"The purchase-approval-limit specification is missing from the contract examples.","stepFailed":"The driver could not finish this step.","unknownActor":"The case named an actor that is not in the workspace.","entityNotInCandidate":"An entity this specification writes to is not part of this workflow's design, so the case could not run.","connectorBindingMissing":"This specification simulates the connector “{{binding}}”, but this workflow's design does not call through it, so the case could not run. Configure the {{binding}} integration on the workflow, then run again.","runTimedOut":"The run's time budget ran out before this case started.","moneyCurrencyMismatch":"The case sends money in a currency this entity's amount field does not hold.","moneyNotRepresentable":"The case sends an amount this entity's money field cannot store without changing it.","actorRoleMissing":"A person in this example has a role this workspace does not have yet, so they could not act. Add the role, or choose one the workspace has.","permissionResource":{"notTestWorkspace":"This permission check was not evaluated: the workspace it ran in is not a test workspace.","unsupported":"This permission check names something the platform does not check permissions on. Choose a data entity, the workflow, or one of its steps.","doesNotFitAction":"This permission check names something this action never applies to, so it could not be checked. Choose what the action is performed on.","workflowNotInCandidate":"This permission check names a workflow other than the one being tested, so it could not be checked.","stepNotInWorkflow":"This permission check names a step that is not in this workflow's design, so it could not be checked.","entityNotInCandidate":"This permission check names a data entity that is not part of this workflow's design, so it could not be checked.","versionNotInCandidate":"This permission check expects a different version than the design being tested, so it could not be checked.","recordNotFound":"The record this permission check names was not created in this example, so it could not be checked.","recordOfOtherEntity":"The record this permission check names belongs to a different data entity than the one the check is about.","recordMissing":"This permission check is about an existing record, but the example created none of this kind. Create one first, or name it.","recordAmbiguous":"The example created more than one record of this kind. Name the record this permission check is about.","runMissing":"This permission check acts on a run, but the example started none. Start the workflow first, or name the run.","runAmbiguous":"The example started more than one run. Name the run this permission check acts on.","stepNotReached":"The run never reached the step this permission check names, so there was no task to check."}},"workspace":{"accountMissing":"The test workspace account was not created.","entityKeyCollision":"Two entities in this workflow's design share a key, so the test workspace could not be built.","provisionFailed":"The test workspace could not be provisioned.","teardownResidue":"Test workspace teardown left residue. The workspace is quarantined.","userCreateFailed":"A synthetic test actor could not be created.","notTestWorkspace":"Only a flagged test workspace can be destroyed this way.","flagProtected":"Test workspace flags can only be set by the provisioner.","clockRequired":"The harness clock is required to claim test-workspace timers.","leaseMissing":"The test workspace lease could not be renewed.","leaseTtlInvalid":"The test workspace lease duration must be a positive number of seconds.","quarantined":"This test workspace is quarantined and cannot be reused."},"center":{"kicker":"Test Center","title":"Test Center","description":"Write examples, run them against the current draft, and read the signed result.","nav":"Test Center views","openSpecification":"Open the specification","openRun":"Open the last run","openCandidate":"Open candidate readiness","openPolicy":"Open the readiness policy"},"spec":{"heading":"Specification","intent":"Intent","actors":"Actors","given":"Given","when":"When","then":"Then","parameters":"Decision table","decisionTable":"Parameter combinations for this example","combination":"Row","invariants":"Invariants","cases":"Examples","statusExpectedRed":"Expected red — draft, never a gate pass","statusDraft":"Draft","statusInReview":"In review","statusApproved":"Approved","statusRetired":"Retired","advanced":"Stable keys","stepLine":"{{actor}}: {{action}}","schemaMissing":"The specification schema could not be loaded.","invalid":"This specification is not a valid lerniflow.test/v1 document.","staleVersion":"Someone saved a newer version. Reload and save again.","versionImmutable":"A saved specification version cannot be changed or deleted.","digestMismatch":"This saved specification no longer matches its recorded fingerprint, so it can't be frozen. Open it and save it again.","statusExpectedGreen":"Expected green — the behaviour now exists"},"run":{"heading":"Last run","summary":"Every state counted separately","neverPercent":"Counts are not a score out of one hundred.","cases":"Case results","attempts":"Attempts","attemptN":"Attempt {{n}}","outcomeCompleted":"Completed","didNotExecute":"Did not execute: {{count, number}} — not the same as failed","failedCount":"Failed: {{count, number}}","didNotExecuteVsFailed":"Did not execute {{didNotExecute}} · Failed {{failed}}","unnamedCase":"Example","attemptWindow":"{{start}} – {{end}}","invalidEvidence":"This evidence is invalid and is not shown as a result.","invalidReason":"Reason: {{reason}}","reRunSigned":"Re-run to produce fresh signed evidence.","start":"Run","queued":"Queued","running":"Running","finished":"Finished","failedToRun":"Could not run","currentDraft":"Runs the current draft","failReason":{"INFRA_ERROR":"The run could not start because the test workspace was not ready.","INVALID":"The run could not start because the specification is not valid."},"case":{"failedAssertion":"Observation {{n}} did not hold","taskCountMismatch":"{{role}} tasks: expected {{expected}}, found {{found}}","observationMismatch":"{{observation}}: expected {{expected}}, found {{found}}","namespaced":"{{code}}","rawCode":"{{code}}","taskCountMismatchAny":"Tasks: expected {{expected}}, found {{found}}","failedAssertionWithReason":"{{assertion}} — {{reason}}","runStopped":"Why the workflow stopped: {{reason}}","runStopUnexplained":"The workflow could not continue at one of its steps."},"workflowMissing":"This specification's workflow was not found in this workspace, so the run could not start.","workflowAmbiguous":"Two versions of this workflow are equally current, so the run could not tell which one to test. Deprecate or archive one of them, then run again.","candidateAccessUnavailable":"This candidate was frozen before it kept who may act on its steps, and that can no longer be proven. Freeze a new candidate.","earlierBuild":"This result is from an earlier platform version — run again","again":"Run again","againReasonLabel":"Why run it again?","againReasonPlaceholder":"For example: check the result is the same every time","againSubmit":"Run again","againCancel":"Cancel","againReasonRequired":"Say why you want to run it again.","evidenceImmutable":"A finished run keeps its evidence. Run again to get a new result.","missing":"This run was not found in this workspace.","requeueCauseInvalid":"The run could not be queued again because the reason for re-running it is not recognised.","supersedeRefused":"Only a finished run can be replaced by a new run.","superseded":"This run has been replaced by a newer run and can no longer change."},"actor":{"system":"System"},"evidence":{"schemaMissing":"The evidence-manifest schema could not be loaded.","signingKeyMissing":"Evidence was not signed because no signing key is configured.","revokedKey":"This evidence key has been revoked and cannot be used.","missing":"No signed evidence is available for this run."},"editor":{"kicker":"Test Center","heading":"Write a specification","description":"Describe the business rule with examples anyone can read.","card":"Intent, actors, Given / When / Then, and a decision table.","open":"Open the editor","titleLabel":"Title","intentLabel":"Intent — the rule in business language","statusLabel":"Status","markExpectedRed":"Mark as expected red","backToDraft":"Back to draft","roleLabel":"Role","noParameters":"This example has no decision-table columns yet.","whenGuard":"Only when","save":"Save","saved":"Saved.","notSaved":"Not saved — fix the fields marked below.","conflict":"Someone else saved first. Reload and try again.","givenGloss":"Starting point","whenGloss":"What someone does","thenGloss":"What must be true","addExample":"Add example","removeExample":"Remove","exampleColumn":"Example","exampleN":"Example {{n}}","actorLabel":"Who","actionLabel":"What they do","observationLabel":"What to check","notInList":"Not in the list — choose one","thingsToFix":"{{count}} things to fix","currencyLabel":"Currency","observeRecord":"Record","observeField":"Field","observeEquals":"Equals","observeRun":"The workflow run","observeRole":"Role","observeCount":"Count","observeEvent":"Event","refNamed":"{{name}}","op":{"eq":"is","ne":"is not","lt":"is less than","lte":"is at most","gt":"is more than","gte":"is at least"},"runStatus":{"running":"Running","waiting":"Waiting","completed":"Completed","cancelled":"Cancelled","failed":"Failed"},"error":{"referenceExpression":"References name a saved result or a parameter — they cannot contain expressions.","actionNotInList":"That step is not in the closed list of actions.","amountNeedsCurrency":"Amounts use a decimal and a currency, not a bare number.","oneObservation":"Each check observes one thing.","intentRequired":"Write the business rule in plain language.","titleRequired":"Give this specification a title.","exampleRequired":"Add at least one example.","statusNotInList":"Choose a status from the list. Expected red is a deliberate draft state.","fieldRequired":"This field needs a value."},"saveFailed":"Could not save. Try again.","markExpectedGreen":"Mark as expected green","valueSource":"Value comes from","valueTyped":"Typed here","amountLabel":"Amount","noFieldsKnown":"Choose what is created to see its fields.","requiredField":"required","removeField":"Remove this field","requiredNotSet":"Required and not set yet:","addField":"Add a field","noMoreFields":"Every field is already set.","durationAmount":"Amount","durationUnit":"Unit","durationUnits":{"M":"minutes","H":"hours","D":"days"},"stepLabel":"Step","outcomeLabel":"Outcome","entityLabel":"What is created","formLabel":"Form","workflowLabel":"Workflow","forRecord":"For the record","idempotencyKey":"Idempotency key","reasonLabel":"Reason","reassignTo":"Reassign to","advanceBy":"Move time forward by","bindingLabel":"Integration","responseLabel":"It answers with","responseTimes":"How many times","runtimeEvent":{"workflow_started":"The workflow started","record_created":"A record was created","task_escalated":"A task was escalated","workflow_cancelled":"The workflow was cancelled"},"eventRuntime":"Recorded by every test run","eventTenant":"Declared in this workspace","expectRefused":"This should be refused","refusalLabel":"Refused because","refusalKey":"Refusal key","refusal":{"separationInitiator":"The person who started it cannot act on this step","separationPriorActor":"The person who did the previous step cannot act on this one","schemaMismatch":"A required field is missing or a value has the wrong shape","constraintViolated":"A record rule is broken","lifecycleRefused":"The record’s current state does not allow this","segregation":"The same person cannot decide their own record"},"taskStatusLabel":"Task status","taskStatusAny":"Any status","countAny":"any","effectType":"Effect","effectTypes":{"connector_call":"A call to an integration","notification_sent":"A notification sent"},"permissionAction":"Action","permissionResource":"Applies to","permissionAllowed":"Allowed","templateLabel":"Document template","specifiesWorkflow":"Workflow this specification is about","removeActor":"Remove this person","addActor":"Add a person","addCase":"Add an example","removeCase":"Remove this example","caseTitleLabel":"Example title","removeStep":"Remove this step","addStep":"Add a step","removeCheck":"Remove this check","addCheck":"Add a check","comparisonLabel":"Comparison","comparedWith":"Compared with","personName":"Name","errorAt":{"step":"{{example}} · step {{n}}","check":"{{example}} · check {{n}}"},"rowN":"Row {{n}}","addRow":"Add a row","removeRow":"Remove this row","addColumn":"Add a column","unsaved":"Unsaved changes","removedNotice":"{{what}} removed.","undo":"Undo","removed":{"case":"Example","step":"Step","check":"Check","actor":"Person","row":"Row"},"expectRefusedAdd":"Expect a refusal","singleOperatorScope":"Exception scope","singleOperatorState":"Expected state","singleOperatorStateOn":"On","singleOperatorStateOff":"Off"},"determinism":{"wall_clock":"The run read the real clock instead of the test's business time, so its result can't be trusted. Re-run after the step uses the injected clock.","randomness":"The run used uncontrolled randomness, so a rerun could differ. Re-run after the step uses the seeded ids.","network":"The run tried to reach a live network service or model instead of the simulator, so its result can't be trusted.","environment":"The run depended on a setting outside the test workspace, so its result can't be trusted.","concurrency":"The run's result depended on timing between parallel work, so a rerun could differ.","nextRepair":"Remove wall-clock, random, network, environment, or concurrent work from the example, then re-run."},"lifecycle":{"heading":"Example lifecycle","draft":"Draft","expectedRed":"Expected red","building":"Building","expectedGreen":"Expected green","passing":"Passing","meaningfulRed":"This example is expected to fail until the behaviour exists.","notMeaningful":"This is not a meaningful red.","couldNotRun":"The test could not run — that is not the same as the behaviour missing.","invalidNotRed":"This evidence is invalid, so it is not a meaningful red. Repair the run, then look at the examples again.","infraNotRed":"The harness failed, so this is not a meaningful red.","promoteHint":"The latest signed evidence passed. Mark expected green when you mean that the behaviour now exists."},"policy":{"schemaMissing":"The promotion-policy schema could not be loaded.","versionImmutable":"A saved readiness record cannot be changed or deleted.","heading":"Readiness policy","card":"What this workspace requires before a promotion is accepted.","kicker":"Test Center","title":"Readiness policy","description":"Promotions to this workspace are checked only after a policy is stored here.","ungated":{"title":"Promotions to this workspace are not checked for test readiness.","why":"No readiness policy is stored here yet. That is not a pass.","next":"Create the first version. Gating starts when it is saved."},"current":{"title":"This workspace checks promotions against a stored policy.","why":"A new version starts from the current one. Earlier versions stay on the history."},"gatedSince":"Gated since version {{version}}","history":"Version history","historyRow":"Version {{version}}","readOnly":"You can read this policy. Saving a new version needs ownership or workflow manage permission.","newVersion":"New version","firstVersion":"First version","key":"Policy key","routeFrom":"From","routeTo":"To","class":{"low":"Low","medium":"Medium","high":"High","critical":"Critical"},"suites":"Required suites","suitesHint":"impacted, all, tag:name, or key:suite-key","freshnessHours":"Evidence must be newer than (hours)","agentic":"AI findings","agenticMode":{"none":"Do not run","advisory":"Run and show","disposition_required":"Every finding needs a human decision"},"approvals":"Approvals required","independentOfAuthor":"Approver cannot be the author","approverRole":"Approver role","stopShip":"Stop-ship suites","stopShipHint":"These suites always block, even with a waiver.","stopShipOther":"Another suite key","stopShipAdd":"Add","waivers":"Waiver rules","waiverMaxDays":"Longest waiver (days)","waiverRole":"Who may approve a waiver","waiverSeverities":"Severities that may be waived","severity":{"critical":"Critical","high":"High","medium":"Medium","low":"Low"},"changes":"What this version changes","noChanges":"Nothing changed from the current version.","change":{"added":"Added {{path}}","removed":"Removed {{path}}","changed":"Changed {{path}}","stopShipAdded":"Stop-ship: added {{value}}","stopShipRemoved":"Stop-ship: removed {{value}}","classApprovals":"{{classLabel}}: approvals required {{from}} → {{to}}","classFreshness":"{{classLabel}}: evidence newer than {{from}} → {{to}} hours","classAgentic":"{{classLabel}}: AI findings {{from}} → {{to}}","classSuiteAdded":"{{classLabel}}: added suite {{value}}","classSuiteRemoved":"{{classLabel}}: removed suite {{value}}","classIndependent":"{{classLabel}}: approver cannot be the author {{from}} → {{to}}","classApproverRole":"{{classLabel}}: approver role {{from}} → {{to}}","routeFrom":"From environment {{from}} → {{to}}","routeTo":"To environment {{from}} → {{to}}","keyChanged":"Policy key {{from}} → {{to}}","waiverDays":"Longest waiver {{from}} → {{to}} days","waiverRole":"Waiver approver {{from}} → {{to}}","waiverSeverityAdded":"Waivable severity added: {{value}}","waiverSeverityRemoved":"Waivable severity removed: {{value}}","fallbackAdded":"Added {{label}} {{value}}","fallbackRemoved":"Removed {{label}} {{value}}","fallbackChanged":"{{label}}: {{from}} → {{to}}","classIndependentOn":"{{classLabel}}: the author can no longer approve their own change","classIndependentOff":"{{classLabel}}: the author may now approve their own change","classApproverRoleAdded":"{{classLabel}}: approvals now require the role {{value}}","classApproverRoleRemoved":"{{classLabel}}: approvals no longer require the role {{value}}","selfApprovalOn":"Workspaces adopting this policy will accept self-approved candidates","selfApprovalOff":"Workspaces adopting this policy will refuse self-approved candidates"},"save":"Save this version","saving":"Saving…","saved":"Version {{version}} is stored.","concurrent":"Someone else saved a version first. Reload, then try again.","forbidden":"You do not have permission to save a readiness policy.","export":"Export this version","import":"Adopt a version from another workspace","importHint":"The file is the document and its digest. This workspace recomputes the digest and refuses a mismatch.","importFile":"Choose a policy file","digestMismatch":"The file does not match its digest. Refuse it.","existingDifferentDigest":"This workspace already has that key and version with a different digest.","route":"Route {{from}} → {{to}}","digestPrefix":"Digest","error":{"fieldRequired":"This field needs a value.","keyInvalid":"Use a lowercase key with letters, numbers, dots, underscores, or hyphens.","versionMinimum":"A policy version starts at 1.","routeRequired":"Choose a from and to environment.","classRequired":"Every change class needs requirements.","suitesRequired":"Each class needs at least one suite.","suiteSelectorInvalid":"Use impacted, all, tag:name, or key:suite-key.","freshnessRange":"Freshness is between 1 and 720 hours.","agenticNotInList":"Choose how AI findings are treated.","approvalCountRange":"Approvals are between 0 and 5.","stopShipRequired":"Pick at least one stop-ship suite.","stopShipKeyInvalid":"Stop-ship names use the same key pattern as specifications.","waiverDaysRange":"A waiver lasts between 1 and 90 days.","waiverRoleInvalid":"Name the role that may approve a waiver.","severityNotInList":"Choose severities from the list. Stop-ship cannot be waived."},"stopShipMissing":"No example in this workspace, so this suite can never run and will block.","stopShipRemove":"Remove","selfApproval":{"label":"Workspaces that adopt this policy accept self-approved candidates","hint":"Off by default. When on, a workspace receiving a candidate whose approval was a single-operator self-approval may accept it. It is still shown as self-approved.","production":"Not available: a policy that promotes to production never accepts self-approved candidates."}},"candidate":{"alreadyRegistered":"This release candidate is already registered.","authorCannotApprove":"The person who created this candidate cannot approve it.","authorRequired":"A release candidate must record who created it.","missing":"This release candidate has not been registered.","notMember":"Only a member of this account can register a candidate.","provenanceMissing":"This candidate includes an artifact type that does not record who created or edited it."},"waiver":{"approverRequired":"A waiver approval must record who approved it.","authorApproved":"The person who created this candidate cannot approve a waiver for it.","noCompensatingControl":"This policy requires a compensating control on every waiver.","noPolicy":"A promotion policy must exist before a waiver can be recorded.","requestMissing":"This waiver request does not exist.","requesterRequired":"A waiver request must record who asked for it.","selfApproved":"The person who requested this waiver cannot approve it.","severityNotAllowed":"This policy does not allow a waiver at that severity.","stopShip":"A stop-ship finding cannot be waived.","tooLong":"This waiver lasts longer than the policy allows."},"render":{"givenFallback":"No starting point is written for this example.","stepRefusedLine":"{{actor}}: {{action}} — expected to be refused","parameterValue":"{{name}}: {{value}}","aTask":"a task","aWorkflow":"the workflow","value":{"true":"Yes","false":"No"},"step":{"createRecord":"Create a new {{entity}} record","createAnyRecord":"Create a record","updateRecord":"Update {{record}}","submitForm":"Submit {{form}}","submitAnyForm":"Submit a form","startWorkflow":"Start {{workflow}}","startWorkflowFor":"Start {{workflow}} for {{record}}","claimTask":"Claim the {{step}} task","completeTask":"Complete {{step}}","completeTaskOutcome":"Complete {{step}} ({{outcome}})","rejectTask":"Refuse the {{step}} task","reassignTask":"Reassign the {{step}} task to {{actor}}","retryStep":"Retry {{step}}","advanceClockBy":"Advance the clock by {{duration}}","advanceClockTo":"Advance the clock to {{time}}","advanceClock":"Advance the clock","deliverEvent":"Deliver the {{event}} event","setConnectorResponse":"Script connector {{binding}}: {{response}}","cancelRun":"Cancel {{run}}"},"connectorResponse":{"success":"success","refusal":"refusal","timeout":"timeout","malformed":"malformed response","delay":"delayed response","duplicate_callback":"duplicate callback","out_of_order_callback":"out-of-order callback"},"condition":{"eq":"{{value}} is {{than}}","ne":"{{value}} is not {{than}}","lt":"{{value}} is less than {{than}}","lte":"{{value}} is at most {{than}}","gt":"{{value}} is more than {{than}}","gte":"{{value}} is at least {{than}}"},"check":{"recordField":"{{field}} on {{record}} is {{value}}","runStatus":"Run status is {{status}}","taskCount":"Tasks: {{count}}","taskCountRole":"{{role}} tasks: {{count}}","taskCountStep":"{{step}} tasks: {{count}}","taskAssignedTo":"The {{step}} task is assigned to {{actor}}","eventEmitted":"Event {{event}} is emitted","eventEmittedCount":"Event {{event}} emitted: {{count}}","auditContains":"The audit records {{event}}","auditContainsBy":"The audit records {{event}} by {{actor}}","permissionAllowed":"{{actor}} is allowed to {{action}}","permissionRefused":"{{actor}} may not {{action}}","permissionAllowedOn":"{{actor}} is allowed to {{action}} on {{resource}}","permissionRefusedOn":"{{actor}} may not {{action}} on {{resource}}","effect":"{{effectType}}: {{count}}","effectVia":"{{effectType}} via {{binding}}: {{count}}","noEffect":"No {{effectType}} effect","documentRendered":"Document {{template}} is rendered","documentRenderedCount":"Document {{template}} rendered: {{count}}","when":"{{check}} when {{condition}}","taskCountRoleStatus":"{{role}} tasks ({{status}}): {{count}}","taskCountStepStatus":"{{step}} tasks ({{status}}): {{count}}","taskCountStatus":"Tasks ({{status}}): {{count}}","effectNone":"{{effectType}}: none","effectViaNone":"{{effectType}} via {{binding}}: none","singleOperatorScopeOn":"Single-operator exceptions for {{scope}} are on","singleOperatorScopeOff":"Single-operator exceptions for {{scope}} are off"},"taskStatus":{"open":"open","claimed":"claimed","completed":"completed","rejected":"refused"},"actionName":{"create_record":"Create a record","update_record":"Update a record","submit_form":"Submit a form","start_workflow":"Start a workflow","claim_task":"Claim a task","complete_task":"Complete a task","reject_task":"Refuse a task","reassign_task":"Reassign a task","advance_clock":"Advance the clock","deliver_event":"Deliver an event","set_connector_response":"Script a connector response","cancel_run":"Cancel the run","retry_step":"Retry a step"},"observationName":{"record_field":"A field on the record","run_status":"Run status","task_count":"Number of tasks","task_assigned_to":"The task is assigned to","event_emitted":"An event is emitted","audit_contains":"The audit records an event","permission":"Who may do what","effect":"Business effects","no_effect":"No business effect of this type","document_rendered":"A document was rendered","single_operator_scope":"Single-operator exception state"},"parameterLabel":"{{name}}:","caseWithParameters":"{{title}} ({{parameters}})"},"referenceNotice":{"title":"Example scenario, not one of yours","body":"This workspace has no specification yet, so the platform’s purchase-approval example is shown to illustrate how one reads. It does not describe your business.","action":"Write your first specification"},"referenceExample":{"purchase-approval-limit":{"title":"Purchase above limit requires independent approval","intent":"A purchase request above 10,000.00 USD needs a purchasing manager’s approval. The requester can never approve their own request. Nothing is paid before approval.","cases":{"above-limit":{"title":"Boundary amounts around the approval limit","given":"A buyer raises a purchase request"},"requester-cannot-approve-own":{"title":"The requester cannot approve their own request","given":"A buyer has raised a request above the limit"},"escalates-after-48h":{"title":"An unclaimed review escalates after 48 hours","given":"A manager review is waiting and unclaimed"},"payment-timeout-no-duplicate":{"title":"A payment timeout does not pay twice","given":"The payment connector will time out once"}}}},"picker":{"none":"None","search":"Search by name","choose":"Choose…","notInWorkspace":"Not in your workspace yet","emptyWorkspace":"Nothing configured in this workspace yet.","noMatch":"No match. Check the spelling, or switch to Advanced to name something new.","useNewKey":"Use “{{key}}”","emptySteps":"This workflow has no steps yet.","emptyOutcomes":"This step declares no outcomes.","emptyEntities":"No data entities yet.","emptyForms":"No forms yet.","emptyWorkflows":"No workflows yet.","emptyBindings":"No credentials or connectors yet.","emptyRoles":"No team roles yet.","fieldType":{"text":"Text","number":"Number","integer":"Whole number","money":"Money","boolean":"Yes / no","date":"Date","datetime":"Date and time","choice":"Choice","reference":"Link to a record","list":"List","object":"Group of fields"},"useCustomValue":"Use custom value “{{key}}”","noMatchCustom":"No match. Keep typing to use it as a custom value.","emptyTemplates":"No document templates yet.","permissionAction":{"record_create":"Create a record","record_update":"Change a record","record_transition":"Move a record to another status","record_correction":"Correct a record","record_decision":"Decide on a record","record_soft_delete":"Delete a record","record_restore":"Restore a deleted record","record_delete":"Permanently delete a record","record_import":"Import records","record_erase":"Erase personal data from a record","workflow_start":"Start the workflow","workflow_transition":"Move or pause a run","workflow_reassign":"Reassign a task","workflow_retry":"Retry or return a step","workflow_step_save":"Work on a step","record_protected_value_reveal":"Reveal a protected value","record_protected_value_export":"Export a protected value"},"permissionScope":{"record":"Records","workflow":"Workflow runs","step":"Workflow steps"},"permissionGoverned":"{{scope}} · your policy applies","permissionGovernedOnStep":"{{scope}} · your policy on {{step}}","permissionPolicy":"Your authorization policy","permissionPolicyOnStep":"Your authorization policy on {{step}}","permissionCustomHint":"No match. A custom action is words joined by dots, such as area.action.","templateMadeBy":"Made by {{step}}","templateForWorkflow":"For {{workflow}}","templateFormat":"{{format}} document","permissionResource":{"workflow":"The whole workflow","step":"Workflow step","entity":"Data entity","empty":"Nothing this action applies to yet."}},"references":{"heading":"Not in your workspace yet: {{n}}","fixAll":"Use the suggested names ({{n}})","explain":"These names do not match anything configured here. That is expected when the specification comes first; the examples stay red until the workspace has them. If one is a typo, use the suggestion.","kind":{"workflow":"Workflow {{value}}","entity":"Data entity {{value}}","field":"Field {{value}}","step":"Step {{value}}","outcome":"Outcome {{value}}","role":"Role {{value}}","form":"Form {{value}}","binding":"Integration {{value}}","event":"Event {{value}}","decision":"Decision {{value}}","permission":"Permission action {{value}}","template":"Document template {{value}}"},"kindIn":{"workflow":"Workflow {{value}} in {{parent}}","entity":"Data entity {{value}} in {{parent}}","field":"Field {{value}} in {{parent}}","step":"Step {{value}} in {{parent}}","outcome":"Outcome {{value}} of {{parent}}","role":"Role {{value}} in {{parent}}","form":"Form {{value}} in {{parent}}","binding":"Integration {{value}} in {{parent}}","event":"Event {{value}} in {{parent}}","decision":"Decision {{value}} in {{parent}}","permission":"Permission action {{value}} in {{parent}}","template":"Document template {{value}} in {{parent}}"},"useSuggestion":"Use {{label}}","noSuggestion":"Nothing similar here yet","saveAnyway":"You can save now; names not in your workspace yet stay flagged."},"suggest":{"specTitle":"{{workflow}}: examples from its rules","specIntent":"Examples derived from how {{workflow}} is configured: its decision thresholds, who may act on each step, its deadlines, its integrations and the rules on its records.","title":{"boundary":{"below":"{{input}} {{value}}, just below {{threshold}}: goes to {{step}}","at":"{{input}} {{value}}, at {{threshold}}: goes to {{step}}","above":"{{input}} {{value}}, just above {{threshold}}: goes to {{step}}"},"separationInitiator":"Whoever started it cannot act on {{step}}","separationPrior":"Whoever did {{previous}} cannot act on {{step}}","deadline":"{{step}} escalates after {{duration}}","integration":"{{step}} calls {{binding}} once, even after a timeout","required":"{{entity}} is refused without {{field}}","rule":"{{entity}} is refused when rule {{rule}} is broken"},"given":{"boundary":"{{entity}} with {{input}} {{value}}","reachStep":"The run is waiting at {{step}}","started":"{{workflow}} has started","integration":"{{binding}} is simulated and times out once","required":"{{field}} is left empty","rule":"A value breaks rule {{rule}}"},"origin":{"decision":"Decision {{decision}}: {{input}} threshold {{threshold}}","separationInitiator":"{{step}}: whoever started the run may not act","separationPrior":"{{step}}: whoever did {{previous}} may not act","notConfigured":"{{step}} has no separation of duties yet","deadline":"{{step}}: due after {{duration}}","serviceLevel":"{{step}}: service level of {{duration}}","integration":"{{step}} calls {{binding}}","bindingNotDeclared":"{{step}} calls {{binding}}, which is not declared in this workspace yet","required":"{{entity}}: {{field}} is required","rule":"{{entity}}: rule {{rule}}"},"skipped":{"noDecision":"{{step}} has no decision table to derive examples from.","noHumanRoute":"{{decision}}: every route leads to an automatic step, so a test has nothing to observe yet.","unsupportedEntry":"{{decision}}: the condition {{entry}} is not a comparison examples can be built from.","noRuleMatches":"{{decision}}: no rule matches {{input}} {{value}}.","unreachable":"{{step}} cannot be reached from the start with values the rules allow.","noPriorStep":"{{step}}: there is no earlier step for its rule to compare with.","noBinding":"{{step}} calls a web address with no credential or connector, so it cannot be simulated.","unsupportedRule":"{{entity}}: rule {{rule}} is not a single comparison examples can be built from.","noSharedRole":"{{previous}} and {{step}} are done by different roles, so no one person can try both.","noOutcomeOutput":"{{decision}} does not say which output routes the step, so the run stops there; name its routing output first."},"panel":{"title":"Suggested examples","draftNote":"A draft from how {{workflow}} is configured. Review each example; nothing is saved until you press Save.","accept":"Add","edit":"Add and edit","discard":"Discard","restore":"Restore","added":"Added","acceptAllGreen":"Add all expected green ({{n}})","skipped":"Rules no example could be built from ({{n}})","notConfigured":"For rules not configured yet","none":"No rule in this workflow can be turned into an example yet.","undoAdd":"Remove again","announceAdded":"Added: {{title}}","announceDiscarded":"Discarded: {{title}}","announceAddedAll":"Added {{n}} examples","discardedRow":"{{title}} — discarded","fromOrigin":"From: {{origin}}","showExample":"Show the example","marksRed":"Adding this marks the whole specification expected red.","progress":"{{reviewed}} of {{total}} reviewed · {{added}} added · {{discarded}} discarded","groupHeading":"{{kind}} · {{n}}","notConfiguredExplain":"These describe behaviour the workflow does not do yet. They fail until it is configured — that is the point."},"expectation":{"expected_green":"Expected green","expected_red":"Expected red"},"kind":{"decision_boundary":"Decision thresholds","separation_of_duties":"Who may act","deadline":"Deadlines","integration_idempotency":"Integrations","required_field":"Required fields","record_rule":"Record rules"},"entry":{"title":"Suggest examples","description":"Draft examples from a workflow's own rules: thresholds, who may act, deadlines, integrations and record rules. You review each one.","workflowLabel":"Workflow","go":"Suggest examples","none":"No workflows yet."}}},"theme-studio":{"pageTitle":"Theme studio","readOnly":"You can explore themes here. Only the workspace owner or members with settings permission can save a theme.","hub":{"title":"Theme studio","description":"Choose a ready-made colour theme, build one from your brand with a guided wizard, or ask the assistant. Every theme comes in light and dark.","open":"Open theme studio"},"tabs":{"presets":"Themes","wizard":"Guided wizard","customize":"Customize"},"modes":{"light":"Light","dark":"Dark"},"sources":{"preset":"Theme: {{name}}","wizard":"Built with the wizard: {{name}}","assistant":"Suggested by the assistant: {{name}}","custom":"Custom theme: {{name}}"},"gallery":{"title":"Theme presets","description":"Each palette becomes a light and a dark theme. Pick one to preview it on the right; nothing changes for your team until you save."},"vanilla":{"tokens":{"background":"Background","primary":"Primary","accent":"Accent","sidebar":"Sidebar"},"noOverrides":"No custom colours, fonts or shapes","entry":{"title":"Platform default branding","description":"Reset every colour, font and shape to the platform's own look. Your logos and brand name are kept.","alreadyDefault":"You're using the platform default branding.","button":"Use platform default branding"},"confirm":{"title":"Use the platform default branding?","description":"This removes your custom theme and branding styles and uses the platform default. You can pick another theme anytime.","descriptionLost":"This removes your custom theme and branding styles and uses the platform default.","logosKept":"Your logos and brand name are kept.","resetsLabel":"Resets:","resets":"the Theme Studio theme (light and dark), brand colours, fonts, text size, line height, corner radius, element shapes, borders and shadows, surface colours and sign-in page colours.","keepsLabel":"Keeps:","keeps":"logo sizes, sign-in page text and images, password-recovery text and app layout. A public site that sets its own look keeps it until you choose “Use team theme” there.","cancel":"Cancel","apply":"Use platform default","customLost":"Your custom colours can't be recovered after this."}},"presets":{"vanilla":{"name":"Vanilla (platform default)","description":"The platform's own look in light and dark, with no custom colours, fonts or shapes. It follows platform design updates automatically."},"neon-mint":{"name":"Neon Mint","description":"Deep navy with an electric mint accent. Confident and technical."},"ocean-aqua":{"name":"Ocean Aqua","description":"Calm ocean blue with fresh aqua highlights. Trustworthy and approachable."},"bold-blue":{"name":"Bold Blue","description":"Royal blue and periwinkle on crisp white. Strong, classic and clear."},"electric-indigo":{"name":"Electric Indigo","description":"Electric blue and lavender over deep indigo, with signature gradients. Modern and energetic."},"violet-tech":{"name":"Violet Tech","description":"Layered violets from glow to nightshade. Creative and forward-looking."},"bright-friendly":{"name":"Bright & Friendly","description":"Amber, orange, pink, purple and azure. Playful and optimistic, for brands that want to feel warm."}},"roles":{"primary":{"name":"Primary","hint":"Your core brand colour: main buttons, active navigation, focus."},"secondary":{"name":"Secondary","hint":"Supports the primary: secondary buttons and tinted surfaces."},"accent":{"name":"Accent","hint":"Used sparingly to draw the eye: highlights, chips, calls to action."},"neutralLight":{"name":"Light neutral","hint":"The light-mode page background. Keep it very light."},"neutralDark":{"name":"Dark neutral","hint":"Text in light mode and the dark-mode canvas. Keep it very dark."}},"editor":{"name":"Theme name","pinnedSurfaces":"This theme has hand-tuned surfaces (for example its dark-mode background). Clear them to derive every surface from the palette instead.","clearPinned":"Derive all surfaces"},"proportion":{"title":"60 · 30 · 10 balance","neutralLight":"neutral — backgrounds and space","secondary":"secondary — supporting surfaces","accent":"accent — calls to action and highlights"},"preview":{"title":"Live preview","modeLabel":"Preview mode","noThemeLabel":"No theme · Team branding colours","noTheme":"No Theme Studio theme is saved, so your workspace uses the colours set in Team branding. Pick a theme or Vanilla to preview it.","brand":"Your brand","nav":{"home":"Home","work":"My work","data":"Data","reports":"Reports"},"heading":"Quarterly review","subheading":"12 open items · updated today","primaryAction":"Approve","secondaryAction":"Share","cardTitle":"Client onboarding","badge":"On track","body":"Contract signed, kickoff scheduled. Two documents are waiting for review.","inputPlaceholder":"Search records…","mutedRow":"Last synced 5 minutes ago","accentChip":"New"},"contrast":{"allPass":"{{mode}} mode meets WCAG AA contrast","someFail_one":"{{count}} pair is below WCAG AA contrast","someFail_other":"{{count}} pairs are below WCAG AA contrast","pairs":{"foreground_background":"Body text","cardForeground_card":"Card text","primaryForeground_primary":"Primary button","secondaryForeground_secondary":"Secondary button","accentForeground_accent":"Accent chip","mutedForeground_muted":"Muted text on muted","mutedForeground_background":"Muted text","sidebarForeground_sidebar":"Sidebar text","sidebarAccentForeground_sidebarAccent":"Selected menu item","sidebarPrimaryForeground_sidebarPrimary":"Sidebar highlight","ring_background":"Focus ring"},"advisories":{"primaryAdjusted":"Your primary colour {{chosen}} cannot carry readable button text in {{mode}} mode, so buttons use {{used}} instead.","primaryTextLow":"Text in your primary colour {{color}} (links, highlights) reaches only {{ratio}}:1 on the {{mode}} background; WCAG AA needs 4.5:1. Choose a primary with more contrast against the background."}},"save":{"button":"Save theme","discard":"Discard changes","saved":"Theme saved. Your workspace and public site now use it.","restored":"Your workspace now uses the platform default branding.","scopeNote":"Applies to your workspace, sign-in page and public site (unless the site sets its own colours). Everyone keeps their own light or dark preference."},"colorMode":{"title":"Default colour mode","description":"Members start in this mode until they choose light or dark themselves.","options":{"platform":"Platform default","light":"Light","dark":"Dark","system":"Follow the device"},"save":"Save default mode","saved":"Default colour mode saved. Members who have not chosen a mode now use it."},"errors":{"saveDenied":"You do not have permission to change this workspace's theme.","invalidTheme":"This theme is incomplete or contains an invalid colour. Pick it again and retry.","loadFailed":"We could not load the workspace settings. Try again.","saveFailed":"The theme could not be saved. Try again.","saveNotApplied":"The theme was not saved: account-wide branding needs a workspace owner or the Manage settings permission."},"formulas":{"core-neutrals":{"name":"One colour + neutrals","body":"A single signature colour carried by quiet greys. The most focused and recognisable."},"analogous":{"name":"Analogous","body":"Neighbouring hues on the colour wheel. Harmonious and easy on the eye."},"complementary":{"name":"Complementary accent","body":"Your colour plus its opposite for calls to action. High contrast where it matters."},"full-spectrum":{"name":"Full spectrum","body":"Four or five bright hues in balance. Playful and expressive; needs discipline."}},"hues":{"red":{"name":"Red","meaning":"Energy, passion, action, urgency."},"orange":{"name":"Orange","meaning":"Enthusiasm, warmth, optimism, approachability."},"yellow":{"name":"Yellow","meaning":"Optimism, joy, warmth, attention."},"gold":{"name":"Gold","meaning":"Luxury, prestige, wisdom."},"green":{"name":"Green","meaning":"Growth, health, nature, balance, prosperity."},"teal":{"name":"Teal","meaning":"Clarity, calm, freshness, care."},"blue":{"name":"Blue","meaning":"Trust, stability, dependability, calm."},"purple":{"name":"Purple","meaning":"Creativity, imagination, sophistication."},"pink":{"name":"Pink","meaning":"Friendliness, romance, playful sophistication."},"brown":{"name":"Brown","meaning":"Grounded, reliable, natural, earthy."},"neutral":{"name":"Black & grey","meaning":"Formality, strength, modern minimalism."}},"traits":{"trustworthy":"Trustworthy","calm":"Calm","professional":"Professional","secure":"Secure","innovative":"Innovative","modern":"Modern","creative":"Creative","sophisticated":"Sophisticated","luxurious":"Luxurious","bold":"Bold","passionate":"Passionate","energetic":"Energetic","optimistic":"Optimistic","friendly":"Friendly","playful":"Playful","caring":"Caring","natural":"Natural","fresh":"Fresh","grounded":"Grounded","warm":"Warm"},"industries":{"finance":"Finance & insurance","technology":"Technology & software","health":"Health & wellness","education":"Education & training","food":"Food & restaurants","energy":"Energy & utilities","retail":"Retail & fashion","professional-services":"Consulting & professional services","creative":"Creative & agencies","nonprofit":"Non-profit","real-estate":"Real estate","hospitality":"Hospitality & travel","manufacturing":"Manufacturing & industry","other":"Something else"},"wizard":{"title":"Brand colour wizard","description":"Answer a few questions about your brand and get a palette with light and dark themes.","stepOf":"Step {{current}} of {{total}}","back":"Back","next":"Next","finish":"Use this theme","loaded":"Your wizard theme is loaded. Fine-tune it here, then save.","brandName":"Brand or business name","traitsLabel":"Pick {{min}}–{{max}} words that describe your brand","traitsCount_one":"{{count}} selected","traitsCount_other":"{{count}} selected","tone":{"formal":"Formal","playful":"Playful","traditional":"Traditional","innovative":"Innovative"},"industryLabel":"Which industry are you in?","stanceLabel":"Colours common in this industry:","stance":{"align":{"title":"Fit in","body":"Use colours customers already expect here. Signals belonging and reassurance."},"stand-out":{"title":"Stand out","body":"Avoid what competitors use so you are remembered. Signals a different approach."}},"competitorsLabel":"Competitor colours (optional)","competitorsHint":"Add up to three competitors' main colours. We will steer away from them, or warn you when you pick something close.","competitorN":"Competitor {{n}}","addCompetitor":"Add competitor colour","removeCompetitor":"Remove competitor colour","recommendedLabel":"Recommended core colours","noRecommendation":"Go back and pick some personality words to get recommendations, or choose any colour below.","bestMatch":"Best match","shadeLabel":"Choose a shade","customCore":"Or enter your own brand colour","fromImage":"Pick from an inspiration image","competitorClash":"This colour is in the same family as a competitor's. That can be fine if you want to fit in; if you want to stand out, try another recommendation.","examples":"Seen at: {{brands}}","reasons":{"traits":"Fits: {{traits}}","industryAlign":"common in your industry","industryContrast":"sets you apart in your industry","tone":"matches your tone","competitor":"close to a competitor"},"errors":{"traits":"Pick between {{min}} and {{max}} words.","core":"Choose a core colour to continue."},"steps":{"personality":{"title":"Brand personality","description":"Colour is how people feel your brand before they read a word.","guidance":"Think about what your best clients say about you. Warm colours (red, orange, yellow) tend to feel energetic and exciting; cool colours (blue, green) tend to feel trustworthy and stable."},"market":{"title":"Industry & competitors","description":"Decide whether to fit in with your market or stand out from it.","guidance":"Customers have expectations about which colours suit an industry. Matching them builds instant trust; breaking them makes you memorable. Look at what your closest competitors use before deciding."},"core":{"title":"Core colour","description":"Pick one signature colour. Everything else grows from it.","guidance":"Most leading brands own just one or two colours. Colour meanings vary between cultures and markets, so check the associations where your clients are."},"formula":{"title":"Palette formula","description":"Choose how the rest of the palette relates to your core colour.","guidance":"A practical palette has 1–2 primary colours, about two secondary or neutral colours, and 1–2 accents. Shoppers often prefer harmonious (analogous) palettes, while a contrasting accent makes calls to action stand out."},"roles":{"title":"Colour roles","description":"Adjust which colour does which job.","guidance":"Aim for roughly 60% neutral, 30% secondary and 10% accent. Keep the brightest colour for the few things you most want people to click."},"modes":{"title":"Light, dark & accessibility","description":"Your palette as a light theme and a dark theme, checked for readability.","guidance":"Shades are adjusted automatically so text meets WCAG AA contrast (4.5:1) in both modes. Check text on backgrounds, small and large sizes, and the whole layout before you commit."},"review":{"title":"Review","description":"This is your brand in both modes.","guidance":"Use this theme to load it into the editor, fine-tune any colour, then save. Record your colours and their roles in your brand guidelines so everyone uses them consistently."}}},"assistant":{"title":"Styling assistant","subtitle":"Ask for ideas; you stay in control of what is saved.","intro":"Tell me about your business, your clients and how you want to come across, and I will suggest a palette. You can preview any suggestion before using it.","placeholder":"e.g. A calm, trustworthy accounting firm that wants to feel modern","inputLabel":"Message to the styling assistant","send":"Send","thinking":"Thinking about colours…","error":"The assistant could not answer right now. Try again.","preview":"Preview","useInEditor":"Use in editor","previewing":"Previewing an assistant suggestion","backToDraft":"Back to my theme","starters":{"one":"Suggest a palette for a friendly education business","two":"Make my current theme feel more premium","three":"Our competitors all use blue. What should we use?"},"fallback":{"askForBrand":"Tell me a little about your brand: what you do, who your clients are, and three words for how you want to feel. You can also paste a brand colour like #1D5FD1.","proposal":"Here is a starting point built around {{family}} using the {{formula}} formula. Preview it, then refine it in the editor or tell me what to change."}}},"data-protection":{"section":{"title":"Data protection"},"classification":{"label":"Data classification","general":"General data","personal_data":"Personal data","secret":"Secret"},"protection":{"label":"Storage protection","standard":"Standard storage","encrypted":"Encrypted","encrypted_exact":"Encrypted with exact lookup","one_way":"One-way protected","comingNext":"Coming next","comingNextNote":"One-way protection is coming next.","secretNote":"Secrets are stored encrypted and are never revealed, exported or sent to AI.","standardNote":"Stored with standard database and network protection.","encryptedNote":"Encrypted with this workspace’s own key. Shown masked; people with permission can reveal it. Searchable only by “is set” or “is empty”.","exactNote":"Encrypted with this workspace’s own key, plus a keyed lookup index for exact matches and uniqueness.","exactWarning":"Exact lookup reveals when records contain the same value. Partial search and sorting remain unavailable.","caseInsensitive":"Ignore letter case in exact lookup","populatedLocked":"This field already holds values. Changing how it is stored needs existing-data migration, which is coming next.","oneWayNote":"Only a keyed one-way fingerprint is kept. Exact match and uniqueness work; the value can never be shown, exported or recovered.","oneWayWarning":"The original value cannot be shown or recovered. Changing this mode later requires users to enter the value again.","populatedMigrates":"This field already holds values. Changing how it is stored creates a new version of the entity and a protected migration that you review before anything moves.","gridTooltip":"Storage protection: {{mode}}"},"aiUse":{"label":"AI use","allowed":"AI use allowed","excluded":"Excluded from AI","secretLocked":"A secret is always excluded from AI. This cannot be changed."},"help":{"personalDefault":"Personal data is encrypted and excluded from AI by default."},"warning":{"personalAiTitle":"AI will be able to use this personal data","personalAiBody":"Values in this field may be sent to the AI provider your workspace uses, including external providers in other jurisdictions. You will be asked to confirm when you save, and the change is recorded.","personalAiConfirm":"Allow AI to use the personal data in: {{fields}}? Values from these fields may be sent to your AI provider. This change is recorded."},"summary":{"title":"What this changes","aiExcluded":"No AI feature, workflow AI step or assistant receives this field, and AI cannot fill it — local models included.","aiAllowed":"AI features may use this field where a step or assistant is set up to use it.","storageStandard":"Storage is unchanged: standard database and network protection.","storageSecret":"Stored encrypted. The value can only be replaced, never shown.","appliesNow":"Applies as soon as you save, including to workflows already published and runs in progress.","newlyExcluded":"Excluded from AI by the personal-data default. If an AI feature needs this field, allow it deliberately.","storageEncrypted":"Stored encrypted under this workspace’s own key. Tables and records show it masked until someone with permission reveals it.","storageExact":"Stored encrypted with a keyed lookup index: exact match and uniqueness work; partial search, sorting and calculations do not.","storageOneWay":"Stored one-way: only a keyed fingerprint remains. Records show “Value set”; nobody can reveal the value."},"report":{"open":"Open the data protection report","title":"Data protection report","description":"Every classified, protected or AI-excluded field, what uses it, and what needs your attention.","tiles":{"aiExcluded":"Fields excluded from AI","personal":"Personal data fields","newlyExcluded":"Excluded by the new default","aiRefusals":"AI requests refused (30 days)"},"newlyExcludedNote":"{{count}} field(s) marked as personal data before AI exclusion existed are now excluded from AI by default. Open a field to allow AI deliberately if a feature needs it.","filters":{"all":"All","personal":"Personal data","secret":"Secret","protected":"Protected","aiExcluded":"AI excluded","migrationRequired":"Migration required","keyIssue":"Key issue","attention":"Needs attention","reviewPending":"Review pending"},"exportCsv":"Export metadata (CSV)","emptyAll":"No field is classified or excluded from AI yet. {{count}} general-data field(s) are allowed for AI.","emptyFilter":"No field matches this filter.","columns":{"field":"Field","classification":"Classification","protection":"Storage protection","aiUse":"AI use","records":"Records","dependents":"AI steps and connectors using it","keys":"Key status","lastChange":"Last policy change","risks":"Attention"},"searchable":"Searchable","notSearchable":"Not searchable","comingNext":"Coming next","risks":{"newly_excluded_by_default":"Excluded by the new default","personal_data_allowed_for_ai":"Personal data allowed for AI","legacy_format":"Values in the retired personal-data format","ai_step_blocked":"An AI step maps this field","legacy_plaintext":"Personal data stored without encryption (migration required)","key_unavailable":"Tenant keys missing or unreadable","review_pending":"Not reviewed yet: excluded from AI and external exposure"},"searchableExact":"Exact match only","changedBy":"by {{name}}","untitledWorkflow":"Untitled workflow","egress":{"title":"Protected values leaving the platform (30 days)","unavailable":"Protected value activity could not be read right now.","noAlerts":"Nothing needs your attention: no protected value waits in a queue in plaintext and nothing that uses a protected field is broken.","sentBy":"Sent by connector {{connector}}","tiles":{"reveals":"Values revealed","released":"Values sent by connectors","refused":"Reveals and sends refused","connectors":"Connectors allowed to send protected values"},"alerts":{"plaintext_in_queue":"{{count}} queued integration message(s) were made before a field was protected and still hold its value. They are withheld when delivered; replay or discard them.","invalid_dependency":"{{count}} view(s), report(s), template(s) or connector(s) use a protected field in a way it cannot support. Open the field to see which.","egress_refused":"{{count}} attempt(s) to send or export protected values were refused in the last 30 days.","reveal_refusals":"{{count}} attempt(s) to reveal protected values were refused in the last 30 days."}},"reviewPendingNote":"{{count}} field(s) added to protected entities have not been classified yet. They stay excluded from AI and external exposure until an administrator reviews them."},"ai":{"fieldExcluded":"This AI step cannot use “{{field}}” because the field is excluded from AI.","outputFieldExcluded":"This AI step cannot fill “{{field}}” because the field is excluded from AI. Remove it from the step’s outputs.","policyUnavailable":"Data protection policy could not be verified. No data was sent.","fieldUnverified":"“{{field}}” is not a field of the step’s data entity, so its data protection could not be verified. No data was sent. Choose an existing field.","consumerUnregistered":"This feature is not registered to use AI. No data was sent.","localOnlyRemoteRefused":"This workspace allows local AI only, and the AI provider for this feature is not local. No data was sent. Assign a local provider in AI settings.","embeddingProfileUnavailable":"Meaning-based search is not available with the configured embedding model. No data was sent. Keyword search still works.","ticketInvalid":"The AI request could not be verified. No data was sent.","providerFailed":"The AI provider did not return a usable answer. Try again later.","ticketReplayed":"This AI request was already used and cannot be sent again. No data was sent. Ask for a new draft.","entityUnverified":"The data entity “{{entity}}” this AI feature uses could not be verified, so no data was sent. Check that the entity exists and is active in this workspace."},"fieldPolicy":{"personalDataAiNeedsAcknowledgement":"Allowing AI to use personal data in {{fields}} needs your confirmation. Save again and confirm the warning.","personalDataNeedsProtection":"“{{field}}” holds personal data and is new or empty, so it must be encrypted. Choose Encrypted or Encrypted with exact lookup.","populatedNeedsMigration":"“{{field}}” already holds values, so how it is stored changes through a new version. Create the version and review the protected migration before anything moves.","storageUnavailable":"Encrypted storage is not available right now, so {{fields}} cannot be saved as personal data or encrypted. Nothing was saved. Excluding a field from AI does not need encrypted storage: set its AI use to “Excluded from AI”."},"publish":{"blockedTitle":"Publish blocked — data protection issues in AI steps"},"aiStep":{"title":"AI data access","description":"Choose which fields of this step’s data entity the AI receives and which it fills. Fields excluded from AI cannot be chosen.","inputsLabel":"Fields sent to the AI","outputsLabel":"Fields the AI fills","issuesTitle":"Data protection issues","removeMapping":"Remove","noEntity":"Bind this step to a data entity to let the AI read or fill its fields.","entityChanged":"This step's AI mapping named another data entity. It now uses the step's entity: fields that exist here are kept; save to apply.","adoptEntity":"Use this entity","fieldMissing":"“{{field}}” is not a field of this step's data entity. Remove it from the mapping.","excludedReason":"Excluded from AI by this field's data protection policy. Change it in the entity's field protection."},"canary":{"title":"AI exclusion canary","leakDetected":"An excluded field reached a captured AI request. The data protection check failed.","controlFailed":"The canary detector did not find the seeded leak, so its negative result cannot be trusted."},"configuration":{"nestedField":"“{{field}}” is inside a table or group. Only top-level fields can be encrypted for now.","unsupportedType":"“{{field}}” cannot be encrypted. Text, number, whole-number and yes/no fields can be; money, units, lists and groups cannot.","derivedField":"“{{field}}” is calculated, generated or links to another record, so it cannot be encrypted.","usedByDerived":"“{{field}}” is used in a calculation, so it cannot be encrypted. Remove it from the calculation first.","correlationKey":"“{{field}}” identifies records for integrations, so it cannot be encrypted.","usedByRules":"“{{field}}” is used by a rule, effect or lifecycle of this entity, so it cannot be encrypted. Remove it from the rule first.","uniqueNeedsExactLookup":"“{{field}}” must be unique, which a plain encrypted value cannot guarantee. Choose Encrypted with exact lookup.","uniqueCaseMismatch":"“{{field}}” must be unique ignoring letter case, so its exact lookup must ignore letter case too.","missingFieldId":"“{{field}}” has no permanent field ID yet. Save the entity once, then protect the field.","dependenciesUnavailable":"What uses this field could not be checked, so protection was not turned on. Try again.","dependency":{"sort":"The view “{{consumer}}” sorts by {{field}}. Protected fields cannot be sorted; change the view first.","filter":"“{{consumer}}” filters {{field}} in a way a protected field cannot answer. Change the filter first.","grouping":"“{{consumer}}” groups by {{field}}. Protected fields cannot be grouped; change it first.","aggregate":"The report “{{consumer}}” adds up {{field}}. Protected values cannot be added up (counting still works); change the report first.","export":"The document template “{{consumer}}” places {{field}}. It would print a withheld value; remove the field from the template first.","integration":"The connector “{{consumer}}” is declared to send {{field}}. That mode has no original value to send; change the connector first.","rollup":"A total on {{consumer}} adds up {{field}}. Change the total first.","sortIndex":"A sorted view uses {{field}}. Protected fields cannot be sorted; change the view first.","other":"Something else uses {{field}} in a way a protected field cannot support."}},"query":{"sortUnavailable":"Protected fields cannot be sorted.","searchUnavailable":"“{{fields}}” is encrypted: it can only be searched with “is set” or “is empty”.","exactOnly":"“{{fields}}” can only be searched for an exact value, “is set” or “is empty”."},"storage":{"plaintextRefused":"A value for {{fields}} was not encrypted, so it was refused. Nothing was saved.","uniqueNeedsExactLookup":"{{fields}} must be unique, but it is encrypted without exact lookup, so uniqueness cannot be checked. Nothing was saved.","maskIsNotAValue":"The masked placeholder for {{fields}} is not a value. Type a new value to replace it, or leave it to keep the current one.","envelopeRelocated":"The protected value for {{fields}} belongs to another record or field and was refused. Nothing was saved.","unsupportedValue":"{{fields}} can only hold a single text, number or yes/no value while it is encrypted.","recordIdRequired":"This protected value could not be bound to its record. Nothing was saved.","unexpectedEnvelope":"{{fields}} is stored as readable text now; a protected value cannot be kept there.","entityMismatch":"This record does not belong to the workspace that owns its data type, so it was refused. Nothing was saved.","projectionCannotSeal":"The mapping {{mapping}} copies rows into {{fields}}, which is protected. Write protected fields through the record instead."},"keys":{"unavailable":"Protected data is temporarily unavailable. Your data was not exposed or changed."},"reveal":{"action":"Reveal value","hide":"Hide value","masked":"Protected value","replace":"Replace value","replaceHint":"Protected value. Leave blank to keep it, or type a new value to replace it.","valueSet":"Value set","notSetLabel":"Not set","remaskNote":"Hidden again when you leave or after 30 seconds.","notFound":"This record is not available to you.","fieldHidden":"You cannot see this field.","notPermitted":"You do not have permission to reveal protected values.","secretNeverRevealed":"A secret is never shown. It can only be replaced.","notSet":"This field has no value.","notRevealable":"This value is not stored encrypted, so there is nothing to reveal.","integrity":"This protected value could not be verified and was not shown.","unavailable":"The value could not be revealed right now. Try again.","auditUnavailable":"The reveal could not be recorded, so the value was not shown. Try again.","oneWayNotRevealable":"This value is one-way protected. There is nothing to reveal; it can only be replaced.","migrationPending":"This value is being moved to protected storage. It can be revealed once its record has moved."},"custody":{"title":"Key custody","description":"This workspace’s own encryption keys. They are created when the first field is protected and are never shown, copied or downloaded.","provider":"Provider","region":"Region","environment":"Environment","noRegion":"Host keyring (no region)","keyId":"Key ID","purpose":"Purpose","purposeWrapping":"Encryption key","purposeHmac":"Lookup key (HMAC)","version":"Version","status":"Status","created":"Created","rotated":"Last rotated","neverRotated":"Never","values":"Protected values","lastEvent":"Last custody operation","systemActor":"System","health":"Health","healthy":"Healthy","notProvisioned":"No keys yet. They are created when the first field is protected.","unavailable":"Key custody status could not be read.","noMaterial":"Key material is never shown, copied or exported.","statuses":{"active":"Active","readable":"Readable (older version)","disabled":"Disabled","pending_destruction":"Pending destruction","destroyed":"Destroyed"},"events":{"provisioned":"Keys created","provision_refused":"Key creation refused","custody_unavailable":"Custody unavailable","rotation_started":"Key rotation started","rotation_paused":"Key rotation paused","rotation_resumed":"Key rotation resumed","rotation_completed":"Key rotation completed","destruction_scheduled":"Key destruction scheduled","destruction_approved":"Key destruction approved","destruction_cancelled":"Key destruction cancelled","key_destroyed":"Keys destroyed","restore_verified":"Restore verified","restore_verification_failed":"Restore verification failed","restore_keys_provisioned":"Restored with new keys"},"unknownPerson":"Unknown person","operationFailed":"The key custody operation could not be completed. Nothing was changed.","lifecycle":{"done":"Done.","back":"Back"},"rotation":{"title":"Key rotation","description":"Rotating creates a new encryption key version. New values use it at once; older versions stay readable while existing values are re-sealed in the background.","statusLabel":"Status","status":{"running":"Re-sealing","paused":"Paused","completed":"Completed"},"pauseReasonLabel":"Why it paused","pauseReasons":{"custody":"The keys were temporarily unavailable. Nothing was written.","failure":"Some records could not be re-sealed and need review.","operator":"Paused by an owner."},"toVersion":"New version","progressLabel":"Re-sealing progress","progress":"Records re-sealed: {{resealed}} of {{total}} · values: {{values}} · history: {{history}}","failed":"Not re-sealed: {{failed}}","startedBy":"Started by","completedAt":"Completed","none":"The key has not been rotated.","pause":"Pause","resume":"Resume","rotate":"Rotate key","confirmTitle":"Rotate the encryption key?","confirmBody":"A new version becomes active immediately. Protected data stays available throughout; the older version remains readable until every value is re-sealed.","reason":"Reason (optional)","confirm":"Rotate now"},"verification":{"title":"Restore verification","description":"A backup counts as healthy only after its protected values opened under keys recovered from custody. Nothing is shown to anyone.","result":"Last result","kinds":{"drill":"Restore drill","restore":"Restore into this workspace"},"statuses":{"verified":"verified","failed":"failed"},"keys":"Keys recovered","values":"Protected values opened","ofTotal":"{{done}} of {{total}}","reencrypted":"Values re-encrypted with this workspace's keys","reindexed":"Exact-lookup indexes recomputed","oneWayReset":"One-way values to enter again","by":"By","none":"No backup has been verified yet.","run":"Verify latest backup"},"shredding":{"title":"Destroy keys (crypto-shredding)","description":"Destroying keys makes every value sealed with them permanently unreadable, including in every backup. It does not override a legal hold or a retention duty, and it is not how one person's data is erased.","statusLabel":"Request","statuses":{"scheduled":"Waiting for approval","approved":"Approved","executed":"Destroyed"},"scopeLabel":"Keys","scopeTenant":"Every key of this workspace","scopeVersions":"Older versions: {{versions}}","reasonLabel":"Reason","requestedBy":"Requested by","destroyAfter":"Not before","approvedBy":"Approved by","singleOperatorApproval":"single-operator exception","executedAt":"Destroyed on","unreadable":"Stored values made unreadable","none":"No destruction is scheduled.","approve":"Approve destruction","selfApprove":"Approve as the only member","execute":"Destroy now","cancel":"Cancel request","schedule":"Schedule destruction","needsIndependent":"Another owner must approve this request.","needsSingleOperatorScope":"You are the only member. To approve your own request, the primary owner must first turn on the key custody single-operator exception in Settings.","executeTitle":"Destroy these keys now?","executeBody":"Their material is erased. Every value sealed with them, in this workspace and in every backup, can never be read again. This cannot be undone.","executeConfirm":"Destroy permanently","scheduleTitle":"Schedule key destruction","scheduleBody":"Decryption with the selected keys stops as soon as you schedule this. Destruction happens only after an approval and the recovery window; until then it can be cancelled.","scopeVersionOption":"Older key versions no longer used for new values","scopeTenantOption":"Every key of this workspace (offboarding)","versionOption":"{{purpose}} · version {{version}} · protected values: {{values}}","tenantWarning":"Every protected value of this workspace becomes unreadable, and new protected values cannot be saved.","windowLabel":"Recovery window","windows":{"0":"None","1":"1 day","7":"7 days","30":"30 days"},"windowHelp":"The keys can still be restored by cancelling until the window ends.","typeName":"Type the workspace name to confirm: {{name}}","legalHold":"No legal hold, retention duty or required notice prevents destroying this data.","scheduleConfirm":"Schedule destruction","selfApproveTitle":"Approve your own request?","selfApproveBody":"Normally someone else approves a key destruction. As the only member of this workspace you may approve it yourself; the approval is recorded as a single-operator exception with your reason.","selfApproveReason":"Why no one else can approve","selfApproveConfirm":"Approve destruction","singleOperatorAcknowledgement":"I understand that I am approving my own request to destroy keys, that the values sealed with them can never be read again, and that this approval is recorded as a single-operator exception."},"legacy":{"title":"Legacy personal-data format","description":"The old personal-data format and its single platform key are retired. Existing values are moved in place to this workspace's keys, with evidence and without exposing plaintext.","statusLabel":"Status","complete":"Retired: nothing is left in the old format.","waiting":"Values in the old format are waiting to be moved.","metadata":"Field declarations moved to Data protection","migrated":"Values moved to this workspace's keys","pending":"Records still waiting","blocked":"Values that need a protected field","vault":"Entries left in the old vault","blockedHelp":"A value in the old format sits in a field that is not protected. Protect the field (Encrypted), then try again.","retry":"Try again"}},"egress":{"secretNeverLeaves":"A secret field was chosen. Secrets are never revealed, exported or sent anywhere.","oneWayHasNoOriginal":"A one-way protected field was chosen: its original value cannot be sent or exported.","consumerCannotCarryPlaintext":"This destination never receives protected values; they are withheld.","fieldNotProtected":"Only encrypted fields can be declared as protected data to send.","notPermitted":"You do not have permission to send or export protected values.","auditUnavailable":"Protected values were not sent because the access could not be recorded. Try again.","integrity":"A protected value did not match its record, so nothing was sent.","glFieldProtected":"A ledger export cannot include protected values. Remove protection from the journal fields or export another source.","declarationInvalid":"Choose an entity and at least one encrypted field this connector may send."},"rotation":{"inProgress":"A key rotation is already in progress.","destructionPending":"A key destruction is scheduled. Cancel it or let it finish before rotating.","invalidKey":"The new key version could not be created. Nothing was changed.","drainFailed":"Key rotation could not continue."},"shredding":{"nameMismatch":"The workspace name you typed does not match.","legalHoldRequired":"Confirm that no legal hold or retention duty applies.","reasonRequired":"Give a reason.","invalidWindow":"Choose a recovery window between 0 and 90 days.","requestOpen":"A destruction request is already open.","rotationRunning":"A key rotation is in progress. Let it finish before destroying keys.","versionNotRetired":"Only older key versions no longer used for new values can be destroyed on their own.","invalidScope":"Choose which keys to destroy.","nothingToDestroy":"There are no keys to destroy.","notScheduled":"This request is no longer waiting for approval.","independentApprovalRequired":"Someone other than the requester must approve this destruction.","singleOperatorReasonRequired":"Give the reason for approving your own request.","singleOperatorAcknowledgementRequired":"Confirm the acknowledgement to approve your own request.","notCancellable":"This request can no longer be cancelled.","notApproved":"This request has not been approved.","windowOpen":"The recovery window has not ended yet.","drainFailed":"Scheduled key destruction could not run."},"verification":{"keysNotRecovered":"Some keys the backup needs could not be recovered.","valuesNotAuthenticated":"Some protected values in the backup did not open under the recovered keys.","noBackup":"There is no completed backup to verify.","archiveUnreadable":"The backup file could not be read.","archiveInvalid":"The backup failed its integrity check.","recordFailed":"The verification could not be recorded.","drillFailed":"The restore check ran and failed. Nothing was changed.","restoreIncomplete":"The restore did not store every protected value it should have.","restoreNotAuthenticated":"Some restored protected values did not open under this workspace's keys."},"legacy":{"leaseFailed":"Legacy values could not be read.","vaultRetireFailed":"The legacy vault could not be emptied.","applyFailed":"Legacy values could not be moved.","drainFailed":"The legacy migration could not continue."},"review":{"pending":"Review pending","pendingBody":"This field was added to an entity with the protected profile and nobody has classified it yet. Until you do, it is excluded from AI and from anything shown outside the workspace. Choose its classification and AI use, or confirm the current settings.","markReviewed":"Confirm these settings as reviewed"},"profile":{"label":"Protected profile: new fields start unreviewed","onHint":"Every field added to this entity from now on is excluded from AI and from anything shown outside the workspace until an administrator classifies it.","offHint":"Turn on for entities that hold sensitive information. New fields then wait for an administrator's review before AI or an external audience can use them.","existingKept":"Fields that already exist keep their current classification. Only fields added later start unreviewed.","pendingCount":"{{count}} field(s) waiting for review."}},"single-operator":{"dialog":{"title":"Confirm single-operator exception","warning":"This action sets aside “{{ruleName}}” for {{subjectName}}. You are performing both parts of an action that normally requires another person.","evidence":"LerniFlow will record this as self-approved. It will not count as independent approval or separation of duties.","question":"Do you want to {{actionLabel}} without a second person?","reasonLabel":"Reason for proceeding alone","reasonHint":"Explain why this action must proceed now. Do not include passwords, personal data, or secrets.","acknowledgement":"I understand that this action has no independent reviewer and will be permanently identified as self-approved.","cancel":"Cancel","confirm":"Confirm and {{actionLabel}}","pending":"Confirming…","warningLabel":"Warning","cancelled":"Nothing was changed. This step still needs a decision.","rulesHeading":"Rules set aside for this action only","policyLine":"Tenant authorization policy {{policyRef}}. The policy stays on for every later action.","candidateRequirement":"The readiness policy asks for {{count}} independent approval(s) of this candidate. One confirmed self-approval satisfies it here: the candidate will be at best “Ready with warnings — Self-approved”, it cannot promote to production, and a target workspace may refuse it.","financeTrail":"The finance audit trail will label this decision “Self-approved — single-operator exception” and link it to this confirmation.","financeCancelled":"Nothing was changed. This still needs a decision."},"actions":{"complete":"complete this step","reject":"reject this step","acceptRecord":"accept this record","rejectRecord":"reject this record","approveCandidate":"approve this candidate","approveRateCard":"approve this rate card","approvePeriodClose":"approve this period close","approveGlConnector":"approve this ledger connector","approveGlMapping":"approve this ledger mapping","activateBudget":"activate this budget","approveCostModel":"approve this cost model","approveRevenueSource":"approve this revenue stream","approveCostSource":"approve this cost source","approveGlDestination":"approve this GL destination","approveFxRate":"approve this exchange rate"},"rules":{"documentDowngradeSecondPerson":"Someone other than the requester approves lowering a document's protection","initiatorCannotAct":"The person who started the workflow cannot decide this step","priorStepActorCannotAct":"The person who completed the previous human step cannot decide this step","decisionBySubmitter":"The person who submitted this record cannot decide it","denyOwnRecord":"A record’s creator cannot decide this action","kbAuthorCannotPublish":"Someone other than its author publishes a knowledge-base version","distinctActorFields":"This action requires a different person from {{fieldLabel}}","candidateAuthor":"A candidate author cannot approve the candidate","financeMakerChecker":"The creator or requester cannot approve this finance action","keyCustodyDestruction":"Someone other than the requester approves destroying encryption keys","templateAuthorCannotApprove":"Someone other than the template's author or submitter approves it"},"refusals":{"memberJoined":"Another member joined this workspace, so single-operator exceptions were turned off automatically. Ask a different person to decide this step.","challengeInvalid":"This confirmation is no longer valid and nothing was changed. Close the dialog and start the action again.","challengeExpired":"This confirmation expired and nothing was changed. Try the action again to get a new confirmation.","stateChanged":"This step changed while you were confirming, so nothing was changed. Refresh the page and review the step again.","reasonRequired":"Enter a reason for proceeding alone, then confirm again.","reasonTooLong":"The reason is too long. Enter a shorter reason (2,000 characters or fewer), then confirm again.","acknowledgementRequired":"Select the acknowledgement, then confirm again.","primaryOwnerOnly":"Only the workspace's primary owner can change single-operator exceptions. Ask the primary owner to make this change.","notEligible":"Single-operator exceptions can be enabled only while the workspace has exactly one member. Remove other members or keep independent review.","scopeUnavailable":"That exception scope is not available yet. Choose workflow decisions instead.","settingStale":"This setting changed since you opened it, so nothing was saved. Refresh the page and try again.","statusUnknown":"The status of single-operator exceptions could not be verified, so nothing was changed. Try again in a moment.","actorNotMember":"You are no longer a member of this workspace, so nothing was changed. Ask a current member to decide this step.","recordMemberJoined":"Another member joined this workspace, so single-operator exceptions were turned off automatically. Ask a different person to decide this record.","recordActorNotMember":"You are no longer a member of this workspace, so nothing was changed. Ask a current member to decide this record.","recordStateChanged":"This record changed while you were confirming, so nothing was changed. Refresh the page and review the record again.","candidateMemberJoined":"Another member joined this workspace, so single-operator exceptions were turned off automatically. Ask a different person to approve this candidate.","candidateStateChanged":"This candidate, its readiness policy or the setting changed while you were confirming, so nothing was approved. Refresh the page and review the candidate again.","candidateProductionTarget":"This candidate promotes to production. A self-approval is never accepted there: ask an independent reviewer to approve it.","candidateCritical":"This is a critical change. A self-approval is never accepted for it: ask an independent reviewer to approve it.","financeMakerChecker":"You created or requested this, so somebody else has to approve it.","financeDualControlRequired":"A policy managed outside this workspace requires dual financial control, so a single-operator exception is not available here. Ask an independent reviewer to approve it.","financeMemberJoined":"Another member joined this workspace, so single-operator exceptions were turned off automatically. Ask a different person to approve this finance action.","financeStateChanged":"This finance item changed while you were confirming, so nothing was approved. Refresh the page and review it again.","financeActorNotMember":"You are no longer a member of this workspace, so nothing was approved. Ask a current member to decide this finance action.","thresholdInvalid":"Enter a whole number from 1 to 1,000, then save again.","thresholdNeedsSetting":"An alert threshold can be set once single-operator exceptions have been enabled at least once."},"history":{"selfApproved":"Self-approved — single-operator exception","acquired":"Assigned under a single-operator exception — not an approval","refused":"Single-operator exception not used — confirmation was stale","panelTitle":"Governance exceptions","panelDescription":"Actions on this run where one person performed both parts of a separated decision.","ruleSetAside":"Rule set aside: {{ruleName}}","reason":"Reason","by":"By","actionComplete":"Completed the step","actionReject":"Rejected the step","actionClaim":"Claimed the step","actionAssign":"Assigned the step","recordPanelDescription":"Decisions on this record where one person performed both parts of a separated decision.","actionAccept":"Accepted the record","actionRejectRecord":"Rejected the record","policySetAside":"Tenant authorization policy set aside: {{policyRef}}"},"run":{"hintTitle":"Single-operator exception available","hintBody":"You are the only member of this workspace. You can take this step, but completing or rejecting it requires a single-operator exception: a reason, an acknowledgement and a second confirmation. It is recorded as self-approved."},"settings":{"sectionTitle":"Governance and risk","title":"Single-operator exceptions","description":"Lets the only member of this workspace complete selected actions that normally require another person. Every use needs a second confirmation and is recorded as self-approved.","open":"Review single-operator exceptions","onboardingPrompt":"Working alone? Review single-operator exceptions.","badge":{"off":"Off","availableOff":"Available but off","on":"On","autoOff":"Automatically turned off — additional member joined","notAvailable":"Not available — {{count}} members","unavailable":"Unavailable — status could not be verified","delegated":"Not available to delegated users"},"delegatedBody":"Delegated users can't view or change single-operator exceptions. Only members of this workspace see their status, and only the primary owner can change them.","statusAria":"Single-operator exception status","memberCount":"Accepted members","eligible":"Eligible","eligibleYes":"Yes — exactly one member","eligibleNo":"No — it needs exactly one member","effectiveStatus":"Effective status","scopes":"Enabled scopes","none":"None","owner":"Primary owner","lastChanged":"Last changed by","automatic":"Automatic","activationReason":"Activation reason","activatedAt":"Activated","lastAutoOff":"Last automatic deactivation","never":"Never","recentUses":"Exception actions in the last 30 days","externalAccess":"External access","externalAccessHint":"Delegated consultants are not members. They do not change the member count and cannot use these exceptions.","historyLink":"View exception history","reviewerCallout":"Invite an independent reviewer. When a second member joins, single-operator exceptions turn off automatically and independent review returns.","compliance":"Single-operator exceptions replace independent review with a documented self-check. They can help a one-person organization continue operating, but they do not provide separation of duties, dual control, maker-checker, four-eyes review, or independent approval. Confirm that using them is permitted by your contractual, legal, regulatory, and internal-control obligations.","scopesHeading":"Scopes","scopeWorkflows":"Workflow decisions","scopeWorkflowsHint":"Steps that refuse the person who started the run or who completed the previous human step.","onlyOwner":"Only the primary owner can change this setting. Members can view its status and history.","notEligibleHint":"This setting can be enabled only while the workspace has exactly one accepted member.","enable":"Enable…","disable":"Turn off","enabled":"Single-operator exceptions enabled.","disabled":"Single-operator exceptions turned off.","activation":{"title":"Enable single-operator exceptions?","body":"Your workspace has one member. Enabling this setting can let that member complete selected actions that normally require another person. Every use requires a second confirmation and is recorded as self-approved.","reasonLabel":"Why does this workspace need single-operator exceptions?","acknowledgement":"I understand that these actions will not provide independent approval, dual control, or separation of duties.","button":"Enable selected exceptions","cancel":"Cancel","scope":"Scope: {{scope}}"},"historyTitle":"Exception history","historyEmpty":"No exception activity yet.","historyWhen":"When","historyEvent":"Event","historyActor":"Who","historyDetail":"Detail","events":{"setting_enabled":"Enabled","setting_scopes_changed":"Scopes changed","setting_disabled":"Turned off","setting_auto_disabled":"Automatically turned off — additional member joined","setting_owner_changed":"Primary owner changed","exception_acquired":"Step taken under an exception","exception_confirmed":"Self-approved — single-operator exception","exception_refused":"Stale confirmation refused","finance_dual_control_changed":"Dual financial control policy changed","alert_threshold_changed":"Alert threshold changed"},"system":"System","scopeTenantAuthorization":"Tenant authorization policies","scopeTenantAuthorizationHint":"Record decisions refused by a policy because you created the record or are named in one of its actor fields.","scopeDataDecisions":"Data lifecycle decisions","scopeDataDecisionsHint":"Accepting or rejecting a record you submitted for a decision, and publishing a knowledge-base version you wrote in a space that requires a second person.","scopeTestAssurance":"Test and promotion readiness","scopeTestAssuranceHint":"Approving a release candidate you changed yourself. Never for critical changes, never toward production, never for waivers.","scopeFinance":"Finance controls","scopeFinanceHint":"Approving a rate card, period close, ledger connector or mapping you created or requested, and activating a budget you created. Never an ambiguous ledger reconciliation, which always needs two people.","financeDualControl":"Unavailable — dual financial control is required by {{source}} ({{reference}}). Only LerniFlow can record or lift this.","financeDualControlUnknown":"Unavailable — whether dual financial control is required could not be verified.","financeDualControlSource":{"contract":"a contract","regulator":"a regulator","auditor":"an auditor","platform":"LerniFlow"},"scopeKeyCustody":"Key custody","scopeKeyCustodyHint":"Approve your own scheduled destruction of this workspace's encryption keys. It stays a self-approval, recorded with your reason.","scopeDocumentTemplates":"Document templates","scopeDocumentTemplatesHint":"Approve a document template you created or submitted. It stays a self-approval, recorded with your reason."},"record":{"hint":"You are the only member of this workspace. Deciding requires a single-operator exception: a reason, an acknowledgement and a second confirmation. It is recorded as self-approved."},"finance":{"hintTitle":"Single-operator exception available","hintBody":"You are the only member of this workspace. Approving or activating something you created or requested requires a single-operator exception: a reason, an acknowledgement and a second confirmation. It is recorded as self-approved in the finance audit trail.","selfApprove":"Self-approve…","selfApproveTitle":"You created or requested this. Approving it yourself needs a single-operator exception and is recorded as self-approved.","selfActivate":"Self-activate…","selfActivateTitle":"You created this budget. Activating it yourself needs a single-operator exception and is recorded as self-approved."},"admin":{"title":"Dual financial control","description":"Record a requirement for dual financial control that comes from outside this workspace — a contract, a regulator or an auditor. While it applies, the workspace cannot use single-operator exceptions for finance controls. The workspace cannot change it.","currentRequired":"Currently required by {{source}} ({{reference}}).","currentNone":"No dual-control requirement is recorded.","requiredLabel":"This workspace must keep dual financial control","sourceLabel":"Where the requirement comes from","referenceLabel":"Reference","referenceHint":"The document or clause that requires it, for example “Master agreement §7.2”. Required when recording a requirement.","save":"Save requirement","saved":"Saved. The workspace’s finance exceptions follow it immediately.","saveFailed":"The requirement could not be saved. Check that you are signed in with two-factor authentication, then try again.","referenceRequired":"Enter the reference that requires dual control, then save again."},"alerts":{"autoDisabled":"Single-operator exceptions were turned off automatically because another member joined. Review the governance report.","thresholdReached":"Self-approvals in the last 30 days reached your alert threshold. Review the governance report."},"report":{"open":"Open the governance report","title":"Governance exceptions report","description":"Every single-operator exception in this workspace — workflows, tenant authorization, data decisions, Test Assurance and finance — with its evidence.","backToSetting":"Back to the setting","statementTitle":"Self-approval is not independent approval","statement":"Every self-approved action on this page was performed by one person on both sides of a separated decision. It is counted apart from decisions taken by a different person and never adds to them.","unavailableTitle":"The report could not be read","unavailable":"Nothing is shown because the report could not be verified. Only members of this workspace can read it. Try again in a moment.","summaryTitle":"Trend and recency","tiles":{"selfApproved30d":"Self-approved in the last 30 days","last7d":"{{count}} in the last 7 days","lastSelfApproved":"Most recent self-approval","independent30d":"Decided by a different person (30 days)","independentHint":"Independent decisions under the same controls. Self-approvals are not included.","refused30d":"Stale or refused attempts (30 days)","abandoned30d":"{{count}} confirmations abandoned","lastAt":"Last:","autoDisabled":"Automatic deactivations","alertThreshold":"Alert threshold (30 days)","alertThresholdHint":"The primary owner is alerted when self-approvals reach this number."},"trend":{"up":"Up from {{previous}} in the previous 30 days","down":"Down from {{previous}} in the previous 30 days","flat":"Same as the previous 30 days ({{previous}})"},"daysAgo":"{{count}} days ago","byAreaTitle":"Self-approved by area (30 days)","trendTitle":"Weekly trend (12 weeks)","refusedLegend":"Stale or refused attempts","weekOf":"Week starting","filters":{"title":"Filter","any":"Any","area":"Area","actor":"Who","rule":"Rule set aside","subjectType":"Subject","eventType":"Event","from":"From","to":"To","subject":"Only this subject","utc":"Date filters are whole days in UTC. Times are shown in your time zone, which is named after each time.","apply":"Apply filters","reset":"Clear filters"},"unknownPerson":"Unknown person","anActorField":"an actor field","thisSubject":"The selected subject","export":{"csv":"Export CSV","json":"Export JSON","logged":"Every export is recorded with who took it and when."},"exportUnavailable":"The evidence could not be exported. Only members of this workspace can export it, and nothing is exported unless the export can be recorded.","empty":"No exception activity matches these filters.","eventsTitle":"Exception events","decisionsTitle":"Governed decisions","decisionsEmpty":"No governed decisions match these filters.","decisionsTruncated":"Only the most recent decisions are shown. Narrow the filters or export to see more.","decisionKinds":{"independent":"Decided by a different person","self_approved":"Self-approved — single-operator exception","not_separated":"Not separated"},"columns":{"subject":"Subject","rules":"Rules","evidence":"Evidence"},"onlyThisSubject":"Only this subject","originalActor":"Also the original actor: {{name}}","refusedBecause":"Not used: {{reason}}","memberJoined":"{{name}} joined as a second member","memberJoinedUnnamed":"A second member joined","thresholdChanged":"Alert threshold changed from {{from}} to {{to}}","notIndependent":"Not independent approval.","evidence":{"ledger":"Recorded in the exception ledger","challenge":"Linked to the refused confirmation","business":"Linked to the business record","unresolved":"Business record not found","open":"Open the record"},"truncated":"Only the most recent events are shown. Narrow the filters or export to see more.","alertsTitle":"Owner alerts","alertsDescription":"The primary owner gets an in-app alert when self-approvals in 30 days reach the threshold, and whenever the setting is turned off automatically.","alertsEmpty":"No alerts have been sent.","sentTo":"sent to {{name}}","exportsTitle":"Evidence exports","exportsEmpty":"Nobody has exported the evidence yet.","exportLine":"{{format}} by {{name}} — {{events}} events, {{decisions}} decisions","thresholdValue":"Alert when self-approvals in 30 days reach {{count}}.","thresholdOwnerOnly":"Only the primary owner can change it.","thresholdSaved":"Alert threshold saved.","thresholdLabel":"Alert when self-approvals in 30 days reach","thresholdSave":"Save threshold","codes":{"challengeExpired":"the confirmation expired","stateChanged":"the subject changed while confirming","memberJoined":"another member joined","challengeInvalidated":"the confirmation was no longer valid","settingOff":"the setting was off","scopeNotEnabled":"the scope was not enabled","actorNotMember":"the person was no longer a member","dualControlRequired":"dual financial control is required","notSoleMember":"the person was not the sole member","expired":"the confirmation expired","ownerChanged":"the primary owner changed","policyChanged":"a policy changed","settingChanged":"the setting changed","superseded":"a newer confirmation replaced it","other":"the confirmation could not be used"},"subjects":{"workflow_instance_step":"Workflow step","data_entity_record":"Data record","kb_article_version":"Knowledge-base version","release_candidate":"Release candidate","rate_card":"Rate card","record_document_governance_request":"Document protection request","period_close_request":"Period close","gl_connector":"Ledger connector","gl_mapping_version":"Ledger mapping","budget":"Budget","cost_model_version":"Cost model","tenant_key_destruction_request":"Key destruction request","revenue_source_version":"Revenue stream","cost_source_version":"Cost source","gl_export_destination_version":"GL destination","fx_rate_request":"Exchange rate","document_template":"Document template"},"trendSummary":"Last 12 weeks: {{selfApproved}} self-approved, {{refused}} stale or refused attempts. This week: {{currentWeek}} self-approved."},"makerChecker":{"differentApprover":"A different approver must decide this."}},"ai-connections":{"capabilities":{"list_my_open_tasks":{"label":"View my assigned tasks","description":"See the open steps assigned to you in workflow runs that are in progress."},"list_startable_workflows":{"label":"View workflows I can start","description":"See the published workflows you are allowed to start, with a link to each."},"list_data_entities":{"label":"View record types","description":"See the names of the data entities you can read in this workspace."},"read_entity_records":{"label":"Read business records","description":"Count or read the records of one data entity, showing only the fields you may see and that are allowed for AI."},"read_evidence_catalog":{"label":"View workspace evidence summary","description":"See which evidence areas have data and which are empty, as counts only."},"search_knowledge_base":{"label":"Search published knowledge","description":"Search current published Knowledge Base articles you can read, with citations. Drafts are never included."},"describe_workflow":{"label":"Explain a workflow","description":"Describes a workflow you can see: its steps, who does each one (a person or an AI agent), the roles that capture or approve it, and the forms and data it uses."},"read_record_document":{"label":"Read documents stored on records","description":"Reads the text of a clean document stored on a record you can see, only when it is enabled for AI use. Privileged and excluded documents are never read, and every read is logged."}},"bundles":{"knowledge":"Published knowledge","work":"My tasks and work","business_data":"Business records","documents":"Documents","actions":"Propose actions"},"actionClasses":{"read":"Read only","propose":"Proposal","write":"Changes data"},"destinations":{"lerniflow_managed_ai":"LerniFlow Assistant","external_ai_mcp":"External AI client (MCP)","local_ai":"Local AI only","external_integration":"Partner integration"}},"record-walls":{"entry":{"link":"Access control"},"page":{"metaTitle":"Access control","title":"Access control: {{entity}}","description":"Decide who may read these records. Nothing here shows record content.","back":"Back to entity"},"record":{"title":"Access","description":"Only the people listed here can read this record and what belongs to it.","inherits":"Access follows the linked {{parent}} (field \"{{field}}\"). Manage the team there."},"modes":{"open":{"label":"Open","description":"Every member of the workspace reads every record."},"walled":{"label":"Walled","description":"Only the participants of each record read it. Owners are not exempt."},"inherits":{"label":"Follows a parent","description":"Each record is readable by whoever reads its linked parent.","noRelationship":"This entity has no relationship field to follow."}},"roles":{"responsible":"Responsible","team_member":"Team member","observer":"Observer","conflicts_officer":"Conflicts officer","responsibleHint":"Reads and works on it; may propose team changes.","team_memberHint":"Reads and works on it, within their workspace role.","observerHint":"Reads only; cannot change it.","conflicts_officerHint":"Manages the team and screens; does not read the content."},"classifications":{"inheritsVia":"Follows this entity through \"{{field}}\"","independent":"Shared data, governed on its own","prohibited":"Must not hold confidential content"},"designer":{"title":"Who can read these records","description":"The access rule for every {{entity}} record.","ownerOnly":"Only a workspace owner can change who reads these records.","gateOff":{"title":"Ethical walls are not available on this platform yet","body":"This entity stays open: everyone who can see its records keeps seeing them. No access rule will be applied, so there is nothing to classify, preview or activate for now.","modeUnavailable":"Not available yet: ethical walls are not enabled on this platform.","cannotApply":"Cannot be applied yet"},"current":{"open":"Today every member reads every record.","walled":"Today only each record’s participants read it.","inherits":"Today each record follows its linked {{parent}} (field \"{{field}}\")."},"step1":{"title":"1. Choose the rule","description":"Nothing changes until you activate it in step 4."},"parentField":"Follow the record linked in","parentOption":"{{field}} → {{parent}}","parentHint":"A record with no linked parent, or a link to a deleted one, is readable by nobody.","step2":{"title":"2. Classify related entities","description":"Every entity that links to this one must say how it is governed before the wall can be activated.","none":"No other entity links to this one.","unclassified":"Not classified","via":"Links here through: {{fields}}","choose":"Choose how it is governed","save":"Save"},"step3":{"title":"3. Preview who gains and who loses access","description":"Counts are shown to you only, never to the people listed.","run":"Preview"},"step4":{"title":"4. Apply","tightenDescription":"Closing access applies at once, in the same transaction.","requestDescription":"Any change that could widen access needs a second owner’s approval.","blocked":"{{count}} related entities are not classified yet.","activate":"Activate","request":"Request approval","previewFirst":"Run the preview first."},"reason":"Reason","reasonPlaceholder":"Why this change (kept in the access log)","requests":{"title":"Changes awaiting a second owner","description":"The owner who asked cannot approve their own change.","change":"Change to: {{mode}}"},"notice":{"classified":"Classification saved.","activated":"Access rule activated.","requested":"Request sent to a second owner.","requestApproved":"Change approved and applied.","requestRejected":"Change rejected."}},"preview":{"losing":"{{count}} lose access","gaining":"{{count}} gain access","person":"Person","now":"Readable now","after":"Readable after","change":"Change","changes":{"loses":"Loses access","gains":"Gains access","same":"No change"}},"roster":{"unknownPerson":"Former member","until":"until","remove":"Remove now","approve":"Approve","reject":"Reject","team":{"title":"Team ({{count}})","description":"Removing someone takes effect at once and suspends their open tasks.","empty":"Nobody can read this record yet."},"pending":{"title":"Awaiting a second person ({{count}})","description":"Additions, screens and lifted screens take effect only after someone else approves.","empty":"Nothing is waiting.","add":"Add {{name}} as {{role}}","screen":"Screen out {{name}}","lift":"Lift the screen on {{name}}","proposedBy":"Proposed by {{name}}","awaitingSecond":"Awaiting a second person"},"screens":{"title":"Screened out ({{count}})","description":"A screen wins over every other access, including ownership.","empty":"Nobody is screened out.","badge":"Screened out","lift":"Propose lifting"},"add":{"title":"Add a person or a screen","description":"Only members of this workspace can be added.","person":"Person","personPlaceholder":"Choose a member","access":"Access","screenOut":"Screen out (deny access)","screenOutHint":"Blocks this person even if they are on the team or own the workspace.","until":"Until (optional)","reason":"Reason","reasonPlaceholder":"Why (kept in the access log)","makerChecker":"A second person must approve before this takes effect.","propose":"Propose","proposeScreen":"Propose screen"},"notice":{"proposed":"Proposed. It takes effect once a second person approves.","removed":"Removed. Access ended now.","approved":"Approved.","rejected":"Rejected.","liftProposed":"Lifting proposed. The screen stays until a second person approves."}},"compliance":{"queue":{"title":"Decisions waiting for you ({{count}})","description":"Approve or reject team changes and screens. You cannot decide a change you proposed.","empty":"No decisions are waiting.","newRecord":"New record"},"roots":{"title":"Walled records ({{count}})","description":"Manage each team without opening the record.","empty":"There are no walled records you manage.","record":"Record","created":"Created","team":"Team","pending":"Pending","screens":"Screens","manage":"Manage access","close":"Close","titleLater":"Walled records (continued)","pages":"Pages of walled records","nextPage":"Next page","firstPage":"First page"}},"errors":{"notFound":"Not found.","alreadyListed":"This person already has a pending or active entry here.","needsSecondApprover":"A second person must approve this change.","forbidden":"You are not allowed to make this change.","classifyRelatedFirst":"Classify every related entity before activating.","reasonRequired":"Give a reason for this change.","childInherits":"Another entity follows this one. Change that entity first.","notARelationship":"That field is not a relationship to the chosen entity.","parentMustBeWalled":"The parent entity must be walled first.","subjectNotMember":"Only members of this workspace can be added.","unknownField":"That field does not exist on this entity.","failed":"Something went wrong. Nothing was changed.","notYetEnabled":"Ethical walls are not yet enabled on this platform. The entity stays open.","roleRequired":"Choose a role for this participant."},"creation":{"title":"New records waiting for approval ({{count}})","waitingFor":"waiting for {{names}} to approve you as responsible","noApprover":"no other owner can approve it yet; add a second owner or a conflicts officer","explain":"You created these records on a walled entity. They open for you, as responsible, once a second person approves. Until then nobody reads them."}},"business-calendars":{"title":"Business calendars","description":"Working days, holidays and closures that dates, deadlines and reminders count on.","someone":"Someone","maintainedBy":"Maintained by {{name}}","archived":"Archived","notPublished":"Not published yet","empty":{"title":"No business calendars yet","body":"A calendar lists the working week and the days that do not count — public holidays, vacation periods, extraordinary closures — with the official source of each. Date rules, step deadlines and reminders then count business days on it."},"create":{"title":"New calendar","hint":"One calendar per authority, office or operation whose working days you count on. Name the person who keeps it current from its official sources.","submit":"Create calendar","adminOnly":"An administrator creates calendars and names who maintains them."},"fields":{"name":"Name","jurisdiction":"Where it applies","jurisdictionPlaceholder":"Authority, office, region or operation","timezone":"Time zone","timezoneHint":"Dates and times are read in this zone.","maintainer":"Maintainer","maintainerHint":"The person responsible for keeping this calendar current from its official sources.","maintainerAdminOnly":"Only an administrator changes the maintainer.","reviewInterval":"Review every (days)","reviewIntervalHint":"A calendar not reviewed within this interval is stale and stops calculating authoritative dates.","description":"Notes"},"review":{"never_reviewed":"Never reviewed","stale":"Stale since {{date}}","due_soon":"Review due {{date}}","current":"Reviewed · next by {{date}}"},"detail":{"description":"The working week, the days that do not count and their sources, versions and history.","back":"All business calendars","currentVersion":"Version {{version}} in use","neverReviewedWarning":"This calendar has never been published or reviewed, so no date is calculated on it yet.","staleWarning":"This calendar is stale: it was due for review on {{date}}. Dates that must be exact are not calculated until its maintainer reviews it.","reviewNote":"Review note (optional)","reviewNotePlaceholder":"Which sources you checked","markReviewed":"Mark as reviewed","editDetails":"Edit details","closeDetails":"Close details","archive":"Archive","restore":"Restore","saveDetails":"Save details","correctionHint":"To add or correct days, start a correction. The version in use keeps counting until you publish.","startCorrection":"Start a correction"},"publish":{"title":"Publish version {{version}}","hint":"Publishing makes this version the one every date, deadline and reminder counts on, and counts as a review. Dates already stored are not rewritten.","changeNote":"What changed and from which source","submit":"Publish","discard":"Discard correction"},"entries":{"title":"Days that do not count (version {{version}})","draftTitle":"Correction in progress (version {{version}})","draftBadge":"Draft","empty":"No dated entries.","when":"When","kind":"Kind","label":"Reason","source":"Source","enteredBy":"Entered by","remove":"Remove","removeNamed":"Remove {{label}}","openSource":"Open source","noSource":"No source"},"week":{"title":"Working week","coverageFrom":"Vouched for from","coverageTo":"Vouched for until","save":"Save working week","coverageHint":"The period the maintainer has entered every closure for. An exact date beyond it is refused rather than guessed."},"add":{"title":"Add a day or period","from":"From","to":"Until (optional)","kind":"Kind","label":"Reason","sourceUrl":"Official source (link)","sourceUrlInvalid":"Use a link that starts with http:// or https://","sourceNote":"Source note","submit":"Add"},"import":{"title":"Import from a file","hint":"CSV with a header row (date or from, to, kind, label, source_url, note) or an iCalendar (.ics) file of all-day events. Rows with a problem are listed and left out.","format":"Format","file":"File to import","paste":"Or paste the content","ready_one":"{{count}} entry ready to add","ready_other":"{{count}} entries ready to add","problem":"Line {{line}}: {{reason}}","problems":{"missing_header":"the header row needs a date (or from) column","missing_date":"no date","invalid_date":"the date is not a valid YYYY-MM-DD date","invalid_range":"the end is before the start","missing_label":"no reason","invalid_kind":"unknown kind","invalid_url":"the source is not an http(s) link","too_many":"more than 1,000 entries in one import"},"submit_one":"Add {{count}} entry","submit_other":"Add {{count}} entries"},"kinds":{"holiday":"Holiday","closure_period":"Closure period","extraordinary_closure":"Extraordinary closure","working_day":"Declared working day"},"units":{"business_days":"business days","calendar_days":"calendar days","calendar_months":"calendar months"},"directions":{"after":"after","before":"before"},"counts":{"exclusive":"counting from the next day","inclusive":"counting the start day"},"adjusts":{"next":"move to the next working day","previous":"move to the previous working day","keep":"keep the date"},"calculator":{"title":"Try it","hint":"Counts with the same calculation date rules, step deadlines and reminders use.","notPublished":"Publish a first version to count on this calendar.","from":"Start date","amount":"How many","unit":"Unit","direction":"Direction","count":"Start day","adjust":"If it lands on a day that does not count","submit":"Calculate"},"explain":{"rule":"{{amount}} {{unit}} {{direction}} {{from}}, {{counting}}","calendar":"{{name}}, version {{version}} ({{timezone}})","counted_one":"{{count}} day counted","counted_other":"{{count}} days counted","skippedSummary_one":"{{count}} day skipped","skippedSummary_other":"{{count}} days skipped","nonWorkingWeekday":"not a working weekday","more_one":"and {{count}} more","more_other":"and {{count}} more","clamped":"Day {{anchorDay}} does not exist in the target month, so the date is {{raw}}, the last day of that month.","raw":"Before the working-day adjustment: {{date}}","adjusted":"After the working-day adjustment: {{date}}"},"codes":{"calendar_not_found":"The calendar was not found in this workspace.","calendar_unpublished":"The calendar has no published version yet.","calendar_archived":"The calendar is archived.","calendar_stale":"The calendar is stale: its maintainer must review it before exact dates are calculated.","outside_coverage":"The count goes beyond the period the calendar is vouched for.","no_working_days":"The calendar has no working days to count.","invalid_rule":"The rule is incomplete or invalid.","source_missing":"The date to count from is empty.","source_invalid":"The date to count from is not a valid date.","lands_on_non_working_day":"The result is a day that does not count.","calendar_days_fallback":"No usable calendar: calendar days were counted instead (an earlier date).","unknown":"The date could not be calculated."},"history":{"versions":"Versions","noVersions":"No version published yet.","version":"Version {{version}}","current":"in use","audit":"History","entriesCount_one":"{{count}} entry","entriesCount_other":"{{count}} entries"},"events":{"created":"Calendar created","details_changed":"Details changed","maintainer_changed":"Maintainer changed","draft_started":"Correction started","draft_changed":"Working week or coverage changed","days_added":"Days added","day_removed":"Day removed","published":"Version published","reviewed":"Reviewed","draft_discarded":"Correction discarded","archived":"Archived","restored":"Restored"},"errors":{"notFound":"That calendar was not found.","forbidden":"Only an administrator or this calendar's maintainer can do that.","maintainerNotMember":"The maintainer must be a member of this workspace.","maintainerRequired":"Name the person who maintains this calendar.","invalidTimezone":"That time zone is not recognised.","duplicateName":"Another calendar already has that name.","archived":"The calendar is archived. Restore it first.","noDraft":"Start a correction first.","invalidWeekdays":"Choose the working weekdays.","invalidCoverage":"The coverage ends before it starts.","invalidOrigin":"Unknown import origin.","invalidDays":"One of the entries is invalid (dates, kind, reason or source link).","firstDraftKept":"The first version cannot be discarded; publish it or archive the calendar.","changeNoteRequired":"Say what changed and from which source.","noWorkingWeekdays":"A calendar needs at least one working weekday.","coverageRequired":"Set the period this calendar is vouched for before publishing.","notPublished":"Publish a first version before recording a review.","versionImmutable":"A published version cannot be changed; start a correction.","auditImmutable":"History cannot be changed.","recordNotFound":"That record was not found.","recordNotWritable":"You cannot change this record.","manualReasonRequired":"Give the reason for a different date.","nothingToConfirm":"There is no calculated date to confirm.","unexpected":"Something went wrong. Try again."},"rule":{"toggle":"Calculate this date from a business calendar","toggleHint":"The platform proposes the date from another date of the record; a person confirms it.","noCalendars":"There is no business calendar yet.","manageCalendars":"Manage business calendars","calendar":"Calendar","chooseCalendar":"Choose a calendar","from":"Count from","chooseField":"Choose a date field","amount":"How many","unit":"Unit","direction":"Direction","count":"Start day","adjust":"If it lands on a day that does not count","confirmation":"A person confirms the date","confirmationHint":"The date shows as proposed until someone who can change the record confirms it or enters another with a reason.","writeHint":"Calculated at every save, by any writer (forms, imports, workflows, API). A calendar corrected later never rewrites a stored date.","previewFrom":"Try with","previewRun":"Preview","issues":{"calendar_required":"Choose a calendar.","source_required":"Choose the date to count from.","source_not_a_date":"The field to count from must be a date.","source_is_self":"A date cannot count from itself.","amount_out_of_range":"Use a whole number from 0 to 1,000.","unsupported_unit":"That unit is not supported.","unsupported_month_end_policy":"That end-of-month rule is not supported. Use the last day of the month."}},"record":{"title":"Calculated dates","confirmed":"Confirmed","confirmedManual":"Confirmed (entered by hand)","notCalculated":"Not calculated","proposed":"Proposed — needs confirmation","calculated":"Calculated","confirmedAt":"Confirmed on {{date}}","calendarChanged":"The calendar now gives {{date}} (version {{version}}).","calendarChangedHint":"The stored date was not changed. Confirm the new date if it applies.","useRecalculated":"Use {{date}}","confirm":"Confirm {{date}}","enterDifferent":"Enter a different date","manualDate":"Date","manualReason":"Reason","manualSave":"Confirm this date"},"monthEnd":{"policy":"End of month","clamp":"When that day does not exist in the target month, the date is the last day of that month."},"samples":{"title":"Examples","common":"31 January {{year}} plus one calendar month is {{raw}}","leap":"31 January {{year}} plus one calendar month is {{raw}} (leap year)","back":"31 March {{year}} minus one calendar month is {{raw}}","two":"30 January {{year}} plus two calendar months is {{raw}}","configured":"{{amount}} calendar months {{direction}} {{anchor}} is {{raw}}","beforeAdjustment":"These dates are the calendar month, before a non-working day is moved to a working day."},"deadline":{"calendarMonths_one":"Due {{count}} calendar month after the step starts","calendarMonths_other":"Due {{count}} calendar months after the step starts","calendarMonthsAfterField_one":"Due {{count}} calendar month after {{field}}","calendarMonthsAfterField_other":"Due {{count}} calendar months after {{field}}"}},"record-reminders":{"entityLink":"Reminders","page":{"title":"Reminders · {{entity}}","description":"Remind people about the dates on these records — independently of any workflow.","back":"Back to {{entity}}","noDateFields":"This entity has no date fields yet. Add a date field in the entity designer to remind people about it.","empty":"No reminders on these records yet.","adminOnly":"An administrator configures reminders."},"policy":{"enabled":"On","disabled":"Off","calculatedDate":"calculated date","sentence":"Remind {{who}} {{when}} {{field}}, at {{time}} ({{timezone}}).","skipSentence":"Not while {{field}} is {{values}}.","counts":"{{pending}} scheduled · {{fired}} sent · {{failed}} failed","noRecipients_one":"{{count}} reached nobody","noRecipients_other":"{{count}} reached nobody","edit":"Edit","new":"New reminder"},"editor":{"editTitle":"Edit reminder","newTitle":"New reminder","name":"Name","namePlaceholder":"What people will see in the notification","dateField":"Date field","when":"When","amount":"How many","unit":"Days","direction":"Before or after","removeOffset":"Remove this time","addOffset":"Add another time","calendar":"Business calendar","chooseCalendar":"Choose a calendar (needed for business days)","noCalendar":"No calendar (calendar days)","fireTime":"At","timezone":"Time zone","who":"Who","recipientKind":"Recipient","removeRecipient":"Remove recipient","addRecipient":"Add recipient","whoHint":"Recipients are decided when the reminder is sent: current members who can see the record. Nobody outside its access receives it.","condition":"Condition","conditionToggle":"Do not remind while a field has one of these values","conditionField":"Field","conditionValues":"Values","conditionValuesPlaceholder":"For example: done, cancelled","enabled":"On","save":"Save reminder","cancel":"Cancel"},"recipients":{"roleNamed":"role {{role}}","someone":"someone","userFieldNamed":"the person in {{field}}","assigneeComing":"available with record assignment","kinds":{"role":"Everyone with a role","member":"A member","user_field":"The person named in a field","record_creator":"Whoever created the record","record_assignee":"The record's assignee"}},"offsets":{"onTheDay":"on the day of","describe":"{{count}} {{unit}} {{direction}}"},"units":{"calendar_days_one":"calendar day","calendar_days_other":"calendar days","business_days_one":"business day","business_days_other":"business days"},"directions":{"before":"before","after":"after"},"issues":{"name_required":"Give the reminder a name.","date_field_required":"Choose the date field.","offsets_required":"Add at least one time (up to ten).","offset_out_of_range":"Use a whole number of days from 0 to 365.","calendar_required":"Business days need a business calendar.","recipients_required":"Add at least one recipient (up to ten).","recipient_incomplete":"Complete every recipient.","condition_incomplete":"Choose the field and at least one value, or turn the condition off.","fire_time_invalid":"Use a time such as 09:00."},"status":{"pending":"Scheduled","claimed":"Sending","fired":"Sent","cancelled":"Cancelled","skipped":"Not sent","failed":"Failed, retrying"},"record":{"title":"Reminders","openMine":"My reminders","calendarWarning":"Calendar not reviewed"},"mine":{"title":"My reminders","description":"Reminders sent to you in this workspace, and those coming up on records you can see.","received":"Sent to you","receivedEmpty":"Nothing waiting for you.","dueOn":"Date: {{date}}","late":"Sent late","openRecord":"Open the record","acknowledge":"Done","snooze":"Remind me later","snoozeChoices":{"hour":"In an hour","tomorrow":"Tomorrow","threeDays":"In three days","week":"In a week"},"upcoming":"Coming up","upcomingEmpty":"Nothing scheduled.","firesOn":"On {{date}}"},"errors":{"notFound":"That was not found.","forbidden":"You cannot do that.","notADateField":"Reminders need a date or date-time field.","nameRequired":"Give the reminder a name.","invalidOffsets":"Each time needs a whole number of days from 0 to 365, before or after.","calendarRequired":"Business days need a business calendar.","calendarNotFound":"That calendar is not in this workspace.","invalidTimezone":"That time zone is not recognised.","recipientsRequired":"Add at least one recipient.","invalidRecipient":"A recipient is incomplete or not a member of this workspace.","invalidCondition":"The condition needs a field of this entity and at least one value.","invalidOutcome":"Unknown reminder outcome.","notFired":"This reminder has not been sent yet.","notSnoozable":"This reminder cannot be snoozed now.","invalidSnooze":"Snooze for up to 30 days.","auditImmutable":"History cannot be changed.","unexpected":"Something went wrong. Try again."}}}