# NODE.DC Platform

Платформенный слой для multi-app authentication architecture NODE.DC.

Эта папка не является монорепозиторием всех приложений. Здесь живут общая архитектура, Authentik/reverse-proxy инфраструктура, правила локального разворачивания, auth model, migration plan для Plane и будущий общий auth-sdk.

Git repo:

- `origin`: `https://git.dcserve.ru/SILVER/NODEDC_PLATFORM.git`
- local branch: `main`

Текущие приложения остаются отдельными репозиториями:

- Launcher: `/Users/dcconstructions/Downloads/mnt/data/nodedc_launcher`
- Task Manager / Plane fork: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER`
- Plane runtime: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app`
- Plane source fork: `/Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src`

## Нулевой этап

Нулевой этап фиксирует discovery и каркас платформы без изменения бизнес-логики Launcher и Plane.

Артефакты:

- `docs/CURRENT_INFRA_HANDOFF.md`
- `docs/DISCOVERY_REPORT.md`
- `docs/ARCHITECTURE.md`
- `docs/AUTH_MODEL.md`
- `docs/DEPLOYMENT_LOCAL.md`
- `docs/SECURITY_CHECKLIST.md`
- `docs/MIGRATION_PLANE_USER.md`
- `infra/README.md`
- `packages/auth-sdk/README.md`
- `services/notification-core/README.md`
- `services/ai-workspace-assistant/README.md`
- `services/ai-workspace-hub/README.md`
- `services/ontology-core/README.md`
- `tasks/CODEX_PLATFORM_AUTH_TASK.md`

## Базовое правило

Plane не переносится внутрь Launcher. Launcher не становится владельцем таблиц Plane. Authentik становится единым Identity Provider, а приложения сохраняют собственные доменные БД и роли.

Notification Core живёт в `services/notification-core` как отдельный платформенный сервис с собственным Postgres. Он не использует Authentik DB: Authentik отвечает за identity/session, Notification Core отвечает за events/deliveries/read-state.

AI Workspace Assistant живёт в `services/ai-workspace-assistant` как общий платформенный слой для пользовательских Codex executors, selected executor, shared conversations, surfaces и tool packs. AI Workspace Hub остаётся отдельным тонким транспортом для remote Codex workers и не хранит смысловое состояние ассистента.

Ontology Core живёт в `services/ontology-core` как docs-first семантический слой для canonical entities, relations, aliases, guardrails, evidence, первого resolver MVP между OPS и ENGINE и policy MVP для NDC Core Assistant access. Он не владеет доменными БД HUB/OPS/ENGINE и не заменяет Launcher/HUB roles или OPS Gateway enforcement.

Map Gateway живёт в `services/map-gateway` как общий platform boundary для provider credentials, безопасного asset endpoint exchange, tile/3D Tiles proxy и persistent offline TileCache. Runtime cache не является source artifact и хранится в named volume/object storage, а не в Git.

Внешние бизнес-поставщики подключаются по `packages/external-provider-contract`: adapter конкретного API принадлежит изолированному NDC L2 workflow, а Platform даёт один provider-neutral External Data Plane для raw retention, canonical facts, current/history projections и scoped read products. Connection instance несёт tenant scope, credential reference и collection profile, но не secret value. Provider/domain mapping, entity filtering и renderer logic не попадают в Platform Data Plane. Provider-issued credentials сохраняются в native NDC L2 Credentials; внутренний scoped publish grant генерируется и сохраняется generic control plane внутри native credential boundary, EDP получает только digest, а MCP видит только opaque reference/status. Legacy plaintext provisioning и managed digest-only ensure включаются независимо и по умолчанию закрыты. Подробный канон — `docs/ADR_L2_OWNED_EXTERNAL_CONNECTORS.md`.
