# СВОД ЗАКОНОВ ДОМА СИНГУЛЯР · v1.0.0

> Такт v1.44.0 «ПОЛИМАТ» · 2026-10-06 (пополнен I-11; исходный такт v1.37.0 «СВОД»). Источник: синтез с ТЗ «HUMAN RUNTIME»
> старших товарищей (их §29, инварианты I-01..I-10) — сверены с нашим кодом
> построчно и переведены на язык дома. Машиночитаемая копия — рядом:
> `ДОКУМЕНТЫ/СВОД_ЗАКОНОВ.json`; проверка согласованности —
> `ИНСТРУМЕНТЫ/test_svod_zakonov.py`.

**Правило свода:** закон живёт в коде и доказывается тестом. Закон без кода —
лозунг; код без теста — обещание; и то и другое в дом не входит. Каждый закон
ниже указывает, где живёт (файлы) и чем доказан (прогоны). Если закон живёт
в файле, но тест ещё не написан — это честный GAP, а не «почти готово».

---

## I-01 · ЧЕЛОВЕК РЕШАЕТ

Явный выбор человека сильнее автоматики. Автоматика и машины только
предлагают — последнее слово всегда за человеком. В ядре кристалла это
«human-choice» без fallback; в ·19 override всегда выигрывает; в ·22
«не решено» ≠ «решено: нет»; в композиции машина возвращает варианты со
состоянием «предложено», а не готовый приказ.

**Живёт:** `БИБЛИОТЕКИ/кристалл/crystal-core.mjs`, `БИБЛИОТЕКИ/кристалл/composition.mjs`, `СИНГУЛЯР_19_ЧЕЛОВЕК.html`, `СИНГУЛЯР_21_ОБЩЕНИЕ.html`, `СИНГУЛЯР_22_СВЯЗЬ.html`
**Доказано:** `test_crystal_logic.mjs` · `test_bridge_logic.js` · `test_composition.mjs`

## I-02 · СМЫСЛ ОДИН

Представление, канал, транспорт и хранение смысл не меняют. Один смысл —
сколько угодно видов: текст, речь, Брайль, вибро — всё это формы одного и
того же. Инвариант ядра «СМЫСЛ ≠ ПРЕДСТАВЛЕНИЕ ≠ КАНАЛ ≠ ТРАНСПОРТ ≠
ХРАНЕНИЕ» — та же мысль, сказанная короче.

**Живёт:** `crystal-core.mjs`, `semantic-event.schema.json`, `СИНГУЛЯР_21_ОБЩЕНИЕ.html`
**Доказано:** `test_crystal_logic.mjs` · `test_bridge_logic.js` · `test_core_integrity.py`

## I-03 · БЕЗ КАТЕГОРИЙ ЛЮДЕЙ

Человек не определяется через тип доступности. Способность ≠ личность,
предпочтение ≠ способность. В доме нет «слепых» и «глухих» — есть каналы,
заданные человеком, и веер представлений, который получатель строит сам.
Веток «если человек слеп» в коде дома нет и не должно появляться.

**Живёт:** `СИНГУЛЯР_19_ЧЕЛОВЕК.html`, `СИНГУЛЯР_21_ОБЩЕНИЕ.html`, `БИБЛИОТЕКИ/adapter-os/src/core.mjs`
**Доказано:** `test_bridge_logic.js` · `test_adapter_os_wire.py`

## I-04 · FALLБЭК ВИДЕН

Подмена или урезание канала всегда наблюдаемы и всегда отменяемы человеком.
Тихих подмен не бывает: у каждого fallback есть причина («explicit-choice-
unavailable», «СРЕДА_УРЕЗАНА: …»), записанная рядом с результатом.

**Живёт:** `crystal-core.mjs`, `composition.mjs`, `СИНГУЛЯР_22_СВЯЗЬ.html`
**Доказано:** `test_crystal_logic.mjs` · `test_bridge_logic.js` · `test_composition.mjs`

## I-05 · ОФЛАЙН ПЕРВЫЙ

Локальная часть дома не ломается от отсутствия сети. Сеть — функция, не
зависимость: journal живёт в IndexedDB, сервис-воркер держит ядро в кэше,
страницы открываются с диска без единого внешнего запроса.

**Живёт:** `sw15.js`, `index.html`, `СИНГУЛЯР_19_ЧЕЛОВЕК.html`, `journal.mjs`
**Доказано:** `test_modules_logic.js` · `test_catalog_index.py` · `test_crystal_logic.mjs`

## I-06 · ПАМЯТЬ — РЕШЕНИЕ ЧЕЛОВЕКА

Временное не становится вечным без явного решения человека (◈ в ·18,
`memory.decide` в мостах кристалла). Никакой «автоматически сохранённой
навсегда жизни». Валидатор композиции отвергает «вечное без человека» —
это не стилистика, а машинный закон.

**Живёт:** `bridges.mjs`, `composition.mjs`, `СИНГУЛЯР_18_СОБЫТИЕ.html`, `crystal-core.mjs`
**Доказано:** `test_crystal_bridges.mjs` · `test_composition.mjs` · `test_s18_logic.js`

## I-07 · ТРАНСПОРТ НЕ ВЛАДЕЕТ СМЫСЛОМ

Событие переживает смену транспорта: Nostr-релеи, прямые WebRTC,
BroadcastChannel, свой сервер — заменяемые провода, а не часть смысла.
Конверт кристалла несёт `transport` как метку, не как содержание.

**Живёт:** `crystal-core.mjs`, `journal.mjs`, `СИНГУЛЯР_22_СВЯЗЬ.html`, `СИНГУЛЯР_17_ЗАЛ.html`
**Доказано:** `test_crystal_logic.mjs` · `test_crystal_bridges.mjs` · `test_s22_logic.js`

## I-08 · АДАПТЕР ЗАМЕНЯЕМ

Замена адаптера (голос, транспорт, хранение, ИИ) не меняет смысловой
контракт. Реестр адаптеров Adapter OS, контракты MODES кристалла и реестр
примитивов композиции — три двери одного правила: провайдер не может
стать заложником дома.

**Живёт:** `БИБЛИОТЕКИ/adapter-os/src/core.mjs`, `crystal-core.mjs`, `composition.mjs`
**Доказано:** `test_adapter_os_wire.py` · `test_composition.mjs` · `test_crystal_logic.mjs`

## I-09 · БЕЗ СКРЫТОЙ ВЛАСТИ

ИИ и движки не меняют решение человека незаметно. Недоказанное не
объявляется доказанным: аудит ядра по умолчанию ставит статус UNKNOWN,
МОЗГ работает опционально и не является authority, композиция с
неизвестным намерением честно отказывает вместо выдумки.

**Живёт:** `crystal-core.mjs`, `composition.mjs`, `БИБЛИОТЕКИ/adapter-os/llm.mjs`, `СИНГУЛЯР_21_ОБЩЕНИЕ.html`
**Доказано:** `test_llm_logic.mjs` · `test_composition.mjs` · `test_crystal_logic.mjs`

## I-10 · ВОСПРОИЗВОДИМОСТЬ

Одинаковые события и условия дают одинаковое состояние. Счётчики дома
вычисляются из фактов, а не зашиты руками; каталог сходится с диском;
отпечаток ядра проверяется SHA-256; каждое заявление имеет доказательство —
иначе оно не заявление, а красивый текст.

**Живёт:** `journal.mjs`, `crystal-core.mjs`, `ДОКУМЕНТЫ/СИСТЕМАТИЗАЦИЯ_ВСЕЛЕННОЙ.md`, `ГОТОВНОСТЬ.manifest.json`
**Доказано:** `test_core_integrity.py` · `test_catalog_index.py` · `test_crystal_logic.mjs` · `test_svod_zakonov.py`

---

## I-11 · ПАРАМЕТР

Каждый параметр, который система меняет, человек может найти, посмотреть,
поменять сам, сохранить и откатить. Смена представления — simple/full,
тема, канал — не уменьшает множество доступных функций и параметров:
простота есть режим представления, а не урезание возможностей. На лице
дома это «Что хотите сделать?» и всегда рядом «Я сам»; в двери ·31 это
Parameter Control Subsystem: PARAMETER → DISCOVERABLE → INSPECTABLE →
CONTROLLABLE → PERSISTENT → REVERSIBLE.

**Живёт:** `СИНГУЛЯР_31_ЛАДОМ.html`, `index.html`, `ДОКУМЕНТЫ/ИНЖЕНЕРНЫЙ_ПАРАМЕТР.md`
**Доказано:** `test_s31_ladom.py` · `test_svod_zakonov.py`


---

## I-12 · ПОРЯДОК ЯЗЫКОВ

Первый человеческий язык — РУССКИЙ; второй ВСЕГДА — СЕРБСКИЙ; третий ВСЕГДА —
КАЗАХСКИЙ; четвёртый ВСЕГДА — НЕМЕЦКИЙ. Далее — 15 языков СССР в конституционном
порядке союзных республик (русский, украинский, белорусский, узбекский, казахский,
грузинский, азербайджанский, литовский, молдавский, латышский, киргизский,
таджикский, армянский, туркменский, эстонский). Далее — все языки народов СССР.
Далее — все языки в порядке от большего к меньшему по количеству носителей.
Порядок принадлежит владельцу и не пересортировывается машиной: новые языки
входят в свою зону по закону. Канон — машиночитаемый
`ДАННЫЕ/ПОРЯДОК_ЯЗЫКОВ.json`.

**Живёт:** `СИНГУЛЯР_31_ЛАДОМ.html`, `ДАННЫЕ/ПОРЯДОК_ЯЗЫКОВ.json`, `ДОКУМЕНТЫ/СВОД_ЗАКОНОВ.json`
**Доказано:** `test_zakon_yazykov.mjs` · `test_zakon_yazykov_ladom.py`

---

## I-13 · СВОЙ МЕХАНИЗМ

Чужих услуг не ждём и никого не нанимаем: всё, что у других есть, берём только
как открытую спеку и строим своё от ноля — до их уровня и на голову лучше.
Чужой токен не есть ключ к дому, а ждать готовую палку-ковырялку — не наш путь.

**Живёт:** `ДОКУМЕНТЫ/ТРЕКИ/LADOM_SINGULAR/src/svoya-kist.mjs`, `ДОКУМЕНТЫ/ТРЕКИ/LADOM_SINGULAR/src/svoy-glaz.mjs`, `ОТЧЁТ_Л1_СВОЙ_ПУТЬ.md` (трек LADOM_SINGULAR)
**Доказано:** `tests/test_takt_10.91_kist_glaz.mjs` (трек) · `test_svod_zakonov.py`

---

## Как свод пополняется

Новый закон входит в дом, только если назван файл, где он живёт, и тест,
который его доказывает. Оба указываются в машиночитаемом JSON рядом —
и проверяются автоматически: исчезнувший файл или тест роняют
`test_svod_zakonov.py`, и свод честно перестаёт быть «зелёным».

*Источник инвариантов: ТЗ «HUMAN RUNTIME» (§29) старших товарищей —
принято с благодарностью; формулировки, файлы и доказательства — дома.*
