# Dokument DEV MVP - K0-CST

## 1. Cel MVP

Uruchomić minimalną, audytowalną wersję Common Source of Truth pod `/Common-Source-of-Truth/start`, z modelem danych, formularzami, statusem i eksportem dokumentów.

## 2. Stack startowy

| Warstwa | Rekomendacja P0 | Rekomendacja P1/P2 |
| --- | --- | --- |
| Frontend | Statyczne strony / obecny CMS / Next.js | Next.js + komponenty dashboardowe |
| Dane | JSON/Markdown seed files | Postgres/Supabase lub inna DB |
| API | Statyczny export + proste endpointy | REST/GraphQL + auth + RBAC |
| Auth | Brak dla public; basic/admin dla staging | Keycloak/OAuth/RBAC |
| Audit | Pliki logów i hash eksportu | Append-only audit log |
| Dokumenty | PDF/MD w /documents | Generator PDF/CSV + wersjonowanie |
| Monitoring | manual status.json | health endpoints + uptime |

## 3. Minimalne endpointy P0/P1

```text
GET  /Common-Source-of-Truth/status.json
GET  /api/cst/modules
GET  /api/cst/claims
GET  /api/cst/evidence
GET  /api/cst/incidents
GET  /api/cst/legal-triggers
POST /api/cst/report/incident
POST /api/cst/report/vulnerability
POST /api/cst/report/ai-system
POST /api/cst/report/bigtech
POST /api/cst/dispute
POST /api/cst/export
```

## 4. JSON schema - claim

```json
{
  "claim_id": "K0-CLM-000001",
  "statement": "Treść twierdzenia",
  "source_ids": ["K0-SRC-000001"],
  "evidence_ids": ["K0-EVD-000001"],
  "status": "FACT|OFFICIAL|TECHNICAL|GAP|DISPUTED|SIMULATION|DRAFT|ARCHIVED",
  "owner": "role-or-person",
  "created_at": "ISO-8601",
  "updated_at": "ISO-8601",
  "version": "1.0.0",
  "visibility": "public|internal|restricted",
  "appeal_path": "/Common-Source-of-Truth/common-source-of-truth/appeal-path"
}
```

## 5. JSON schema - incident

```json
{
  "incident_id": "K0-INC-000001",
  "type": "cyber|ai|data|bigtech|vulnerability|supply-chain|other",
  "severity": "P0|P1|P2|P3",
  "environment": "REAL|SIMULATION",
  "summary": "Opis zgłoszenia",
  "source": "form|email|manual|sensor|partner",
  "evidence_ids": [],
  "legal_triggers": [],
  "owner": "incident-lead",
  "status": "new|triage|investigation|contained|reported|closed|disputed",
  "created_at": "ISO-8601",
  "retention_class": "public|internal|restricted"
}
```

## 6. Statusy i separacja danych

Najważniejszy wymóg techniczny: **REAL i SIMULATION nie mogą mieszać się w tej samej kolejce operacyjnej bez wyraźnego filtra i oznaczenia.**

## 7. Acceptance criteria MVP

| ID | Kryterium odbioru |
| --- | --- |
| AC-01 | /Common-Source-of-Truth/start działa i linkuje do P0. |
| AC-02 | Stare /ai-truth nie zostało nadpisane. |
| AC-03 | /documents zawiera PDF i MD z tego pakietu. |
| AC-04 | status.json zawiera wersję, datę, status i hash builda. |
| AC-05 | Formularze mają typ zgłoszenia, status REAL/SIMULATION, klauzulę i ownera. |
| AC-06 | Claim bez dowodu automatycznie otrzymuje status GAP/DRAFT, nie FACT. |
| AC-07 | Każdy wpis ma ownera i timestamp. |
| AC-08 | Eksport PDF/CSV/JSON działa przynajmniej ręcznie. |
| AC-09 | Agent services nie mają aktywnych działań bez human approval. |
| AC-10 | Repo ma README i checklistę publikacji. |

## 8. status.json P0

```json
{
  "schema_version": "0.1.0",
  "program": "K0-CST Common Source of Truth",
  "root_url": "/Common-Source-of-Truth/start",
  "status": "GO_CONTROLLED_P0",
  "ai_truth_legacy_preserved": true,
  "last_review": "2026-07-01",
  "operator_veto_state": "enabled",
  "agent_active_actions": "disabled_by_default",
  "build_hash": "to-be-filled-by-dev"
}
```
