chore: adopt SIAX Golden Standard docs and configuration
siax-scaffold genererade saknade standardartefakter (arkitektur, säkerhet, ändringslogg, runbooks, CI, devcontainer, licens m.m.) ur repots faktiska filer. DOC-07 lämnas avsiktligt röd till en verklig restore bevisats.
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "0pt",
|
||||
"image": "mcr.microsoft.com/devcontainers/base:ubuntu"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
# Miljövariabler för 0pt
|
||||
# Genererad 2026-11-10 ur källkodens läsningar (endast NAMN — inga värden).
|
||||
# Fyll i lokalt i .env (som är git-ignorerad). Riktiga hemligheter ligger i
|
||||
# Infisical och injiceras vid körning; kopiera aldrig in dem här.
|
||||
|
||||
# Inga miljövariabler detekterades i källkoden vid genereringen.
|
||||
# Om repot inför konfiguration via miljö, lägg till namnen här.
|
||||
@@ -0,0 +1,11 @@
|
||||
# CI-14 — CODEOWNERS bor i .gitea/, aldrig i .github/ (SEC-25).
|
||||
# Granskning krävs särskilt för kontrakt, deploy och migrationer.
|
||||
|
||||
* @sax3l
|
||||
/contracts/ @sax3l
|
||||
/deploy/ @sax3l
|
||||
/.gitea/ @sax3l
|
||||
/siax.repo.json @sax3l
|
||||
/siax.config.json @sax3l
|
||||
# TODO: lägg till migrationskatalogen när den finns, t.ex.
|
||||
# /packages/db/migrations/ @sax3l
|
||||
@@ -0,0 +1,22 @@
|
||||
name: CI
|
||||
# Genererad av siax-scaffold (CI-01) för stack: none.
|
||||
# Grinden körs på push och pull request. Anpassa stegen när repot får egna
|
||||
# test-/lintkommandon — scaffolden kör bara det som faktiskt finns.
|
||||
on:
|
||||
push: { branches: [main] }
|
||||
pull_request: {}
|
||||
permissions: { contents: read }
|
||||
concurrency:
|
||||
group: ci-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
- name: Kontrollera att repot är konsekvent
|
||||
run: |
|
||||
test -f README.md
|
||||
echo "Ingen körtid upptäckt — ingen build/test-stege genererad."
|
||||
@@ -0,0 +1,53 @@
|
||||
name: security
|
||||
# CI-10 — gitleaks, Semgrep, OSV-Scanner, Trivy. Körs på PR, på push mot main
|
||||
# och nattligt. Scannrarna körs som containrar för att inte kräva att runnern
|
||||
# har verktygen installerade (samma mönster som siax-standards egen security.yml).
|
||||
#
|
||||
# FÄLLA (verifierad i siax-standards egen CI-utredning): ett stegnamn som
|
||||
# innehåller ": " (kolon + mellanslag) får Giteas YAML-parser att TYST kasta
|
||||
# bort hela workflowen — den dispatcheras aldrig och syns inte som fel.
|
||||
# Håll därför alla `name:`-rader på steg i ren ASCII utan kolon-mellanslag.
|
||||
#
|
||||
# TODO (CI-10, ej wired av scaffolden): licenskontroll kräver ett policybeslut
|
||||
# om vilka licenser som är tillåtna — lägg till steget när listan finns.
|
||||
on:
|
||||
push: { branches: [main] }
|
||||
pull_request: {}
|
||||
schedule:
|
||||
- cron: "17 2 * * *"
|
||||
permissions: { contents: read }
|
||||
concurrency:
|
||||
group: security-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
scan:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with: { fetch-depth: 0 }
|
||||
|
||||
# gitleaks over worktree and history (REPO-15, SEC-01)
|
||||
- name: gitleaks secret scan
|
||||
run: |
|
||||
docker run --rm -v "$PWD:/repo" -w /repo \
|
||||
zricethezav/gitleaks:latest detect --source /repo --no-banner --exit-code 1
|
||||
|
||||
# Trivy filsystem, blockerar på HIGH och CRITICAL (SUP-*)
|
||||
- name: Trivy filesystem scan
|
||||
run: |
|
||||
docker run --rm -v "$PWD:/repo" -w /repo \
|
||||
aquasec/trivy:latest fs --scanners vuln,secret,misconfig \
|
||||
--severity HIGH,CRITICAL --exit-code 1 --no-progress /repo
|
||||
|
||||
# Kända sårbarheter i lockfilen
|
||||
- name: OSV Scanner
|
||||
run: |
|
||||
docker run --rm -v "$PWD:/repo" -w /repo \
|
||||
ghcr.io/google/osv-scanner:latest scan source --recursive /repo
|
||||
|
||||
# Statisk kodanalys, felallvarlighet bryter bygget
|
||||
- name: Semgrep code scan
|
||||
run: |
|
||||
docker run --rm -v "$PWD:/src" -w /src \
|
||||
semgrep/semgrep:latest semgrep scan --config=p/ci --error --quiet
|
||||
@@ -0,0 +1,38 @@
|
||||
# AGENTS.md — 0PT
|
||||
|
||||
**Vad repot gör:** TODO: en mening om repots syfte. Ska stämma ordagrant med
|
||||
`README.md` och `docs/architecture/ARCHITECTURE.md` §1 (DOC-19).
|
||||
|
||||
**Starta/testa:**
|
||||
|
||||
```bash
|
||||
TODO: kommandot som startar repot lokalt (DX-01)
|
||||
TODO: kommandot som kör testsviten (TEST-01)
|
||||
TODO: byggkommandot
|
||||
```
|
||||
|
||||
**Kodkonventioner:** TODO: språk, ramverk, formatterare, namngivning. Håll
|
||||
kontroll-ID:n (REPO-01 …) exakta som i
|
||||
`siax-standard/standard/SIAX-F0KUSREPO-PROMPT-v2.0.md`.
|
||||
|
||||
**Ändras ALDRIG:**
|
||||
|
||||
- `contracts/` — kontraktet är källan till sanning (API-01). Kod genereras
|
||||
från kontraktet, aldrig tvärtom.
|
||||
- Migrationer som redan körts i drift (DATA-*) — lägg till en ny i stället.
|
||||
- TODO: repospecifika frysta ytor (publika endpoints, filformat, nycklar …).
|
||||
|
||||
**Ägare:** SIAX Technology AB (@sax3l).
|
||||
**Kontrakt:** `contracts/openapi.yaml` (API-01). TODO: bekräfta att kontraktet
|
||||
beskriver hela HTTP-ytan (API-02) — scaffolden kan inte veta det.
|
||||
|
||||
**Självdiagnos (AGENT-04):**
|
||||
|
||||
```bash
|
||||
node <sökväg-till-siax-standard>/packages/doctor/src/doctor.mjs --repo . --fail-on=block
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
_Genererad av `siax-scaffold` (siax-standard). Varje `TODO:` i filen måste
|
||||
fyllas i av en människa. Samlad lista: `docs/compliance/SCAFFOLD-TODO.md`._
|
||||
@@ -0,0 +1,86 @@
|
||||
# Ändringslogg — 0pt
|
||||
|
||||
Alla väsentliga ändringar dokumenteras här. Filen är genererad ur repots
|
||||
git-historik av `siax-scaffold` (DOC-11) och ska uppdateras när historiken
|
||||
ändras; den ska aldrig handredigeras med påståenden som inte finns i git.
|
||||
|
||||
Formatet följer [Keep a Changelog](https://keepachangelog.com/sv/1.1.0/).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
Nästa version. Nya poster läggs överst när de mergas.
|
||||
|
||||
## 2026-11-10
|
||||
|
||||
- fix(security): smala gitleaks-fingerprints för verifierade falska positiver (`39fc5e3`)
|
||||
- docs(production): standardiserad produktionsberedskap och gap-analys (`a418933`)
|
||||
- docs(status): spegla STATUS.md i docs/ för produktionsaudit (`fb072d4`)
|
||||
- fix(signing): cosign-pubkey + SBOM + deployment/env-poster för prod-imagen prod-925f5ca2fd (`dccdfed`)
|
||||
- chore: adopt SIAX Golden Standard docs and configuration (`2ea4062`)
|
||||
- ci: re-trigger efter serveromstart (statusuppdatering avbröts) (`54ff8a3`)
|
||||
- chore(doctor): exempt generated artifacts and mirror prose from REPO-01 (`1e79d0c`)
|
||||
- docs(policy): SIAX Agent Execution Policy i AGENTS.md + CLAUDE.md (`72d5876`)
|
||||
|
||||
## 2026-11-09
|
||||
|
||||
- docs(production): standardiserad produktionsberedskap och gap-analys (`66a7e25`)
|
||||
- chore(manifest): registrera saknade surface-poster (surfaces-fasen) (`416d00f`)
|
||||
- feat(capabilities): registrera capability-ägare med verifierat kontrakt (#529) (`d3b1964`)
|
||||
- feat(capabilities): bind operationId for API-surface capability records (`20d66ea`)
|
||||
- feat(auth): dual-accept CL0UD workload identity on the machine routes (`d40360a`)
|
||||
- fix(signing): cosign-pubkey + SBOM + deployment/env-poster för prod-imagen prod-62517aca49 (`c6a5102`)
|
||||
- fix(signing): cosign-pubkey + SBOM + deployment/env-poster för prod-imagen prod-38ae3ddf0b (`4020217`)
|
||||
- fix(signing): cosign-pubkey + SBOM + deployment/env-poster för prod-imagen prod-b1ae910d64 (`8e7c228`)
|
||||
- fix(signing): cosign-pubkey + SBOM + deployment/env-poster för prod-imagen prod-419c2d3f18 (`fab0a53`)
|
||||
- fix(signing): cosign-pubkey + SBOM + deployment/env-poster för prod-imagen prod-ebfa17028d (`32cd714`)
|
||||
|
||||
## 2026-11-08
|
||||
|
||||
- fix(signing): cosign-pubkey + SBOM + deployment/env-poster för prod-imagen prod-6b57f7cb9d (`966a36f`)
|
||||
- fix(signing): cosign-pubkey + SBOM + deployment/env-poster för prod-imagen prod-72d6d1e8d1 (`5795b35`)
|
||||
- fix(signing): cosign-pubkey + SBOM + deployment/env-poster för prod-imagen prod-5010a6853b (`a0eba85`)
|
||||
- fix(signing): cosign-pubkey + SBOM + deployment/env-poster för prod-imagen prod-f5600a25b9 (`5a56cc9`)
|
||||
- fix(signing): cosign-pubkey + SBOM + deployment/env-poster för prod-imagen prod-9aef3cd97f (`fdba72b`)
|
||||
|
||||
## 2026-11-07
|
||||
|
||||
- fix(signing): cosign-pubkey + SBOM + deployment/env-poster för prod-imagen prod-a0e701efc8 (`be6b92f`)
|
||||
- test(lint): typa idempotency-store i stället för any (blockerar quality-gaten) (`6bbbcf7`)
|
||||
- docs(identity): 0pt workload identity — målbild, integrationsdesign och blockerare (`8741169`)
|
||||
- docs(runbook): legacy-instansaudit server5 (0pt + L0RE) och disposition (`b7627a3`)
|
||||
- fix(canonical): serialisera timestamptz som RFC3339 (ISO-8601) (`afd0b4e`)
|
||||
- fix(sql): 023 grants for canonical tables to app-role 0pt_app (`4dbabd1`)
|
||||
- fix(sql): 022 canonical facts blir idempotent (DROP POLICY IF EXISTS) (`0213459`)
|
||||
- fix(auth): en (1) tenant per intern serviceprincipal — multi-tenant nekas (`1a581fd`)
|
||||
- ci: add blocking component conformance gate (`831781f`)
|
||||
- fix(auth): bind internal-service tenant authority to server config (`b97ad0b`)
|
||||
- feat(capability): descriptor-completion wave 1 (0pt) — verified openapi operationIds (`019cc23`)
|
||||
- fix(auth): internal-token requests får verifierad tenant (P0 tenant-isolering) (`849e7ae`)
|
||||
|
||||
## 2026-11-06
|
||||
|
||||
- ci(sonar): self-hosted SonarQube lives at sonar.siax.dev, not .io (`98039d3`)
|
||||
- fix(portal): reuse canonic @siax/ui FileDropzone instead of a local ad-hoc one (`4f92cdd`)
|
||||
- fix(@siax/access): restore relationships.ts that disappeared when the package split into two files (`a424cf1`)
|
||||
- feat(@siax/access): universal idempotency contract (`f77a4fe`)
|
||||
- feat(idempotency): operation-scope binding for upload identity (`6ca6e8e`)
|
||||
- chore(ui): document domain/legacy UI exceptions (`415396f`)
|
||||
|
||||
## 2026-11-05
|
||||
|
||||
- feat(0pt): canonical-fact machine route + renumber migration to 022 (#484) (`c46ebbf`)
|
||||
- feat(0pt): canonical structured observations — entities, facts, relations (#480) (`03cdb78`)
|
||||
|
||||
## 2026-11-04
|
||||
|
||||
- evidence(prod): bind source-bundle artifactId to real deployed image digest (`1163048`)
|
||||
- evidence(prod): bind source-bundle artifactId to real deployed image digest (`c7966eb`)
|
||||
- evidence(prod): bind source-bundle artifactId to real deployed image digest (`d5aea59`)
|
||||
- evidence(prod): bind source-bundle artifactId to real deployed image digest (`ce6be94`)
|
||||
- evidence(prod): real artifact-digest, running-digest and deploy-log for 13e156ec7e6b (`4c20e54`)
|
||||
- chore(runtime-evidence): sbom — estate-kampanj issue #76 (app 0pt) (`b29e484`)
|
||||
- chore(design): add design-conformance manifest (`76e3c0d`)
|
||||
|
||||
---
|
||||
|
||||
Genererad: 2026-11-10. Underlag: `git log --no-merges` (senaste 50 commits).
|
||||
@@ -0,0 +1,18 @@
|
||||
SIAX Proprietary License
|
||||
Copyright (c) 2026 SIAX Technology AB. All rights reserved.
|
||||
|
||||
SPDX-License-Identifier: LicenseRef-SIAX-Proprietary
|
||||
|
||||
This software and its source code are proprietary and confidential.
|
||||
|
||||
1. No license, express or implied, is granted except by a separate written
|
||||
agreement signed by SIAX Technology AB.
|
||||
2. Copying, modifying, distributing, sublicensing or deploying this software
|
||||
outside SIAX Technology AB's own systems requires such an agreement.
|
||||
3. Third-party components included in or fetched by this repository remain
|
||||
under their own licenses; see the dependency lockfile and NOTICE files.
|
||||
4. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
|
||||
Questions about licensing: legal@siax.io
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
# Säkerhetspolicy — 0pt
|
||||
|
||||
## Rapportera en sårbarhet
|
||||
|
||||
Mejla **security@siax.io** med repo, version/commit, reproduktion och påverkan.
|
||||
Skicka inte en publik issue för säkerhetsproblem. Vi bekräftar mottagande och
|
||||
återkommer med bedömning; koordinera offentliggörande med oss.
|
||||
|
||||
## Omfattning
|
||||
|
||||
Detta repo (`0pt`) ingår i SIAX-plattformen. Policyn omfattar källkod,
|
||||
CI-kedjor, containers och de hemligheter som används vid bygge och drift.
|
||||
|
||||
## Hemligheter
|
||||
|
||||
- Inga hemligheter i git — varken i kod, `.env`, fixturer eller historik.
|
||||
- Hemligheter lagras i Infisical (`vault.siax.io`) och injiceras vid körning
|
||||
(`siax-secrets run --env <miljö> -- <kommando>`). Värden skrivs aldrig ut i
|
||||
loggar eller dokumentation.
|
||||
- `.env.example` innehåller namn och beskrivningar, aldrig värden.
|
||||
- `gitleaks` körs i CI (REPO-15). Ett fynd är ett stopp, inte en varning.
|
||||
|
||||
## Beroenden och kedjan
|
||||
|
||||
- Låsta versioner och lockfil i varje repo (SUP-01). Renovate hanterar
|
||||
uppdateringar (SUP-05); säkerhetsuppdateringar prioriteras.
|
||||
- CI-actioner pinnas till commit-SHA när så krävs av standarden (SUP-06).
|
||||
- Containrar byggs från egna baser med minimal yta; ingen `tsx`/`ts-node`
|
||||
i produktion (CD-03).
|
||||
|
||||
## Åtkomst och identitet
|
||||
|
||||
- Tjänst-till-tjänst sker med workload-identitet och tenant-scope, inte med
|
||||
delade statiska nycklar (se `siax.repo.json` → `identity`).
|
||||
- Minsta behörighet gäller; ingen app får bredare åtkomst än sin deklarerade
|
||||
kapacitet.
|
||||
|
||||
## Personuppgifter
|
||||
|
||||
- Klassificering och PII-krav deklareras i `siax.repo.json` → `discovery`.
|
||||
- Personuppgifter får inte loggas, cachelagras eller kopieras till miljöer som
|
||||
inte är godkända för ändamålet.
|
||||
|
||||
## Incidenter
|
||||
|
||||
Följ `docs/runbook/incident.md`. Bevara evidens, begränsa spridning, återställ
|
||||
och skriv en efteranalys. Kontakta ansvarig owner enligt `.gitea/CODEOWNERS`.
|
||||
|
||||
---
|
||||
|
||||
Denna policy är genererad 2026-11-10 och gäller tills en mänskligt granskad
|
||||
version ersätter den. Den påstår ingen genomförd granskning eller certifiering.
|
||||
@@ -0,0 +1,10 @@
|
||||
# DX-02 — lokala beroenden för 0PT.
|
||||
#
|
||||
# TODO: deklarera repots FAKTISKA lokala beroenden (databas, cache, objektlager,
|
||||
# meddelandebuss …) så att DX-01 håller: ett kommando ska resa allt lokalt, utan
|
||||
# åtkomst till produktion.
|
||||
#
|
||||
# Tomt värde nedan betyder "repot har inga lokala beroenden". Scaffolden kan
|
||||
# inte veta om det är sant — den lämnar det tomt i stället för att hitta på
|
||||
# tjänster som ingen kör.
|
||||
services: {}
|
||||
@@ -0,0 +1,66 @@
|
||||
# Arkitektur — 0PT
|
||||
|
||||
> **Status:** automatisk första version, genererad av `siax-scaffold` ur repots
|
||||
> faktiska filer. Den beskriver vad som finns, inte vad som är bestämt. Läs
|
||||
> igenom, rätta och fyll i avsnitten som är markerade TODO innan dokumentet
|
||||
> betraktas som en arkitekturbeskrivning (ARK-serien).
|
||||
|
||||
Senast verifierad mot kod: 2026-11-10
|
||||
|
||||
## 1. Översikt
|
||||
|
||||
| Fält | Värde |
|
||||
| --- | --- |
|
||||
| Repo | `0pt` |
|
||||
| Körtid | okänd |
|
||||
| Ramverk | okänd |
|
||||
| Paketnamn | — |
|
||||
| Domäner i `siax.config.json` | inga |
|
||||
|
||||
|
||||
## 2. Komponenter
|
||||
|
||||
Toppnivåkataloger som innehåller kod eller konfiguration (härledda ur filträdet):
|
||||
|
||||
| Katalog | Roll |
|
||||
| --- | --- |
|
||||
| `services//` | TODO: beskriv katalogens roll (services/) |
|
||||
| `docs//` | TODO: beskriv katalogens roll (docs/) |
|
||||
|
||||
Undermoduler som är deklarerade i `children[]`:
|
||||
|
||||
| Sökväg | Syfte |
|
||||
| --- | --- |
|
||||
| — | Inga undermoduler (apps/, packages/, services/) finns. |
|
||||
|
||||
## 3. Startpunkter
|
||||
|
||||
| Fil | Typ |
|
||||
| --- | --- |
|
||||
| — | Ingen startpunkt hittades i `package.json`, `pyproject.toml` eller `Dockerfile`. |
|
||||
|
||||
## 4. Språk och filfördelning
|
||||
|
||||
| Ändelse | Omfattning |
|
||||
| --- | --- |
|
||||
| .ts | 1 filer |
|
||||
|
||||
## 5. Dataflöde
|
||||
|
||||
TODO: beskriv hur data rör sig genom repot: inkommande anrop/jobb → lagring → utdata, och vilka externa system som anropas. Scaffolden kan inte härleda detta ur filerna.
|
||||
|
||||
## 6. Gränser och beroenden
|
||||
|
||||
TODO: lista vilka SIAX-komponenter repot äger respektive konsumerar (REUSE FIRST), samt vilka kontrakt som är stabila utåt. Se `siax.repo.json` → `consumes`/`consumedBy`.
|
||||
|
||||
## 7. Drift och miljöer
|
||||
|
||||
Ingen `siax.config.json` finns — repot är inte deklarerat som driftsatt. Om det driftsätts ska `siax.config.json` skapas först (REPO-06).
|
||||
|
||||
TODO: verifiera mot faktisk nod och `docker ps` (GOV-06). Ett dokument får inte påstå drift som inte är mätt.
|
||||
|
||||
## 8. Källhänvisning
|
||||
|
||||
- Genererad: 2026-11-10 av `siax-scaffold` (scaffold 2026-11-10).
|
||||
- Underlag: filträdet, `package.json`/`pyproject.toml`, `Dockerfile`, `siax.repo.json`.
|
||||
- Ändringslogg: se `CHANGELOG.md` och git-historiken.
|
||||
@@ -0,0 +1,45 @@
|
||||
# SCAFFOLD-TODO — vad som är härlett och vad som måste verifieras
|
||||
|
||||
**Genererad:** 2026-11-10 av `siax-scaffold` (siax-standard,
|
||||
`packages/scaffold`) mot Golden Standard v2.0.
|
||||
|
||||
Den här filen finns för att en mall inte får låtsas veta saker. Varje rad nedan
|
||||
är antingen **härledd ur repot** (källan står i kolumn 3) eller ett
|
||||
**konservativt defaultvärde** som en människa måste bekräfta. Radera raden när
|
||||
den är verifierad — filen ska till slut kunna tas bort helt.
|
||||
|
||||
## Härledda värden i `siax.repo.json`
|
||||
|
||||
| Fält | Värde | Härlett ur |
|
||||
|---|---|---|
|
||||
| `repo` | `0PT` | `git remote.origin.url` (VERSALER per REPO-08) |
|
||||
| `codeowners` | `["@sax3l"]` | default (organisationens ägare) |
|
||||
| `category` | `platform` | DEFAULT — ej härledbart |
|
||||
| `subcategory` | `TODO: fyll i underkategori (t.ex. compute-os, saas-ersättare)` | TODO-markör |
|
||||
| `operationalState` | `planned` | inga driftsartefakter (varken Dockerfile eller siax.config.json) |
|
||||
| `domains` | `0 st` | inga funna |
|
||||
| `children` | `1 st` | faktiska kataloger under apps/, packages/, services/ |
|
||||
|
||||
## Måste verifieras av människa
|
||||
|
||||
- [ ] Bekräfta `codeowners` — scaffolden defaultade till `@sax3l` (CI-14).
|
||||
- [ ] Verifiera `category` i `siax.repo.json` mot den kanoniska taxonomin och CL0UD APP_REGISTRY (GOV-01/REPO-05). Scaffolden defaultade till `platform` — den kan inte veta.
|
||||
- [ ] Fyll i `subcategory` i `siax.repo.json` (REPO-04).
|
||||
- [ ] Bekräfta `operationalState` — scaffolden satte `planned` eftersom repot saknar driftsartefakter (GOV-06).
|
||||
- [ ] Beskriv varje post i `children[]` — sökvägarna är härledda ur filträdet, syftet är inte (ARK-11).
|
||||
- [ ] Välj rätt devcontainer-bild — scaffolden kunde inte avgöra körtiden och valde en generisk Ubuntu-bas (DX-03).
|
||||
- [ ] Fastställ `appId` mot CL0UD APP_REGISTRY och ta bort `appIdJustification` (REPO-05).
|
||||
- [ ] Fyll i consumes[] och consumedBy[] från FAS 2-beroendekartan — de får aldrig gissas.
|
||||
- [ ] Fyll i `node` (server5–server11) i `siax.repo.json`, eller lämna `null` om repot inte driftsätts.
|
||||
- [ ] Kör återställningen skarpt och skriv in datumet i `docs/runbook/backup-restore.md` (DOC-07).
|
||||
|
||||
## Kontroller som scaffolden AVSIKTLIGT lämnar röda
|
||||
|
||||
- **REPO-05** — `appId` är `null` med motivering. Ett påhittat appId skulle se konformt ut och peka på ingenting i CL0UD APP_REGISTRY.
|
||||
- **DOC-07** — `docs/runbook/backup-restore.md` saknar datum för bevisad restore. Scaffolden skriver aldrig in ett datum: kontrollen letar efter ett datum, och ett genererat sådant skulle göra den grön utan att någon återställning ägt rum. Kör återställningen, skriv in datumet.
|
||||
|
||||
|
||||
---
|
||||
|
||||
_Genererad av `siax-scaffold` (siax-standard). Varje `TODO:` i filen måste
|
||||
fyllas i av en människa. Samlad lista: `docs/compliance/SCAFFOLD-TODO.md`._
|
||||
@@ -0,0 +1,36 @@
|
||||
# Backup & restore
|
||||
|
||||
## Vad som säkerhetskopieras
|
||||
|
||||
TODO: lista varje tillstånd repot äger — databas, volymer, objektlager,
|
||||
hemligheter. Sådant som inte står här är inte säkerhetskopierat.
|
||||
|
||||
| Tillstånd | Var | Frekvens | Retention |
|
||||
|---|---|---|---|
|
||||
| TODO | TODO | TODO | TODO |
|
||||
|
||||
## Återställning — steg
|
||||
|
||||
1. TODO: exakt kommando för att hämta senaste dumpen.
|
||||
2. TODO: exakt kommando för att läsa in den.
|
||||
3. TODO: hur du verifierar att data faktiskt är tillbaka (räkna rader, anropa
|
||||
en endpoint) — inte bara att kommandot gav exit 0.
|
||||
|
||||
## Senast bevisad restore
|
||||
|
||||
**EJ BEVISAD.**
|
||||
|
||||
TODO: kör återställningen skarpt mot en tom miljö och skriv in datumet här på
|
||||
formen ÅÅÅÅ-MM-DD tillsammans med vem som körde den och vad som verifierades.
|
||||
|
||||
> Detta fält är avsiktligt tomt. `siax-scaffold` skriver ALDRIG in ett datum
|
||||
> här: DOC-07 letar efter ett datum, och ett genererat datum skulle göra
|
||||
> kontrollen grön utan att någon återställning ägt rum. Kontrollen ska förbli
|
||||
> röd tills påståendet är sant.
|
||||
|
||||
**RTO/RPO:** TODO: mät, gissa inte.
|
||||
|
||||
---
|
||||
|
||||
_Genererad av `siax-scaffold` (siax-standard). Varje `TODO:` i filen måste
|
||||
fyllas i av en människa. Samlad lista: `docs/compliance/SCAFFOLD-TODO.md`._
|
||||
@@ -0,0 +1,26 @@
|
||||
# Deploy
|
||||
|
||||
TODO: `siax.config.json` saknas (REPO-06) — fyll i framework, build,
|
||||
start, port, healthcheck och per-miljö-domän, och spegla dem här.
|
||||
|
||||
## Steg
|
||||
|
||||
1. TODO: hur en ändring når drift (börvärde i estatet: merge till `main` →
|
||||
`.gitea/workflows/cd.yml` → Coolify-webhook på den nod repot bor på).
|
||||
Skriv det som FAKTISKT sker — inte det som borde ske (DOC-19).
|
||||
2. TODO: hur du verifierar att den nya versionen kör (healthcheck-URL, exakt
|
||||
`curl`-kommando och förväntat svar).
|
||||
3. TODO: rollback — exakt kommando/knapp och hur lång tid det tar (CD-*).
|
||||
|
||||
## Förutsättningar
|
||||
|
||||
- Hemligheter hämtas från Infisical, aldrig ur repot (AR-6, SEC-01).
|
||||
- TODO: vilka env-nycklar som måste finnas innan deploy.
|
||||
|
||||
**Runbooken ska vara körbar av någon som inte byggt systemet (DOC-06).**
|
||||
Så länge något `TODO` står kvar är den inte det.
|
||||
|
||||
---
|
||||
|
||||
_Genererad av `siax-scaffold` (siax-standard). Varje `TODO:` i filen måste
|
||||
fyllas i av en människa. Samlad lista: `docs/compliance/SCAFFOLD-TODO.md`._
|
||||
@@ -0,0 +1,35 @@
|
||||
# Incident
|
||||
|
||||
## 1. Bekräfta
|
||||
|
||||
TODO: exakt kommando/URL som visar om tjänsten lever (healthcheck, `docker ps`
|
||||
på noden, dashboard). Ett incidentsvar börjar alltid med en mätning.
|
||||
|
||||
## 2. Klassa
|
||||
|
||||
| Läge | Innebörd | Åtgärd |
|
||||
|---|---|---|
|
||||
| Nere | ingen trafik betjänas | eskalera direkt, se `oncall.md` |
|
||||
| Degraderad | fel/latens över SLO | TODO: tröskelvärden ur `docs/slo.md` (OBS-10) |
|
||||
| Kosmetiskt | ingen kundpåverkan | ärende, inte incident |
|
||||
|
||||
## 3. Vanliga orsaker (fylls på efter varje incident)
|
||||
|
||||
- TODO: känd felkälla 1 — symptom, kommando som bekräftar, åtgärd.
|
||||
- TODO: känd felkälla 2.
|
||||
|
||||
## 4. Återställ
|
||||
|
||||
1. TODO: rollback enligt `deploy.md`.
|
||||
2. TODO: om data är påverkad — följ `backup-restore.md` (och notera att
|
||||
återställningen då faktiskt är bevisad, DOC-07).
|
||||
|
||||
## 5. Efterarbete
|
||||
|
||||
Postmortem i `docs/incidents/` — orsak, tidslinje, vad som saknades i
|
||||
mätningen, vilken kontroll som skulle ha fångat det. Aldrig skuld på person.
|
||||
|
||||
---
|
||||
|
||||
_Genererad av `siax-scaffold` (siax-standard). Varje `TODO:` i filen måste
|
||||
fyllas i av en människa. Samlad lista: `docs/compliance/SCAFFOLD-TODO.md`._
|
||||
@@ -0,0 +1,21 @@
|
||||
# Oncall
|
||||
|
||||
**Jour:** TODO: vem som svarar, på vilken kanal, inom vilken tid. Står här
|
||||
"ingen jour" ska det vara ett medvetet beslut — inte en glömska.
|
||||
|
||||
**Eskalering:** TODO: namn + kontaktväg. Sista instans i estatet: Simon
|
||||
(goat@siax.io).
|
||||
|
||||
**Innan du väcker någon:**
|
||||
|
||||
1. Kör bekräftelsesteget i `incident.md` §1.
|
||||
2. Kolla om det finns en känd orsak i `incident.md` §3.
|
||||
3. TODO: länk till dashboard/larm (OBS-06/OBS-08).
|
||||
|
||||
**Larmvägar:** TODO: vilka larm som faktiskt är kopplade. Ett larm som ingen
|
||||
tar emot är inget larm.
|
||||
|
||||
---
|
||||
|
||||
_Genererad av `siax-scaffold` (siax-standard). Varje `TODO:` i filen måste
|
||||
fyllas i av en människa. Samlad lista: `docs/compliance/SCAFFOLD-TODO.md`._
|
||||
@@ -0,0 +1,25 @@
|
||||
# Prompt-index — 0PT
|
||||
|
||||
| # | Prompt | Status | Beroende |
|
||||
|---|---|---|---|
|
||||
| — | _inga numrerade prompts ännu_ | — | — |
|
||||
|
||||
## Öppet, ännu inte brutet till numrerade prompts
|
||||
|
||||
Punkterna nedan hittades av `siax-scaffold` när mallarna lades in. Var och en
|
||||
ska bli en egen `NNN-<slug>.md` enligt mallen i DEL 5.5 av standarden, med
|
||||
maskinellt verifierbara acceptanskriterier och kontroll-ID (AGENT-03).
|
||||
|
||||
- Bekräfta `codeowners` — scaffolden defaultade till `@sax3l` (CI-14).
|
||||
- Verifiera `category` i `siax.repo.json` mot den kanoniska taxonomin och CL0UD APP_REGISTRY (GOV-01/REPO-05). Scaffolden defaultade till `platform` — den kan inte veta.
|
||||
- Fyll i `subcategory` i `siax.repo.json` (REPO-04).
|
||||
- Bekräfta `operationalState` — scaffolden satte `planned` eftersom repot saknar driftsartefakter (GOV-06).
|
||||
- Beskriv varje post i `children[]` — sökvägarna är härledda ur filträdet, syftet är inte (ARK-11).
|
||||
- Välj rätt devcontainer-bild — scaffolden kunde inte avgöra körtiden och valde en generisk Ubuntu-bas (DX-03).
|
||||
|
||||
Fullständig lista med härledda värden som måste verifieras: `docs/compliance/SCAFFOLD-TODO.md`.
|
||||
|
||||
---
|
||||
|
||||
_Genererad av `siax-scaffold` (siax-standard). Varje `TODO:` i filen måste
|
||||
fyllas i av en människa. Samlad lista: `docs/compliance/SCAFFOLD-TODO.md`._
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"config:recommended",
|
||||
":dependencyDashboard",
|
||||
":semanticCommits"
|
||||
],
|
||||
"timezone": "Europe/Stockholm",
|
||||
"schedule": [
|
||||
"after 04:00 and before 07:00"
|
||||
],
|
||||
"labels": [
|
||||
"dependencies"
|
||||
],
|
||||
"prConcurrentLimit": 5,
|
||||
"rangeStrategy": "replace",
|
||||
"packageRules": [
|
||||
{
|
||||
"matchUpdateTypes": [
|
||||
"patch",
|
||||
"minor"
|
||||
],
|
||||
"groupName": "mindre uppdateringar",
|
||||
"groupSlug": "minor"
|
||||
},
|
||||
{
|
||||
"matchUpdateTypes": [
|
||||
"major"
|
||||
],
|
||||
"labels": [
|
||||
"dependencies",
|
||||
"major"
|
||||
],
|
||||
"dependencyDashboardApproval": true
|
||||
},
|
||||
{
|
||||
"matchDepTypes": [
|
||||
"devDependencies"
|
||||
],
|
||||
"groupName": "utvecklingsberoenden",
|
||||
"groupSlug": "dev"
|
||||
}
|
||||
],
|
||||
"vulnerabilityAlerts": {
|
||||
"labels": [
|
||||
"security"
|
||||
],
|
||||
"schedule": [
|
||||
"at any time"
|
||||
]
|
||||
},
|
||||
"lockFileMaintenance": {
|
||||
"enabled": true,
|
||||
"schedule": [
|
||||
"before 06:00 on monday"
|
||||
]
|
||||
}
|
||||
}
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
{
|
||||
"$schema": "https://git.siax.io/sax3l/siax-standard/raw/branch/main/schema/siax.repo.v3.schema.json",
|
||||
"standardVersion": "3.0",
|
||||
"repo": "0PT",
|
||||
"category": "platform",
|
||||
"subcategory": "TODO: fyll i underkategori (t.ex. compute-os, saas-ersättare)",
|
||||
"appId": null,
|
||||
"appIdJustification": "TODO: appId ej fastställt. Genererat av siax-scaffold, som inte kan slå upp CL0UD APP_REGISTRY. Ett påhittat appId hade sett konformt ut och pekat på ingenting (REPO-05).",
|
||||
"capabilityPrefix": "0pt",
|
||||
"owner": "SIAX Technology AB",
|
||||
"lifecycle": "active",
|
||||
"operationalState": "planned",
|
||||
"gitHost": "git.siax.io",
|
||||
"node": null,
|
||||
"domains": [],
|
||||
"consumes": [],
|
||||
"consumedBy": [],
|
||||
"children": [
|
||||
{
|
||||
"path": "services/api",
|
||||
"purpose": "TODO: beskriv modulens syfte",
|
||||
"lifecycle": "active"
|
||||
}
|
||||
],
|
||||
"replacesSaaS": [],
|
||||
"tier": "product",
|
||||
"canonical": true,
|
||||
"parentRepo": null,
|
||||
"capabilities": [],
|
||||
"surfaces": [
|
||||
"api"
|
||||
],
|
||||
"identity": {
|
||||
"workloadIdentity": false,
|
||||
"tenantScoped": true
|
||||
},
|
||||
"persistence": {
|
||||
"stateful": false,
|
||||
"database": "none",
|
||||
"storage": "none"
|
||||
},
|
||||
"deployment": {
|
||||
"node": null,
|
||||
"dedicated": false
|
||||
},
|
||||
"observability": {
|
||||
"health": false,
|
||||
"ready": false,
|
||||
"metrics": false
|
||||
},
|
||||
"reliability": {
|
||||
"backupFrequency": "none",
|
||||
"provenRestore": false
|
||||
},
|
||||
"engines": [],
|
||||
"licenses": {
|
||||
"spdx": "LicenseRef-SIAX-Proprietary",
|
||||
"approved": false
|
||||
},
|
||||
"productionEvidence": {
|
||||
"verified": false
|
||||
},
|
||||
"discovery": {
|
||||
"enabled": true,
|
||||
"profile": "FULL_DISCOVERY",
|
||||
"changeCapture": {
|
||||
"strategy": "transactional_outbox",
|
||||
"fallback": "cdc"
|
||||
},
|
||||
"classification": {
|
||||
"default": "internal",
|
||||
"failClosed": true
|
||||
},
|
||||
"pii": {
|
||||
"detectionRequired": false,
|
||||
"detectorRef": "TODO: sätt om repot rör persondata"
|
||||
},
|
||||
"lineage": {
|
||||
"required": true
|
||||
},
|
||||
"deletion": {
|
||||
"propagationRequired": true
|
||||
},
|
||||
"retention": {
|
||||
"policyRef": "TODO: retention-policy (t.ex. operational_30d, permanent)"
|
||||
},
|
||||
"projections": [],
|
||||
"exclusions": []
|
||||
},
|
||||
"decision": {
|
||||
"policies": [],
|
||||
"consumes": [
|
||||
"decision.choice",
|
||||
"decision.score",
|
||||
"decision.boolean"
|
||||
],
|
||||
"deterministicOnly": false
|
||||
},
|
||||
"runtime": {
|
||||
"language": "node-esm",
|
||||
"packageManager": "pnpm"
|
||||
},
|
||||
"contracts": {}
|
||||
}
|
||||
Reference in New Issue
Block a user