Files
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

4.3 KiB
Raw Permalink Blame History

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)

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).