7.2 KiB
Gelios provider package v1
Это versioned contract/data package для первого живого provider connection в NODE.DC. Он не является runtime service, custom node, account configuration или хранилищем telemetry. Provider-specific request и mapping исполняются внутри изолированного NDC L2 workflow; Platform получает только provider-neutral Data Product.
Package фиксирует:
- manifest
gelios.provider.v1@1.0.0; - точный provider token lifecycle: Gelios выдаёт
accessиrefresh, а HTTP request используетaccess; - safe-read capability
gelios.units.current.read(GET https://api.geliospro.com/api/v1/unitswith an opaque bearer credential); - dynamic scope
all_visible_to_credentialбез unit/group allowlist; - realtime profile с интервалом 10 секунд и manual profile;
- fail-closed field policy: неизвестные и dynamic fields отбрасываются до классификации, hardware IDs, phone/address, raw params и sensor payloads не публикуются;
- mapping в
map.moving_object; - стабильный source ID
gelios-unit-<sourceUnitId>с точным сохранением строкового provider ID; - explicit derivation rules для
position_valid,operational_statusиquality_flags, включаяno_positionи stale threshold 60 секунд; - точный Data Product
fleet.positions.current.v1@1.0.0, revisionontology.map.moving_object.v1, с 13 разрешёнными snake_case fields; - provider-neutral NDC L2 template descriptor из пяти boundary steps:
trigger → request → extract → map →
NDC Data Product Publish; - publish credential binding с
management: control_plane_managed, без caller-supplied writer reference; - synthetic source/publish fixture, включая видимый объект без координат.
Authentication boundary
Gelios выдаёт ровно два provider secret artifact: access token и refresh
token. Это не отдельные read/write tokens. Текущий NDC L2 HTTP binding типа
httpBearerAuth подставляет access token в Authorization; автоматический
refresh этим runtime пока не доказан, поэтому package явно фиксирует
refreshMode: operator_managed. Ни access, ни refresh value не попадает в
package, graph, fixture, MCP, Ops или trace.
Название native credential, например Gelios — Robot2B — read access, является
только операторской меткой. read в gelios.units.current.read —
классификация разрешённого workflow endpoint GET /api/v1/units, а не scope
access token. Метка credential не создаёт отдельный «read token» и не сужает
права, которые фактически выдал Gelios.
Unit без last message не исчезает: mapping использует collection receive time
как observedAt fallback и публикует subject без geometry с
position_valid=false/operational_status=no_position.
Префикс source ID для v1 — строго gelios-unit-. Сокращённый unit- не
является каноническим: он создал бы второй entity key рядом с уже сохранённым
Gelios subject. Значение provider ID после префикса преобразуется только в
строку; ведущие нули и остальные значимые символы не нормализуются.
fleet.positions.current.v1 ограничен 5000 current entities. Если credential
видит больше, NDC L2 не должен отбрасывать «лишние» units: package/profile
требует остановить Deploy до новой partitioned Data Product revision. Полное
автоматическое enforcement этого правила остаётся gate будущего
package-to-graph compiler/runtime validator.
Один package обслуживает любое число accounts. Для каждого account вызывается
instantiateL2Connection с новым tenantId, connectionId, provider
credential reference. Это единственная credential reference, которую передаёт
caller: она адресует Gelios access binding в native NDC L2 Credentials.
Внутреннюю capability для публикации в External Data Plane выдаёт и сохраняет
control plane; caller не передаёт writer secret или writerCredentialRef.
Результат instantiation содержит только provider ref и декларативный
systemBindings.publisher со статусом unresolved, который Platform должна
разрешить в native credential binding. Эта capability не выдаётся Gelios, не
является третьим Gelios token и не описывает права provider account. Добавление
account не меняет Platform source.
Расширение Gelios происходит новой версией package: сначала подтверждаются provider capability/fields, затем обновляются ontology, field policy, mapping, fixtures и tests. Пользовательские workflow, которые уже покрываются существующим catalog, не требуют участия разработчика Platform.
Технический runtime type publish boundary остаётся
n8n-nodes-ndc.ndcDataProductPublish; это идентификатор общего NDC package, а
не Gelios-specific node.
Текущая готовность
Package, ontology links и synthetic fixtures проверены в source. Production
Engine L2 target использует зарегистрированный Gelios Bearer credential на
точном safe-read endpoint и managed ndcDataProductWriterApi generation g3;
оба binding записаны без раскрытия secret values. Canonical graph содержит
provider read, extraction, mapping и native NDC Data Product Publish.
Fresh production execution 881722 завершился успешно и опубликовал
fleet.positions.current.v1; managed writer g3 принят и имеет state current.
Это доказывает manual provider read → canonical Data Product path. Внутренняя
writer capability остаётся NODE.DC capability и не может быть заменена access
или refresh token Gelios.
Не доказаны: автоматический refresh, Schedule Trigger 10 секунд, несколько последовательных scheduled cycles, retry/backoff, sampled history/retention на continuous path и Foundry snapshot/patch → moving pins E2E. Provider package остаётся declarative: MCP package discovery и package/profile → L2 graph compiler пока отсутствуют, поэтому первый graph собран через общие Engine MCP graph tools.