export const en = {
  app: {
    title: "kodex",
    subtitle: "staff console",
  },
  nav: {
    operations: "Operations",
    projectManagement: "Project management",
    platform: "Platform",
    missionControl: "Mission Control",
    projects: "Projects",
    projectDetails: "Project details",
    repositories: "Repositories",
    members: "Members",
    runs: "Runs",
    runtimeDeployTasks: "Build & Deploy",
    waitQueue: "Wait queue",
    approvals: "Approvals",
    users: "Users",
    systemSettings: "System settings",
  },
  common: {
    back: "Back",
    copy: "Copy",
    copied: "Copied",
    refresh: "Refresh",
    restart: "Restart",
    stop: "Stop",
    save: "Save",
    close: "Close",
    doNotShowAgain: "Don't show again",
    notImplementedYet: "Not implemented yet.",
    saved: "Saved",
    cancel: "Cancel",
    delete: "Delete",
    deleted: "Deleted",
    comingSoon: "Coming soon",
    createOrUpdate: "Create / Update",
    attachEnsureWebhook: "Attach + Ensure Webhook",
    loading: "Loading...",
    logout: "Logout",
    loginWithGitHub: "Login with GitHub",
    id: "ID",
    reset: "Reset",
    expand: "Expand",
    collapse: "Collapse",
  },
  context: {
    allObjects: "All objects",
    projectNotSelected: "Project not selected",
    project: "Project",
  },
  nextStep: {
    loading: "Checking the transition and calculating label changes...",
    confirm: "Start step",
    executeSuccess: "The next step has been started.",
    fields: {
      repository: "Repository",
      thread: "GitHub thread",
      actionKind: "Action kind",
      targetLabel: "Target label",
    },
    actionKinds: {
      issue_stage_transition: "Issue stage transition",
      pull_request_label_add: "Pull request label add",
    },
    thread: {
      issue: "Issue",
      pullRequest: "PR",
    },
    labels: {
      removed: "Will be removed",
      added: "Will be added",
      final: "Final label set",
      empty: "No changes",
    },
    variants: {
      revise: {
        title: "🔁 Revise current stage",
        description: "The platform will remove current run labels from the Issue and start the revise iteration for the selected stage.",
      },
      full_flow: {
        title: "🧭 Full flow",
        description: "Transition to the next stage of the full delivery flow for large initiatives and new services.",
      },
      shortened_flow: {
        title: "⚡ Shortened flow",
        description: "Transition to the next stage of the shortened flow for an existing service or product enhancement.",
      },
      very_short_flow: {
        title: "🚀 Very short flow",
        description: "Transition to the next stage of the quick-fix trajectory with the smallest stage set.",
      },
      full_or_shortened_flow: {
        title: "🧭 Full or shortened flow",
        description: "This step is valid for both the full and the shortened delivery flow.",
      },
      full_or_very_short_flow: {
        title: "🧭 Full or very short flow",
        description: "This step is valid for the full flow and for the very short quick-fix trajectory.",
      },
      shortened_or_very_short_flow: {
        title: "⚡ Shortened or very short flow",
        description: "This step is valid for the shortened feature flow and for the very short quick-fix trajectory.",
      },
      all_flows: {
        title: "🧭 Any delivery flow",
        description: "This step is valid across all main delivery flows and leads to the common next stage.",
      },
      reviewer: {
        title: "🔎 Start reviewer",
        description: "The platform will add `need:reviewer` to the PR and start reviewer without changing Issue run labels.",
      },
      rethink: {
        title: "♻️ Rethink the task",
        description: "The platform will remove current run labels and start a rethink pass before choosing a new trajectory.",
      },
      doc_audit: {
        title: "📚 Start doc-audit",
        description: "The platform will switch the Issue to documentation, traceability, and codebase consistency audit.",
      },
      self_improve: {
        title: "🧠 Start self-improve",
        description: "The platform will switch the Issue to prompts, instructions, and platform tools improvement.",
      },
      prepare_plan: {
        title: "🗂 Prepare plan/remediation",
        description: "The platform will switch the Issue to remediation planning after an audit or problem analysis.",
      },
      go_to_dev: {
        title: "🛠 Move to fixes",
        description: "The platform will switch the Issue to implementing fixes and preparing code or documentation changes.",
      },
      go_to_qa: {
        title: "🧪 Verify fixes",
        description: "The platform will switch the Issue to validating prepared changes and regression scenarios.",
      },
      restart_full: {
        title: "🧭 Full flow restart",
        description: "The platform will restart the work on the full trajectory beginning with `run:intake`.",
      },
      restart_shortened: {
        title: "⚡ Shortened flow restart",
        description: "The platform will restart the work on the shortened feature flow beginning with `run:prd`.",
      },
      restart_very_short: {
        title: "🚀 Very short flow restart",
        description: "The platform will restart the work on the quick-fix trajectory beginning with `run:plan`.",
      },
    },
  },
  notifications: {
    title: "Notifications",
    items: {
      sample1: { title: "MCP approval requested", subtitle: "Tool: github, action: create.pull_request" },
      sample2: { title: "Run waiting", subtitle: "wait_state = owner_review" },
    },
  },
  scaffold: {
    metrics: {
      total: "Total",
      filtered: "Filtered",
      updatedAt: "Updated",
    },
    filters: {
      search: "Search",
    },
    table: {
      settings: "Table settings",
      density: "Density",
      densityDefault: "Default",
      densityComfortable: "Comfortable",
      densityCompact: "Compact",
      columns: "Columns",
    },
    states: {
      errorTitle: "Failed to load",
      errorText: "This is a scaffold error state. Use Retry to re-run loading.",
      emptyTitle: "No results",
      emptyText: "No rows match current filters.",
      noRows: "No rows.",
    },
    actions: {
      retry: "Retry",
      clearFilters: "Clear filters",
    },
    rowActions: {
      view: "View",
      edit: "Edit",
      delete: "Delete",
    },
  },
  table: {
    fields: {
      name: "Name",
      namespace: "Namespace",
      status: "Status",
      age: "Age",
      part_of: "Part of",
      keys: "Keys",
      type: "Type",
      volume: "Volume",
      capacity: "Capacity",
      accessModes: "Access",
      storageClass: "StorageClass",
      ready: "Ready",
      updated: "Updated",
      restarts: "Restarts",
      completions: "Completions",
      duration: "Duration",
      kind: "Kind",
      key: "Key",
      description: "Description",
      created_at: "Created at",
      started_at: "Started at",
      finished_at: "Finished at",
      wait_since: "Waiting since",
      dominant_wait: "Dominant wait",
      next_step: "Next step",
      trigger_kind: "Trigger kind",
      agent_key: "Agent",
      wait_state: "Wait state",
      project: "Project",
      run: "Run",
      tool_name: "Tool",
      tool: "Tool",
      action: "Action",
      scope: "Scope",
      approver: "Approver",
      outcome: "Outcome",
      requested_by: "Requested by",
      actor: "Actor",
      object: "Object",
      env: "Env",
      correlation_id: "Correlation",
      code: "Code",
      is_default: "Default",
      limits: "Limits",
      mode: "Mode",
      job_namespace: "Job namespace",
      job_name: "Job",
      target_env: "Target env",
      runtime_mode: "Runtime mode",
      build_ref: "Build ref",
      updated_at: "Updated at",
      slot_no: "Slot",
      repository_full_name: "Repository",
      services_yaml_path: "services.yaml path",
      attempts: "Attempts",
      operation_class: "Operation",
      last_error: "Last error",
      stage: "Stage",
      level: "Level",
      message: "Message",
      repository: "Repository",
      tag: "Tag",
      digest: "Digest",
      config_size_bytes: "Config size",
    },
  },
  cluster: {
    namespace: "Namespace",
    mode: {
      viewOnly: "view-only",
      dryRun: "dry-run",
      normal: "normal",
    },
    modeHint: {
      viewOnly: "Read-only mode. Create/update/delete actions must be disabled.",
      dryRun: "Dry-run mode. Actions exist for dogfooding, but backend must not apply destructive changes.",
      normal: "Normal mode (future).",
    },
    details: {
      title: "Resource",
      scaffoldNote: "Scaffold resource page. Backend integration is not implemented yet.",
      tabs: {
        overview: "Overview",
        yaml: "YAML",
        events: "Events",
        related: "Related",
        logs: "Logs",
      },
      metrics: {
        status: "Status",
        age: "Age",
        mode: "Mode",
      },
      previewTitle: "Action preview",
      viewOnlyWarning: "view-only mode: destructive actions are disabled.",
      dryRunWarning: "dry-run mode: backend must not apply destructive changes.",
      dryRunOk: "dry-run OK, but action is forbidden in this mode.",
      deleteNotImplemented: "Delete is not implemented yet.",
    },
  },
  roles: {
    read: "read",
    readWrite: "read_write",
    admin: "admin",
  },
  bool: {
    true: "true",
    false: "false",
  },
  placeholders: {
    projectSlug: "kodex",
    projectName: "kodex",
    // vue-i18n treats `@` as a linked-message marker, so we must use literal interpolation.
    userEmail: "user{'@'}example.com",
    repoOwner: "kodex",
    repoName: "kodex",
    servicesYamlPath: "services.yaml",
    repoToken: "ghp_... / fine-grained token",
  },
  states: {
    accessRequiredTitle: "Access required",
    accessRequiredText:
      "This console is protected by GitHub OAuth. Ask your admin to allow your email before first login.",
    noProjects: "No projects yet. Trigger a webhook run first.",
    noRuns: "No runs yet.",
    noUsers: "No users.",
    noMembers: "No members.",
    noRepos: "No repositories attached yet.",
    noEvents: "No events.",
    noLearningFeedback: "No learning feedback.",
    noPendingApprovals: "No pending approvals.",
    noWaitQueue: "Wait queue is empty.",
    noRunLogs: "No run logs yet.",
    noRuntimeDeployTasks: "No runtime deploy tasks found.",
    noWaitQueueByFilters: "No waiting runs for current filters.",
    noData: "No data.",
  },
  runs: {
    timeline: {
      title: "Timeline",
      created: "Created",
      buildDeploy: "Build & Deploy",
      started: "Started",
      authResolved: "Codex Auth Resolved",
      agentReady: "Agent Ready",
      waiting: "Waiting",
      finished: "Finished",
      waitState: "wait_state",
      status: "status",
      buildFailed: "Finished before agent handoff",
      events: {
        workerHeartbeatMissed: "Worker heartbeat missed",
        workerHeartbeatMissedWithActor: "Worker heartbeat missed · {actorId}",
        staleLeaseDetected: "Stale lease detected",
        staleLeaseDetectedWithActor: "Stale lease detected · {actorId}",
        staleLeaseReleased: "Stale lease released",
        staleLeaseReleasedWithActor: "Stale lease released · {actorId}",
        leaseReclaimedAfterStale: "Lease reclaimed after stale lease",
        leaseReclaimedAfterStaleWithActor: "Lease reclaimed after stale lease · {actorId}",
      },
    },
    waits: {
      waitStates: {
        waitingBackpressure: "GitHub backpressure",
      },
      waitReasons: {
        githubRateLimit: "GitHub rate limit",
      },
      contours: {
        platformPat: "Platform PAT",
        agentBotToken: "Agent bot token",
      },
      limitKinds: {
        primary: "Primary limit",
        secondary: "Secondary limit",
      },
      operationClasses: {
        runStatusComment: "Service-comment update",
        issueLabelTransition: "Stage label transition",
        repositoryProviderCall: "Platform GitHub call",
        agentGithubCall: "Agent GitHub call",
      },
      states: {
        open: "Open",
        autoResumeScheduled: "Auto-resume scheduled",
        autoResumeInProgress: "Auto-resume in progress",
        resolved: "Resolved",
        manualActionRequired: "Manual action required",
        cancelled: "Cancelled",
      },
      confidence: {
        deterministic: "Deterministic",
        conservative: "Conservative",
        providerUncertain: "Provider uncertain",
      },
      hints: {
        rateLimitReset: "Wait for reset",
        retryAfter: "Wait for Retry-After",
        exponentialBackoff: "Wait with backoff",
        manualOnly: "Manual path only",
      },
      hintSources: {
        resetAt: "Source: x-ratelimit-reset",
        retryAfter: "Source: Retry-After",
        providerUncertain: "Source: provider uncertain",
      },
      manualActions: {
        requeuePlatformOperation: "Requeue platform operation",
        resumeAgentSession: "Resume agent session",
        retryAfterOperatorReview: "Retry after operator review",
      },
      commentMirror: {
        synced: "Comment mirror synced",
        pendingRetry: "Comment mirror pending retry",
        notAttempted: "Comment mirror not attempted",
      },
      realtime: {
        waitEntered: "Run entered wait",
        waitUpdated: "Wait updated",
        waitResolved: "Wait resolved",
        waitManualActionRequired: "Manual action required",
        resolutions: {
          autoResumed: "Auto-resumed",
          manuallyResolved: "Manually resolved",
          cancelled: "Cancelled",
        },
      },
    },
  },
  logs: {
    title: "Logs",
    follow: "Follow",
    download: "Download",
    status: "Status",
    updatedAt: "Updated",
    lines: "Lines",
    search: "Search in logs",
    noLines: "No log lines.",
  },
  runtimeErrors: {
    open: "Open",
    dismiss: "Dismiss",
    levels: {
      error: "Platform error",
      warning: "Platform warning",
      critical: "Platform critical error",
    },
  },
  pages: {
    missionControl: {
      title: "Mission Control",
      hint: "Graph-first workspace for continuity across discussions, work items, runs, and pull requests.",
      refreshNow: "Refresh now",
      freshness: "Freshness",
      realtime: "Realtime",
      listProjection: "Open list projection",
      primaryWorkspace: "Primary workspace",
      graphTitle: "Graph workspace",
      listTitle: "List projection",
      filterLabel: "Active-state preset",
      searchLabel: "Search the graph workspace",
      viewModes: {
        graph: "Graph",
        list: "List",
      },
      fixedFilters: {
        openScope: "open_only",
        assignmentScope: "assigned_to_me_or_unassigned",
      },
      freshnessStates: {
        fresh: "fresh",
        stale: "stale",
        degraded: "degraded",
        unknown: "unknown",
      },
      realtimeStates: {
        connecting: "connecting",
        connected: "connected",
        reconnecting: "reconnecting",
        disconnected: "disconnected",
      },
      summary: {
        roots: "Root groups",
        nodes: "Nodes",
        blocking_gaps: "Blocking gaps",
        warning_gaps: "Warning gaps",
        recent_closed_context: "Recent closed",
        review: "Review",
      },
      summaryHints: {
        roots: "Root initiatives present in the current snapshot.",
        nodes: "How many graph nodes are visible in the workspace.",
        blocking_gaps: "Continuity gaps that block the next stage step.",
        warning_gaps: "Non-blocking continuity signals that still need attention.",
        recent_closed_context: "Dimmed recent-closed context kept only for graph integrity.",
        review: "Nodes currently sitting in review state.",
      },
      filters: {
        all_active: "All active",
        working: "Working",
        waiting: "Waiting",
        blocked: "Blocked",
        review: "Review",
        recent_critical_updates: "Recent critical updates",
      },
      states: {
        working: "Working",
        waiting: "Waiting",
        blocked: "Blocked",
        review: "Review",
        recent_critical_updates: "Critical updates",
        archived: "Archived context",
      },
      nodeKinds: {
        discussion: "Discussion",
        work_item: "Work item",
        run: "Run",
        pull_request: "Pull request",
      },
      visibility: {
        primary: "Primary",
        secondary_dimmed: "Secondary / dimmed",
      },
      continuity: {
        complete: "Continuity complete",
        missing_run: "Missing run",
        missing_pull_request: "Missing pull request",
        missing_follow_up_issue: "Missing follow-up issue",
        stale_provider: "Provider stale",
        out_of_scope: "Out of scope",
      },
      coverage: {
        open_primary: "Open primary scope",
        recent_closed_context: "Recent closed context",
        out_of_scope: "Out of scope",
      },
      badges: {
        continuity_gap: "Continuity gap",
        provider_stale: "Provider stale",
        recent_closed_context: "Recent closed context",
        waiting_mcp: "Waiting MCP",
        review_required: "Review required",
      },
      watermarks: {
        provider_freshness: "Provider freshness",
        provider_coverage: "Provider coverage",
        graph_projection: "Graph projection",
        launch_policy: "Launch policy",
      },
      gapSeverity: {
        blocking: "Blocking",
        warning: "Warning",
        info: "Info",
      },
      gapKinds: {
        missing_run: "Missing run",
        missing_pull_request: "Missing pull request",
        missing_follow_up_issue: "Missing follow-up issue",
        provider_out_of_scope: "Provider out of scope",
        provider_stale: "Provider stale",
        orphan_node: "Orphan node",
      },
      launchSurfaces: {
        preview_next_stage: "Read-only next-stage preview",
        open_linked_pull_request: "Open linked pull request",
        open_linked_follow_up_issue: "Open linked follow-up issue",
        open_provider_context: "Open provider context",
        inspect_run_context: "Inspect run context",
      },
      providerLinks: {
        "provider.open_issue": "Open issue in provider",
        "provider.open_pr": "Open pull request in provider",
        "provider.review": "Open review in provider",
        "provider.merge": "Open merge flow in provider",
        "provider.reply_comment": "Open discussion in provider",
      },
      columns: {
        kind: "Kind",
        title: "Title",
        state: "State",
        continuity: "Continuity",
        visibility: "Visibility",
        root: "Root",
        updated: "Updated",
      },
      rootsVisible: "{count} root groups shown out of {total}.",
      groupNodes: "{count} nodes",
      columnIndex: "Column {value}",
      blockingGap: "Blocking gap",
      lastActivity: "Last activity",
      emptyTitle: "The graph workspace is empty",
      emptyText: "Try another active preset or refresh once a new continuity chain appears.",
      loadMore: "Load more root groups",
      alerts: {
        invalidateTitle: "Snapshot marked outdated",
        invalidateText: "Realtime requested a refresh. Reason: {reason}. Scope: {scope}. Affected nodes: {count}.",
        staleTitle: "Snapshot is stale",
        staleText: "The graph is still readable, but continuity and preview may have changed. Reason: {reason}. Since: {since}.",
        snapshotStaleText: "This snapshot was loaded in stale mode. Refresh before reviewing continuity or preview.",
        degradedTitle: "Realtime degraded",
        degradedText: "Realtime switched to degraded mode. Reason: {reason}. Fallback: {fallback}. Affected capabilities: {capabilities}.",
        snapshotDegradedText: "The snapshot is degraded. Check watermarks and switch to list projection if needed.",
        resyncTitle: "Resync required",
        resyncText: "The resume token is no longer valid. Reason: {reason}. Dropped events: {dropped}. A new snapshot is required.",
        errorTitle: "Realtime error",
        errorText: "Realtime returned code {code}: {message}. Explicit refresh remains available.",
      },
      relatedSections: {
        formalizations: "Formalization targets",
        linkedRuns: "Linked runs",
        followUpIssues: "Follow-up issues",
        linkedPullRequests: "Linked pull requests",
        producedIssues: "Produced issues",
        linkedIssues: "Linked issues",
      },
      sidePanel: {
        placeholder: "Select a node to inspect continuity details, activity, and launch preview.",
        overview: "Overview",
        nodeId: "Node ID",
        rootId: "Root node ID",
        projectionVersion: "Projection version",
        providerRef: "Provider reference",
        lastActivity: "Last activity",
        repository: "Repository",
        issueNumber: "Issue",
        stageLabel: "Stage label",
        lastProviderSync: "Last provider sync",
        discussionKind: "Discussion kind",
        status: "Status",
        author: "Author",
        participants: "Participants",
        latestComment: "Latest comment",
        labels: "Labels",
        assignees: "Assignees",
        runId: "Run ID",
        agentKey: "Agent key",
        runStatus: "Run status",
        runtimeMode: "Runtime mode",
        triggerLabel: "Trigger label",
        buildRef: "Build ref",
        candidateNamespace: "Candidate namespace",
        startedAt: "Started at",
        finishedAt: "Finished at",
        pullRequestNumber: "Pull request",
        branchHead: "Head branch",
        branchBase: "Base branch",
        mergeState: "Merge state",
        reviewDecision: "Review decision",
        checksSummary: "Checks summary",
        continuity: "Continuity gaps",
        noContinuityGaps: "No persisted continuity gaps were returned for this node.",
        watermarks: "Watermarks",
        noWatermarks: "No node-level watermarks were returned.",
        linkedArtifacts: "Linked artifacts",
        adjacentNodes: "Adjacent nodes",
        noLinkedArtifacts: "No linked artifacts or adjacent nodes were returned.",
        activity: "Activity / chat",
        noActivity: "The activity stream is empty.",
        openProviderEvent: "Open provider event",
        loadMoreActivity: "Load more activity",
        launchSurfaces: "Launch surfaces",
        noLaunchSurfaces: "No launch surfaces are currently available.",
        ownerReviewRequired: "Owner review will still be required before execution.",
        noApprovalRequired: "No extra approval is needed for the preview.",
        providerLinks: "Provider links",
        noProviderLinks: "No provider deep links are available.",
      },
      preview: {
        title: "Launch preview",
        loading: "Building read-only preview...",
        readOnlyTitle: "Read-only preview",
        readOnlyText: "This screen does not submit to the command ledger and only shows the expected label diff and continuity effect.",
        fields: {
          node: "Node",
          thread: "Thread",
          targetLabel: "Target label",
          approval: "Approval",
        },
        threadKind: {
          issue: "Issue",
          pull_request: "Pull request",
        },
        ownerReviewRequired: "Owner review required",
        noApprovalRequired: "No extra approval required",
        labels: {
          removed: "Removed labels",
          added: "Added labels",
          final: "Final labels",
        },
        resolvedGaps: "Resolved gaps",
        remainingGaps: "Remaining gaps",
        resultingNodes: "Resulting nodes",
        providerRedirects: "Provider redirects",
        openRedirect: "Open redirect",
        open: "Open preview",
        empty: "No data",
      },
    },
    projects: {
      title: "Projects",
      createTitle: "Create / Update Project",
      createProject: "Create project",
      editProject: "Edit project",
      makeCurrent: "Make current",
      slug: "Slug",
      name: "Name",
      role: "Role",
      manage: "Manage",
      id: "ID",
      repos: "Repos",
      members: "Members",
      adminOnlyHint: "Only platform admins can create projects and manage repos/members.",
    },
    users: {
      title: "Users",
      editTitle: "Edit user",
      addAllowedUser: "Add Allowed User",
      addAllowedUserHint:
        "Registration is disabled. Adding an email here allows first GitHub OAuth login for that email.",
      email: "Email",
      github: "GitHub",
      admin: "Admin",
      platformAdmin: "Platform admin",
      yes: "yes",
      no: "no",
    },
    runs: {
      title: "Runs",
      status: "Status",
      project: "Project",
      issue: "Issue",
      pr: "PR",
      triggerKind: "Trigger kind",
      triggerLabel: "Trigger label",
      correlation: "Correlation",
      created: "Created",
      started: "Started",
      finished: "Finished",
      details: "Details",
      id: "ID",
      prevPage: "Prev",
      nextPage: "Next",
      pageInfo: "Page {current} of {total}",
      pendingApprovals: "Pending approvals",
      waitQueue: "Wait queue",
      waitQueueHint: "Runs blocked by external action: MCP approval or owner review.",
      showFilters: "Show filters",
      hideFilters: "Hide filters",
      applyFilters: "Apply",
      resetFilters: "Reset",
      activeFilters: "Filters: {count}",
      triggerKindPlaceholder: "e.g. dev, qa, release",
      statusPlaceholder: "e.g. running, pending, failed",
      agentKeyPlaceholder: "e.g. developer, reviewer",
      waitStatePlaceholder: "e.g. mcp, owner_review",
      waitsFiltersHint: "For wait queue, start with wait_state = mcp or owner_review.",
      agentKey: "Agent",
      waitState: "Wait state",
      waitSince: "Waiting since",
      waitSla: "SLA",
      lastHeartbeatAt: "Last heartbeat",
      tool: "Tool",
      action: "Action",
      requestedBy: "Requested by",
      resolve: "Decision",
      approve: "Approve",
      deny: "Deny",
      reasonPrompt: "Reason (optional)",
    },
    runDetails: {
      title: "Run Details",
      runId: "run_id",
      correlation: "correlation_id",
      project: "Project",
      issue: "Issue",
      pr: "PR",
      triggerKind: "Trigger kind",
      triggerLabel: "Trigger label",
      job: "Job",
      jobNamespace: "Job namespace",
      noJob: "Job not found",
      flowEvents: "Flow Events",
      learningFeedback: "Learning Feedback",
      cancelRun: "Stop run",
      cancelRunConfirm: "Cancel this run and stop related runtime artifacts?",
      runCanceled: "run canceled",
      runAlreadyTerminal: "run was already terminal",
      runCanceledWaits: "Canceled GitHub waits: {count}",
      deleteNamespace: "Delete namespace",
      deleteNamespaceConfirm: "Force delete namespace for this run?",
      namespace: "namespace",
      namespaceDeleted: "deleted",
      namespaceAlreadyDeleted: "already deleted",
      waitState: "wait_state",
      waitReason: "wait_reason",
      agentKey: "agent_key",
      waitSince: "wait_since",
      lastHeartbeatAt: "last_heartbeat_at",
      realtime: "Realtime",
      realtimeConnecting: "connecting",
      realtimeConnected: "connected",
      realtimeReconnecting: "reconnecting",
      runLogs: "Run logs",
      logsUpdatedAt: "updated at",
      rawLogsSnapshot: "Raw JSON snapshot",
      loadEventPayloads: "Load event payloads",
      eventPayloadLoaded: "Event payloads loaded",
      loadSnapshot: "Load snapshot",
      snapshotLoaded: "Snapshot loaded",
      codexAuthRequiredTitle: "Codex authorization required",
      codexAuthRequiredBadge: "AUTH",
      codexAuthRequiredText:
        "This run is waiting for Codex device-code authorization. Open the link, enter the code, then wait for the run to continue.",
      codexAuthUserCode: "Code",
      codexAuthVerificationUrl: "Link",
      codexAuthOpenPage: "Open authorization page",
      codexAuthSecurityHint: "Do not share the code. Authorize only if you initiated this run.",
      waitProjectionTitle: "Wait visibility",
      dominantWaitTitle: "Dominant wait",
      relatedWaitsTitle: "Related waits",
      realtimeWaitActivity: "Realtime wait updates",
      realtimeWaitEmpty: "Realtime wait events will appear here after the next projection change.",
      waitProjectionPending: "The run is already in waiting_backpressure, but the typed wait projection has not arrived in the staff API yet.",
      waitId: "wait_id",
      waitEnteredAt: "entered_at",
      resumeNotBefore: "resume_not_before",
      suggestedNotBefore: "suggested_not_before",
      recoveryHintSource: "Recovery hint source",
    },
    projectDetails: {
      title: "Project Details",
      projectId: "project_id",
      slug: "Slug",
      name: "Name",
    },
    projectRepositories: {
      title: "Project Repositories",
      projectId: "project_id",
      provider: "Provider",
      repo: "Repo",
      servicesYaml: "services.yaml",
      bot: "Bot",
      botParams: "Bot params",
      botParamsTitle: "Bot parameters (token/login/email)",
      botUsername: "Bot username",
      botEmail: "Bot email",
      botToken: "Bot token",
      botTokenHint: "Leave empty to preserve the current bot token.",
      preflight: "Preflight",
      preflightTitle: "Repository preflight",
      runPreflight: "Run preflight",
      preflightUpdatedAt: "Preflight updated",
      preflightStatus: "Status",
      preflightChecks: "Checks",
      preflightRawReport: "Raw JSON report",
      check: "Check",
      status: "Status",
      details: "Details",
      docsetImport: "Docset import",
      docsetImportTitle: "Docset import (PR-based)",
      docsetSync: "Docset sync",
      docsetSyncTitle: "Safe docset sync (PR-based)",
      docsetLocale: "Locale",
      docsetRef: "Docset ref",
      docsetGroups: "Groups",
      docsetPrCreated: "PR created",
      externalId: "External ID",
      id: "ID",
      attachTitle: "Attach GitHub Repository",
      owner: "Owner",
      name: "Name",
      servicesYamlPath: "services.yaml path",
      repoToken: "Repo token (stored encrypted in DB)",
      deleteConfirmMessage:
        "Remove repository {repo} from the project? This will delete repository settings, preflight results, and related repository-scoped configs/secrets.",
    },
    projectMembers: {
      title: "Project Members",
      projectId: "project_id",
      addTitle: "Add Project Member",
      email: "Email",
      userId: "User ID",
      role: "Role",
      learningOverride: "Learning override",
      inherit: "inherit",
    },

    approvals: {
      title: "Approvals",
      hint: "Pending approvals and decisions (center).",
      filters: {
        tool: "Tool",
        action: "Action",
        requestedBy: "Requested by",
      },
      approve: "Approve",
      deny: "Deny",
      approveTitle: "Approve request",
      denyTitle: "Deny request",
      reason: "Reason (optional)",
    },
    runtimeDeployTasks: {
      title: "Build & Deploy",
      hint: "Full-env/runtime deploy tasks: status, params and detailed execution logs.",
      realtime: "Realtime",
      realtimeConnecting: "connecting",
      realtimeConnected: "connected",
      realtimeReconnecting: "reconnecting",
    },
    runtimeDeployTaskDetails: {
      title: "Deploy task details",
      summary: "Summary",
      logs: "Task logs",
      realtime: "Realtime",
      realtimeConnecting: "connecting",
      realtimeConnected: "connected",
      realtimeReconnecting: "reconnecting",
      cancelAction: "Cancel safely",
      stopAction: "Force stop",
      actionsGuideTitle: "Operator actions",
      actionsGuideIntro: "Use safe cancel first. Reserve force stop for a stuck active deploy when execution must be interrupted immediately.",
      cancelHelp: "Safe cancel lets the task finish its current step without forcing an abrupt stop.",
      stopHelp: "Force stop is an emergency action and stays available only while the task still has an active lease.",
      stopAvailabilityActive: "Force stop is available until {until}. Lease owner: {owner}.",
      stopAvailabilityExpired: "Force stop is unavailable because the lease expired at {until}.",
      stopAvailabilityMissing: "Force stop is unavailable because the task does not currently have an active lease.",
      cancelConfirm: "Send a normal safe cancel request for this deploy task.",
      stopConfirm: "Force-stop a stuck active deploy. Use this only when safe cancel is no longer enough.",
      actionReasonLabel: "Reason (optional)",
      actionReasonPlaceholder: "For example: deploy is stuck during apply and needs a manual stop",
      actionReasonHint: "The reason is stored in control-plane audit trail and shown in task details.",
      actionRequestedResult: "Action \"{action}\" has been sent. Current task status: {status}.",
      actionAlreadyTerminalResult: "The task is already terminal with status {status}. No extra action is needed.",
      cancelUnavailableError: "Safe cancel is no longer available because the task has already finished or changed state.",
      stopUnavailableError: "Force stop is no longer available because the task changed state or its lease expired.",
      terminalAudit: "Terminal audit",
      cancelAudit: "Safe cancel request",
      stopAudit: "Force-stop request",
    },
    waitQueue: {
      title: "Wait queue",
      hint: "Runs in wait-state: MCP/owner review and GitHub backpressure with contour attribution.",
      genericWait: "Detailed typed wait projection is not available for this run yet.",
    },
    auditLog: {
      title: "Audit log",
      hint: "Scaffold: filter-bar + mock rows.",
    },
    labelsStages: {
      title: "Labels & stages",
      hint: "Label policies and quick stage transition via GitHub deep-link.",
      transitionCardTitle: "Stage transition from GitHub",
      transitionCardHint: "Confirm run:* label transition. Backend removes current run:* labels and applies the target label.",
      repository: "Repository",
      issue: "Issue",
      targetLabel: "Target label",
      openIssue: "Open issue",
      applyTransition: "Apply transition",
      confirmTitle: "Confirm stage transition",
      confirmMessage: "Issue {issue}: apply label {label}?",
      transitionApplied: "Stage transition was applied successfully.",
      transitionInvalidQuery: "GitHub transition link is incomplete or invalid.",
      removedLabels: "Removed labels",
      addedLabels: "Added labels",
      finalLabels: "Final labels",
    },
    cluster: {
      namespaces: { title: "Namespaces", hint: "Scaffold: namespaces list (mock + TODO)." },
      configMaps: { title: "ConfigMaps", hint: "Scaffold: configmaps list (mock + TODO)." },
      secrets: { title: "Secrets", hint: "Scaffold: secrets list (metadata only; mock + TODO)." },
      deployments: { title: "Deployments", hint: "Scaffold: deployments list (mock + TODO)." },
      pods: { title: "Pods", hint: "Scaffold: pods list (mock + TODO)." },
      jobs: { title: "Jobs", hint: "Scaffold: jobs list (mock + TODO)." },
      pvc: { title: "PVC", hint: "Scaffold: persistent volume claims (mock + TODO)." },
    },
    systemSettings: {
      title: "System settings",
      hint: "DB-backed runtime settings with hot reload for long-lived pods and the staff UI.",
      realtime: "Realtime",
      realtimeConnecting: "connecting",
      realtimeConnected: "connected",
      realtimeReconnecting: "reconnecting",
      liveHint: "Changes are stored in PostgreSQL, versioned audit stays in control-plane, and worker/control-plane refresh snapshots without restart.",
      empty: "No system settings are registered yet.",
      enabled: "Enabled",
      disabled: "Disabled",
      noActor: "System",
      saveSuccess: "System setting saved.",
      resetSuccess: "System setting reset to catalog default.",
      fields: {
        currentValue: "Current value",
        defaultValue: "Default value",
        updatedAt: "Last updated",
        updatedBy: "Updated by",
        visibility: "Visibility",
        key: "Key",
      },
      sections: {
        github_rate_limit: "GitHub rate limit",
        quality_governance: "Quality governance",
      },
      sources: {
        default: "Catalog default",
        staff: "Overridden by staff",
      },
      reload: {
        hot_reload: "Hot reload",
        new_runs_only: "New runs only",
        restart_required: "Restart required",
      },
      visibility: {
        staff_visible: "Visible in staff UI",
        internal_only: "Internal only",
        secret_forbidden_in_ws: "Hidden from realtime",
      },
      settings: {
        github_rate_limit_wait_enabled: {
          title: "GitHub rate-limit wait recovery",
          description: "Controls the persisted wait contour, worker sweep, and deterministic replay/resume path for GitHub rate-limit resilience.",
        },
        quality_governance_enabled: {
          title: "Quality governance foundation",
          description: "Enables the canonical change-governance aggregate, hidden draft ingress, semantic wave publication, and projection refresh for new runs and live callbacks.",
        },
      },
    },
  },
  crumb: {
    missionControl: "Mission Control",
    projectDetails: "Project details",
    projectRepositories: "Project repositories",
    projectMembers: "Project members",
    runDetails: "Run details",
    runtimeDeployTasks: "Build & Deploy",
    runtimeDeployTaskDetails: "Deploy task details",
    waitQueue: "Wait queue",
    approvals: "Approvals",
    systemSettings: "System settings",
  },
  errors: {
    unknown: "Something went wrong.",
    network: "Network error. Please try again.",
    timeout: "Request timed out. Please try again.",
    realtimeUnavailable: "Realtime stream is unavailable. Retrying in background.",
    copyFailed: "Copy failed.",
    unauthorized: "Not authenticated.",
    forbidden: "Forbidden.",
    emailNotAllowed: "Your email is not allowed. Ask your admin to allow it.",
    invalidArgument: "Invalid input.",
    conflict: "Conflict.",
    failedPrecondition: "The operation is not allowed for the task in its current state.",
    platformAdminRequired: "Platform admin required.",
    platformOwnerRequired: "Platform owner required.",
    cannotDeleteSelf: "You cannot delete yourself.",
    cannotDeletePlatformAdmin: "You cannot delete a platform admin.",
    cannotRemovePlatformOwner: "You cannot remove the platform owner from a project.",
  },
  i18n: {
    enFlag: "🇺🇸",
    ruFlag: "🇷🇺",
  },
} as const;
