Журнал изменений
Заметные изменения книги и её инструментов. Новые записи идут первыми. Даты в формате 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-bar0.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.
- Держите записи короткими и конкретными. По возможности по одной строке.
- Здесь тоже не используйте длинные тире; тесты проверяют и этот файл.