Files
huncode 90692f0f16
Build and deploy / deploy (push) Successful in 15s
raise editorial quality gate and revise 2018 spring
2026-07-31 09:20:37 +03:00

7.3 KiB
Raw Permalink Blame History

Черновое тройное ревью — февраль 2018

Партия не интегрирована в web/data/articles.json. Ревизии доступны только через:

node web/scripts/upgrade-2018-02.mjs --print-revisions

1. Факты и техника

Слаг Главный вопрос Проверенные первичные источники Результат
editorial-2018-02-practice-php-diagnostics Как оставить диагностический факт при 500 и фатальной ошибке PHP? set_error_handler, set_exception_handler, register_shutdown_function, error_get_last Пример не обещает перехватить ошибки до регистрации обработчиков; отдельно названы ограничения фатального пути.
editorial-2018-02-mechanism-php-diagnostics Почему строка от curl_exec() не означает успех API-операции? curl_exec, curl_getinfo, curl_errno, RFC 7231 Строго разделены ошибка cURL, HTTP-статус и контракт тела; повтор записи не рекомендован без идемпотентности.
editorial-2018-02-field-php-diagnostics Как отделить битый JSON от корректного null? json_decode, json_last_error, RFC 8259 Используется подход PHP 7.1; отмечено, что JSON_THROW_ON_ERROR появился только в PHP 7.3.

Проверено вручную:

  • В каждой статье не меньше двух официальных или первичных источников.
  • Утверждение о статусах HTTP ограничено протокольным уровнем; успех бизнес-операции проверяется проектным контрактом.
  • В журналы не предлагается писать пароли, токены, исходное тело запроса или полный ответ партнёра.
  • У примеров есть версия и границы: PHP 7.1, проектные таймауты, отсутствие универсального retry.

2. Редактура и голос

Слаг Проблема в начале Техническая речь и тон 2018 Объём основного текста
editorial-2018-02-practice-php-diagnostics Ответ 500 без причины в журнале Короткая практическая заметка: контекст, этап, обработчик, проверка Проверяется скриптом, диапазон 5 000–15 000 знаков
editorial-2018-02-mechanism-php-diagnostics Строка от cURL ошибочно объявляется успешной интеграцией Симптом → уровень сбоя → запись в журнал → действие Проверяется скриптом, диапазон 5 000–15 000 знаков
editorial-2018-02-field-php-diagnostics if (!$data) склеивает несколько разных состояний Один вопрос о JSON, затем конкретные значения и контракт Проверяется скриптом, диапазон 5 000–15 000 знаков

Проверено вручную:

  • У каждой статьи один главный вопрос; темы не копируют друг друга: runtime PHP, transport/HTTP и payload JSON.
  • Изъяты общие вводные о «важности» и обещания универсального решения.
  • Использованы проектные оговорки вместо выдуманных цифр, версий партнёрских API или результатов замеров.
  • Статьи заканчиваются действиями и ограничениями до списка источников.

3. Визуал и выпуск

Материал Назначение Проверка
php-fatal-context-flow.svg Показывает три ветки диагностики PHP и общий контекст операции SVG содержит title, desc, осмысленный alt и подпись в статье
curl-outcome-classifier.svg Разделяет транспорт, HTTP и контракт тела SVG содержит title, desc, осмысленный alt и подпись в статье
json-payload-diagnostic.svg Разделяет ошибку декодера и нарушение JSON-контракта SVG содержит title, desc, осмысленный alt и подпись в статье

Проверки к запуску перед интеграцией:

node --check web/scripts/upgrade-2018-02.mjs
node web/scripts/upgrade-2018-02.mjs --print-revisions | jq 'length'
xmllint --noout web/public/assets/editorial/2018/php-fatal-context-flow.svg
xmllint --noout web/public/assets/editorial/2018/curl-outcome-classifier.svg
xmllint --noout web/public/assets/editorial/2018/json-payload-diagnostic.svg

После интеграции основной агент должен запустить общий audit-скрипт и production-сборку. Этот авторский черновик их намеренно не запускает: он не меняет архив.

Результаты авторского прохода

  • node --check web/scripts/upgrade-2018-02.mjs — PASS.
  • node web/scripts/upgrade-2018-02.mjs --print-revisions вернул массив из трёх ревизий; встроенная проверка структуры прошла.
  • Длина основного текста без источников: 7 109, 6 519 и 6 706 знаков соответственно; все значения в диапазоне 5 000–15 000.
  • xmllint --noout для трёх SVG — PASS.
  • Локальная браузерная отрисовка SVG заблокирована политикой среды, поэтому финальный просмотр на desktop и узком экране остаётся выпускной проверкой после интеграции в страницу. Структурная проверка выполнена: у каждого SVG единый viewBox 1200×620, описание title/desc и все координаты элементов лежат внутри полотна.