feat(foundry): add managed data consumers and agent settings

This commit is contained in:
Codex
2026-07-19 15:03:54 +03:00
parent 5f583caa05
commit aac44d057f
35 changed files with 4534 additions and 243 deletions
+15 -7
View File
@@ -86,13 +86,21 @@ semantic types, field projection и `slotId` (`points` для live point entitie
При открытии Application page browser делает same-origin запрос к Foundry:
```text
Application/Page/Binding → Foundry BFF → External Data Plane snapshot → SSE patch
Application/Page/Binding → Foundry BFF → External Data Plane snapshot/history → SSE patch
```
Foundry сопоставляет target с root-owned opaque reader grant в закрытом
deployment directory. Browser, manifest и Cesium adapter не получают provider
Foundry сопоставляет target с opaque reader grant в закрытом persistent
runtime. При первом exact consumer apply Foundry генерирует token локально и
передаёт EDP только его digest в запросе с отдельной service-подписью; EDP сам
разрешает unique active writer scope и fail-closed отклоняет ambiguity. Legacy
root-owned deployment directory используется только как совместимый fallback.
Browser, manifest и Cesium adapter не получают provider
endpoint, tenant/connection scope, reader token или raw provider payload.
Сначала приходит snapshot, затем только patch events с cursor; при пропуске
cursor BFF требует resync snapshot. Renderer держит отдельный `CustomDataSource`
на binding и обновляет stable entity id без пересоздания viewer. History и
sampling остаются политикой Data Plane, а не Map Template.
Сначала server-owned Foundry consumer коммитит snapshot, затем применяет patch
events с exact cursor и только после commit делает fan-out всем viewers. При
пропуске cursor требуется snapshot rebase; несколько вкладок одного binding не
создают несколько upstream EDP subscriptions. Timeline использует provider-neutral
history route (`from/to/resolution/sourceIds/cursor`) через тот же BFF и не
занимает общую L2 execution queue. Renderer держит отдельный `CustomDataSource`
на binding и обновляет stable entity id без пересоздания viewer. Sampling и
retention остаются политикой Data Plane, а не Map Template.