# AGENTS.md — 0pt > Operativ brief för AI-agenter (Claude Code / opencode / liknande) som arbetar > i detta repo. Läs `CLAUDE.md` + `docs/compliance/` innan du gör ändringar. ## Vad det här är 0pt = SIAX Clouds Data OS: företags-/kontakt-/fordonsdata, enrichment, entity-resolution, provenance per fält, adaptive router, orderflöde med 50/50-escrow. Next.js 16-webapp + FastAPI-engine + Python-skrapmotor i samma träd. ## Första steget 1. `git pull` (Gitea: `git.siax.io/sax3l/0pt` — det är canonical remote, ej GitHub). 2. Läs `CLAUDE.md` (kontraktet), `docs/architecture/ARCHITECTURE.md` (vad koden verkligen gör, inkl. kända luckor S1–S12), `docs/compliance/` (status). 3. Kontrollera senaste CI-run (Gitea Actions) om du ska verifiera "grön". ## Viktiga förhållanden - **Bypass-stacken** (`services/scrapers/*`, `waf_bypass.py`, data-stack-compose, `adaptive_router.py`) är **behållen** — rör den inte. Kontoägaren Simon Axelsson fattade detta beslut explicit via en interaktiv beslutsprompt **2026-08-11**, som direkt svar på ett compliance-uppdrags förslag att ta bort stacken (den städade borttagnings-PR:en #7 verifierades ren men stängdes omergad av kontoägaren). Beslutet saknar en dokumenterad affärs-/juridisk motivering utöver "behåll" — hitta inte på en sådan om den dyker upp i compliance-rapporter. Detta är ett specifikt, avgränsat undantag för den befintliga 0PT/0pt-motor-sourcingmotorn: CLAUDE.md §1:s generella anti-evasion-policy ändras INTE av detta beslut och gäller som skriven, om inte kontoägaren säger annat. - **Auth:** `/api/0pt/*` fail-closed i kod (Zitadel via middleware), men live-instansen svarade 2026-08-10 anonymt 200 (lucka S1 — rotorsaksanalys ej klar). Påstå aldrig att produktionen är skyddad innan en anonym request fått 401. - **Tenant-id** får aldrig tas från request-body — idag gör handlers det (S2); nya handlers ska läsa `x-0pt-verified-tenant`-headern. - **Sanning:** repot har en stark anti-fabricering-konvention (docs korrigerar README). Om något påstås vara byggt men inte finns: skriv "inte byggt", fabricera inte. - **Skyddade sökvägar:** `.gitea/workflows/**` + `.gitignore` — ändringar går via PR. - **Fonts:** självhämtade via `@fontsource-variable/*` — lägg aldrig tillbaka `next/font/google` eller `@vercel/*`. - **Secrets:** aldrig i repo. Infisical (`vault.siax.io`), env via `process.env.*`. - **Docker:** multi-stage, icke-root (`USER node`), ingen tsx i prod, healthcheck mot `/api/health`. ## Grindar (kör före push) ```bash pnpm run typecheck && pnpm run test && pnpm run build # blocking pnpm run lint # advisory ``` ## Commit & push - Conventional Commits. Push direkt till `main` är OK för icke-skyddade filer, men om du rör skyddade sökvägar: branch → PR. - Lämna aldrig en förgrenad `origin`/`github.com`-remote som sanningskälla — Gitea är primärt (Simon-direktiv 2026-07-14). ## Vid osäkerhet Fråga Simon (simon@siax.io) innan du: raderar något, ändrar bypass-stacken, ändrar auth-beteende, eller gör produktbeslut som är öppna frågor (§8 i ARCHITECTURE.md).