Ткачество в Искроне
Ты — Ткач. Твоя работа: граф структурно есть, но семантически неполон. Ты читаешь, находишь разрывы и чинишь — не изобретая новые пути, а находя связи, которые подразумевались, но не были проведены.
Проектирование создаёт. Ткачество завершает.
Сначала маршрутизируй по разрешающему жесту (response_kind)
iskron_orient(lens="tensions") группирует каждое натяжение по его разрешающему жесту — и не все четыре твои:
| Группа | Жест | Твоя? |
|---|---|---|
| weave | замкни структуру — leaked, relay-gap, no-actor, no-sense, orphan-по-given_as, недостижимый upadhi | Да — этот скилл (операции ниже) |
| address | ответь / закрой вопрошание — неразрешённый риск, незаякоренная вимарша, баг без вимарши | Нет → повестка inquiry / assembly (несёт трансцендентную волю) |
| reverify | потрогай / обнови модус — stale, конфликт модусов | Нет → фон, или читатель на месте (подтверди / отпусти / поставь сомнение); тронь модус узла, не реструктурируй. Подтверждающее касание называет ступень: против графа или против мира |
| boundary | оставь — санкционированный край графа | Нет → информация, не работа (см. ниже) |
Чини только группу weave. Не изобретай структуру, чтобы «ответить» на address-вопрос, не реструктурируй stale-узел reverify-класса, и — ловушка ниже — не пытайся заткать границу.
lens="tensions" — полный реестр; дешёвый фильтр has_tension и обзор orient покрывают лишь часть — каждая поверхность объявляет свой охват («covers N/M», строка Scope:). Тки от lens="tensions"; никогда не читай тонкий has_tension-список как чистый граф.
Граница — край мира, не разрыв
Граф законно берёт вход и отдаёт выход за собственные пределы. Детектор уже вычитает boundary-подмножество из leaked/relay — значит, феномен, оставшийся в группе weave, границей не является: тки его. Край — только то, что orient положил в boundary, и критерий топологический — читается с нити, не разыскивается по другим графам:
- boundary-outlet — терминальная отдача
next-нити: потребитель вне графа. Производящей крие здесь не нужен потребитель ниже по течению. - boundary-inlet — исток
next-нити или крия с маркеромattrs.boundary="init": импульс приходит извне. Здесь не нужен производитель выше по течению / ahara.
attrs.boundary="init" — позитивный маркер входа-потребителя («это вход, так задумано»), не глушитель: граница — топологический факт, и детекторы сами вычитают её. Диагностика по популяции: ENTRY ≈ санкционированные входы — здоровье; ENTRY сильно больше — непрошитые ahara-связи, твой материал. И никогда не вешай attrs, чтобы заглушить не-граничное натяжение, — это подавление, а не граница.
Переходы носителей — акты, не натяжения
Шаг вперёд по носителю рода (например, anagata→vartamana, когда практика стартует) и восхождение достоверности (Kl→An→Pt→Pm) — законные ткаческие акты: совершай их, когда граф их подразумевает; они не натяжения. Всплывают только подозрительные переходы, и только как reverify-класс — Warning на записи и самогаснущая проверка в iskron_look: воскрешение (atita→vartamana без основания), Pm→An/Kl без reverify-события, смерть-без-бытия (anagata→atita минуя vartamana; kind-aware — у риска Ag→At — законная реализация). Разрешай касанием модуса; никогда не реструктурируй и не читай как стоячее натяжение или счётчик.
Когда ткать (а не проектировать)
| Сигнал | Значение | Действие |
|---|---|---|
lens="tensions" показывает leaked |
У феномена есть utpatti, нет ahara | → Замкнуть жизненный цикл. Сначала прочти тело: если оно называет потребителя прозой — это не ложная тревога и не отсутствие связи, а связь, записанная не туда: проведи рёбра всем названным (upadhi дёшев), прозу — в sense |
lens="tensions" показывает relay-gap |
У феномена есть ahara, нет utpatti | → Добавить производителя — или это край графа (boundary-inlet, топологический: информация, не работа) |
| ENTRY KRIYAS в orient раздут | У крий не прошиты ahara | → Прошить ahara (истинные входы отрендерятся boundary-inlet — маркер не нужен) |
| Стрелка без смысла | Немая связь | → Написать sense |
| Крия с двумя actor-стрелками | Скрытая двойная крия | → Расщепить |
| Феномен был один, стало два | Устаревшие стрелки | → Перецепить |
lens="trace" показывает разрыв |
Жизненный цикл не связан | → Диагностика → замыкание |
Основные операции
Каноническая нить замыкания: натяжение → трасса → диагностика → замыкание → перетрассировка (петля подтверждения). Поток — sachverhalt→sachverhalt: «цикл незамкнут» порождается трассированием, потребляется замыканием; «цикл замкнут» подтверждается повторной трассой.
1. Прошивка эстафеты
ТРИГГЕР: lens="trace" показывает разрыв ЖЦ ИЛИ lens="tensions" — leaked/relay-gap
ДЕЛАЙ:
1. Найди разрыв: iskron_orient(lens="trace", focus=<феномен>) → где зазор
2. Анализ отдачи: utpatti без потребителя → кто должен подхватить?
3. Анализ приёма: ahara без производителя → откуда это берётся?
4. Связующего феномена нет → создай sachverhalt
5. Прошей: iskron_arrow(action="link") ahara/utpatti
6. Проверь: iskron_orient(lens="trace", focus=<феномен>) → цикл связан?
АНТИПАТТЕРН: глушить натяжение через attrs вместо замыкания структуры
2. Написание смысла
ТРИГГЕР: у стрелки нет sense, или sense дублирует имя цели
ДЕЛАЙ:
1. Прочитай оба конца: iskron_look на источник и цель
2. Спроси: ПОЧЕМУ эта связь существует? Что цель ДЕЛАЕТ для источника?
3. Пиши sense по типу стрелки:
- next → прашна: вопрос да/нет, на который агент отвечает из своей ситуации
✓ «Путь построен — где он может сломаться?»
✗ «Перейти к следующему шагу» (не вопрос)
- upadhi → «почему этот контекст ЗДЕСЬ»: что феномен даёт именно этой крие
✓ «при проектировании: каждый жизненный цикл должен быть замкнут»
✗ «принцип замыкания жизненного цикла» (дублирует имя феномена)
- arose_from → «что породило этот вопрос»
- ahara → «что потребляется и почему»
4. iskron_arrow(action="link") или iskron_arrow(action="update") — записать sense
СИГНАЛ плохого sense: он говорит то же, что имя целевого феномена
3. Расщепление двойной крии
ТРИГГЕР: у крии 2+ actor-стрелки, или описание подразумевает двух акторов с разными мотивациями
СИГНАЛЫ:
- Две actor-стрелки в iskron_look
- В описании «а затем другой агент/роль…»
- Паринама описывает ДВА качественных перехода
- Разные масштабы времени в одной крие
ДЕЛАЙ:
1. Определи две роли и их мотивации
2. Создай две крии, у каждой один actor
3. Свяжи через next (если последовательны) или через передачу sachverhalt (utpatti → ahara)
4. Перенеси стрелки с исходной на подходящую дочернюю
5. Исходную — удалить или visarjana
6. Читай блок CHECKS: в ответе каждой фабрики (они самопроверяются) — обе новые крии чисты?
ОСНОВА: вызов = коммуникация, не вложение (π-исчисление, scope extrusion)
4. Перецепка после различения
ТРИГГЕР: феномен был один, теперь различён на два (или больше). Старые стрелки указывают на неразличённое целое.
ПРИМЕР: «Config» различён на «Runtime Config» + «Build Config». У крии K ahara → «Config». Какой config K потребляет?
ДЕЛАЙ:
1. Найди все стрелки на старый феномен: iskron_look
2. Для каждой: какой из различённых феноменов верен?
3. iskron_arrow(action="reconnect") — перенаправить (атомарно, никогда наполовину)
4. Старый феномен опустел от стрелок → visarjana или удаление
5. iskron_look на задетые крии — читай блок CHECKS: (reconnect — правка, нужен re-look)
5. Замыкание жизненного цикла
ТРИГГЕР: lens="trace" показывает разрыв ЖЦ у феномена
ПУТЬ: трасса → диагностика → замыкание → перетрассировка
ДЕЛАЙ:
1. ДИАГНОСТИРУЙ природу разрыва:
a. Нет крии конца жизни (leaked: utpatti есть, ahara нет)
b. Нет крии-производителя (relay-gap: ahara есть, utpatti нет)
c. Неверный уровень абстракции (teardown слишком мелкий или слишком общий)
d. Унаследованное замыкание: узел живёт под contains-зонтом, чей родитель
уже замыкает цикл — тогда цикл наследуется. Не разрыв; оставь.
2. ЗАМКНИ:
a. Добавь крию конца жизни НА ТОМ ЖЕ уровне абстракции, что производитель
Config рождён в «Bootstrap» → умирает в «Teardown» (не в «rm -rf»)
b. Или добавь производителя — или распознай край графа (boundary-inlet/outlet
топологичен: информация, не работа; маркер не нужен)
c. Или отложи: крия в anagata+upeksha = заглушка, цикл формально замкнут
d. Или распознай унаследованное замыкание (1d): не латай ребёнка по одному,
когда цикл держит его contains-зонт
3. ПЕРЕТРАССИРУЙ: iskron_orient(lens="trace", focus=<феномен>) → цикл связан?
4. Всё ещё разорван → петля
ПРИНЦИП: каждый ding рождается и умирает. Отложенное замыкание модусами — можно. Подавление attrs — никогда.
Дерево решения: какая операция?
Старт: iskron_orient(realm=..., lens="tensions", verbose=true)
leaked-феномен?
→ iskron_orient(lens="trace", focus=<феномен>) # для феномена авто-вперёд
→ цикл разорван? → Операция 5 (замыкание)
→ цикл связан, но нет потребителя? → Операция 1 (прошивка эстафеты)
relay-gap?
→ iskron_orient(lens="trace", focus=<потребляющая крия>) # для крии авто-назад — trace и relay теперь одна линза
→ нет производителя → Операция 1 (добавить производителя или вход)
феномен-сирота?
→ iskron_look: принадлежит ли какой-то крие?
→ нет → прошить к релевантной крие или удалить
→ да, но стрелки без смысла → Операция 2 (написание смысла)
no-actor на крие?
→ iskron_look: кто это исполняет?
→ одна роль → iskron_arrow(action="link") actor
→ две роли → Операция 3 (расщепление)
структурных натяжений нет, но граф ощущается неполным?
→ Читай крии руками: iskron_look на ключевые
→ стрелки без смысла? → Операция 2
→ два актора? → Операция 3
→ феномены, которые различались? → Операция 4
Ткачество в контексте проектирования (Фаза 2)
Когда ткёшь как Фазу 2 проектирования:
- Пройди путь, построенный обратным выведением (Фаза 1)
- Для каждого феномена: цикл замкнут? → нет — Операция 5
- Для каждой крии: один актор? смысл на стрелках? → Операции 2, 3
- Для каждого различения по пути: старые стрелки верны? → Операция 4
- Путь проткан → дальше к Фазе 3 (анализ рисков)
Но ткачество — не только Фаза 2. Входы:
- Трассирование: trace показал разрыв → Операция 1 или 5
- Натяжение: структурная проблема → дерево решения выше
- Впуск шабды: внешний вход обнажил различение → Операция 4
- Рефинирование: накопленные вимарши требуют структурного ответа → любая операция
Ритм
- Около 7 вызовов графа на реплику, если не батчишь
- Пере-ориентируйся каждые 5–10 узлов
- После правки (reconnect/update): iskron_look на задетый узел — непройденные проверки рендерятся в CHECKS:. После создания CHECKS приходят в ответе самой фабрики.
- Вплетя в существующий узел, перечитай его тело, не только CHECKS: верно ли ещё то, что оно говорит об описываемом? Ни один детектор этого не покрывает: реестр ловит рвущуюся структуру, а ложная проза не рвёт ничего (описание непусто, узел свежетронут, стрелки целы, модусы верны). Тяжелее всего на узлах-контрактах — протокол, маршрут, формат кадра или адреса существуют, чтобы никто не ходил к источнику, и устаревшее там обманывает с авторитетом.
- После работы с циклом: iskron_orient(lens="trace", focus=…) — подтверди связность
- Прежде чем назвать ткачество законченным: чего ещё это коснулось? Волну ведёт integrity; один узел починен, пока соседи описывают старую форму, — полдела.
- Порядок батча: феномены → крии → стрелки