================================================================
 chaossync — транспорт на синхронизации нестационарного
 ключевого хаотического потока. ИНСТРУКЦИЯ ПО ЗАПУСКУ.
================================================================

Принцип: по проводу идёт ТОЛЬКО скалярный шумоподобный сигнал
(квантованное состояние хаотического осциллятора). Никаких заголовков,
границ сообщений, порядковых номеров. Информация кодируется в динамике
ошибки синхронизации двух осцилляторов. Векторное поле f_k мутирует по
ключевому расписанию с периодом T — быстрее, чем цензор успевает
собрать окно для return-map/delay-embedding реконструкции.

Участников ровно ДВА: Windows-клиент и RU-нода. Релеев нет.

----------------------------------------------------------------
 0. СОСТАВ БАНДЛА
----------------------------------------------------------------
  chaossync-client.exe    — клиент (Windows, статически слинкован)
  chaossync-selftest.exe  — печать золотого хэша ядра (проверка Э1)
  client.conf             — дефолтный конфиг (параметры звена)
  README-RUN.txt          — этот файл

----------------------------------------------------------------
 1. ПОДГОТОВКА КЛЮЧА (один раз, на ноде)
----------------------------------------------------------------
 Ключ — общий секрет звена. Генерируется на НОДЕ, доставляется клиенту
 файлом (НЕ командной строкой — argv виден в ps/powershell).

 На RU-ноде:
   ./chaossync-server -genkey -keyfile /root/chaossync/chaossync.key
   # создаст файл base64(32 байта) с правами 0600, без перезаписи.

 Клиенту ключ передаётся файлом по любому защищённому каналу
 (scp/sftp/физически). На Windows проверка POSIX-прав пропускается
 (там ACL), но файл всё равно держите недоступным для чужих.

----------------------------------------------------------------
 2. ЗАПУСК НОДЫ (RU, Linux)
----------------------------------------------------------------
   ./chaossync-server \
     -keyfile /root/chaossync/chaossync.key \
     -listen 0.0.0.0:4500 \
     -metrics 127.0.0.1:19090 \
     -T 8 -c 0.85 -rate 1000 -S 32 -batch 4

 Параметры:
   -listen   UDP-порт. Должен проходить inbound-фильтр провайдера.
             Измерено: 123/500/443/4500/51820/853/1194 открыты на
             firstbyte; 53 занят beacon'ом cham-server. Выбирайте
             правдоподобный (4500 = IPsec NAT-T).
   -metrics  HTTP-метрики, ТОЛЬКО loopback (наружу не светится).
   -T        период мутации поля, сек (см. Э6: меньше = труднее
             реконструкция, но выше накладные sync-преамбулы).
   -c        связь Pecora–Carroll (0.85 по умолч., из sweep'а Э2).
   -rate     сэмплов/сек. -S сэмплов/символ. -batch сэмплов/датаграмму.

 ПРОВЕРКА fail-closed: нода МОЛЧИТ на всё, пока источник не доказал
 знание ключа самим фактом синхронизма. Проверьте сканером/чужим
 клиентом: порт снаружи неотличим от фильтрованного (нет ответов).

 Метрики ноды (с самой ноды):
   curl -s http://127.0.0.1:19090/metrics
   # peers_total / peers_proven / per-peer Snapshot (resid_ms, ber, loss...)

----------------------------------------------------------------
 3. ЗАПУСК КЛИЕНТА (Windows)
----------------------------------------------------------------
 1) Распакуйте бандл в каталог.
 2) Положите chaossync.key рядом (или укажите путь).
 3) Отредактируйте client.conf (node= адрес ноды, остальное — дефолт).
 4) Запуск:

   chaossync-client.exe -config client.conf

   или всё флагами (конфиг тогда не нужен):
   chaossync-client.exe -node 192.0.2.10:4500 -keyfile chaossync.key ^
     -send "ping" -dur 60s -T 8 -c 0.85 -rate 1000 -S 32 -batch 4

 Приоритет параметров: дефолт < client.conf < командная строка.

 ПРОВЕРКА ЖИВОСТИ (что звено работает):
   - в логе "СИНХРОНИЗМ+ФАЗА захвачены за Ns";
   - периодические "метрики: mode=phased phased=true resid_ms≈1.5e-05
     ber≈0 loss=0 resyncs=0";
   - при -send: "ЭХО от ноды: <текст>" и финальное "OK: кадр отправлен
     и эхо получено". Клиент выходит с кодом 0 только при успехе,
     иначе — ненулевой код (fail-closed).

 Самопроверка ядра (детерминизм, гейт Э1) — на любой платформе:
   chaossync-selftest.exe
   # ожидаемая строка зафиксирована в docs/CHAOSSYNC.md; совпадение =
   # ядро побитово детерминировано на этой платформе.

----------------------------------------------------------------
 4. ДИАГНОСТИКА РАССИНХРОНА / ПРОБЛЕМ
----------------------------------------------------------------
 Симптомы и чтение метрик (клиент печатает раз в 2с):
   resid_ms  — остаточная ошибка синхронизации. Норма ≈1e-5 (уровень
               квантования). Рост >1e-3 — канал шумный для текущего T/c.
   ber       — оценка битовых ошибок по ключевому PN-потоку. Норма ~0.
   loss      — инфицированные потери (underrun джиттер-буфера).
   resyncs   — полные перезахваты поля. Рост = нестабильный канал.
   syncbad   — ошибки sync-преамбулы. Рост = сбитая фаза/частые потери.

 Типовые ситуации:
   - «фаза не захвачена»: нода не отвечает (fail-closed) или порт
     закрыт провайдером. Проверьте, что нода слушает и порт открыт
     (см. список измеренных открытых портов выше). Проверьте, что
     ключ на клиенте БАЙТ-В-БАЙТ совпадает с ключом ноды.
   - «канал слишком шумный для T»: resid_ms/ber растут, resyncs
     частые. Увеличьте T (реже мутации) и/или S (дольше интеграция
     на символ) на ОБЕИХ сторонах одинаково, либо уменьшите rate.
   - автопилот (AutoTune) подбирает T/c/S/batch по качеству канала;
     если он не может подобрать T (качество ниже порога) — звено
     fail-closed молчит, данных нет. Это by design.

----------------------------------------------------------------
 5. БЕЗОПАСНОСТЬ
----------------------------------------------------------------
 - Ключ at-rest: файл 0600 (Linux) / ACL (Windows). НИКОГДА не в argv.
 - На проводе только шумоподобный скаляр; структуры нет.
 - Ротация ключа: сгенерируйте новый на ноде (-genkey в НОВЫЙ файл),
   распространите клиентам, перезапустите обе стороны. Расписание
   мутаций f_k выводится из ключа — ротация ключа ротирует и расписание.
 - Этическая граница: транспорт использует ТОЛЬКО собственную динамику
   осцилляторов; НИКАКИХ активных атак/отравления измерителей цензора.
   Мы не трогаем чужие системы — только шумим собственным сигналом.

----------------------------------------------------------------
 Подробности устройства, карта переиспользования Э0, результаты по
 этапам и кривые Э6 — в docs/CHAOSSYNC.md.
================================================================
