Files
0pt/CONTRIBUTING.md
T

58 lines
2.7 KiB
Markdown

# Contributing — 0pt
> 0pt (SIAX Cloud Data OS) är proprietär mjukvara från SIAX Technology AB.
> Interna bidrag följer konventionerna nedan. Externt: kontakta
> `security@siax.io` / `simon@siax.io` innan bidrag.
## Repo-ryggrad
- **Kategori:** platform (K1) · **Subkategori:** data-os · **SSOT:**
[`siax.repo.json`](siax.repo.json) + [`siax.config.json`](siax.config.json)
- **Kontrakt:** [`contracts/openapi.yaml`](contracts/openapi.yaml) — alla
API-ändringar börjar här (SSOT), sedan routehandler.
- **Dokumentation:** `CLAUDE.md` först, sedan `docs/` och `docs/compliance/`.
Om kod och docs avviker: skriv avvikelsen, fabricera inte.
## Hårda regler (bryt aldrig)
1. **AR-1** — radera aldrig befintlig funktionalitet/endpoint. Bygg färdigt.
Undantag: `services/scrapers/*` + `services/infra/docker-compose.data-stack.yml`
är **medvetet behållna per användarbeslut** — rör dem inte.
2. **AR-2** — rör aldrig frysta kundrepon (contentroom, v0-datahub, prt-*, …).
3. **AR-4** — inga betald-SaaS-beroenden; inga Vercel/GCP/Azure/Google Fonts/
`next/font/google`; Cloudflare endast inom pågående migrering.
4. **AR-5** — bevis, inte påståenden. Märk VERIFIERAT/ANTAGANDE/EJ VERIFIERAT.
5. **AR-6** — aldrig hemligheter i repo (Infisical). Inga `NEXT_PUBLIC_*`-hemligheter.
6. **AR-8** — beroenden pekar bara nedåt (K1; aldrig kundrepon).
7. Tenant-id bunden till sessionen — aldrig litat på från request-body.
## Arbetsflöde
1. Branch från `main`: `git switch -c fix/my-change` (conventional prefix).
2. `pnpm install --frozen-lockfile` (eller `--no-frozen-lockfile` om lockfilen
medvetet uppdateras).
3. Grindar innan push:
```bash
pnpm run typecheck # BLOCKERANDE (src/ + tests/)
pnpm run test # BLOCKERANDE (vitest)
pnpm run lint # rådgivande (legacy-noise finns)
pnpm run build # BLOCKERANDE (next build)
```
4. Conventional Commits: `feat:` / `fix:` / `docs:` / `chore:` / `ci:` / `refactor:`.
5. **`.gitea/workflows/**` och `.gitignore` är skyddade på `main`** — ändringar
där går via PR (push direkt avvisas av pre-receive-hook).
6. Öppna PR mot `main`; CI måste vara grön innan merge.
7. Commit-meddelanden på engelska; UI-copy på svenska.
## Testkonventioner
- Enheter + capability-tester: `tests/{auth,p0,validation}/`.
- Real-infra-tester (`*.realinfra.test.ts`) skippar ärligt när ST0RE/N0D inte nås.
- Lägg aldrig till en test som fabricerar påståenden om kod som inte finns.
## Merge & release
- Merge via PR till `main` (skyddad). CD: `.gitea/workflows/cd.yml` triggar
Coolify-redeploy — fails medvetet tills en Coolify-app provisionerats och
`COOLIFY_APP_ID`/`COOLIFY_TOKEN` satts.