---
doc_id: MAP-CK8S-DOMAIN-RUNTIME-AND-FLEET
type: issue-map
title: kodex — карта Issue домена runtime и fleet
status: active
owner_role: KM
created_at: 2026-04-25
updated_at: 2026-06-11
---

# Карта Issue — runtime и контур серверов и кластеров

## TL;DR

Долгоживущая карта домена `runtime-and-fleet`. `runtime-manager` владеет слотами, workspace materialization и platform jobs. `fleet-manager` владеет серверами, Kubernetes-кластерами и placement scope. Agent `Run` принадлежит `agent-manager`, а не runtime.

## Матрица

| Issue/PR | Документы | Волна | Статус | Примечание |
|---|---|---|---|---|
| #655 | `docs/domains/runtime-and-fleet/product/requirements.md`, `docs/domains/runtime-and-fleet/architecture/design.md`, `docs/domains/runtime-and-fleet/architecture/data_model.md`, `docs/domains/runtime-and-fleet/architecture/api_contract.md`, `docs/domains/runtime-and-fleet/delivery/runtime_manager_delivery.md` | RTM-0 | готово | Доменная документация, границы runtime/fleet, карта Issue и план поставки. |
| #656 | `proto/kodex/runtime/v1/runtime_manager.proto`, `proto/gen/go/kodex/runtime/v1/**`, `specs/asyncapi/runtime-manager.v1.yaml`, `libs/go/platformevents/runtime/**`, `docs/domains/runtime-and-fleet/architecture/api_contract.md` | RTM-1 | готово | gRPC и AsyncAPI контракты `runtime-manager`, сгенерированные Go-контракты. |
| #657 | `services/internal/runtime-manager/**`, `docs/domains/runtime-and-fleet/architecture/data_model.md`, `docs/domains/runtime-and-fleet/delivery/runtime_manager_delivery.md` | RTM-2 | готово | Каркас сервиса, PostgreSQL-модель, миграции, repository, health/readiness и outbox. |
| #658 | `services/internal/runtime-manager/**`, `docs/domains/runtime-and-fleet/architecture/design.md` | RTM-3 | готово | Жизненный цикл слотов: reserve, extend lease, release, fail, чтения, идемпотентность, проверка версии агрегата и bootstrap-граница cluster. |
| #659 | `services/internal/runtime-manager/**`, `docs/domains/runtime-and-fleet/architecture/design.md` | RTM-4 | готово | Workspace materialization: source refs, access mode, local paths, fingerprint, ошибки подготовки, gRPC-ручки и события `runtime.workspace.*`. |
| #660 | `services/internal/runtime-manager/**`, `docs/domains/runtime-and-fleet/architecture/data_model.md`, `docs/domains/runtime-and-fleet/delivery/runtime_manager_delivery.md` | RTM-5 | готово | Platform job MVP: job/step state machine, short log tail, full log ref, runtime artifact refs, gRPC wiring и executor boundary. |
| #661 | `deploy/**`, `services.yaml`, `services/internal/runtime-manager/**`, `docs/domains/runtime-and-fleet/delivery/runtime_manager_delivery.md`, `docs/domains/runtime-and-fleet/ops/**` | RTM-6 | готово | Эксплуатационный контур: Dockerfile, manifests, DB bootstrap, migration job, runbook и monitoring. |
| #662 | `services/internal/runtime-manager/**`, `docs/domains/runtime-and-fleet/delivery/runtime_manager_delivery.md` | RTM-7 | готово | Политики очистки, пакетная очистка, prewarm pool, детерминированное переиспользование и видимость ошибок очистки. |
| #699 | `docs/domains/runtime-and-fleet/product/fleet_manager_requirements.md`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_design.md`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_data_model.md`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_api_contract.md`, `docs/domains/runtime-and-fleet/delivery/fleet_manager_delivery.md` | FLEET-0 | готово | Стартовый срез `fleet-manager`: границы runtime/fleet, MVP с несколькими серверами, scope и кластерами, bootstrap seed `platform-default`, будущие контракты и план поставки. |
| #708 | `proto/kodex/fleet/v1/fleet_manager.proto`, `proto/gen/go/kodex/fleet/v1/**`, `specs/asyncapi/fleet-manager.v1.yaml`, `libs/go/platformevents/fleet/**`, `libs/go/accesscatalog/**`, `docs/domains/runtime-and-fleet/README.md`, `docs/domains/runtime-and-fleet/product/fleet_manager_requirements.md`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_design.md`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_data_model.md`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_api_contract.md`, `docs/domains/runtime-and-fleet/delivery/fleet_manager_delivery.md` | FLEET-1 | готово | Контракты `fleet-manager`: gRPC, AsyncAPI, события `fleet.*`, Go-контракты и ключи действий доступа. |
| #714 | `services/internal/fleet-manager/**`, `services.yaml`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_data_model.md`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_api_contract.md`, `docs/domains/runtime-and-fleet/delivery/fleet_manager_delivery.md`, `docs/delivery/coordination/**` | FLEET-2 | готово | Сервисный каркас `fleet-manager`: конфигурация, gRPC process, health/readiness, metrics, PostgreSQL-модель, миграции, repository и outbox без registry/health/placement команд. |
| #717 | `services/internal/fleet-manager/**`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_data_model.md`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_api_contract.md`, `docs/domains/runtime-and-fleet/delivery/fleet_manager_delivery.md`, `docs/delivery/coordination/**` | FLEET-3 | готово | Registry-команды `fleet-manager`: несколько scope/server/cluster, bootstrap seed `platform-default`, проверки доступа, идемпотентность, optimistic concurrency, command result и outbox-события. |
| #726 | `services/internal/fleet-manager/**`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_design.md`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_data_model.md`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_api_contract.md`, `docs/domains/runtime-and-fleet/delivery/fleet_manager_delivery.md`, `docs/platform/architecture/secret_resolution.md`, `docs/delivery/coordination/**` | FLEET-4 | готово | Проверки связности Kubernetes API через `secretresolver`, health snapshots, чтения health, события `fleet.health.*`, command result и безопасная граница без сохранения kubeconfig. |
| #730 | `services/internal/fleet-manager/**`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_design.md`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_data_model.md`, `docs/domains/runtime-and-fleet/architecture/fleet_manager_api_contract.md`, `docs/domains/runtime-and-fleet/delivery/fleet_manager_delivery.md`, `docs/delivery/coordination/**` | FLEET-5 | готово | Правила размещения, базовый `ResolvePlacement`, журнал placement decisions, проверки доступа, идемпотентность и outbox-события `fleet.placement.*`. |
| #735 | `services/internal/runtime-manager/**`, `deploy/base/runtime-manager/**`, `deploy/base/postgres/secrets.yaml.tpl`, `bootstrap/host/config.env.example`, `services.yaml`, `docs/domains/runtime-and-fleet/**`, `docs/delivery/coordination/**` | RTM-FLEET-1 | готово | `runtime-manager` вызывает `fleet-manager.ResolvePlacement` для `PrepareRuntime`, `ReserveSlot` и `CreateJob` без slot; fleet остаётся владельцем выбора кластера и журнала решений. |
| #738 | `services/internal/fleet-manager/Dockerfile`, `deploy/base/fleet-manager/**`, `deploy/base/postgres/**`, `bootstrap/host/config.env.example`, `bootstrap/host/bootstrap_cluster.sh`, `services.yaml`, `scripts/build-fleet-manager-images.sh`, `docs/domains/runtime-and-fleet/ops/**`, `docs/domains/runtime-and-fleet/delivery/fleet_manager_delivery.md`, `docs/delivery/coordination/**` | FLEET-6 | готово | Эксплуатационный контур `fleet-manager`: Dockerfile, manifests, DB bootstrap, migration job, runbook и monitoring; доменные проверки идут через Go tests/runner. |
| #940 | `proto/kodex/runtime/v1/runtime_manager.proto`, `proto/gen/go/kodex/runtime/v1/**`, `services/internal/runtime-manager/**`, `deploy/base/runtime-manager/**`, `deploy/base/postgres/secrets.yaml.tpl`, `docs/domains/runtime-and-fleet/**`, `docs/delivery/coordination/agent-1-project-catalog.md` | RTM-K8S-1 | готово | Основа Kubernetes-исполнителя в `runtime-manager`: включаемый явно исполнитель забирает только задания `health_check`, получает ссылку на секрет кластера через `fleet-manager.GetKubernetesCluster`, создаёт ограниченный Kubernetes Job через `client-go` и завершает runtime job штатными lifecycle-командами без хранения kubeconfig, значений секретов и больших логов. Дополнительно зафиксирован канонический тип задания `agent_run` для запуска agent Run без подмены на `build`/`deploy`/`housekeeping`; отдельный исполнитель agent Run подключается следующим срезом. |
| #949 | `services/internal/runtime-manager/internal/app/kubernetes_job_worker.go`, `services/internal/runtime-manager/internal/clients/kubernetes/**`, `docs/domains/runtime-and-fleet/**`, `docs/delivery/coordination/agent-1-project-catalog.md` | RTM-K8S-2 | готово | Kubernetes job worker различает остановку процесса и реальный таймаут, безопасно классифицирует ошибку, отмену и недоступный статус Kubernetes Job, переиспользует детерминированный Kubernetes Job при повторном claim и сдерживает повтор ошибок claim/report/complete увеличивающейся задержкой. |
| #961 | `proto/kodex/runtime/v1/runtime_manager.proto`, `proto/gen/go/kodex/runtime/v1/**`, `services/internal/runtime-manager/**`, `docs/domains/runtime-and-fleet/**`, `docs/domains/agent-orchestration/**`, `docs/delivery/coordination/agent-1-project-catalog.md` | RTM-K8S-3 | готово | Зафиксирован contract-first typed `AgentRunExecutionSpec` для будущего исполнения `agent_run`: safe refs на Run/slot/materialization/workspace/context, digest/fingerprint, runner profile/image, фиксированный runner mode, secret refs без значений и reporting target refs. `runtime-manager` сверяет spec с завершённой workspace materialization, хранит его как канонический `job_input_json.agent_run_execution_spec` и не отдаёт `agent_run` без spec в claim для исполнения. |
| #966 | `services/internal/runtime-manager/internal/app/kubernetes_job_worker.go`, `services/internal/runtime-manager/internal/clients/kubernetes/**`, `proto/kodex/runtime/v1/runtime_manager.proto`, `proto/gen/go/kodex/runtime/v1/**`, `docs/domains/runtime-and-fleet/**`, `docs/delivery/coordination/agent-1-project-catalog.md` | RTM-K8S-4 | готово | Kubernetes job worker и executor запускают `JOB_TYPE_AGENT_RUN` через ограниченный Kubernetes Job на базе typed `AgentRunExecutionSpec`: claim идёт только при наличии spec, runner image/profile/context/workspace refs берутся из spec, команда runner-а фиксирована, workspace монтируется через PVC, secret refs передаются только как ссылки без значений, kubeconfig и большие логи не сохраняются. |
| #975 | `services/jobs/agent-runner/**`, `docs/domains/runtime-and-fleet/**`, `docs/domains/agent-orchestration/architecture/guidance_workspace_context.md`, `docs/delivery/coordination/agent-1-project-catalog.md` | RTM-RUNNER-1 | готово | Добавлена минимальная рабочая нагрузка `agent-runner` для Kubernetes Job `JOB_TYPE_AGENT_RUN`: команда `/kodex/bin/agent-runner run` читает смонтированный `.kodex/context/agent-run.json`, проверяет digest/fingerprint/runner mode, не принимает raw prompt/tool/provider payload и сообщает безопасное начало/ошибку в `agent-manager` через существующие gRPC-команды. |
| #990 | `proto/kodex/runtime/v1/runtime_manager.proto`, `proto/gen/go/kodex/runtime/v1/**`, `services/jobs/agent-runner/**`, `services/internal/runtime-manager/**`, `docs/domains/runtime-and-fleet/**`, `docs/domains/agent-orchestration/**`, `docs/delivery/coordination/agent-1-project-catalog.md` | RTM-RUNNER-2 | готово | Зафиксирован contract-first `CodexSessionExecutionSpec` для будущего Codex CLI запуска: instruction/result schema refs и digest, snapshot, hook/callback refs, timeout, фиксированный runner profile, output/result refs и secret refs без значений. `runtime-manager` сохраняет и передаёт spec runner-у как bounded JSON env, а `agent-runner` валидирует spec и без фактического Codex executor завершает job `agent_execution_contract_unavailable`. |
| без отдельного Issue | `services/internal/runtime-manager/internal/clients/kubernetes/**`, `services/internal/runtime-manager/internal/app/**`, `deploy/base/runtime-manager/runtime-manager.yaml.tpl`, `docs/domains/runtime-and-fleet/**`, `docs/domains/agent-orchestration/architecture/api_contract.md`, `docs/delivery/coordination/agent-1-project-catalog.md` | RTM-RUNNER-E2E | готово | Цепочка agent Run со стороны runtime замкнута на отчёт runner-а: Kubernetes executor создаёт `agent_run` Job с адресом `agent-manager` и gRPC token только через Kubernetes `SecretKeyRef`, поэтому `agent-runner` может отправить `ReportAgentRunState` после `codex exec` без чтения и хранения значения token в `runtime-manager`. Реальное исполнение Codex остаётся ограничено уже материализованными workspace refs `workspace://.kodex/execution/...`; object-store refs требуют отдельного безопасного механизма чтения. |
| без отдельного Issue | `proto/kodex/runtime/v1/runtime_manager.proto`, `proto/gen/go/kodex/runtime/v1/**`, `services/internal/runtime-manager/**`, `docs/domains/runtime-and-fleet/**`, `docs/delivery/coordination/agent-1-project-catalog.md` | RTM-BD-1 | готово | Подготовлена runtime-модель build/deploy jobs для будущего саморазвёртывания: `BuildExecutionSpec` и `DeployExecutionSpec` хранят только проверенные source/service/image/build-context/manifest/kustomization/target refs, digest/fingerprint и secret refs без значений; `build`/`deploy` без spec остаются `pending` с безопасной диагностикой и не выдаются через `ClaimRunnableJob`. Kaniko build executor и исполнитель Kubernetes-выкладки остаются следующими runtime-срезами. |
| без отдельного Issue | `services/internal/runtime-manager/internal/app/kubernetes_job_worker.go`, `services/internal/runtime-manager/internal/clients/kubernetes/**`, `docs/domains/runtime-and-fleet/**`, `docs/delivery/coordination/agent-1-project-catalog.md` | RTM-BD-2 | готово | Kubernetes executor исполняет `JOB_TYPE_BUILD` с валидным `BuildExecutionSpec` через Kaniko: worker claim-ит `build`, context монтируется только для чтения через PVC ref, Dockerfile path остаётся внутри context, destination image ref/tag и target передаются фиксированными args, registry credentials подключаются только через Kubernetes `Secret` ref, а runtime сохраняет Kubernetes Job/namespace refs и destination image ref без raw payload, kubeconfig, больших логов или значений секретов. Исполнитель выкладки deploy остаётся отдельным срезом. |
| без отдельного Issue | `services/internal/runtime-manager/internal/app/kubernetes_job_worker.go`, `services/internal/runtime-manager/internal/clients/kubernetes/**`, `services/internal/runtime-manager/internal/domain/service/**`, `docs/domains/runtime-and-fleet/**` | RTM-BD-3 | готово | Сверка статуса build job готова: исполнитель наблюдает Kaniko Job по имени и runtime labels, сверяет managed labels, различает `pending`, `running`, `succeeded`, `failed`, `timed_out` и `cancelled`, сохраняет таймаут как `timed_out` и пишет только безопасную ограниченную сводку/хвост лога без сырых логов, Kubernetes events, kubeconfig и значений секретов. |
| без отдельного Issue | `proto/kodex/runtime/v1/runtime_manager.proto`, `proto/gen/go/kodex/runtime/v1/**`, `services/internal/runtime-manager/**`, `docs/domains/runtime-and-fleet/**`, `docs/delivery/coordination/agent-1-project-catalog.md` | RTM-BD-4 | готово | Deploy job готов как безопасный типизированный жизненный цикл после build: `DeployExecutionSpec` сохраняется в `job_input_json.deploy_execution_spec`, возвращается через `GetJob`/`ListJobs`, повтор `CreateJob` идемпотентен, а задание остаётся `pending` с `deploy_executor_unavailable` и не выдаётся через `ClaimRunnableJob` до согласования исполнителя выкладки и контракта выкладки. |
| без отдельного Issue | `services/internal/runtime-manager/internal/clients/kubernetes/**`, `deploy/base/runtime-manager/runtime-manager.yaml.tpl`, `docs/domains/runtime-and-fleet/**`, `docs/delivery/coordination/agent-1-project-catalog.md` | RTM-BD-5 | готово | Исполнитель `build` готовит сборку саморазвёртывания к запуску после approve gate: перед созданием Kaniko Job проверяет PVC build context, ссылку и объект registry Secret и service account, возвращает типизированную диагностику блокера до запуска Pod и получает минимальные RBAC-права на эти проверки без вывода значений Secret. |
| без отдельного Issue | `proto/kodex/runtime/v1/runtime_manager.proto`, `proto/gen/go/kodex/runtime/v1/**`, `services/internal/runtime-manager/**`, `docs/domains/runtime-and-fleet/**`, `docs/domains/projects-and-repositories/architecture/api_contract.md`, `docs/domains/agent-orchestration/**`, `docs/platform/architecture/repository_onboarding.md` | RTM-BD-6 | готово | Contract-first путь deploy plan зафиксирован: `DeployExecutionSpec` требует checked `manifest_bundle_ref`/`manifest_bundle_digest`, rollout targets и expected image refs, runtime сохраняет и читает такой spec как typed pending job с `deploy_executor_unavailable`, worker не claim-ит `deploy`, а следующий dependency для `project-catalog` — `GetSelfDeployDeployPlan` после successful build. |
| без отдельного Issue | `proto/kodex/runtime/v1/runtime_manager.proto`, `proto/gen/go/kodex/runtime/v1/**`, `libs/go/accesscatalog/**`, `services/internal/runtime-manager/**`, `docs/domains/runtime-and-fleet/**`, `docs/platform/architecture/repository_onboarding.md`, `docs/delivery/coordination/agent-1-project-catalog.md` | RTM-BD-7 | готово | Подготовлен runtime-owned lifecycle build context для self-deploy: `PrepareBuildContext` идемпотентно фиксирует project/repository/provider/source refs, source commit SHA, affected service keys и build plan fingerprint, `ReportBuildContextProgress` принимает только checked source snapshot refs/digests и prepared context refs/digests, `GetBuildContext` отдаёт безопасное состояние. Без checked source snapshot context остаётся `pending` с `source_snapshot_unavailable`; runtime не выполняет скрытый checkout и не хранит raw source/provider payload. |
