58 lines
2.7 KiB
Markdown
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.
|