# Семантическая память (_6_semantic_memory)

## Назначение

Модуль реализует **семантическую память** — связь образа стимула (FinalImageId) с его **значимостью** в данных условиях (базовое состояние + эмоция). Значимость используется ориентировочным рефлексом (новизна, порог OR_well_known), моделями понимания и принятием решений.

## Условия записи

- При взаимодействии до запуска рефлексов фиксируется «ноль» (getDiffImportance).
- После срабатывания рефлексов (через пульс) снова вызывается getDiffImportance; полученное значение z — семантическая значимость данного образа в текущих условиях.
- Запись уникальна по тройке: **wellNormaBad** (1/2/3), **emotionId**, **finalImageId**. Для каждой такой тройки хранятся meanImportance, samplesCount, lastImportance; при новом опыте пересчитывается среднее.

**Лупа значимости** (`registerSemanticSample`): при уже «тихой» семантике (|meanImportance| ≤ 0,5) и **норме всех виталов** (ни один Kbad > 0) в усреднение подмешивается не сам `getDiffImportance()`, а `normalizeValue` от **сырого** diff умноженного на 5 и ограниченного по модулю 3 (`LastDiffImportanceRaw` в `prepare.js`). Так слабые сигналы сильнее выделяются на фоне почти нулевой памяти, но лупа отключается при стрессе по виталам.

## Основные компоненты

- **SemanticMemoryIndex** — индекс по (well, emotionId) → объекты по finalImageId (meanImportance, samplesCount).
- **FinalImage.js** — конечные образы восприятия (FinalImages): пары (id, stimulIds). getOrCreateFinalImageId(stimulIds) возвращает или создаёт ID образа по набору ID стимулов.
- **Emotion.js** — эмоция как ID сочетания активных базовых контекстов (getOrCreateEmotionId).
- **Understanding_model.js** — модели понимания на основе семантики.

## Файлы

- **semantic_memory.js** — класс SemanticObjectImportance, индексация, регистрация опыта (`registerSemanticSample`), сохранение/загрузка. При **восстановлении** из снимка состояния поля `meanImportance`, `lastImportance`, `samplesCount` переносятся в объект явно (с нормализацией типов); создание объекта для восстановления идёт **без** лишнего `addSample(meanImportance)`, чтобы не искажать счётчик и не оставлять заниженный `samplesCount` при дубликатах ключей или строковых значениях из хранилища.
- **FinalImage.js**, **Emotion.js**, **Understanding_model.js** — образы, эмоции и использование семантики.

Семантическая память сохраняется в IndexedDB и в файл; от неё зависят условия запуска ОР и формирования кадров ЭП (порог samplesCount >= OR_well_known).

Дополнительно: после добавления нового семантического образца (`registerSemanticSample`) `semantic_memory.js` может вызывать точечное обновление UI-индикатора «готовности к ОР» у кнопок стимула (чтобы бордер не перерасчитывался на каждом пульсе). После асинхронной загрузки семантики из IndexedDB вызывается обновление индикаторов, в т.ч. повтор на следующем тике (`setTimeout(0)`), чтобы снизить рассинхрон с уже выставленными контекстами после старта.
