K0NSULT // ai-truth/ipIII
k0nsult.cloud / ai-truth / ipIII / orchestrator / funkcje

Wykaz funkcji ipIII — co, gdzie, jaki status

Jeden spis zamiast zgadywania „czy to działa". Dla każdej funkcji: co robi (1 zdanie), gdzie w API/stronie ją znaleźć i jaki ma dziś status. Element bez dowodu (kod + test + endpoint) jest oznaczony ROADMAP, nie LIVE. Doktryna claim ≤ proof.

Jak czytać status. LIVE — kod + endpoint działają dziś, zweryfikowane w repo. auth-gated / MVP — działa, ale wymaga tokenu JWT albo jest szkieletem pierwszej wersji. SIMULATION — endpoint żywy, ale dane demonstracyjne/efemeryczne, jawnie oznaczone source:"simulation". ROADMAP — zaplanowane, nieistniejące dziś jako działający kod. Data weryfikacji względem repo: 2026-07-05.

1. Read-path API (SIMULATION, publiczne, bez logowania)

Zamontowane inline w server.js. Dane demo, efemeryczne, jawnie oznaczone source:"simulation" — nie rejestr operacyjny.

FunkcjaCo robiEndpointStatus
Lista incydentów demoZwraca 12 syntetycznych incydentów z filtrami severity/status/group i agregatami by_severity/gap_pct.GET /api/ip3/incidentsSIMULATION
Szczegół incydentu demoPojedynczy rekord po public_id; 404 gdy nie istnieje w seedzie.GET /api/ip3/incidents/:idSIMULATION
Statystyki demoAgregaty by_severity/by_group/by_evidence_status + gap_pct nad tym samym seedem 12 rekordów.GET /api/ip3/statsSIMULATION
Biblioteka playbookówKatalog referencyjny 12 playbooków reagowania (grupa/priorytet/liczba kroków) — kuratorowany, NIE dane operacyjne.GET /api/ip3/playbooks · GET /api/ip3/playbooks/:typeLIVE (reference)

2. API v1 profesjonalne (auth-gated, JWT/RBAC/PostgreSQL)

Router routes/ip3-api-pro.js, montaż na /api/ip3/v1. Bez DATABASE_URL zwraca 503 (nie udaje persystencji). Większość ścieżek wymaga Authorization: Bearer <JWT> i odpowiedniej roli (operator/analyst/auditor/admin).

FunkcjaCo robiEndpointStatus
LogowanieWeryfikuje hasło (scrypt), wystawia JWT lokalnie (1h). Konta seedowane tylko gdy operator ustawi IP3_SEED_PASS.POST /auth/loginauth-gated
Profil zalogowanegoZwraca principal (sub/roles/org) z tokenu.GET /auth/meauth-gated
OrganizacjeLista organizacji w DB (dziś jedna organizacja — brak multi-tenant, patrz Znane ograniczenia).GET /orgsauth-gated
Incydenty — lista/filtrRealne rekordy z PostgreSQL, filtr severity/status, sort po priorytecie.GET /incidentsauth-gated
Incydent — szczegółRekord + lista dowodów powiązanych.GET /incidents/:idauth-gated
Utworzenie incydentuWalidacja pól wymaganych, nadanie public_id (IP3-rok-hex).POST /incidentsauth-gated
Edycja incydentuPATCH pól title/description/severity. Pola statusowe (response_status/evidence_status) zablokowane tu celowo.PATCH /incidents/:idauth-gated
Dodanie dowoduRekord evidence z hashem sha256 treści i wpisem chain-of-custody.POST /incidents/:id/evidenceauth-gated
Zamknięcie z dowodem (claim≤proof)Blokuje zamknięcie (422) bez ≥1 dowodu w statusie CONFIRMED — reguła close-with-evidence.POST /incidents/:id/closeauth-gated
Ponowne otwarcieCofa response_status do open, czyści closed_at.POST /incidents/:id/reopenauth-gated
Legal Trigger EngineIncydent → obowiązki DORA/NIS2/RODO/AI Act + zegary. Decision-support, nie porada prawna. Flagi override w query.GET /incidents/:id/legal-triggersauth-gated
Mapowanie MITRE ATT&CKHeurystyczne mapowanie incydentu na techniki TTP (claim≤proof — sygnał, nie certyfikowana atrybucja).GET /incidents/:id/ttpauth-gated
Evidence Coverage ScoreKPI pokrycia dowodowego (6 wymiarów: dowód potwierdzony, retest, owner, chain-of-custody, mapowanie regulacyjne, zamknięcie z dowodem). NIE ocena bezpieczeństwa.GET /incidents/:id/coverageauth-gated
Przypisanie właściciela + SLAUstawia owner_email, liczy termin SLA wg severity (P0=24h…P3=720h), workflow_status=assigned.POST /incidents/:id/assignauth-gated
Przejście workflowopen→triaged→assigned→fixing→retest. Stan 'closed' wyłącznie przez /close (nie przez transition).POST /incidents/:id/transitionauth-gated
Budowa zgłoszenia (ticket)Buduje payload Jira/GitHub Issues z danych incydentu. Zwraca gotowy JSON do wklejenia/API — nie wysyła.GET /incidents/:id/ticket?system=jira|githubMVP (buduje payload)
Statystyki DBAgregaty by_severity/by_status/gap nad realnymi rekordami organizacji.GET /statsauth-gated
Audit logOstatnie 200 zdarzeń audytowych (auditor/admin).GET /auditauth-gated
Eksport audytuDo 1000 zdarzeń w formacie JSON lub CSV (auditor/admin).GET /audit/export?format=json|csvauth-gated
Mapowanie evidence→controlIncydent → kontrole ISO 27001/NIST-CSF/CIS/DORA/NIS2. Decision-support, nie certyfikacja.GET /incidents/:id/controlsauth-gated
Engagement (DORA/TIBER)Utworzenie/lista engagementu: scope, crown-jewels, RoE, framework TIBER-EU domyślnie.POST /engagements · GET /engagementsauth-gated
Szczegół engagementuRekord + rejestr zdarzeń (white-team-log / evidence-register).GET /engagements/:idauth-gated
Wpis do rejestruDodaje zdarzenie (white-team-log/evidence-register/phase/finding) z opcjonalnym hashem treści.POST /engagements/:id/logauth-gated
Raport końcowy engagementuZamyka engagement. Blokowane (422), gdy brak ≥1 wpisu evidence-register — claim≤proof.POST /engagements/:id/final-reportauth-gated
Pakiet raportu engagementuTimeline + rejestr dowodów + raport końcowy + manifest + package_sha256; JSON lub PDF do pobrania.GET /engagements/:id/report-package?format=json|pdfauth-gated
Health warstwy v1Informuje, czy DB jest podłączona (bez tego 503 dla operacji zapisu/odczytu).GET /_healthLIVE (publiczny)

3. Importy / konektory (parsery findingów)

Wspólny wzorzec: parser zamienia raport narzędzia na znormalizowane findingi → ingestFindings() tworzy incydent + evidence ze statusem MEDIA_SIGNAL (sygnał narzędzia, NIE dowód naprawy) + hash sha256 + chain-of-custody. Dedup po hashu treści — powtórny import tego samego raportu jest bezpieczny (idempotentny). Zamknięcie incydentu nadal wymaga dowodu CONFIRMED.

KonektorCo robiEndpointStatus parsera
Burp SuiteParsuje XML eksportu Burp (<issue>) na findingi.POST /imports/burpLIVE (parser)
OWASP ZAPParsuje JSON lub XML raportu ZAP (alerty).POST /imports/zapLIVE (parser)
Nessus/TenableParsuje CSV (Name,Risk,CVE,CVSS,Host…).POST /imports/nessusLIVE (parser)
Qualys VMParsuje CSV lub XML (QID/VULN/DETECTION).POST /imports/qualysLIVE (parser)
CSV generycznyParsuje dowolny CSV z nagłówkami title,severity,cve,cvss,type,host.POST /imports/csvLIVE (parser)
JSON generycznyPrzyjmuje {source_tool, findings[]} bez transformacji formatu.POST /imports/genericLIVE (parser)
DefectDojoParsuje eksport DefectDojo (results[]/tablica/findings[]) — most AppSec/pentest.POST /imports/defectdojoLIVE (parser)
SARIF 2.1Parsuje runs[].results[] (CodeQL/Semgrep/GHAS).POST /imports/sarifLIVE (parser)
SBOMParsuje CycloneDX/SPDX — components + vulnerabilities (CRA).POST /imports/sbomLIVE (parser)
Secret scanningParsuje wynik Gitleaks/TruffleHog/GH secret scanning; wartość sekretu jest redagowana przed zapisem.POST /imports/secretsLIVE (parser)
Cloud postureParsuje Prowler/ScoutSuite/Checkov/Trivy — tylko wpisy FAIL.POST /imports/cloudLIVE (parser)
Reverse engineeringParsuje YARA JSON/radare2/generic RE — defensywnie, po RoE. ipIII to orchestracja dowodu nad warsztatem RE, NIE disassembler.POST /imports/reLIVE (parser)
Dedup cross-toolDeduplikuje listę findingów po fingerprint (title|cve|host) niezależnie od źródła.POST /tools/dedupLIVE
Transport do Jira/GitHub/SIEMRealne wysłanie zgłoszenia do systemu docelowego (API ticketowe, webhook SIEM) — dziś ipIII tylko buduje payload, nie wysyła.ROADMAP

4. Workflow remediation

FunkcjaCo robiEndpointStatus
Assign + SLAPrzypisanie właściciela i policzenie terminu SLA wg severity.POST /api/ip3/v1/incidents/:id/assignauth-gated
Transition workflowZmiana stanu roboczego open→triaged→assigned→fixing→retest.POST /api/ip3/v1/incidents/:id/transitionauth-gated
Coverage per incydentKPI 6-wymiarowe pokrycia dowodowego dla jednego incydentu.GET /api/ip3/v1/incidents/:id/coverageauth-gated
Budowa ticketuPayload Jira/GitHub gotowy do wklejenia lub wysyłki przez API klienta.GET /api/ip3/v1/incidents/:id/ticketMVP
Close-with-evidenceZamknięcie zablokowane bez dowodu CONFIRMED (422 closure_requires_confirmed_evidence).POST /api/ip3/v1/incidents/:id/closeauth-gated
Strona narzędziowa remediationOpis lifecycle'u i przykłady wywołań workflow dla operatora./remediationMVP

5. Evidence

FunkcjaCo robiGdzieStatus
Evidence Coverage ScoreKPI pokrycia dowodowego (6 wymiarów), API + strona z progami i interpretacją.GET /incidents/:id/coverage · /coverage-scoreMVP
Weryfikacja hasha pakietu (bez uploadu)Porównanie package_sha256 wklejonego JSON z hashem oczekiwanym — liczone w przeglądarce, bez wysyłania treści na serwer. Dowodzi spójności treści, nie jej pochodzenia./verifyLIVE (hash bez uploadu)
Podpis wystawcy (PAdES/TSA/PQC)Formalny podpis kwalifikowany + znacznik czasu dla evidence-package — potwierdza autentyczność (kto wystawił), nie tylko integralność treści.ROADMAP (Verify v2)
AnonymizerDeidentyfikacja raportu (maskowanie PII wzorcami regex) licząca się w przeglądarce, bez wysyłki treści na serwer./anonymizerLIVE (w przeglądarce)
Evidence-package / board packIncydent + dowody + audit trail + manifest + package_sha256 + chain-of-custody. JSON kanoniczny, opcjonalnie PDF do pobrania.GET /api/ip3/v1/reports/evidence-package/:id?format=json|pdfauth-gated

6. Rejestry maszynowe

FunkcjaCo robiEndpointStatus
Rejestr stron modułuLista wszystkich stron PL+EN modułu ipIII z polem status (LIVE/DANE/ROADMAP/SIMULATION/NOINDEX) i url.GET /ai-truth/ipIII/pages.jsonLIVE
Kontrakt OpenAPI 3.1Opis referencyjny (nie SLA) głównych ścieżek API z polem x-status per endpoint.GET /ai-truth/ipIII/openapi.jsonLIVE
Status modułuZbiorczy status ipIII: moduły, priorytety, grupy incydentów, wersja.GET /ai-truth/ipIII/status.jsonLIVE
Macierz statusów (strona)Czytelna dla człowieka wersja rejestru — kategorie i status każdego elementu w jednej tabeli./status-matrixLIVE
Przykłady syntetyczne (samples)Publiczna paczka plików demo (Burp XML, Nessus CSV, evidence-package JSON, board-pack PDF, kolekcja Postman) — bez logowania.GET /ai-truth/ipIII/samples · GET /ai-truth/ipIII/samples/:fileLIVE

7. Narzędzia stronowe (nie-API)

Strony-narzędzia liczące w przeglądarce lub prezentujące dane referencyjne — bez wysyłki treści na serwer, gdzie to zaznaczone.

Deadline Clock LIVE

Zegar terminów zgłoszeń incydentu (DORA/NIS2/RODO) liczony od podanej daty wykrycia.

/deadline-clock

Evidence Coverage Score MVP

KPI pokrycia dowodowego z progami interpretacji (0–100%, 6 wymiarów, wagi równe).

/coverage-score

Klasyfikacja incydentów DANE

Taksonomia grup A–L (phishing…ciągłość) używana przez playbooki i klasyfikator zgłoszeń.

/klasyfikacja

Weryfikator pakietu LIVE

Porównanie hasha sha256 evidence-package bez uploadu treści.

/verify

Anonymizer LIVE

Deidentyfikacja raportu w przeglądarce (regex, bez wysyłki na serwer).

/anonymizer

Playbooki reagowania LIVE

12 playbooków referencyjnych (jeden na grupę incydentu) z liczbą kroków i priorytetem.

/playbooks

Skrót liczbowy

4
read-path API
SIMULATION + reference (playbooks)
25
endpointów v1 auth-gated
JWT/RBAC/PostgreSQL, ip3-api-pro.js
12
parserów importu — LIVE
transport do Jira/GitHub/SIEM = ROADMAP
3
rejestry maszynowe
pages.json · openapi.json · status.json

Czego ta strona NIE oznacza

To nie jest lista gotowych integracji. Parsery zamieniają raport narzędzia na znormalizowany finding — to realny, testowany kod. Transport do systemu docelowego (Jira/GitHub/SIEM/webhook) to osobny, jeszcze nie zaimplementowany krok, oznaczony wprost jako ROADMAP.
Import ≠ dowód naprawy. Każdy import parsera tworzy dowód w statusie MEDIA_SIGNAL (sygnał z narzędzia). Zamknięcie incydentu wymaga osobnego dowodu w statusie CONFIRMED — reguła close-with-evidence (claim ≤ proof), egzekwowana przez API (422), nie tylko opisana.
Granica etyczna i prawna. ipIII jest narzędziem obrony i zgodności (GRC/blue). Legal Trigger Engine i mapowanie evidence→control to wsparcie decyzji, nie porada prawna ani certyfikacja. Importy reverse-engineering działają wyłącznie defensywnie, na danych syntetycznych, po pisemnych Rules of Engagement.

Powiązane: pełna macierz statusów wszystkich stron → /status-matrix · znane ograniczenia (co jeszcze nie działa) → /known-limitations · kontrakt OpenAPI → /openapi.json.