# Ритуал такта — как выпускается версия дома

> **Статус:** ✅ Актуально · **Такт:** v10.59 «СИНТЕЗ» · **Обновлено:** 2026-10-11
> Инструкция (how-to) для разработчика/агента. Пропускать стадии нельзя — дом помнит всё. См. также: [АРХИТЕКТУРА.md](АРХИТЕКТУРА.md) — почему так; [МАЛЫШ.md](МАЛЫШ.md) — наставления агенту; [../CHANGELOG.md](../CHANGELOG.md) — куда уходит факт.

## Что такое такт

**Такт** — один цикл дыхания дома: версия + ритуал из 8 стадий. Имя такта — одно слово, отражающее суть работы («ПРОЁМ», «ОРГАНИЗМ», «АТЛАС»). Номер такта `v10.NN`, поколение кэша `s15-orkestrator-vNN` растут монотонно (после v10.54/v109 следующий слот — v10.55/v110).

## Восемь стадий

1. **досье** — разведка перед работой: верифицировать PAT; прочитать `data/versions.json` (текущий такт, поколение); перечитать целевые файлы из репы (не из памяти!); сформулировать задачу такта одним абзацем.
2. **патчер** — правки кода и текстов скриптами, каждый из которых **идемпотентен** (второй прогон не ломает): точные анкоры, маркеры-стражи (`guard=`), проверка «new содержит old» перед вставкой; мета CSP правится цельным текстом, никогда regex-кусочками; конвейер сборки фиксирован (патчер → resurrect → in-place), порядок стадий не менять — он ловится тестами.
3. **vm-тест** — `node --check` всех правленых JS; поднять локальный стенд (`python -m http.server`); Playwright-прогон: двери строятся, меню живо, консоль чиста; шума стенда (404 от недокачанных активов) — отфильтрован; тесты ловят настоящие баги — править код, а не ожидания (три такта подряд vm-тест ловил живой баг: `норма(`, дубль `script-src`, мёртвый КОРД).
4. **цех** — сборка релиза: bump `S15_CACHE` в `sw15.js`, внос новых активов в пре-кэш, запись такта в `data/versions.json` (версия, такт, дата, счётчики, летопись +1), при апстриме Малыша — синхрон `БИБЛИОТЕКИ/adapter-os/llm.mjs` с `ОБУЧЕНИЕ/` апстрима (двухрепность).
   **Цех правды** (с латки С128): `python3 ИНСТРУМЕНТЫ/цех_правды.py --apply` — штампы (титул/og:title/window.APP ·31, README «одна правда», шапка карты) — производные реестра; dry-run обязан показывать «ДРЕЙФ НЕТ» перед пушем (страж: `test_цех_правды.mjs`, оракул описания в Такт-гейте).
5. **пушер** — публикация через **Git Data API** (blobs → tree → commit → ref) — один-два коммита на такт; **СТОП-ГОРН** — страж пушера: если проверка целостности не прошла, коммит не рождается; веб-сессии и куки для пуша не использовать (риск-движок откатывает).
6. **отрез** — пауза после коммита: GitHub Pages пересобирается (обычно до минуты); в этот момент ничего не трогать.
7. **живая поверка ЭП-06** — холодная загрузка живого `rtynbirf.github.io/singulyar`: чек-лист OK/FAIL (версия, счётчик дверей, кэш-поколение, ключевые фичи такта, консоль чиста); апстрим Малыша поверяется отдельно; скриншоты в `download/`. Только поверка даёт право писать журнал.
8. **журнал** — запись в рабочий журнал: Task ID, что сделано по стадиям, коммиты, скриншоты, остатки на будущие такты.

## Чек-лист такта (короткая версия)

```text
[ ] PAT верифицирован, репа та (rtynbirf/singulyar — именно так; singular = 404)
[ ] патчеры идемпотентны, анкоры сняты с живых файлов; new проверен (дубль script-src ловится тестом)
[ ] node --check зелёный; Playwright: двери/меню/консоль; CSP-мета в head на тронутых лицах
[ ] S15_CACHE поднят (vNN+1), новые активы в пре-кэше
[ ] data/versions.json: версия, такт, дата, счётчики, летопись +1
[ ] пушер Git Data API, СТОП-ГОРН на посту
[ ] ЭП-06 на живом: чек-лист OK/FAIL, скриншоты
[ ] журнал записан; CHANGELOG.md пополнен фактами; ДОРОЖНАЯ_КАРТА.md гасит строки
```

## Ловушки (уже пойманные — не поймать дважды)

- **CSP-мета** блокирует инлайн-скрипты молча; диагноз — `securitypolicyviolation`; канон — постур А (см. [АРХИТЕКТУРУ](АРХИТЕКТУРА.md), раздел CSP: два убийцы — текст вне комментария в head, хэши без кавычек).
- **Кэш**: не поднять поколение — жилец ходит по старому дому и думает, что правка не работает.
- **Анкоры патчей**: «new содержит old» без маркера-стража дублирует вставки; кавычка-опечатка рвёт замену — после сборки грепать анкоры.
- **Замена части директивы**: вставляешь `script-src ...` в строку, где слово `script-src` уже стоит перед группой, — получишь дубль директивы; замена должна закрывать ровно группу, не слово.
- **Git через веб-сессии** невозможно из песочницы — только Git Data API.
- **vm-стенд**: 404-шум и suspended AudioContext — не баги дома; не подмешивать их в чек-лист.
- **«Выкачал и забыл»**: такт без ЭП-06 не такт.

## Соседи

- [АРХИТЕКТУРА.md](АРХИТЕКТУРА.md) · [ТЗ.md](ТЗ.md) · [ДОРОЖНАЯ_КАРТА.md](ДОРОЖНАЯ_КАРТА.md) · [МАЛЫШ.md](МАЛЫШ.md) · [../ДОКУМЕНТЫ/ЗАКАЛКА_ЧЁРНЫЙ_ЭКРАН.md](../ДОКУМЕНТЫ/ЗАКАЛКА_ЧЁРНЫЙ_ЭКРАН.md)
