feat(map): add persistent gateway and ontology package
This commit is contained in:
@@ -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." }
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user