chore(deps): enforce npm package release age policy
Test Suite / backend-pr-quick (push) Has been skipped
Test Suite / quick-import-pr-quick (push) Has been skipped
Test Suite / backend-full (push) Successful in 2m40s
Test Suite / flutter-quality (push) Failing after 1m9s

- 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
This commit is contained in:
Nils-Johan Gynther
2026-05-24 19:40:48 +02:00
parent b04d157915
commit e6e9e11b18
3 changed files with 58 additions and 0 deletions
+51
View File
@@ -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.
+6
View File
@@ -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) # 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. - **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.
+1
View File
@@ -0,0 +1 @@
min-release-age=1