feat(map): add persistent gateway and ontology package

This commit is contained in:
Codex
2026-07-13 17:14:34 +03:00
parent d196d4b0c7
commit e527812826
21 changed files with 1323 additions and 9 deletions
@@ -0,0 +1,35 @@
{
"version": "0.1.0",
"updatedAt": "2026-07-12",
"aliases": [
{ "alias": "map view", "canonicalId": "map.view" },
{ "alias": "карта", "canonicalId": "map.view" },
{ "alias": "карточная страница", "canonicalId": "map.view" },
{ "alias": "камера карты", "canonicalId": "map.viewport" },
{ "alias": "геосетка", "canonicalId": "map.grid_layer" },
{ "alias": "планетарная сетка", "canonicalId": "map.grid_layer" },
{ "alias": "городской таргет", "canonicalId": "map.place_target" },
{ "alias": "маркер города", "canonicalId": "map.place_target" },
{ "alias": "движущийся объект", "canonicalId": "map.moving_object" },
{ "alias": "электротранспорт", "canonicalId": "map.moving_object" },
{ "alias": "шпилька", "canonicalId": "map.pin" },
{ "alias": "маркер-шпилька", "canonicalId": "map.pin" },
{ "alias": "плашка на карте", "canonicalId": "map.label" },
{ "alias": "метка объекта", "canonicalId": "map.label" },
{ "alias": "геозона", "canonicalId": "map.zone" },
{ "alias": "сектор карты", "canonicalId": "map.zone" },
{ "alias": "geofence", "canonicalId": "map.zone" },
{ "alias": "маршрут", "canonicalId": "map.route" },
{ "alias": "железнодорожный путь", "canonicalId": "map.track_segment" },
{ "alias": "станция метро", "canonicalId": "map.station" },
{ "alias": "железнодорожная станция", "canonicalId": "map.station" },
{ "alias": "остановка", "canonicalId": "map.stop" },
{ "alias": "вокзал", "canonicalId": "map.terminal" },
{ "alias": "выбранный объект карты", "canonicalId": "map.selection" },
{ "alias": "LOD карты", "canonicalId": "map.visibility_rule" },
{ "alias": "правила видимости карты", "canonicalId": "map.visibility_rule" },
{ "alias": "движок карты", "canonicalId": "map.renderer_adapter" },
{ "alias": "Cesium adapter", "canonicalId": "map.renderer_adapter" },
{ "alias": "провайдер карты", "canonicalId": "map.provider_capability" }
]
}
@@ -0,0 +1,26 @@
{
"version": "0.1.0",
"updatedAt": "2026-07-12",
"entities": [
{ "id": "map.view", "name": "Map View", "surface": "map", "status": ["product-required"], "authority": "NDC Module Studio + Ontology Core", "summary": "Provider-neutral map work view composed by an approved Map Page template." },
{ "id": "map.viewport", "name": "Map Viewport", "surface": "map", "status": ["source-evidenced"], "authority": "NDC Module Studio", "summary": "Camera/view state including position, orientation, zoom or height, focus and saved view presets." },
{ "id": "map.base_layer", "name": "Map Base Layer", "surface": "map", "status": ["source-evidenced"], "authority": "NDC Module Studio", "summary": "Base spatial imagery or cartographic layer independent of a concrete provider." },
{ "id": "map.building_layer", "name": "Map Building Layer", "surface": "map", "status": ["source-evidenced"], "authority": "NDC Module Studio", "summary": "Optional spatial building or 3D structure layer exposed as a renderer capability." },
{ "id": "map.grid_layer", "name": "Map Grid Layer", "surface": "map", "status": ["source-evidenced"], "authority": "NDC Module Studio", "summary": "Planetary or situational grid with configurable modes, levels of detail, step, radius and visual primitives." },
{ "id": "map.place_target", "name": "Map Place Target", "surface": "map", "status": ["source-evidenced"], "authority": "NDC Module Studio", "summary": "Geographic place target such as a city or territory with location, pulse, radius and distance-dependent presentation." },
{ "id": "map.moving_object", "name": "Map Moving Object", "surface": "map", "status": ["source-evidenced"], "authority": "NDC domain source", "summary": "Dynamic spatial object such as transport, robot or vehicle with identity, position, movement and status." },
{ "id": "map.pin", "name": "Map Pin", "surface": "map", "status": ["source-evidenced"], "authority": "NDC Module Studio", "summary": "Reusable spatial pin presentation with stem, point, height, color, status and visibility rules." },
{ "id": "map.label", "name": "Map Label", "surface": "map", "status": ["source-evidenced", "product-required"], "authority": "NDC Module Studio", "summary": "Reusable information plate attached to a spatial subject with style, size variant, anchor, offset and visibility rules." },
{ "id": "map.zone", "name": "Map Zone", "surface": "map", "status": ["source-evidenced"], "authority": "NDC domain source", "summary": "Polygon or multipolygon zone, sector or geofence with optional height, extrusion and level-dependent style." },
{ "id": "map.route", "name": "Map Route", "surface": "map", "status": ["source-evidenced"], "authority": "NDC domain source", "summary": "Logical ordered path or service route independent of renderer geometry." },
{ "id": "map.track_segment", "name": "Map Track Segment", "surface": "map", "status": ["source-evidenced"], "authority": "NDC domain source", "summary": "Renderable linear segment of rail, road, trace or other path geometry." },
{ "id": "map.station", "name": "Map Station", "surface": "map", "status": ["source-evidenced"], "authority": "NDC transport domain", "summary": "Transport station with semantic kind, location, identity and optional label presentation." },
{ "id": "map.stop", "name": "Map Stop", "surface": "map", "status": ["source-evidenced"], "authority": "NDC transport domain", "summary": "Transport stop or stop position represented through the common spatial target contract." },
{ "id": "map.terminal", "name": "Map Terminal", "surface": "map", "status": ["source-evidenced"], "authority": "NDC transport domain", "summary": "Major station, terminal or transport hub with a distinct semantic and presentation variant." },
{ "id": "map.selection", "name": "Map Selection", "surface": "map", "status": ["source-evidenced"], "authority": "NDC Module Studio", "summary": "Current selected spatial subject and normalized context used by Inspector, quick cards and commands." },
{ "id": "map.visibility_rule", "name": "Map Visibility Rule", "surface": "map", "status": ["product-required"], "authority": "NDC Module Studio", "summary": "Provider-neutral distance, zoom, height, state and transition rule controlling visibility or level of detail." },
{ "id": "map.style_profile", "name": "Map Style Profile", "surface": "map", "status": ["product-required"], "authority": "NDC Module Studio", "summary": "Versioned semantic presentation profile for map entities without renderer-specific graphics types." },
{ "id": "map.renderer_adapter", "name": "Map Renderer Adapter", "surface": "map", "status": ["product-required"], "authority": "NDC Module Studio", "summary": "Replaceable implementation translating the provider-neutral Map Page contract to a concrete rendering engine." },
{ "id": "map.provider_capability", "name": "Map Provider Capability", "surface": "map", "status": ["product-required"], "authority": "Platform Map Gateway + renderer adapter", "summary": "Declared provider feature such as terrain, imagery, buildings, offline cache, attribution or supported geometry." }
]
}
@@ -0,0 +1,43 @@
{
"version": "0.1.0",
"updatedAt": "2026-07-12",
"sourceRoots": [
{
"surface": "engine",
"path": "/Users/dcconstructions/Downloads/mnt/NODEDC/NODEDC_ENGINE_INFRA/nodedc-source",
"mode": "read-only MMAP workflow and Cesium layer donor inspection"
},
{
"surface": "module-studio",
"path": "/Users/dcconstructions/Downloads/mnt/NODEDC/NODEDC_DESIGN_GUIDELINE",
"mode": "Map Page target surface and visual contract owner"
}
],
"ledgers": [
{
"id": "ledger.map_domain_v0",
"path": "docs/MAP_DOMAIN_ONTOLOGY.md",
"entityIds": [
"map.view",
"map.grid_layer",
"map.place_target",
"map.moving_object",
"map.pin",
"map.label",
"map.zone",
"map.route",
"map.track_segment",
"map.station",
"map.selection",
"map.renderer_adapter"
]
}
],
"baselineDocs": ["docs/MAP_DOMAIN_ONTOLOGY.md"],
"restrictions": [
"Do not copy the monolithic ENGINE Cesium node into Module Studio.",
"Do not make Cesium, Ion, OSM, GOS, Gelios, RZD or Yandex Rasp canonical map domain roots.",
"Do not store runtime snapshots, provider credentials or heavy spatial datasets in Ontology Core.",
"Do not design NDC capability bindings before Map Page slots, fixture schema and actions are accepted."
]
}
@@ -0,0 +1,50 @@
{
"version": "0.1.0",
"updatedAt": "2026-07-12",
"rules": [
{
"id": "guardrail.map.provider_neutral_domain",
"severity": "error",
"summary": "Map domain contracts must not use Cesium, Ion, OSM, GOS or renderer graphics types as canonical business entities.",
"entityIds": ["map.view", "map.renderer_adapter", "map.provider_capability"]
},
{
"id": "guardrail.map.engine_does_not_own_visuals",
"severity": "error",
"summary": "ENGINE/NDC sources may publish spatial data and commands but must not own Map Page geometry, label design, pin design or renderer credentials.",
"entityIds": ["map.view", "map.pin", "map.label", "map.style_profile", "future.interface_binding", "engine.workflow_l1"]
},
{
"id": "guardrail.map.selection_targets_domain_subject",
"severity": "error",
"summary": "Selection and application commands must target stable domain subject identifiers, not transient renderer entity references.",
"entityIds": ["map.selection", "map.renderer_adapter", "future.interface_binding"]
},
{
"id": "guardrail.map.labels_use_shared_contract",
"severity": "warning",
"summary": "Transport, station, city and other labels must use the shared Map Label contract with semantic variants instead of source-specific label implementations.",
"entityIds": ["map.label", "map.moving_object", "map.station", "map.stop", "map.terminal", "map.place_target"]
},
{
"id": "guardrail.map.mass_geometry_requires_strategy",
"severity": "warning",
"summary": "Large zone and track collections require explicit batching, tiling, visibility and update strategy before production renderer acceptance.",
"entityIds": ["map.zone", "map.track_segment", "map.visibility_rule", "map.renderer_adapter"]
},
{
"id": "guardrail.map.ontology_does_not_store_runtime_snapshots",
"severity": "error",
"summary": "Ontology Core describes map meanings and contracts; it must not store live vehicle positions, provider tokens, full geozone snapshots or railway GeoJSON datasets.",
"entityIds": ["map.moving_object", "map.zone", "map.track_segment", "map.provider_capability"]
}
],
"blockedConflations": [
["map.view", "map.renderer_adapter"],
["map.moving_object", "map.pin"],
["map.station", "map.label"],
["map.route", "map.track_segment"],
["map.visibility_rule", "map.provider_capability"],
["map.selection", "map.renderer_adapter"]
]
}
@@ -0,0 +1,7 @@
{
"id": "map",
"version": "0.1.0",
"updatedAt": "2026-07-12",
"status": "product-required/source-evidenced",
"summary": "Provider-neutral map domain ontology for NDC Module Studio views, spatial entities, transport layers, visibility rules, selection, and replaceable renderer adapters."
}
@@ -0,0 +1,21 @@
{
"version": "0.1.0",
"updatedAt": "2026-07-12",
"relations": [
{ "id": "map.view.uses_viewport", "from": ["map.view"], "to": ["map.viewport"], "status": "product-required", "summary": "A Map View owns provider-neutral viewport state." },
{ "id": "map.view.contains_layer", "from": ["map.view"], "to": ["map.base_layer", "map.building_layer", "map.grid_layer"], "status": "product-required", "summary": "A Map View composes enabled spatial layers." },
{ "id": "map.view.displays_subject", "from": ["map.view"], "to": ["map.place_target", "map.moving_object", "map.zone", "map.route", "map.track_segment", "map.station", "map.stop", "map.terminal"], "status": "product-required", "summary": "A Map View displays domain subjects through approved page slots." },
{ "id": "map.moving_object.uses_pin", "from": ["map.moving_object"], "to": ["map.pin"], "status": "product-required", "summary": "A moving object can use the shared pin presentation." },
{ "id": "map.subject.has_label", "from": ["map.place_target", "map.moving_object", "map.station", "map.stop", "map.terminal"], "to": ["map.label"], "status": "product-required", "summary": "Spatial subjects can use the common label contract and semantic size variants." },
{ "id": "map.zone.uses_style_profile", "from": ["map.zone"], "to": ["map.style_profile"], "status": "product-required", "summary": "Zones use semantic fill, outline, height and level-dependent styling." },
{ "id": "map.route.contains_track_segment", "from": ["map.route"], "to": ["map.track_segment"], "status": "product-required", "summary": "A logical route is rendered from one or more track segments." },
{ "id": "map.route.serves_station", "from": ["map.route"], "to": ["map.station", "map.stop", "map.terminal"], "status": "product-required", "summary": "A route can reference the transport points it serves." },
{ "id": "map.subject.uses_visibility_rule", "from": ["map.grid_layer", "map.place_target", "map.moving_object", "map.pin", "map.label", "map.zone", "map.route", "map.track_segment", "map.station", "map.stop", "map.terminal"], "to": ["map.visibility_rule"], "status": "product-required", "summary": "Map subjects use a provider-neutral visibility and LOD policy." },
{ "id": "map.selection.targets_subject", "from": ["map.selection"], "to": ["map.place_target", "map.moving_object", "map.zone", "map.route", "map.track_segment", "map.station", "map.stop", "map.terminal"], "status": "product-required", "summary": "Selection points to a domain subject rather than a renderer object." },
{ "id": "map.view.rendered_by_adapter", "from": ["map.view"], "to": ["map.renderer_adapter"], "status": "product-required", "summary": "A Map View is rendered through a replaceable adapter." },
{ "id": "map.renderer_adapter.declares_capability", "from": ["map.renderer_adapter"], "to": ["map.provider_capability"], "status": "product-required", "summary": "A renderer adapter declares the provider features it can satisfy." },
{ "id": "map.view.is_interface_view", "from": ["map.view"], "to": ["future.interface_view"], "status": "product-required", "summary": "Map View specializes the Future Interface Layer view concept." },
{ "id": "map.subject.is_interface_widget", "from": ["map.grid_layer", "map.place_target", "map.pin", "map.label", "map.zone", "map.route"], "to": ["future.interface_widget"], "status": "product-required", "summary": "Map visual subjects are exposed through approved interface widgets and slots." },
{ "id": "map.view.receives_interface_binding", "from": ["map.view"], "to": ["future.interface_binding"], "status": "product-required", "summary": "NDC data reaches Map View through the generic Future Interface binding boundary." }
]
}