From 45b2d65d428d4c9f621fd7dd47729e545849dbf0 Mon Sep 17 00:00:00 2001 From: Simon Axelsson Date: Mon, 14 Sep 2026 22:59:02 +0200 Subject: [PATCH 1/2] =?UTF-8?q?feat(toolchain):=200pt-pilot=20=E2=80=94=20?= =?UTF-8?q?mise=20task-kontrakt=20(node=2022.13.0/pnpm=209.15.9)=20+=20lef?= =?UTF-8?q?thook=20+=20template-pin=20+=20README/AGENTS=20(W3,=20pilot=202?= =?UTF-8?q?/3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .siax/template-pin.json | 15 ++++++++++++++ AGENTS.md | 16 +++++++++++++++ README.md | 15 +++++++++++++- lefthook.yml | 17 ++++++++++++++++ mise.toml | 44 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 .siax/template-pin.json create mode 100644 lefthook.yml create mode 100644 mise.toml diff --git a/.siax/template-pin.json b/.siax/template-pin.json new file mode 100644 index 0000000..3b675c0 --- /dev/null +++ b/.siax/template-pin.json @@ -0,0 +1,15 @@ +{ + "schemaVersion": "siax.template-pin/v1", + "repo": "0pt", + "profiles": ["base", "node", "ui", "deployable"], + "templateRepo": "sax3l/siax-templates", + "templateRef": "1feb97cd1d6da58bb4b420d860109285c47c741d", + "pinnedAt": "2026-09-14T23:10:00Z", + "pins": { + "mise": "task-entry i mise.toml (repot rot)", + "node": "22.13.0", + "pnpm": "9.15.9", + "lefthook": "1.x (aktiveras med npx lefthook install)" + }, + "notes": "0pt = pnpm-repo (pnpm-lock.yaml v9). Python-tjansterna (services/api, services/scrapers) kor requirements.txt - uv-adoption ar DEFERRED tills lock skapats i separat migrering. Makefile = legacy-alias (thin wrappers), städas i separat PR med deleteBy." +} diff --git a/AGENTS.md b/AGENTS.md index 3affc44..27ea278 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -42,6 +42,22 @@ entity-resolution, provenance per fält, adaptive router, orderflöde med - **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 diff --git a/README.md b/README.md index 86d318c..f4356eb 100644 --- a/README.md +++ b/README.md @@ -44,8 +44,21 @@ scroll-reveal motion. **No photography** — imagery is rendered data (`DataArti shows a provenance square (`ProvenanceBadge`). Full spec: [docs/05-design-system.md](docs/05-design-system.md). ## Run locally + +**SIAX toolchain-kontrakt (mise):** + +```bash +mise install # pinnar node 22.13.0 + pnpm 9.15.9 (se mise.toml [tools]) +mise run setup # pnpm install --frozen-lockfile +mise run check # typecheck + lint (snabbt, deterministiskt) +mise run verify # vitest + next build (full svit) +mise run build # deploybar artefakt +``` + +mise är task-entrypoint (`mise.toml`); gate-logiken bor kvar i +`.gitea/workflows/` och package.json — pinning: `.siax/template-pin.json`. + ```bash -pnpm install pnpm dev # Next.js on http://localhost:3000 # data engine (separate, optional) diff --git a/lefthook.yml b/lefthook.yml new file mode 100644 index 0000000..1cc8ee6 --- /dev/null +++ b/lefthook.yml @@ -0,0 +1,17 @@ +# SIAX toolchain-kontrakt v0.1.0 — Lefthook för 0pt. +# Aktiveras med: npx lefthook install (eller mise-buren lefthook). +# Hook-skip lokalt ersätter aldrig CI:s required checks. + +pre-commit: + parallel: true + commands: + typecheck: + run: pnpm run typecheck + lint: + run: pnpm run lint + +pre-push: + parallel: false + commands: + verify: + run: pnpm run test diff --git a/mise.toml b/mise.toml new file mode 100644 index 0000000..7c2842e --- /dev/null +++ b/mise.toml @@ -0,0 +1,44 @@ +# SIAX toolchain-kontrakt v0.1.0 (sax3l/siax-templates @ SHA-pinad i +# .siax/template-pin.json) — 0pt-instans. +# mise är task-ENTRY; gate-logiken bor i .gitea/workflows/ (repots egen CI). +# pnpm-versionen följer package.json "packageManager" (pnpm@9.15.9, +# pnpm-lock.yaml lockfileVersion 9.0). Makefile är legacy-alias +# ("thin wrappers", egen header-kommentar) — mise är den kanoniska entryn; +# Makefile städas bort i separat PR med deleteBy enligt template-pin-alias. + +[tools] +node = "22.13.0" +pnpm = "9.15.9" + +[tasks.setup] +description = "pnpm install (frozen lockfile)" +run = "pnpm install --frozen-lockfile" + +[tasks.check] +description = "Snabba deterministiska kontroller: typecheck + lint (spegler CI)" +run = ''' +set -eu +pnpm run typecheck +pnpm run lint +''' + +[tasks.verify] +description = "Full svit: vitest + next build" +run = ''' +set -eu +pnpm run test +pnpm run build +''' + +[tasks.build] +description = "next build (deploybar artefakt)" +run = "pnpm run build" + +[tasks.release] +description = "Verifiera innan release; deployment ägs av cd.yml (bygg en gång, promotra samma digest)" +run = ''' +set -eu +pnpm run test +pnpm run build +echo "Release-vägen: .gitea/workflows/cd.yml (staging -> live gates -> prod). Byt aldrig förbi approval." >&2 +''' -- 2.54.0 From 61b593b4c0c9bfb8d9ab98c0cc159160f05aee7c Mon Sep 17 00:00:00 2001 From: Simon Axelsson Date: Mon, 14 Sep 2026 23:01:15 +0200 Subject: [PATCH 2/2] =?UTF-8?q?fix(toolchain):=20check=20=3D=20typecheck?= =?UTF-8?q?=20(lint=20ar=20CI-advisory:=20legacy-noise)=20=E2=80=94=20lint?= =?UTF-8?q?=20som=20separat=20task,=20dokumenterat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mise.toml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mise.toml b/mise.toml index 7c2842e..d536337 100644 --- a/mise.toml +++ b/mise.toml @@ -15,13 +15,16 @@ description = "pnpm install (frozen lockfile)" run = "pnpm install --frozen-lockfile" [tasks.check] -description = "Snabba deterministiska kontroller: typecheck + lint (spegler CI)" +description = "Snabba deterministiska kontroller: typecheck (lint ar ADVISORY i CI: legacy-trad har pre-existing nois - separat task)" run = ''' set -eu pnpm run typecheck -pnpm run lint ''' +[tasks.lint] +description = "ESLint (advisory: continue-on-error i CI — legacy-noise; stads-PR kravs innan den kan gateras)" +run = "pnpm run lint" + [tasks.verify] description = "Full svit: vitest + next build" run = ''' -- 2.54.0