Структура узла NDDI

3. Структура узла NDDI

Компоненты· D-секция · Значения · Активности · Соединители · Грани

3. 1. Общие принципы

NDDI является единственным типом сущности в сети GNET. Всё, что существует в сети — это NDDI и отношения между ними. Операционные сети (OPNT), администраторы (ANOD), репозитории D-компонентов, сенсоры, эффекторы — все являются NDDI, различающимися только составом компонентов.

NDDI состоит из компонентов. Компонент — это элементарная единица узла, обладающая значением, статусом и возможностью участвовать в отношениях через соединители. Компонент — это не просто переменная. Это feature узла: значение + статус + соединители + метаданные. Однотипные компоненты могут быть объединены в группы для целей визуализации — грани многогранника NDDI (v-грань, a-грань, d-грань и т.д.).

Не все типы компонентов присутствуют в каждом NDDI. Набор компонентов определяется D-секцией — и именно D-секция является первым компонентом, который необходимо рассмотреть, так как она создаёт NDDI как сущность.

Порядок возникновения компонентов. D-компоненты являются первичными. Они представляют собой объектный код (ELF), хранящийся в узле-репозитории. Пока D-компоненты не собраны и не слинкованы — NDDI не существует как живая сущность. При линковке D-компонентов и запуске полученного кода появляются V-компоненты (значения) и A-компоненты (активности). Набор D + V + A даёт минимально живой узел, способный хранить значения и реагировать на входы. Этого достаточно для создания сети уровня SERN.

По мере добавления новых D-компонентов (генов) и перелинковки появляются компоненты высших уровней:

Уровень

Новые компоненты

Что добавляется

SERN (DOM0)

D, V, A

Базовый узел: код, значения, реакции

DOM1

+ L

Позиция в пространственной карте

DOM2

+ R

Инвариантное распознавание объектов

DOM3

+ T, B

Целевые состояния и вектор сплайса

DOM6

+ S

Символьные компоненты

DOM8

+ N, P

Нарративы и предикаты

DOMA

+ C

Понятия

DOMB

+ W

Вектор противоречия

Эволюционная иерархия DOM из Книги 1 (GTOM) отображается на состав компонентов NDDI: каждый новый уровень DOM — это новые D-компоненты (гены), которые при линковке порождают новые типы компонентов в узле.

Персистентность. NDDI создаётся навсегда и никогда не удаляется — аналогично нейронам в мозге человека. Созданный узел со всеми компонентами и выросшими соединителями размещается на устройстве постоянной памяти, которое является его первичным местом хранения.

Для осуществления активности (реакции на входящие отношения, вычисления, передача значений по соединителям) NDDI должен быть активирован в оперативной памяти. Однако первичным хранилищем остаётся постоянная память.

Критические данные — компоненты с внешними соединителями, соединители с контр-именами, D-секция — всегда синхронизируются с постоянной памятью. Запись критических данных является синхронной операцией, аналогичной транзакциям в СУБД со строгой моделью ACID. Это вызывает задержки — но гарантирует, что при любом сбое ни одно отношение не потеряно, ни одно критическое значение не повреждено.

Некритические данные — внутренние переменные, промежуточные вычисления, кэши — могут существовать только в оперативной памяти и теряться при деактивации узла. При повторной активации они пересчитываются из критических данных.

Традиционная модель: программа живёт в RAM, иногда сохраняется на диск. Модель GNET: NDDI живёт на постоянной памяти, иногда активируется в RAM для вычислений. Постоянная память — источник истины. RAM — кэш.

3. 2. D-компоненты (ДНК узла)

D-компоненты являются первичными — без них NDDI не существует как сущность. Все остальные компоненты (V, A, L, R, B, T, S, N, P, C, W) появляются как результат линковки и запуска D-компонентов.

Природа D-компонента. D-компонент — это скомпилированный объектный код в формате ELF (перемещаемый .o файл). По аналогии с биологией, D-компонент является геном: самостоятельным модулем, который в изоляции является просто записью, но при сборке с другими генами порождает живой организм.

D-компоненты хранятся в двух местах:

  1. В узлах-репозиториях. Это специализированные NDDI, содержащие библиотеки D-компонентов — «генофонд» системы. Репозитории являются источником генов для создания новых узлов. OPNT обращается к репозиторию, выбирает нужные D-компоненты и собирает из них новый NDDI.

  2. В D-секции конкретного NDDI. После создания узла его D-компоненты хранятся в D-секции на постоянной памяти. Они являются первичным описанием узла, из которого исполняемый код может быть пересобран в любой момент.

Состав D-секции. D-секция NDDI содержит:

  1. D-компоненты (гены) — множество объектных ELF-файлов. Каждый реализует определённую функциональность: один ген может отвечать за обработку v-отношений, другой — за вычисление b-вектора, третий — за внутреннюю логику активации. Количество генов определяет сложность узла.

  2. Линкер-скрипты (.ld) — правила сборки генов в исполняемый код. Главная функция: фиксация абсолютных адресов LOCN для компонентов с внешними соединителями. Линкер-скрипт указывает компоновщику: «переменная v_component_1 ОБЯЗАНА лежать по адресу 0x00001000». Это гарантирует, что при любой перелинковке внешние соединители партнёров остаются валидными.

  3. ELF-таблицы слинкованной программы — таблица символов, таблица глобальных смещений (GOT), таблица перемещений и другие служебные структуры. Необходимы для работы слинкованного кода и для последующей перелинковки.

Линковка. При создании NDDI (или при получении новых D-компонентов через d-отношения) выполняется линковка: компоновщик берёт D-компоненты и линкер-скрипты и собирает исполняемый код. При линковке все ссылки на компоненты с внешними соединителями жёстко привязываются к их абсолютным адресам LOCN.

Перелинковка. При получении нового D-компонента через d-отношение от другого узла, ген добавляется в D-секцию. Перелинковка не происходит немедленно — она выполняется в период неактивности узла (аналог биологического сна и default mode network). Новый код собирается в резервной области, и только при успешной сборке происходит атомарное переключение на новый код. При ошибке сборки — узел продолжает работать на старом коде. Данные (V-компоненты) не затрагиваются — их адреса LOCN фиксированы и сохраняются при перелинковке.

Передача D-компонентов (d-отношение). D-компоненты могут быть переданы от одного NDDI к другому через d-отношение. Это механизм «горизонтального переноса генов». D-отношение всегда использует режим с подтверждением доставки — потеря даже одного байта объектного кода недопустима.

3. 3. V-компоненты (значения)

V-компонент — аналог переменной в архитектуре фон-Неймана, но более сложная структура. V-компонент — это значение, записанное в ячейку памяти, плюс его статусы, соединители и метаданные.

Значение. Числовое значение определённого формата: целое (int32, int64), вещественное (float32, float64), или массив. Формат определяется D-компонентом, создавшим этот V-компонент при линковке.

Статус. V-компонент может находиться в состояниях:

  1. Актуальное — значение вычислено и является текущим.

  2. Изменённое — значение было обновлено входящим отношением, но ещё не обработано A-компонентом.

  3. Неопределённое — значение не инициализировано (после холодного старта).

Изменение статуса на «Изменённое» является триггером для активации A-компонентов.

Соединители. V-компонент может иметь произвольное количество входящих и исходящих соединителей (POCN). Через входящие — узел получает значения от других NDDI. Через исходящие — передаёт своё значение другим. Все соединители V-компонента участвуют только в v-отношениях.

Критичность. V-компонент с хотя бы одним внешним соединителем является критическим: его LOCN фиксирован навсегда, его значение синхронизируется с постоянной памятью. V-компонент без внешних соединителей — некритический.

3. 4. A-компоненты (активности)

A-компонент — пара (event + handler). Event = изменение V-компонента через входящий соединитель. Handler = функция из Code Section. A-компоненты определяют поведение: что узел делает, когда получает новое значение.

Природа A-компонента. A-компонент — это указатель на функцию в исполняемом коде. Когда V-компонент переходит в статус «Изменённое», срабатывает связанный с ним A-компонент: управление передаётся соответствующей функции, которая обрабатывает новое значение, вычисляет результаты и может обновить другие V-компоненты.

Два типа A-компонентов.

A-компоненты разделяются на два типа, определяющих характер выполняемой работы:

Пакет активности (APAK — Activity PAcKage). Блок последовательного кода: одна или несколько инструкций, выполняемых линейно от начала до конца. APAK получает на вход значения V-компонентов, выполняет вычисления и записывает результаты в другие V-компоненты. Аналог: тело функции в C/C++/Rust, блок { ... }, последовательность инструкций процессора. Визуализируется как розовый прямоугольник.

Йота активности (AIOT — Activity IOTa). Логический переход: точка ветвления, которая на основании условия направляет поток выполнения к одному из пакетов. AIOT не выполняет вычислений — она только оценивает условие и выбирает путь. Аналог: if/else, switch/case в C/C++/Rust, условный переход jne/jmp в ассемблере. Визуализируется как желтый шестигранник.

Вместе APAK и AIOT образуют граф выполнения внутри NDDI: пакеты выполняют вычисления, йоты управляют потоком. Это аналог блок-схемы, где прямоугольники — операции, а шестигранники — условные переходы.

Пример: входящее v-отношение записывает новую температуру в V-компонент «sensor_temp». Это событие активирует AIOT, который проверяет: температура выше порога? Если да — управление передаётся APAK «alarm», который обновляет V-компонент «alarm_state» и вызывает отправку по исходящему соединителю. Если нет — управление передаётся APAK «normal», который обновляет V-компонент «status».

Цепочка реакций. Обновление одного V-компонента активирует A-компонент (APAK или AIOT), который может обновить другой V-компонент, что активирует следующий A-компонент — и так далее. Цепочка продолжается до тех пор, пока все обновлённые V-компоненты не будут обработаны. Это аналог распространения возбуждения в нейронной сети.

Исходящие отношения. Если в ходе цепочки реакций обновляется V-компонент, имеющий исходящие соединители, — для каждого соединителя формируется сплайс-дейтаграмма и передаётся в сеть. Внутренняя активность узла порождает сетевые события.

Связь с D-компонентами. Функции, на которые указывают A-компоненты (как APAK, так и AIOT), определены в D-компонентах (генах). При перелинковке A-компоненты обновляются — указатели перенаправляются на новый код. V-компоненты (данные) остаются на своих местах.

3. 5. Минимальный узел: D + V + A

Набор D + V + A является минимально живым узлом. Он способен:

  1. Существовать на постоянной памяти (D-секция хранит код)

  2. Быть активированным в RAM

  3. Принимать входящие v-отношения (значение записывается в V-компонент)

  4. Реагировать на изменения (A-компонент обрабатывает новое значение)

  5. Передавать результаты по исходящим соединителям (сплайс-дейтаграмма)

Этого достаточно для создания сети уровня SERN — сенсорно-рефлекторной сети, в которой узлы хранят значения и реагируют на входы. Замкнутый цикл «сенсор → обработка → мотор» реализуется цепочкой NDDI, связанных v-отношениями.

Минимальный узел D + V + A — цифровой аналог простейшего нейрона: принял сигнал, обработал, передал. Вся сложность высших уровней появляется через добавление новых D-компонентов — генов, порождающих новые типы компонентов.

3. 6. Компоненты высших уровней

По мере добавления D-компонентов (генов) в D-секцию и перелинковки, в узле появляются компоненты высших уровней. Каждый тип компонента высшего уровня наследует свойства V-компонента (значение + статус + соединители + критичность), но добавляет специфический формат значения и специфический тип отношений.

L-компонент (Location, DOM1). Позиция объекта в пространственной карте MAP1. Значение: вектор координат. L-отношения связывают L-компоненты разных узлов для построения аллоцентрической модели пространства.

R-компонент (Recognition, DOM2). Инвариантное распознавание объекта. Значение: Feature Vector — компактная репрезентация, продукт свёрточной нейросети CNN1. R-отношения передают Feature Vectors между узлами.

T-компонент (Target, DOM3). Целевое состояние объекта. Значение: координаты или параметры целевого состояния. T-отношения связывают узлы в контексте целеполагания.

B-компонент (Behavior, DOM3). Вектор сплайса физического уровня (b-вектор). Значение: пара состояний — начальное и целевое. B-отношения передают поведенческие импульсы — направленные изменения в физическом пространстве.

S-компонент (Symbolic, DOM6). Символьный компонент без пространственной привязки. Значение: вектор в семантическом пространстве, продукт свёрточной нейросети CNN2. S-отношения связывают символы между узлами.

N-компонент (Narrative, DOM8). Нарративная структура. Значение: элемент графа триад KLEN. N-отношения передают нарративные структуры между узлами.

P-компонент (Predicate, DOM8). Предикативный вектор сплайса символьного уровня. Значение: идентификатор триады KLEN + вес отношения. P-отношения устанавливают семантические связи между символами.

C-компонент (Concept, DOMA). Понятие. Значение: вектор в пространстве MAPA, продукт свёрточной нейросети CNN3. C-отношения передают Понятия между узлами.

W-компонент (Widerspruch, DOMB). Вектор противоречия. Значение: расстояние между двумя C-компонентами (C_есть → C_должно). W-отношения передают мотивационные импульсы.

Каждый тип компонента участвует только в отношениях своего типа. Это строгая типизация: сплайс-дейтаграмма содержит тип отношения, и принимающая сторона проверяет соответствие типа пакета и типа целевого компонента.

3. 7. Соединители (POCN)

Соединитель (POCN — Point Of CoNnection) — структура данных, обеспечивающая участие компонента в отношении с другим узлом. Визуально соединитель представляется как штырёк (исходящий) или розетка (входящий) на теле компонента.

Каждый соединитель является отдельной структурой данных с собственным LOCN и содержит:

Поле

Размер

Описание

LOCN

32 бит

Собственный адрес соединителя. Фиксирован навсегда.

Контр-имя: UNON

64 бит

Глобальное имя узла-партнёра

Контр-имя: LOCN

32 бит

Адрес компонента/соединителя партнёра

Тип отношения

16 бит

Наследуется от компонента (v, l, d, r, b, s, n, p, c, w)

Режим доставки

8 бит

С подтверждением / без подтверждения

Шифрование

8 бит

Нет / симметричное / асимметричное

Ключ

переменный

Ключ шифрования (если применимо)

Динамическое создание. Соединители создаются при жизни узла через протокол SYGN (Глава 4). Новый соединитель — новый «синапс»: создаётся структура данных, назначается LOCN, прописывается контр-имя.

Направленность. Соединитель является либо входящим (розетка — принимает значения), либо исходящим (штырёк — передаёт значения). Одно отношение между двумя узлами состоит из исходящего соединителя на одной стороне и входящего на другой. Для двунаправленного обмена необходимы два отношения.

Множественность. Один компонент может иметь произвольное количество соединителей. V-компонент с тремя исходящими соединителями передаёт своё значение трём разным узлам одновременно. V-компонент с пятью входящими — принимает значения от пяти источников.

Критичность. Все соединители являются критическими данными: их LOCN фиксирован, их контр-имена сохраняются на постоянной памяти. Потеря соединителя означает разрыв отношения.

Механизм передачи. При срабатывании компонента (изменении его значения), код узла перебирает все исходящие соединители данного компонента и для каждого формирует сплайс-дейтаграмму, содержащую контр-имя (UNON+LOCN партнёра) и новое значение. Сплайс-дейтаграмма передаётся системе маршрутизации, которая определяет уровень доставки (G1/G2/G3) и отправляет пакет.

Аналогия: компонент — нейрон. Соединители — синапсы. Один нейрон может иметь тысячи синапсов, каждый ведущий к другому нейрону. При возбуждении нейрона сигнал передаётся по всем синапсам одновременно.

3. 8. Сенсорные и эффекторные компоненты

Некоторые NDDI содержат компоненты, связанные не с другими узлами через соединители, а с физическими устройствами.

Сенсорный компонент — V-компонент, значение которого определяется не входящим отношением, а физическим сигналом: свет, звук, давление, температура, напряжение. Сенсорный компонент является входной точкой сети GNET: физическая реальность попадает в сеть через значения сенсорных компонентов.

Эффекторный компонент — V-компонент, изменение значения которого приводит не к формированию сплайс-дейтаграммы, а к физическому воздействию: движение мотора, генерация звука, изменение напряжения. Эффекторный компонент является выходной точкой сети.

На уровне спецификации GNET сенсорные и эффекторные компоненты неотличимы от обычных V-компонентов. Другие узлы видят только UNON+LOCN и тип компонента. Различие существует только на уровне платформы GATE, где конкретные LOCN привязаны к аппаратным регистрам.

3. 9. Грани многогранника

Для визуализации NDDI используется метафора многогранника. Каждая грань содержит компоненты одного типа:

  1. D-грань — D-компоненты (код, гены, линкер-скрипты)

  2. V-грань — V-компоненты (значения)

  3. A-грань — A-компоненты (активности)

  4. L-грань — L-компоненты (позиции)

  5. R-грань — R-компоненты (распознавание)

  6. T-грань — T-компоненты (цели)

  7. B-грань — B-компоненты (поведение)

  8. S-грань — S-компоненты (символы)

  9. N-грань — N-компоненты (нарративы)

  10. P-грань — P-компоненты (предикаты)

  11. C-грань — C-компоненты (понятия)

  12. W-грань — W-компоненты (противоречия)

Соединители визуализируются как штырьки и розетки на теле компонентов, выступающие за поверхность грани. Отношение между двумя узлами — провод, соединяющий штырёк одного узла с розеткой другого.

Для куба — одновременно видны три грани, чего достаточно в большинстве случаев для отображения основных типов компонентов. Для более сложных узлов могут использоваться многогранники с большим числом граней.

Визуализация является инструментом разработки и отладки, а не частью спецификации GNET.

3. 10. Жизненный цикл NDDI

Создание. NDDI создаётся операционной сетью (OPNT). OPNT выбирает D-компоненты из узла-репозитория, собирает D-секцию, инициирует создание узла на платформе GATE. Платформа назначает GANN, выполняет линковку D-компонентов, размещает узел на постоянной памяти. OPNT устанавливает начальные отношения через SYGN.

Активность. При поступлении входящего отношения на узел, находящийся в неактивном состоянии, платформа GATE активирует узел в оперативной памяти: загружает код и критические данные, передаёт полученное значение в целевой компонент, запускает цепочку реакций A-компонентов. После завершения обработки узел может оставаться активным (если ожидаются новые отношения) или быть деактивирован.

Деактивация. При отсутствии активности платформа GATE может деактивировать узел: критические данные уже на постоянной памяти (синхронизированы по ACID), некритические данные могут быть отброшены, код не нужно сохранять (он собирается из D-секции). При повторной активации — код перелинковывается из D-секции, критические данные загружаются с постоянной памяти.

Перелинковка (эволюция). При получении нового D-компонента через d-отношение, ген добавляется в D-секцию. Перелинковка выполняется в период неактивности. Новый код собирается в резервной области. При успешной сборке — атомарное переключение на новый код. При ошибке — узел сохраняет старый код. Данные не затрагиваются: адреса LOCN фиксированы и сохраняются при перелинковке.

Перелинковка в период неактивности — аналог биологического сна и default mode network. Система накапливает новые D-компоненты в течение активного периода и перестраивает свою архитектуру в период покоя. «Утро вечера мудренее» — потому что за ночь D-секция была перелинкована.

Неудаляемость. NDDI не может быть удалён обычным способом. Удаление возможно только привилегированным администратором (ANOD) в исключительных случаях и сопровождается уведомлением всех узлов, имеющих соединители к удаляемому NDDI, для корректного разрыва отношений.

3. 11. Переход к Главе 4

Настоящая глава определила внутреннюю структуру NDDI: компоненты как элементарные единицы узла, D-компоненты как первичные (создающие NDDI как сущность), V и A как минимальный набор для живого узла, компоненты высших уровней, соединители как точки участия в отношениях, персистентность как базовое свойство.

Глава 3 определяет формат сплайс-дейтаграммы — пакета, реализующего отношение между узлами — и детальную спецификацию каждого типа отношений.

Содержание

3. Структура узла NDDI