Files
0pt/docs/compliance/BACKLOG.md
T

82 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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).