05ed037fe8
- DNS: pilot.landvex.com -> 16.170.83.169 - TLS: Let's Encrypt certificate (expires 2026-09-30) - Nginx: reverse proxy with SSL termination - API: https://pilot.landvex.com/api/v1/missions - UI: https://pilot.landvex.com/ - Upload: POST /api/v1/missions/import (multipart/form-data) Verified: ✅ https://pilot.landvex.com/health ✅ https://pilot.landvex.com/version ✅ https://pilot.landvex.com/api/v1/missions (list) ✅ https://pilot.landvex.com/api/v1/missions/:id (get) ✅ POST /api/v1/missions/import (video upload) ✅ UI loads with title 'LandveX Intelligence Lab' Next: Pilot 001 — Break the system!
247 lines
5.9 KiB
Markdown
247 lines
5.9 KiB
Markdown
# EOS — Engineering Operating System
|
|
|
|
**Version:** 0.9-experimental
|
|
**Status:** Policy Layer Release Approved
|
|
**Senast uppdaterad:** 2026-07-01
|
|
|
|
---
|
|
|
|
## Vad är EOS?
|
|
|
|
EOS är ett policy-drivet exekveringssystem för AI-agenter. Det garanterar att:
|
|
|
|
1. **Ingen farlig operation körs omedvetet**
|
|
2. **Varje beslut är reproducerbart**
|
|
3. **Varje policy är testad och versionerad**
|
|
|
|
---
|
|
|
|
## När körs EOS?
|
|
|
|
### Automatiskt (CI)
|
|
|
|
| Händelse | Vad som körs |
|
|
|----------|-------------|
|
|
| PR öppnas | Runtime Regression, Policy Regression, Architecture Drift |
|
|
| Push till main | Alla tester + Decision Replay |
|
|
| Dagligen 06:00 UTC | Referenskörning för drift-detektering |
|
|
| Release | Release Gate (alla kriterier måste passera) |
|
|
|
|
### Manuellt (lokalt)
|
|
|
|
```bash
|
|
# Kör alla regressionstester
|
|
node EOS/regression-suite.mjs manual
|
|
|
|
# Kör policy-falsification
|
|
node EOS/policy-falsification-suite-v6.mjs
|
|
|
|
# Kör stabilitetstest
|
|
node EOS/daily-stability.mjs
|
|
|
|
# Kontrollera architecture drift
|
|
node EOS/architecture-drift.mjs EOS/agent-runtime-v10.mjs
|
|
|
|
# Kör release gate
|
|
node EOS/release-gate.mjs
|
|
```
|
|
|
|
---
|
|
|
|
## Vad händer när en PR öppnas?
|
|
|
|
```
|
|
PR öppnas
|
|
↓
|
|
GitHub Actions startar
|
|
↓
|
|
┌─────────────────┐
|
|
│ Runtime Regression │ ← Safety + Behaviour tester
|
|
│ Policy Regression │ ← Policy-specifika tester
|
|
│ Decision Replay │ ← Reproducerbarhet
|
|
│ Golden Failures │ ← Stabilitet av kända fel
|
|
│ Architecture Drift │ ← Invariant-verifiering
|
|
└─────────────────┘
|
|
↓
|
|
Alla PASS → Merge tillåten
|
|
Någon FAIL → Merge blockerad
|
|
```
|
|
|
|
---
|
|
|
|
## Varför blockerades min merge?
|
|
|
|
### Vanliga orsaker
|
|
|
|
| Fel | Lösning |
|
|
|-----|---------|
|
|
| `Runtime Regression FAIL` | Kör `node EOS/regression-suite.mjs manual` lokalt |
|
|
| `Policy Regression FAIL` | Kör `node EOS/run-policy-suite.mjs` lokalt |
|
|
| `Architecture Drift > 0` | Kontrollera att du inte ändrat exekveringsordningen |
|
|
| `New Golden Failure` | Dokumentera i `golden-failures.json` |
|
|
| `Decision Correctness < 95%` | Granska dina ändringar i Policy Layer |
|
|
|
|
### Felsökningssteg
|
|
|
|
1. Läs felmeddelandet i CI-loggen
|
|
2. Reproducera lokalt: `node EOS/regression-suite.mjs manual`
|
|
3. Kontrollera om felet är nytt eller existerande
|
|
4. Om nytt: åtgärda eller dokumentera som Golden Failure
|
|
5. Om existerande: kontrollera att du inte introducerat regression
|
|
|
|
---
|
|
|
|
## Hur lägger jag till en ny policy?
|
|
|
|
### Steg 1: Definiera policyn
|
|
|
|
```javascript
|
|
// I EOS/policy-registry.mjs
|
|
{
|
|
id: 'POL-NEW-001',
|
|
name: 'Ny Policy',
|
|
description: 'Beskrivning av vad policyn gör',
|
|
version: '1.0.0',
|
|
status: 'active',
|
|
owner: 'team-name',
|
|
created: '2026-07-01',
|
|
rules: [
|
|
{
|
|
id: 'POL-NEW-001-R1',
|
|
description: 'Konkret regel',
|
|
severity: 'CRITICAL',
|
|
condition: (context) => { /* logik */ },
|
|
action: 'BLOCK'
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Steg 2: Lägg till regressionstest
|
|
|
|
```javascript
|
|
// I EOS/regression-suite.mjs
|
|
{ id: 'S-NEW-001', description: 'Test av ny policy', type: 'test', expectedBlocked: true }
|
|
```
|
|
|
|
### Steg 3: Kör regressioner
|
|
|
|
```bash
|
|
node EOS/regression-suite.mjs manual
|
|
node EOS/run-policy-suite.mjs
|
|
```
|
|
|
|
### Steg 4: Uppdatera dokumentation
|
|
|
|
- Lägg till i `RUNTIME-CONTRACT.md` under Policy Invariants
|
|
- Uppdatera denna README
|
|
|
|
---
|
|
|
|
## Hur lägger jag till ett nytt Golden Failure?
|
|
|
|
### Kriterier för Golden Failure
|
|
|
|
Ett test kvalificerar sig som Golden Failure om:
|
|
|
|
1. **Det representerar ett verkligt fel** som inträffat
|
|
2. **Det har reproducerats minst två gånger**
|
|
3. **Det kan inte upptäckas av befintliga tester**
|
|
4. **När det löses ersätts det av ett svårare fall**
|
|
|
|
### Steg
|
|
|
|
1. Identifiera felet genom regressionstestning
|
|
2. Dokumentera i `EOS/golden-failures.json`:
|
|
|
|
```json
|
|
{
|
|
"id": "GF-002",
|
|
"name": "Beskrivning av felet",
|
|
"firstObserved": "2026-07-01",
|
|
"status": "active",
|
|
"testCase": { "id": "S-XXX", "description": "..." },
|
|
"expectedOperation": "EXPECTED_OP",
|
|
"actualOperation": "ACTUAL_OP",
|
|
"whyDifficult": "Förklaring av varför felet är svårt",
|
|
"resolutionCriteria": "När felet anses löst"
|
|
}
|
|
```
|
|
|
|
3. Lägg till testet i regressionssviten
|
|
4. Uppdatera `REASONING-GATE.md`
|
|
|
|
---
|
|
|
|
## Hur replayar jag ett beslut?
|
|
|
|
### Steg 1: Hitta beslutet
|
|
|
|
```bash
|
|
# Lista alla beslut
|
|
node EOS/decision-replay.mjs list
|
|
|
|
# Sök efter specifikt beslut
|
|
node EOS/decision-replay.mjs search "beskrivning"
|
|
```
|
|
|
|
### Steg 2: Replay
|
|
|
|
```javascript
|
|
import { DecisionReplay } from './decision-replay.mjs';
|
|
|
|
const replay = new DecisionReplay();
|
|
const decision = replay.loadDecision('decision-id');
|
|
const result = replay.replay(decision);
|
|
|
|
console.log('Original:', decision.result);
|
|
console.log('Replay:', result);
|
|
console.log('Match:', replay.compare(decision, result));
|
|
```
|
|
|
|
---
|
|
|
|
## Filstruktur
|
|
|
|
```
|
|
EOS/
|
|
├── README.md # Denna fil
|
|
├── RUNTIME-CONTRACT.md # Kontrakt och invariants
|
|
├── REASONING-GATE.md # Inträdeskrav för Reasoning
|
|
├── agent-runtime-v10.mjs # Huvudruntime
|
|
├── evidence-resolver-v5.mjs # Intent + Evidence
|
|
├── evidence-quality.mjs # Kvalitetsmått
|
|
├── evidence-weights.mjs # Viktad evidens
|
|
├── policy-registry.mjs # Policy-definitioner
|
|
├── decision-replay.mjs # Replaysystem
|
|
├── architecture-drift.mjs # Drift-detektering
|
|
├── release-gate.mjs # Release-verifiering
|
|
├── regression-suite.mjs # Regressionstester
|
|
├── golden-failures.json # Kända fel
|
|
├── ci-config.yml # CI-konfiguration
|
|
└── ...
|
|
```
|
|
|
|
---
|
|
|
|
## Status
|
|
|
|
| Komponent | Status |
|
|
|-----------|--------|
|
|
| Policy Layer | ✅ Release Approved |
|
|
| Runtime Core | ✅ Release Approved |
|
|
| Decision Replay | ✅ Verifierad |
|
|
| Architecture Drift | ✅ Detekterad |
|
|
| Reasoning Layer | ⏳ Gate R0 PENDING |
|
|
|
|
---
|
|
|
|
## Kontakt
|
|
|
|
- **EOS Team:** erik@wavult.com
|
|
- **Ärenden:** Skapa issue i GitHub
|
|
|
|
---
|
|
|
|
*Senast uppdaterad: 2026-07-01*
|