CI (SIAX Cloud) / security (push) Successful in 24s
Security Scan (SIAX Cloud) / security (push) Successful in 22s
CI (SIAX Cloud) / quality (push) Successful in 39s
CI (SIAX Cloud) / security (pull_request) Successful in 20s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 20s
CI (SIAX Cloud) / quality (pull_request) Successful in 38s
AGENTS.md and SECURITY.md previously attributed keeping the WAF-bypass/ Tor/FlareSolverr/curl_cffi/cloudscraper stack to an unattributed, unverified "medvetet användarbeslut" (deliberate user decision) with no stated author or date -- flagged by a prior audit as unverified provenance. Replace with an accurate, dated statement: the account owner (Simon Axelsson) was asked directly via an interactive decision prompt on 2026-08-11, in direct response to a compliance audit's removal proposal (the surgically-clean removal PR #7, verified 128/128 tests, was closed unmerged), and explicitly chose to keep the code. No business or legal rationale beyond "keep it" was given or is invented here. This is a narrow, scoped exception for the existing 0PT/0pt-motor sourcing engine. CLAUDE.md §1's general anti-evasion policy text is untouched and remains in force as written unless/until the account owner says otherwise. No code changes -- documentation only. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
64 lines
3.2 KiB
Markdown
64 lines
3.2 KiB
Markdown
# 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).
|