feat(toolchain): 0pt-pilot — mise task-kontrakt (node/pnpm pinat) + lefthook + template-pin + dokumentation (W3, pilot 2/3) #55
@@ -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."
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -0,0 +1,47 @@
|
||||
# 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 ar ADVISORY i CI: legacy-trad har pre-existing nois - separat task)"
|
||||
run = '''
|
||||
set -eu
|
||||
pnpm run typecheck
|
||||
'''
|
||||
|
||||
[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 = '''
|
||||
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
|
||||
'''
|
||||
Reference in New Issue
Block a user