feat(observatory): ship modular AI inference labs

This commit is contained in:
DCCONSTRUCTIONS
2026-09-04 17:59:05 +03:00
parent eff60e490a
commit cada687173
145 changed files with 17651 additions and 1667 deletions
+161
View File
@@ -0,0 +1,161 @@
{
"schema_version": "missioncore.observatory-ai-module-registry/v1",
"modules": [
{
"module_id": "camera-source",
"label": "Подготовка камеры K1",
"group": "preparation",
"image_sha256": "da926459aee0a841bbdfaf80a0eb5fbead354c56794d1f3384eeba66d0a49e00",
"implementation_sha256": "a0b1a74887e5f1cf78e867f81f246bae08e872fed320a2939986c17913418524",
"model_sha256": null,
"contract_sha256": "87c9e8864f9469719e69bfd750c418e077944a6260ffc6fd3ce12daf4a1da7d5",
"requires": [
"source.camera"
],
"provides": [
"camera.frames"
],
"optional_inputs": [],
"parameter_choices": {
"cadence": [
1
]
},
"defaults": {
"cadence": 1
},
"state_policy": "stateless"
},
{
"module_id": "ddrnet",
"label": "DDRNet-39 · GOOSE",
"group": "segmentation",
"image_sha256": "489fc7d1157fd0f1cd1d82e06a15737b7b2aaaf72b2ddb2aca2992b91a97488e",
"implementation_sha256": "9a3fceb65374ccc3dccdbe02691c2b62376ff3a3a6d16439cb9f6266e73c78b0",
"model_sha256": "b99c2838051bcd7b092fd3970aa62a77d5c0bbb809c9b9afb2ff4b0ebdaa4ee6",
"contract_sha256": "197c9d7dd0f55f79992215a57e450c5442f3d1510d74083bcf123577f85da199",
"requires": [
"camera.frames"
],
"provides": [
"segmentation.mask"
],
"optional_inputs": [],
"parameter_choices": {
"cadence": [
1
]
},
"defaults": {
"cadence": 1
},
"state_policy": "stateless"
},
{
"module_id": "eomt",
"label": "EoMT Large · Cityscapes",
"group": "segmentation",
"image_sha256": "5b770178e4a5c8fbe8f8ddab3b83a598973dbe103b669851110b11a0918ab846",
"implementation_sha256": "17ac471d5c51f70b3af6fb6046e1880c731691253c338b1626702ce4ca375d2b",
"model_sha256": "c265da9a74f58f5c3f4826d23ca4ca78beac0b106cca5842beca61580de5b782",
"contract_sha256": "09ca841400b08af0607d19d346f78ab768567256c8c58789a6ade4ede8f425a0",
"requires": [
"camera.frames"
],
"provides": [
"segmentation.mask"
],
"optional_inputs": [],
"parameter_choices": {
"cadence": [
1
]
},
"defaults": {
"cadence": 1
},
"state_policy": "stateless"
},
{
"module_id": "tgs",
"label": "TRAVEL TGS · облако и карта проходимости",
"group": "geometry",
"image_sha256": "f9278ab21aa65045be993dd19bffc25f49955e19598893ac78cc4761ca63ecf3",
"implementation_sha256": "52813392aabd02efc5c2b8f7c22ed88e3ef4cc8ad3aafeba2792efe503e29fe9",
"model_sha256": null,
"contract_sha256": "9dd80c8e2504559d2156fca933de6eb27901e35305e6853aeb84707e1cb13892",
"requires": [
"source.calibration",
"source.lidar",
"source.pose"
],
"provides": [
"geometry.costmap",
"geometry.ground"
],
"optional_inputs": [],
"parameter_choices": {
"history-seconds": [
1
]
},
"defaults": {
"history-seconds": 1
},
"state_policy": "causal-reset-at-source-start"
},
{
"module_id": "rf-detr",
"label": "RF-DETR Large · рамки объектов",
"group": "detection",
"image_sha256": "2b8b44be8e9ee4060aa6997fc4c025ad7120f37ecd720a9e59b5e02ac6c90f66",
"implementation_sha256": "4eb580eb938164bf0624e94fdc3b046aacf32fb8022c93c67fa26bab7c3d19d0",
"model_sha256": "b8a40b3580edff001ec9680de68707242294ff590ab296000fae371f1083f695",
"contract_sha256": "815d0afd24355da3a462e0423dab8284165c89cebd136d7c8584a32602178b96",
"requires": [
"camera.frames"
],
"provides": [
"detections.2d"
],
"optional_inputs": [],
"parameter_choices": {
"cadence": [
1
]
},
"defaults": {
"cadence": 1
},
"state_policy": "stateless"
},
{
"module_id": "object-distance",
"label": "Дистанция до объектов · K1 LiDAR",
"group": "range",
"image_sha256": "69d68f64981b41e5bcce1e642433e3d466b88c51942a5ba3aec9180d8ed04263",
"implementation_sha256": "0e3e426e2f768bc019a3715a50fc77a88626869abd9fa919e1aef5763d0c53da",
"model_sha256": null,
"contract_sha256": "5a6e446f009420352587f83388331b368d00950ab2fb896c6350aaa9b31c2e2e",
"requires": [
"detections.2d",
"source.calibration",
"source.lidar",
"source.pose"
],
"provides": [
"objects.ranged"
],
"optional_inputs": [],
"parameter_choices": {
"cadence": [
1
]
},
"defaults": {
"cadence": 1
},
"state_policy": "stateless"
}
]
}
+336
View File
@@ -0,0 +1,336 @@
{
"schema_version": "missioncore.observatory-domain-ontology/v1",
"ontology_id": "mission-core.observatory",
"version": "1.3.0",
"owner": "NODE.DC Mission Core",
"lifecycle": "local-runtime-canonical",
"entities": [
{
"id": "mission.transport-unit",
"identity": "transport_id",
"owner": "transport registry",
"lifecycle": "registered-to-retired"
},
{
"id": "mission.equipment-unit",
"identity": "equipment_id",
"owner": "equipment registry",
"lifecycle": "registered-to-retired"
},
{
"id": "observatory.equipment-mount",
"identity": "mount_id",
"owner": "equipment capture registry",
"lifecycle": "time-bounded"
},
{
"id": "observatory.capture-profile",
"identity": "capture_profile_id",
"owner": "equipment capture registry",
"lifecycle": "versioned"
},
{
"id": "observatory.recorded-session",
"identity": "source_session_id",
"owner": "session archive",
"lifecycle": "recording-to-immutable"
},
{
"id": "observatory.module-version",
"identity": "module_sha256",
"owner": "module registry",
"lifecycle": "installed-or-retired"
},
{
"id": "observatory.container-image",
"identity": "image_sha256",
"owner": "module registry",
"lifecycle": "built-to-retired"
},
{
"id": "observatory.worker-node",
"identity": "worker_node_id",
"owner": "worker registry",
"lifecycle": "registered-to-retired"
},
{
"id": "observatory.composition",
"identity": "composition_sha256",
"owner": "composition store",
"lifecycle": "immutable"
},
{
"id": "observatory.composition-run",
"identity": "run_id",
"owner": "composition run store",
"lifecycle": "append-only"
},
{
"id": "observatory.recorded-job",
"identity": "job_id",
"owner": "recorded job queue",
"lifecycle": "queued-to-terminal"
},
{
"id": "observatory.portable-result",
"identity": "result_id",
"owner": "portable result publisher",
"lifecycle": "immutable"
},
{
"id": "observatory.lab-projection",
"identity": "result_id",
"owner": "session catalog",
"lifecycle": "published"
},
{
"id": "observatory.lab-view-profile",
"identity": "result_id",
"owner": "replay presentation",
"lifecycle": "mutable-per-result"
},
{
"id": "observatory.viewer-pane",
"identity": "pane_id",
"owner": "replay presentation",
"lifecycle": "versioned-contract"
},
{
"id": "observatory.viewer-layer",
"identity": "layer_id",
"owner": "replay presentation",
"lifecycle": "versioned-contract"
}
],
"relations": [
{
"id": "observatory.equipment-mount.mounts_equipment",
"from": "observatory.equipment-mount",
"to": "mission.equipment-unit",
"cardinality": "many-to-one"
},
{
"id": "observatory.equipment-mount.attaches_to_transport",
"from": "observatory.equipment-mount",
"to": "mission.transport-unit",
"cardinality": "many-to-one"
},
{
"id": "observatory.recorded-session.captured_on_transport",
"from": "observatory.recorded-session",
"to": "mission.transport-unit",
"cardinality": "many-to-zero-or-one"
},
{
"id": "observatory.recorded-session.captured_with_equipment",
"from": "observatory.recorded-session",
"to": "mission.equipment-unit",
"cardinality": "many-to-many"
},
{
"id": "observatory.recorded-session.uses_equipment_mount",
"from": "observatory.recorded-session",
"to": "observatory.equipment-mount",
"cardinality": "many-to-many"
},
{
"id": "observatory.recorded-session.uses_capture_profile",
"from": "observatory.recorded-session",
"to": "observatory.capture-profile",
"cardinality": "many-to-one"
},
{
"id": "observatory.composition-run.uses_recorded_session",
"from": "observatory.composition-run",
"to": "observatory.recorded-session",
"cardinality": "many-to-one"
},
{
"id": "observatory.composition.contains_module",
"from": "observatory.composition",
"to": "observatory.module-version",
"cardinality": "one-to-many"
},
{
"id": "observatory.module-version.implemented_by_image",
"from": "observatory.module-version",
"to": "observatory.container-image",
"cardinality": "many-to-one"
},
{
"id": "observatory.container-image.installed_on_worker",
"from": "observatory.container-image",
"to": "observatory.worker-node",
"cardinality": "many-to-many"
},
{
"id": "observatory.composition-run.applies_composition",
"from": "observatory.composition-run",
"to": "observatory.composition",
"cardinality": "many-to-one"
},
{
"id": "observatory.composition-run.uses_job",
"from": "observatory.composition-run",
"to": "observatory.recorded-job",
"cardinality": "one-to-many"
},
{
"id": "observatory.recorded-job.executes_on_worker",
"from": "observatory.recorded-job",
"to": "observatory.worker-node",
"cardinality": "many-to-one"
},
{
"id": "observatory.recorded-job.publishes_result",
"from": "observatory.recorded-job",
"to": "observatory.portable-result",
"cardinality": "one-to-zero-or-one"
},
{
"id": "observatory.composition-run.projects_lab",
"from": "observatory.composition-run",
"to": "observatory.lab-projection",
"cardinality": "one-to-zero-or-one"
},
{
"id": "observatory.lab-projection.has_view_profile",
"from": "observatory.lab-projection",
"to": "observatory.lab-view-profile",
"cardinality": "one-to-zero-or-one"
},
{
"id": "observatory.module-version.exposes_layer",
"from": "observatory.module-version",
"to": "observatory.viewer-layer",
"cardinality": "many-to-many"
},
{
"id": "observatory.viewer-layer.belongs_to_pane",
"from": "observatory.viewer-layer",
"to": "observatory.viewer-pane",
"cardinality": "many-to-one"
}
],
"panes": [
{
"pane_id": "camera",
"label": "Камера",
"order": 10
},
{
"pane_id": "spatial",
"label": "Облако точек",
"order": 20
}
],
"layers": [
{
"layer_id": "camera.source",
"pane_id": "camera",
"label": "КАМЕРА",
"control": "toggle",
"order": 10
},
{
"layer_id": "camera.ddrnet",
"pane_id": "camera",
"label": "DDRNET",
"control": "toggle",
"order": 20
},
{
"layer_id": "camera.eomt",
"pane_id": "camera",
"label": "EOMT",
"control": "toggle",
"order": 30
},
{
"layer_id": "camera.detections",
"pane_id": "camera",
"label": "РАМКИ",
"control": "toggle",
"order": 40
},
{
"layer_id": "spatial.source-points",
"pane_id": "spatial",
"label": "ИСХ. ТОЧКИ",
"control": "toggle",
"order": 10
},
{
"layer_id": "spatial.local-slam",
"pane_id": "spatial",
"label": "ЛОК. SLAM",
"control": "toggle-with-settings",
"order": 20
},
{
"layer_id": "spatial.tgs",
"pane_id": "spatial",
"label": "TGS",
"control": "toggle",
"order": 30
}
],
"module_projections": [
{
"module_id": "ddrnet",
"configuration_label": "DDRNet-39 · GOOSE",
"layers": [
"camera.source",
"camera.ddrnet"
]
},
{
"module_id": "eomt",
"configuration_label": "EoMT Large · Cityscapes",
"layers": [
"camera.source",
"camera.eomt"
]
},
{
"module_id": "rf-detr",
"configuration_label": "RF-DETR Large",
"layers": [
"camera.source",
"camera.detections"
]
},
{
"module_id": "tgs",
"configuration_label": "TRAVEL TGS",
"layers": [
"spatial.source-points",
"spatial.local-slam",
"spatial.tgs"
]
},
{
"module_id": "object-distance",
"configuration_label": "Дистанция до объектов · K1 LiDAR",
"layers": [
"camera.source",
"camera.detections",
"spatial.source-points",
"spatial.local-slam"
]
}
],
"named_queries": [
"recording.capture-context",
"composition.configuration-label",
"composition.member-results",
"composition.viewer-layers",
"composition.ready-state",
"lab.view-profile"
],
"platform_sync": {
"mode": "none",
"promotion_gate": "stable cross-product meaning with an agreed Platform Ontology migration",
"platform_repository_is_runtime_dependency": false
}
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long