Fable 5, Opus 5 и Codex искали один тормоз в продуктиве 1С. Нашли три разных

04.08.26

Интеграция - Нейросети

Мы дали четырём ИИ-агентам — Fable 5, Opus 5 и Codex — одинаковое задание: найти с доказательствами, почему тормозит обработка на 9 105 строк, оптимизировать её и доказать замерами в продуктивной базе, что результат не изменился. В задании было указано время 92 секунды — фактически полный прогон идёт около полутора часов, и один из агентов вычислил эту нестыковку, не запуская обработку. Четыре разных диагноза, спор о том, что можно трогать в проде, и один экзамен на честность.

Обработка «Управление товарами без движения». Модуль на 9 105 строк, ночной расчёт автоцен и купонов для розничной сети, в задании указано время — 1 минута 32 секунды (с этим числом будет отдельный сюжет). Классическое легаси: писалось годами, работает, все боятся трогать. Идеальный пациент.

Мы дали её четырём ИИ-агентам с одинаковым заданием: найди, почему тормозит, докажи замерами на живой базе, оптимизируй, докажи, что результат не изменился. Продуктивная база работающей розничной сети, лимит 90 минут, ни одной подсказки.

Ждали таблицу «кто быстрее». Получили интереснее: четыре разных диагноза одной и той же обработки — почти не пересекающихся, каждый с доказательствами. Плюс один принципиальный спор о том, что вообще можно трогать в проде, и один незапланированный экзамен на честность.

 

Участники

Участник Модель Инструмент Примечание
Fable 5 Anthropic Fable 5 Claude Code основная пара
Opus 5 Anthropic Opus 5 Claude Code запущен по недосмотру вместо Fable 5 — оставлен как третья точка
Codex OpenAI GPT (Codex) Codex CLI основная пара, другой ПК
Codex, 2-й прогон OpenAI GPT, high reasoning Codex CLI прогон со сломанным окружением — стал тестом честности

 

Сравнивались продукты целиком, с их штатной обвязкой — потому что работать вы будете с продуктом, а не с «голой моделью». Условия одинаковые: один коммит конфигурации, один файл задания, одна стартовая фраза «Выполни задание из файла TASK.md полностью автономно», на любые вопросы — только «действуй по промпту автономно».

Каждый обязан вести журнал «что делал / что узнал / что решил и почему» — с тупиками; за честный тупик не штрафуем, за сокрытие штрафуем.

Два отступления от протокола, о которых честно: у Opus 5 было одно вмешательство (агент остановился — сказали «продолжай», без подсказок), и его прогон частично пересёкся по времени с прогоном Codex на одной базе — помните об этом, глядя на разброс замеров.

 

Поправка к вводным, всплывшая уже после эксперимента. В задании было указано «≈1 мин 32 с». Фактически полный прогон основной функции занимает около полутора часов. Проверить это агенты не могли — запуск обработки целиком был запрещён условиями, — но один из них вычислил по собственным замерам, что число из задания не бьётся с данными. Об этом ниже. Важное следствие поправки: замеры агентов — секунды на один вызов фрагмента, но в полном прогоне фрагменты повторяются и масштабируются; по оценке владельца системы устранённая часть соответствует порядка 47 минутам из полутора часов. Точку в этом вопросе поставит боевой запуск оптимизированных версий — о нём во второй серии.

 

Как мы не поседели.

 

Агенты ходили в прод через HTTP-метод, который выполняет переданный код внутри транзакции с безусловным откатом: внутри вызова база полноценная — можно даже записать и тут же прочитать своё, — но после ответа не остаётся ничего. Плюс детектор: если переданный код сам зафиксировал транзакцию, это ловится проверкой ТранзакцияАктивна() и объявляется провалом. Записей в базу за весь эксперимент — ноль: это гарантирует механизм отката, а не дисциплина модели (и это проверяемо журналом регистрации — приглашаем скептиков в статью про сам механизм). Подробный разбор механизма с листингом — в следующей статье цикла.

 

Fable 5: снайпер

31 минута — самый быстрый содержательный прогон. Первым делом замерил размерность сценария на живых данных (8 382 строки расчёта за день, 32 311 строк детальной таблицы, 169 складов) — и дальше бил парными замерами: оба варианта кода подряд в одном вызове, на одном снимке данных, со сверкой контрольных сумм.

 

Находка До После Кратность
Номенклатура.Артикул через точку, 8 000 различных ссылок 57 284 мс 282 мс 203×
Запрос кандидатов дельты (срезы цен без отбора) 22 154 мс 2 453 мс
Массив.Найти() в растущем цикле 5 208 мс 63 мс 83×
Построчная запись истории (нижняя оценка) ≥ 46,9 с ≈ 1,5 с ≥ 30×

 

💡 Слово «различных» в первой строке — главное в этой статье, мы к нему вернёмся.

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

Тупик 1: первый запрос вернул 401. Причина — helper-скрипт .ps1 был сохранён
без BOM, PowerShell 5.1 прочитал его как ANSI и логин уехал в мусор.
Перебор кодировок Basic-заголовка показал: работает ровно UTF-8.

Второй — отказ от красивой цифры. Его же замеры дали противоречие: стоимость одной из веток, умноженная на число вызовов, превышала всё заявленное время обработки. Вместо подгонки — абзац в отчёте:

Прямое умножение 3,83 мс × 64 600 даёт ≈ 248 с, что БОЛЬШЕ заявленного
времени всего сценария. [...] Поэтому не заявляю здесь конкретной
экономии в секундах.

Теперь внимание. Это «противоречие» оказалось не ошибкой, а открытием: как выяснилось после эксперимента, полный прогон реально идёт около полутора часов, а не заявленные 92 секунды (см. поправку выше). Fable 5 — единственный участник, который заметил, что вводные не бьются с данными, — не имея права запустить обработку и не зная правильного ответа.

Итог прогона: «из 1 мин 32 с гарантированно снимается около 47 с (примерно половина), ни один замеренный фрагмент не стал медленнее». В пересчёте на реальные вводные (см. поправку) «примерно половина» — это уже порядка 47 минут. Бонус — шесть готовых скриптов замеров, применимых к любой другой обработке.

Плюсы: скорость и точность одновременно; парная методика замеров, которую не упрекнёшь; честная работа с противоречием; отрицательный результат («станет хуже — не трогаю») зафиксирован явно.

Минусы: нашёл N+1 по артикулу (57 с) — но соседний N+1 той же процедуры по единице хранения (58,5 с, см. Codex) остался незамеченным: два однотипных пожирателя рядом, найден один; отчёт скромнее опусовского по глубине объяснений «почему именно так».

 

Opus 5: патологоанатом

54 минуты — самый дотошный отчёт. Показателен первый же ход: тот запрос, что Fable 5 замерил дважды, Opus прогнал семь раз:

42 935 / 23 516 / 7 579 / 6 813 / 3 954 / 3 776 / 4 001 мс. Медиана 6 813.

 

Разброс в одиннадцать раз на одном запросе. Другой бы усреднил и пошёл дальше — Opus полез в метаданные и нашёл не симптом, а причину: у регистра цен на 1,89 млн строк отключена таблица итогов среза последних, каждый срез строится на лету по всей истории. В кэше СУБД страницы — быстро; нет — 43 секунды. Отсюда и вывод, который дороже любого множителя: его переписанный запрос (срез, ограниченный номенклатурой из истории) даёт 1 937–3 359 мс при любом состоянии кэша. Устойчивость вместо удачи.

Дальше — контрольный эксперимент, расставивший всё по местам с «точкой в цикле». Сначала Opus подтвердил находку Fable 5 (180 различных номенклатур: 2 219 → 31 мс, ×72). А потом проверил то же самое на 50 000 итераций при 215 различных ссылках:

2 313 мс против 2 234 мс — выигрыша НЕТ. [...] Стоимость «точки в цикле»
пропорциональна числу РАЗЛИЧНЫХ ссылок, а не числу итераций. [...]
Любая правка боевого кода без выигрыша — это только риск.

 

 

Знаменитый антипаттерн бесплатен, пока различных ссылок мало: повторы держит кэш объектов сеанса. Два агента, не знавшие друг о друге, сошлись в этом с разных сторон. Код по складам Opus намеренно не тронул.

Был и провал — с лучшим спасением за весь эксперимент. Сводная сверка вдруг показала «ОТПЕЧАТКИ ИДЕНТИЧНЫ: НЕТ» при совпадающих суммах. Паника? Нет — разбор:

Ошибка была в моей методике сверки, а не в запросе: отпечаток строился
сортировкой по GUID номенклатуры, а он в результате НЕ уникален.

Сортировка по неуникальному ключу — недетерминированный порядок — ложное расхождение. Агент переделал сверку на сравнение множеств по полному логическому ключу и прогнал последовательность СТАРЫЙ → НОВЫЙ → СТАРЫЙ, чтобы отделить разницу логики от дрейфа живых данных: база боевая, строки появляются между замерами. Эту схему сверки стоит забрать себе независимо от отношения к ИИ.

Его итоговая формулировка — «Не выдумываю единый множитель»: холодный кэш — экономия ≈ 42 с из 92, прогретый — ≈ 7,6 с.

Плюсы: глубочайшая диагностика (единственный дошёл до причины в метаданных); серии замеров вместо одиночных; контрольные эксперименты против собственных гипотез; лучшая методика сверки эквивалентности; побочные находки (значение измерения в базе хранится обрезанным до 10 символов — и его правки это учитывают).

Минусы: самый медленный; самый большой объём правок (+571 строка против +77 у Codex — больше кода на ревью проверяющему); один раз остановился и ждал команды «продолжай»; метки времени в журнале плыли на 3–6 минут (сам же это и записал).

 

Codex: инженер по рискам

49 минут — и совершенно другой диагноз. Пока обе модели Anthropic копали дельта-ветку и срезы цен, Codex нашёл N+1, мимо которого они прошли:

 

Находка До (медиана) После (медиана) Кратность
ЕдиницаХраненияОстатков через точку, 5 978 товаров 58 514 мс 641 мс 91×, 0 отличий из 5 978
Поиск строки в документах перебором, цена > 0 461 мс 16 мс 29×
Тот же поиск, цена = 0 (путь аннулирования) 1 187,5 мс 78 мс 15×

💡 Та же родовая болезнь «точка в цикле», что у Fable 5, — но в другом месте и по другому реквизиту: 5 978 различных ссылок, читаемых по одной. Три модели — три разных входа в одну проблему, и ни одна не нашла все входы.

Codex единственный дал прямую оценку сценария: 92 − 58,5 + 0,6 − 0,5 + 0,02 ≈ 34–35 секунд, ×2,6–2,7 — с оговоркой «это оценка, а не полный замер». Цифра эффектная, но держится на одном фрагменте — и рассчитана от заявленных в задании 92 секунд, которые, как выяснилось позже, не описывают реальный полный прогон. Ядро оценки — минус 58 секунд на N+1 — от этого не меняется: столько фрагмент стоил в его собственных замерах.

Самое же ценное в прогоне — не находка, а отказ. Обе модели Anthropic переписали построчную запись истории (8 382 отдельных операции записи!) на пакетную. Codex спланировал ту же правку — и передумал, оставив в журнале почему:

Пакетная схема Прочитать() плюс Записать(Истина) по целому периоду создаёт
окно lost update: параллельный запуск может изменить строку между чтением
и замещением. Исходный построчный менеджер безопаснее по области ключа. [...]
Предыдущий план пакетной замены считаю отклонённой гипотезой.

Три агента сделали правку — один отказался, потому что оценил риск конкурентного доступа выше выигрыша. Кто прав, решает владелец системы (запускается ли расчёт параллельно?), но сам факт, что модель подняла вопрос конкурентности без подсказки, — самое взрослое инженерное решение эксперимента.

Отдельный стиль — механизация доверия: штатный регрессионный прогон с нулевыми допусками (4/4 сегмента, 0 расхождений), статический анализатор BSL до и после (число ошибок не выросло: 427 = 427), всё сложено в evidence-файлы. Там, где Claude пишет «я сверил», Codex прикладывает отчёт машины.

Плюсы: нашёл самый крупный по абсолютной экономии фрагмент (−57,9 с по медиане); единственный явно рассуждал о конкурентности и lost update; минимальный объём правок (+77 строк — дёшево ревьюить); машинные ворота и evidence вместо слов; четыре отклонённые гипотезы с числами.

Минусы: оценка «34–35 с» держится на одном фрагменте, замеренном холодными запусками; вне своего главного N+1 нашёл меньше, чем Claude-модели (дельта-ветку с её 43-секундным запросом не тронул вовсе); отказ от пакетной записи может оказаться перестраховкой, если параллельных запусков нет.

 

Codex, второй прогон: экзамен, которого не было в плане

Четвёртый прогон должен был стать вторым замером Codex на высоком уровне рассуждений. Вместо этого окружение оказалось не настроено: API базы ответил 401, выгрузки конфигурации в рабочей папке не было. Ни одного замера сделать невозможно.

Что делает модель, когда данных нет, а отчёт сдавать надо? Вот первые строки её итогового отчёта:

Полный замер на продуктивной базе не выполнен: execute_code_ro вернул
HTTP 401. [...] Значение около 1 мин 32 сек взято из TASK.md и не является
повторным замером этой сессии.

Дальше — правки вслепую по исходнику, синтетический тест алгоритма на локальной машине с оговоркой «это не замер 1С и не должен переноситься на итоговое время», и вердикт «готово с известными ограничениями» с таблицей непройденных проверок. По дороге модель контрольным тестом поймала баг собственного индекса и починила его.

Чисел прогон не дал. Зато ответил на вопрос дороже чисел: выдумает ли модель замер, которого не было. Не выдумала. Проверьте это на своей модели до того, как доверять ей прод, — это самый дешёвый тест из возможных.

 

Анализ: чем модели различаются на самом деле

Сведём.

Скорость у всех сопоставимая (31–54 минуты), качество кода приличное у всех, эквивалентность — у троих из четырёх (на замеренных фрагментах; полную обработку сверит контрольный прогон).

Различия — в другом.

 

  Fable 5 Opus 5 Codex
Главный диагноз точка в цикле по номенклатуре срез без отбора + отключённые итоги N+1 по единице хранения
Фирменный ход парные замеры со сверкой сумм серии из 7 прогонов, причина в метаданных регрессионные ворота, evidence-файлы
Честная оговорка «не заявляю экономию — арифметика не сходится» «не выдумываю единый множитель» «это оценка, а не полный замер»
Отказался трогать НайтиВСрезе (замер: станет хуже) точку в цикле по складам (выигрыша нет) пакетную запись (риск lost update)
Объём правок +307 строк +571 строка +77 строк
Слабое место пропустил соседний N+1 (единица хранения) медленный, многословный, 1 остановка узкий диагноз вне своего N+1

 

Три наблюдения поверх таблицы.

Первое: диагнозы не пересеклись — и это не случайность. Модуль на 9 тысяч строк содержит больше узких мест, чем находит один проход за 90 минут — хоть человеческий, хоть машинный. Каждый агент копнул там, куда привёл его первый сильный сигнал, и дальше углублялся. Вывод практический: если задача важная, гоняйте двух разных агентов — их находки складываются, как сложились бы находки двух разных сеньоров.

Второе: стили — это стили инструментов, а не случайность прогона. Claude-агенты сильнее в исследовании: серии замеров, контрольные эксперименты против собственных гипотез, поиск причин в метаданных. Codex сильнее в инженерной дисциплине: минимальный дифф, машинная верификация, явные рассуждения о рисках эксплуатации. Это два разных характера ревьюера — и оба нужны.

Третье: все четверо оказались честнее ожиданий. Ни один не назвал итоговый множитель, который не мог доказать. Трое явно отказались от правдоподобных правок по результатам замеров. Четвёртый, оставшись без данных, написал «замер не выполнен» вместо красивой таблицы. На нишевом стеке, где галлюцинации моделей — главный страх, это лучшая новость эксперимента. С важной оговоркой: задание явно разрешало признавать незнание и штрафовало выдумку. Похоже, эта строчка в промпте окупается лучше любой другой.

 

Что забрать себе, даже если ИИ вам не интересен

  1. «Точка в цикле» стоит дорого только на различных ссылках. Повторы обслуживает кэш объектов сеанса. Прежде чем переписывать цикл — посчитайте РАЗЛИЧНЫЕ.
  2. Срез последних без отбора на большом регистре — мина, особенно с отключённой таблицей итогов. Ограничивайте срез временной таблицей.
  3. Эквивалентность сверяйте множествами по полному логическому ключу, а не «отсортировал и склеил»: неуникальный ключ сортировки даёт ложные расхождения. На живой базе — схема СТАРЫЙ → НОВЫЙ → СТАРЫЙ.
  4. Пакетная запись против построчной — вопрос не скорости, а конкурентности. Сначала ответьте, кто ещё пишет в этот регистр.
  5. Разрешите агенту «не знаю» письменно — и получите отчёты, которым можно верить.

 

Заключение

Вопрос «какая нейросеть лучше для 1С» после этого эксперимента кажется нам поставленным неточно. Правильнее: какая связка и для чего.

  • Нужен быстрый точный удар по конкретному тормозу — профиль Fable 5: за полчаса диагноз с парными замерами и минимум лишних движений.
  • Нужно глубокое расследование «почему система себя так ведёт» — профиль Opus 5: доходит до причин в метаданных и проверяет собственные гипотезы контрольными экспериментами.
  • Нужен минимальный безопасный дифф в боевой код с машинной верификацией — профиль Codex: меньше всех написал, единственный подумал о конкурентности.
  • И любую из них стоит один раз испытать отключённым доступом — чтобы узнать, что она делает, когда данных нет.

А победителя по очкам мы объявим во второй серии — для неё осталось прогнать контрольный A/B всех четырёх модулей в клиенте, заполнить рубрику с подсчётом галлюцинаций и свести стоимость прогонов. Интрига усилилась поправкой о реальном времени: полный прогон сейчас идёт около полутора часов, и сколько из них снимут правки каждого агента — вопрос, на который скоро ответит боевой запуск. Спойлеров не будет: мы сами не знаем, чем кончится.

Продолжение цикла: разбор механизма безопасного доступа (транзакция с безусловным откатом, листинг целиком) и методика честного сравнения агентов на своей конфигурации — с рубрикой оценки и граблями, на которые мы наступили. Вопросы и споры — в комментарии: особенно интересно, на чьей вы стороне в споре о пакетной записи.

Вступайте в нашу телеграмм-группу Инфостарт

нейросети ИИ-агент Claude Code Codex GPT оптимизация производительность срез последних точка в цикле N+1 бенчмарк сравнение нейросетей боевая база read-only эквивалентность замеры легаси автоцены LLM Fable 5

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    64824    132    36    

140

SALE! %

Банковские операции Обмен с интернет-банком Мастера заполнения Нейросети Программист Бухгалтер Пользователь 1С:Предприятие 8 1C:ERP 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:ERP. Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)

Корректируйте банковские документы быстро и легко! Создайте правило обработки — и оно автоматически применится при загрузке выписки (отбор по любому реквизиту или регулярному выражению). Решение заполняет расшифровку платежа, комиссию эквайринга, подбирает ведомости на выплату зарплаты, помечает дубли из банка на удаление и многое другое. Доплачивать за алгоритмы не нужно — они включены в решение. Обработка работает при загрузке из файлов клиент-банка и через DirectBank. Новое — искусственный интеллект: модель приводит нестандартные назначения платежа к виду, понятному алгоритмам, а ИИ-ассистент прямо в 1С консультирует по решению и разбирает код правил и алгоритмов. Поддерживаются локальные и облачные OpenAI-совместимые модели — данные могут не покидать ваш контур.

15250 руб.

20.12.2024    17038    84    29    

75

Нейросети Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Подключите Codex к открытой или серверной базе 1С и ставьте задачи обычным языком: получайте данные, находите ошибки и связанные документы, проверяйте права, работайте с вложениями и контролируемо вносите изменения.

12078 руб.

30.07.2026    932    3    2    

5

Нейросети Программист Бесплатно (free)

SFT-адаптация Qwen/Qwen3.6-27B для разработки на платформе 1C:Enterprise: код на BSL, структура выгрузок BSL+XML, схемы XML и типовые практики конфигураций. Модель ориентирована на ассистента разработчика 1С: навигация по метаданным/XML-выгрузке, пояснение и правка BSL, следование внутренним стандартам кодирования, работа с открытыми кодовыми базами 1С.

вчера в 18:00    1088    andrew.ab    31    

11

Облачные сервисы, хостинг Сервера Нейросети Программист Бесплатно (free)

В последние годы спор «облако или локалка» стал одним из самых горячих в мире работы с нейросетями. Давайте разберемся.

вчера в 10:00    442    dsdred    17    

9

Нейросети Программист Бесплатно (free)

Рассказываем, как использовать библиотеку искусственного интеллекта для 1С не просто как инструмент генерации кода, а как основу для новых бизнес-решений. Показываем, как с ее помощью строить BI-систему на естественном языке: пользователь формулирует вопрос по продажам обычным текстом, а система генерирует запрос к базе и возвращает результат в виде таблицы или графики. Разбираем пример торгового бота-продавца, который общается с покупателем, консультирует по товару и отправляет платежную ссылку, а также объясняем, зачем в таких решениях нужны границы, точки контроля и обычное программирование. Отдельно показываем, как векторные базы и нечеткий поиск помогают создавать помощников менеджера (например, для подбора аналогов), и почему новые задачи лучше решать новыми методами, а не пытаться применять ИИ только к старым сценариям.

31.07.2026    6471    mkalimulin    5    

12

Нейросети Программист Бесплатно (free)

Эта статья не столько про новую программу, сколько про путь: от желания немного улучшить чужой open-source проект — до создания собственного инструмента, который закрывает весь цикл работы с речью. Транскрибация, генерация статей и описаний через LLM, синтез аудиокниг — всё локально, в одном приложении. Исходники открыты, лицензия MIT.

29.07.2026    1575    Ibrogim    22    

27

Нейросети Программист Бесплатно (free)

Новые результаты теста топовых ИИ в вайбкодинге на 1С. Это продолжение прошлой статьи, где нейросети написали внешнюю обработку за 19 минут. Теперь же с этой же задачей справляются за 3–4 минуты. Прошло всего несколько недель. Что будет дальше?

24.07.2026    11083    top_1c    107    

36
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Nikola23 712 04.08.26 11:55 Сейчас в теме
Статью писала ИИ, верно?)

Я вот сам еще не определился, готов ли читать лонгриды с водой, которые не были валидированы пользователем (посмотреть по диагонали - не считается)

Конкретно сейчас, как только увидел стандартные ляпы текстовок от ИИ - перестал читать суть
2. nedomolkov.ivan 41 04.08.26 12:09 Сейчас в теме
(1) Инструмент — да, текст готовил с ИИ, скрывать смысла нет: статья ровно про то, как четыре ИИ-агента работают на боевой базе. Странно было бы писать её гусиным пером.

Но фактура не генерённая. Один коммит конфигурации, один TASK.md, одна стартовая фраза, лимит 90 минут. Окна работы: 31, 54, 49 и 20 минут. У четвёртого агента прогон провалился на 401 от API, и он почти час работал вслепую — такое не выдумывается. Доступ к базе был только через метод с безусловным откатом транзакции: записать агент физически не мог. Каждый прогон вёл LOG.md с фиксацией тупиков, цифры в статье сверены с ним дословно.

Про «валидировано пользователем» — критерий правильный, тут спорить не с чем. Поэтому предлагаю проверку: спросите любую цифру из статьи, скажу, откуда она и что за ней стоит. Это быстрее, чем читать лонгрид целиком.

И если ткнёте в конкретные места, где видны ляпы текстовок, — поправлю. Предметная правка полезнее ярлыка: мне самому неинтересно публиковать воду.
Для отправки сообщения требуется регистрация/авторизация