# Пульт управления Beast — руководство для оператора

Документ описывает интерфейс «Существо Beast, пульт связи» в `index.html`: назначение зон экрана, индикацию состояния, вывод сообщений и все элементы управления стимулами. Поведение привязано к коду в `beast/` (см. также `manuals/Mad_programmer_manual.md`).

## Введение: что такое Beast и как он «живёт»

Beast — браузерная модель существа с дискретным временем пульса (≈1 с): каждый пульс обновляются виталы (- жизненные параметры гомеостаза, см. теорию: fornit.ru/71218), базовые контексты поведения, дерево восприятия, диспетчер циклов осмысления (ФО), эпизодическая и семантическая память, рефлексы и автоматизмы.

- Жизнь измеряется счётчиком пульсов `Cur_puls_val` (сохраняется в `localStorage` и может входить в файл памяти).
- Развитие — это накопление опыта: образцы семантики по стимулам, ветки дерева восприятия, эпизоды, абстракции, моторные и ментальные автоматизмы, цели, гештальты; с ростом опыта меняется готовность к ориентировочному рефлексу (ОР), работа уровней сознания (2–4) и доступность сценариев (игра, обучение, сон, сновидения).

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

## 1. Назначение и возможности пульта

Назначение

- Задать внешнюю ситуацию через мотивирующие, позитивные, негативные и нейтральные стимулы (в том числе режимы «Играть» / «Учить»).
- Наблюдать соматическое состояние (виталы), эмоционально-контекстное (базовые контексты, Плохо/Норма/Хорошо), когнитивный контекст (дерево восприятия, инфокартина, активность Beast).
- Управлять удержанием базового состояния (B / W), измерять diff значимости, включать сон с ограничением стимулов.
- Работать с памятью: сохранение/загрузка JSON на диск (пульс, виталы, семантика, дерево, эпизоды, рефлексы и др. — реестр `BEAST.persistentModules` в `beast/date/saving_ui.js`).
- Для отладки и обучения: кнопки сброса условных рефлексов и семантики (Ух, Sx - справа от строки "Активность Beast"), кнопка Тест для прерывания осмысления (Тест), режим тестирования эпизодической памяти (кнопка т), просмотр модели понимания стимула (i на кнопке).

В режиме сна кликабельны только заранее некоторые ("сторожевые") стимулы (см. раздел про сон).

## 2. Как индицируется состояние и другие показатели

### 2.1. Верхняя строка

Элемент | Смысл
--- | ---
Зелёный кружок + число | Пульс жизни: мигающий круг (`pulseCircle`) и счётчик `pulseCounter` = число пульсов.
Синяя точка у «Сохранить» (`saveIndicator`) | Идёт запись в IndexedDB и/или на диск; кратковременное отображение (не менее ~300 ms).
Сохранить / Загрузить | Экспорт/импорт памяти в выбранную папку (File System Access API).

### 2.2. Жизненные параметры (виталы)

- Ряд индикаторов 0–100%: цвет от светло-зелёного (0) к красному (100).
- Подписи: краткое name и развёрнутый title во всплывающей подсказке.
- Щелчок по виталу — диалог задать value и shift (скорость дрейфа за пульс).
- Кнопка × у заголовка — сброс виталов к умолчаниям (с подтверждением).

Имена виталов (Id 1–10): Раны, Удушье, Жажда, Жара, Холод, Голод, Стресс, Гон, Общение, Интерес (см. `beast/_1_Genetic_vitals/vitals.js`).

### 2.3. Базовые контексты поведения

- Заголовок: «Состояние базовых контекстов поведения» + подпись Плохо / Норма / Хорошо + текст «стало лучше/хуже на …» по `DiffZnacher`.
- Индикаторы — прямоугольники с именем контекста: неактивные серые, активные — светло-зелёные со свечением.
- Рамка блока: при Плохо — розовая, при Хорошо — зелёная; при удержании контекстов (жёлтый фон) — счётчик пульсов по центру экрана сверху и жёлтый фон заголовка/ряда.
- Кнопки (справа в заголовке): Сон, B (удержание Плохо), W (удержание Хорошо), diff — см. разделы 4 и 6.
- Счётчик над B/W: оставшиеся пульсы удержания Плохо или Хорошо.

### 2.4. Полоса ожидания ответа

Тонкая синяя полоса (`epWaitingProgressFill` в `epWaitingProgressWrap`) появляется как прогресс периода ожидания ответа оператора после эпизодического кадра (`response_waiting_period`). Подсказка у обёртки в `title`.

### 2.5. Блок активной ветки дерева восприятия

- Текст ветки (`perceptionTreeActiveBranchText`), кнопка т — режим тестирования формирования эпизодической памяти (подсветка активного состояния).
- Строка эпизодов (`perceptionTreeEpisodesLine`), кнопка ✕ — очистка всей эпизодической памяти (показывается не всегда — по логике UI).
- `epTotalCountLabel` — суммарный счётчик эпизодов (если заполняется кодом).
- 📋 — копирование содержимого блока в буфер обмена.

### 2.6. Активность Beast

Серый блок с текстом текущей активности (многострочный). Справа: 📋 (копировать), Ух (сброс всех условных рефлексов), Sx (сброс всей семантической памяти). Рамка блока согласована с Плохо/Хорошо у строки контекстов.

### 2.7. Информационная картина (расширенная строка)

Под заголовком «Информационная картина»:

- Синяя лампочка (`infoThinkingIndicator`) — кратковременно (≈0,5 с) при событиях осмысления (`Info_thinkingFlash`).
- Главный цикл ID — идентификатор текущего главного цикла сознания.
- Чисто фоновых процессов — число фоновых циклов.
- очередь прерываний — длина LIFO очереди прерванных главных циклов.
- Кликабельные счётчики: фон: — список фоновых циклов; авто: / м-авто: / абстр: / цели: / ситуации: — с уточняющими диалогами; у первых четырёх с × — очистка соответствующих структур (моторные/ментальные автоматизмы, абстракции, цели жизненного опыта, образы ситуаций).
- гешт: — гештальты; фант: — сюжет фантазма (детализация по клику).

### 2.8. Таблица ячеек инфокартины

Ячейки с подписью; жёлтый фон (`info-cell-active`) — значимое/активное значение. Щелчок открывает детализацию (`Info_showDetail(...)`): режим, тема, ситуация, сюжет фантазма, проблема, шаг, стимул, Base, эмоция, активность, а также детекторы (критический витал, важная проблема, реагирование по правилу, шок, резкое ухудшение, игра, обучение, негативные эффекты автоматизмов, «плохо», стимул с пульта, поиск, учитель, игнор оператора, неудовлетворённость, непонимание, сомнение, защита, страх, агрессия, важный объект, настроение, новизна, семантика, трудная проблема, эффекты действий, ожидание ответа, серии без эффекта, полезность автоматизма, найденный автоматизм и т.д.).

См. структуру `InfoPicture` в `beast/_9_Conscience/informing.js`.

## 3. Как выводятся сообщения

### 3.1. Статические (в интерфейсе страницы)

- Текст в «Активность Beast», обновляемый логикой сознания и вспомогательных модулей.
- Подписи, счётчики, title у кнопок и ячеек (всплывающие подсказки браузера).
- Информационная картина и её ячейки — постоянное отражение `InfoPicture` после `Info_updateView()`.

### 3.2. Всплывающие (модальные диалоги)

Модуль `beast/sys/alerts/alerts.js`:

Функция | Назначение
--- | ---
`show_alert(message, timeShow, options)` | HTML-сообщение; `timeShow > 0` — авто закрытие через N ms; `timeShow === 0` — кнопка «Закрыть».
`show_confirm(message, callback)` | Да / Нет → `callback('OK' | 'NO')`.
`show_prompt(message, callback)` | Ввод текста → `callback(value)`.
`close_alert()` | Закрыть активный диалог.

Особый тип `dialogType: 'cyclelog'` — окно лога главного цикла (последние строки `debugLog`), обновляется по мере записи; закрытие пользователем помечает лог как подавленный для этого цикла. Не перекрывает другие модалки произвольного типа.

Дополнительные примеры содержимого алертов:

- Щелчок по Плохо/Норма/Хорошо в заголовке контекстов — `DiffZnacher`, интергальная значимость.
- diff — старое/новое значение и приведённая разница.
- i на кноке стимулов — модель понимания (семантика): сводка или кадр по клику на числа z.

## 4. Все види кнопок и стимулов

Ниже — поведение по коду (`stimuls.js`, `stimuls_ui.js`, `genetic_reflexes.js`, `genetic_reflexes_engine.js`, `sleep_mode.js`).

### 4.1. Общие правила строк стимулов

- У каждой строки заголовок и кнопка × у заголовка: сброс всех активных стимулов этой строки.
- Двойной щелчок по любой кнопке стимула (любой строки) — сброс всех стимулов всех четырёх рядов (`clearAllStimuli`), кроме режима сна (в сне блокируется).
- Активная кнопка: более насыщенный фон и цветное свечение (`box-shadow`).
- Готовность к ОР: рамка 2px и подсказка «Участвует в ориентировочном рефлексе», если для связанного `FinalImage` число оставшихся активаций до порога = 0; иначе показывается число оставшихся активаций (или «неизвестно» на ранних пульсах).
- При запуске ОР/ФО на кнопке — краткая вспышка свечения сверху/снизу на один пульс.
- Режим сна: неразрешённые кнопки полупрозрачны и не кликаются; разрешённые подсвечены outline. Разрешённые пары: мотивация Наказание (Id 8); негативные Вопль (8), Сирена (10), Рычание (13), Огонь (20). Первый клик по разрешённому стимулу выводит из сна, затем обрабатывается как обычно.

### 4.2. Глобальные идентификаторы стимулов

Чтобы не путать одинаковые номера в разных массивах, в памяти используются глобальные Id: `type * 1000 + localId`, где type: 1 — мотивация, 2 — позитив, 3 — негатив, 4 — нейтраль (`stimulus_global_id.js`).

### 4.3. Мотивирующие стимулы (`stimulsRow`)

Поле bg в данных: 1 — розовый базовый фон, 2 — белый/нейтральный, 3 — светло-зелёный. Каждая запись связана с vitalID и величиной shift в данных (для длительного воздействия через движок рефлексов — см. `genetic_reflexes_engine.js`).

Id | Имя | vitalID | shift (в таблице) | Примечание
--- | --- | --- | --- | ---
1 | Еда | 6 | 0 | Эффекты при активации: стресс −20, SetWellForHolding; сброс кэша автоматизмов по веткам при активации с Едой/Водой.
2 | Вода | 3 | 0 | Аналогично Еде.
3 | Тепло | 4 | −1 |
4 | Холод | 5 | −1 |
5 | Воздух | 2 | −2 |
6 | Лечение | 1 | −0.5 |
7 | Поощрение | 7 | 0 | Сильное снижение стресса + удержание Хорошо.
8 | Наказание | 7 | 0 | Рост стресса + удержание Плохо.
9 | Приятно | 7 | 0 | Стресс −30 + в таблице эффектов также указан vitalID 17 (если витал не существует в массиве, дельта может не применяться).
10 | Неприятно | 7 | 0 | Стресс +30.
11 | Успокоить | 7 | 0 |
12 | Понятно | 7 | 0 |
13 | Непонятно | 7 | 0 |
14 | Простить | 7 | 0 |
15 | Смех | 7 | 0 |
16 | Радость | 7 | 0 |
17 | Краш | 8 | 2 |
18 | Игнорировать | 7 | 0 |
19 | Играть | 11 | 0 | Не через `ActiveMotivationStimuls`: переключает isGameMode, взаимоисключает Учить; при включении — эффект 103.
20 | Учить | 12 | 0 | isAuthoritarianEducation, взаимоисключает Играть; эффект 104.

При активации мотивирующего стимула (кроме переключения Играть/Учить) вызываются разовые эффекты из `StimulMotivarion_EffectsToBContexts` (дельты виталов 1–10, коды 101–104: удержание Хорошо/Плохо, игровой/учебный режим).

### 4.4. Позитивные стимулы (`stimulsRowPositiv`)

Фон: светло-зелёный; активные — усиленное зелёное свечение. При активации подмешиваются контексты по `StimulPositiv_EffectsToBContexts` (числа 1–20 — id базовых контекстов на период удержания; 101–104 — как у мотивации).

Id | Имя
--- | ---
1 | Улыбка
2 | Ребенок
3 | Щенок
4 | Цветок
5 | Солнце
6 | Бабочка
7 | Ягода
8 | Колокольчик
9 | Смех
10 | Пение
11 | Мелодия
12 | Шелест
13 | Мурлыкание
14 | Сладость
15 | Аромат
16 | Тепло
17 | Ветерок
18 | Прохлада
19 | Прикосновение
20 | Ласка

### 4.5. Негативные стимулы (`stimulsRowNegative`)

Фон: розовый; активные — усиленное розовое свечение. Контексты: `StimulNegative_EffectsToBContexts` (в т.ч. 102 = SetBadForHolding для отдельных кнопок).

Id | Имя
--- | ---
1 | Злоба
2 | Кровь
3 | Разруха
4 | Паук
5 | Змея
6 | Гриб
7 | Гниль
8 | Вопль
9 | Стон
10 | Сирена
11 | Писк
12 | Скрип
13 | Рычание
14 | Осколки
15 | Молния
16 | Кинжал
17 | Горечь
18 | Кислятина
19 | Вонь
20 | Огонь

Кнопка «Тест» (красная, после ряда): вызывает `runTestNegativeInterrupt()` — жёсткий тест прерывания цикла осмысления максимально негативной значимостью; в сне не работает.

### 4.6. Нейтральные стимулы (`stimulsRowNeutral`)

Серый фон; при активации не вызывают `StimulPositiv/Negative_EffectsToBContexts` (только накопление активного набора в `ActiveNeutralStimuls` для образа и ОР).

Id | Имя
--- | ---
1–9 | Коричневое … Белое (цвета)
10–18 | Круг … Треугольник (формы)
19–23 | звуковые
24–31 | остальные

### 4.7. Значок «i» на стимулах

Маленькая i в углу кнопки: открывает диалог с моделью понимания стимула (семантические кадры, z, число эпизодов); клик по числам z открывает детализацию кадра.

### 4.8. Прочие кнопки интерфейса (не строки стимулов)

Кнопка | Действие
--- | ---
Сон | Переключение `SleepMode_toggle`; фон страницы серый; контекст только «Сон» (id 15); авто-вход возможен при большом числе «финовых» циклов (`ConsciousnessFinCyclesTotal` > 100).
B | `SetBadForHolding` — удержание Плохо; перевод инфокартины в целевой режим и вспышка «лампочки» мысли.
W | `SetWellForHolding` — удержание Хорошо.
diff | `getDiffImportance()` и показ разниц в алерте.
Сохранить / Загрузить | См. §2.1.

## 5. Как развитие отражается на интерфейсе

- Новые стимулы — "ручное" добавление новых записей в `StimulMotivarion` / `StimulPositiv` / `StimulNegative` / `StimulNeutral` и при необходимости строк в `Stimul* _EffectsToBContexts` / `StimulMotivarion_EffectsToBContexts`; UI пересобирается при загрузке (`stimuls_ui.js`).
- Готовность к ОР — по мере накопления семантики у кнопок меняются рамка и подсказки; после первого цикла начинает показываться лог главного цикла в модальном окне.
- Инфокартина — при появлении новых детекторов в `InfoPicture` добавляются ячейки в `index.html` и ветки в `Info_updateView` / `Info_showDetail` (`informing.js`).
- Уровни сознания 2–4, гештальт, абстракции — новые счётчики (гештальт, фантазмы, ментальные автоматизмы и т.д.) и поведение алертов по клику.
- Сон и сновидения — отдельная ветка: кнопка «Сон», ограничение стимулов, сценарии `sleep_dream_process.js`.

## 6. Как развивать Beast: последовательность и внимание

Рекомендуемый порядок для оператора-исследователя (без правки кода):

1. Понять пульс и виталы — задайте сценарии Плохо/Хорошо, понаблюдайте контексты и `DiffZnacher`.
2. Освоить стимулы — начните с мотивации и нейтрали, затем позитив/негатив; смотрите готовность к ОР и модель понимания (i).
3. Следить за деревом и инфокартиной — как связаны Base, эмоция, активность, шаг, стимул.
4. Эпизодическая память — используйте т для тестов, смотрите полосу ожидания, закрывайте кадры ответами; изучайте `about_episodic_memory*.md`.
5. Сон — используйте осознанно для сценариев сновидений; помните про ограниченный набор стимулов.
6. Сохранения — регулярно сохраняйте память в файл перед экспериментами; Sx и Ух необратимы в рамках сессии без загрузки.

Для разработчика кода:

- Соблюдать порядок скриптов в `index.html` (комментарий в конце файла обязателен).
- Новые персистентные данные — одна запись в `BEAST.persistentModules`.
- Менять `about_*.md` и при необходимости `PROJECT_STATE_FOR_NEW_CHAT.md` вместе с логикой.
- Подробные архитектурные принципы — `manuals/Mad_programmer_manual.md`.

Документ соответствует состоянию кода проекта BEAST; при расхождении UI и поведения приоритет у реализации в репозитории.