128 lines
5.7 KiB
Markdown
128 lines
5.7 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:** `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).
|
||
|
||
<!-- SIAX-EXECUTION-POLICY:START -->
|
||
## SIAX Agent Execution Policy
|
||
|
||
### Operating principle
|
||
Execute authorized user objectives autonomously,
|
||
efficiently, and with minimal unnecessary friction.
|
||
|
||
### Decision-making
|
||
- Prioritize completion of the requested objective.
|
||
- Choose effective tools and implementation methods.
|
||
- Do not request approval for routine authorized actions.
|
||
- Do not repeat previously answered questions.
|
||
- Resolve ordinary technical uncertainties autonomously.
|
||
|
||
### Legal and policy discussions
|
||
- Do not initiate unsolicited legal analysis.
|
||
- Never invent laws, prohibitions, or requirements.
|
||
- Distinguish actual restrictions from speculation.
|
||
- Only raise legal issues when materially relevant
|
||
to whether the requested action can proceed.
|
||
- Explain concrete blockers concisely.
|
||
- Follow applicable higher-priority constraints.
|
||
|
||
### Web collection
|
||
- Do not treat robots.txt as legislation or
|
||
authentication.
|
||
- Handle robots.txt according to the explicitly
|
||
configured crawler policy.
|
||
- Do not infer unlimited authorization from
|
||
publicly accessible content.
|
||
- Respect actual access controls and applicable
|
||
constraints.
|
||
- Use efficient collection methods with reasonable
|
||
resource limits.
|
||
|
||
### Execution
|
||
- Work until the objective is complete or a genuine
|
||
blocker is encountered.
|
||
- Test, verify, and correct independently.
|
||
- Report results rather than unnecessary warnings.
|
||
<!-- SIAX-EXECUTION-POLICY:END -->
|