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!
384 lines
9.4 KiB
JSON
384 lines
9.4 KiB
JSON
{
|
|
"timestamp": "2026-07-01T05:35:55.585Z",
|
|
"overall": 14,
|
|
"totalBlockers": 12,
|
|
"areas": [
|
|
{
|
|
"id": "git",
|
|
"name": "Git",
|
|
"weight": 1,
|
|
"target": 90,
|
|
"score": 33,
|
|
"gap": 57,
|
|
"measures": [
|
|
{
|
|
"name": "Ocommitade filer",
|
|
"score": 0,
|
|
"evidence": "774 ocommitade filer",
|
|
"blocker": true,
|
|
"action": "Commita eller .gitignore 774 filer"
|
|
},
|
|
{
|
|
"name": "Git-konfiguration",
|
|
"score": 100,
|
|
"evidence": "Git-repo hittat",
|
|
"blocker": false,
|
|
"action": null
|
|
},
|
|
{
|
|
"name": "Branch-skydd",
|
|
"score": 0,
|
|
"evidence": "Branch-skydd ej verifierat",
|
|
"blocker": true,
|
|
"action": "Konfigurera branch-skydd på GitHub/GitLab"
|
|
}
|
|
],
|
|
"blockers": [
|
|
{
|
|
"measure": "Ocommitade filer",
|
|
"evidence": "774 ocommitade filer",
|
|
"action": "Commita eller .gitignore 774 filer"
|
|
},
|
|
{
|
|
"measure": "Branch-skydd",
|
|
"evidence": "Branch-skydd ej verifierat",
|
|
"action": "Konfigurera branch-skydd på GitHub/GitLab"
|
|
}
|
|
],
|
|
"actions": [
|
|
"Commita eller .gitignore 774 filer",
|
|
"Konfigurera branch-skydd på GitHub/GitLab"
|
|
],
|
|
"status": "CRITICAL"
|
|
},
|
|
{
|
|
"id": "cicd",
|
|
"name": "CI/CD",
|
|
"weight": 1,
|
|
"target": 90,
|
|
"score": 0,
|
|
"gap": 90,
|
|
"measures": [
|
|
{
|
|
"name": "CI/CD pipeline",
|
|
"score": 0,
|
|
"evidence": "Ingen CI/CD",
|
|
"blocker": true,
|
|
"action": "Sätt upp GitHub Actions eller GitLab CI"
|
|
},
|
|
{
|
|
"name": "Automatiserade tester i pipeline",
|
|
"score": 0,
|
|
"evidence": "Ej verifierat",
|
|
"blocker": true,
|
|
"action": "Lägg till test-steg i CI-pipeline"
|
|
}
|
|
],
|
|
"blockers": [
|
|
{
|
|
"measure": "CI/CD pipeline",
|
|
"evidence": "Ingen CI/CD",
|
|
"action": "Sätt upp GitHub Actions eller GitLab CI"
|
|
},
|
|
{
|
|
"measure": "Automatiserade tester i pipeline",
|
|
"evidence": "Ej verifierat",
|
|
"action": "Lägg till test-steg i CI-pipeline"
|
|
}
|
|
],
|
|
"actions": [
|
|
"Sätt upp GitHub Actions eller GitLab CI",
|
|
"Lägg till test-steg i CI-pipeline"
|
|
],
|
|
"status": "CRITICAL"
|
|
},
|
|
{
|
|
"id": "infrastructure",
|
|
"name": "Infrastructure as Code",
|
|
"weight": 1,
|
|
"target": 80,
|
|
"score": 0,
|
|
"gap": 80,
|
|
"measures": [
|
|
{
|
|
"name": "IaC-verktyg",
|
|
"score": 0,
|
|
"evidence": "Ingen IaC",
|
|
"blocker": true,
|
|
"action": "Skapa Terraform/CloudFormation för AWS-resurser"
|
|
},
|
|
{
|
|
"name": "Miljökonfiguration",
|
|
"score": 0,
|
|
"evidence": "Ingen .env.example",
|
|
"blocker": false,
|
|
"action": "Skapa .env.example"
|
|
}
|
|
],
|
|
"blockers": [
|
|
{
|
|
"measure": "IaC-verktyg",
|
|
"evidence": "Ingen IaC",
|
|
"action": "Skapa Terraform/CloudFormation för AWS-resurser"
|
|
}
|
|
],
|
|
"actions": [
|
|
"Skapa Terraform/CloudFormation för AWS-resurser",
|
|
"Skapa .env.example"
|
|
],
|
|
"status": "CRITICAL"
|
|
},
|
|
{
|
|
"id": "api-contracts",
|
|
"name": "API Contracts",
|
|
"weight": 0.8,
|
|
"target": 80,
|
|
"score": 0,
|
|
"gap": 80,
|
|
"measures": [
|
|
{
|
|
"name": "OpenAPI-spec",
|
|
"score": 0,
|
|
"evidence": "Ingen OpenAPI",
|
|
"blocker": true,
|
|
"action": "Skapa OpenAPI-spec för alla endpoints"
|
|
},
|
|
{
|
|
"name": "API-dokumentation",
|
|
"score": 0,
|
|
"evidence": "Ingen API-dokumentation",
|
|
"blocker": false,
|
|
"action": "Skapa API-dokumentation"
|
|
}
|
|
],
|
|
"blockers": [
|
|
{
|
|
"measure": "OpenAPI-spec",
|
|
"evidence": "Ingen OpenAPI",
|
|
"action": "Skapa OpenAPI-spec för alla endpoints"
|
|
}
|
|
],
|
|
"actions": [
|
|
"Skapa OpenAPI-spec för alla endpoints",
|
|
"Skapa API-dokumentation"
|
|
],
|
|
"status": "CRITICAL"
|
|
},
|
|
{
|
|
"id": "database",
|
|
"name": "Database Migrations",
|
|
"weight": 1,
|
|
"target": 90,
|
|
"score": 0,
|
|
"gap": 90,
|
|
"measures": [
|
|
{
|
|
"name": "Migrationer",
|
|
"score": 0,
|
|
"evidence": "Inga migrationer",
|
|
"blocker": true,
|
|
"action": "Sätt upp Prisma eller liknande migrationsverktyg"
|
|
},
|
|
{
|
|
"name": "Migration i CI",
|
|
"score": 0,
|
|
"evidence": "Ej verifierat",
|
|
"blocker": true,
|
|
"action": "Lägg till migration-steg i CI-pipeline"
|
|
}
|
|
],
|
|
"blockers": [
|
|
{
|
|
"measure": "Migrationer",
|
|
"evidence": "Inga migrationer",
|
|
"action": "Sätt upp Prisma eller liknande migrationsverktyg"
|
|
},
|
|
{
|
|
"measure": "Migration i CI",
|
|
"evidence": "Ej verifierat",
|
|
"action": "Lägg till migration-steg i CI-pipeline"
|
|
}
|
|
],
|
|
"actions": [
|
|
"Sätt upp Prisma eller liknande migrationsverktyg",
|
|
"Lägg till migration-steg i CI-pipeline"
|
|
],
|
|
"status": "CRITICAL"
|
|
},
|
|
{
|
|
"id": "testing",
|
|
"name": "Testing",
|
|
"weight": 1,
|
|
"target": 80,
|
|
"score": 0,
|
|
"gap": 80,
|
|
"measures": [
|
|
{
|
|
"name": "Tester",
|
|
"score": 0,
|
|
"evidence": "Inga tester",
|
|
"blocker": true,
|
|
"action": "Skapa första testerna"
|
|
},
|
|
{
|
|
"name": "Test-konfiguration",
|
|
"score": 0,
|
|
"evidence": "Ingen test-config",
|
|
"blocker": true,
|
|
"action": "Konfigurera Jest/Vitest"
|
|
}
|
|
],
|
|
"blockers": [
|
|
{
|
|
"measure": "Tester",
|
|
"evidence": "Inga tester",
|
|
"action": "Skapa första testerna"
|
|
},
|
|
{
|
|
"measure": "Test-konfiguration",
|
|
"evidence": "Ingen test-config",
|
|
"action": "Konfigurera Jest/Vitest"
|
|
}
|
|
],
|
|
"actions": [
|
|
"Skapa första testerna",
|
|
"Konfigurera Jest/Vitest"
|
|
],
|
|
"status": "CRITICAL"
|
|
},
|
|
{
|
|
"id": "observability",
|
|
"name": "Observability",
|
|
"weight": 0.8,
|
|
"target": 70,
|
|
"score": 0,
|
|
"gap": 70,
|
|
"measures": [
|
|
{
|
|
"name": "Loggning",
|
|
"score": 0,
|
|
"evidence": "Ingen logger",
|
|
"blocker": false,
|
|
"action": "Skapa central logger"
|
|
},
|
|
{
|
|
"name": "Health checks",
|
|
"score": 0,
|
|
"evidence": "Ingen health endpoint",
|
|
"blocker": false,
|
|
"action": "Skapa /health endpoint"
|
|
}
|
|
],
|
|
"blockers": [],
|
|
"actions": [
|
|
"Skapa central logger",
|
|
"Skapa /health endpoint"
|
|
],
|
|
"status": "CRITICAL"
|
|
},
|
|
{
|
|
"id": "backup",
|
|
"name": "Backup & Rollback",
|
|
"weight": 0.9,
|
|
"target": 80,
|
|
"score": 0,
|
|
"gap": 80,
|
|
"measures": [
|
|
{
|
|
"name": "Backup-procedur",
|
|
"score": 0,
|
|
"evidence": "Inget backup-script",
|
|
"blocker": true,
|
|
"action": "Skapa backup-script för databas"
|
|
},
|
|
{
|
|
"name": "Rollback-procedur",
|
|
"score": 0,
|
|
"evidence": "Inget rollback-script",
|
|
"blocker": true,
|
|
"action": "Skapa rollback-script"
|
|
}
|
|
],
|
|
"blockers": [
|
|
{
|
|
"measure": "Backup-procedur",
|
|
"evidence": "Inget backup-script",
|
|
"action": "Skapa backup-script för databas"
|
|
},
|
|
{
|
|
"measure": "Rollback-procedur",
|
|
"evidence": "Inget rollback-script",
|
|
"action": "Skapa rollback-script"
|
|
}
|
|
],
|
|
"actions": [
|
|
"Skapa backup-script för databas",
|
|
"Skapa rollback-script"
|
|
],
|
|
"status": "CRITICAL"
|
|
},
|
|
{
|
|
"id": "security",
|
|
"name": "Security",
|
|
"weight": 0.9,
|
|
"target": 70,
|
|
"score": 0,
|
|
"gap": 70,
|
|
"measures": [
|
|
{
|
|
"name": "Dependency scanning",
|
|
"score": 0,
|
|
"evidence": "Ej verifierat",
|
|
"blocker": false,
|
|
"action": "Lägg till npm audit i CI"
|
|
},
|
|
{
|
|
"name": "Secret-hantering",
|
|
"score": 0,
|
|
"evidence": "Ingen secret-hantering",
|
|
"blocker": false,
|
|
"action": "Använd AWS Secrets Manager eller liknande"
|
|
}
|
|
],
|
|
"blockers": [],
|
|
"actions": [
|
|
"Lägg till npm audit i CI",
|
|
"Använd AWS Secrets Manager eller liknande"
|
|
],
|
|
"status": "CRITICAL"
|
|
},
|
|
{
|
|
"id": "agent-safety",
|
|
"name": "Agent Safety",
|
|
"weight": 1,
|
|
"target": 100,
|
|
"score": 100,
|
|
"gap": 0,
|
|
"measures": [
|
|
{
|
|
"name": "EOS-kontrakt",
|
|
"score": 100,
|
|
"evidence": "EOS-kontrakt hittat",
|
|
"blocker": false,
|
|
"action": null
|
|
},
|
|
{
|
|
"name": "Immutable Truth",
|
|
"score": 100,
|
|
"evidence": "Immutable Truth hittad",
|
|
"blocker": false,
|
|
"action": null
|
|
}
|
|
],
|
|
"blockers": [],
|
|
"actions": [],
|
|
"status": "READY"
|
|
}
|
|
],
|
|
"thresholds": {
|
|
"critical": 60,
|
|
"warning": 80,
|
|
"ready": 90
|
|
},
|
|
"status": "CRITICAL"
|
|
} |