Skip to content
rtynbirfPublic

About

СИНГУЛЯР — офлайн-вселенная караоке RUVSON: 64 песни × 200 языков · ОРКЕСТРАТОР ·15 · хаб + 45 дверей · PWA (офлайн, без слежки)

Topics

Resources

Code of conduct

Contributing

Security policy

Accessibility

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
singulyar — Офлайн-вселенная караоке RUVSON: 64 песни

СИНГУЛЯР — офлайн-вселенная караоке RUVSON

singulyar

Офлайн-ядро караоке-вселенной RUVSON: 64 песни · флагман «Когда теряем» на 157 языках (конвейер: 197) · ОРКЕСТРАТОР ·15 · ОС из 17 модулей · PWA. Один HTML-файл = офлайн-ядро. Межустройственная связь — по явному жесту, через внешние рельсы. Скачал — открыл — поёшь.

Живой сайт (PWA): https://rtynbirf.github.io/singulyar/

Исторические числа дверей в абзацах ниже (18/19/21/22/23) — летопись своего такта; истина — здесь и в `data/versions.json`.

Текущее состояние дома (одна правда)

Что Сколько Где проверять
Такт 11.75 «ВСТРЕЧАЕТ ФЛАГМАН» data/versions.json → дом
Поколение кэша s15-orkestrator-v238 sw15.js → S15_CACHE
Двери хаб + 52 (счётчик versions.json: жилые залы + доки + лаборатория, включая ·54 ПИР — живая связь без посредников; включая ·42 КОЛОНКА, ·53 СВЯЗЬ ЧЕЛОВЕКА и ·55 ЕДИНОЕ ОКНО — дверь пакета владельца, файл _43_, номер дома ·55: ·43 занят ШТАБОМ РЕВИЗИИ) манифест ядра singulyar-modules.js (SNG.модуль, v1.20.0)
Песни фонда 64 фонд ·02/·32 — тела фонда на ветке minus-fond (F-023), rumu несёт общак minus/; очередь: data/фонд.json
Языки флагмана 200 versions.json → счётчики.языков (сырьё 157 srt — ДАННЫЕ/флагман_157_языков/)
Пульт 7 видов реестра (ПОЛНЫЙ · РУЛЬ · ПЛИТКА · ⌘ КОМАНДА · ОМНИ · ЛИЦА · ◈ УУП) — все чипами в панели ВИД ЛАДОМ ·31
Малыш правила апстрима v0.8 (15) → доучка дома: правила v0.10 (17, гейт откатов), адаптер v0.11; учебник МАЛЫШ.md — 11 частей

Живая документация: docs/СИНТЕЗ.md — дом одним взглядом (с этого начинай); docs/README.md — карта; docs/ТЗ.md — обещания; docs/ДОРОЖНАЯ_КАРТА.md — дорога; CHANGELOG.md — летопись тактов; AGENTS.md — правила для агентов; SECURITY.md — безопасность и сообщение об уязвимостях; CONTRIBUTING.md — как попасть в такт.


Быстрый старт — три пути

Путь Как Что получишь
Сайт (рекомендуется) Открой https://rtynbirf.github.io/singulyar/ Платформа онлайн, устанавливается как PWA, работает офлайн после первого визита (service worker sw15.js)
Единый файл ОС Скачай SINGULYAR_OS_v17_13_MODULES.html (= СИНГУЛЯР_ОС v1.7, GitHub хранит имена релизов латиницей) из Release v1.7 и открой в браузере Все 13 модулей в одном файле, 100% офлайн с первого открытия
Локальная копия репо git clone → открой index.html (или python -m http.server) Полная копия сайта на своём диске

Подробности, горячие клавиши и диагностика — в ИНСТРУКЦИЯ_СТАРТ.md.


Что в репозитории

index.html                        Лендинг-навигатор по платформе
СИНГУЛЯР_01_Когда_теряем_…        Платформа ·01: караоке флагмана ×157 языков (14.9 МБ)
СИНГУЛЯР_02_ФАБРИКА_…             ·02 «ФАБРИКА» — эмерджентная архитектура (7.4 МБ)
СИНГУЛЯР_15_ОРКЕСТРАТОР.html      ·15 «ОРКЕСТРАТОР» v1.1 — дирижёр всей системы (0.7 МБ)
СИНГУЛЯР_16_СУФЛЁР.html           ·16 «СУФЛЁР» — UltraStar Edge: микрофон→MIDI→очки (59 КБ)
СИНГУЛЯР_17_ЗАЛ.html              ·17 «ЗАЛ» — P2P двойной экран (зал+пульт) без сервера + air-gapped WebRTC:
                                  телефон-микрофон/пульт по QR-коду, свой QR-энкодер (60 КБ)
СИНГУЛЯР_18_СОБЫТИЕ.html          ·18 «СОБЫТИЕ» — SOCIAL CORE: зал совместного пения по коду/QR без аккаунтов (93 КБ):
СИНГУЛЯР_19_ЧЕЛОВЕК.html          ·19 «ЧЕЛОВЕК» — Human-First: адаптация по возможностям, личность ECDSA
                                  non-exportable, мои люди, «позвать спеть» (40 КБ)
СИНГУЛЯР_20_ФОНЕТИКА.html         ·20 «ФОНЕТИКА» — фонетический подсказчик и вокальный гид:
                                  офлайн-романизация любой письменности (any-ascii ISC), слог-чипы,
                                  локальный TTS, мост ·16 СУФЛЁР (32 КБ)
СИНГУЛЯР_21_ОБЩЕНИЕ.html          ·21 «ОБЩЕНИЕ» — смысл один — представления разные: маршрутизатор
                                  представлений (текст/Брайль/речь/вибро), голос — личная настройка
                                  получателя, без классификации людей; живой мост со СВЯЗЬЮ ·22
                                  (33 КБ, редакция 0.3.0)
СИНГУЛЯР_22_СВЯЗЬ.html            ·22 «СВЯЗЬ» — девять каналов связи поверх ·18/·19/·21: текст, файл,
                                  субтитры, голосовое, озвучка, аудио-/видеозвонок, экран, совместное пение;
                                  fallback-граф до базового «Текста», выбор человека выше автоматики;
                                  живой мост ·21 — входящие тексты зала уходят в ОБЩЕНИЕ на представление,
                                  «В зал ·22» приносит ответ (65 КБ, редакция 1.1)
СИНГУЛЯР_27_ФУНДАМЕНТ.html        ·27 «ФУНДАМЕНТ» — визуальный канон v3.0 «Ambient OS»: 15 страниц
                                  из дизайн-пакета владельца (WebP, фасет-бейджи) — 27 ЛВЛ дома
СИНГУЛЯР_28_УЗЕЛ.html             ·28 «СУВЕРЕННЫЙ УЗЕЛ» — математическая философия автономии вживую:
                                  Ŝ = 1_H + λ(I⊗I†), три живых холста (буря/решето/холм), протокол
                                  ЯКОРЬ→ФИЛЬТР→АРХИТЕКТОР, аксиомы I–V, инвариант ⟨M(t), Σ(t)⟩ ≡ 0;
                                  ноль изображений — всё рисуется кодом (такт v1.29.0, 50 КБ)
СИНГУЛЯР_29_СВОБОДА.html          ·29 «СВОБОДА» — живой UI над Composition Engine: человек произносит
                                  намерение, машина предлагает среды из примитивов (статус «предложено»),
                                  жить средой решает человек; своё слово без правки ядра (EMERGENCE);
                                  WCAG 2.2 аудит под капотом (такт v1.38.0, 54 КБ)
СИНГУЛЯР_30_ТКАНЬ.html            ·30 «ТКАНЬ» — P2P Human Information Fabric своим путём: 7 ES-модулей
                                  в БИБЛИОТЕКИ/ткань/, MEANING ≠ TRANSPORT, решение за человеком
СИНГУЛЯР_31_ЛАДОМ.html       ·31 «ЛАДОМ» — пульт вечера: 4 строки на экране (текст
                                  выбранного языка · транскрипция кириллицей · оригинал · АВТОАКОРД
                                  без файла), телефоны по Wi-Fi (КРЫША, WebRTC + Whisper-автосинхрон),
                                  реестр параметров I-11, simple/full, ЗДОРОВЬЕ-томограф (такт v10.15)
СИНГУЛЯР_32_СЦЕНА.html            ·32 «СЦЕНА» — караоке фонда дома: 64 песни — играют оригинал с голосом автора
                                  (minus/голос/, 48 kHz stereo) и натуральная минусовка (minus/чистый-минус/, вокал
                                  убран из оригинала; RUM23-7 «ДИЕТА»: webm-мастера и моно-дубл ушли, в корне minus/
                                  2 спец-mp3: дом-песня и мастер «Сборника» (сама безголосая); «Где настоящее» оживлено голосом автора — виток v11.50), тексты 64 песен
                                  вшиты, слово-вайп по весам, ТЭП-очки (ИДЕАЛ/ТОЧНО/комбо/рекорд),
                                  темп/сдвиг/громкость обратимы, мост слова ·16/·20 (такт v1.46.0, 353 КБ)
СИНГУЛЯР_33_ФОНД.html            ·33 «ФОНД» — общак дома: счётчик открытой цепи онлайн,
                                  два пути (аноним / летопись), домовой QR-энкодер ·17,
                                  честное стекло приватности (такт v1.47.0); с v1.48.0 —
                                  дверь на хартию фонда ·34, внешние кассы убраны
СИНГУЛЯР_34_ДОМ_ФОНДА.html        ·34 «ДОМ ФОНДА» — хартия фонда Хелены Келлер вживую:
                                  наследие (1880–1968, Рэдклифф 1904, ACLU), миссия и программы,
                                  правила дома (ЧЕЛОВЕК РЕШАЕТ, ноль кассы, цепь помнит),
                                  десять прав жертвователя по Donor Bill of Rights AFP (дом держит
                                  все и усиливает: аноним первичен, списков нет, данных нет),
                                  честное стекло независимости (не helenkellerfoundation.org,
                                  не helenkellerintl.org — общих денег/людей/слова нет),
                                  живой холст «свет сквозь стекло» (такт v1.48.0)
ФОНД/                             Касса и устав фонда: ОБЩАК.json (источник правды:
                                  адреса/узлы/летопись/независимость) + УСТАВ_ФОНДА.md
                                  (открытый устав, 11 разделов) (такт v1.48.0)
singulyar-modules.js              ЯДРО МОДУЛЕЙ SNG v1.3.0 — манифест 19 узлов, 6 модальностей,
                                  живой Кристалл: шар рассыпается на 18 осколков-дверей (v1.32+),
                                  (СЛОВО ¶ ГОЛОС ◉ ЗВУК ∿ ОБРАЗ ◈ ТАКТ ⌇ ЖЕСТ ⤳), живая призма,
                                  модульная бирка на каждой странице (такт v1.29.0); API — window.SNG
server/                           SINGULAR SERVER v1 — опциональный сервер связей: люди, приглашения,
                                  записи 7 дней → память, GC (ws, 0 нативных зависимостей)
                                  голоса WebRTC mesh, синхронный старт, запись микса, TEMPORARY 7 дней → ◈ ПАМЯТЬ
БИБЛИОТЕКИ/                       Вендорные зависимости и нормативное ядро:
                                  кристалл/ (crystal-core.mjs + journal.mjs + схема — нормативная тройка с SHA-отпечатком;
                                  bridges.mjs, крипта.mjs, composition.mjs, space.schema.json — надстройки);
                                  adapter-os/ (CapabilityModel · AdapterRegistry · MeaningRouter); wllama/ (LLM в WASM);
                                  trystero-nostr.bundle.mjs (60 КБ, MIT) — сигналинг WebRTC;
                                  any-ascii.bundle.mjs (534 КБ, ISC) — офлайн-романизация ·20
singulyar-ux-engine-v9.js         UX-движок v9.4: шестерёнка-панель, drag (v9.3 «ТАМ ГДЕ ПОСТАВИЛ»),
                                  подсказки везде (v9.4), нативное ПКМ свободно, a11y, ТВ — у хаба и модулей
ИНСТРУКЦИЯ_СТАРТ.md               Инструкция: запуск, клавиши, хостинг, диагностика
ДАННЫЕ/                           Тексты 61 песни (srt/lrc/txt),
                                  LRC-корпус, флагман_157_языков (INDEX + 157 srt + 157 txt)
ИНСТРУМЕНТЫ/                      Grabber + алгоритм + тесты ·16/·17/·18/·19/·20/·21 (Fusion, QR, зал, сервер,
                                  фонетика, общение) и харнесс UX v2 (node) + serve_repo.mjs (статический сервер тестов)
ДОКУМЕНТЫ/                        Полный отчёт, мастер-план 157 языков, ревизии, стратегия
СИНГУЛЯР_16_СУФЛЁР.html           ·16 «СУФЛЁР» — офлайн-оценка вокала UltraStar-стиля (73 КБ, v1.1):
                                  S15_*-коды ошибок, watchdog тишины, a11y (role/aria),
                                  Fusion-автосборщик UltraStar .txt (ASR-слова × DSP-ноты, мелизмы ~,
                                  квант 1/16 бита, нарезка строк), тесты в ИНСТРУМЕНТЫ/
minus/                            62 минусовки (ремастер 128 кбит/с, клиппинг снят) — ХОР ·15 и СУФЛЁР ·16 поют сами
СКРИНШОТЫ/                        64 снимка: ОРКЕСТРАТОР_15 (20), ПЛАТФОРМА_01 (16), РЕЗОНАНС_02 (4),
                                  ФАБРИКА_02 (4), UX_ДВИЖОК (3), ЗАЛ_17 (6), ЗАЛ_18 (5), ОБЩЕНИЕ_21 (2),
                                  СВЯЗЬ_22 (3), СУФЛЁР_16
icons/, manifest.webmanifest, sw15.js   PWA-слой (установка + офлайн; прекэш v48 — ядро модулей, все двери, СВОД-доки и композиция)

Приватность (такт v10.20 «ЭТАЛОН»): АРХИВ_V3/ (77 МБ старых билдов, AUDIO_B64) и ДАННЫЕ/RUVSON_каталог_канала_2026-09-30.xlsx (аналитика канала) убраны из Pages — сайтом больше не отдаются. Файлы остаются в git-истории, восстановление: git checkout <sha> -- путь. Приватные выгрузки в репо не вернутся: .gitignore закрывает АРХИВ_V3/ и ДАННЫЕ/*.xlsx.

Release v1.7

  • SINGULYAR_OS_v17_13_MODULES.html (40 МБ, = СИНГУЛЯР_ОС v1.7 «13 модулей») — вся платформа (13 модулей: ·01, ·02, ·15 и связки) одним файлом. Это сборка «всё-в-одном»: открывается двойным кликом, интернет не нужен.
  • RUVSON_AUDIO_MINUS_61.zip (208 МБ) и RUVSON_AUDIO_FULLS_61.zip (208 МБ) — аудио-библиотеки в ремастер-версии (mp3 128 кбит/с, клиппинг снят, кодек-мусор вычищен) для локальных копий платформы (распаковать рядом с HTML в папку minus/).

Release v1.8

  • СИНГУЛЯР_18_СОБЫТИЕ.html — SOCIAL CORE поверх локального ядра: комната по коду/QR (без аккаунтов), голоса участников WebRTC mesh, синхронный старт по clock-offset, запись микса (голоса+минусовка) у каждого, TEMPORARY 7 дней → ◈ ПАМЯТЬ, GC при старте, «МОИ ВОСПОМИНАНИЯ» с фото/подписью и экспортом webm.
  • БИБЛИОТЕКИ/trystero-nostr.bundle.mjs — сигналинг без сервера (trystero 0.25.4, MIT, вендорный esbuild-бандл, 0 bare-imports). Сеть используется ТОЛЬКО для зала ·18 по жесту пользователя; офлайн-ядро от неё не зависит.
  • Тесты: логика 55/55 (node, реальный код страницы), браузер 29/29 (Playwright: полный цикл события + реле).

Release v1.9

  • СИНГУЛЯР_19_ЧЕЛОВЕК.html — Human-First слой «событие одно — каналы разные»: адаптация по возможностям+предпочтениям (крупные цели, вибрация, уведомления, меньше движения; автоматика предлагаемая, человек распоряжается — override всегда выигрывает), личность (ECDSA P-256 non-exportable в IndexedDB, вызов→подпись→вход, технический UUID ≠ имя), «мои люди» (связь принимает человек; kick ≠ разрыв дружбы; блок закрывает дверь), «позвать спеть» (создать зал и позвать / пригласить в существующий; доставка WS + push + очередь офлайн).
  • server/ — SINGULAR SERVER v1 (см. server/README.md): REST+WS, identity/relations/invites, записи final.webm + manifest.json + participants/, TEMPORARY 7 дней → ◈ MEMORY, GC метаданные+блоб, CORS для Pages-клиента. Интеграционный тест ТЗ: CREATE→TEMP→EXPIRE→GC→absent+absent — зелёный.
  • Мост ·19↔·18: ?зал=КОД (гость, было) и ?хост=КОД (ведущий создаёт зал с заданным кодом — новое); клик «создать зал» защищён от передачи MouseEvent как кода.
  • SINGULYAR_OS_v18_17_MODULES.html — пересборка единой ОС: 17 модулей (добавлены ·16/·17/·18/·19), b64 модулей сверен байт-в-байт, ORDER/boot/метаданные/JSON-LD обновлены.
  • Тесты: ·19+сервер 12/12 (node --test, живой сервер на случайном порту), ·18 логика 55/55 (после патча), ·17 Fusion — ОК; найдено и исправлено 3 косяка прототипа Human-First (см. ОТЧЁТ_ПОЛНЫЙ, Этап 13).

Release v1.10

  • СИНГУЛЯР_20_ФОНЕТИКА.html — «Фонетический подсказчик и вокальный гид» из ТЗ KARAOKE_TREND (лакуна №3): офлайн-романизация любой письменности в латиницу (any-ascii 0.3.3, ISC, вшит в БИБЛИОТЕКИ/any-ascii.bundle.mjs, динамический import как в ·18), прогон-разбор Unicode (хань/кана/хангыль/прочее), слог-чипы (хань/хангыль — капитальный сплит по слогам, кана — кластеры с малыми и ー), детект языка → BCP-47 (uk/be/sr/kk отличимы от ru по буквам; han/kana эвристика для ja/zh), ручной override 38 языков, локальный вокальный гид через Web Speech API (точный голос → префикс → дефолт, честный статус если голоса нет, ⌇ rate 0.55 для разучивания), мост «СУФЛЁР ·16»: только-слушатель STATE ver:1 по singulyar-hall (BroadcastChannel + localStorage-фолбэк + разовый опрос свежего ключа) — текущее слово крупно с романизацией и «далее» 6 слов, тап = произнести. Ядро ·16 не тронуто.
  • Честные границы (в самом модуле): тоны пиньиня не подаются, арабский/иврит без огласовок, хангыль без сандхи, малая цу аппроксимирована (きっぷ → kitpu), TTS зависит от ОС-голосов, IPA нет — выбрана романизация.
  • Тесты: логика 51/51 (node ИНСТРУМЕНТЫ/test_s20_logic.js — синтаксис, романизация 11, прогоны, чипы 5, языки 18, фильтр моста 9, голос 6, сплит-регрессии), браузер 28/28 (Playwright: бандл грузится, чипы zh/ru/hangul точные, тап без голосов не падает, мост STATE → слово/далее/romani/aria, фильтр мусора, 0 ошибок консоли). Косяк среды: python http.server в песочнице виснет → тесты ·18/·20 переведены на ИНСТРУМЕНТЫ/serve_repo.mjs (node, защита от traversal).
  • Регрессия: ·16 логика 5/5, ·17 Fusion, ·18 логика 55/55, ·19+сервер — зелёные.

Release v1.21

  • СИНТЕЗ с HUMAN RUNTIME v0.1 (ДОКУМЕНТЫ/СИНТЕЗ_HUMAN_RUNTIME.md) — уважительный разбор внешнего прототипа (собран двумя ИИ из нашего контекста) и полимат-аудита (ПРОЕКТ.txt): что у нас уже было и сильнее, что взяли — с уважением к источнику, что не взяли и почему. Восемь совпадающих принципов = сходимость независимых выводов.
  • Принято нашим путём (AD-S1/S2/S3): след маршрутизации в ·21 v0.4.0 (trace на каждом представлении + след маршрута, контракт не сломан); мост memory.decide в bridges.mjs v1.1.0 (решение человека «хранить/забыть» = отдельное неизменяемое семантическое событие, дедуп бережёт акт, а не свободу передумать); провенанс — ГОТОВНОСТЬ.manifest.json (машиночитаемый честный статус) + ЯДРО_SHA256SUMS.txt (отпечаток нормативной тройки, подмена = провал теста).
  • Аудит безопасности принят без спора: форвард-секретность, encrypted backup, device attestation — внесены в known_nonproduction честно.
  • Тесты: мосты 21/21 (+6 memory.decide), ·21 логика расширена (след), новый test_core_integrity.py, каталог 16/16; ядро/журнал/схема не тронуты.
  • Обвязка: SW v20→v21, сборка v1.20.0→v1.21.0, каталог актуализирован (647 файлов, 11 классов, сумма сходится).

Release v1.20

  • СИСТЕМАТИЗАЦИЯ ВСЕЛЕННОЙ — канонический каталог вселенной (ДОКУМЕНТЫ/СИСТЕМАТИЗАЦИЯ_ВСЕЛЕННОЙ.md): 11 классов (К0–К9), 641 файл, каждый учтён ровно один раз; числа вычислены скриптом-инвентаризацией из файлов, не зашиты. Классы: инфраструктура 7 · сцена 4 · дом 12 · кристалл 6 · мозг 30 · транспорт 9 · данные 384 · тесты/инструменты 54 · документы 14 · архив/доказательства 121.
  • На главной (index.html) появился раздел «Каталог вселенной» — вся карта по полкам прямо на визитке + честный статус ДЕНЬГИ ·25 / ВЕБ МАНИ: внутренний подписанный append-only кошелёк работает на устройстве (баланс из фактов, тихие переводы, ХОТЕЛКИ, бумажки-токены, PIN); внешние рельсы (WebMoney, карты, Lightning) честно НЕ подключены — в модуле рецепты, а не провода; платёжные секреты в репозиторий не попадают никогда.
  • Починена мёртвая ссылка на «Караоке-ЛАБ» (папки нет — честнее убрать, чем обещать). Новый тест ИНСТРУМЕНТЫ/test_catalog_index.py сканирует ВСЕ ссылки index.html по файловой системе: мёртвая ссылка = провал теста.
  • Обвязка: SW v19→v20, сборка v1.19.0→v1.20.0.

Release v1.19

  • КРИПТА — тёрки зала остаются в зале (БИБЛИОТЕКИ/кристалл/крипта.mjs, ненормативный слой, ядро/журнал/схема не тронуты). Проведено в ·22 СВЯЗЬ: необязательная фраза зала → PBKDF2-SHA256 (210 000 итераций, соль от кода зала) → AES-GCM-256; текст запечатывается ДО провода и ДО журнала: BroadcastChannel несёт только шифровку (шф), канонический журнал кристалла хранит «§ запечатано» + вложение kind:sealed. Ключ живёт только в памяти вкладки (не localStorage, не IndexedDB, не файлы), по проводу не ходит вообще. У кого фразы нет — видит честное «§ запечатано», а не пустоту.
  • Криптослой также даёт: ECDH P-256 пары (приватные non-extractable — их нельзя вытащить даже случайно) + ECDSA P-256 подписи; цепь журнала (tamper-evident печать фактов: звено = SHA-256(предыдущий хэш + весь semantic)) — это проверяемая целостность, НЕ притворяемся распределённым блокчейном.
  • Тесты: логика 18/18 (node --test ИНСТРУМЕНТЫ/test_crypto_logic.mjs — PBKDF2-детерминизм, свежий IV, чужой ключ/подделка = честный отказ, ECDH-секрет с обеих сторон, ECDSA верна/ломается, цепь ломается в точном звене, plaintext не попадает в событие), браузер 16/16 (ИНСТРУМЕНТЫ/test_crypto_browser.py — три вкладки: двое с фразой читают, третья «Европа» без фразы видит замок, сниффер провода не находит plaintext, журнал кристалла без plaintext, доставка DELIVERED и дедуп работают на шифровках, 0 ошибок консоли).
  • Регрессия: кристалл 26/26 + браузер 25/25 (путь БЕЗ фразы не изменился), мосты 15/15, ·21 54/54, ·22 логика — зелёные. SW-кэш v19 (+крипта.mjs в прекэш).
  • Честные границы: голосовые/файлы едут как раньше (запечатан текст), ключ не переживает перезагрузку вкладки (введи фразу снова — это цена приватности), ротация ключей и верификация личности через ·19 — следующий шаг; UI-журнал ·22 у участника хранит вскрытый текст на его же устройстве (тот же домен, что экран).

Release v1.18

  • Мосты КРИСТАЛЛА вшиты (БИБЛИОТЕКИ/кристалл/bridges.mjs, ненормативный слой — ядро/журнал/схема не тронуты): ·19 ЧЕЛОВЕК публикует identity.ref (id/имя/дата — БЕЗ ключей, они остаются в ·19), ·18 СОБЫТИЕ публикует hall.session (зеркало манифеста зала, TTL = 7 дней как GC зала, без аудио) и hall.memory (память ◈, persistent, ссылается на сессию через replyTo). Повторная публикация гасится durable-дедупом журнала; стирание личности адресно убирает её ref из журнала, чужие события не тронуты.
  • Тесты: мосты 15/15 (node --test ИНСТРУМЕНТЫ/test_crystal_bridges.mjs), ядро 26/26, браузерный смок 13/13 (ИНСТРУМЕНТЫ/test_bridges_browser.py: реальный UI ·19 и ·18, живой IndexedDB-журнал, 0 JS-ошибок).
  • Наблюдение: __КРИСТ19 / __КРИСТ18 (только чтение, инкапсуляция не вскрывается). SW-кэш v18, прекэш bridges.mjs.

Release v1.49.2 «ОБЩАК ОТКРЫТ» (такт v1.49.2, ядро v1.14.0, SW v61)

Событие, ради которого дом строился: владелец нажал ОДНУ КНОПКУ.

  • Счёт общака создан мастером «ОДНА КНОПКА» v1.49.0 на устройстве держателя: bc1qm8mzhgffqdycq3ajur0az6rr9x6wgvhxa85hzr (P2WPKH, m/84'/0'/0'/0/0, BIP84). Слова фразы нигде не хранятся — только на бумаге держателя; дом их не видел и не хранит.
  • Адрес проверен по закону «не верь — проверь» дважды независимо: эталонный декодер BIP173 (чек-сумма, witness v0, программа 20 байт d9f62ba1…32e6) и круговое возвращение через собственный энкодер дома из ·33 — байт в байт.
  • ФОНД/ОБЩАК.json: статус АДРЕС_ОТКРЫТ, адреса[1], uri bitcoin:…, блок кошелёк (тип/путь/как/бумага/проверка), слово владельца дополнено. Секретов нет — сторожится тестом.
  • Дверь ·33 теперь раскрывает панель сама: адрес + копирование + локальный QR (BIP-21)
    • счётчик цепи по явному клику (мульти-узел mempool → blockcypher → blockstream → blockchain.info). Ничего не запрашивается без человека (I-01).
  • SW v61 (ОБЩАК.json в пре-кэше заново); тест вшивки: форма/uri/путь/бумага/ни следа секрета. s33 11/11, модули 13/13, ЛАДОМ 27/27, закалка 20/20.

Release v1.49.1 «ДОМ ОБНОВИЛСЯ» (такт v1.49.1, ядро v1.14.0, SW v60)

Урок владельца: его устройство держало старый дом в кэше сервис-воркера — человек видел 21 дверь из 23 и не знал, что дом уже новее. Дом починил сам себя:

  • Живое обновление по мировой практике PWA (update flow web.dev; skipWaiting + clients.claim уже стояли в sw15) — переработано каноном дома: ничего не перезагружает само (I-01). На стекле появляется честная бирка «◇ ДОМ ОБНОВИЛСЯ» (DOM-сборка, ноль innerHTML, стекло+золото, ноль эмодзи, role="status", aria-live="polite"), перезапуск — кнопкой человека «ПЕРЕЗАПУСТИТЬ» / «позже».
  • Тихая сверка registration.update() не чаще раза в минуту: на старте, при взгляде человека на дом (visibilitychange) и при фокусе окна — дом догоняет сайт сам, когда человек вернулся.
  • Страховка от гонки: бирка также появляется, если новый воркер уже ждёт (waiting/installing) при живом контроллере. file:// и старые браузеры — честное молчание. Бирка не имеет права ломать комнату (try/catch по периметру).
  • Ядро v1.14.0 (модуль обновления в ядре — все 24 узла получили его одним тактом, комнаты не тронуты); SW v60 (ядро в прекэше заново); ГОТОВНОСТЬ 1.49.1.
  • Сторожа: test_modules_logic 13/13 (+тест бирки и I-01), s29 пин догнан (9/9), s33 10/10, s34 10/10, ЛАДОМ 27/27, закалка 20/20.

Release v1.49 «ОДНА КНОПКА · АРИАДНА» (такт v1.49.0, ядро v1.13.0, SW v59)

Слово владельца: «МЕХАНИЗМ ОДНОЙ КНОПКИ: ОН НАЖАЛ И СЧЁТ ЕГО, И НИКТО КРОМЕ НЕГО НЕ МОЖЕТ ТАМ НИЧЕГО ДЕЛАТЬ» + «НА ЗАГЛАВНОЙ СДЕЛАЙ ВМЕСТО ПРОИГРЫВАТЕЛЯ ПОИСКОВУЮ СТРОКУ И НАУЧИ НАШЕГО ПОДОПЕЧНОГО ЕЁ ЮЗАТЬ».

  • Дверь ·33 ФОНД: мастер счёта общака «ОДНА КНОПКА» — BIP39 (24 слова, официальный список 2048, вшит) + PBKDF2-HMAC-SHA512 + BIP32 m/84'/0'/0'/0/0
    • secp256k1 (BigInt) + bech32 bc1q — чистый JS, ноль сети, ноль библиотек. Ключи рождаются и умирают на устройстве: слова нигде не хранятся, проверка бумаги (3 случайных слова), адрес + QR, письмо для вшивки в ОБЩАК.json. Ядро доказано векторами: RIPEMD160 (ISO), BIP39 (24 вектора trezor), BIP84 (bc1qcr8te4…, pubkey 0330d54f…), детерминированность, отрицательные тесты — ИНСТРУМЕНТЫ/test_koshelek_yadro.js 10/10.
  • Лицо: вместо пульта фонотеки — АРИАДНА, поисковая машина дома: намерение → дверь (23 двери + 64 песни фонда + документы), честная пустота, примеры- чипы, «АРИАДНА поняла: …». Музыка живёт в дверях ·15 ·16 ·18 ·32.
  • SW v59, ГОТОВНОСТЬ 1.49.0, сборка v1.49.0.

Release v1.48 «ДОМ ФОНДА» (такт v1.48.0, ядро v1.13.0, SW v58)

  • Приказ владельца: «У НАС НАШ ФОНД ПРОСТО ОН НАЗВАН В ЧЕСТЬ ЭТОГО МУЖЕСТВЕННОГО ЧЕЛОВЕКА… ЭТОТ ФОНД РАСПОЛОЖЕН И ЕГО ДОМ НА НАШЕМ РЕСУРСЕ… ЗАВЕСТИ СТРАНИЦУ ОКУЛЬТУРИТЬ ОБЛАГОРОДИТЬ И СДЕЛАТЬ ВСЁ КАК ПОЛОГАЕТСЯ В ПЕРЕДОВЫХ ЛУЧШИХ МИРОВЫХ ПРАКТИКАХ БЛАГОТВОРИТЕЛЬНЫХ ФОНДОВ ИЗУЧИТЬ ВСЕ ПРАКТИКИ АКТУАЛЬНЫЕ РАБОЧИЕ И ВЫВЕСТИ СВОЁ ЭМЕРДЖЕНТНОЕ СИНГУЛЯРНОЕ СОГЛАСНО ВСЕХ КАНОНОВ ЧЕЛОВЕКА».
  • Дверь ·34 ДОМ ФОНДА (СИНГУЛЯР_34_ДОМ_ФОНДА.html) — хартия фонда вживую, построена по передовым мировым практикам и выведена за них: наследие Хелен Келлер (1880–1968: Рэдклифф 1904, 12 книг, ACLU, рука в руке Энн Салливан; «держи лицо к солнцу»), миссия и 4 программы (синхронно с ·33 и ПОДДЕРЖАТЬ), правила дома (ЧЕЛОВЕК РЕШАЕТ / НОЛЬ КАССЫ / ЦЕПЬ ПОМНИТ / ЛЕТОПИСЬ / АНОНИМ ПО УМОЛЧАНИЮ / КЛЮЧИ ОФЛАЙН / НЕ ВЕРЬ — ПРОВЕРЬ), живой холст «свет сквозь стекло» (0 картинок, ТИХИЙ РЕЖИМ и reduced-motion гасят, loop спит на скрытой вкладке).
  • Эмерджентное против мира: Donor Bill of Rights (AFP, 1964/ред. 2015) — дом держит все десять прав и усиливает (анонимность первична, списков нет вовсе, данных нет вовсе); живая отчётность открытой цепи вместо годовых PDF; публичная летопись append-only вместо «доверяйте нам»; ноль кассы/процента вместо процессингов.
  • Независимость фонда (слово владельца 2026-10-07): НИКАК не связан с helenkellerfoundation.org, helenkellerintl.org и иными организациями с похожим именем — общих денег, людей, слова нет; чужие имена названы текстом, ссылок на них нет; внешние двери фонда убраны из ВСЕХ слоёв: ·33 (раздел «Наш фонд»), ПОДДЕРЖАТЬ.html (уголок ведёт только внутрь дома), funding.json (ноль внешних https-дверей), schema.json (паттерн внутренних дверей), тест слоя ЖИЗНЬ 19/19 (новый УГОЛОК 19). Снимки до правки — в дальнем углу АРХИВ_V3/99.
  • Открытый устав: ФОНД/УСТАВ_ФОНДА.md — 11 разделов (имя и честный статус юрлица, в честь кого, независимость, миссия, программы и запреты, что принимает/не принимает, кто решает, отчётность, права жертвователя, изменения только новой редакцией, канон дома I-01/I-04/I-11).
  • Конфиг ФОНД/ОБЩАК.json дополнен: дом_фонда, устав, независимость; зеркало в ·33 вшито синхронно.
  • Карта дома: узел s34 (фасет vault, слово/образ/жест), нити s25/s28/s33 ⇄ s34 симметричны — 24 узла, 23 двери, 37 нитей; ядро v1.13.0; index честно говорит про 23 двери; SW v58 несёт ·34 и устав в пре-кэше.
  • Тесты: ИНСТРУМЕНТЫ/test_s34_dom_fonda_logic.js 10/10; s33 10/10; нити 6/6; модули 12/12; ЖИЗНЬ 19/19; СЦЕНА 7/7; целостность 18/18; закалка 20/20.

Release v1.47 «ФОНД» (такт v1.47.0, ядро v1.12.0, SW v57)

  • Дверь ·33 ФОНД ХЕЛЕНЫ КЕЛЛЕР — общак дома на открытой цепи: счётчик онлайн только по явному клику человека (порядок узлов mempool.space → blockcypher → blockstream → blockchain.info, поле своего Esplora-узла), «ЦЕПЬ ПОМНИТ» — последние входящие переводы с хэшами, домовой QR-энкодер (наследие ·17, сверен с python-qrcode), адрес + копирование + BIP-21 bitcoin: URI.
  • Два пути пожертвования: анонимно (перевод сам по себе) или в летопись — публичная запись «кто и сколько» через GitHub-шаблон .github/ISSUE_TEMPLATE/фонд-летопись.md (правда — в цепи, летопись — память).
  • Официальный фонд имени Хелен Келлер — прямыми дверями (hki.org, helenkellerfoundation.org), без касс и процентов; уголок фонда — в ДОКУМЕНТЫ/ПОДДЕРЖАТЬ.html (не тронут: рельсы по-прежнему {}, тест слоя зелёный).
  • По всем мерам безопасности: ноль аналитики/куков/аккаунтов, meta referrer no-referrer + referrerPolicy на каждый fetch, запросы в цепь только по клику, «Честное стекло» на странице (что видно хостингу/провайдеру/узлу/цепи, KYC, Tor, свой узел), анти-фишинг (сверка адреса, QR рисуется локально, дом никогда не просит seed).
  • Конфиг: ФОНД/ОБЩАК.json — источник правды (SW v57 ходит за ним сетью-первой, кэш — фолбэк); страница — автономное зеркало (файл:// и офлайн работают).
  • Статус честный: без адреса дом показывает «КОШЕЛЁК ДОМА ЕЩЁ НЕ СОЗДАН», пустоту не выдумывает.
  • Тесты: ИНСТРУМЕНТЫ/test_s33_fond_logic.js (симметрия нитей, конфиг без секретов, арифметика счёта на живых цифрах генезис-адреса, QR-класс == ·17, ноль innerHTML); сторож test_svyazi_niti.js — нити s25/s28/s32 ⇄ s33 симметричны; ядро v1.12.0.

Release v1.46 «СЦЕНА» (такт v1.46.0, ядро v1.11.0, SW v56)

  • Приказ владельца: «ТЫ САМ ИНЖЕНЕР И СВЕРЩИК… ДАВАЙ ТВОРИ!!!» + «ТО НЕ УДАЛЯЙ — УБЕРИ В ДАЛЬНИЙ УГОЛ».
  • Дверь ·32 СЦЕНА (СИНГУЛЯР_32_СЦЕНА.html): настоящее караоке всего фонда дома — 62 локальные минусовки (minus/, ремастер 128 кбит/с) + тексты 62 песен вшиты из корпуса ДАННЫЕ/ (флагман — из SRT, остальные 61 — LRC ASR-черновики). Слово-вайп по весам слов
    • правило первого слова (практика ·01), двойные часы (audio.currentTime).
  • ТЭП-очки (механика СИНГУЛЯР v2): ИДЕАЛ ±80 мс ×3, ТОЧНО ±350 мс ×реакция, промах обнуляет комбо, множитель комбо до ×2, рекорд песни хранится на устройстве.
  • Параметры обратимы (I-11): темп 0.7–1.3 (preservesPitch), громкость, сдвиг ±600 мс, кнопка СБРОС; честная надпись для песни без текста (I-04); ничего не играет само (I-01).
  • Мост слова singulyar-hall (STATE ver=1, d:{song, word, next}): ·16 СУФЛЁР и ·20 ФОНЕТИКА видят слово сцены без правок — контракт дома соблюдён.
  • Живой холст: стеклянные кольца от баса + золотые искры на верах (canvas2D, 0 картинок); ТИХИЙ РЕЖИМ и prefers-reduced-motion гасят его честно.
  • ДАЛЬНИЙ УГОЛ (АРХИВ_V3/99_ДАЛЬНИЙ_УГОЛ/): ничего не удаляется — снимок лица с ПУЛЬТОМ ХОЗЯИНА (он в лице помечен «временно») + снимки всех правившихся файлов до правок
    • «КАК_ВЕРНУТЬ_ПУЛЬТ.md». Возврат — решение владельца (I-01).
  • Манифест 22 узла (хаб + 21 дверь), нити s01/s15/s16/s20 ⇄ s32 симметричны в обе стороны (закон СТАЛИ); ядро v1.11.0; SW-кэш v56 несёт ·32 в пре-кэш (минусовки — cache-first по прослушиванию, потолок кэша прибережён для ядра).
  • Док такта: ДОКУМЕНТЫ/СЦЕНА_КАРАОКЕ_ФОНДА.md. Тесты: ИНСТРУМЕНТЫ/test_s32_scena_logic.js
    • живой браузер (Playwright).

Release v1.42 «ЗАКАЛКА»

  • Приказ владельца: «ИСПРАВЛЯЙ КОСЯЧКИ БАГИ ПРИБИВАЙ, ЧТОБ У ЧЕЛОВЕКА НЕ ВЫЛЕЗ СИНИЙ (СЕЙЧАС ЧЁРНЫЙ =)) ЭКРАН СМЕРТИ И УСТРОЙСТВО НЕ СТАЛО КИРПИЧЁМ».
  • СИНГУЛЯР·КОРД (БИБЛИОТЕКИ/корд/корд.js, вшит первым скриптом во все 26 страниц): глобальные ловцы error/unhandledrejection, панель «◇ НИТЬ ПОРВАЛАСЬ — ДОМ ДЕРЖИТ» (стекло+золото, ноль эмодзи, DOM-сборка), журнал последних 6 сбоев (SNG_КОРД_ЖУРНАЛ()), кнопки ПЕРЕЗАПУСТИТЬ / ТИХИЙ РЕЖИМ / ПОД КАПОТ / СВЕРНУТЬ (глоток-ромб остаётся).
  • Хранилище-гард: setItem/removeItem не бросают никогда (квота → зачистка старейшего ключа дома → повтор → журнал; приватный режим → заглушка в памяти).
  • JSON-гард (битый текст → null+журнал), BroadcastChannel-заглушка, честный crypto-гард личности ·19.
  • ТИХИЙ РЕЖИМ: sessionStorage 'sng-тихий' → window.SNG_ТИХО + CSS-убийца анимаций; ядро SNG v1.7.0 (3 места) и ux-движок уважают флаг (ЧЕЛОВЕК РЕШАЕТ).
  • Сервис-воркер v52: потолок кэша S15_MAX=140 со вытеснением старейших, каждый put в catch, офлайн-оболочка для навигации без сети и кэша, честный 504.
  • Док такта: ДОКУМЕНТЫ/ЗАКАЛКА_ЧЁРНЫЙ_ЭКРАН.md. Тест: ИНСТРУМЕНТЫ/test_закалка.py.

Release v1.41 «ТКАНЬ»

  • Дверь ·30 ТКАНЬ (СИНГУЛЯР_30_ТКАНЬ.html): свой путь реализации ТЗ владельца «P2P HUMAN INFORMATION FABRIC v1.0» — 7 ES-модулей в БИБЛИОТЕКИ/ткань/ без единой зависимости: протокол SNG-P2P/1, целостность SHA-256, манифест (O-01..O-06), отношения (R-01..R-07), представления (жёсткие требования сильнее балла), транспорт (MEANING ≠ TRANSPORT). Принять/отказать/сохранить/забыть — решает человек (I-01/I-06). Тест ядра 16/16.
  • Атари-пиктограммы выкурены по слову владельца («это не Атари с пиктограммами»): эмодзи-иконки заменены на глифы канона + слова в румах ·17/·18/·20/·23/·24/·25/·26 и живых доках (850+ замен); старые сохранённые профили читаются через легенду глифов — эмодзи не возвращается. Подробности: ДОКУМЕНТЫ/ТКАНЬ_СВОЙ_ПУТЬ.md.
  • Дом стал 19-дверным (манифест 20 узлов), SW-кэш v51 несёт дверь ·30 и ядро ткани в офлайн.

Release v1.38 «СВОБОДА»

  • Дверь ·29 СВОБОДА (СИНГУЛЯР_29_СВОБОДА.html): живой интерфейс над Composition Engine — намерение → многообразие примитивов → предложение со статусом «предложено» → решение человека. Свобода выбора из имеющегося многообразия; I-01/I-04/I-06/I-09 железно; честный fallback с причиной.
  • EMERGENCE вживую: своё слово деятельности + примитивы из реестра = новый режим человека без правки ядра (закон №13; §37 ТЗ старших товарищей).
  • WCAG 2.2 аудит комнаты под капотом: цели ≥24px, фокус виден и не перекрыт, драга отсутствует, reduced-motion / reduced-transparency уважены.
  • Мировые практики 2026: View Transitions (@view-transition) в мосту — плавные переходы между дверями; Speculation Rules сознательно отклонён (SW-кэш уже мгновенен). Манифест дома — 19 узлов, нить — 18 дверей.
  • Офлайн-закон докреплён: SW-пре-кэш v48 несёт СВОД-доки, синтез v2 и движок композиции — открытый код дома живёт без сети.

Release v1.37 «СВОД»

  • Синтез v2 с ТЗ «HUMAN RUNTIME» старших товарищей (39 пунктов, этапы 0–12, инварианты I-01..I-10, запреты): построчная сверка с кодом дома — ДОКУМЕНТЫ/СИНТЕЗ_HUMAN_RUNTIME_v2.md. Вывод: ТЗ лучше оформляет наш путь, чем меняет его; уже жило 17 · принято сейчас 7 · горизонт 9 · отклонено 4.
  • СВОД ЗАКОНОВ ДОМА I-01..I-10 (ДОКУМЕНТЫ/СВОД_ЗАКОНОВ.md + .json): каждый закон = файл, где живёт + тесты, которые доказывают; живучесть свода проверяет test_svod_zakonov.py (13/13 — 67 ссылок, ни одной битой).
  • КОМПОЗИЦИЯ v0.1 (БИБЛИОТЕКИ/кристалл/composition.mjs, надстройка — нормативная тройка НЕ тронута, отпечаток сходится): реестр примитивов, словарь намерений человека, сборка Space Manifest; машина умеет говорить только «предложено». Черновик контракта — space.schema.json.
  • Эмерджентность доказана машиной (test_composition.mjs 12/12): один движок + четыре намерения → четыре разных законных среды; новый примитив без правки ядра порождает новый режим человека (расширение предлагается, решает человек). EMERGENCE = NEW HUMAN MODE WITHOUT NEW CORE.
  • Репарация дрейфа (свежий трезвый взгляд): каталог сведён с диском (688 файлов, швы К0/К3/К7/К8/К9 сходятся), три теста переведены с ожиданий v1.31 на канон v1.33–v1.36 (бирки на хабе нет, версия в меню, спойлеры ·22), починены две мёртвые нити (·22 → АРХИТЕКТУРА_22_СВЯЗЬ.md, ОРГАНИЗМ → v9).
  • SW-кэш v47.

Release v1.17

  • Помогёр доучен до v0.5 (БИБЛИОТЕКИ/adapter-os/llm.mjs + репа singulyar-llm, коммит ОБУЧЕНИЕ db7eef8): голос знает новый дом — «открой круг» (чаты, румы, звонки), «открой почту», «открой кошелёк», «открой линию», «открой хор», «открой караоке»; правила 10 ДОМ (карта дома) и 11 ТАКТ (деньги — тихая комната: не спрашиваем, куда и зачем человек тратит СВОИ; круг из 16 своих; гости «ГОСТЬ ИМЯ»); словарь 76 → 106 фраз, 16 страниц. Тест логики 111/111.
  • Обновление работает и без модели: правило-слой ходит по дому голосом на любой машине.

Release v1.16

  • БИБЛИОТЕКИ/кристалл/ — протокольное ядро связи СИНГУЛЯРА (v1.0.0), вшито из reference-архива SINGULYAR_KRISTALL_REFERENCE_2026-10-03: канонический semantic event (смысл ≠ представление ≠ канал ≠ транспорт ≠ хранение), выбор представления «человек первый» (явный выбор выигрывает, недоступный даёт наблюдаемый fallback explicit-choice-unavailable), конверт транспорт-нейтрален, retention TTL, идемпотентность, машина доставки из protocol/DELIVERY.md (CREATED → QUEUED → SENT → ACKED → DELIVERED → READ; RETRY/FAILED; нелегальные переходы отклоняются наблюдаемо, ACK ≠ READ). Нормативные файлы: crystal-core.mjs (ядро), journal.mjs (durable журнал IndexedDB singulyar-crystal: события + дедуп-ключи + записи доставки + purge истёкших), semantic-event.schema.json (wire-контракт), README.md (статус и честные GAP: production E2EE, сигналинг, серверный релей, multi-device, push, READ — не притворяются готовыми).
  • ·22 СВЯЗЬ — кристалл-слой: каноническое событие строится на каждое сообщение (ключ идемпотентности = id на проводе, стабилен между повторами), идёт по проводу полем кр (старые вкладки поле игнорируют — совместимость сохранена); durable журнал; дедуп повторной доставки по durable ключу (переживает перезагрузку); ACK-канал singular-crystal-v1-код (отдельный — старые вкладки его не открывают), ACK получателя переводит доставку SENT → ACKED, на стороне получателя SENT → DELIVERED; флажок «временное · исчезнет через 7 дней» (policy temporary + purge при загрузке); статус-строка «КРИСТАЛЛ · событий N · дубликатов отброшено M». Падение импорта ядра = связь работает как раньше (честный fallback).
  • ·21 ОБЩЕНИЕ — кристалл-мост представлений: маршрут фиксируется как каноническое событие на шине (meaning.21.crystal: event + decision + representation); каналы получателя отображаются в режимы протокола (speech→tts, braille→braille, haptic→tactile); недоступность режима в среде даёт честный fallback с причиной. UI не меняется — решение наблюдаемо, а не навязано (окно наблюдения window.__КРИСТ21).
  • Обвязка: index v1.16 (Шаг 10 — про КРИСТАЛЛ), sw15 кэш v16 + precache ядра и журнала. Тесты: ИНСТРУМЕНТЫ/test_crystal_logic.js (инварианты reference + машина доставки + retention + schema), ИНСТРУМЕНТЫ/test_crystal_browser.py (два окна ·22: ACK, дедуп, TTL, 0 ошибок консоли), регрессия test_s21/test_s22 остаётся зелёной.
  • Ядра модулей не тронуты: S21/S22:CORE-блоки байт-в-байт прежние, кристалл-слой добавлен рядом (усилитель, не критический путь).

Release v1.15

  • СИНГУЛЯР_24_ПОЧТА.html — свой почтовый ящик у каждого из круга: адрес имя@singulyar создаётся одним выбором личности (мост к КРУГУ ·23 read-only); письма ходят P2P — BroadcastChannel между вкладками одного браузера, между устройствами — WebRTC через публичные Nostr-релеи (тот же вендорный trystero-бандл); подпись ECDSA P-256 (ключ non-exportable в IndexedDB, публичный JWK уходит с письмом), письма в покое зашифрованы AES-GCM ключом устройства; ящики (входящие / исходящие / отправленные / черновики / архив / корзина), офлайн-исходящие с автоотправкой при встрече устройств + ack-доставка, вложения до 512 КБ (Blob в IndexedDB), дедуп и слияние истории по id, экспорт письма в EML и всего ящика в JSON, «стереть всё» — право человека. Честные границы в самом модуле: SMTP/IMAP из браузера запрещены (порты закрыты всеми), прямой мост — UNAVAILABLE без своего сервера; рецепты своих рельс: Stalwart / Mail-in-a-Box / Mailu / mailcow (свой домен), Delta Chat (шифрование поверх своего существующего ящика), алиасы addy.io / SimpleLogin.
  • СИНГУЛЯР_25_КОШЕЛЁК.html — семейный учёт денег по сценарию «бабушка → внучка на пирожок»: ТИХИЕ переводы без подтверждений, без уведомлений и без публичной ленты трат — «взяла и перечислила, никого не спрашивая и не информируя, куда и зачем она тратит СВОИ средства»; append-only журнал фактов (перевод / пополнение / списание / бумажка) с подписью ECDSA, баланс вычисляется из фактов (не зашит), merge журналов устройств по id; ХОТЕЛКИ (wish-list) с молчаливым финансированием — закрыть хотелку другого = перевод + отметка, ни одного вопроса; семейные бумажки-токены ecash-стиля (серийник + подпись эмитента, проверка при приёме, локальная защита от повторного приёма; честно: без общего реестра двойная трата между чужими устройствами не исключена — доверие эмитенту); PIN-замок экрана (честно: замок от лишних глаз, не хранилище); рецепты РЕАЛЬНЫХ денег своими рельсами: свой банк/СБП руками, Cashu, Fedimint, Lightning, семейный минт — приложение не банк и не посредник.
  • СИНГУЛЯР_26_ЛИНИЯ.html — свой номер у каждого: 00–15 из реестра круга, гостям — стабильный G-номер от устройства (короткие номера защищены гвардом имён ·23); SMS-центр: диалоги по номерам, SMS ходят P2P (та же транспортная пара вкладки/Nostr), фильтр «чужие не беру», история добирается при встрече; свои одноразовые OTP (6 цифр, TTL 5 минут, отзыв, доставка внутренней SMS) — честно: подтверждения ВНУТРИ круга, внешние сайты требуют внешнего номера; звонки — мост в КРУГ ·23 (звонковый стек не дублируется); МОЙ ВНЕШНИЙ НОМЕР без «добрых дядей» — рецепты из актуальной практики: своя SIM/eSIM + Android-форвардер (webhook на свой адрес), свой CPaaS- аккаунт (Telnyx / Twilio / Vonage / 46elks; ключ хранится ТОЛЬКО локально в браузере; при CORS — свой мост рядом с SINGULAR SERVER v1), свой GSM-шлюз (Raspberry Pi + SIM-модем + Gammu/SMSTools), свои OTP + почтовые алиасы вместо телефона; поля «мой номер / мой webhook» живут только в localStorage устройства.
  • Обвязка: index v1.15 (карточки ·24/·25/·26, Шаги 12–14, счётчик 26 модулей в описании), manifest (описание + shortcut ПОЧТА), sw15 кэш v15 + precache трёх новых страниц, ИНСТРУКЦИЯ_СТАРТ 4-з/4-и/4-к/4-л, ссылки в КРУГЕ ·23. Тесты: ИНСТРУМЕНТЫ/test_s24_logic.js, test_s25_logic.js, test_s26_logic.js — ядра извлекаются из отгруженных файлов по маркерам S24/S25/S26:CORE-BEGIN/END (реальный WebCrypto в Node), плюс браузерный smoke.
  • Ядро платформы не тронуто: ·23 КРУГ (звонки, румы) — только ссылки на новые модули.

Release v1.12

  • СИНГУЛЯР_22_СВЯЗЬ.html — синтез прототипа «·20 СВЯЗЬ» (чужой среды, модуль собран заново как ·22, чтобы не ломать нумерацию ·20 ФОНЕТИКА / ·21 ОБЩЕНИЕ) и дорожной карты: CONVERSATION + CHANNEL + CAPABILITY + FALLBACK + SHARED_ACTIVITY поверх существующих транспортов, без переписывания ядра.
  • Девять каналов в едином реестре: текст, файл, субтитры, голосовое сообщение, озвучка, аудиозвонок, видеозвонок, демонстрация экрана, совместное пение (открывает зал ·18 с тем же кодом). Реестр — единственное место с человеческими именами; без эмодзи-ярлыков и англоязычных меток.
  • Fallback-граф — недоступность канала не исключает человека: путь ведёт вниз до базового «Текста» (доступен без устройств); железобетонный тест перебирает все 128 комбинаций возможностей × 9 каналов — ни один маршрут не кончается недоступным каналом.
  • Выбор человека — высший закон: явный выбор канала переживает перезагрузку; если он стал недоступен — честная причина, а не молчаливая подмена.
  • Мосты (реальные, проверенные браузерным тестом): ·18 — ссылка на зал с тем же кодом (?зал=КОД) и вход по ссылке; ·19 — имя из локальной личности (read-only; случайно созданную при чтении базу мост удаляет), адаптация (singulyar.adaptation.v1) уважается, решения человека в ·19 и в ·22 объединяются («любое да выигрывает»); ·21 — персонализация голоса остаётся там, субтитры/озвучка ·22 — каналы связи.
  • Транспорт честно подписан: локальный канал (BroadcastChannel) связывает окна одного браузера, включая передачу голосовых сообщений и файлов (Blob переживёт structured clone); между устройствами медиа ведёт зал ·18 (WebRTC mesh). SpeechRecognition не выдаётся за локальный — статус честный.
  • Память: журнал и записи в IndexedDB «singular-svyaz»; экспорт JSON (текст и метаданные, звук/файлы остаются локально); удаление всего — право человека.
  • Тесты: логика 49/49 (node ИНСТРУМЕНТЫ/test_s22_logic.js — ядро из отгруженного файла по маркерам), браузер 36/36 (python3 ИНСТРУМЕНТЫ/test_s22_browser.py — два окна: текст, голосовое (fake-микрофон), файл, субтитры, профиль переживает перезагрузку, мосты ·19 (имя из личности, адаптация), ·18 (ссылка и попап зала, ?зал=КОД), 0 ошибок консоли). Регрессия: ·16 5/5, ·17 Fusion, ·18 55/55+29/29, ·19 12/0, ·20 51/51+28/28, ·21 54/54+32/32 — зелёная.
  • Пересборка SINGULYAR_OS_v18_20_MODULES.html — теперь 20 модулей (17 + ·20, ·21, ·22; попутно закрыта лакуна JSON-LD: у ·15 ОРКЕСТРАТОР не было записи hasPart); b64 сверяется байт-в-байт скриптом сборки. index v1.12 (карточка ·22, Шаг 10, счётчики 20 модулей), sw15 кэш v7 + precache ·22, ИНСТРУКЦИЯ 4-ж, АРХИТЕКТУРА_22_СВЯЗЬ.md в ДОКУМЕНТЫ.
  • Ядро платформы не тронуто: ·22 автономен, офлайн, без аккаунтов и телеметрии.

Release v1.11

  • СИНГУЛЯР_21_ОБЩЕНИЕ.html — универсальный механизм представления сообщений (модуль собран из прототипа «Human Communication v0.2.0» после полной чистки): смысл один — представления разные. Человек задаёт, как ему удобно принимать, — система строит канал: текст, Брайль (Unicode-показ), речь, вибросигнал (объявление канала). Никаких режимов «для слепого/глухого/немого» — только возможности и предпочтения (input[]/output[]), ни одной ветки if blind/deaf/mute (проверяется тестом).
  • Голос — личная настройка получателя (перенесено из 0.2.0 без потерь): конкретный голос устройства, язык/локаль, темп, высота, громкость; профили «приятный/мягкий», «чёткий/разборчивый», «медленный/спокойный», «быстрый/компактный», «мои настройки»; пожелание «женский/мужской» сохраняется как выбор человека, но система честно не угадывает характер голоса по имени (Web Speech API такого поля не даёт) — точный голос выбирается из доступных; без голосов остаётся текст — отсутствие канала не тупик.
  • Чистка 0.2.0 → 0.2.1 (то, что убрано как хлам): осиротевший manifest.json (не подключался к странице, не был валидным PWA-манифестом, нёс англ. наклейки), JSON-дамп состояния для разработчика из интерфейса, англоязычные ярлыки на инструменте («IN/OUT», «status=», «Prototype», «· local», «Speech Synthesis»), мёртвые переменные; участники «Человек A/B/C» (латиница) → «Человек А/Б/В»; сырые коды any/female в отрисовке → человеческие слова; DOM-фабрика вместо innerHTML (0 использования — проверяется тестом).
  • Честные границы в самом модуле: ввод в демо — текст (каналы ввода — модель), Брайль — показ шрифтом, не драйвер дисплея; вибрация — компетенция ·19; доставка — зона ·17/·18/·19; цикл «создано → показано», «отправлено → получено → подтверждено» придёт с мостом к транспортам.
  • Тесты: логика 54/54 (node ИНСТРУМЕНТЫ/test_s21_logic.js — ядро из отгруженного файла по маркерам, маршрутизация/инвариант смысла/подписи/гигиена/подписи органов управления), браузер 32/32 (Playwright: отрисовка без innerHTML, маршруты Текст/Брайль/Речь, честные статусы, профили голоса, сохранение и переживание перезагрузки, сброс, 0 ошибок консоли), архивный тест ядра 31/31.
  • Архив чистой редакции: SINGULYAR_OBSHENIE_0.2.1.zip (модуль + АРХИТЕКТУРА / ГОЛОС_ЧЕЛОВЕКА / ИНТЕГРАЦИЯ_С_СИНГУЛЯР / ОБОСНОВАНИЕ + тест).
  • Ядро платформы не тронуто: ·21 автономен, офлайн, данные в localStorage браузера.

ЛАДОМ ·31 — такты ядра (журнал v10.x)

Каждый такт — рабочее состояние на проде, канон (ДЕТИ-сцена, ШИЛКА, самотесты) не ломается. Живой файл: СИНГУЛЯР_31_ЛАДОМ.html · ПУЛЬТ → «4 СТРОКИ».

Такт Имя Что сделано
v10.5 «ЗАКОН ПЕРВЫЙ» Фон-гарантия: 0 картинок, 0 внешних запросов, щит CSP — вместо белого фона/мусора ничего чужого не грузится
v10.10 «ОДИН СЛОЙ» Три строки под одним слоем; приказ владельца «ВЕСЬ ТЕКСТ В ОДНОМ СЛОЕ» — рост/потолок в sngAdaptStyle
v10.11 «НА ВЕРХУ» Строка-оригинал живёт всегда (не гаснет); ЗДОРОВЬЕ держит правду о трёх строках
v10.12 «АРБИТР» П0 дорожной карты закрыт: T-01 ResizeObserver-фит, T-02 вкладки ПУЛЬТа, T-04 своя палитра, T-05 реестр версий window.APP, T-06 инвариант слоёв, T-15 телефон-пульт зала (BroadcastChannel)
v10.13 «ЧЕТВЁРКА» ЯДРО ВЫВОДА — 4 строки на экране: 1 текст выбранного языка, 2 транскрипция кириллицей (ручная пара Малыша или алгоритмический транслит EN/DE/FR/ES/IT), 3 оригинал не сворачивается, 4 аккорды; АВТО-ПЕРЕВОД песни на 17 языков (кэш в доме); вкладка ПУЛЬТа «4 СТРОКИ»
v10.14 «КРЫША» Телефоны по Wi-Fi: WebRTC (PeerJS вшит) + Whisper-автосинхрон; QR-дверь зала; шасси не тронуто
v10.15 «АВТОАКОРД» Приказ «ТЫ САМ ИХ ДОЛЖЕН ВКАТЫВАТЬ — РЕБЁНОК ТОЛЬКО УЧИТСЯ»: строка 4 ставит аккорды САМА без файла (С16: 24 тональности, 7 паттернов — ладом ДВОР по умолчанию, ± полутон, память на песню) + СЛОВАРЬ ИСТИНЫ против ложных друзей машины (рыбное место ≠ фишинг, порнота ≠ PORNO, свои пары в ПУЛЬТе)
v10.16 «СКЛАД» П1 закрыт: С17 prefs v2 — единый док настроек с миграциями (оригиналы ключей не тронуты — честный откат) + ELRC/IndexedDB-библиотека: переводы живут в IDB, зеркало в доме 400 записей, офлайн-фолбэк честный
v10.17 «СТРОЙ» П1 закрыт: С18 AudioWorklet YIN в аудио-потоке (CMND + параболическая интерполяция, ~93 обновления/с, главный поток свободен); дверь blob: в script-src открыта точечно и задокументирована; фолбэк — автокорреляция на file:// и старых браузерах
v10.18 «КОНВЕЙЕР» П1 закрыт: С19 один RAF-такт на дом (поставь/сними, падение такта не роняет остальных, частота в ЗДОРОВЬЕ); пульс-бит, микрофон и указатели СВОБОДЫ переведены с честным фолбэком на время разбора файла
v10.19 «ГРАМОТА» (коллега) ревизия мультиагентная: орфография (9 правок O-01..O-08/O-14, в т.ч. проба щита CSP с битым 'metattp-equiv' молча падала с v10.8) + прочность крыши F-06/F-11/F-23/F-24 (QR не стирается логом зала, белый список тем); ШТАБ РЕВИЗИИ ·31 — дашборд аудита
v10.20 «КАДР» П2/T-20 закрыт: единый конвейер кадра М1 — призма/кристалл/шар-осколки в общем RAF-такте С19; конвейер живёт в ядре модулей и на страницах ДОМА; пауза при скрытии вкладки общая
v10.21 «ОДИН ГОЛОС» П2/T-19 закрыт: один SpeechRecognition на страницу (брокер __ГОЛОС в ядре модулей; второй движок вливается слушателем); фильтр песни в самом vcHandle; __ALERT — очередь с приоритетом; скан: честный вердикт — разные механизмы, не дубликаты
v10.22 «ЦВЕТ» П2/T-18 закрыт: палитры ЛАБа в OKLCH (светлота ровная по восприятию), гард читаемости — APCA Lc (гард 60), метрика одна на весь ЛАБ; попутно починена гамма-ветка (мусорный hex у тёмных каналов)
v10.23 «ЗАЛ» П2/T-15 остаток закрыт: С20 поверх КРЫШЫ (4 добавки-моста, её код не переписан) — голосование зала «что поём дальше» (каталог фонда 61 песня вшит, один голос с телефона, живой счёт, вердикт) + БРАВО-ВОЛНА (телефоны хлопают по очереди); зал в ЗДОРОВЬЕ
v10.24 «ПРИВАТ» ЭП-02 ШТАБа (R-18/R-19): аналитика канала ДАННЫЕ/RUVSON_каталог_канала_2026-09-30.xlsx ушла с Pages (файл живёт в истории репы и в локальной копии скриптов — вернуть при вердикте владельца можно одной командой); .gitignore вычищен: мусорная «.gt» снята, закрыты токены (.gh_token*), логи, тяжёлые архивы
v10.25 «КОНТРАСТ» ЭП-03 ШТАБа (C-10..C-17, C-26): токены --ink-on-accent/--toast-bg/--toast-fg (чернила и тост больше не зависят от темы/ЛАБа); тёмное золото kids/day/kraft — транскрипция «как звучит» читается ≥4.5:1; --red светлых тем; неактивные строки караоке ≥3:1 после подмеса; CTA ДЕТЕЙ — тёмные чернила вместо белого на градиенте; гард-матрица 6 пар в genPalette (текст 60 / dim 45 / faint 30 / акценты 45 по APCA, дожим в OKLCH); проба тап-целей ожила (селектор «aref]» был битым — родственник O-07) и линки сквозной навигации доведены до 24×24 (WCAG 2.2); прогоночный скрипт: 20 комбинаций тема×сцена — 0 провалов, томограф 98/98
v10.26 «ЧЕСТНЫЙ ЯЗЫК» ЭП-08 ШТАБа: F-01/F-13 язык ищется по ключу (setKey в __LANGS) — голосовые «английский/испанский» больше не включают казахский/немецкий (индексы эры ТРАНСЛИТА), чипы-двойники тоже по ключу, «транслит» честно отвечает про строку «как звучит»; F-02 STOP ТВ-пульта жив (au() перепаяна на __KV.audio); F-12 импорт настроек не уводит унисон за ±3 с (кламп на сетке 5 мс); F-14 таймер позиции снимается на паузе/конце; F-15 AudioContext сканера закрывается при выходе; F-18 «тект» — локальная переменная вместо общего состояния. Испытания 15/15, томограф 98/98
v10.27 «ЭТАЛОН» слияние параллельных линий; ЭП-02..ЭП-09 мультиагентно: приват (xlsx и АРХИВ_V3 сняты с Pages), контраст-эталон (токены --ink-on-accent/--toast-*, гард-матрица обоих генераторов палитр — портирована на APCA v10.22 «метрика одна»), z-закон 34/34 (КРЫША 70–90, INT32-магия списана), крыша-прочность (PeerJS пересобран под chrome76, дедуп звонков, Whisper dispose), единая версия window.APP (дубль-реестр АРБИТРА убран), дом видим (OG 1200×630, robots/sitemap/404, русский title+h1, noscript-двери), честный язык и СВ, кэш по весу v83 (206-перезапрос, mp3 cache-first, таймаут навигаций 3 с, ·16 в пре-кэше); попутный фикс: съеденные скобки [m в гард-матрице — SyntaxError валил script-блок ЛАБа, node --check пропустил
v10.28 «ФОНДОТЕКА» ЭП-09/R-06 поверх канона «ЭТАЛОН»: дверь ·16 СУФЛЁР встаёт в пре-кэш (последняя живая дверь вне ядра — установленные PWA получают её новым кэшем v87); serve31.mjs получил MIME-карту (SW требует честный text/javascript — без неё браузер молча отказывает в регистрации, тестовый сервер вводил в заблуждение); моя параллельная реализация F-26/R-03/F-27/F-28 снята — канон коллеги из «ЭТАЛОНа» силён (докатывание 206, вес 250 МБ, off-by-one, таймаут навигаций)
v10.29 «ОЧЕРЕДЬ» С20 ЗАЛ: вердикт зала больше не теряется — победитель запоминается (Г.победитель, в ЗДОРОВЬЕ), в карточке зала появляется честная предпрослушка «ПОСЛУШАТЬ МИНУСОВКУ ПОБЕДИТЕЛЯ» (minus/.mp3 из фонда 61, SW кэширует по весу) со статусом и честным СТОП; граница сказана: караоке-движок держит вшитую песню с таймингами — очередь подсказывает хозяину, что ставить следующим. VER С20 → v10.29. Испытания 11/11: вердикт→победитель №13, бокс+статус с файлом, играет/стоп, минусовка в фонде 200, консоль 0 ошибок
v10.53 «ОБЕРЕГ» С34, закон СИНГУЛЯРА (эргономика · приватность · конфиденциальность · юзабилити): ЩИТ ПРИВАТНОСТИ — честная точка микрофона по паттерну Apple (оранжевая = живёт) + «СВОЁ · 0 облаков», драйвер — обёртка над трактом-брокером «ОДИН МИКРОФОН» (без RAF); честное приглашение зала — правда о сигналинге PeerJS + кнопка «СКОПИРОВАТЬ ССЫЛКУ» (≥44px, WCAG 2.2); ТИХО — calm-час (IDEO 2025): 40 с без касаний рубашки присыпаются, строка песни не гаснет; АУРА theme-aware (цвета дыхания — токены темы); строка-герой 1.045 для глаз пожилых; ящик «оберег·щит» (2 вещи), проба ЗДОРОВЬЕ 24, кэш v108. Такты v10.30–v10.52 в этом журнале не вписаны (хвост R-13 — полная летопись живёт в data/versions.json)
П1 дорожной карты исполнен полностью: prefs v2 + ELRC, AudioWorklet YIN, один RAF-конвейер.

СОБЫТИЕ ·18 — как это работает (по архитектуре «СОБЫТИЕ/СОВМЕСТНОЕ ПЕНИЕ/ПАМЯТЬ»)

  • LOCAL CORE не тронут: без интернета всё по-старому; зал — функция, не зависимость.
  • ROOM: LOBBY → READY → COUNTDOWN → SINGING → FINISH → REVIEW; хост-авторитет + миграция хоста.
  • Участники: только имя + эмодзи (никаких email/password); слушатель без микрофона — равноправен.
  • Голоса: WebRTC mesh (до ~4–5 участников), MediaTransport-абстракция: ретранслятор Nostr (между устройствами) или BroadcastChannel+WebRTC (окна одного браузера, без сети).
  • Синхронизация: ping/pong clock-offset (медиана), старт от единого timestamp — «3-2-1-♪» у всех одновременно.
  • Запись: WebAudio-микс (минусовка + все голоса) → MediaRecorder → IndexedDB у КАЖДОГО участника. Серверу не достаётся ни байта голоса. Политика памяти (одного достаточно / все должны ◈) — в манифесте события.
  • ПАМЯТЬ: TEMPORARY 7 дней → ◈ навсегда; фото (сжатие до 640px) + подпись; экспорт webm; GC стирает просроченные временные записи при старте (метаданные + blob, безвозвратно).
  • Честные границы: mesh упирается в O(n²) соединений (для 3–5 человек — то что нужно; дальше SFU в дорожной карте); TURN-релея нет — за жёстким симметричным NAT голос может не пробиться; записи живут в браузере каждого, серверного хранилища воспоминаний нет (это осознанно: приватность по умолчанию).

Аудио (вшито в сайт)

  • minus/<videoId>.mp3 — 62 настоящие минусовки: 61 песня канала RUVSON + флагман «Когда теряем». Ремастер 2026-10-02: исходники были жёстко клиппингованы (потолок 0 dB, до 12 тысяч сэмплов на пиках у минусовок и 330 тысяч у фуллов) — снято лимитером, вычищен кодек-мусор выше 15 кГц, перекодировано в mp3 128 кбит/с. Хрип в динамиках устранён.
  • ХОР ·15 и СУФЛЁР ·16 находят минусовки сами — на сайте запоёт из коробки, без настройки.
  • Своя фонограмма: ХОР → «+ свой файл…» → ⬤ в память (IndexedDB) — дальше поёт без файлов.
  • Оригиналы (фуллы) — в ZIP на релизе; минусы — прямо в репозитории (плюс ZIP на релизе).

Цифры платформы (вычисляются из данных, не зашиты)

  • 61 песня канала RUVSON, 447 дорожек, 24 620 строк лирики
  • Флагман «Когда теряем» (OutShadow feat RUVSON): оригинал + 157 YouTube-переводов = 158 языков, тайминги слов — из реального ASR; плюс 228 LLM-переводов в паке ·15
  • Валидатор таймлайна: NaN/отрицательные/немонотонные/дубли/провалы >20 с бракуются, не «чинятся молча»

Технические принципы

  • Ноль innerHTML — вся отрисовка через DOM-фабрику (textContent), XSS-безопасно
  • Честные счётчики — «×157», «61×13» и пульс платформы считаются из фактических данных
  • Импорт LRC/SRT/VTT/TXT со строгой валидацией до сортировки; экспорт LRC/VTT (караоке-теги)/JSON
  • Мастер-часы audio.currentTime + rAF; темп ×0,5–1,5 и тональность ±6 пт в синтез-режиме
  • PWA: manifest + sw15.js (cache-first), Media Session, RTL для ar/he/fa/ur, режим «не смотреть» (aria-live)
  • IndexedDB — свои минусовки и файлы хранятся локально
  • Типизированные ошибки S15_*, аудиторская панель по каждой из 62 строк реестра

Документы

Тесты

Сборка ·15 и ОС проверяется автотестами: test_s15 53/53, test_os 44/44 (реестр, пульс, валидатор, хор, импорт, экспорт, RTL, PWA, ноль innerHTML).


Музыка: YouTube-канал RUVSON (@ruvson_music). Платформа собрана в один файл — офлайн прежде всего; минусовки всех песен уже на борту — открывай и пой.

Журнал тактов

| v10.5 | «ЗАКОН ПЕРВЫЙ» | Фон-гарантия: 0 картинок, 0 внешних запросов, щит CSP — вместо белого фона/мусора ничего чужого не грузится | | v10.20 | «ЭТАЛОН» | приват (xlsx/АРХИВ_V3 из Pages), контраст-эталон 63/63 пар + гард-матрица палитр, z-закон 34/34 (КРЫША 70–90), крыша-прочность (PeerJS chrome76, дедуп звонков, Whisper dispose), window.APP единая версия, дом видим (OG/ro | | v10.24 | «ЭТАЛОН» | такт v10.24 «ЭТАЛОН» — ЭП-02..ЭП-09 (наша ветка) × КАДР/ОДИН ГОЛОС/ЦВЕТ/ЗАЛ v10.20–v10.23 (ветка владельца) | | v10.25 | «ЭТАЛОН» | наш такт переезжает на v10.25 «ЭТАЛОН» (v10.24 занят ПРИВАТОМ владельца), sw15 кэш v84 | | v10.28 | «ЭМЕРДЖЕНТ» | index 27 дверей (+4 в кристалл и АРИАДНУ), window.APP v10.28 «ЭМЕРДЖЕНТ», ШТАБ ЭП-11 done, доки ¶-строки, ·19 nav закрыт (наследие слияния), re-seal хэшей | | v10.30 | «ЭМЕРДЖЕНТ» | виток v10.28→v10.30 «ЭМЕРДЖЕНТ», кэш v87→v88 (v10.28 ФОНДОТЕКА и v10.29 ОЧЕРЕДЬ владельца канон — заняты параллельно; коллизия sw15 разрешена объединением: ·16 в ядре + AI-абсолют); летопись 10.28/10.29 в реестре; ШТАБ Э | | v10.33 | «ПУСК» | CSP 'unsafe-inline' вместо мёртвых sha256-хэшей. | | v10.34 | «АРБИТР» | ОДИН МИКРОФОН — тракты getUserMedia (нота/запись/зал) через брокера «ОДИН ГОЛОС» с честным отказом и очередью; АРБИТР РУЛЯ — гость по умолчанию зритель, полный руль по кнопке хозяина; seq-эпохи в снимке гостя; кэш v89 | | v10.35 | «ХИРУРГ» | z-шкала полная — последний литерал вне шкалы (.z-кал календаря) токенизирован --z-cal:45, КРЫША не тронута (2147483760/77 — легальные splash-заказы зала); --fitK — одна точка: хук строки v10.10 делегирует в T-01 (window. | | v10.36 | «МЕШАНИНА» | контент = ХИРУРГ (v10.35, --z-cal/fitK) + ИР-скелет (timeBase/origin/Крумхансль/гейт); инцидент a9140e74 исправлен — блоб-контроль локально и после записи | | v10.37 | «КАЗНАЧЕЙ» | казна дома под учётом — window.__КАЗНА: реестр 13 семей (103 имени по инвентарю 126 присвоений, внешние модули включены), сверка живого окна (неучтёнка видна по именам), проба window.__HEALTH11 в ЗДОРОВЬЕ («казна цела»: | | v10.38 | «КОМОД» | фаза 2 консолидации — переселение синхро-семьи: 5 глобалов юстировки (__SYNCOFF/__OUTLAT/__VISLAT/__SYNC_NUDGE/__SYNC_SET) получают физический дом window.__КОМОД (ящик «синхро»); window.* остаются адресами-мостами (аксес | | v10.39 | «ШКАТУЛКА» | фаза 2 консолидации, такт 2 — переселение семьи «сканер·склад»: 7 глобалов (__SCAN/__SCAN_ACTIVE/__SCAN_SELECT/__REC/__POS/__IMPORT/__СКЛАД) переезжают во второй ящик window.__КОМОД; мосты window.* (аксессоры get/set, en | | v10.40 | «ЛАРЕЦ» | фаза 2 консолидации, такт 3 — переселение семьи «ЛАБ·виз·движение»: 8 глобалов (__LAB/__LAB_COLORSON/__WIZ/__JOKER/__CONFETTI_K/__CONFETTI_MODE/__VIB_K/__РЕЛАКС) переезжают в третий ящик window.__КОМОД; мосты window.* (а | | v10.41 | «СЦЕНА» | фаза 2 консолидации, такт 4 — переселение семьи «сцена·свет»: 12 глобалов (__SCENE/__VOL/__NIGHT/__LAMP/__ЗАКРЕПИСВЕТ/__СВЕТЛЫЕ_КОМНАТЫ/__СВЕТ_СМОЙ_ЗАЛИВКИ/__VIS_PAINT/__BEATVIZ/__DUCK/__LIGHTS/__4L) в четвёртый ящик win | | v10.42 | «ГОЛОС» | фаза 2 консолидации, такт 5 — переселение семьи «голос·микрофон»: 10 глобалов (__ГОЛОС/__М2ГОЛОС/__КВГОЛОС/__PULSEVOICE/__VC/__MIC_FACTS/__MIC_STATE/__MS_STATE/openMic/__SHILKA) в пятый ящик window.__КОМОД — 5 ящиков · 4 | | v10.43 | «ТАКТ» | С28 — голова семьи «такт·пульс·синхрон» в шестой ящик комода (7 мостов), проба ЗДОРОВЬЕ 17, кэш v98 | | v10.44 | «ЛАДОМ» | ребрендинг дома — прежнее имя вычеркнуто отовсюду (133 вхождения, 26 файлов + 10 переименований: дверь ·31 теперь СИНГУЛЯР_31_ЛАДОМ.html, пульт телефона ЛАДОМ_ПУЛЬТ_ТЕЛЕФОН.html, дорожные карты ЛАДОМ); два вида пульта — | | v10.45 | «ГОСТИНАЯ» | кузов КРЫШИ переодет в канон дома (стекло #17181A, янтарь #DEA968, Manrope, хром-серебро титула) — коричневый выведен целиком (бейдж/панель/плашка/гостевой экран/РУЛЬ С29/очередь/БРАВО), панели возвращена навигация (× + | | v10.46 | «ПУЛЬТ» | ящик С29 «пульт·сообщения» переселён в седьмой ящик комода; ядро ЛИЦ: 11 видов одного пульта, память лица kv.litsa, дверь «ПУЛЬТ · ЛИЦА» в крыше, проба ЗДОРОВЬЕ 18; кэш v101 | | v10.47 | «ВЫХОД» | выход с КРЫШИ 72×64 поверх всех слоёв; BACK на ТВ закрывает панель КРЫШИ; петля гостя и дубль-слушатель убиты; третий вид пульта ПЛИТКА; бренд «ЛАДОМ — пространство своих»; кэш v102 | | v10.48 | «ШИЛКА» | паспорт пульта — живые числа (трассер Шилки, упреждение, полёт звука, 8-tap, трубы, комод); ТИШИНА — конверт MUTE (шина ЛИЦ + СЛОВАРЬ + все лица); гость — таблица данных __ГОСТЬ_ТРАНС; пульт телефона в пре-кэше; кэш v103 | | v10.49 | «РОЛИ» | РОЛЬ — четвёртая ось пульта, фильтр шины намерений (ведущий/техник/гость/ребёнок), память kv.rol, проба ЗДОРОВЬЕ 20; перенумерован в 10.50 | | v10.49 | «СКЛАД» | (коллеги) S-04 storage.persist — ХРАН (дом просит браузер закрепить кэш), жив-гард пробы 17; перенумерован в 10.50 после столкновения с тактом «РОЛИ» | | v10.50 | «РОЛИ» | перенумерация после столкновения 10.49 (СТОП-ГОРН разрулил); летопись С31; кэш v105 | | v10.51 | «ЯЗЫКИ» | ре-посадка дельт СКЛАД (S-04 storage.persist/ХРАН, жив-гард 17, фолбэк null — потеряны при перенумерации коллег), проба 21; восьмой ящик комода «МАЛЫШ·языки» (8 вещей, 65 мостов), проба 22; кэш v106 | | v10.52 | «ПРОЁМ» | дом снова кликается целиком | | v10.52 | «ЧУВСТВА» | АУРА — фон за строками дышит басом (calm tech, шаг в конвейере С19); ПУЛЬС ГОСТЯМ — бит телом по мосту КРЫШИ (haptic-rhythm); ЭХО ЗАЛА — реверб ConvolverNode (singer-tools); F-03/F-04 закрыты; ящик «чувства·аура», проба 23; кэш v107 | | v10.53 | «ОРГАНИЗМ» | (коллеги) пульт КОМАНДА (Ctrl+K), честный счётчик дверей, дверь ·39 ОРГАНИЗМ, нить жива, щит в пульте, View Transitions, Малыш v0.7; кэш v108 | | v10.54 | «КОДЕКС» | документация треков HARMONIA и HIR в паблик (ДОКУМЕНТЫ/ТРЕКИ), синтез КОДЕКС_СИНТЕЗ_ТРЕКОВ.md, двери ·40 ГАРМОНИЯ и ·41 НАМЕРЕНИЕ, Малыш v0.8, летопись дописана (R-13 закрыт); кэш v109 | | v10.55 | «ПОТОК» | (коллеги) стриминг Малыша (rAF+«стоп»), калм-точка присутствия в зале, геном ОРГАНИЗМА в канонном золоте, честные счётчики, правило 16 «ДОМ ДЫШИТ ТИХО»; кэш v111 | | v10.56 | «СЛОВО» | партитура слова .harm/0.1 — валидатор формата + куплет 1 и финал «Просто люби» размечены слогами в долях (7 строк, 59 слогов), подсветка пульса на размеченных строках — маркерными весами вместо эвристики; профиль доступности harm-profile/0.1 — 10 осей поверх рулей дома, пресеты «минимум стимулов»/«читаю медленно»/«только текст и вибро», экспорт/импорт по явному действию; вкладка ПУЛЬТа «ПРОФИЛЬ»; ящик «слово·профиль», проба 25; Малыш v0.10 (правило 17, поверх их правила 16); перенумерация после СТОП-ГОРНа (канон 10.49→10.50); ШТАБ +4 тренда (Apple Sing TTML/AMLL, preservesPitch, профили ОС, offset); кэш v112 | | v10.57 | «ПЁРЫШКИ» | (восстановлено в С38): мобайл-фикс кнопок — топбар 390px (⚙ ПУЛЬТ и «?» тапаются), QR-бирка не наезжает на CTA; организм-аудит 500+ кнопок — деклараций нет | | v10.59 | «СИНТЕЗ» | три трека владельца: docs/СИНТЕЗ.md «дом одним взглядом» (ТЗ+карта+архитектура синтезированы), чип ОМНИ в панели ВИД (дыра I-11 закрыта), строка КОЛОНКИ в паспорте пульта (хвост карты погашен), МАЛЫШ часть 8 «Наука старшего» (11 правил ремесла), честность шапок ТЗ/АРХИТЕКТУРА/РИТУАЛ (US-05/US-09 сняты по v10.55), ребрендинг-хвосты вычищены; кэш v114 | | v10.60 | «ЧУТЬЁ» | мыслящая полоса пульта — недавние с честными откатами «↩» + предчувствия по контексту (объяснимый AI), ПУЛЬТ v15 двойная ветка ◉/◈, казна: неучтёнка гашена; кэш v115 | | v10.61 | «РУЧКИ» | генеративные карточки-действия Малыша в калм-карте — 6–8 по контексту, каждая объясняет «почему», честный откат «↩» (стек сессии через шину ЛИЦ), доклады и двери без фальшивой отмены; проба ЗДОРОВЬЕ 26; МАЛЫШ часть 9; ШТАБ +2; VER-фолбэк/ХАРМ/ПРОФИЛЬ подняты (долг С40); кэш v116 | | v10.58 | «ВАЛЬС» | (коллеги) дверь ·42 КОЛОНКА (DAG+Policy Gate с PIN, hash-chain SHA-256, аппаратная приватность, VLAN, IaC, ЗДОРОВЬЕ 10/10) + дистрибутив КОЛОНКА/; (дельта ОМНИ) пятый вид пульта ОМНИ — кольцо 360°, память kv.pult; МАЛЫШ часть 7 «Уроки КОЛОНКИ»; честность: титул дома до ВАЛЬСА, кэш-поле versions.json v112→v113, летопись С37 восстановлена, манифест v1.20.0 по их заявке; кэш v113 |

Примечание (R-13): такты v10.31 «ДОБОР» и v10.32 «ЭТАЛОН» в этой репе не коммитились — в ту ночь пуш был заблокирован (PAT-401); они живут в локальных комплектах и ворклоге. Полная летопись — data/versions.json.

About

СИНГУЛЯР — офлайн-вселенная караоке RUVSON: 64 песни × 200 языков · ОРКЕСТРАТОР ·15 · хаб + 45 дверей · PWA (офлайн, без слежки)

Topics

Resources

Code of conduct

Contributing

Security policy

Accessibility

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages