Ændringslog

Væsentlige ændringer i bogen og dens værktøj. De nyeste poster står øverst. Datoer bruger ISO 8601 (ÅÅÅÅ-MM-DD).

[Unreleased]

Changed

  • Tilføjede id-id og it-it som identiske kopier af id-001 og it-001, koblet ind på sitet og serveret på /id-id/ og /it-it/.
  • Site: is-is, nl-nl og sv-se er nu koblet ind og serveret på /is-is/, /nl-nl/ og /sv-se/, ved siden af deres -001-kopier.
  • Tilføjede swahili (Tanzania) som sw-tz, en identisk kopi af sw-001 med tilsvarende .locale-peer-id-sidefiler og sin egen sitemap.xml. sw-tz er koblet ind på sitet og serveret på /sw-tz/.
  • Tilføjede italiensk (it-001) som den 34. komplette oversatte lokalitet: alle 63 emner og alle andre afsnit, med tilsvarende .locale-peer-id-sidefiler. it-001 er koblet ind på sitet og serveret på /it-001/.
  • Tilføjede swahili (sw-001) som den 33. komplette oversatte lokalitet: alle 63 emner og alle andre afsnit, med tilsvarende .locale-peer-id-sidefiler. sw-001 er koblet ind på sitet og serveret på /sw-001/.
  • Tilføjede islandsk (is-is) og is-001 som den 31. og 32. komplette oversatte lokalitet: alle 63 emner og alle andre afsnit, med tilsvarende .locale-peer-id-sidefiler, hvor is-001 har samme indhold som is-is. is-001 er koblet ind på sitet og serveret på /is-001/.
  • Site: rodsidens omdirigering efter browserens sprog falder nu tilbage til sprogets internationale overmængde, når der ikke er et præcist match: en-AU går til /en-001/, es-MX til /es-001/ og zh-TW til /zh-001/. En alias-URL som /en/ hopper ikke længere videre til /en-001/ via lokalitetsvælgeren.

Added

  • spec/locales.md kræver nu, at hver mappe under locales/ hedder <language>-<region>; rene to-bogstavsnavne er kun alias for site-URL’er, og tests/validate.py håndhæver det. Der fandtes ingen to-bogstavsmappe, så intet blev slettet.
  • Tilføjede svensk (sv-001) som den 30. komplette oversatte lokalitet: alle 63 emner og alle andre afsnit, med tilsvarende .locale-peer-id-sidefiler, med samme indhold som sv-se. Koblet ind på sitet og serveret på /sv-001/ (alias /sv/).
  • Tilføjede japansk (ja-001), koreansk (ko-001) og nederlandsk (nl-001) som den 27. til 29. komplette oversatte lokalitet: alle 63 emner og alle andre afsnit, med tilsvarende .locale-peer-id-sidefiler, med samme indhold som ja-jp, ko-kr og nl-nl. Koblet ind på sitet og serveret på /ja-001/, /ko-001/ og /nl-001/ (aliasser /ja/, /ko/ og /nl/).

Added

  • Oversatte afsnittene forord, eksempler, bidrag og projekt (14 filer, plus en ændringslog, en forside index.md og en indholdsfortegnelse pr. lokalitet) til hver oversat lokalitet: ar, bn, cy, de, es, fr, hi, id, ja, ko, nl, pt, ru, sv, ur og zh, hvor lokaliteter i dublettpar (ar-001/ar-eg og så videre) holdes identiske. Mapper bruger navnene pr. lokalitet i spec/section-names.json. Det nye tools/gen_translated_nav.py opdaterer hver oversat forside og indholdsfortegnelse ud fra emnetitlerne, tests/validate.py undtager de oversatte dokumenter om test, stilregler og indeks efter peer-id, og sitets scripts/sync-content.mjs afbilder oversatte filnavne i disse afsnit tilbage til deres kanoniske engelske navne via sidefilerne .locale-peer-id.

Changed

  • Nederlandsk (nl-nl): oversatte de resterende engelske titler og slugs for emnerne 9.0, 9.3 og 9.4 (bijlagen, controlelijsten, sjablonen).
  • Walisisk (cy-001, cy-gb): terminologien blev afstemt med TermCymru: risg (risiko, i stedet for perygl, med kønsbøjning), cyfnewidiad (afvejning), dangosydd rhagfynegi og dangosydd ôl-fynegi (førende og bagudrettet indikator, i stedet for hwyrfrydig), cynhwysedd (kapacitet), dosraniad (fordeling), cydberthynas (korrelation), allbwn for output i emne 1.3 og cyfradd gadael staff (medarbejderafgang). Fire emneslugs blev omdøbt, så de passer.
  • Site: opgraderede @lilydesignsystem/svelte-picker-bar til 0.2.0, som tilføjer en søgevælger til headerlinjen; den sender til den eksisterende sitesøgning på /?<query>.
  • Tilføjede scripts/generate-sitemap.mjs, kørt til sidst i pnpm build, som skriver sitemap.xml ud fra de forudgengivne sider (kun kanoniske lokalitets-URL’er, ingen dubletter med to-bogstavsaliasser), så linjen Sitemap: i robots.txt kan løses.
  • AGENTS.md er nu et kort indeks; detaljerne flyttede til AGENTS/layout.md, style.md, locales.md og workflow.md.
  • Dokumentationsgennemgang: opdaterede AGENTS.md, index.md, den genererede README-lokalitetstekst, spec/index.md, spec/locales.md og sitets AGENTS.md og README.md til 27 lokaliteter, mappenavne pr. lokalitet og det nye værktøj; tilføjede CLAUDE.md (en henvisning til AGENTS.md); rettede de forældede docs/-stier i begge agentfærdigheder og gjorde skills/ til den kanoniske kopi af .claude/skills/ (kontrolleret af testene).
  • Tilføjede llms.txt og llms.json (et indeks til AI-agenter over hver serveret lokalitet og hvert emne) til sitets static/, genereret af tools/gen_llms.py (just llms) og kontrolleret af testene.
  • Sitets forside: listen med “ni dele”-fliser er nu en indlejret liste, “Contents”, over alle dele og emner, og afsnittet “Goodharts lov, overalt” er fjernet.
  • Ændrede “kapitel” til “emne” i hele bogens brødtekst i hver lokalitet (for eksempel “emne 2.1”, “Emner i denne del”), med hvert sprogs eget ord for emne (tema, sujet, Thema, тема, 主題 og så videre), og i specifikationen, værktøjernes genererede tekst og sitets grænsefladestrenge. Filnavne, URL’er og afsnitsnøglerne er uændrede.
  • Oversatte hvert mappenavn for afsnit under locales/: chapters/ er nu topics/ (og dets oversættelse i hver anden lokalitet, f.eks. temas/, sujets/, themen/), og es-001s examples/ er ejemplos/. Navnene findes i spec/section-names.json; værktøjerne, testene og sitets indholdssynkronisering læser dem derfra, og sitets URL’er er uændrede.

Changed

  • Reviderede de walisiske lokaliteter (cy-001, cy-gb, holdt identiske) mod den walisiske regerings terminologiliste TermCymru: llesiant for trivsel, cynhyrchiant for produktivitet, gwendid/gwendidau for sårbarhed, llywodraethiant for styring, cydberthynas for korrelation, ôl-groniad for backlog (tidligere lader stå på engelsk), cost a budd for cost-benefit og deallusrwydd artiffisial (AI) ved første omtale af AI i hvert emne.

Added

  • Tilføjede tysk (de-001) som den 26. komplette oversatte lokalitet: alle 63 emner med tilsvarende .locale-peer-id-sidefiler, med samme indhold som de-de. Koblet ind på sitet og serveret på /de-001/ (alias /de/).
  • Tilføjede portugisisk (pt-001) som den 25. komplette oversatte lokalitet: alle 63 emner med tilsvarende .locale-peer-id-sidefiler, med samme indhold som pt-pt. Koblet ind på sitet og serveret på /pt-001/ (alias /pt/).
  • Gennemførte en komplet håndoversættelse fra bunden af alle 63 emner til urdu (ur-001, højre mod venstre), den 24. komplette oversatte lokalitet, med tilsvarende .locale-peer-id-sidefiler. Hvert emne blev oversat direkte fra den engelske kilde, indekset (emne 9.7) afbilder hvert internt link til dets urdu-filnavn, og afsnitsmappen er موضوعات. Koblet ind på sitet og serveret på /ur-001/ (alias /ur/).
  • Gennemførte en komplet håndoversættelse fra bunden af alle 63 emner til indonesisk (id-001), med tilsvarende .locale-peer-id-sidefiler. Der fandtes ingen tidligere indonesisk lokalitet at bygge videre på, så hvert emne blev oversat direkte fra den engelske kilde, og indekset (emne 9.7) afbilder hvert internt link til dets indonesiske filnavn. Koblet ind på sitet og serveret på /id-001/ (alias /id/).
  • Tilføjede russisk (ru-001) og kinesisk (zh-001) som den 21. og 22. komplette oversatte lokalitet: alle 63 emner hver, med tilsvarende .locale-peer-id-sidefiler, med samme indhold som ru-ru og zh-cn. Koblet ind på sitet og serveret på /ru-001/ og /zh-001/ (aliasser /ru/ og /zh/).
  • Tilføjede fransk (fr-001) som den 20. komplette oversatte lokalitet: alle 63 emner med tilsvarende .locale-peer-id-sidefiler, med samme indhold som fr-fr. Koblet ind på sitet og serveret på /fr-001/ (alias /fr/).
  • Tilføjede bengali (bn-001) som den 19. komplette oversatte lokalitet: alle 63 emner med tilsvarende .locale-peer-id-sidefiler, med samme indhold som bn-bd. Koblet ind på sitet og serveret på /bn-001/ (alias /bn/).
  • Tilføjede arabisk (ar-001) som den 18. komplette oversatte lokalitet: alle 63 emner med tilsvarende .locale-peer-id-sidefiler, med samme indhold som ar-eg. Koblet ind på sitet og serveret på /ar-001/ (alias /ar/).
  • Tilføjede walisisk, Storbritannien (cy-gb) som den 17. komplette oversatte lokalitet: alle 63 emner med tilsvarende .locale-peer-id-sidefiler, med samme indhold som cy-001 (samme forhold som hi-id har til hi-001). Koblet ind i sitets SERVED_LOCALE_CODES og serveret på /cy-gb/.
  • Gennemførte en komplet håndoversættelse fra bunden af alle 63 emner til nederlandsk, Nederlandene (nl-nl), med tilsvarende .locale-peer-id-sidefiler og bestået just test. Der fandtes ingen tidligere nederlandsk lokalitet at bygge videre på, så hvert emne blev oversat direkte fra den engelske kilde. Indekset (emne 9.7) afbilder hvert internt emnelink til dets nederlandske filnavn, efter samme fremgangsmåde som for ar-eg, bn-bd, ko-kr, es-es, pt-pt, ja-jp, ru-ru, fr-fr og sv-se. Endnu ikke koblet ind på sitet.
  • Gennemførte en komplet håndoversættelse fra bunden af alle 63 emner til svensk, Sverige (sv-se), med tilsvarende .locale-peer-id-sidefiler og bestået just test. Der fandtes ingen tidligere svensk lokalitet at bygge videre på, så hvert emne blev oversat direkte fra den engelske kilde. Indekset (emne 9.7) afbilder hvert internt emnelink til dets svenske filnavn, efter samme fremgangsmåde som for ar-eg, bn-bd, ko-kr, es-es, pt-pt, ja-jp, ru-ru og fr-fr. Endnu ikke koblet ind på sitet.
  • Gennemførte en komplet håndoversættelse fra bunden af alle 63 emner til fransk, Frankrig (fr-fr), med tilsvarende .locale-peer-id-sidefiler og bestået just test. Der fandtes ingen tidligere fransk lokalitet at bygge videre på, så hvert emne blev oversat direkte fra den engelske kilde. Indekset (emne 9.7) afbilder hvert internt emnelink til dets franske filnavn, efter samme fremgangsmåde som for ar-eg, bn-bd, ko-kr, es-es, pt-pt, ja-jp og ru-ru. Endnu ikke koblet ind på sitet.
  • Gennemførte en komplet håndoversættelse fra bunden af alle 63 emner til russisk, Rusland (ru-ru), med tilsvarende .locale-peer-id-sidefiler og bestået just test. Der fandtes ingen tidligere russisk lokalitet at bygge videre på, så hvert emne blev oversat direkte fra den engelske kilde. Indekset (emne 9.7) afbilder hvert internt emnelink til dets russiske filnavn, efter samme fremgangsmåde som for ar-eg, bn-bd, ko-kr, es-es, pt-pt og ja-jp. Endnu ikke koblet ind på sitet.
  • Gennemførte en komplet håndoversættelse fra bunden af alle 63 emner til japansk, Japan (ja-jp), med tilsvarende .locale-peer-id-sidefiler og bestået just test. Der fandtes ingen tidligere japansk lokalitet at bygge videre på, så hvert emne blev oversat direkte fra den engelske kilde. Indekset (emne 9.7) afbilder hvert internt emnelink til dets japanske filnavn, efter samme fremgangsmåde som for ar-eg, bn-bd, ko-kr, es-es og pt-pt. Endnu ikke koblet ind på sitet.
  • Gennemførte en komplet håndoversættelse fra bunden af alle 63 emner til portugisisk, Portugal (pt-pt), med tilsvarende .locale-peer-id-sidefiler og bestået just test. Der fandtes ingen tidligere portugisisk lokalitet at bygge videre på, så hvert emne blev oversat direkte fra den engelske kilde. Indekset (emne 9.7) afbilder hvert internt emnelink til dets portugisiske filnavn, efter samme fremgangsmåde som for ar-eg, bn-bd, ko-kr og es-es. Endnu ikke koblet ind på sitet.
  • Tilføjede spansk, Spanien (es-es) som en komplet oversat lokalitet, alle 63 emner, med udgangspunkt i en kopi af den eksisterende spanske (es-001) oversættelse (som ved gennemsyn viste sig allerede at være grammatisk neutral, med ordforråd, der for det meste allerede læner sig mod Spanien) og derefter en målrettet terminologigennemgang for de resterende mindretalsanvendelser, især “incidente” til “incidencia” for denne bogs domæne om hændelsesmetrikker, med tilsvarende rettelser af kønsbøjning overalt. Endnu ikke koblet ind på sitet.
  • Gennemførte en komplet håndoversættelse af alle 63 emner til koreansk, Korea (ko-kr), med tilsvarende .locale-peer-id-sidefiler og bestået just test. Indekset (emne 9.7) afbilder hvert internt emnelink til dets koreanske filnavn, efter samme fremgangsmåde som for ar-eg og bn-bd. Endnu ikke koblet ind på sitet.
  • Tilføjede hindi, Indien (hi-id) som en komplet oversat lokalitet, alle 63 emner, ved at kopiere den eksisterende hindi-oversættelse (hi-001) ordret under den landemærkede lokalitetskode, da standardhindi ikke har nogen særskilt indisk variant, der skal oversættes for sig. Endnu ikke koblet ind på sitet.
  • Gennemførte en komplet håndoversættelse af alle 63 emner til bengali, Bangladesh (bn-bd), med tilsvarende .locale-peer-id-sidefiler og bestået just test. Endnu ikke koblet ind på sitet.
  • Gennemførte en komplet håndoversættelse af alle 63 emner til arabisk, Egypten (ar-eg), med tilsvarende .locale-peer-id-sidefiler og bestået just test. Endnu ikke koblet ind på sitet.
  • Gennemførte en komplet håndoversættelse af alle 63 emner til tysk, Tyskland (de-de), med tilsvarende .locale-peer-id-sidefiler og bestået just test. Endnu ikke koblet ind på sitet.
  • Gennemførte komplette håndoversættelser af alle 63 emner til tre lokaliteter: walisisk (cy-001), kinesisk (zh-cn) og hindi (hi-001), hver med tilsvarende .locale-peer-id-sidefiler og bestået just test.
  • Tilføjede yderligere to planlagte oversatte lokaliteter, walisisk, Storbritannien (cy-gb) og kinesisk (zh-001), til spec/locales-for-global-sharing-with-svelte/locales.tsv og spec/locales.md (nu tretten planlagte lokaliteter, op fra elleve), og afklarede zh-cns tidligere uafklarede endonym til 中文. Sitets LOCALE_LABELS fik tilsvarende poster (cy-gb: “Cymraeg (Prydain Fawr)“, zh-001: “中文”, zh-cn: “中文 (中国)”). Stadig kun infrastruktur: ingen af disse lokaliteter har en mappe locales/<code>/ eller oversat indhold endnu.
  • Udgav bogen i fire lokaliteter under locales/: en-gb-oxendict (britisk engelsk, Oxford-stavning; den håndskrevne kilde), en-001 (international engelsk), en-gb (almindelig britisk engelsk) og en-us (amerikansk engelsk). en-001, en-gb og en-us udledes mekanisk af en-gb-oxendict af det nye tools/localize.py; se spec/locales.md. docs/ findes ikke længere; hver henvisning til den i spec/, AGENTS.md, tests/validate.py, tools/gen_nav.py og tools/stats.py peger nu på locales/<locale>/.
  • Tilføjede to Claude Code-færdigheder, software-engineering-metrics-skill (til læsere, der anvender bogens vejledning på deres eget team) og software-engineering-metrics-maintainer-skill (til bidragydere, der tilføjer eller redigerer emner), under skills/ og spejlet ind i .claude/skills/.
  • Flyttede den udgivne hjemmesides kildekode ind i dette repositorium som software-engineering-metrics.github.io/, tidligere et separat repositorium. Den læser nu locales/ direkte fra repositoriets rod frem for en søsterudgave ved siden af. Rodens .github/workflows/deploy.yml kontrollerer, at sitet stadig bygger ved hvert push til main, og sender derefter en repository_dispatch til repositoriet software-engineering-metrics.github.io (bevaret som en tynd udrulningsskal, da GitHub Pages kun vil servere det nøgne domæne fra et repositorium med præcis det navn), som henter dette monorepo, bygger sitet og udruller det.
  • Tilføjede infrastrukturen til oversatte (ikke blot stavningsafledte) lokaliteter, efter den nye underspecifikation spec/locales-for-global-sharing-with-svelte/: tools/gen_locale_peer_ids.py tildeler hver indholdsfil en .locale-peer-id-sidefil, identisk på tværs af lokaliteter, som en fremtidig oversat lokalitet (med egne slugs i oprindeligt skriftsystem) kan bruge til at finde “denne side, i lokalitet X” i stedet for at matche på slug; tests/validate.py kontrollerer, at hver sidefil findes og passer. spec/locales.md dokumenterer ti planlagte oversatte lokaliteter (arabisk, bengali, walisisk, spansk, fransk, hindi, indonesisk, portugisisk, russisk, urdu og kinesisk, Kina); ingen har endnu en mappe locales/<code>/, da ingen endnu er oversat. På sitet fik scripts/locales.mjs LOCALE_LABELS/localeLabel() (et visningsnavn for hver planlagt lokalitet, klar forud for routing) og sortedLocaleEntries() (den sorteringsrækkefølge, en fremtidig lokalitetsliste skal bruge), og src/lib/i18n.js udtrak grænsefladestrengene (navigation, sidepanel, sideskift, vælger, sidefod, spring-over-link), som hver .svelte-komponent tidligere hårdkodede på engelsk, ført igennem via ui(locale), med tilbagefald til engelsk for enhver lokalitet uden egne oversættelser.
  • Erstattede sitets håndbyggede header-kontrol, der kun gjaldt lokalitet, med Lily Design Systems @lilydesignsystem/svelte-picker-bar: en rigtig temavælger (lys/mørk, via nye static/assets/themes/{light,dark}.css), den rigtige lokalitetsvælger (koblet til dette sites URL-baserede routing frem for dens standardadfærd, der kun gælder lang/dir), en tekststørrelsesvælger (Lilys syvtrinsskala) og en delingsvælger (e-mail, Mastodon, kopiér link). Fastlåste @lilydesignsystem/svelte-{theme,locale,text-size,share}-picker til ^0.1.2 og @lilydesignsystem/svelte-headless til ^0.2.0 via overrides i pnpm-workspace.yaml, som en omgåelse af en reel udgivet fejl i svelte-picker-bar 0.1.0s egne afhængighedsintervaller (se hver vælgers CHANGELOG.md, “0.1.2”, og dette sites AGENTS.md).
  • Fjernede forsidens statistikrække (dele/emner/“Free Always”) og dens afsnit “How to read it”, og erstattede kortgitteret “Browse the nine parts” med en almindelig punktliste.

Changed

  • Tilføjede scripts/generate-sitemap.mjs, kørt til sidst i pnpm build, som skriver sitemap.xml ud fra de forudgengivne sider (kun kanoniske lokalitets-URL’er, ingen dubletter med to-bogstavsaliasser), så linjen Sitemap: i robots.txt kan løses.
  • Tilføjede emne 2.8, Lean-værdistrømsmetrikker (gennemløbstid, procestid, cyklustid, procent færdigt og korrekt samt taktid fra klassisk lean-værdistrømskortlægning, plus beregningen af rullet gennemløbsudbytte), placeret efter køteori. Metrikker for pull requests og kodegennemgang flyttede fra 2.8 til 2.9, og emnet om DORA-metrikker flyttede fra 2.9 til 2.10. Opdaterede alle berørte krydshenvisninger i hele bogen.
  • Omdøbte del 2 fra “Delivery and Flow Metrics” til “Flow Metrics” og omorganiserede den omkring Mik Kerstens Flow Framework. Tilføjede fire nye emner: 2.1 Flow Framework, 2.2 Flowelementer (funktioner, fejl, risici, gæld), 2.3 Flowhastighed og flowfordeling og 2.4 Flowtid og flowbelastning. Samlede de fire enkelte emner om DORA-metrikker (udrulningsfrekvens, gennemløbstid, andel af ændringer, der fejler, genoprettelsestid) i ét referenceemne, 2.9 DORA-metrikframeworket, flyttet til slutningen af delen. Omnummererede floweffektivitet og igangværende arbejde til 2.5 og omdøbte og omnummererede emnet om køteori (tidligere 2.9) til 2.7 Køteori. Cyklustid (2.6) og metrikker for pull requests og kodegennemgang (2.8) beholder deres numre. Opdaterede alle krydshenvisninger i hele bogen, ordlisten, formelreferencen, modenhedsselvvurderingen og forordet, så de passer.

Added

  • Første udgivelse: 45 substantielle emner fordelt på 8 dele, plus forord og et bilag med 7 emner (del 9), der dækker DORA- og SPACE-frameworkene, kode- og kvalitetsmetrikker, produkt- og forretningsmetrikker, metrikker for driftssikkerhed og sikkerhed samt generativ AI’s indvirkning på ingeniørmetrikker.
  • Repositoriets infrastruktur spejlet fra søsterprojektet software-engineering-guide: en specifikationsdrevet spec/ (indeks, struktur, konventioner, Oxford-stavning, køreplan), en valideringssuite i tests/validate.py, en navigationsgenerator i tools/gen_nav.py, en justfile, AGENTS.md med vejledninger til bidragydere under docs/contributing/, CONTRIBUTING.md og denne ændringslog.
  • spec/structure.md, det kanoniske emnemanifest, som testene kontrollerer filerne mod.
  • To gennemarbejdede eksempler i docs/examples/: et udfyldt metrikcharter og en dashboardspecifikation.

History

Bogen blev bygget fra specifikationen og udad: den ni-delte struktur blev erklæret i spec/structure.md først, derefter blev hvert emne forfattet efter den fælles skabelon i docs/contributing/chapter-template.md, mens tests/validate.py håndhævede struktur og husstil hele vejen.

Conventions for this file

  • Gruppér ændringer under Added, Changed, Fixed, Removed eller Deprecated.
  • Hold poster korte og specifikke. Én linje hver, hvor det er muligt.
  • Brug heller ikke tankestreger her; testene kontrollerer også denne fil.