{
  "schema": "terrauniversalis.temperatura_universalis.v0",
  "id": "temperatura_universalis",
  "name": "Temperatura Universalis",
  "status": "primera_rama_ontologica_balanceada",
  "created_at": "2026-06-16",
  "canonical_path": "sistemas/temperatura-universalis.json",
  "purpose": "Registrar la primera rama ontologica balanceada por metricas de colores, valores e indices operativos para audio, video, MIDI, ASIO y sincronizacion Universalis.",
  "governance": {
    "source": "operator_declaration_current_chat",
    "lex_route": "terrauniversalis:/lex",
    "execution_policy": "registro_estructural_no_ejecucion_automatica",
    "safety": [
      "No transmite senales por si sola.",
      "No autoriza puertos sin certificacion, verificacion, correccion y cumplimiento lex.",
      "No sustituye mappings fisicos ni identidades MIDI reales.",
      "Toda salida audio/video/MIDI debe tener fallback y auditoria."
    ]
  },
  "ontological_branch": {
    "id": "rama_ontologica_001_temperatura",
    "name": "Temperatura Universalis",
    "balance_model": "color_value_index",
    "description": "Nucleo de lectura de temperatura operacional por color, valor e indices incrustados. Sirve como analogia transversal para clasificar estado, intensidad, riesgo, energia, sincronizacion y disponibilidad.",
    "first_virtualization_core": {
      "id": "nucleo_virtualizacion_midi_asio_stereo_96_a14",
      "label": "midi.asio.stereo.96-a14",
      "status": "available",
      "domain": [
        "midi",
        "asio",
        "stereo",
        "audio",
        "video",
        "sync"
      ],
      "operator_note": "available primera clasificacion de color para audio video"
    }
  },
  "temperature_scale": {
    "unit": "universalis_color_value",
    "range": {
      "min": 0,
      "max": 100
    },
    "bands": [
      {
        "id": "frio_estable",
        "value_min": 0,
        "value_max": 24,
        "color": {
          "name": "azul",
          "hex": "#2f80ed"
        },
        "meaning": "estable, bajo riesgo, observacion pasiva"
      },
      {
        "id": "templado_operativo",
        "value_min": 25,
        "value_max": 49,
        "color": {
          "name": "verde",
          "hex": "#27ae60"
        },
        "meaning": "operativo, sincronizable, apto para prueba controlada"
      },
      {
        "id": "caliente_atencion",
        "value_min": 50,
        "value_max": 74,
        "color": {
          "name": "amarillo",
          "hex": "#f2c94c"
        },
        "meaning": "requiere revision, posible duplicidad, latencia o conflicto"
      },
      {
        "id": "critico_bloqueo",
        "value_min": 75,
        "value_max": 100,
        "color": {
          "name": "rojo",
          "hex": "#eb5757"
        },
        "meaning": "bloquear ejecucion hasta verificar, corregir y certificar"
      }
    ]
  },
  "embedded_indices": [
    {
      "id": "audio_temperature",
      "domain": "audio",
      "signals": [
        "asio_device_available",
        "stereo_route_confirmed",
        "latency",
        "sample_rate",
        "fallback_output",
        "unwanted_synth_sound"
      ],
      "initial_sources": [
        "BEHRINGER UMC404HD",
        "Sonos 5 Line-In",
        "Windows output",
        "iPad djay Pro output"
      ],
      "status": "registered_pending_measurement"
    },
    {
      "id": "video_temperature",
      "domain": "video",
      "signals": [
        "visual_mapping_visible",
        "mirror_display_active",
        "color_zone_assigned",
        "operator_screen_context"
      ],
      "status": "registered_pending_measurement"
    },
    {
      "id": "midi_temperature",
      "domain": "midi",
      "signals": [
        "device_detected",
        "source_mapping_preserved",
        "duplicate_cc",
        "aftertouch_noise",
        "certified_output"
      ],
      "initial_sources": [
        "Hercules DJControl Mix",
        "Maschine MK2 izquierda",
        "Maschine MK2 derecha",
        "Komplete Kontrol M32",
        "Traktor Kontrol X1"
      ],
      "status": "registered_pending_measurement"
    },
    {
      "id": "asio_stereo_sync_temperature",
      "domain": "asio_stereo_sync",
      "signals": [
        "asio_running",
        "stereo_96_a14_available",
        "syncuniversalis_ready",
        "mayan_sync_ready"
      ],
      "status": "registered_pending_measurement"
    }
  ],
  "classification_axes": [
    {
      "axis": "color",
      "rule": "Color clasifica estado operacional; no cambia identidad fisica ni autoriza ejecucion por si solo."
    },
    {
      "axis": "value",
      "rule": "Valor numerico 0-100 expresa intensidad/temperatura operacional."
    },
    {
      "axis": "index",
      "rule": "Indice identifica dominio de medicion y senales observables."
    },
    {
      "axis": "zone",
      "rule": "Zona fisica, virtual o logica puede enriquecer lectura, pero requiere lex/certificacion para accion."
    }
  ],
  "technical_primary_channel": {
    "id": "channel_one",
    "name": "Canal One",
    "status": "registered_primary_technical_reporting_channel",
    "purpose": "A nivel tecnico y primario, todo evento escuchado debe poder decirle al tecnico que tipo de cosa es: audio, DLL, MIDI note, USB PnP iniciando u otro estado primario.",
    "channel_type": "logical_reporting_channel",
    "not_a_new_network_port": true,
    "not_a_physical_midi_channel_claim": true,
    "display_policy": "Mostrar color, icono, etiqueta y estado tecnico primario de forma forzosa cuando el listener clasifique el evento.",
    "classification_required": true,
    "fallback_classification": "unknown_unclassified_signal",
    "classes": [
      {
        "class_id": "audio_signal",
        "label": "AUDIO",
        "color": {
          "name": "azul_audio",
          "hex": "#2f80ed"
        },
        "icon_id": "speaker_wave",
        "technician_message": "esto es audio",
        "examples": [
          "ASIO output",
          "WASAPI output",
          "Behringer UMC404HD",
          "Sonos Line-In"
        ]
      },
      {
        "class_id": "dll_module",
        "label": "DLL",
        "color": {
          "name": "violeta_dll",
          "hex": "#9b51e0"
        },
        "icon_id": "module_block",
        "technician_message": "esto es un DLL o modulo cargado",
        "examples": [
          "mdnsNSP.dll",
          "driver module",
          "plugin module"
        ]
      },
      {
        "class_id": "midi_note",
        "label": "MIDI NOTE",
        "color": {
          "name": "verde_midi_note",
          "hex": "#27ae60"
        },
        "icon_id": "music_note",
        "technician_message": "esto es una nota MIDI",
        "examples": [
          "note_on",
          "note_off",
          "pad note"
        ]
      },
      {
        "class_id": "midi_cc",
        "label": "MIDI CC",
        "color": {
          "name": "cyan_midi_cc",
          "hex": "#56ccf2"
        },
        "icon_id": "sliders",
        "technician_message": "esto es un control MIDI CC",
        "examples": [
          "knob",
          "fader",
          "crossfader",
          "filter"
        ]
      },
      {
        "class_id": "midi_aftertouch_noise",
        "label": "MIDI AFTERTOUCH",
        "color": {
          "name": "rojo_ruido",
          "hex": "#eb5757"
        },
        "icon_id": "warning_triangle",
        "technician_message": "esto es aftertouch o ruido MIDI; no aprender ni reenviar sin filtro",
        "examples": [
          "AD 00 47",
          "AD 00 48"
        ]
      },
      {
        "class_id": "usb_pnp_starting",
        "label": "USB PNP",
        "color": {
          "name": "amarillo_usb",
          "hex": "#f2c94c"
        },
        "icon_id": "usb",
        "technician_message": "esto es USB PnP iniciandose o cambiando estado",
        "examples": [
          "device arrival",
          "device removal",
          "driver enumerating",
          "class compliant MIDI device"
        ]
      },
      {
        "class_id": "unknown_unclassified_signal",
        "label": "UNKNOWN",
        "color": {
          "name": "gris_unknown",
          "hex": "#828282"
        },
        "icon_id": "question_mark",
        "technician_message": "senal no clasificada; registrar y no ejecutar",
        "examples": [
          "raw event without parser",
          "missing device identity"
        ]
      }
    ],
    "event_template": {
      "channel": "channel_one",
      "timestamp": "pending",
      "class_id": "pending",
      "label": "pending",
      "color": "pending",
      "icon_id": "pending",
      "technician_message": "pending",
      "raw_event": "pending",
      "device_id": "pending",
      "route_id": "pending",
      "verification_status": "pending",
      "execution_allowed": false
    },
    "safety": "Canal One reporta y orienta tecnicamente; no ejecuta, no transmite ni autoriza por si solo."
  },
  "loaded_catalog_continuity_contract": {
    "id": "mayan_midi_loaded_catalog",
    "status": "registered_required_for_continuity",
    "principle": "Mayan MIDI no viene desnudo; debe viajar con un JSON suficientemente cargado para entender contexto, clasificar senales y empezar operacion controlada.",
    "purpose": [
      "preservar continuidad entre sesiones",
      "evitar reconstruir contexto manualmente",
      "permitir que humanos y sistemas entiendan que es cada senal",
      "dar base de catalogo antes de ejecutar mappings",
      "hacer viable post-analisis, deduplicacion y certificacion"
    ],
    "detail_policy": {
      "requested_detail_level": "maximo_sistematicamente_viable",
      "minimum_viable_detail": "suficiente_para_entender_y_operar_sin_contexto_externo",
      "raw_sensitive_content_policy": "minimizar_datos_sensibles_y_preservar_estructura",
      "unknown_policy": "si falta un dato, marcar pending_unknown; no inventar"
    },
    "required_catalog_sections": [
      {
        "section_id": "identity",
        "fields": [
          "schema",
          "id",
          "name",
          "version",
          "status",
          "created_at",
          "updated_at",
          "canonical_path"
        ]
      },
      {
        "section_id": "source_context",
        "fields": [
          "source_file",
          "source_mapping_id",
          "source_hash_if_available",
          "operator_declaration",
          "capture_session_id",
          "hardware_presence",
          "platform"
        ]
      },
      {
        "section_id": "devices_and_routes",
        "fields": [
          "device_id",
          "device_name",
          "device_class",
          "physical_identity",
          "route_id",
          "input_port",
          "output_port",
          "transport",
          "route_status"
        ]
      },
      {
        "section_id": "technical_primary_classification",
        "fields": [
          "channel_one.class_id",
          "label",
          "color",
          "icon_id",
          "technician_message",
          "raw_event",
          "parsed_event"
        ]
      },
      {
        "section_id": "mapping_layers",
        "fields": [
          "physical_hardware_native",
          "technical_midi_identity",
          "mayan_mirror_logical",
          "source_mapping_preserved",
          "color_zone_visual",
          "universalis_function",
          "safe_output_action"
        ]
      },
      {
        "section_id": "pad_display_and_report_values",
        "fields": [
          "pad_id",
          "native_physical_id",
          "mirror_logical_id",
          "corner_subdisplays",
          "no_shift_model",
          "with_shift_model",
          "temperature_value",
          "confidence",
          "risk_value",
          "sync_value",
          "latency_value",
          "verification_status"
        ]
      },
      {
        "section_id": "safety_and_execution",
        "fields": [
          "execution_allowed",
          "requires_certification",
          "requires_verification",
          "requires_correction",
          "fallback",
          "blocked_reasons",
          "lex_status"
        ]
      },
      {
        "section_id": "continuity",
        "fields": [
          "last_known_good_state",
          "next_steps",
          "pending_captures",
          "known_conflicts",
          "deduplication_notes",
          "audit_trail"
        ]
      }
    ],
    "startup_behavior": {
      "load_catalog_first": true,
      "allow_listening_without_execution": true,
      "allow_navigation_from_catalog": true,
      "allow_operation_only_after_verification": true,
      "fallback_if_catalog_missing": "start_in_safe_listener_only_mode"
    },
    "catalog_record_template": {
      "record_id": "pending",
      "schema": "pending",
      "source_context": {},
      "device": {},
      "route": {},
      "channel_one": {},
      "mapping_layers": {},
      "pad_display": {},
      "report_values": {},
      "safety": {
        "execution_allowed": false
      },
      "continuity": {}
    }
  },
  "system_branches": [
    {
      "id": "asio_stereo",
      "name": "ASIO Stereo",
      "role": "lectura audio de baja latencia y rutas estereo",
      "temperature_index": "asio_stereo_sync_temperature",
      "status": "registered"
    },
    {
      "id": "syncuniversalis",
      "name": "SyncUniversalis",
      "role": "sincronizacion transversal de senales",
      "temperature_index": "asio_stereo_sync_temperature",
      "status": "registered"
    },
    {
      "id": "mayan_sync",
      "name": "Mayan Sync",
      "role": "sincronizacion Mayan de mappings y rutas",
      "temperature_index": "midi_temperature",
      "status": "registered"
    },
    {
      "id": "mayan_warrior",
      "name": "Mayan Warrior",
      "role": "seguridad y guardia operacional de mappings sensibles",
      "temperature_index": "midi_temperature",
      "status": "registered"
    },
    {
      "id": "mayan_midi2",
      "name": "Mayan MIDI2",
      "role": "evolucion MIDI/MIDI2 para capas certificadas",
      "temperature_index": "midi_temperature",
      "status": "registered"
    },
    {
      "id": "admin_universalis",
      "name": "Admin Universalis",
      "role": "administracion, auditoria y revision de salidas",
      "temperature_index": "midi_temperature",
      "status": "registered_pending_lex_review"
    }
  ],
  "pad_subdisplay_model": {
    "id": "pad_corner_subdisplay_temperature_model",
    "status": "registered_as_data_model_no_visual_change",
    "applies_to": [
      "maschine_square_pads",
      "any_square_pad_in_system"
    ],
    "rule": "Cada pad cuadrado puede tener hasta cuatro sub-displays de categoria, colocados dentro del borde del pad, uno por esquina. Cada sub-display mide 1x1px y usa el color de la categoria correspondiente.",
    "geometry": {
      "unit": "px",
      "subdisplay_size": {
        "width": 1,
        "height": 1
      },
      "placement": "inside_pad_boundary",
      "corners": [
        {
          "corner_id": "top_left",
          "x_anchor": "left_inside",
          "y_anchor": "top_inside"
        },
        {
          "corner_id": "top_right",
          "x_anchor": "right_inside",
          "y_anchor": "top_inside"
        },
        {
          "corner_id": "bottom_left",
          "x_anchor": "left_inside",
          "y_anchor": "bottom_inside"
        },
        {
          "corner_id": "bottom_right",
          "x_anchor": "right_inside",
          "y_anchor": "bottom_inside"
        }
      ]
    },
    "category_slots": [
      {
        "slot": 1,
        "corner_id": "top_left",
        "category_id": "pending",
        "color_source": "temperatura_universalis.temperature_scale"
      },
      {
        "slot": 2,
        "corner_id": "top_right",
        "category_id": "pending",
        "color_source": "temperatura_universalis.temperature_scale"
      },
      {
        "slot": 3,
        "corner_id": "bottom_left",
        "category_id": "pending",
        "color_source": "temperatura_universalis.temperature_scale"
      },
      {
        "slot": 4,
        "corner_id": "bottom_right",
        "category_id": "pending",
        "color_source": "temperatura_universalis.temperature_scale"
      }
    ],
    "value_layer": {
      "id": "pad_report_values",
      "description": "Capa de valores modificables para reporte, diagnostico y analisis posterior.",
      "editable": true,
      "fields": [
        "temperature_value",
        "confidence",
        "risk_value",
        "sync_value",
        "latency_value",
        "operator_note",
        "verification_status"
      ],
      "execution_policy": "Valores de reporte no ejecutan acciones por si solos."
    },
    "shift_models": [
      {
        "model_id": "no_shift",
        "label": "modelo sin shift",
        "modifier_state": "shift_off",
        "status": "registered_pending_pad_capture"
      },
      {
        "model_id": "with_shift",
        "label": "modelo con shift",
        "modifier_state": "shift_on",
        "status": "registered_pending_pad_capture"
      }
    ],
    "listening_display_layers": {
      "id": "listening_layers_iconologia",
      "status": "registered_as_navigation_contract",
      "purpose": "Durante listening, el sistema debe mostrar los valores del pad como layers de informacion navegables con iconologia.",
      "display_policy": "Mostrar estado y navegacion; no ejecutar accion por visualizar un layer.",
      "layers": [
        {
          "layer_id": "category_color",
          "icon_id": "color_pixel",
          "iconology": "sub-display 1x1px con color de categoria",
          "value_source": "category_slots",
          "navigation_use": "identificar rapidamente categoria activa del pad"
        },
        {
          "layer_id": "temperature_value",
          "icon_id": "thermometer",
          "iconology": "temperatura/valor operativo",
          "value_source": "value_layer.temperature_value",
          "navigation_use": "ordenar o filtrar pads por intensidad operacional"
        },
        {
          "layer_id": "verification_status",
          "icon_id": "check_shield",
          "iconology": "verificacion/certificacion",
          "value_source": "value_layer.verification_status",
          "navigation_use": "distinguir pendiente, candidato, confirmado o bloqueado"
        },
        {
          "layer_id": "risk_value",
          "icon_id": "warning_triangle",
          "iconology": "riesgo",
          "value_source": "value_layer.risk_value",
          "navigation_use": "llevar al operador hacia conflictos, ruido o duplicidad"
        },
        {
          "layer_id": "sync_value",
          "icon_id": "sync_arrows",
          "iconology": "sincronizacion",
          "value_source": "value_layer.sync_value",
          "navigation_use": "ver estado sync/mayan sync/syncuniversalis"
        },
        {
          "layer_id": "shift_model",
          "icon_id": "shift_key",
          "iconology": "estado no_shift / with_shift",
          "value_source": "shift_models",
          "navigation_use": "alternar lectura base y lectura con shift"
        }
      ],
      "navigation_actions": [
        "focus_pad",
        "open_pad_inspector",
        "toggle_info_layer",
        "filter_by_color_band",
        "filter_by_verification_status",
        "compare_no_shift_with_shift"
      ],
      "safety": "Iconos y layers de listening son informativos y navegables; no son autorizacion de salida MIDI/audio/video."
    },
    "art025_guardrail": "El sub-display, color, valor o estado shift no cambia native_physical_id, technical_midi_identity ni source_mapping_id."
  },
  "measurement_record_template": {
    "record_id": "pending",
    "timestamp": "pending",
    "source_system": "pending",
    "domain": "audio|video|midi|asio_stereo_sync",
    "device_id": "pending",
    "zone_id": "pending",
    "color_band_id": "pending",
    "value": "0-100",
    "signals_observed": [],
    "source_mapping_id": "pending_if_applies",
    "technical_identity": {
      "midi_message": "pending_if_applies",
      "audio_route": "pending_if_applies",
      "video_context": "pending_if_applies"
    },
    "verification_status": "pending",
    "allowed_output_scope": [],
    "notes": "pending"
  },
  "links": {
    "map_in_universalis": "sistemas/map-in-universalis.json",
    "geo_zone_model": "sistemas/geo-zone-model.json",
    "politica_magna": "sistemas/politica-magna.json",
    "voto_universalis": "sistemas/voto-universalis.json",
    "mayantraktor_mapping": "mayantraktor-live/mayantraktor-mapping.json"
  }
}
