Как работает фреймворк написания статей
Проблема: LLM-генерация статей деградирует в энтропию, когда каждый шаг может трогать каждую заботу: пять разных шагов, «улучшающих» тон, дают шестой голос, которого никто не выбирал. Ответ фреймворка — хартия: одна забота, один владелец, всё остальное — сантехника между владельцами.
Слой 1 — хартия
Заголовок раздела «Слой 1 — хартия»В пайплайне ~18 шагов, но статьёй владеют пять из них:
Всё до PLAN — подготовка (фетч, суммаризация, выравнивание по онтологии, выбор автора); всё между владельцами — механика (картинки, референсы, вёрстка). Ни один шаг вне WRITE не имеет права порождать прозу; ни один шаг вне GATE — выносить вердикт. Практический выигрыш: когда регрессирует тон, подозреваемый ровно один шаг.
Слой 2 — заземлённый драфтинг
Заголовок раздела «Слой 2 — заземлённый драфтинг»Драфтинг читает исследовательский корпус контракта в трёх точках (планирование, письмо, гейт), а секция источников строится cited-first: только источники, которые текст реально использовал, а не стена извлечённых-но-проигнорированных ссылок. Кросс-энкодерный реранкер переупорядочивает извлечённые факты перед промптом — измеренный рычаг качества, который fail-open (падение реранкера ухудшает ранжирование, но никогда не блокирует генерацию).
Автор выбирается из ростера контракта взвешенным случайным розыгрышем, и его биография кормит владельца VOICE как сырьё — голос это per-author свойство, а не глобальная константа.
Слой 3 — schema-контролируемый вывод LLM
Заголовок раздела «Слой 3 — schema-контролируемый вывод LLM»Структурные шаги требуют структурного вывода — буквально. LLM-вызовы, обязанные вернуть JSON, используют провайдерский JSON-schema decoding (грамматика ограничивает генерацию) — после живых проб, показавших, что две правдоподобно выглядящие альтернативы были тихими no-op на провайдере. Старый патч «чинить обрезанный JSON» удалён; провал парсинга теперь идёт измеряемым фолбэк-путём вместо тихого, а guard-тест пинует факты о провайдере, чтобы регрессия не прокралась обратно.
Генерация секций идёт конкурентно под семафором — секции независимы по построению, как только владелец PLAN зафиксировал структуру и контракт фактов, поэтому параллелизм ничего не стоит связности.
Слой 4 — один гейт, отращивающий зубы
Заголовок раздела «Слой 4 — один гейт, отращивающий зубы»Шаг GATE — единственная точка вердикта пайплайна: механический sanitize, скоринговая батарея, сигналы бренд-безопасности, проверки заземления — скопленные последовательными поколениями спек в одном месте. Это самый большой шаг пайплайна с большим отрывом, и это и есть дизайн: гейты должны нарастать здесь, а не рассыпаться по шагам.
Трейд-оффы, честно
Заголовок раздела «Трейд-оффы, честно»Числовые цели хартии выполнены не все — гейт-шаг разросся сильно за целевой размер по мере приземления новых проверок, а одна запланированная консолидация шагов не случилась. Параллелизм секций уехал вместе с промоушеном версии без собственного выделенного A/B-протокола (дизайн-док до сих пор числит это открытым). Оба отклонения видимы и трекаются — хартия это направление, к которому пайплайн прижимают, а не миф о совершенстве.
Пощупать за две минуты
Заголовок раздела «Пощупать за две минуты»Запись прогона любой статьи перечисляет каждый шаг с таймингом и исходом; страница Жизненный цикл версий объясняет, почему каждое изменение этого фреймворка — новый неизменяемый карв.
Спеки: SPEC-066 (хартия), SPEC-115 (cited-first референсы), SPEC-119 (schema-контролируемый вывод + пробы провайдера), SPEC-094 (параллелизм секций), SPEC-069 (замороженные инпуты).