From e6e9e11b18d0354a94463d7e4c15f1c2980e9030 Mon Sep 17 00:00:00 2001 From: Nils-Johan Gynther Date: Sun, 24 May 2026 19:40:48 +0200 Subject: [PATCH] chore(deps): enforce npm package release age policy - Added `min-release-age=1` to backend/.npmrc to require packages to be at least 1 day old - GitHub Actions backend jobs already use `npm ci` in backend/ directory, automatically enforcing the policy - Updated README.md with supply-chain protection policy and operational procedures BREAKING CHANGE: npm install/npm ci will now fail for packages younger than 1 day unless policy is temporarily overridden --- .kilo/plans/1779643125894-lucky-island.md | 51 +++++++++++++++++++++++ README.md | 6 +++ backend/.npmrc | 1 + 3 files changed, 58 insertions(+) create mode 100644 .kilo/plans/1779643125894-lucky-island.md create mode 100644 backend/.npmrc diff --git a/.kilo/plans/1779643125894-lucky-island.md b/.kilo/plans/1779643125894-lucky-island.md new file mode 100644 index 00000000..36e1abce --- /dev/null +++ b/.kilo/plans/1779643125894-lucky-island.md @@ -0,0 +1,51 @@ +# Plan: Konfigurera minimiålder för paketrelease + +## Mål +Införa en "cooldown" för npm-paket så att mycket nyligen publicerade versioner blockeras vid installation i projektet. + +## Nuläge (verifierat) +- Projektet använder npm (lockfile finns i `backend/package-lock.json` och `.kilo/package-lock.json`). +- Backend installeras i CI med `npm ci` i `.github/workflows/test.yml`. +- Ingen befintlig `.npmrc` i repo-roten eller i `backend/`. +- Ingen Renovate/Dependabot-konfiguration hittades i repot. + +## Föreslagen implementation +1. **Sätt projektpolicy i backend** + - Skapa `backend/.npmrc` med: + - `min-release-age=1` + - Motivering: backend är den körda Node-applikationen och har tydlig CI-kedja med `npm ci`. + +2. **(Valfritt) Sätt policy för Kilo-verktygsmappen** + - Om `.kilo/` installeras/uppdateras aktivt i detta repo, skapa även `.kilo/.npmrc` med samma värde. + - Om `.kilo/` är sekundär och inte del av normal drift kan detta utelämnas. + +3. **CI-effekt (ingen workflow-ändring krävs)** + - `npm ci` i GitHub Actions kommer automatiskt respektera `backend/.npmrc`. + - Ingen ändring av `.github/workflows/test.yml` behövs för grundfunktionen. + +4. **Dokumentera kort i befintlig drift-/utvecklingsdokumentation** + - Lägg 2-4 rader där dependency-policy redan beskrivs (om sådan sektion finns). + - Innehåll: syfte, värde (`1` dag), och hur man tillfälligt hanterar blockerade uppgraderingar. + +5. **Verifiering** + - Lokalt i `backend/`: + - `npm config get min-release-age` (ska visa `1` med projektconfig aktiv) + - `npm ci` (ska fungera normalt) + - CI: + - Bekräfta att befintligt workflow passerar utan regressionsfel. + +## Risker och hantering +- **Risk:** Legitima hotfix-versioner blir tillfälligt blockerade (<24h gamla). + - **Hantering:** vänta in cooldown eller använd tillfällig manuell policyjustering i kontrollerad incident. +- **Risk:** Inkonsistent policy om flera npm-delprojekt hanteras olika. + - **Hantering:** besluta explicit om `.kilo/` ska omfattas. + +## Rekommenderade standardval +- Minimiålder: **1 dag** (`min-release-age=1`) nu. +- Scope: **backend först**; utöka till `.kilo/` endast om den mappen används aktivt i teamets vardagsflöde. + +## Acceptanskriterier +- `backend/.npmrc` finns med `min-release-age=1`. +- `npm ci` i backend fungerar lokalt. +- CI-jobben som kör backend-installation fortsätter passera. +- (Om valt) `.kilo/.npmrc` följer samma policy. diff --git a/README.md b/README.md index f8535c08..62d0a443 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ +# Nyheter och förbättringar (2026-05-24) + +- **Supply-chain-skydd för npm i backend:** `backend/.npmrc` innehåller nu `min-release-age=1`, vilket kräver att paketversioner är minst 1 dag gamla innan `npm install`/`npm ci` tillåts. +- **CI påverkas automatiskt:** Backend-jobben i GitHub Actions använder redan `npm ci` i `backend/` och följer därmed policyn utan workflow-ändringar. +- **Driftpolicy:** Vid blockerad akut uppgradering väntar vi normalt ut cooldown-fönstret i stället för att öppna generell policy. + # Nyheter och förbättringar (2026-05-21) - **Flyer AI-trace end-to-end:** flyer-importen sparar nu prompt/output/metadata i `AiTrace` (source=`flyer`) och adminpanelen kan visa detaljerad trace per session. diff --git a/backend/.npmrc b/backend/.npmrc new file mode 100644 index 00000000..6c6f2f20 --- /dev/null +++ b/backend/.npmrc @@ -0,0 +1 @@ +min-release-age=1