# ТКАНЬ · СВОЙ ПУТЬ (такт v1.41.0, 2026-10-06)

## Слово владельца

> «МЫ НЕ МОЖЕМ ИГНОРИРОВАТЬ — МЫ ДОЛЖНЫ РЕАЛИЗОВАТЬ, ВЫБРАВ СВОЙ ПУТЬ.
> Эмодзи-пиктограммам (свиток, дом, ключ) НЕ МЕСТО НА САЙТЕ — ЭТО НЕ АТАРИ
> С ПИКТОГРАММАМИ».

Приказ двухсоставный, и оба состава выполнены машиной в этом такте.

## Состав 1 — ТЗ реализовано своим путём

Вход: ТЗ владельца **«СИНГУЛЯР — ТЗ P2P HUMAN INFORMATION FABRIC v1.0»** и два
прототипа внешней разработки: `singulyar-p2p-human-information-fabric v1.14`
и `singulyar-object-graph v0.2`. Своё решение (Закон-3: взять все рабочие
наработки, но не тащить чужой код как есть):

**Ядро — 7 ES-модулей в `БИБЛИОТЕКИ/ткань/`, 0 зависимостей:**

| Модуль | Слой ТЗ | Что держит железом |
|---|---|---|
| `протокол.mjs` | §протокол | SNG-P2P/1: offer → accept/reject → chunk × N → complete → ack; честные ошибки с кодами; свой base64 без потерь |
| `целостность.mjs` | слой 8 | SHA-256 через crypto.subtle (браузер и node ≥19); одна hex-буква не та — байты чужие |
| `манифест.mjs` | слой 4 | O-01 objectId = `sgo:sha256:<64hex>` вне транспорта; O-02 манифест без содержимого; O-03 чанков вычисляется; O-04 подделка ловится; O-06 описание ≠ payload |
| `отношения.mjs` | слой 2 | R-01 без аккаунта (личность = отпечаток); R-02 принимает явное «да» человека; R-03 блок закрывает доставку; R-04 удаление хранит историю; R-05 склад локален; R-06 append-only журнал; R-07 дедуп по eventId |
| `представления.mjs` | слои 5–6 | порядок ТЗ §6: явный выбор человека → жёсткие требования → политика → устройство → доступность → сеть → баллы; **балл НИКОГДА не пробивает жёсткое требование**; честные статусы выбрано/недоступно/неизвестно |
| `транспорт.mjs` | слой 7 | MEANING ≠ TRANSPORT: провод видит вид конверта, не смысл; BroadcastChannel; инъекция шины для тестов |
| `ткань.mjs` | сборка | единый вход, закон ткани одной строкой |

Слои 1/3/9/10/11 (Person, Intent, Security, Memory, Evidence) ткань не
дублирует — они уже живут в доме: ·19 ЧЕЛОВЕК, ·29 СВОБОДА, СВОД I-01..I-10,
память по решению человека (I-06). Так сказал сам ТЗ (§0): не ломать
существующие контракты, лечь под ·19 → ·21 → ·22.

**Дверь ·30 «ТКАНЬ»** — `СИНГУЛЯР_30_ТКАНЬ.html`, канон Spatial Glass:
void #0A0A0C, стекло, золото #D4AF37 — единственный акцент; 0 картинок
(сцена — две орбиты, нить и летящие осколки-чанки нарисованы DOM+CSS);
DOM-сборка (innerHTML = 0); нативные fieldset/radio/select/status;
WCAG 2.2 (цели ≥44px, фокус виден, reduced-motion). Человек решает:
манифест прибыл → **принять/отказать** (I-01); байты сошлись →
**сохранить/забыть** (I-06). Провод честный: вкладки — BroadcastChannel,
устройства — WebRTC DataChannel с ручным сигналингом, отделённым от транспорта.

**Связи в манифесте дома:** s30 → s19 ЧЕЛОВЕК, s21 ОБЩЕНИЕ, s22 СВЯЗЬ —
цепочка ТЗ. Дом стал 19-дверным.

## Состав 2 — Атари выкурено

Сквозной выкур эмодзи-пиктограмм по живому UI (пиктограммы — это иконки,
не текст): румы ·17 ЗАЛ, ·18 СОБЫТИЕ, ·20 ФОНЕТИКА, ·23 КРУГ, ·24 ПОЧТА,
·25 КОШЕЛЁК, ·26 ЛИНИЯ + живые доки (README, ИНСТРУКЦИЯ_СТАРТ, СВОД,
ГОТОВНОСТЬ и др.). Свыше **850 замен**.

Свой путь дома — **глифы канона + слова**, тот же язык, на котором дом
говорил всегда: ◇ ◈ ⬢ ⬡ ◉ ∿ ⌇ ¶ ⤳ § ⬣ ◐ ○ ● △ ✦ ∞ ♪ ⌂. Люди круга получили
уникальные глифы вместо зверинца: ПАША ◇, АНЯ ◈, ИВАН ⌇, ЖЕНЯ ∿, АНДРЕЙ ◉,
МАША ✦, НАТАША ⬡, ЯНА ◐, ВИТЯ ⤳, МАША ∞, НИКИТА ⬣, ОЛЯ ○, ВОЛОДЯ ¶,
ЮЛЯ §, ЛЕРА ⌂, RUVSON ⬢. Функции получили честные знаки: микрофон ◉,
камера ◈, копировать ¶, связь ⌇, пульт ⤳, замок §, удалить ✕, память ◈.

Совместимость: старые профили в localStorage хранили эмодзи. В каждый
социальный рум вживлена **ЛЕГЕНДА_ГЛИФОВ + канонГлиф()** — при отрисовке
старое значение переводится в глиф канона, и Атари не возвращается на сайт
даже из сохранённого.

## Доказательства

- `node --test ИНСТРУМЕНТЫ/test_s30_tkan.mjs` — 16/16: вектор SHA-256,
  O-01..O-06, R-01..R-07, MEANING ≠ TRANSPORT, «жёсткое сильнее балла»,
  base64 без потерь, чанки доехавшими байтами.
- `python3 ИНСТРУМЕНТЫ/test_s30_browser.py` — комната живая: манифест →
  передача между двумя вкладками → дайджест сошёлся → решение человека;
  эмодзи на странице: 0.
- Регрессия: синтаксис всех тронутых рум (check_page_scripts), ядро
  (test_modules_logic), каталог (test_catalog_index), шестерёнка (check_gear).
- Открытый код: всё в репозитории, любой видит (transparency = open source).

## Что взято у прототипов (Закон-3, с указанием источника)

- fabric v1.14: BroadcastChannel-путь, ручной offer/answer как честная
  демонстрация WebRTC без скрытого сервера, «отношение — событие, не логин».
- object-graph v0.2: жёсткие ограничения перед ранжингом, объяснимые причины,
  честный UNKNOWN, профиль человека как явные требования (WAI-Adapt-дух).
- Отвергнуто сознанно: `innerHTML`-сборка обоих прототипов (закон дома —
  createElement), вымышленные данные без provenance-политики, эмодзи-декор.
