77 lines
2.3 KiB
Markdown
77 lines
2.3 KiB
Markdown
|
|
# Engineering Policy E-001 — Versionering och spårbarhet
|
||
|
|
|
||
|
|
**Status:** Engineering Policy. Gäller oavsett verktyg eller miljö.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Princip
|
||
|
|
|
||
|
|
> Ingen ändring av kod, konfiguration eller infrastruktur får göras utanför versionshantering. Varje förändring ska kunna spåras till:
|
||
|
|
> - ett Change Request (CR-ID),
|
||
|
|
> - en Git-commit,
|
||
|
|
> - en granskning (när tillämpligt),
|
||
|
|
> - och en reproducerbar version av källkoden.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Tillåtet
|
||
|
|
|
||
|
|
| Praktik | Krav |
|
||
|
|
|---------|------|
|
||
|
|
| All kod i Git-repositorier | Obligatoriskt |
|
||
|
|
| Varje commit refererar till CR-ID | Obligatoriskt |
|
||
|
|
| Branch → commit → merge | Enligt arbetsprocess |
|
||
|
|
| Releases kopplas till commits | Reproducerbarhet |
|
||
|
|
|
||
|
|
## Förbjudet
|
||
|
|
|
||
|
|
| Praktik | Konsekvens |
|
||
|
|
|---------|-----------|
|
||
|
|
| Direkt redigering på produktionsservrar | Bryter spårbarhet |
|
||
|
|
| `nano`/`vim` av produktionskod | Skapar "snowflake"-server |
|
||
|
|
| Uppladdning utan Git-motsvarighet | Obestyrbart tillstånd |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Undantag — Akuta incidenter
|
||
|
|
|
||
|
|
Tillåtet endast om:
|
||
|
|
|
||
|
|
1. Incidenten dokumenteras
|
||
|
|
2. Hotfixen omedelbart förs tillbaka till Git
|
||
|
|
3. Ordinarie pipeline återställs efter incidenten
|
||
|
|
|
||
|
|
**Inga "snowflake"-servrar. Någonsin.**
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Sanningskälla
|
||
|
|
|
||
|
|
> **Git är system of record för all kod. Driftmiljön är en deployment-target, aldrig den primära sanningskällan.**
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Koppling till EP-1.0
|
||
|
|
|
||
|
|
E-001 och EP-1.0 kompletterar varandra utan att överlappa:
|
||
|
|
|
||
|
|
| Fråga | Svar |
|
||
|
|
|-------|------|
|
||
|
|
| *Hur får förändringar ske?* | **E-001** — via Git, med spårbarhet till CR-ID och commit |
|
||
|
|
| *Hur får observationer samlas in och bevaras?* | **EP-1.0** — via append-only ledger, frysning och hash |
|
||
|
|
|
||
|
|
### Artefakttyper och integritetsmekanismer
|
||
|
|
|
||
|
|
| Artefakt | Primär integritetsmekanism | Syfte |
|
||
|
|
|----------|---------------------------|-------|
|
||
|
|
| Kod, konfiguration, IaC | Git-historik | Versionshantering |
|
||
|
|
| Ledger (`ledger.jsonl`) | Freeze + SHA256 + append-only | Bevara observationer |
|
||
|
|
| Härledda KPI:er | Härledbara från ledger | Reproducerbar analys |
|
||
|
|
| Metadata | Versionshanteras tillsammans med experimentet | Reproducerbar kontext |
|
||
|
|
|
||
|
|
En fryst ledger **kan** ligga i Git för distribution och backup. Git är då inte beviset på att observationerna är oförändrade — det är hashen och den definierade freeze-punkten.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
*E-001: Hur förändringar sker. EP-1.0: Hur observationer bevaras.*
|