Правило было записано. За 239 сессий оно сработало один раз
Мы записали правило, по которому каждая страница проходит через проверку стилем. Потом измерили, как оно исполняется. Этот гайд о том, что мы сделали дальше.
Цифры сняты с журналов сессий, которые ведёт среда разработки, и продублированы независимым счётчиком. Ни одна из них не рассчитана нами вручную.
На чём стоит этот документ
- Замеры по журналам сессий. Среда разработки ведёт их сама, мы их только читаем.
- Прогоны механики с кодами возврата. Не «мы проверили», а «команда вернула такой-то код», и код можно повторить.
- Два предыдущих гайда того же жанра: про агентов на сервере и про монтаж вертикального видео.
Чего мы не мерили. Экономического эффекта в деньгах и часах здесь нет. Механике один день, накопленной статистики не существует, а придумывать её мы не будем. Если увидите на такой странице «экономия 40 процентов», спросите, откуда цифра.
Почему правило не работало
У нас больше двухсот инструментов: подбор стиля, проверка вёрстки, детектор дефектов, голос бренда. В инструкциях записано: любая страница идёт через роутер, который собирает нужную связку.
Я проверил, как это исполняется. Не по ощущению, а по журналам: за 239 рабочих сессий роутер вызвался один раз. Детектор дефектов и скилл премиальной вёрстки не вызывались ни разу.
Причина не в лени и не в качестве инструментов. Инструмент подхватывается по описанию, вероятностно. Когда он не подхватился, страница всё равно выходит, и выглядит она ровно так же, как если бы он отработал. Провал неотличим от успеха изнутри.
Контраст, который всё объясняет: голос бренда за тот же период вызывался двадцать четыре раза. Разница одна: его вызывают по имени, а не надеются, что он подключится сам.
Что нужно до старта
Четыре части. Каждая закрывает то, что не может закрыть предыдущая.
| Часть | Что делает | Чего не может |
|---|---|---|
| Канон | Один раз решает споры: шрифты, пунктуация, ритм фонов | Заставить себя прочитать |
| Партитура | Кладёт порядок работы в контекст дословно | Заставить исполнить |
| Гейт | Не пускает к файлам сайта, пока фаза не закрыта | Доказать качество |
| Перекличка | Показывает, кто вступил, а кто промолчал | Остановить в моменте |
Канон появился потому, что инструменты спорили между собой. Один требовал ноль длинных тире, другой разрешал одно на абзац, третий предписывал тире как приём. Один банил шрифт, который второй предлагал. Спор всплывал на каждой странице заново, пока решение не записали в один файл, который читает машина.
Восемь фаз
У каждой станции известно, что на входе, какой файл остаётся на диске и кто закрывает фазу. Красная точка означает место, где вступает владелец.
0 · Бриф и опись доказательстввладелец
Кому продаём, одно целевое действие, чем отличаемся. Отдельно опись: у каждого факта статус «есть на руках», «нужно запросить», «заблокировано», «неизвестно».
00-brief.json · 00-proof.md1 · Направлениеавто, затем владелец
Четыре инструмента подряд собирают палитру, шрифты и структуру. Подбор проверяется на подделку: тот же запрос с противоположной темой обязан дать другой ответ.
01-direction.md2 · Блюпринт и канонвладелец
Замороженный источник правды: позиционирование, оффер, структура всех разделов, метрики с красными линиями. Дальше ни одно решение не может ему противоречить.
02-blueprint.md · 02-canon.lock.json3 · Прототип без стилейвладелец
Страница с настоящими текстами, но без дизайна. Если она не убеждает в таком виде, дизайн её не спасёт, и переписать дешевле сейчас.
03-proto/страница.html4 · Текстылинтер канона
Пять инструментов строго по порядку. Голос бренда идёт раньше редактуры: запустишь наоборот, и чистка сотрёт живые обороты, приняв их за машинные следы.
04-copy/страница.md5 · Вёрсткадетектор
После каждой правки детектор проверяет разметку и пишет в журнал. Пустой журнал означает, что он не работал, и фазу закрывать нечем.
05-build/страница.md6 · Машинная приёмкавердикт
Одиннадцать требований качества меряются числом. Непроверенное не считается пройденным: это отдельное состояние, а не молчаливое согласие.
06-gate/страница.json7 · Аудит и сдачавладелец
Пять независимых проверок ищут, где страница потеряет деньги. План правок показывается владельцу до того, как что-то исправлено.
07-audit/план.md · 08-verdict.jsonГлавное правило конвейера. Инструмент, вызванный без файла-результата, не считается вызванным. Файл на диске доказывает работу, рассказ не доказывает.
Опись доказательств на нулевой фазе стоит отдельного слова. В текст попадает только то, что есть на руках. Клиент, который не давал письменного разрешения, не появляется на странице ни именем, ни логотипом: сборка на этом падает с ошибкой, а не публикует молча.
Кто проверяет
Планка качества состоит из шестнадцати требований. Раньше это был список в документе, который читают и не проверяют.
| Машина, числом | Человек, глазами | Никто |
|---|---|---|
| Контраст текста по формуле, а не на глаз | Не выглядит ли шаблонно | Вкус |
| Переполнение на пяти размерах экрана обходом элементов | Понятен ли смысл за пять секунд | Уместность метафоры |
| Шрифты против списка разрешённых | Уместна ли глубина или это украшательство | Интересно ли читать |
| Скорость загрузки замером | Звучит ли нашим голосом |
Машина ловит недоступность, глаза ловят уродство. Нужны оба, и ни один не заменяет другой.
Гейт прогнан по тринадцати сценариям и прошёл все тринадцать: чтение и диагностику пропускает, запись в файлы сайта без закрытых фаз блокирует. Механика целиком проверена прогоном из четырнадцати шагов.
Инструменты одной строкой
| Инструмент | Что делает |
|---|---|
| Роутер | Выбирает связку под тип страницы и порядок вызова |
| Подбор стиля | Даёт палитру и структуру данными из базы, а не вкусом |
| Проверка на слоп | Ловит признаки машинной вёрстки: одинаковые карточки, фиолетовые градиенты |
| Приёмы агентства | Вложенные оболочки, кнопка внутри кнопки, ритм пустого места |
| Детектор | После каждой правки проверяет разметку и пишет в журнал |
| Линтер канона | Ловит запрещённый шрифт, лишнее тире, одиночное название компании |
| Верификатор | Показывает, кто вступил, а кто промолчал |
Всего в реестре 512 записей. Работают не все, и это нормально: гайд как раз о том, как отличать работающее от числящегося.
Как запустить
Четыре команды. Первая открывает прогон, вторая ведёт по фазам, третья показывает перекличку, четвёртая проверяет саму защиту.
node tools/orchestra.mjs init <проект> --pages=index /site <проект> node tools/orchestra-check.mjs node tools/orchestra-check.mjs --selftest
Последняя команда важнее, чем кажется. Защита, которая молча сломалась, выглядит как отсутствие нарушений. Самопроверка скармливает гейту заведомое нарушение и требует, чтобы он его заблокировал.
Что видит владелец
В конце сессии печатается перекличка: по фазам, с именами тех, кто не вступил.
Фаза 1 Направление
web-design-router ✅ вызван 1×
ui-ux-pro-max ✅ вызван 1×
design-taste-frontend ✅ вызван 1×
high-end-visual-design ❌ НЕ ВЫЗЫВАЛСЯ
ИТОГ: отыграно фаз 4 из 8.
Гейт: живой. Обходов: 0.
Галочка означает, что инструмент вызывался, и это видно в журнале, который ведёт не модель. Крестик означает, что его не было. Отдельная строка предупреждает, когда вызов есть, а файла-результата нет: инструмент подняли для галочки.
Отдельный сигнал: доказательствам нельзя верить. Он загорается, когда защита не отработала, журнал детектора пуст или гейт обошли после серии отказов. Это не то же самое, что «нарушений нет». Разница между «мы проверили и чисто» и «проверять было нечем» стоит того, чтобы её видеть.
Если механика мешает
Правите опечатку на живой странице. Проходить восемь фаз ради одного слова бессмысленно, и если этого требовать, механику выключат целиком через неделю.
Поэтому есть короткий вход: режим правки. Он открывает прогон, сразу закрывает первые три фазы пометкой и записывает причину вашими словами. Причина нужна, чтобы мелкая правка не стала способом обойти порядок молча.
И есть аварийный выключатель, одна переменная окружения. Он обязан существовать: защита без выключателя однажды заблокирует работу в неподходящий момент, и тогда её снесут вместе с пользой.
Честные границы
Этот раздел идёт до предложения о работе, а не после.
| Чего механика не делает | Как есть на самом деле |
|---|---|
| Не заставляет вызвать инструмент | Она не пускает к следующему шагу без него. Если очень захотеть, пройти мимо можно |
| Не видит команды в отдельном файле | Гейт читает текст команды перед выполнением, а скрипт в файле для него один вызов |
| Не проверяет вкус | Машина скажет, что контраст 3,1 при норме 4,5. Она не скажет, что страница скучная |
| Не защищена от собственного отказа | При сбое любая такая проверка пропускает работу дальше. Поэтому есть отдельный сигнал недостоверности и самопроверка |
| Не измеряла экономический эффект | Механике один день |
Это защита от забывчивости, а не от намерения. Мы считаем, что так честнее, чем обещать невозможное.
Словарик
- Канон
- Файл, где записаны решения по спорам: какие шрифты, сколько тире, как чередуются фоны. Машина его читает, человек тоже.
- Партитура
- Порядок работы, который кладётся в контекст дословно, а не подхватывается по описанию.
- Гейт
- Проверка перед действием. Не пускает к файлам сайта, пока фаза не закрыта файлом-результатом.
- Артефакт
- Файл, который остаётся на диске после фазы. Доказательство работы.
- Перекличка
- Отчёт в конце сессии: кто вступил, кто промолчал, можно ли верить этому отчёту.
Источники
На чём стоит наш подход: планка качества из шестнадцати требований, набитая на живых лендингах, два предыдущих гайда того же жанра и разборы девятнадцати чужих сайтов по десяти осям.
Разобрали и не взяли
| Что смотрели | Почему не взяли |
|---|---|
| Готовый харнесс с очередями задач | Построен вокруг веток и запросов на слияние. У нас один человек и статические страницы: эта машинерия добавила бы участника, тянущего в свою сторону |
| Декларативные правила на Python | На нашей машине Python подменён заглушкой, и правило числилось бы включённым, молча не работая. Ровно тот отказ, от которого уходим |
| Отдельный журнал применения инструментов | Данные уже есть в другом месте. Новый журнал начал бы с нуля и снова показал бы пустоту как здоровье |
Разберём вашу компанию так же
Мы приходим на два часа и уходим, оставив два файла: карту процессов, где видно, что можно передать машине, и план внедрения с порядком шагов. Не впечатление от разговора, а документ, который можно показать наверх.
| Сколько стоит | 99 000 ₸ для первых десяти компаний, дальше 149 000 ₸. Сумма засчитывается в следующую ступень, если решите продолжить в течение тридцати дней |
| Почему не бесплатно | Бесплатный разбор собирает тех, кому интересно посмотреть. Платный собирает тех, кто готов что-то менять |
| С чем сравнить | Одна проваленная попытка внедрить ИИ обходится компании в 20–50 млн ₸ вместе с потерянным временем руководителя. Инженер по машинному обучению в штат стоит 17–23 млн ₸ в год, и его ещё нужно найти |
Ответим в течение рабочего дня. Разбор ведёт со-основатель IKIGAI PROMOTION Сергей Конев.