Files
0pt/AGENTS.md
T
adminandClaude Sonnet 5 754dcc201f
CI (SIAX Cloud) / integration (push) Has been skipped
masterplan-lock / check (push) Successful in 4s
CI (SIAX Cloud) / security (push) Successful in 16s
Security Scan (SIAX Cloud) / security (push) Successful in 17s
CI (SIAX Cloud) / quality (push) Successful in 36s
masterplan-lock / check (pull_request) Successful in 4s
CI (SIAX Cloud) / security (pull_request) Successful in 14s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 23s
CI (SIAX Cloud) / quality (pull_request) Successful in 39s
CI (SIAX Cloud) / integration (pull_request) Successful in 51s
docs: correct AGENTS.md branch-protection prose to match live config
Rewrite the branch-protection / protected-paths section of AGENTS.md to
state the verified-live Gitea branch_protections values instead of stale
prose. No behavior change.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-20 23:55:46 +02:00

86 lines
4.3 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.
# 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:** `PLAN/**` + `.gitea/workflows/**` + `.gitignore` —
ändringar går via PR. (Verifierat live 2026-09-20 via
`GET /repos/sax3l/0pt/branch_protections`.)
- **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`.
## Toolchain-ägande (SIAX selected toolchain, 2026-09-14)
- `mise.toml` = task-entry (`setup/check/verify/build/release`). Ändra inte
betydelsen av dessa fem tasks. pnpm@9.15.9 följer packageManager.
- `lefthook.yml` = git hooks (pre-commit: typecheck+lint, pre-push: test).
Aktiveras med `npx lefthook install`.
- `Makefile` är legacy-alias ("thin wrappers", se dess header) — nya kommandon
läggs ALDRIG dit; mise är kanonisk entry. Makefile städas bort i separat PR
med deleteBy-registering.
- Pinning mot `sax3l/siax-templates`: `.siax/template-pin.json`
(`siax.template-pin/v1`). Förbjudna duplicerade verktyg: just, Task, Nx,
Cypress (Playwright gäller), OpenProject/Leantime/AppFlowy (Plane gäller),
Keycloak (Zitadel/ACT0 gäller).
- Python-tjänsterna (services/api, services/scrapers) kör requirements.txt;
uv-adoption är DEFERRED till en separat lås-migrering.
## 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 AVSTÄNGT
(`enable_push: false`, verifierat live 2026-09-20 via
`GET /repos/sax3l/0pt/branch_protections`) — endast whitelistade
identiteter (`siax-bot`, `siax-ci`, teamet `ci-approvers`) kan pusha
över huvud taget, oavsett vilken fil det gäller. Alla andra ändringar:
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).