4.9 KiB
4.9 KiB
BACKLOG — 0pt (FAS 5)
P0 = säkerhetskritiskt · P1 = hög · P2 = medel · P3 = låg · P4 = hygien · P5 = struktur · P6 = senare. Alla luckor hänvisar till docs/architecture/ARCHITECTURE.md §7 (S1–S12) och GOLDEN-STANDARD-REPORT. [BYPASS] = berört av det medvetna användarbeslutet (rör ej kod).
P0 — säkerhet, görs först (kräver produktbeslut + egna PR:er)
| ID | Lucka | Åtgärd | Kräver |
|---|---|---|---|
| P0-1 | S1 — middleware körs inte i prod (live: 200 anonymt) | Rotorsaksanalys (Next 16 + src/-träd + Vercel build-output), sedan verifierad 401 anonymt | Prod-deploy + test mot live |
| P0-2 | S2 — tenant tas ur body/query | Alla /api/0pt/*-handlers läser x-0pt-verified-tenant (middleware-header) |
Fungerande middleware (P0-1) |
| P0-3 | S3 — hela icke-/api/0pt-API:t utan auth | Auth på orders/payments/admin/subscriptions/uploads/estimates/screen/ai | Auth-design (Zitadel-session eller bearer) |
| P0-4 | S4 — escrow-release utan identitet | POST /payments/{id}/release kräver verifierad ägare + betalningsbekräftelse före delivered |
P0-3 |
| P0-5 | S5 — CL0UD fail-open | fail-closed + assertPolicyConfigSafe (mönster från auth) + NODE_ENV-spärr |
— |
| P0-6 | S8 — FastAPI-engine utan auth | X-Internal-Token-verifiering (constant-time) på alla engine-endpoints |
Koordinering med deploy |
| P0-7 | S10 — connection_config ur body (SSRF-primitiv) | Allow-list av hosts/protokoll + tenant-scoped källdefinitioner; aldrig godtycklig URL | — |
| P0-8 | C11 — middleware typkontrolleras ej | Inkludera middleware.ts i tsconfig.check.json; eslint blockerande | — |
P1 — hög
| ID | Lucka | Åtgärd |
|---|---|---|
| P1-1 | S6 — AUD0 no-op utan URL | Wire AUD0_URL från Infisical; verifiera event-emission live |
| P1-2 | S7 — db-grant påstår kryptering | Implementera AES-GCM med GRANT_ENC_KEY, read-only-validering, lagring + audit — eller ta bort påståendet |
| P1-3 | S12 — svag session | exp-kontroll, rotation, användar-binding |
| P1-4 | S9 [BYPASS] | Produktbeslut: behåll/bygg-om bypass-stacken (GPL-fläckar + juridiskt läge). Teknisk radering är INTE planerad — beslut om framtida läge fattas av Simon |
| P1-5 | D4 — Coolify-app ej provisionerad | Provisionera app i cloud.siax.io, fyll COOLIFY_APP_ID + COOLIFY_TOKEN (Infisical) |
| P1-6 | C8 — Infisical ej inkopplat | Infisical-projekt 0pt + env-mapping; Vercel-env avvecklas i takt med cutover |
P2 — medel
| ID | Lucka | Åtgärd |
|---|---|---|
| P2-1 | D5 — ingen backup/restore | När DB provisioneras: pg_dump-schema + offsite (jfr fleet-blockerare), restore-test i kalender |
| P2-2 | C13 — retention/deletion-after-job | TTL-jobb + DELETE-väg + audit |
| P2-3 | C10→P0-7-efterföljd | Källquery-vägar tenant-scopade |
| P2-4 | D6 — observabilitet | Strukturerad loggning + correlation-id-propagering; OTel-agent senare |
P3 — låg
| ID | Lucka | Åtgärd |
|---|---|---|
| P3-1 | A4/A5-efterföljd | Registera 0pt-capabilities i CL0UD capability-registry (API/CLI/MCP/SDK) från contracts/openapi.yaml |
| P3-2 | S2-efterföljd | Tenantmodell bekräftas mot CL0UD-tenantregister (1:1 Zitadel-org?) |
| P3-3 | C2-efterföljd | X-Tenant-Id-headerkontroll vs body → enhetlig policy |
| P3-4 | Engine-DB | asyncpg inkopplad; Postgres som riktig store för ordrar/jobb (idag in-memory) |
P4 — hygien (kan göras i en session utan produktbeslut)
| ID | Åtgärd |
|---|---|
| P4-1 | duckdb saknas i services/scrapers/requirements.txt trots import — lås versionen |
| P4-2 | package.json namn "my-v0-project" → @siax/0pt (spårbarhet) |
| P4-3 | sql/002/003 refereras men saknas — antingen skapa eller korrigera referenserna |
| P4-4 | Committed __pycache__/*.pyc + services/scrapers/output/*.json (skrapdata) — flytta ut ur git (ej radering av funktionalitet) |
| P4-5 | .github/workflows/ci.yml (legacy GitHub-mirror) — beslut om GitHub-avveckling; behålls tills dess (AR-1) |
| P4-6 | In-memory-state-fix: Map per instans → delad store (förutsätter P3-4) |
P5 — struktur
| ID | Åtgärd |
|---|---|
| P5-1 | runbook/SLO-uppföljning i drift (oncall-rotation) |
| P5-2 | Docs: konsumentled (Protosell/VehIQ-integrationer) verifieras och dokumenteras |
P6 — senare
| ID | Åtgärd |
|---|---|
| P6-1 | Designsystem-konvergens mot @siax/ui (öppen fråga §8.8) |
| P6-2 | NER (spaCy), OCR (self-hosted på N0D), kvalitetslager (docs/P0_DATASET_QUALITY_FLOW.md) |
| P6-3 | OpenSanctions-avtal: verifiera kommersiella villkor före produktionsvolym |
| P6-4 | AI-parsning → INF0-gateway (consumes INF0) |
Bypass-undantag (formellt)
Följande backlog-poster berör den medvetet behållna bypass-stacken och ska inte
åtgärdas som "radera koden": P1-4. All övrig backlog rör inte
services/scrapers/*, services/infra/docker-compose.data-stack.yml eller
adaptive_router.py (AR-1-undantag).