# Granskade licenskompatibiliteten hos 644 Rust‑crates vid varje bygge och bevisade att kontrollen slår till genom att skriva om licensen för en crate och genom att flytta den låsta kärnrevisionen utan att generera om.

september 2026

**Situation.** Att länka in en Rust‑kärna i en levererad applikation innebär att leverera allt som kärnan är beroende av. Beroendegrafen omfattar 644 crates. Var och en har en licens, vissa har mer än en, och en enda copyleft‑crate som dyker upp tre nivåer ned genom en rutinmässig versionshöjning ändrar under vilka villkor applikationen som helhet får distribueras — i tysthet, i en låsfil som ingen läser rad för rad.

**Uppgift.** Licensläget måste verifieras vid varje bygge i stället för att granskas en gång, med en uttrycklig tillåtelselista, så att en ändring i grafen blir ett byggfel och inte en upptäckt som någon annan gör senare.

**Handling.** Licensgranskningen löser upp hela den transitiva grafen och kontrollerar varje crates licensuttryck mot en lista över villkor som projektet godtar, och utvärderar de booleska uttrycken korrekt — en crate som erbjuder ett val mellan två licenser godtas om någon av dem finns på listan, och en crate som kräver båda godtas bara om båda gör det. Allt som inte matchar får bygget att fallera i stället för att ge en varning, och att lägga till ett villkor i tillåtelselistan är en avsiktlig ändring med ett skäl. En kontroll som aldrig har fallerat går inte att skilja från en som inte kan fallera, så den fick fallera med flit, två gånger. En gång genom att en crates licensuttryck skrevs om till något som listan inte godtar, vilket är formen för en crate som ändrar sina villkor uppströms mellan versioner — det fall som ingen mänsklig granskning fångar, eftersom craten i sig inte är ny. En gång genom att den fastlåsta kärnrevisionen flyttades utan att licensgranskningen genererades om, vilket är formen för en höjning av kärnan som i tysthet för med sig ett nytt beroende. Båda provokationerna fick bygget att fallera som avsett, och kontrollen lämnades kvar i stället för att vidgas.

**Resultat.** Distributionsläget kontrolleras vid varje bygge, och det är känt att kontrollen fungerar eftersom den fick fallera, inte för att den aldrig har sagt något. Innan den fanns gjorde paketet, licensfilen och projektets egen README alla ett påstående om 644 crates som ingenting hade verifierat. Begränsningen är precis och bör inte överdrivas: kontrollen läser de deklarerade licensmetadata, och metadata kan vara felaktiga eller ofullständiga. Den bevisar ingenting om en crate som deklarerar sig felaktigt, och den är ingen juridisk rådgivning.

---

- Roll: Bygg- och releaseingenjör
- Kategorier: [Datastyrning](https://platform.engineer.company/sv/categories/data-governance/), [DevOps](https://platform.engineer.company/sv/categories/devops/), [Automatisering och CI/CD](https://platform.engineer.company/sv/categories/automation/), [Säkerhet](https://platform.engineer.company/sv/categories/security/), [Dokumentation](https://platform.engineer.company/sv/categories/documentation/)
- Tjänster: [Datastyrning och datakvalitet](https://platform.engineer.company/sv/services/data-governance/), [DevOps och CI/CD‑automatisering](https://platform.engineer.company/sv/services/devops-cicd/), [Säkerhet och behörighetshantering](https://platform.engineer.company/sv/services/security-access/)

<https://platform.engineer.company/sv/portfolio/audited-644-rust-crates-for-licence-compatibility-163/>
