Журнал изменений

Заметные изменения книги и её инструментов. Новые записи идут первыми. Даты в формате ISO 8601 (ГГГГ-ММ-ДД).

[Unreleased]

Changed

  • Нидерландский (nl-nl): переведены оставшиеся английские заголовки и слаги тем 9.0, 9.3 и 9.4 (bijlagen, controlelijsten, sjablonen).
  • Валлийский (cy-001, cy-gb): терминология согласована с TermCymru: risg (риск, вместо perygl, с согласованием по роду), cyfnewidiad (компромисс), dangosydd rhagfynegi и dangosydd ôl-fynegi (опережающий и запаздывающий показатель, вместо hwyrfrydig), cynhwysedd (ёмкость), dosraniad (распределение), cydberthynas (корреляция), allbwn для выпуска в теме 1.3 и cyfradd gadael staff (текучесть кадров). Для соответствия переименованы четыре слага тем.
  • Сайт: @lilydesignsystem/svelte-picker-bar обновлён до 0.2.0, который добавляет в панель заголовка выбор поиска; он отправляет запрос в существующий поиск по сайту /?<query>.
  • Добавлен scripts/generate-sitemap.mjs, который запускается в конце pnpm build и пишет sitemap.xml из предварительно отрендеренных страниц (только канонические URL локалей, без дублей двухбуквенных алиасов), чтобы строка Sitemap: в robots.txt разрешалась.
  • AGENTS.md теперь краткий указатель; подробности перенесены в AGENTS/layout.md, style.md, locales.md и workflow.md.
  • Уборка документации: обновлены AGENTS.md, index.md, генерируемый текст локалей README, spec/index.md, spec/locales.md, а также AGENTS.md и README.md сайта для 27 локалей, имён каталогов разделов по локалям и нового инструментария; добавлен CLAUDE.md (указатель на AGENTS.md); исправлены устаревшие пути docs/ в обоих навыках агента, а skills/ сделан канонической копией .claude/skills/ (проверяется тестами).
  • В static/ сайта добавлены llms.txt и llms.json (индекс для ИИ-агентов по каждой обслуживаемой локали и теме), генерируемые tools/gen_llms.py (just llms) и проверяемые тестами.
  • Главная страница сайта: список плиток «девять частей» теперь вложенный список «Содержание» всех частей и тем, а раздел «Закон Гудхарта, везде» удалён.
  • Во всех локалях в прозе книги «chapter» заменено на «topic» (например, «тема 2.1», «Темы этой части») с использованием собственного слова каждого языка для «topic» (tema, sujet, Thema, тема, 主題 и так далее), а также в спецификации, тексте, генерируемом инструментами, и строках интерфейса сайта. Имена файлов, URL и ключи разделов не меняются.
  • Переведено имя каждого каталога раздела в locales/: chapters/ теперь topics/ (и его перевод в каждой другой локали, например temas/, sujets/, themen/), а examples/ у es-001 теперь ejemplos/. Имена живут в spec/section-names.json; инструменты, тесты и синхронизация содержимого сайта читают их оттуда, а URL сайта не меняются.

Changed

  • Валлийская локаль (cy-001, cy-gb, поддерживаются идентичными) пересмотрена по терминологическому списку TermCymru правительства Уэльса: llesiant для благополучия, cynhyrchiant для производительности, gwendid/gwendidau для уязвимости, llywodraethiant для управления, cydberthynas для корреляции, ôl-groniad для бэклога (раньше оставляли по-английски), cost a budd для «затраты и выгоды» и deallusrwydd artiffisial (AI) при первом упоминании ИИ в каждой теме.

Added

  • Разделы «Предисловие», «Примеры», «Участие» и «Проект» (14 файлов, плюс журнал изменений, главная страница и оглавление) переведены в эту локаль, с переведёнными именами каталогов.
  • Немецкий (de-001) добавлен как 26-я полностью переведённая локаль: все 63 темы с соответствующими файлами-спутниками .locale-peer-id, по содержанию идентичен de-de. Подключён к сайту и обслуживается по /de-001/ (алиас /de/).
  • Португальский (pt-001) добавлен как 25-я полностью переведённая локаль: все 63 темы с соответствующими файлами-спутниками .locale-peer-id, по содержанию идентичен pt-pt. Подключён к сайту и обслуживается по /pt-001/ (алиас /pt/).
  • Завершён полный ручной перевод с нуля всех 63 тем на урду (ur-001, справа налево), 24-я полностью переведённая локаль, с соответствующими файлами-спутниками .locale-peer-id. Каждая тема переведена прямо с английского источника, указатель (тема 9.7) переназначает каждую внутреннюю ссылку на соответствующее имя файла на урду, а каталог раздела называется موضوعات. Подключён к сайту и обслуживается по /ur-001/ (алиас /ur/).
  • Завершён полный ручной перевод с нуля всех 63 тем на индонезийский (id-001) с соответствующими файлами-спутниками .locale-peer-id. Предыдущей индонезийской локали, на которую можно было бы опереться, не было, поэтому каждая тема переведена прямо с английского источника, а указатель (тема 9.7) переназначает каждую внутреннюю ссылку на соответствующее имя файла на индонезийском. Подключён к сайту и обслуживается по /id-001/ (алиас /id/).
  • Русский (ru-001) и китайский (zh-001) добавлены как 21-я и 22-я полностью переведённые локали: у каждой все 63 темы, с соответствующими файлами-спутниками .locale-peer-id, по содержанию идентичны ru-ru и zh-cn. Подключены к сайту и обслуживаются по /ru-001/ и /zh-001/ (алиасы /ru/ и /zh/).
  • Французский (fr-001) добавлен как 20-я полностью переведённая локаль: все 63 темы с соответствующими файлами-спутниками .locale-peer-id, по содержанию идентичен fr-fr. Подключён к сайту и обслуживается по /fr-001/ (алиас /fr/).
  • Бенгальский (bn-001) добавлен как 19-я полностью переведённая локаль: все 63 темы с соответствующими файлами-спутниками .locale-peer-id, по содержанию идентичен bn-bd. Подключён к сайту и обслуживается по /bn-001/ (алиас /bn/).
  • Арабский (ar-001) добавлен как 18-я полностью переведённая локаль: все 63 темы с соответствующими файлами-спутниками .locale-peer-id, по содержанию идентичен ar-eg. Подключён к сайту и обслуживается по /ar-001/ (алиас /ar/).
  • Валлийский, Великобритания (cy-gb) добавлен как 17-я полностью переведённая локаль: все 63 темы с соответствующими файлами-спутниками .locale-peer-id, по содержанию идентичен cy-001 (то же отношение, что у hi-id к hi-001). Подключён к SERVED_LOCALE_CODES сайта и обслуживается по /cy-gb/.
  • Завершён полный ручной перевод с нуля всех 63 тем на нидерландский, Нидерланды (nl-nl), с соответствующими файлами-спутниками .locale-peer-id и успешным just test. Предыдущей нидерландской локали, на которую можно было бы опереться, не было, поэтому каждая тема переведена прямо с английского источника. Указатель (тема 9.7) переназначает каждую внутреннюю ссылку на тему на соответствующее имя файла на нидерландском, следуя подходу, принятому для ar-eg, bn-bd, ko-kr, es-es, pt-pt, ja-jp, ru-ru, fr-fr и sv-se. Пока не подключён к сайту.
  • Завершён полный ручной перевод с нуля всех 63 тем на шведский, Швеция (sv-se), с соответствующими файлами-спутниками .locale-peer-id и успешным just test. Каждая тема переведена прямо с английского источника. Указатель (тема 9.7) переназначает каждую внутреннюю ссылку на тему на соответствующее имя файла на шведском, следуя подходу, принятому для ar-eg, bn-bd, ko-kr, es-es, pt-pt, ja-jp, ru-ru и fr-fr. Пока не подключён к сайту.
  • Завершён полный ручной перевод с нуля всех 63 тем на французский, Франция (fr-fr), с соответствующими файлами-спутниками .locale-peer-id и успешным just test. Каждая тема переведена прямо с английского источника. Указатель (тема 9.7) переназначает каждую внутреннюю ссылку на тему на соответствующее имя файла на французском, следуя подходу, принятому для ar-eg, bn-bd, ko-kr, es-es, pt-pt, ja-jp и ru-ru. Пока не подключён к сайту.
  • Завершён полный ручной перевод с нуля всех 63 тем на русский, Россия (ru-ru), с соответствующими файлами-спутниками .locale-peer-id и успешным just test. Каждая тема переведена прямо с английского источника. Указатель (тема 9.7) переназначает каждую внутреннюю ссылку на тему на соответствующее имя файла на русском, следуя подходу, принятому для ar-eg, bn-bd, ko-kr, es-es, pt-pt и ja-jp. Пока не подключён к сайту.
  • Завершён полный ручной перевод с нуля всех 63 тем на японский, Япония (ja-jp), с соответствующими файлами-спутниками .locale-peer-id и успешным just test. Каждая тема переведена прямо с английского источника. Указатель (тема 9.7) переназначает каждую внутреннюю ссылку на тему на соответствующее имя файла на японском, следуя подходу, принятому для ar-eg, bn-bd, ko-kr, es-es и pt-pt. Пока не подключён к сайту.
  • Завершён полный ручной перевод с нуля всех 63 тем на португальский, Португалия (pt-pt), с соответствующими файлами-спутниками .locale-peer-id и успешным just test. Каждая тема переведена прямо с английского источника. Указатель (тема 9.7) переназначает каждую внутреннюю ссылку на тему на соответствующее имя файла на португальском, следуя подходу, принятому для ar-eg, bn-bd, ko-kr и es-es. Пока не подключён к сайту.
  • Испанский, Испания (es-es) добавлен как полностью переведённая локаль, все 63 темы, начиная с копии существующего испанского (es-001) перевода (который при проверке оказался уже грамматически нейтральным, с лексикой, в основном уже склоняющейся к Испании), а затем с применением целевого терминологического прохода по оставшимся меньшинственным употреблениям, в частности «incidente» на «incidencia» для области метрик инцидентов этой книги, с соответствующими исправлениями согласования по роду повсюду. Пока не подключён к сайту.
  • Завершён полный ручной перевод всех 63 тем на корейский, Корея (ko-kr), с соответствующими файлами-спутниками .locale-peer-id и успешным just test. Указатель (тема 9.7) переназначает каждую внутреннюю ссылку на тему на соответствующее имя файла на корейском, следуя подходу, принятому для ar-eg и bn-bd. Пока не подключён к сайту.
  • Хинди, Индия (hi-id) добавлен как полностью переведённая локаль, все 63 темы, дословным копированием существующего перевода на хинди (hi-001) под кодом локали с указанием страны, потому что у стандартного хинди нет независимого индийского варианта, требующего отдельного ручного перевода. Пока не подключён к сайту.
  • Завершён полный ручной перевод всех 63 тем на бенгальский, Бангладеш (bn-bd), с соответствующими файлами-спутниками .locale-peer-id и успешным just test. Пока не подключён к сайту.
  • Завершён полный ручной перевод всех 63 тем на арабский, Египет (ar-eg), с соответствующими файлами-спутниками .locale-peer-id и успешным just test. Пока не подключён к сайту.
  • Завершён полный ручной перевод всех 63 тем на немецкий, Германия (de-de), с соответствующими файлами-спутниками .locale-peer-id и успешным just test. Пока не подключён к сайту.
  • Завершены полные ручные переводы всех 63 тем на три локали: валлийский (cy-001), китайский (zh-cn) и хинди (hi-001), у каждой соответствующие файлы-спутники .locale-peer-id и успешный just test.
  • Ещё две планируемые переводные локали, валлийский - Великобритания (cy-gb) и китайский (zh-001), добавлены в spec/locales-for-global-sharing-with-svelte/locales.tsv и spec/locales.md (теперь тринадцать планируемых локалей вместо одиннадцати), а ранее нерешённое самоназвание zh-cn определено как 中文. В LOCALE_LABELS сайта появились соответствующие записи (cy-gb: «Cymraeg (Prydain Fawr)», zh-001: «中文», zh-cn: «中文 (中国)»). Пока только инфраструктура: ни у одной из этих локалей нет каталога locales/<code>/ или переведённого содержимого.
  • Книга опубликована в четырёх локалях в locales/: en-gb-oxendict (британский английский, оксфордская орфография; рукописный источник), en-001 (международный английский), en-gb (обычный британский английский) и en-us (американский английский). en-001, en-gb и en-us механически выводятся из en-gb-oxendict новым tools/localize.py; см. spec/locales.md. docs/ больше не существует; каждая ссылка на него в spec/, AGENTS.md, tests/validate.py, tools/gen_nav.py и tools/stats.py теперь указывает на locales/<locale>/.
  • Добавлены два навыка Claude Code, software-engineering-metrics-skill (для читателей, применяющих рекомендации книги к своей команде) и software-engineering-metrics-maintainer-skill (для участников, добавляющих или редактирующих темы), в skills/ и зеркально в .claude/skills/.
  • Исходники опубликованного веб-сайта перенесены в этот репозиторий как software-engineering-metrics.github.io/, раньше это был отдельный репозиторий. Теперь он читает locales/ прямо из корня репозитория, а не из соседней копии. .github/workflows/deploy.yml в корне при каждом push в main проверяет, что сайт по-прежнему собирается, затем отправляет repository_dispatch в репозиторий software-engineering-metrics.github.io (оставленный как тонкая оболочка развёртывания, потому что GitHub Pages отдаёт этот голый домен только из репозитория с точно таким именем), который извлекает этот монорепозиторий, собирает сайт и развёртывает его.
  • Добавлена инфраструктура для переведённых (а не только производных по орфографии) локалей согласно новой подспецификации spec/locales-for-global-sharing-with-svelte/: tools/gen_locale_peer_ids.py даёт каждому файлу содержимого файл-спутник .locale-peer-id, одинаковый во всех локалях, который будущая переводная локаль (со своим слагом в родной письменности) может использовать, чтобы разрешать «эту страницу в локали X», а не сопоставлять по слагу; tests/validate.py проверяет, что каждый файл-спутник существует и совпадает. spec/locales.md фиксирует десять планируемых переводных локалей (арабский, бенгальский, валлийский, испанский, французский, хинди, индонезийский, португальский, русский, урду и китайский - Китай). Со стороны сайта scripts/locales.mjs получил LOCALE_LABELS/localeLabel() (отображаемые названия каждой планируемой локали, подготовленные до маршрутизации) и sortedLocaleEntries() (порядок сортировки, который должен использовать будущий список локалей), а src/lib/i18n.js вынес строки интерфейса (навигация, боковая панель, пейджер, выборщики, подвал, ссылки пропуска), которые раньше каждый компонент .svelte жёстко задавал по-английски, передаваемые через ui(locale), с откатом на английский для любой локали без собственного перевода.
  • Рукодельный элемент заголовка сайта только для локали заменён на @lilydesignsystem/svelte-picker-bar из Lily Design System: настоящий выбор темы (светлая/тёмная, через новые static/assets/themes/{light,dark}.css), настоящий выбор локали (подключённый к маршрутизации на основе URL этого сайта, а не к его поведению по умолчанию только с lang/dir), выбор размера текста (семиступенчатая шкала Lily) и выбор «поделиться» (электронная почта, Mastodon, копирование ссылки). @lilydesignsystem/svelte-{theme,locale,text-size,share}-picker закреплены на ^0.1.2, а @lilydesignsystem/svelte-headless на ^0.2.0 через overrides в pnpm-workspace.yaml, обходя настоящую опубликованную ошибку в диапазонах зависимостей самого svelte-picker-bar 0.1.0 (см. CHANGELOG.md каждого выбора, «0.1.2», и AGENTS.md этого сайта).
  • Удалена строка статистики главной страницы (части/темы/«Free Always») и её раздел «How to read it», а сетка карточек «Browse the nine parts» заменена простым маркированным списком.

Changed

  • Добавлен scripts/generate-sitemap.mjs, который запускается в конце pnpm build и пишет sitemap.xml из предварительно отрендеренных страниц (только канонические URL локалей, без дублей двухбуквенных алиасов), чтобы строка Sitemap: в robots.txt разрешалась.
  • Добавлена тема 2.8, метрики потока создания ценности lean (время выполнения, время обработки, время цикла, доля полных и точных и такт-тайм из классического картирования потока создания ценности lean, плюс расчёт накопленного выхода пропускной способности), размещённая после теории очередей. Метрики pull request и код-ревью переместились с 2.8 на 2.9, а тема метрик DORA с 2.9 на 2.10. Каждая затронутая перекрёстная ссылка по всей книге обновлена.
  • Часть 2 переименована из «Delivery and Flow Metrics» в «Flow Metrics» и перестроена вокруг Flow Framework Мика Керстена. Добавлены четыре новые темы: 2.1 Flow Framework, 2.2 Элементы потока (функции, дефекты, риски, долг), 2.3 Скорость потока и распределение потока и 2.4 Время потока и нагрузка потока. Четыре отдельные темы метрик DORA (частота развёртываний, время выполнения, доля неудачных изменений, время восстановления) объединены в одну справочную тему 2.9 Модель метрик DORA, перемещённую в конец части. Эффективность потока и незавершённая работа перенумерованы в 2.5, а тема теории очередей (раньше 2.9) переименована и перенумерована в 2.7 Теория очередей. Время цикла (2.6) и метрики pull request и код-ревью (2.8) сохраняют свои номера. Каждая перекрёстная ссылка по всей книге, глоссарий, справочник формул, самооценка зрелости и предисловие обновлены для соответствия.

Added

  • Первый релиз: 45 содержательных тем в 8 частях, плюс предисловие и приложение из 7 тем (часть 9), охватывающие модели DORA и SPACE, метрики кода и качества, продуктовые и бизнес-метрики, метрики надёжности и безопасности и влияние генеративного ИИ на инженерные метрики.
  • Инфраструктура репозитория, отражённая из родственного проекта software-engineering-guide: spec/, управляемый спецификацией (index, structure, conventions, оксфордская орфография, дорожная карта), набор проверок в tests/validate.py, генератор навигации в tools/gen_nav.py, justfile, AGENTS.md с руководством для участников в docs/contributing/, CONTRIBUTING.md и этот журнал изменений.
  • spec/structure.md, канонический манифест тем, по которому тесты проверяют файлы.
  • Два проработанных примера в docs/examples/: заполненный устав метрик и спецификация дашборда.

История

Книга строилась от спецификации наружу: структура из девяти частей сначала была объявлена в spec/structure.md, затем каждая тема писалась по общему шаблону в docs/contributing/chapter-template.md, а tests/validate.py всё это время проверял структуру и фирменный стиль.

Соглашения для этого файла

  • Группируйте изменения в Added, Changed, Fixed, Removed или Deprecated.
  • Держите записи короткими и конкретными. По возможности по одной строке.
  • Здесь тоже не используйте длинные тире; тесты проверяют и этот файл.