# СИНТЕЗ: HUMAN RUNTIME v0.1 × СИНГУЛЯР

> Старшие товарищи принесли прототип, собранный из нашего контекста двумя ИИ
> (`SINGULYAR_HUMAN_RUNTIME_v0.1_PROTOTYPE`) + полимат-аудит (`ПРОЕКТ.txt`).
> Мы не отмахнулись: прочитали всё до винтика, сверили с реальным кодом дома,
> сделали свои выводы и провели синтез — наше остаётся нашим, ценное берём
> с уважением к источнику. Сборка v1.21.0 от 2026-10-03.

## 1. Что нам принесли (уважительно, по фактам)

Прототип — 15 файлов, 0 зависимостей: ядро (`singulyar-core.js`), схема события
v0.1, три адаптера (text/speech/haptic), пять документов, тест. Это не мусор:
компактный architectural-prototype, который заново вывел наши же принципы и
добавил три честные практики. Полимат-аудит (ПРОЕКТ.txt) — четыре параллельные
задачи: анализ кристаллической схемы, аудит безопасности, моделирование
производительности, сравнение со стандартами (WebRTC W3C Rec 2025, WCAG 2.2 Rec,
WCAG 3.0 честно помечен Working Draft).

Их восемь совпадающих идей (SYNTHESIS_FROM_TWO_AIS) — почти дословно наша
система принципов: смысл ≠ представление ≠ канал ≠ транспорт ≠ хранение;
capability вместо медицинских категорий; явный выбор человека выше автоматики;
офлайн — первый класс; память — семантическое решение человека, а не TTL;
AI — не authority ядра. Это не заимствование в обе стороны — это сходимость
независимых выводов на одном материале. Хороший знак: наши принципы
воспроизводимы.

## 2. Вердикты по пунктам (сверено с кодом, не на слух)

### 2.1 У них уже было у нас — и работает сильнее

| Их v0.1 | Наш дом (сверено) | Вердикт |
|---|---|---|
| Journal на localStorage (JSON-массив) | durable журнал кристалла: IndexedDB, дедуп по idempotencyKey, ACK, delivery-состояния | наше сильнее — не берём |
| Схема события v0.1 (5 типов, meaning/content) | нормативная схема: ver/id/idempotencyKey/from/conversation/createdAt/semantic/policy/capabilities/revision | наша богаче — не берём, ядро не трогаем |
| Single-pick роутер (выбирает ОДНО представление) | ·21 строит ВЕЕР представлений — все каналы человека сразу | наш шире — не берём |
| E2EE — в known_nonproduction | КРИПТА v1.19 работает: AES-GCM-256, ключ в памяти вкладки, цепь журнала | мы впереди |
| Транспорты — P2-план | trystero/WebRTC/Nostr + BroadcastChannel живут в ·17/·18/·22/·23 | мы впереди |
| Adaptация по capabilities | ·19 ЧЕЛОВЕК + Adapter OS: «без режимов для типа человека, автоматика отменяется» | сходимость принципов |

### 2.2 Берём — три вещи, проведённые нашим путём (СДЕЛАНО в v1.21)

**AD-S1 · Routing trace (их AD-004 «fallback observable»)** — принято.
В ·21 ОБЩЕНИЕ (v0.4.0) каждое представление теперь несёт `trace` — почему канал
построен (`источник: 'выбор человека'`, `смыслСохранён: true`), а маршрут несёт
`след` — модель и порядок приоритета. Наше отличие зафиксировано честно: их
порядок explicit > preference > context > fallback > default уважен как РАНГ,
но у нас он вырождается в «выбор человека», потому что веер строится только из
каналов, заданных человеком, — автоматика не подмешивает ничего и теперь это
доказуемо. Контракт route() не сломан: массив остался массивом, след — аддитивен.

**AD-S2 · Memory decision (их AD-005 «storage is not memory, TTL ≠ MEMORY»)** —
принято мостом `memory.decide` (bridges.mjs v1.1.0). Решение человека
«хранить вечно / забыть» — ОТДЕЛЬНОЕ неизменяемое семантическое событие в
durable журнале (kind: hall.memory.decide, replyTo → цель, idempotencyKey
включает акт — дедуп бережёт повторную публикацию того же акта, а не свободу
передумать). Это ровно их идея, но у неё теперь есть то, чего у них не было:
неизменяемость, дедуп, ACK и адресность. Ядро, журнал и схема не тронуты.

**AD-S3 · Provenance-манифест (их prototype.manifest.json + SHA256SUMS)** —
принято: `ГОТОВНОСТЬ.manifest.json` в корне репы — машиночитаемый честный статус
всей вселенной (production_ready 8 · prototype_only 5 · known_nonproduction 10),
и `БИБЛИОТЕКИ/кристалл/ЯДРО_SHA256SUMS.txt` — отпечаток нормативного ядра.
Отпечатаны только три нормативных файла; надстройки (bridges, крипта) меняются
честно и в отпечаток не входят. Проверяется тестом целостности.

### 2.3 Берём из аудита — пополнение честного списка

Полимат-аудит зафиксировал три production-щели КРИПТЫ, которые мы приняли без
спора и внесли в known_nonproduction манифеста: **форвард-секретность E2EE
сессий**, **резервное копирование ключей (encrypted backup)**, **device
attestation**. Это правильные пункты: наш AES-GCM запечатывает тёрки, но
долгоживущий ключ комнаты и потерянное устройство — честно открытые вопросы,
а не решённые. Их X25519-рекомендация легла в горизонт: E2EE v2 (ротация
ключей + верификация через ·19) — следующий такт, и дальше эти три щели.

### 2.4 Не берём — с уважением и причиной

- Их тяжёлые адаптеры (eye-tracking, Whisper/Vosk, MediaPipe, Tesseract, Piper)
  они сами честно не внесли в ядро — и мы поступаем так же: каждый адаптер
  сначала доказывает ценность, вес и приватность отдельно.
- Их дорожная карта P0–P4 перекрывается нашей систематизацией и горизонтами
  каталога — дублировать нечему.
- Их «TypeScript после стабилизации» — не наш путь: дом работает на
  проверяемом ванильном JS с 0 innerHTML и node-тестами, язык не проблема.

## 3. Маппинг схем (сверено полем в поле)

| Их semantic-event v0.1 | Наша нормативная схема | Примечание |
|---|---|---|
| `id` | `id` (+ `idempotencyKey` — у нас) | у нас дедуп |
| `schemaVersion: '0.1'` | `ver` | нормативность |
| `type` (5 enum) | `type: semantic.message` + вид смысла в `conversation` | у нас открытее |
| `meaning {intent, content}` | `semantic {text, attachments, replyTo}` | эквивалент смысла |
| `source` | `from` | — |
| `targets` | не поле схемы — адресует транспорт | их фантазия, безвредна |
| `representation/channels/transports` | `capabilities` + `policy` | у нас жёстче: представления строит получатель |
| `retention {ttlMs, memoryDecision}` | `policy {retention, ttl}` + **новый мост memory.decide** | решение теперь семантическое событие |
| — | `createdAt/revision` | у нас |

Ни одно поле их схемы не теряет смысл в нашей. Ядро не тронуто —
инвариант подтверждён тестами (см. ниже).

## 4. Проверка синтеза (CLAIM → EVIDENCE)

- Мост memory.decide: тесты мостов расширены — remember/expire события,
  дедуп того же акта, свобода передумать (новый акт = новое событие),
  replyTo на цель, инварианты ядра и схемы на новых событиях.
- След ·21: логика-тест проверяет trace на каждом представлении,
  `след` на маршруте, РАНГ, и что контракт (массив, view, voice без
  мутации профиля) не сломан.
- Целостность: пересчёт SHA-256 трёх нормативных файлов сходится с
  ЯДРО_SHA256SUMS.txt; манифест валиден, версии согласованы со сборкой.
- Регрессия: кристалл 26/26, llm 111/111, каталог 14/14, ·21 логика —
  расширена и зелёная.

## 5. Что дальше (горизонт после синтеза)

1. E2EE v2: ротация ключей КРИПТЫ + верификация личности через ·19 —
   закрывает щели из аудита по одной.
2. Сигналинг звонков через КРИСТАЛЛ (события вместо прямого канала).
3. Мульти-устройство одной личности.
4. Форвард-секретность сессий — после ротации ключей.
5. UI для memory.decide в ·18 (механизм готов, кнопка — следующий такт).
