Files
huncode f204e2d730
Build and deploy / deploy (push) Successful in 13s
revise December 2019 ownership articles
2026-07-31 11:10:23 +03:00

13 KiB
Raw Permalink Blame History

P22 — декабрь 2019: ответственность за код

Статус: принят в publication registry 31 июля 2026 года. Три revision применяются по стабильным slug и сохраняют дату и автора базового архива:

  • editorial-2019-12-practice-code-ownership;
  • editorial-2019-12-mechanism-code-ownership;
  • editorial-2019-12-field-code-ownership.

Модуль экспортирует ровно три revision без полей date и author. При прямом запуске с --print-revisions stdout содержит только JSON, совпадающий с import-safe export. Все псевдонимы @example, issue SIM-2019-12-17 и события полевого разбора — учебная симуляция; они не описывают частный репозиторий, команду, пользователей или реальный инцидент.

Проход 1. Факты и техника — пройдено

Утверждение или решение Официальный источник Проверенная граница
git blame показывает revision и автора, последними изменивших каждую строку Git: git-blame Историческая атрибуция не выдана за назначение текущего владельца решения; в статьях сначала исследуется context, затем роль фиксируется отдельно
git log нужен для истории узких путей и связанных commits Git: git-log История файла не названа полной картой внешних зависимостей; в поле зрения остаются контракт и соседние modules
CODEOWNERS определяет людей или teams для путей, а review request берётся по правилам base branch pull request GitHub Docs: About code owners Механизм назван возможностью GitHub, а не частью стандарта Git; feature branch не объявлена источником route для собственного merge
В GitHub последнее совпадающее CODEOWNERS-правило имеет приоритет, а ! и диапазоны [] не работают как в .gitignore GitHub Docs: About code owners Пример использует общий и более узкий path без ложного «исключения»; отдельной строкой закрыт сам .github/CODEOWNERS
Pull request review имеет решения Comment, Approve и Request changes; защита ветки может требовать approval GitHub Docs: Pull request reviews Автоматический request reviewer не назван выполненным review, а approval не подменяет проверку результата после merge

Честная граница исследования

Пакет использует публичную официальную документацию Git и GitHub. В нём нет выводов о реальной конфигурации GitHub, branch protection, составе teams или истории какого-либо закрытого репозитория. CODEOWNERS в примерах — псевдоконфигурация с @example; она показывает порядок и границы механизма, но не была отправлена в хостинг для проверки actual reviewer request.

Технический принцип в трёх статьях сознательно уже: история Git — источник факта, CODEOWNERS — маршрут запроса review, итог review — решение по diff, follow-up — самостоятельное действие после merge. Инструменты не объединены в фиктивного «единственного владельца».

Вердикт прохода: пройден. Нормативные свойства привязаны к первичным документам, а зависящие от конкретного хостинга и команды результаты помечены как будущая проверка интеграционного этапа.

Проход 2. Редактура и голос M2 / 2019 — пройдено

Ревизия Симптом и цена в начале Главный технический вопрос Артефакт и ограничение
Практика Дефект стоит на месте, потому что автор строки, владелец решения и reviewer смешаны; цена — повторный bug и задержка изменения Как разложить ownership одного change на решение, путь кода, review и follow-up Таблица ролей, пример CODEOWNERS, маршрут из шести шагов; платформа не заявлена настроенной
Механизм git blame уже назвал автора, но смысл статуса всё ещё не решён; цена — ложный выбор ответственного Где заканчивается история Git, что именно делает CODEOWNERS и что остаётся после review Сопоставление следов, команды Git и схема потока; нет утверждения о правах или policy конкретного репозитория
Полевой разбор Неизвестный gateway status превращён в success, а дефект пересекает два module; цена — неверное действие на экране Как провести issue/review timeline без легенды о реальном инциденте Анонимизированная fixture SIM-2019-12-17, таблица фактов и route; симуляция не выдана за production-проверку
  • Основной текст: практика — 7 118 знаков, механизм — 8 118, полевой разбор — 8 616. Все значения в коридоре 5 000–15 000 и рассчитаны gate без раздела источников.
  • Во всех статьях есть ранние «симптом», «ошибка» или конкретный сбой с ценой; далее выдержана цепочка: симптом → причина смешения ролей → проверка → действие → граница знания.
  • Голос соответствует M2 / 2019: автор говорит о Git, путях, тесте, контракте, pull request и review предметно. Он не приписывает себе SLO, организационные метрики, приватные процессы или поздний управленческий манифест.
  • У каждой revision не менее пяти смысловых разделов, доступная таблица с caption и thead, figure с развёрнутым alt и подписью, кодовый пример, упорядоченный маршрут и как минимум четыре официальных ссылки.
  • Из текста удалены шаблонные обещания и подмена факта словом «владелец»; git blame, CODEOWNERS, review и follow-up описаны разными глаголами.

Вердикт прохода: пройден. Тексты стали практичными без перехода к поздней менеджерской риторике: каждый раздел ведёт к проверяемому действию.

Проход 3. Визуал и выпуск — пройдено в пределах автономного пакета

  • code-ownership-three-surfaces-2019.svg сначала был слишком широк для мобильного чтения. После отдельного визуального просмотра он переделан в узкую вертикальную схему: symptom, решение, путь кода, review, follow-up и Git history читаются последовательно.
  • code-ownership-resolution-2019.svg показывает не «органиграмму», а маршрут артефактов: наблюдаемый сбой → исторический факт → route review → решение reviewer → проверка после merge.
  • code-ownership-simulated-timeline-2019.svg крупно помечает simulation и не содержит намёков на настоящую команду. Шкала отделяет поиск context от назначения ролей.
  • Все три SVG содержат title, desc, role="img" и aria-labelledby. В них нет JavaScript, foreignObject, внешних URL или растровых data URI. У figure в статьях есть отдельные alt-тексты и captions.
  • SVG были отрендерены локально через Sharp в исходном размере и при ширине 375 px. После перестройки узкой композиции нет обрезания текста или горизонтального выхода за границы. Это проверка самих диаграмм, не браузерный e2e-прогон опубликованной страницы.
  • Основной редактор независимо просмотрел финальные три растеризованных схемы на 375 px; вывод подтверждён: текст не обрезан, последовательность артефактов читается. Статьи не выдают это за проверку интерактивного поведения хостинга или реального review-flow.
  • После подключения registry strict audit и production build пройдены; ручной browser-review остаётся отдельной проверкой и не заявлен как выполненный.

Фактические проверки

node --check web/scripts/upgrade-2019-12.mjs
cd web && npm run audit:draft -- scripts/upgrade-2019-12.mjs
xmllint --noout \
  web/public/assets/editorial/2019/code-ownership-three-surfaces-2019.svg \
  web/public/assets/editorial/2019/code-ownership-resolution-2019.svg \
  web/public/assets/editorial/2019/code-ownership-simulated-timeline-2019.svg
Проверка Фактический результат
node --check PASS, код 0
--print-revisions и import-safe export PASS внутри audit:draft: stdout JSON-only и ровно три revision
npm run audit:draft -- scripts/upgrade-2019-12.mjs PASS: 7 118 / 8 118 / 8 616 знаков, структура и локальные assets найдены
xmllint --noout для трёх SVG PASS, код 0
Локальный visual review PASS: исходный размер и 375 px, после перестройки нет clipping или horizontal overflow внутри SVG
Strict audit после подключения registry PASS: 7 118 / 8 118 / 8 616 знаков; по одному figure и table, 1 / 2 / 1 code example
npm run build PASS, code 0, 374 статические страницы
Scope/self-review PASS: в revision нет date/author, а articles.json не перезаписан

Выпусковой вердикт: тройное ревью пройдено, пакет принят к публикации. Registry заменяет только редакционные поля по stable slug. Production build и visual preflight не подменяют реальную проверку поведения на выбранной платформе review: её нужно выполнить отдельно при работе с конкретным репозиторием.