Files
0pt/docs/compliance/SLUTRAPPORT.md
T
adminandClaude Sonnet 5 2393f52768
CI (SIAX Cloud) / security (push) Successful in 20s
Security Scan (SIAX Cloud) / security (push) Successful in 20s
CI (SIAX Cloud) / quality (push) Successful in 41s
CI (SIAX Cloud) / security (pull_request) Successful in 20s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 20s
CI (SIAX Cloud) / quality (pull_request) Successful in 41s
docs(compliance): finish attributing the evasion-stack keep decision
PR #15 already fixed AGENTS.md/SECURITY.md with a dated, attributed
statement of the account owner's 2026-08-11 decision (Simon Axelsson, via
an interactive decision prompt, responding to this repo's own removal
proposal PR #7 which was verified clean/128 tests and closed unmerged --
no rationale beyond "keep it" was given or is invented). This PR finds and
fixes every other place in the repo that still carried the earlier
unattributed "medvetet anvandarbeslut" / "deliberate user decision" claim
a compliance audit flagged as unverifiable:

- docs/compliance/GOLDEN-STANDARD-REPORT.md: control C6 row + the
  "Bypass-undantag" formal section (the two places this doc was explicitly
  named to need checking) -- header gains a dated update note, C6 row and
  the section body get the same attributed statement as AGENTS.md/SECURITY.md.
- docs/compliance/SLUTRAPPORT.md, docs/compliance/INVENTORY.md: historical
  session doc keeps its original text and gains a dated correction
  addendum; the INVENTORY.md evidence bullet is corrected in place.
- docs/slo.md, CONTRIBUTING.md, prompts/002-compliance-audit.md,
  renovate.json, .gitea/workflows/security.yml: direct/living references
  to the exemption get the same attributed, dated pointer instead of the
  unattributed phrase.

CLAUDE.md's general §1 anti-evasion policy text is untouched, per instruction
-- this is a scoped exception note, not a change to the normative rule. No
code changes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 13:34:13 +02:00

96 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SLUTRAPPORT — 0pt (FAS 0–10)
> Session 2026-08-10 · Plattformsarkitekt + exekverande ingenjör (K1, platform).
> Repo: `git.siax.io/sax3l/0pt` · Gitea 1.26.4 · Gitea Actions aktiverade.
## 1. Poäng före/efter
| | ✅ | ⚠️ | ❌ | ➖ | Poäng |
|---|---|---|---|---|---|
| **Före (FAS 0–4)** | 18 | 8 | 13 | 2 | **56 %** (22/39) |
| **Efter (FAS 6–9)** | 21 | 8 | 10 | 2 | **64 %** (25/39) |
Förbättrade kontroller: **A4** (OpenAPI 3.1 SSOT — `contracts/openapi.yaml`),
**B1** (AR-4: `@vercel/analytics` + `next/font/google` borttagna → självhämtade
fontsource), **E6** (SLO + 4 runbooks + prompts). Oförändrade ❌-kontroller är
backlog-P0 (auth/tenant/escrow/engine-auth) — kräver produktbeslut, se BACKLOG.
Bypass-stacken (C6) och Infisical-token (D7) är ➖ per motivering.
## 2. Filer skapade/ändrade (diff mot 1346e86)
**Skapade (17):** `siax.repo.json` · `contracts/openapi.yaml` · `.gitattributes` ·
`.gitea/workflows/security.yml` · `.gitea/workflows/nightly.yml` · `CONTRIBUTING.md` ·
`AGENTS.md` · `docs/slo.md` · `docs/runbook/{deploy,incident,backup-restore,oncall}.md` ·
`prompts/{000-INDEX,001-repo-health,002-compliance-audit,003-security-review,004-deploy-cutover}.md` ·
`docs/compliance/{INVENTORY,RELATIONS,OSS-INVENTORY,GOLDEN-STANDARD-REPORT,BACKLOG,SLUTRAPPORT}.md` ·
`docs/compliance/EVIDENCE/{ci-main,container,health}.md`
**Ändrade (12):** `siax.config.json` (platform/data-os, appId 0PT, consumes +INF0,
replacesSaaS) · `docs/architecture/ARCHITECTURE.md` (§1.1 klassificering) ·
`app/layout.tsx` + `app/globals.css` (AR-4: fontsource, ingen Google/Vercel) ·
`package.json` (namn `@siax/0pt`, fontsource, bort `@vercel/analytics`) ·
`pnpm-lock.yaml` · `.npmrc` (`@siax:registry`) · `.env.example` (`INF0_URL`) ·
`.gitignore` (hygiene) · `renovate.json` (gitea-platform, semcommits, scraper-frys) ·
`services/scrapers/requirements.txt` (duckdb-pin) · `.gitea/workflows/{ci,cd}.yml`
(split + status-check-kontext bevarade) · `README.md` + `SECURITY.md` (ärliga
uppdateringar, S1-kaveat)
## 3. Commits på main (chronologiskt)
| SHA | Innehåll |
|---|---|
| `d2b5ec8` | docs(compliance): FAS 0–5 + siax.repo.json + klassificering |
| `9888c00` | feat(contract): OpenAPI SSOT + AR-4-fixes + hygiene |
| `2dccb8a` | **merge PR #9** ci(workflows): split CD/security/nightly (skyddade filer) |
| `8db56f1` | docs: FAS 9 (runbooks, SLO, prompts, README/SECURITY) |
| *(nästa)* | docs(compliance): EVIDENCE + SLUTRAPPORT (denna) |
Slut-SHA rapporteras efter sista push.
## 4. Blockerare (inget löst denna session)
1. **Ingen Infisical-token tillhandahållen** → Infisical-projekt/secret-bootstrap
ej utfört (D7 ➖, FAS 7-delen "Infisical-projekt" blockerade).
2. **Ingen Coolify-app provisionerad** → `cd.yml` förblir röd avsiktligt;
Vercel-cutover kräver separat beslut + DNS-arbete (BACKLOG P1-5, D4).
3. **S1-livegap** (0pt.app svarar 200 anonymt på /api/0pt) — rotorsak ej
fastställd; kräver tillgång till Vercel/Coolify-deploymiljö.
4. **Bypass-stacken** — vid denna sessions skrivande (2026-08-10) citerad som
oattribuerat "medvetet användarbeslut"; GPL-/juridiskt läge kvar som
produktbeslut (P1-4). **Uppdaterat 2026-08-11:** kontoägaren Simon Axelsson
tillfrågades direkt och valde explicit att behålla stacken (interaktiv
beslutsprompt, ingen motivering utöver "behåll" given) — se
AGENTS.md/SECURITY.md/GOLDEN-STANDARD-REPORT.md kontroll C6 för
fullständig, attribuerad text. Denna notering ersätter det tidigare
oattribuerade påståendet ovan.
## 5. Exakt restmängd (BACKLOG)
- **P0 (8):** P0-1..P0-8 — middleware i prod, tenant från session, auth på hela
API:et, escrow-release, CL0UD fail-closed, engine-auth, SSRF, typcheck-middleware.
- **P1 (6):** AUD0-wiring, db-grant-kryptering, session, bypass-produktbeslut,
Coolify-provisionering, Infisical.
- **P2 (4):** backup/restore, retention, tenant-scopade källfrågor, observabilitet.
- **P3 (4):** capability-register, tenantmodell, header-policy, engine-Postgres.
- **P4 (6):** duckdb låst ✅(gjord), package.json-namn ✅(gjord), sql/002-003,
pycache/output-hygiene, .github-workflow-beslut, delad state.
- **P5 (2):** runbook-uppföljning, konsumentledsdokumentation.
- **P6 (4):** designsystem, NER/OCR, OpenSanctions-avtal, INF0-koppling.
## 6. Vad jag inte kunde verifiera (ärligt)
- Om/när `middleware.ts` faktiskt exekveras i prod (S1) — kräver deploymiljö.
- Om en Coolify-app någonstans pekar på repot (Coolify-API ej nått denna session).
- Om `api.0pt.app`/`data.0pt.app`/`dash.0pt.app` lever (Caddy, ej verifierat).
- Om ST0RE/N0D/AUD0-produktion når 0pt (realinfra-tester skippade utan URL:er).
- GitHubs spegelrepon (`github.com/sax3l/0pt`) — .github/workflows/ci.yml lämnades
intakt (AR-1); om GitHub-sidan är död kan den avvecklas (P4-5, Simons beslut).
- Infisical-projektets existens (token saknas).
## 7. Slutstatus
CI-kvalitet grind på final main verifieras efter sista push (run-ID i
EVIDENCE/ci-main.md uppdateras). Lokala grindar: typecheck ✅ · test 128 ✅ ·
build ✅. AR-1..AR-8 efterlevda; bypass-stacken orörd; inga kundrepon berörda;
inga hemligheter committade (grep-skannat före push).