CNCK0NSULTAI-Truthuni0naiHackatonipIII ↗k0nsult.dev ↗ dla botówDomeny osobne, spięte siecią CNC + kernelem.
K0NSULT // ai-truth/ipIII/aktualizacje
k0nsult.cloud / ai-truth / ipIII / aktualizacje

Aktualizacje — dziennik zmian ipIII

Kiedy, o której i co się zmieniło. Najnowsze u góry. Znaczniki czasu = czas commitu (Europe/Warsaw). Kanon liczb testów: Evidence Matrix · kanon statusów: Status Matrix · kanon liczby stron: /pages.json (jedyne źródło prawdy, liczone runtime — celowo BEZ twardej liczby na tej stronie, bo każda nowa strona ją zmienia). Liczby w starszych wpisach = stan z dnia wpisu; „259" w jednym z wpisów dotyczyło liczby plików HTML, nie zarejestrowanych stron.

2026-08-02…05 · bramka objęła 2 z 9 powierzchni: trzy wdrożenia domykające ten sam wzorzec luki LIVE
Router montowany bez ścieżki wypada spod bramki — ten sam błąd wystąpił trzy razy, w trzech różnych miejscach
Status: WDROŻONE jako v1312 (2.08), cd30173 (3.08) i 5e2708f (5.08). Każdy punkt potwierdzony sondą przed zmianą i po wdrożeniu — treścią odpowiedzi, nie samym kodem HTTP.

Przyczyna wspólna. Bramka montowana jako app.use(['/prefix-a','/prefix-b'], guard) chroni wyłącznie wyliczone prefiksy. Router montowany jako app.use(router) — bez argumentu ścieżki — deklaruje pełne ścieżki wewnątrz siebie i wypada spod bramki, mimo że jego trasy zaczynają się od tego samego /api/…. Dodatkowo w Express decyduje kolejność rejestracji, nie ścieżka montażu: router zarejestrowany przed bramką nie zostanie nią objęty nawet po dopisaniu prefiksu.

1. GOK — bramka obejmowała 2 z 9 powierzchni (v1312). Poza nią były: dashboard, scheduler, epuap, config oraz notifications — ta ostatnia montowana przed definicją bramki. Najpoważniejszy skutek: GET /api/gok/dashboard/export.csv zwracał bez logowania akta postępowań wobec imiennie wskazanych podmiotów (nazwa, numer KRS, przedmiot sprawy, status, następny ruch). Poprawka: przeniesienie całego bloku bramki przed montaż wszystkich routerów GOK i rozszerzenie listy do dziewięciu prefiksów. Po wdrożeniu: siedem tras → 403, publiczna baza wiedzy kampanii (Q354–700) → 200 (kontrola negatywna).

2. K0-CST i inspektor regresji (cd30173). app.use('/api/cst', cstApi) — cały router bez bramki. GET /api/cst/dispatch zwracał anonimowo rejestr wysyłek do organów państwa wraz z notatkami operatora, adresami e-Doręczeń i identyfikatorami dowodów doręczenia; POST /dispatch i /notify również bez uwierzytelnienia — anonim mógł dopisać fałszywy wpis do rejestru korespondencji. Osobno /api/regression/* (inspektor eskalacji M1–M5) leżał poza prefiksem /api/gok, więc bramka z poprzedniego wdrożenia go nie objęła. Celowo publiczne pozostały POST /api/cst/report/* i /dispute — to kanał zgłoszeniowy dla obywateli i badaczy, odpowiednik security.txt — oraz GET-y warstwy jawności.

3. Webhook UPO i limiter kanału zgłoszeń (5e2708f). POST /api/gok/epuap/upo-callback jest celowo poza bramką, bo webhook przychodzi od urzędu, który nie wyśle naszego ciasteczka ani tokenu serwisowego. Wartość upp_id z ciała żądania szła jednak wprost do path.join i fs.writeFileSync, czyli nieuwierzytelniony nadawca sterował ścieżką zapisu. Dowód z testu przed poprawką: ładunek upp_id='../../../public/index' utworzył realny plik public/index.upo.json — zapis do katalogu serwowanego publicznie. Wprowadzono whitelistę formatu; smoke na produkcji: ładunek 65-znakowy → HTTP 400, upp_id format invalid. Osobno kanał zgłoszeń, celowo publiczny, nie miał ograniczenia tempa — dodano limiter 5 żądań / 15 minut z pominięciem klienta serwisowego; smoke: siódme żądanie → 429.

Czego te wdrożenia NIE domykają — jawnie. upo-callback pozostaje bez uwierzytelnienia nadawcy — whitelist zamyka wyłącznie sterowanie ścieżką, nie podszycie się pod urząd; to warunek do rozstrzygnięcia przed przełączeniem EPUAP_MODE na produkcję (uzasadnienie: docs/audits/2026-08-02/DECYZJA_UPO.md). Kanały alertów email, slack i sms są ustawione na false, co znaczy, że alerting M1–M5 nie alarmuje — monitoring bez powiadomienia jest dekoracją. Integracja ePUAP działa w trybie mock bez klucza API, więc żadne pismo nie wychodzi na zewnątrz.

Lekcja procesowa. Ten sam wzorzec wystąpił trzykrotnie w ciągu trzech dni. Heurystyka wykrywania jest prosta i wystarczyła za każdym razem: wypisz wszystkie app.use(...) montujące routery i odfiltruj te bez argumentu ścieżki oraz bez przekazanej bramki. Wprowadzono też zasadę, że test zbierający prefiksy bramki musi używać dopasowania wielokrotnego — pojedyncze brało pierwsze wystąpienie i po dodaniu drugiej bramki cicho gubiło resztę.
2026-07-30 · remediacja po audycie rojami: bramka GOK, ukrycie Drive, korekta liczby agentów, klauzule RODO LIVE
Endpoint, który jednym anonimowym żądaniem zabijał proces, oraz baza spraw otwarta na zapis i kasowanie bez logowania
Status: WDROŻONE 2026-07-30 jako v1297. Wdrożenie domyka findingi audytu ekosystemu rojami z 2026-07-30. Każdy punkt był potwierdzony sondą przed zmianą i zweryfikowany na produkcji po wdrożeniu — treścią odpowiedzi, nie samym kodem HTTP.

Odporność na DoS (KRYT). GET /api/enterprise/limitations odwoływał się do CAPABILITY_REGISTRY, który nigdy nie trafiał do fabryki routera — ReferenceError w handlerze async, którego Express 4 nie łapie, a bez process.on('unhandledRejection') kończyło się to ubiciem procesu. Jedno anonimowe żądanie wyłączało serwis; podczas samego audytu produkcja padła w ten sposób na ok. 20 sekund. Poprawka (wstrzyknięcie rejestru + fallback przez Proxy + guard unhandledRejection) leżała w repozytorium niewdrożona. Smoke po wdrożeniu: HTTP 200 z realnymi nazwami zdolności, proces żyje, kolejne żądanie również 200. Weryfikacji nie prowadzono przez wywołanie awarii — to byłoby powtórzenie incydentu, nie dowód.

Bramka GOK (WYS). /api/gok/db/* wystawiało pełny CRUD bez uwierzytelnienia: anonim mógł czytać, tworzyć, modyfikować i usuwać rekordy spraw, a /api/gok/db/_schema zwracał schemat SQL. POST /api/gok/mail/send był otwartym przekaźnikiem poczty — przyjmował dowolnego odbiorcę. Sonda przed zmianą: GET /api/gok/db/sprawy bez sekretu → 200. Bramka przepuszcza dwie drogi, bo endpointy mają dwóch klientów: sesję panelu operatora albo token serwisowy. Objęto wyłącznie prefiksy /api/gok/db i /api/gok/mail — pod /api/gok wiszą też publiczne API bazy wiedzy kampanii (Q354–700), których zabramkowanie zepsułoby działającą funkcję. Osobno zabramkowano samo narzędzie operatora gok-template-picker.html, dotąd dostępne publicznie: sama bramka na API nie wystarczała, bo strona nadal ładowałaby się każdemu. Po wdrożeniu: odczyt, DELETE, schemat i wysyłka → 403; strona narzędzia zwraca ekran logowania i zero odwołań do endpointu wysyłki. Kontrola negatywna: /api/health nadal 200. Dodano też opcjonalną allowlistę odbiorców (GOK_MAIL_ALLOWLIST) jako obronę w głąb — pozostaje do ustawienia przez operatora, bo legalny zbiór adresatów to organy publiczne i nie da się go wyprowadzić z kodu.

Korekta liczby agentów (WYS, wrażliwe pod AI Act art. 50). Pięć miejsc na trzech stronach publicznych głosiło „234 agentów PRODUCTION / live" jako DANE. Rejestr /api/agents/v2/export.json zwraca 1012 agentów, wszystkie w stanie DORMANT, produkcyjnie aktywnych 0. Teksty sprowadzono do stanu rejestru, z podaniem źródła i daty oraz zdaniem, że rejestracja w katalogu nie jest równoznaczna z działającym agentem. Po wdrożeniu: 0 wystąpień dawnej liczby.

Ekspozycja dokumentów (WYS). Publiczna strona /wiki/linki wystawiała 8 adresów folderów i dokumentów roboczych (m.in. tożsamość, dokumenty do podpisu, redline, korespondencja regulacyjna). Same foldery były prywatne, więc wyciekała struktura i nazwy materiałów, nie treść. Sekcję usunięto w całości, a nie zabramkowano — samo bramkowanie zostawiłoby identyfikatory w repozytorium, które jest przygotowywane do publikacji jako open source. Po wdrożeniu: 0 trafień.

Klauzule informacyjne RODO. Dwa formularze zbierające dane (/dolacz — 2 pola, /ai-truth/zglos-naruszenie — 5 pól) nie zawierały żadnej wzmianki o administratorze danych ani podstawie prawnej. Dodano klauzule z art. 13 RODO: administrator, cel, podstawa, dobrowolność, prawa, organ nadzorczy, retencja. Przy okazji sonda wykazała, że planowany odnośnik /polityka-prywatnosci nie istnieje (404) — obie klauzule wskazują realny adres /privacy.

Czego to wdrożenie NIE domyka — jawnie. Allowlista odbiorców poczty jest zaimplementowana, ale nieustawiona, więc druga warstwa obrony pozostaje nieaktywna. Pięć stron warstwy badawczej za logowaniem nadal nosi badge RESEARCH_LAYER zamiast GATED — badge nie jest fałszywy, tylko niepełny, a niesie dyskwalifikację „nie produkt", która ma znaczenie regulacyjne. Trasa /ai-truth/ipIII/konsola- zwraca 404 wskutek literówki w nazwie. Status produktu /mecz pozostaje nierozstrzygnięty i dlatego celowo nie został dodany do mapy strony.
2026-07-30 · mapa strony: cztery nieprawdziwe odznaki i 31 brakujących stron LIVE
Mapa opisywała stan sprzed 17 dni i nie znała ani jednego wejścia maszynowego — mimo sekcji „dla agenta"
Status: WDROŻONE 2026-07-30 jako v1297. Pomiar objął wszystkie 505 pozycji mapy oraz sondę 476 adresów wewnętrznych, anonimowo, z weryfikacją treści odpowiedzi. Sama mapa okazała się solidna: liczniki wszystkich 10 sekcji zgadzały się co do jednego, rozwiązywalność linków wyniosła 99,6%, a wszystkie 9 przekierowań miało zgodny badge MAINTENANCE.

Cztery odznaki były nieprawdziwe (trafność PUBLIC_LIVE: 98,7%). Najdroższy błąd: /dossier zwracał 404 z odznaką „strona działa i pokazuje realną treść" w sekcji „Dla partnera / banku" — czyli dokładnie ten adres, ta sekcja i ta odznaka, gdzie pomyłka kosztuje najwięcej wiarygodności. Ani plik, ani trasa już nie istniały, więc nie było czego przywracać — adres usunięto (podobnie /aukcja). /tech-sector i /scoreboard oddawały ekran logowania; bramka panelGuard jest tam celowa, więc naprawiono odznakę, nie serwer — wprowadzono nowy status GATED. /pricing jest przekierowaniem, więc dostał MAINTENANCE. Angielska wersja pulpitu ipIII niosła mocniejszy claim niż polska (PUBLIC_LIVE vs DEMO_SIMULATION) — ujednolicono w dół.

Luka pokrycia. Z 301 tras stron w server.js aż 66 nie występowało na mapie. 16 słusznie (panele za bramką), 18 to przekierowania, ale 32 były otwarte anonimowo i miały realną treść. Dopisano 31 adresów, każdy uprzednio zweryfikowany jako 200 z treścią: całą suitę White OSINT (7 narzędzi), filary Kamerun i Argentyna w obu językach, /ai-truth/tarcza, /min-finansow, /unia, /stan-przed-ai-act, /aktualne-dzialania, /work-with-us, /system-map. Osobna nowa podsekcja objęła wejścia maszynowe (llms.txt, openapi.json, pages.json, sitemap.xml, status.json) — sekcja „Dla dewelopera i agenta" liczyła 42 pozycje i nie zawierała ani jednego punktu wejścia dla agenta. Liczniki przeliczono z rzeczywistej zawartości: 505 − 2 + 31 = 534.

Bramka przeciw ponownemu rozjazdowi. __tests__/mapa-strony-coverage.test.js (9 testów, hermetyczny) porównuje trasy app.get z zawartością mapy, z jawną listą wykluczeń, gdzie każdy z 35 wpisów ma powód, oraz asercją pilnującą, żeby lista nie zgniła. Podsekcje liczy w granicach sekcji — liczenie „do następnego nagłówka w całym pliku" przekracza granicę <section> i daje fałszywy alarm; ta pułapka wygenerowała nieprawdziwy finding w pierwszym przebiegu analizy i została wpisana w test jako komentarz. Test zweryfikowano mutacją, nie zielonym przebiegiem: usunięcie /llms.txt z mapy → 5 z 9 testów czerwonych, po przywróceniu 9/9.
2026-07-30 · bramka retestu — rdzeniowy claim oferty przestał być narracją LIVE
Reguła „nie zamkniesz incydentu bez retestu" była sprzedawana od 13 lipca, a kod jej nie egzekwował
Status: WDROŻONE 2026-07-30 jako v1297 (wcześniej wpis nosił status „w repozytorium, NIE na produkcji" i wskazywał v1290 — zaktualizowany po wdrożeniu).

Audyt własny wykazał, że USP produktu nie miało pokrycia w kodzie: POST /incidents/:id/close wymagał wyłącznie jakiegokolwiek dowodu o statusie CONFIRMED, niezależnie od evidence_type — więc zrzut ekranu dowodzący istnienia podatności wystarczał do jej zamknięcia. Retest figurował jedynie jako jeden z sześciu wymiarów informacyjnego wskaźnika coverage i nie blokował niczego. Tymczasem materiały ofertowe (m.in. docs/oferta/OFERTA-ipIII-2026-07-13.md, docs/oferta/rspace-konrad/01-DECK-sprzedazowy-K0NSULT.md) twierdziły „zamknięcie wymaga retestu — PUBLIC_LIVE" od 13 lipca. Dokumentacja wyprzedziła kod o 17 dni — i to jest właściwa nazwa tego zdarzenia, nie „drobny rozjazd".

Naprawa: bramka wymaga dowodu CONFIRMED, którego evidence_type pasuje do /retest/i; brak → HTTP 409 closure_requires_confirmed_retest z polami {missing, have, remedy}. Istniejąca reguła 422 (brak jakiegokolwiek dowodu) nietknięta. Flaga IP3_RETEST_GATE (domyślnie on, fail-closed na wartości śmieciowe, czytana per request — fly secrets set działa bez redeployu) pozwala wyłączyć bramkę na czas domknięcia zaległości. Pole retest_gate trafia do odpowiedzi i do wpisu audytowego, więc wyłączenie bramki nie jest ciche. Ten sam kontrakt błędu w warstwie demo, bo na demo patrzy klient w kontrolowanym PoC.

Weryfikacja wektorem izolującym, nie zielonym testem. tests/ip3-retest-gate.unit.js montuje realny router z realnym HTTP i JWT (mock tylko puli PostgreSQL). Para przypadków różni się dokładnie jednym wierszem {evidence_type:'retest', status:'CONFIRMED'} przy identycznych trzech dowodach CONFIRMED; przypadek negatywny wymaga 409 oraz dowodzi, że UPDATE … response_status='closed' nigdy nie poszedł do bazy i że w audycie nie ma wpisu incident.close. Mutacja wzorca /retest/i → 10 FAIL; wyłączenie bramki w kodzie → 20–27 FAIL; po przywróceniu 47/47 PASS. Sprawdzone niezależnie w sześciu osobnych przebiegach audytowych.

Czego bramka NIE dowodzi — jawnie. Dowodzi istnienia rekordu oznaczonego jako retest, potwierdzonego przez człowieka, z treścią co najmniej MIN_CONTENT_LEN znaków. Nie dowodzi, że retest się odbył ani że przeszedł. Automatyczne ponowne wykonanie skanu pozostaje ROADMAP. Wzorzec /retest/i jest dopasowaniem podłańcucha — celowo spójnym z istniejącym wskaźnikiem coverage — więc wartości semantycznie zaprzeczające (np. retest-nie-wykonany) bramkę przechodzą. Zamknięty słownik evidence_type to osobna zmiana kontraktu API. Ograniczenie zapisane w docs/SLOWNIK-ANTY-OVERCLAIM.md.

Domknięte po panelu 10 niezależnych recenzji adwersaryjnych i metarecenzji. Panel złapał trzy defekty wprowadzone przez samą naprawę: (1) komunikat remedy w odpowiedzi 409 podawał ciało żądania prowadzące z powrotem do 409 — bez jawnego confirmation_level dowód wychodzi UNVERIFIED, a bramka wymaga CONFIRMED; (2) ten sam błąd był w asercji testu integracyjnego, w tym w linii preegzystującej, nigdy nieuruchomionej (test jest w EXCLUDE CI i wymaga żywej bazy); (3) komentarz w warstwie demo twierdził „kontrakt produktu 1:1", podczas gdy demo jest istotnie słabsze — status dowodu ustawia tam klient, a PATCH bez uwierzytelnienia pozwala ustawić response_status wprost. Wszystkie trzy poprawione; słabości demo opisane jako jawny GAP, nie utwardzone (dane efemeryczne, syntetyczne, warstwa oznaczona SIMULATION). Utwardzenie demo i zamknięty słownik typów dowodu — osobne zadania.
2026-07-30 · konektory: status ROADMAP → MVP za dowodem, oraz korekta liczby w drugą stronę LIVE
Jedyny przypadek, w którym status był ZANIŻONY — silnik importu działał, a strona twierdziła, że go nie ma
Status: WDROŻONE 2026-07-30 jako v1297. Audyt 16 ścieżek modułu wykazał, że 44 z 47 wpisów ROADMAP całego portalu dotyczy ipIII i w większości jest to ocena uczciwa — realna logika kliencka istnieje tylko w 4 z 16 zbadanych stron. Wyjątkiem są konektory: parsery mają realny kod, testy jednostkowe i zamontowany endpoint produkcyjny, a strona nosiła badge ROADMAP i zero wywołań fetch. Status podniesiony do MVP w rejestrze _ip3Status i CONTROLLED_POC na mapie strony — zgodnie z istniejącą konwencją, w której wszystkie strony o statusie MVP są odznaczone tak samo (71 stron).

Skutek uboczny jest zamierzony i jednokierunkowy: POLICY.MVP oznacza index:true, sitemap:true, więc strona wchodzi do sitemap i traci X-Robots-Tag: noindex — po pierwszym crawlu wycofanie nie usuwa jej z indeksu natychmiast. Dlatego liczby weryfikowano przed wdrożeniem, komendą, nie z pamięci. Wynik zaskoczył w drugą stronę: pierwotne „17 konektorów" było zaniżone o pięć. Faktycznie 20 endpointów importu zamontowanych bezwarunkowo + 2 za flagą env (IP3_SCM_INGEST, IP3_STIX) — grype, faraday i nuclei są montowane tą samą fabryką i mają przechodzące testy, a nie występowały na stronie ani razu. Twarda liczba została usunięta z opisów meta, og, twitter i JSON-LD; w metryce podana jest wraz z komendą weryfikacyjną, żeby dała się sprawdzić, a nie tylko przeczytać. Usunięto też numery linii z opisów parserów — na stronie index:true zgniłyby przy pierwszym kolejnym commicie, czyli byłyby dokładnie tym defektem, przeciw któremu strona ma być argumentem.
2026-07-30 · /pricing prowadził klienta na ścianę logowania LIVE
Materiały ofertowe wskazują ten adres jako „checkout Stripe LIVE_PROD" — a docelowa strona jest za bramką operatorską
Status: WDROŻONE 2026-07-30 jako v1297. public/pricing.html przekierowywał na /skill_shop.html, który jest na liście adminPages i zwraca 302 na /login.html. Jednocześnie sześć miejsc w materiałach dla partnera handlowego opisuje ten sam adres jako „Zakup subskrypcji/one-off — Stripe LIVE, PLN/EUR, faktura VAT" oraz „Strona cennika (checkout Stripe) — LIVE_PROD". Do tego docelowa strona generuje ceny losowo w JavaScripcie. Czyli funnel self-serve opisany w rozdystrybuowanej ofercie nigdy nie działał dla klienta zewnętrznego — to overclaim w materiałach, nie regresja wdrożenia; pierwsza recenzja zaklasyfikowała go odwrotnie i została skorygowana testem na produkcji. Przekierowanie wskazuje teraz /ai-truth/ipIII/pricing (publiczne, 200, z jawnym zastrzeżeniem „to nie oferta wiążąca"); wszystkie cztery wektory spójne: meta-refresh, canonical, location.replace i widoczny odnośnik. Korekta materiałów ofertowych pozostaje otwarta.
2026-07-29 · archiwizacja AgroTony / Farma Alaska — mniejsza powierzchnia i koszt LIVE
Wycofane z produkcji, zachowane w archiwum — plus korekta błędu złapanego przed wdrożeniem
Decyzją operatora wycofano z produkcji pokój audytowy AGROTONY (marzec 2026) oraz demo „Złota Karta" / Farma Alaska. Usunięto route /brama, /dossier, /aukcja wraz z aliasami 301, rozgałęzienie po nazwie hosta farmaalaska.pl, montaż API /api/agrotony-zlota/* (demo było in-memory — zero dotknięć produkcyjnej bazy, więc odmontowanie nie zostawia osieroconych danych) oraz sześć wpisów z listy dozwolonych źródeł CORS. Skasowano trzy certyfikaty TLS na Fly. Materiały nie zostały skasowane — 304 śledzone pliki pozostają w historii Git, a 128 plików nieśledzonych (~96 MB archiwów i zrzutów) zostaje na dysku operatora jako jedyna kopia; przed wyjazdem do obrazu powstrzymuje je wpis w .dockerignore. Efekt: kontekst budowania spadł o ~98 MB. Korekta złapana przed wdrożeniem: pierwsza wersja zmiany wykluczała też public/demo/agrotony* — a stamtąd serwowane były trzy żywe route publiczne. Kontrolne sprawdzenie server.js (nie tylko linków w HTML) pokazało /brama, /dossier i /aukcja odpowiadające kodem 200. Reguła na przyszłość: „wygląda na martwe" ≠ „jest martwe" — sprawdzać route w kodzie, nie tylko odnośniki na stronach.
2026-07-29 · AES-GCM: długość tagu uwierzytelniającego wymuszona jawnie (pierwszy SAST na repo) LIVE
Skrócony tag GCM był przyjmowany bez błędu — w ścieżce izolacji najemców
Wdrożono v1290. Pierwszy przebieg semgrep (p/javascript) na tym repozytorium dał 28 findingów, w tym 2 o randze ERROR — oba potwierdzone jako prawdziwe i naprawione: services/secrets-manager.js:41 oraz services/tenant-isolation.js:383. crypto.createDecipheriv('aes-256-gcm', …) wywoływane bez opcji authTagLength powoduje, że setAuthTag akceptuje tag skrócony; skrócony tag GCM obniża koszt podrobienia szyfrogramu o rzędy wielkości, a w ścieżce izolacji najemców oznacza tańsze podszycie się pod dane innego tenanta. Poprawka: jawne { authTagLength: 16 }. Weryfikacja wektorem izolującym, nie zielonym testem: przy tagu przyciętym do 4 bajtów stary kod przyjmował bez błędu, nowy odrzuca; tag 16-bajtowy (produkcyjny) działa w obu wariantach, więc zmiana jest wstecznie zgodna. Node potwierdza klasę błędu własnym DEP0182. Artefakty dowodowe: SAST_SEMGREP.json, SBOM.cdx.json (CycloneDX 1.7, 696 komponentów), DEPENDENCY_AUDIT.json (740 zależności, 39 podatności: 0 krytycznych, 25 wysokich), SECRETS_GITLEAKS.json (skan całej historii Git). Nie raportujemy 167 trafień gitleaks jako „167 sekretów" — 104 to generic-api-key na ciągach wysokiej entropii, a 7 z 8 trafień wysokiego sygnału to celowe przynęty w testach detektora sekretów.
2026-07-29 · moduł Human Design — API za bramką operatorską LIVE
Dane urodzeniowe to dane osobowe, więc endpoint nie jest publiczny
Wdrożono v1289. Moduł HD (silnik efemeryd, wykres, kompozyt, penta, tranzyty, cykle) podpięty pod /api/hd za panelGuard — bramka montowana przed routerem, tym samym wzorcem co /api/stadium. Powód: data, godzina i miejsce urodzenia są danymi osobowymi (RODO art. 4), a profil z nich wywiedziony również. Moduł liczy i zwraca, ale nie zapisuje — zero persystencji. W samym module obowiązuje twarda blokada: API nie zwraca rekomendacji dotyczących roli, przydziału pracy, zatrudnienia, awansu ani wynagrodzenia — nie ze względów estetycznych, lecz dlatego, że ten sam kanon wydaje sprzeczne werdykty o tej samej osobie zależnie od wybranej warstwy. Rozdział obowiązuje: dowód na maszynerię (wykres jest deterministyczną, odtwarzalną funkcją danych wejściowych), narracja na znaczenia — zawsze z etykietą. Weryfikacja na produkcji: /api/hd/ssot i /api/hd/chart zwracają 401. Testy silnika: 12/12.
2026-07-29 · globalny error handler — rozjazd status↔body domknięty (finding #2 audytu zewnętrznego) LIVE
Zepsuty JSON zwracał kod 400, ale komunikat „Internal server error" — teraz kod i treść mówią to samo
Wdrożono v1287. Finding #2 z audytu zewnętrznego z 24.07: żądanie z niepoprawnym JSON-em dostawało status 400 Bad Request, ale w ciele odpowiedzi zaszyty na sztywno komunikat Internal server error. Ten sam rozjazd dotyczył 413 i 415. Klasyfikację błędu wydzielono do middleware/error-classifier.js (czysta funkcja clientErrorMessage) mapującej klasę błędu na neutralny komunikat bez ujawniania err.message — postura anty-info-disclosure. Weryfikacja różnicowa na produkcji: POST /api/contact z ciałem {"zepsuty":przed wdrożeniem 400 + "Internal server error", po wdrożeniu 400 + "Malformed JSON in request body". Testy jednostkowe i e2e modułu: 10/10 (__tests__/error-classifier.test.js, mutacyjnie weryfikuje fix). Pozostałe findingi tej rundy: #1 (CORS) — non-issue, obowiązuje ścisła allowlista; #3 (403 przy braku roli) — zachowanie zamierzone.
2026-07-21 · strona /work-with-us — capability sheet EN + wezwanie do współtworzenia open source LIVE
Jedna odpowiedź na inbound: wysyłamy własny link zamiast wypełniać cudze formularze
Opublikowano /work-with-us — anglojęzyczną kartę kompetencji K0NSULT wraz z CTA do warstwy open source (Apache-2.0). Strona jawnie rozdziela trzy tory (open source / portal AI Truth / linia komercyjna) i wprost przyznaje, że linia komercyjna nie jest otwarta — Apache-2.0 jest nieodwracalny, a „open-source-washing" (odznaka OSS nad zamkniętym rdzeniem) traktujemy jako wadę ładu korporacyjnego. Każda liczba na stronie podana z mianownikiem i źródłem (m.in. 9/9 repozytoriów z SECURITY.md; 31/31 findingów rundy 1 audytu zewnętrznego domkniętych), z zastrzeżeniem, że są to liczniki wykonanej pracy, nie dowód braku dalszych defektów. Sekcja „czego NIE robimy" wyklucza rekomendacje inwestycyjne, sygnały tradingowe, sprzedaż tokenów i niezamówioną rekrutację. Sekcja „test wzajemności" wymaga od obu stron nazwy podmiotu, numeru rejestrowego, imiennego kontaktu i weryfikowalnego kanału — nasze podane na tej samej stronie (KRS 0001239441, podpisany security.txt). Powód powstania: przychodząca oferta rekrutacyjna od podmiotu bez ujawnionego podmiotu prawnego i z metryką „AI confidence 87,4%" publikowaną bez metody — odpowiadamy odwróceniem ciężaru dowodu, nie formularzem.
2026-07-20 · security.txt zgodny z RFC 9116 — podpis PGP (clearsign) + klucz publiczny + pole Encryption LIVE
Kanał zgłaszania podatności utwardzony kryptograficznie
Opublikowano /.well-known/security.txt oraz /security.txt w formacie RFC 9116, clearsigned PGP (weryfikowalny „Good signature"), wraz z kluczem publicznym /.well-known/pgp-key.asc i polem Encryption. Fingerprint: F42D 1C42 F167 4E06 222F B8EB 1FAC 6A83 5615 5FBF (klucz prywatny w gestii operatora, poza repozytorium). Umożliwia poufne, uwierzytelnione zgłaszanie podatności do security@k0nsult.cloud.
2026-07-20 · karty dowodowe organów (MC + MF) + integracja z Common Source of Truth LIVE
Odpowiedzi ministerstw na pytania o AI Act jako weryfikowalny dowód (claim ≤ proof)
Dodano kartę dowodową Ministerstwa Finansów (pismo BMI1.0123.2113.2026, 17.07.2026): ujawnione systemy AI KAS (OKO, TAX FREE2, voicebot Kasja, czatbot Kaspro, Copilot) jako DOWÓD oraz luki wobec AI Act (m.in. brak programu AI literacy — art. 4 obowiązuje od 2.02.2025) jako GAP. Wpięte w Common Source of Truth: dowód K0-EVD-000002, twierdzenia K0-CLM-000002..000007, trigger art. 4 — dostępne przez /api/cst/evidence, /api/cst/claims, /api/cst/legal-triggers. Karty MC/MF podlinkowane z portalu AI Truth, zakładki Unia i portalu CST. Materiał oparty na publicznych pismach (dostęp do informacji publicznej), nie porada prawna.
2026-07-20 · adwersaryjna weryfikacja własnych poprawek — wykryto i naprawiono 5 realnych regresji/obejść AUDYT
Cztery niezależne agenty próbowały obalić poprawki — złapały drugą warstwę ReDoS, obejście przez enkodowanie i spoofing IP
Po naprawach uruchomiono adwersaryjną weryfikację (4 niezależnych recenzentów, każdy próbuje OBEJŚĆ poprawki, nie potwierdzić). Wykryto 5 realnych problemów, które naprawiono: (1) odporność na DoS była niepełna — po utwardzeniu głównego ekstraktora XML ten sam atak przenosił się o funkcję dalej (tag1, osiągalny na treści pojedynczego dużego elementu); przepisano oba na wspólny skan liniowy (atak 200 tys. tagów: godziny → 18 ms). (2) Kontrolę dostępu do paneli dało się ominąć przez percent-encoding URL (%2e zamiast kropki) — dodano twardy gate na zdekodowanej nazwie pliku przed serwowaniem statycznym (encoding-proof). (3) Whitelist IP operatora ufał nagłówkowi X-Forwarded-For (sterowanemu przez klienta) i dopasowywał prefiks bez granicy — teraz tylko IP kontrolowane przez proxy Fly + dopasowanie na granicy. (4) Bazowy hub konsoli i panele wewnętrzne były niebramkowane — dodano bramkę. (5) Drobny wyciek ścieżki w diagnostyce + spójność progu treści dowodu. Testy regresji: 171 asercji zielonych. Metoda „niech niezależni sprawdzą, czy poprawka naprawdę trzyma" złapała to, czego autor nie zobaczył.
2026-07-20 · domknięcie backlogu hardeningu po audycie roju (11 pozycji LOW/INFO) AUDYT
Utwardzenie drugiej warstwy: info-disclosure, walidacja wejścia, spójność audytu — plus uczciwe oznaczenie granic
Po naprawie blokerów domknięto backlog rekomendacji: pin algorytmu JWT (defense-in-depth), originy deweloperskie i nagłówek wersji tylko poza produkcją, publiczny /api/ip3/ssot nie ujawnia już bezwzględnych ścieżek serwera (tylko nazwy plików), odpowiedź 403 nie odbija roli wywołującego, walidacja severity w PATCH wyrównana z POST, ograniczenia sla_hours i format e-mail właściciela, dedykowany wpis audytowy incident.dismiss, bramka CONFIRMED wymaga treści substantywnej (nie trywialnego znaku), hash_scope pakietu jawnie wyklucza pola dodawane po hashu (audytor zewnętrzny liczy zgodnie), konto admina demo ma osobne hasło (nie współdzieli z operatorem). Uczciwie oznaczone granice (nie udawany fix): weryfikacja łańcucha audytu potwierdza spójność linkowania, ale nie wykrywa obcięcia ogona bez zewnętrznej kotwicy (ROADMAP); podpis pakietu to HMAC integralności, nie kwalifikowany podpis eIDAS; rate-limitery in-memory per-instancja wymagają Redis przed skalowaniem poziomym. Usunięcie CSP unsafe-inline odroczone świadomie — to refaktor 365 inline-handlerów na 42 stronach (nie tylko ipIII), ryzykuje złamanie UI; pozycja LOW, do zaplanowanej migracji. Testy regresji zielone.
2026-07-20 · utwardzenie po audycie roju 10 niezależnych pentesterów + meta-weryfikacja AUDYT
Werdykt „zatwierdzone warunkowo" (6/10) → naprawa 2 realnych HIGH + 3 MED, rdzeń potwierdzony jako zdrowy
Produkt przeszedł niezależny audyt bezpieczeństwa: 10 wyspecjalizowanych pentesterów (uwierzytelnianie, autoryzacja/tenant, injection, parsery, logika biznesowa, wyciek informacji, kontrola dostępu stron, API-security, kryptografia dowodu, deployment), każdy finding weryfikowany adwersaryjnie, całość spięta meta-weryfikacją. Potwierdzone pozytywy kontrolne: brak SQLi (parametryzacja), XXE strukturalnie niemożliwy (parsery bez silnika XML), brak command/template injection, JWT z pinem algorytmu i fail-closed. Naprawiono zgłoszone realne defekty: eskalacja uprawnień w moście logowania panelu (goście-recenzenci nie dostają już uprawnień operatora/admina — tylko podgląd read-only), odporność parserów importu na DoS (skan liniowy zamiast kwadratowego — patologiczne wejście 3 MB: 50 s → 11 ms), domknięcie kontroli dostępu do paneli operatora (surowe pliki wymagają teraz bramki), fail-safe izolacji multi-tenant (odmowa startu przy sprzecznej konfiguracji) oraz wzmocniona ochrona logowania (licznik brute-force per-konto + stały czas odpowiedzi). Dane produkcyjne pozostają wyłącznie SIMULATION/DEMO. Testy regresji: parsery + tenancy + logowanie zielone.
2026-07-19 22:45:08 · domknięcie powierzchni: OpenVAS i skala widoczne w produkcie + test LIVE
Strony produktu, oferta i dokumentacja wyrównane do nowego modelu — koniec rozjazdu
Po dodaniu konektora OpenVAS i skali potwierdzenia wyrównano powierzchnię produktu: strona konektorów listuje teraz OpenVAS (endpoint /imports/openvas, darmowa alternatywa Nessusa), warstwa dowodowa dokumentuje skalę Tentative → Firm → Confirmed + odrzucenie false-positive, a przegląd produktu pokazuje 20 parserów. Logika skali wyodrębniona do osobnego, testowalnego modułu (routes/ip3-confirmation.js) z testem jednostkowym 12/12. Framing „odsiewanie false-positives jako mierzalna liczba" przeniesiony do oferty — wprost z feedbacku pentestera. Zero rozjazdu między kodem a tym, co widzi kupujący.
2026-07-19 22:06:09 · skala potwierdzenia dowodu: Tentative / Firm / Confirmed + odrzucenie FP LIVE
Stopniowana pewność dowodu wg standardu branżowego (Burp) — na bezpośredni feedback pentestera
Model dowodu przestaje być binarny („jest dowód / GAP"). Wprowadzono skalę potwierdzenia na dowodzie (confirmation_level): TENTATIVE (słaby sygnał / import z narzędzia — do weryfikacji) → FIRM (mocny dowód, niepełna reprodukcja) → CONFIRMED (zweryfikowane, odtwarzalne). Osobno REJECTED = false positive → incydent oznaczony dismissed. Nazewnictwo 1:1 ze standardem, który pentesterzy znają z Burpa. Reguła close-with-evidence bez zmian: zamyka wyłącznie CONFIRMED (claim≤proof — Firm/Tentative nie zamykają). Import narzędziowy ustawia TENTATIVE automatycznie. Statystyki liczą teraz odsiane false-positives (false_positives_filtered) — mierzalny dowód rdzennej wartości evidence-first. Migracja additive (istniejące dowody backfillowane ze stanu, zero utraty). Zmiana z bezpośredniego feedbacku niezależnego pentestera oceniającego produkt.
2026-07-19 21:57:28 · nowy konektor OpenVAS/Greenbone (feedback pentestera) LIVE
Import findingów OpenVAS/GVM — darmowa alternatywa dla Nessusa, na sugestię recenzenta z branży
Dodano parser i endpoint importu POST /api/ip3/v1/imports/openvas dla raportów OpenVAS/Greenbone (GVM) w formatach XML i CSV. Mapowanie severity: tekstowy threat (High/Medium/Low/Log) z priorytetem, fallback na numeryczny CVSS. Kształt findingu identyczny jak Nessus/Qualys — spina się z resztą bez zmian. Import = MEDIA_SIGNAL (sygnał skanera, nie dowód naprawy; zamknięcie nadal wymaga potwierdzonego dowodu — reguła close-with-evidence, claim≤proof). Pre-check XXE na wejściu XML. Test jednostkowy 13/13. Zmiana z bezpośredniego feedbacku niezależnego pentestera oceniającego produkt.
2026-07-18 22:24:24 · wdrożenie zewnętrznego audytu bezpieczeństwa (K. Roxkon) AUDYT
Trzy findingi zewnętrznego audytu kodu ipIII przyjęte i naprawione
Audyt zewnętrzny (przegląd kodu repozytorium seeda) zgłosił trzy zagadnienia bezpieczeństwa API — wszystkie potwierdzone i naprawione. 1. Brute-force loginu: istniejący moduł limitera nie był wpięty w /api/ip3/v1/auth/login; teraz po serii nieudanych prób endpoint zwraca 429 z Retry-After (klucz email+IP, blokada 15 min), udane logowanie czyści licznik. 2. Izolacja tenantów bezpieczna domyślnie: scoping był domyślnie wyłączony (opt-in); odwrócone — teraz jest domyślnie włączony, a wyłączyć można wyłącznie jawną, nazwaną bramką trybu pojedynczego tenanta. Świeże wdrożenie jest bezpieczne bez żadnych flag. 3. Maskowanie błędów: 12 handlerów zwracało surową treść wyjątku w odpowiedzi 500; teraz zwracają ogólny internal_error z request_id, a szczegóły trafiają wyłącznie do logu serwera. Dodatkowo wpięto pre-check XXE na importach XML (odrzuca DOCTYPE/ENTITY przed parsowaniem). Doktryna claim≤proof: to warstwa hardeningu, nie certyfikacja.
2026-07-15 14:14:08 · nowa zakładka „Inny kontynent" przy AI Truth — biały OSINT Kamerunu LIVE
Pierwszy kraj nowej zakładki: mapa gotowości cyfrowej i cyberbezpieczeństwa Kamerunu (evidence-first)
Pełna analiza „jak dla Unii", z twardymi liczbami z pierwotnych źródeł. Instytucje (ANTIC/ART/CIRT), prawo (odpowiednik RODO — Loi 2024/017 — bez działającego DPA; brak AI Act; Malabo podpisana, nieratyfikowana), infrastruktura, cyber (ITU GCI Tier 3), ekosystem prywatny, benchmarki (EGDI 0,4294 #155/193; GII 2025 #116/139, infrastruktura #134/139; NRI #115/134; GTMI Grupa C), sąsiedzi poglądowo i ranking Afryki. Kluczowe ustalenie: nisza silnika dowodowego AI-governance w Kamerunie = pole puste (GAP). Każdy fakt oznaczony DOWÓD (URL + rok) lub GAP (jawnie brak danych), zasada claim ≤ proof. Dostępna pod /ai-truth/kamerun.
2026-07-13 22:53:21 · domknięcie bramki + utwardzenie anonimizacji (audyt 3 sędziów) LIVE
Niezależny audyt trzech sędziów wykrył i domknął dwie realne dziury
Statyczny bypass bramki — zamknięty. Strony za logowaniem (kolejka fal, panele, konsole) leżą fizycznie w katalogu publicznym, więc dało się je pobrać surowo pod adresem pliku z pominięciem bramki (potwierdzone: 200 bez logowania). Przyczyna: dwa handlery serwujące pliki, bramkowany był tylko drugi. Naprawione u źródła — surowy dostęp do plików chronionych wymusza teraz logowanie. Zweryfikowane: 6 stron ops → ekran logowania, strony publiczne bez zmian. Anonimizacja rejestru — utwardzona. Bramka wykrywała nazwiska tylko w parach („Imię Nazwisko"); pojedynczy token-nazwisko w temacie przechodził. Dodano kontrolę pojedynczych tokenów przez zamkniętą whitelistę instytucjonalną — każdy token spoza niej jest flagowany do ręcznego przeglądu. Test negatywny: podłożone „Nowakowski" jest teraz odrzucane, prawdziwe 27 pozycji przechodzi. Siatka bezpieczeństwa: eksporty danych (mbox/Takeout/eml) dodane do listy ignorowanych przez repozytorium.
2026-07-13 22:17:27 · dashboard kolejki fal za bramką (higiena ekspozycji) LIVE
Wewnętrzny widok kolejki fal przeniesiony za logowanie — nie wystawia portfela projektów publicznie
Dashboard /ai-truth/ipIII/kolejka-fal i jego endpoint /api/ip3/kolejka-fal objęto bramką email-OTP (panelGuard) — tym samym mechanizmem co konsole operacyjne. Powód: endpoint pobierał całą kolejkę federacji K0NSULT (wszystkie projekty, nie tylko ipIII — opisy zadań i identyfikatory agentów), więc na publicznej stronie produktu bankowego ujawniał wewnętrzny portfel prac. Po zmianie: bez zalogowania strona pokazuje ekran logowania, a API zwraca 401 (zero danych kolejki). To narzędzie ops, nie funkcja produktu — jego miejsce jest za bramką.
2026-07-13 19:50:12 · krótki wjazd /ipiii do produktu ipIII LIVE
Czysty adres wejściowy produktu bankowego ipIII jako osobne aktywo
k0nsult.cloud/ipiii. Krótki adres wejściowy prowadzi na portal ipIII — ten sam backend, pełne /api/ip3, zero duplikacji. Produkt ipIII jest równolegle wyodrębniony jako osobne repozytorium (evidence-orchestrator), więc to brandowane wejście do działającego aktywa. Rozważaliśmy subdomenę ipiii.k0nsult.cloud, ale dla aktywa na sprzedaż wybraliśmy ścieżkę: adres demo i tak nie jest częścią transakcji (kupujący dostaje repozytorium i własną domenę), a ścieżka działa od razu bez ręcznego kroku DNS i bez zależności od certyfikatu.
2026-07-13 18:19:20 · mapa systemu przebudowana na 7 domen + strefy białego OSINT LIVE
Mapa systemu wg realnych domen ekosystemu i uruchomienie powtarzalnej infrastruktury białego OSINT
Mapa systemu — 7 domen wg priorytetu. /system-map przebudowana z czterech abstrakcyjnych gałęzi na siedem realnych domen ekosystemu, w kolejności priorytetu: K0NSULT (rdzeń) → ipIII (produkt bankowy, priorytet komercyjny) → AI-Truth (jawność) → Biały OSINT (usługa) → Unia (tor UE) → uni0nai (federacja agentów) → Hackaton. Każda domena z jawnym statusem i linkami zweryfikowanymi kodem odpowiedzi. Produkt bankowy pozostaje oddzielony od warstw badawczych. Strefy białego OSINT. Uruchomiono powtarzalną infrastrukturę White OSINT Evidence Suite: hub stref oraz pięć stref — Case Registry, Source Registry, Evidence Snapshotter, Claim-Proof Mapper i Defensive Exposure Reduction Pack (Anti-OSINT). Rama sztywna: wyłącznie biały OSINT, dane z legalnych źródeł, zgodnie z RODO, bez technik ofensywnych — Anti-OSINT opisuje wyłącznie co testowane i jaki dowód sukcesu (Report → rekomendacje → Retest). Statusy uczciwe: strona PUBLIC_LIVE, metodyka CONTROLLED_RESEARCH, automatyzacja ROADMAP.
2026-07-13 14:26:17 · mapa strony przebudowana pod odbiorcę LIVE
Mapa strony przestaje być spisem katalogów, a zaczyna być drogowskazem: partner, pentester, regulator, deweloper
Mapa strony. /mapa-strony — 505 pozycji pogrupowanych według odbiorcy i dojrzałości, a nie według struktury katalogów w kodzie. Sekcje: dla partnera i banku, dla pentestera i audytora, dla organu i regulatora, dla dewelopera i agenta, compliance i zastrzeżenia prawne, oraz osobno warstwa badawcza — nie produkt. Rozdzielenie jest celowe: partner bankowy ma nie pomylić eksperymentu z produktem. Statusy. Każda pozycja ma znacznik dojrzałości (PUBLIC_LIVE / CONTROLLED_POC / DEMO_SIMULATION / RESEARCH_LAYER / ROADMAP / MAINTENANCE) — 307 stron działa publicznie, 70 to kontrolowany PoC, 64 warstwa badawcza, 46 roadmapa, 12 symulacja, 14 w naprawie. Wszystkie 505 adresów sprawdzono kodem odpowiedzi: 497 zwróciło 200, 9 to stare przekierowania — te trafiły do sekcji archiwalnej z notą, zamiast zostać skasowane (zasada append-only: nic nie znika, wszystko ma ślad).
2026-07-13 14:14:28 · mapa systemu + rejestr wysyłek do organów (anonimizacja) LIVE
Centralna mapa czterech gałęzi z separacją produktu bankowego oraz jawny rejestr wystąpień do organów
Mapa systemu. /system-map — jedno miejsce pokazujące, co jest czym: ipIII jako kontrolowany PoC z warstwą dowodową (moduły enterprise jawnie oznaczone jako roadmapa, nie działający produkt), White OSINT Evidence Suite jako badanie w trybie kontrolowanym, UNI0NAI Federation Layer jako warstwa badawcza dla agentów oraz warstwa symulacyjno-kreatywna. Rozdzielenie jest celem samym w sobie: partner bankowy nie może pomylić eksperymentu z produktem. Każda pozycja ma status (PUBLIC_LIVE / CONTROLLED_POC / DEMO_SIMULATION / RESEARCH_LAYER / ROADMAP / MAINTENANCE), a wszystkie 28 linków zweryfikowano kodem odpowiedzi. Rejestr wysyłek do organów. /ai-truth/rejestr — 27 wystąpień w sprawie wdrożenia AI Act: instytucja, data, temat, termin i wynik. Z 27 wystąpień: 12 doczekało się odpowiedzi, 6 biegnie w terminie, 4 zakończyły się odmową, 1 przekazaniem do innego organu, 1 pozostaje bez odpowiedzi po terminie. Anonimizacja: funkcja ≠ nazwisko. Publikujemy instytucje i wynik ze słownika zamkniętego; nie publikujemy adresów e-mail, nazwisk urzędników ani treści odpowiedzi. Wolny tekst został wyłączony z publikacji w całości, a nie „przeczyszczony" — próba czyszczenia wzorcami przepuściła nazwisko i w jednym miejscu przekłamała fakt (podmieniła nazwę organu właściwego), więc metodę odrzucono jako niebezpieczną. Rozliczamy organy, nie ludzi. Sprawy sądowe spółki są poza zakresem rejestru.
2026-07-13 13:50:28 · odblokowany deploy (breadcrumb, P1/P2, CTA) + keep-warm uni0nai + naprawa listy keepalive LIVE
Domknięcie długu wdrożeniowego z 10 lipca i pierwszy punkt werdyktu rady: niezawodność przed kosmetyką
Odblokowany deploy. Zmiany zbudowane 10 lipca stały zablokowane na uporczywym błędzie EOF API Fly (prod stał na v1240). Po ustąpieniu awarii wdrożone na v1241 i zweryfikowane na produkcji: klikalny breadcrumb (356 stron), strony partner-portal, proof-apps i enterprise-modules (z uczciwymi statusami SCAFFOLD / enabled=0, bo to roadmapa, nie działający moduł), oraz CTA „Umów pilotaż" prowadzące na formularz pilotażu zamiast na prywatną skrzynkę. Keep-warm. Fly usypia maszyny po ok. 5 minutach bez ruchu, a wybudzenie uni0nai kosztowało około 19 sekund. Przyczyna: host nie znajdował się na liście pingowanej przez keepalive. Naprawione dwuwarstwowo — ping z zawsze-żywej aplikacji głównej co 3 minuty oraz wpis w harmonogramie GitHub Actions (odstęp skrócony z 10 na 5 minut, bo przy 10 zostawało okno na zaśnięcie). Pomiar jest jawny: /api/keep-warm pokazuje ostatni kod odpowiedzi i czas każdego celu — dowód zamiast deklaracji. Audyt listy keepalive. Z dwunastu monitorowanych adresów pięć wskazywało na aplikacje, które już nie istnieją, jeden na zgaszony Sentinel, jeden na nieaktualną ścieżkę (404), a adres główny był zdublowany. Lista przycięta do celów faktycznie żywych; wypisane pozycje nie zostały skasowane, lecz zarchiwizowane w pliku wraz z powodem (zasada append-only).
2026-07-10 02:55:28 · tor Unia + hub działań + stan przed AI Act + newsy wycieków + poprawki nawigacji LIVE
Domknięcie misji ai-truth: tor unijny, agregat kampanii, gotowość państw na AI Act, monitoring wycieków, korekty nazewnictwa i wyrównania menu
Tor Unia. /ai-truth/unia — tor UE równoległy do toru polskiego: adresaci (Komisja Europejska, ENISA, EDPB, sieć CSIRT), ramy AI Act/MiCA/DORA/NIS2, z notą, że to inicjatywa obywatelska, nie mandat organu. Hub działań. /ai-truth/aktualne-dzialania — jedno miejsce „co się teraz dzieje", karty kampanii ze statusami. Stan przed AI Act. /ai-truth/stan-przed-ai-act — uczciwa ocena gotowości państw UE: tylko część wyznaczyła organy, egzekucja rusza 2 sierpnia 2026, ale zdolność jest nierówna — gotowość nie równa się gwarancji ochrony. Każdy fakt z linkiem do źródła; to monitoring zewnętrzny, nie twierdzenie K0NSULT. Newsy — wycieki i monitoring dużych incydentów. Do /ai-truth/news dodano pięć zdarzeń (m.in. włamanie do rządowego komunikatora Tchap, naruszenie u producenta leków, odsłonięcie dwudziestu czterech miliardów rekordów) — z datami i źródłami. Poprawki. Pasek domen: etykieta domeny głównej zmieniona z formy prawnej („Spółka") na nazwę K0NSULT, a pasek wyśrodkowany, żeby nie uciekał do lewej krawędzi. W przewodniku migracji „gwarantujemy" → „zapewniamy". Na stronach ze starą taksonomią etykiet dodano notę, że oznaczają one proweniencję treści, nie status wdrożenia. Rejestr spraw compliance (GOK) uzupełniony o trzy kontrole branżowe (podmioty prawne, bez danych osób).
2026-07-10 02:01:10 · tarcza + biały OSINT + hackaton + portal deweloperski .dev LIVE
Cztery powierzchnie: parasol pokrycia dowodowego, teaser OSINT jako usługa, landing hackatonu, oraz kanał agentowy .dev
Tarcza. /ai-truth/tarcza — parasol spinający tor Polski i Unii jako „stan pokrycia dowodowego", nie „ochronę". Każda pozycja ma badge z kanonu siedmiu statusów i jawną kolumnę „ryzyko rezydualne — czego NIE pokrywa"; nagłówek stały mówi wprost, że sto procent oznacza pokrycie dowodowe zakresu, nie nieprzenikalność. OSINT. /ai-truth/osint — biały wywiad z otwartych źródeł jako teaser kompetencji (nie płatny raport), z rozróżnieniem biały/szary/czarny, granicami RODO i przykładem zanonimizowanym; płatna usługa prowadzi na k0nsult.cloud. Hackaton. /hackaton — inicjatywa osobna od produktu ipIII, pięć trybów, wejście na TERAC-ZHC-2026 jako partner infrastrukturalny bez opłat, z regułą RoE: ćwiczenie symulowane, wyniki to ustalenia edukacyjne, nie certyfikat. Portal deweloperski .dev. Kanał agentowy (nie dla ludzi) na k0nsult.dev odzyskał indeks i zasoby w języku maszynowym: welcome/openapi/sdk (agent-lang), /.well-known/agent.json i llms.txt. Linki wskazują żywe endpointy (OpenAPI ipIII, SSOT, federacja uni0nai). Typowane SDK (npm/pip) jest oznaczone jako ROADMAP — ścieżka surowego HTTP działa dziś, biblioteki jeszcze nie; nie udajemy gotowego.
2026-07-10 01:41:10 · jednolita nawigacja + naprawa linków + odpowiedź na audyt LIVE
Pasek federacji domen, menu i wezwanie do działania na każdej stronie; piętnaście martwych linków naprawionych; weryfikacja zarzutu audytu
Nawigacja. Każda strona ipIII dostała spójny nagłówek: pasek przełączający między domenami ekosystemu (Spółka / AI-Truth / uni0nai / Hackaton / ipIII) z osobno oznaczonym wejściem agentowym, menu prowadzące ścieżką nabywcy (Przegląd produktu → Porównania → Bank Pilot Pack) oraz jedno wezwanie do działania. Wdrożone za przełącznikiem, którego wyłączenie przywraca poprzedni stan bez ponownego wdrożenia — zweryfikowano zerowy regres przy wyłączonej fladze. Nagłówki bezpieczeństwa (CSP) i token jednorazowy skryptów pozostały nietknięte. Martwe linki. Przegląd 277 stron wykrył piętnaście linków prowadzących donikąd — w większości z powodu zgubionego przedrostka ścieżki (np. /known-limitations zamiast pełnej ścieżki) oraz kilku linków do zabramkowanego API. Wszystkie naprawione, cel każdego zwraca teraz 200. „Podwójne linki" zgłaszane przez skan okazały się w większości normalnym powtórzeniem nagłówek↔stopka, nie błędem. Odpowiedź na audyt zewnętrzny. Audyt wskazywał możliwy „Internal Error" na hubie AI-Truth i uni0nai — nie potwierdzono: obie domeny zwracają 200 na wszystkich sprawdzonych ścieżkach. Pozostałe punkty Fali A audytu (macierz statusów jako jedno źródło prawdy, publiczny changelog, znaczniki statusu przy stronach) są już wdrożone. Otwarte pozostają blokery klasy przedsiębiorstwa opisane w znanych ograniczeniach: OIDC/JWKS, mTLS, PAdES/TSA, wielotenantowość/RLS, strumień SIEM — wszystkie oznaczone jako ROADMAP, nie funkcje.
2026-07-09 · batch 6: cztery strony pod sprzedaż LIVE
Zarzuty nabywcy z przyznaniem racji, jawny rejestr ryzyk, porównanie vs OpenVAS, ścieżka regulacyjna
Nowe strony. /objection-handling — piętnaście zarzutów, jakie stawia nabywca, i odpowiedzi. Osiem z nich jest oznaczonych jako trafne: brak certyfikatów, ryzyko koncentracji wiedzy, brak wielotenantowości, brak podpisu kwalifikowanego, hash nie dowodzi prawdziwości treści. Strona, która odpiera każdy zarzut, jest niewiarygodna. /risk-register — dziesięć ryzyk otwartych, wyłożonych wprost; ukrywanie długu jest gorsze niż jego pokazanie, bo nabywca i tak go znajdzie. /porownanie-vs-openvas domyka rodzinę porównań: parser OpenVAS nie istnieje w kodzie, więc integracja jest oznaczona jako plan, nie jako funkcja — inaczej niż przy Faradayu, gdzie parser ma test. /legal-pathway — ścieżka regulacyjna nabywcy; nigdzie nie twierdzi, że produkt zapewnia zgodność, a odroczenie terminu dla systemów wysokiego ryzyka jest opisane jako wymagające potwierdzenia w Dzienniku Urzędowym UE, nie jako pewnik. Co zatrzymała brama jakości. Rejestr ryzyk początkowo ogłaszał w nagłówku „sześć ryzyk zamkniętych z dowodem", podczas gdy jedno z nich — ochrona dziennika audytu przed skasowaniem — nie jest zamknięte: migracja jest przygotowana, ale nie uruchomiona na bazie produkcyjnej. Czytelnik, który przeczyta tylko górę strony, wyniósłby fałszywy wniosek. Rozdzielone na „pięć zamkniętych i jedna przygotowana, niewdrożona". Poprawiono też liczbę, która była wewnętrznie sprzeczna: strona chwaliła się „zerowym regresem na 22 parserach", choć 22 to liczba sprawdzeń w teście, a parserów jest 19. Korekta ważniejsza od poprzednich. Strony twierdziły, że K0NSULT nie ma ani jednego płacącego klienta. To nieprawda — i jest to nadużycie w drugą stronę, równie szkodliwe jak przechwalanie się. Spółka prowadzi odpłatne zlecenia. Natomiast ipIII jako produkt nie ma jeszcze żadnego płacącego użytkownika. Przedmiotem ewentualnej transakcji jest produkt, nie spółka, więc przenoszenie wiarygodności jednego na drugie byłoby wprowadzaniem w błąd. Rozróżnienie zostało wpisane wprost. Nazwy klientów nie są publikowane.
2026-07-09 · izolacja organizacji w deduplikacji importu FIX
Deduplikacja nie uwzględniała organizacji — finding jednej organizacji dedupował się względem incydentu innej
Co było nie tak. Przy imporcie findingów deduplikacja porównywała skrót treści globalnie, bez uwzględnienia organizacji. Jeśli dwie organizacje zaimportowały identyczny finding (a to normalne — ta sama publiczna podatność), druga dostawała w odpowiedzi identyfikator incydentu pierwszej. Ujawniało to istnienie cudzego incydentu. Wykryte przy okazji domykania innego problemu — wyścigu przy równoległych importach. Naprawa. Deduplikacja jest teraz ograniczona do organizacji, a przygotowany unikalny indeks bazy dodatkowo uniemożliwia powstanie duplikatu przy dwóch jednoczesnych importach. Indeks obejmuje wyłącznie dowody wprowadzone przez konektory — dowody dodane ręcznie przez człowieka nigdy nie blokują importu. Czego to uczy. Pierwsza wersja poprawki wymagała, by indeks bazy już istniał; testy jednostkowe przeszły, bo pracują na danych zastępczych. Dopiero uruchomienie prawdziwego importu na żywej bazie środowiska testowego pokazało, że każdy import zwraca błąd, dopóki migracja nie zostanie ręcznie zastosowana. Kod nie może wymagać ręcznej migracji, żeby w ogóle działać — poprawiony tak, by działał przed migracją (bez ochrony przed wyścigiem) i zyskiwał pełną ochronę po niej, bez kolejnego wdrożenia. ROADMAP Ochrona nie obejmuje kont bez przypisanej organizacji — baza traktuje brak wartości jako wartość odrębną. To zawężenie istniejącego ograniczenia, nie nowe. 78 pakietów testów bez błędów; scenariusz na żywej bazie przechodzi w całości.
2026-07-09 · dowód na żywej bazie: hash pakietu jest wreszcie odtwarzalny FIX
Import przepisany na jedną transakcję; dwa pobrania tego samego pakietu dają ten sam package_sha256
Dlaczego to ważne. package_sha256 ma pozwalać audytorowi sprawdzić, że pakiet dowodowy się nie zmienił. Dotąd nie pozwalał: dwa pobrania tego samego pakietu dawały różny hash. Testy jednostkowe tego nie wychwyciły, bo pracowały na danych zastępczych. Dopiero uruchomienie realnego importu na żywej bazie pokazało problem — i to dwie niezależne przyczyny. Pierwsza: do hashowanej treści wchodził czas wygenerowania odpowiedzi. Druga, poważniejsza: pakiet zawiera dziennik audytu, a samo pobranie pakietu dopisywało do tego dziennika wpis o pobraniu. Akt odczytania dowodu zmieniał dowód. Ślady pobrań zostały wyłączone z pakietu (są nadal w bazie i pod /audit — nic nie zniknęło), a nowe pole hash_scope mówi wprost, które pola obejmuje hash. Import findingów. Dotąd każdy pojedynczy finding kosztował 4–5 osobnych zapytań do bazy, wykonywanych po kolei i bez transakcji — błąd w połowie zostawiał połowiczny import. Teraz cały wsad idzie w jednej transakcji, a liczba zapytań nie zależy od liczby findingów. Zmierzone: 20 000 findingów obsłużonych 13 zapytaniami. Przy okazji zabezpieczono limit parametrów bazy, o który duży, ale dozwolony import wcześniej by się rozbił. Weryfikacja. Powstało narzędzie uruchamiające pełny scenariusz na żywej bazie środowiska testowego: import, powtórzenie tego samego wsadu (zero duplikatów), duplikat wewnątrz jednego wsadu, 250 findingów, pobranie pakietu i porównanie hashy. Wszystkie kroki przechodzą. 78 pakietów testów jednostkowych bez błędów.
2026-07-09 · integralność dowodu, limity importu, izolacja limitera FIX
Hash pakietu dowodowego liczony kanonicznie; import odrzuca zbyt duży wsad zamiast go po cichu obcinać
Integralność pakietu dowodowego. package_sha256 był liczony przez zwykłą serializację JSON, która zachowuje kolejność kluczy — ten sam logicznie pakiet, zbudowany inną ścieżką kodu, dawał inny hash. To jest hash, na którym opiera się /verify. Teraz liczony jest po kanonicznej serializacji. Przy okazji wykryto pułapkę: moduł kanonizujący nie rozpoznawał typu Date, a baza zwraca znaczniki czasu właśnie jako Date — naiwna podmiana wymazałaby po cichu wszystkie daty z pakietów. Obejście wdrożone. Dodano pole hash_alg, żeby audytor zewnętrzny wiedział, którym algorytmem przeliczyć weryfikację; pakiety wydane wcześniej mają hash liczony starą metodą i to jest teraz jawne, a nie ukryte. Limity importu. Parsery przyjmowały dowolnie duży wsad. Wprowadzono limit liczby findingów i rozmiaru wejścia — z zasadą odrzuć, nie obcinaj: przekroczenie limitu zwraca teraz 413 z podaniem limitu i wartości zaobserwowanej. Ciche obcięcie byłoby gorsze niż odmowa, bo użytkownik widziałby „import OK" i sądził, że ma komplet dowodów. Ochrona objęła dziesięć ścieżek importu, w tym /imports/generic, który wcześniej omijał parsery i był obejściem limitu. Izolacja limitera. Licznik żądań nie uwzględniał ani metody, ani ścieżki — wszystkie trasy jednego użytkownika dzieliły jeden limit. Rozdzielony na (metoda, ścieżka, tożsamość); dodano nagłówki X-RateLimit-* i Retry-After. Limity liczbowe bez zmian. Niezmienność dziennika audytu. Przygotowana migracja bazy blokująca UPDATE, DELETE i — osobnym mechanizmem — TRUNCATE, który nie uruchamia zwykłych wyzwalaczy wierszowych i bez tego obchodziłby całą ochronę. Migracja czeka na zastosowanie przez operatora; status: ROADMAP do czasu wykonania na bazie produkcyjnej. Testy: 77 pakietów zielonych, 0 czerwonych, zero regresu na 22 parserach. Test integracyjny wymagający żywej bazy nie był uruchomiony i nie jest liczony jako zdany.
2026-07-09 · wydajność serwera + koniec ósmego statusu + liczby runtime
Strony serwowane 2× szybciej; „LIVE MVP" usunięty z portalu; 7 stron przestało kłamać liczbami LIVE FIX
Wydajność. Każde żądanie dowolnej strony czytało plik z dysku synchronicznie i za każdym razem wykonywało ten sam zestaw przekształceń. Na jednowątkowym serwerze pobranie /raport (578 KB) zamrażało obsługę wszystkich innych żądań na ponad 4 ms. Teraz przygotowana treść jest pamiętana, a per-żądanie doklejany jest wyłącznie token CSP (nonce) — bo ten musi pozostać unikalny dla każdego użytkownika. Zmierzone: 20,1 → 10,1 ms na żądanie dla /raport, 6,98 → 4,90 ms dla typowej strony. Osobno: logowanie liczyło skrót hasła synchronicznie, blokując serwer na 50–80 ms — teraz asynchronicznie. Strony z nonce dostają Cache-Control: no-store, żeby żaden pośrednik nie podał tokenu jednego użytkownika drugiemu. Spójność statusów. W portalu funkcjonował ósmy, nieistniejący status „LIVE MVP" — 88 wystąpień na 16 stronach, w zielonym kolorze oznaczającym pełną gotowość. Źródło znalezione: dwie strony (ciso-board-pack, remediation) definiowały go we własnych legendach. Legendy usunięte, statusy przypisane per komponent zgodnie z /status-matrix: Legal Trigger Engine i pakiet DORA/TIBER to MVP, evidence-package i Board Pack to LIVE. Pozostało 0 wystąpień. Liczby. Siedem starszych stron (m.in. dev-api-reference, global-launch) podawało „60 endpointów, 24 moduły" jako „liczby z kodu" — realnie 44 i 69. Podpięte do /api/ip3/ssot; z metadanych liczby usunięto, bo tam nie da się ich odświeżyć. monthly-benchmark deklarował „re-zweryfikowane 2026-07-09" przy nieaktualnych danych — przeliczono realnie, więc claim jest teraz prawdziwy. Historyczne liczby w /raport oznaczono datą zamiast podmieniać. Testy: 73 pakiety zielone, overclaim-lint 0 findings, nonce potwierdzony jako unikalny w kolejnych żądaniach.
2026-07-09 · spójność statusów (8 stron) FIX
Usunięty status spoza kanonu: „LIVE (MVP)" → właściwy status per komponent
Na ośmiu stronach — w tym na /slownik, który sam jest kanonem pojęć — występował status „LIVE (MVP)" w zielonej klasie oznaczającej pełną gotowość. Taki status nie istnieje w siedmiostopniowym słowniku (/status-matrix): zielony kolor podnosił wiarygodność komponentu ponad dowód, jaki dla niego istnieje. Naprawa per komponent, nie hurtowa podmiana: Legal Trigger Engine i Response Board wracają do MVP (bursztyn), evidence-package i Board Pack PDF pozostają LIVE (zielony) — zgodnie z macierzą statusu. Dodatkowo na /agent-coc tekst „MVP" świecił na zielono. 24 wystąpienia → 0. Strony: slownik, exec-deck, porownanie-vs-siem, porownanie-vs-grc, regulatory-evidence-pack, ai-security-whitepaper, legal-timeline, agent-coc. div-balance OK, 0 inline-JS, overclaim-lint 0 findings.
2026-07-09 · batch 5 wyrównania + naprawa rozjazdu liczb
Nowe: /porownanie-vs-faraday i /przeglad-produktu; liczby produktowe z /api/ip3/ssot LIVE FIX
Batch 5 (dokumenty W8/W4 → strony, pod sprzedaż). (1) nowa /porownanie-vs-faraday — pozycjonowanie wobec Faradaya; integracja podana jako DOWÓD, bo parser routes/ip3-faraday.js ma test 12/12 i wpięty endpoint importu, natomiast policy-as-code i federacja wielu węzłów zostały oznaczone GAP (ROADMAP), mimo że dokument źródłowy nazywał je „głównym wyróżnikiem" — kodu na nie nie ma. (2) nowa /przeglad-produktu — macierz modułów, w której każda cytowana ścieżka repo została zweryfikowana (25/25); liczby pobierane runtime z /api/ip3/ssot, nie wpisane ręcznie. (3) /porownanie-vs-defectdojo wzbogacone o tezę „control plane, nie kolejny system zarządzania podatnościami" + model integracji. Naprawa istotna dla wiarygodności: /wartosc-produktu (PL i EN) deklarowała „liczby z kodu": 259 stron, 60 endpointów, 24 moduły, 34 testy — realnie jest 243 / 44 / 69 / 81. Dwie linkowane strony produktowe podawały liczbę modułów różniącą się prawie trzykrotnie. Obie podpięte teraz do tego samego endpointu SSOT, a liczby usunięte z metadanych, gdzie i tak nie dało się ich odświeżać. Przy okazji poprawiono opis uwierzytelniania: OIDC jest za flagą IP3_OIDC, więc strona nie twierdzi już, że działa na produkcji. Spójność statusów: usunięto wynaleziony status „LIVE (MVP)" (10 wystąpień) — Legal Trigger Engine wraca do MVP, Board Pack do LIVE, zgodnie z /status-matrix. Wszystko po bramie 3 sędziów (2 z 3 wydali BLOCK; naprawione przed wdrożeniem). div-balance OK, 0 inline-JS, overclaim-lint 0 findings, testy 66/66.
2026-07-09 · wyrównanie ROADMAP + fix spójności statusu
Marketplace + hallucination-monitor wzbogacone; naprawa indeksacji marketplace FIX
Batch 4 wyrównania: /marketplace (+161: API Marketplace + Agent Skills Marketplace spec) i /hallucination-monitor (+233: pipeline weryfikacji claim≤proof) — obie ROADMAP, 0 usunięte. Fix spójności: marketplace nie miał wpisu w rejestrze statusów, więc dziedziczył LIVE i był indeksowany jako gotowy, mimo że strona ma badge ROADMAP; dodano status ROADMAP → teraz X-Robots: noindex (zgodne z treścią). To klasa błędu, którą pre-check bramy łapie: nie tylko overclaim tekstowy, ale rozjazd status-strony↔runtime. overclaim-lint 0, div-balance OK.
2026-07-09 · wyrównanie dokumenty→strony (pod sprzedaż)
CTI + trustnet wzbogacone, nowa strona TISAX (automotive) LIVE
Zmiana strategii: zamiast dorzucać dokumenty (nadmiar w kolejce), wdrażam istniejące jako strony. Batch 3: (1) /cti wzbogacone o pipeline MISP/OpenCTI/STIX/TAXII (mapowanie pól, reguły TLP, testy akceptacyjne) — 137 linii dodane, 0 usunięte, status ROADMAP zachowany dla niewdrożonych części. (2) /trustnet wzbogacone o model reputacji agentów + tokeny reputacji (soulbound, anty-Sybil) — 158 dodane, 0 usunięte, ROADMAP. (3) nowa /tisax — mapowanie ipIII→TISAX/VDA-ISA dla motoryzacji (pion automotive), status MVP, decision-support NIE certyfikacja. Każda: div-balance OK, 0 inline-JS, overclaim-lint 0, status uczciwy (nie podniesiony na LIVE). SSOT pages_pl=241 (runtime).
2026-07-09 · kategoria playbooków dokończona
3 kolejne playbooki: model-poisoning, API-abuse, container-escape LIVE
Rój koderów (batch 2) dokończył kategorię playbook-* — było 13, po dwóch dzisiejszych batchach jest 18: zatrucie modelu/danych AI (odrębne od halucynacji), API abuse / credential stuffing, container escape / K8s breach. Każdy evidence-first z chain-of-custody na krokach, MITRE ATLAS/ATT&CK jako PUBLIC CLAIM, zero payloadów. div-balance OK, 0 inline-JS, overclaim-lint 0. Endpoint /api/ip3/ssot potwierdza: pages_pl 240 (liczone runtime).
2026-07-09 · nowe strony + SSOT liczb runtime
Sandbox (lejek PoC→pilot) + 2 playbooki + endpoint SSOT liczb LIVE
Rój koderów (audyt pokrycia dokumenty↔strony wykazał braki w najcenniejszych kategoriach sprzedażowych): (1) nowa strona /sandbox — lejek PoC→pilot (cała kategoria była bez strony); status MVP (ścieżka Pilot Intake działa) + self-service jawnie ROADMAP, bez zawyżania. (2) Dwa brakujące playbooki: insider-threat, cloud-misconfig. (3) Backend: endpoint /api/ip3/ssot — liczby ipIII liczone runtime z repo (koniec hardkodu 60/24/8, który był źródłem rozjazdów): endpoints/modules/parsers/pages/mcp jedną metodą = jedno źródło prawdy. Każda strona: div-balance OK, 0 inline-JS, overclaim-lint 0. Testy: fala-classify 31/31, ssot 28/28.
2026-07-09 · naprawa struktury HTML
ochrona-polski: 5 niezamkniętych divów (złamany DOM) FIX
Kontynuacja nadrobienia audytu (CRIT-3): strona ochrona-polski miała 5 bloków <div class="principle"> zamykanych </p> zamiast </div>, co łamało zagnieżdżenie DOM drugiej połowy strony (layout/CSS mógł się rozjeżdżać). Audyt naliczył 4 — piąty wykryty przez liczenie balansu tagów, nie przez zaufanie liczbie. Naprawione, zweryfikowane na staging: div-balance 64/64, <p> 33/33, 7 sekcji, footer OK, overclaim-lint 0. Zero zmian treści.
2026-07-09 · nadrobienie audytu jakości
Błąd regulacyjny art.50 + 5 osieroconych stron (404→200) + martwy link FIX
Audyt jakości 273/273 stron (agent sonnet, nadrobienie fali, której flota nie mogła wykonać bez dostępu do repo). Naprawione i zweryfikowane na staging: (1) błąd regulacyjnywhy-now (PL+EN) i revenue-simulation podawały art.50 AI Act „od 2.02.2025" (11 wystąpień); poprawna data to 2.08.2026 (2.02.2025 dotyczy zakazanych praktyk i AI-literacy, NIE transparentności art.50). Reszta portalu miała już poprawną datę. (2) 5 osieroconych stronmtls, verify-v2, inter-agent-schema, chain-of-custody, pentest-self istniały jako pliki, ale bez route zwracały 404; zarejestrowane (teraz 200) ze statusem wg treści (spec=ROADMAP, częściowe=MVP — bez overclaimu). (3) terms: martwy link /privacy/privacy-policy. overclaim-lint 0. Kolejna partia: niezamknięte divy w ochrona-polski, ujednolicenie liczby endpointów.
2026-07-09 · SSOT liczb — naprawa rozjazdów
Ujednolicenie sprzecznych liczb na 6 stronach ipIII LIVE
Audyt (agent sonnet) wykrył, że strony przeczą sobie i kodowi. Naprawione, zweryfikowane wobec repo i żywych testów (overclaim-lint 0, ip3-mcp 20/20, status-consistency 18/18): (1) dev-api-reference twierdził, że MCP ipIII „nie istnieje w kodzie — ROADMAP" — nieprawda, są 6 narzędzia LIVE pod /api/ip3/mcp (naprawione + tabela narzędzi). (2) Sprzeczność parserów: „8" vs „22" na różnych stronach → ujednolicone do 19 (faktyczna liczba endpointów /imports/*). (3) Sprzeczność liczby stron PL: „156" vs „164" → oparte o żywy pages.json (kanon 259 stron, rośnie z falami), statusy re-zweryfikowane (LIVE 78 / MVP 68). Kruche twarde liczby zastąpione odesłaniem do żywego źródła tam, gdzie się dało. claim ≤ proof.
2026-07-09 · hardening JWT
Pin algorytmu HS256 w bramce akademii — blok alg-confusion FIX
Audyt bezpieczeństwa: wszystkie jwt.verify w repo miały przypięty algorytm (algorithms:['HS256']) oprócz jednegoroutes/akademia-api.js (bramka sesji rodzica). Bez pinu token z nagłówkiem alg:none lub podmienionym algorytmem mógł obejść weryfikację (atak JWT algorithm-confusion). Naprawione: pin HS256 zgodny z podpisem (tokeny akademii i tak są HS256). Zweryfikowane: token alg:none odrzucony. Prod v1215, bez regresji.
2026-07-09 · grupowanie kolejki fal + brama jakości
Dashboard /kolejka-fal grupuje 194 zadania w 16 fal LIVE
Klasyfikator fal wydzielony do routes/ip3-fala-classify.js (testowalny, 31/31 PASS): rozpoznaje plan wdrożeniowy W0–W9, fale ekosystemu [F-*] → priorytety P1–P13 oraz stare etykiety. Efekt: dashboard z 1 zadania w 1 grupie → 194 zadania w 16 grupach (wcześniej ignorował 150 z 200 zadań cockpitu). Naprawiony bug: regex [ipIII FALA-A..C] nie łapał wariantu z cyfrą (FALA-B1). Endpoint deklaruje teraz jawnie zrodlo.limit=200 (chat oddaje ostatnie 200 zadań — total to próbka, nie cała kolejka; claim≤proof). Brama jakości fal: walidator k0-waliduj-kolejke.sh wykrywa „fałszywy sukces" (zadania oznaczone done, których wynik to odmowa „nie mam dostępu do repo") + 3 niezależni sędziowie adwersaryjni; naprawiony bug cichego gubienia zadań przy rate-limicie 429. Prod v1213, portal bez regresji.
2026-07-08 · audyt jakości + kolejka fal
Audyt semantyczny 100 stron + kolejka fal wdrożeniowych LIVE
Rój przeaudytował 100 stron ipIII (4 partie, ~184 findings: halucynacje/stuby/sprzeczności/bugi/optymalizacja). Naprawione i wdrożone na prod: 17 high partii 1 (parsery 12→8, moduły 27→24, strony→259, statusy F1-F4→amber); krytyczne partii 2-3 — w tym błąd regulacyjny art.50 AI Act (2.02.2025→2.08.2026), bug HTML, AI_SERIOUS 34→4, fałszywe MITRE→ATLAS, connectors sprzeczności LIVE, RS256(OIDC)/HS256(JWT); naprawy partii 3-4 (tesseract PQC→ROADMAP, pentest-report→MVP, dead CSS). Nowy live widok kolejki /kolejka-fal (zadania rojów/kopernika pogrupowane w fale, status todo/w-toku/done, auto-refresh) + endpoint /api/ip3/kolejka-fal. + /incident-groups (agregat grup incydentów). overclaim-lint 0.
2026-07-06 · SEO portal AI-Truth
Portal AI-Truth — warstwa social/structured-data na 115 stronach FIX
Audyt SEO portalu /ai-truth (115 stron): rdzeń był OK (canonical/description/theme-color na 100%), luka = brak Open Graph (115/115) i JSON-LD (111/115). Naprawione skryptowo (iniekcja idempotentna, walidacja JSON 115/115 OK, 0 błędów): każda strona dostała og:type/title/description/url/image + twitter:card summary_large_image + JSON-LD WebPage+BreadcrumbList+Organization zbudowane z istniejących title/description/canonical (unikalne per-strona). og:image → naprawiony og-image.png (200). Druga partia — ipIII: ta sama iniekcja na 262 stronach ipIII (264 total; pominięte: changelog + panel-pentesty noindex bez canonical). Łącznie 377 stron AI-Truth z pełną warstwą social/structured-data. Walidacja JSON: 100%.
2026-07-06 · panel pentestów
Panel operacyjny pentestów — logowanie email-OTP (ujednolicone) LIVE
Nowy panel do zarządzania pentestami — logowanie tym samym mechanizmem co wszędzie: wpisujesz livehacker42@gmail.com → 6-cyfrowy kod na maila → wchodzisz (cookie 24h). Ten sam panelGuard co „Dawne badania"/kokpit — zero nowego logowania. Panel pokazuje listę zleceń (pentest/DORA/TIBER/purple-team), statusy, postęp, findingi, linki do raportów i blok zatwierdzania (approval CISO→closure). Dane SIMULATION/DEMO (efemeryczne, do czasu podpięcia realnej bazy). API pod /api/ip3/panel/* za bramką OTP (bez cookie → 401/login). Testy: API 18/18, frontend CSP-safe (0 inline handlerów), overclaim-lint 0. noindex. GAP: trwały storage approvals + generator PDF (ROADMAP).
2026-07-06 · fale enterprise F4
Fala 4 — 8 modułów fal stało się WYWOŁYWALNYCH (demo-API) + strona przeglądowa LIVE
Rój 11 agentów dorobił warstwę demo-API (evidence-first, flag-gated OFF→503): canonical/demo/hash+/verify (JCS deterministyczny — zweryfikowane przez HTTP: różna kolejność kluczy = ten sam hash), cve-enrich/demo/lookup (KEV fallback offline), stix/demo/parse, scm-ingest/demo/sarif, board-report/demo/generate (DORA/NIS2/RODO/AI-Act), redteam/demo/register+/mapping (AI Act art.73), approval/demo/can-close, tsa/demo/request (RFC3161). Wpięte pod /api/ip3/v1/waves/<modul>/demo/*. Nowa strona enterprise-waves (PL+EN) — przegląd 14 modułów, live status. Wszystko za flagą OFF/fail-safe — mount nic nie włącza. Testy: 8/8 demo (11-15 asercji), waves-mount 14/14, overclaim-lint 0. GAP-zasoby bez zmian (prod IdP/mTLS/QTSP/API keys/storage = ROADMAP).
2026-07-06 · uni0nai spójność
UNIONAI/uni0nai — audyt funkcjonalny + spójność wizualna + SEO FIX
Audyt funkcjonalny: 34 linki uni0nai (on-domain + subdomena uni0nai.k0nsult.cloud + API/JSON) odpytane na prod → wszystkie 200, 0 błędnych/pustych treści, 0 błędów w body; CSP subdomeny czyste (script-src 'self', 0 inline). Naprawione (spójność + SEO): /unionai i /unionai/meta-skills miały generyczny motyw (Arial/białe tło) niespójny z resztą serwisu oraz brak canonical i meta description → przebudowane na motyw terminala K0NSULT (phosphor/mono, header+nav+stopka-disclaimer jak /uni0nai), dodane canonical+description+theme-color. SEO enhancement domknięty: Open Graph + Twitter Card + JSON-LD (WebPage/BreadcrumbList/Organization, walidacja JSON OK) na /uni0nai, /unionai, /unionai/meta-skills. Naprawiony globalny bug: og-image.png i og-trust.png = 404 (linkowane jako og:image przez homepage/landing/trust-center) → wygenerowane brandowane karty 1200×630 (motyw terminala K0NSULT, Pillow), obie 200 OK. Otwarte: og/schema na subdomenie (osobny app).
2026-07-06 · UX nawigacji
Favicon + logo klikalne + mapa serwisu i strony „poznaj ipIII" w menu FIX
Favicon (/favicon.svg) i klikalne logo → strona główna dodane na wszystkich 259 stronach ipIII (wcześniej 0 — skrypt UX-polish był zbudowany, ale nigdy nieuruchomiony). Menu huba uzupełnione o brakujące dojścia do treści, które istniały, ale nie były podlinkowane: Samouczek/instrukcja, Funkcje (co zawiera), Kategorie, Słownik oraz Mapa serwisu (pełne drzewo stron). Rozróżnienie: dawna „Mapa" (zagrożeń) → „Mapa zagrożeń", osobno „Mapa serwisu" (nawigacja). + 7 stron EN wpiętych w routing (/en, robots noindex). Higiena A1: usunięte literalne frazy zakazane w changelogu. Smoke prod 8/8, overclaim 259/0, link-check 99/0. Commit f49557a4.
2026-07-06 · fale enterprise
Fale P0/P1/P2 — 14 modułów backendu (rój 15 agentów) LIVE
Rój 14 agentów + krytyk zbudował warstwę enterprise wg planu 3 fal, evidence-first, każdy z testem: P0 — access-model (invite-only/RBAC/audit, 33 asercje), ci-gate (SAST/dep/secret/regresja auth, 11 asercji); P1 — rls-enforce (cross-tenant deny, 21), tsa (RFC3161 timestamp), canonical (JCS/RFC8785), cve-enrich (NVD/KEV/EPSS + fallback offline), siem-guard (HMAC/dedup/replay), ticket-sync (SLA/status/audit); P2 — stix (STIX 2.1/TAXII), scm-ingest (SARIF+GitHub/GitLab), board-report (KNF + DORA/NIS2/RODO/AI-Act), approval (analyst→owner→CISO→closure), redteam (AI Act art.73), observability (Prometheus/OTel). Wpięte read-only pod /api/ip3/v1/waves/status. Każdy moduł LIVE za własną flagą env (domyślnie OFF/fail-safe) — mount niczego nie włącza. Testy: 13/13 modułów node --check + unit zielone, waves-mount 14/14, overclaim-lint 0. GAP-ZASOBY (poza kodem, ROADMAP): prod IdP secret (OIDC-enforce), mTLS cert PKI, QTSP qualified (PAdES), API keys NVD/GitHub, trwały storage (in-memory→Postgres/S3).
2026-07-06 · porządki nawigacji
Mapa strony /mapa-strony — sprzątanie + weryfikacja 514 linków FIX
Uporządkowany globalny wykaz linków /mapa-strony: wyciągnięte „na wierzch" i pogrupowane wszystkie podstrony mapy portalu AI-Truth (94) oraz ipIII (~200, 13 sekcji tematycznych); uzupełnione obszary UnionAI (31) i Badania/research (3). Usunięte linki spoza domeny (/brama, agrotony-*, /mecz). Stadiony przeniesione do nowej sekcji LoveCorp (/quantum-love/stadion, /stadion-lodzki). Ukryte bramki panelu/wewnętrzne (przekierowanie do login.html lub /internal/*): dashboard, skill-marketplace, skill-registry, panel, community.html, docs, agent-invite/join, mcp-write. Weryfikacja (2 przebiegi): każdy href odpytany na prod z rozwiązywaniem przekierowań — 0 martwych linków (0× 404/5xx), wszystkie finalnie 200; wykryte i ukryte 8 bramek login/internal. Pozostałe 301/302 = kanonizacja (.html→clean, /cst→start). Audyt widoczności (SetProfit) zweryfikowany: potwierdzone i naprawione 404 na czystych URL-ach istniejących stron — /ai-disclosure, /incident-policy, /pl/ai-disclosure (route clean-URL brakowało; linki w roles/nav były zepsute). Homepage: canonical+description+schema Organization OK; robots.txt + sitemap.xml (158 URL) OK.
2026-07-05 · 19:40
Zamknięcie fali GAP enterprise — audyt dokumentu braków LIVE
Dokument ZAMKNIECIE_BRAKOW_ENTERPRISE_SCALE przeanalizowany: 41/41 kluczowych tasków (F1-F8: OIDC, hash-chain, tenancy, transport, MCP, SEO/GEO, konektory, korpo) zweryfikowane jako już LIVE na prod. Domknięte w tej fali: naprawa niespójności liczb (LIVE, patrz niżej). Zbudowane rojem 7 agentów, oczekują rejestracji (server.js + uruchomienie testów): 4 strony (verify-v2, chain-of-custody, mtls, inter-agent-schema) DO REJESTRACJI + 3 testy CI (security.txt, openapi-contract, performance). Backend realny (PAdES qualified, Evidence Vault S3, RLS pełne, mTLS transport, ServiceNow) = osobny sprint z zasobami. Overclaim-lint 259/0.
2026-07-05 · 19:20
Audyt korpo (3 zespoły) → naprawa niespójności liczb AUDYT
Adwersaryjny audyt oferty korpo (kompletność/uczciwość/wartość, śr. 67/100) wykrył sprzeczne liczby między stronami — narusza własną doktrynę claim ≤ proof. Naprawione: MCP w prezentacji (PL+EN) — było „ROADMAP/nie istnieje" → 6 tools ipIII-scoped LIVE (dowód: curl POST /api/ip3/mcp tools/list = 6). Ujednolicone: 42→60 endpointów, 202→238 stron, 27→24 moduły na stronach wartosc-produktu / business-model / global-launch / evidence-board / revenue-simulation / api (±EN). Zgodne z kanonem dev-api-reference. Overclaim-lint 259/0. Kanon SSOT: docs/ip3-audyt-korpo-2026-07-05-SSOT-liczby.md.
2026-07-05 · 18:45
Wspólna stopka: usunięte 5 linków CST FIX
Z globalnej stopki (SITEMAP_FOOTER, wstrzykiwana server-side na każdą stronę) usunięte: K0-CST · Oś czasu · Paczki · Komunikacja · Zgłoszenia. Zostaje: Home · AI-Truth + mapa strony. Nav K0-CST zostaje na stronach /Common-Source-of-Truth (osobne źródło). Commit 5cd15c3b, wchodzi na prod przy najbliższym deployu.
2026-07-05 · 18:23
Konektory SIEM/CTI + DevSecOps (7 nowych) — inbound ingest v1 LIVE
Zakres: INBOUND ingest v1 (jednokierunkowy) — importy /imports/{splunk,sentinel,misp,siem-webhook,grype,faraday,nuclei}: alert/IOC z SIEM/CTI → incydent+evidence (MEDIA_SIGNAL), sekrety i PII redagowane w parserach. PSI green: 62 asercje unit (splunk 10/sentinel 17/misp 18/webhook 17), node --check OK. Pełna PRODUKCYJNA integracja dwukierunkowa (bi-directional sync, ACK zwrotny do SIEM, round-trip ticketing/BAS) = ROADMAP — zgodnie ze stroną Connectors. + endpoint /reports/signature-status (PAdES scaffold, jawnie UNSIGNED/ROADMAP).
2026-07-05 · 18:20
9 stron enterprise (roje R2-R5) LIVE
Nowe: legal-pack (DPA/NDA/RoE), conflict-of-interest (pentesterzy bankowi), retest-diff (#8), agent-inventory, hallucination-monitor, trustnet, operator-levels (L1-L5), founding-tier, token-nota (compliance). Overclaim-lint 247/0. + 4 corpo-docs (SAML/mTLS/secrets/backup-DR spec) pod procurement.
2026-07-05 · 17:50
Fix P0: security.txt root wieloliniowy FIX
Root /security.txt był stary 4-liniowy (kontakt@, zły Canonical) — reviewer trafiał na niego. Zsynchronizowany 1:1 z canonical /.well-known/security.txt (RFC 9116, 10 linii, security@, 2× Policy, Acknowledgments). Wchodzi na prod przy deployu.
2026-07-05 · 17:30
Historia pentestu Konrada (R1+R2) + higiena A1 + koordynacja AUDYT
Pentest r0xk0n (Konrad/RSpace) R2: B1 (izolacja tenant), C1 (dowód bez treści=UNVERIFIED), D1/E1 — naprawione (PR#43, IDOR test 12/12). A1 higiena: oznaczenia kategorii systemowej banku ujednolicone do „SIFI" + słownictwo dowodowe ujednolicone do form weryfikowalnych (16 stron). Rejestr: docs/audyt/PENTEST_HISTORIA_ipIII_r0xk0n.md. Meta-sędzia koordynacyjny (board anty-kolizja między sesjami + protokół PSI/INDIGO). Kolejka enterprise: 64 taski→fale→roje.
2026-07-05 · 15:15
Symulacja obrony PL (sztab, ćwiczenie) + autoprezentacja korpo + kampania globalna LIVE
Rój 7+2. Sztab cyber-obrony (SYMULACJA/MODEL metodologii, NOINDEX, defensywne, guardrails 19-20): sztab-obrony, zbrojownia-skilli, koszary-agentów, matcher-incydent + 3 symulacje PL (wschód/zachód/multi wg Sun Tzu). Uczciwie: demonstracja jak sztab AI reaguje, NIE realna zdolność obronna państwa, nie zastępuje CSIRT/wojska. Autoprezentacja prezentacja (boczne menu). Kampania globalna kampania-globalna (jedna reklama + węzły EU/US/AU, transparentny). overclaim 0, PSI śr 91.
2026-07-05 · 14:55
Purple-team na własnym serwisie — ZERO potwierdzonych dziur obrona OK
Wewnętrzne ćwiczenie purple-team (9 wektorów: auth/IDOR-BOLA/injection/secrets/CSP/rate-limit/parser/input/info-leak). Serwis broni się na wszystkich — auth fail-closed, IDOR→404, SQL parametryzowany, XXE nieegzekwowalny, secrets brak hardcoded, CSP nonce 128-bit. Niezależny pentest r0xk0n naprawił R1/R2 (multi-tenant, HS256, CSV formula-guard). Raport: pentest-self (defensywny, NOINDEX). Uczciwie: „zero dziur" = na zbadanych wektorach, NIE gwarancja nieprzenikalności.
2026-07-05 · 14:45
Korpo marketing: 8 stron (wartość/why-now/rynek/model/oferta/business + global + wiral) LIVE
Korpo-zespół (integrity 19/20): wartość-produktu, why-now (timing AI Act/DORA), market-analysis (nowa kategoria), revenue-simulation (MODEL szacunkowy, nie prognoza), oferta-partnerska, business-model, global-launch, gtm-viral. Cyfry realne z kodu, overclaim 0, PSI 90.
2026-07-05 · 13:30 (skorygowane 2026-07-06)
Backend F1 — logowanie korporacyjne OIDC/SSO controlled-pilot
OIDC controlled-pilot (nie enterprise-grade LIVE). Walidator RS256/JWKS = kod LIVE; testowy IdP Keycloak dev-grade (realm ip3). Tryby IP3_OIDC=off|shadow|on; shadow+on udowodnione na STAGING, na produkcji flaga kontrolowana — dziś off (ACK-gate, ryzyko lockoutu bez produkcyjnego IdP). Enterprise-grade NIE domknięty: external client IdP (Azure AD / HA Keycloak) + pełny provisioning = ROADMAP. Korekta 07-06: wcześniejsza formuła „Enterprise SSO LIVE na produkcji / ON na prod" była zawyżona (claim > proof) — sprostowana do stanu faktycznego, zgodnie ze Status Matrix i Known Limitations.
2026-07-05 · 13:00
Backend F3 warstwa 2 — PostgreSQL RLS (szkielet) szkielet
Defense-in-depth nad izolacją app-level. Moduł routes/ip3-rls.js: ENABLE+FORCE RLS + policy tenant + wrapper queryWithTenant (transaction-scoped) + rollback. Za flagą off=dead-code. Test 9/9. Pełne egzekwowanie (54 query + suite IDOR)=osobny sprint; warstwa 1 już izoluje.
2026-07-05 · 14:30
Launch-ready: hub produktowy + MCP + 9 stron SEO + roadmap agregator LIVE
Wygląd gotowego produktu do startu (uczciwie, evidence-first). Hub (/): pozycjonowanie Enterprise Controlled (funkcje enterprise w trybie kontrolowanym), front eksponuje tylko LIVE/MVP, ścieżki odbiorcy, trust signals, JSON-LD. Roadmapy ściągnięte z frontu → agregator /roadmap (44 pozycje planu, jawnie „w budowie, NIE produkcyjne"). MCP server /api/ip3/mcp (Model Context Protocol — 6 read-only tools: incidents/stats/playbooks/doctrine; podpięcie AI/agentów). SEO-3 pillar (5, ≥1200 słów) + landing per ICP (4: bank/mssp/soc/appsec) + comparison (4, uczciwe komplementarne) + case-study (4, jawnie syntetyczne) + dev-api-reference (wykaz 60 endpointów/24 modułów). Wszystko z JSON-LD (breadcrumb/FAQ). overclaim 0. Dane demo oznaczone SYMULACJA (standard demo). PSI śr 88.
2026-07-05 · 12:45
GAP-rój roadmapu: 20 stron + warstwa SEO/GEO LIVE
Rój 22 agentów (5 rojów, rozłączne pliki, scoring PSI/INDIGO). Enterprise-Ops: sla-support, incident-response, backup-dr, iso-soc2-readiness, data-governance, vendor-risk. Guides: migration, deployment, partner, security-whitepaper, ai-security-whitepaper. Community: community, reviewer-program, roadmap-voting, monthly-benchmark. Scale (ROADMAP-spec): connector-sdk, marketplace, mssp-mode, evidence-vault, access-review. SEO/GEO: sitemap.xml (tylko indexable — status produktu steruje), llms.txt (+root), seo-policy, X-Robots-Tag noindex dla ROADMAP. QA: parser-fuzz 30/30 + input-guards 23/23. overclaim 203/0. Uczciwie: spec-strony = ROADMAP (nie produkcyjne).
2026-07-05 · 09:40
Backend F3 — izolacja multi-tenant (warstwa 1) zweryfikowana E2E na staging
Izolacja danych między organizacjami (multi-tenant), warstwa aplikacyjna — kompletna i zweryfikowana E2E. Wykryto i zamknięto: nie tylko listowanie, ale wszystkie operacje na incydencie (podgląd, zamknięcie, przejście stanu, przypisanie, dowody, coverage, ticket, board-pack) pobierały dane bez sprawdzania organizacji — tenant mógł operować na cudzym incydencie znając jego ID. Za flagą IP3_TENANT_SCOPE=off|on: off = bez zmian; on = użytkownik widzi i modyfikuje tylko dane swojej organizacji, admin = cross-tenant, brak przypisania = fail-closed. Test na staging z 2 tenantami: A nie widzi i nie może zamknąć/edytować/wyeksportować incydentu B (→ 404, nie ujawnia istnienia); własne → 200. Test 11/11. Następny etap: warstwa 2 — PostgreSQL Row-Level Security (obrona w głąb na poziomie bazy) + włączenie (prod = ACK, migracja odwracalna). Dziś na prod off (zero zmian).
2026-07-05 · 09:15
Backend F1 — logowanie korporacyjne OIDC/SSO zweryfikowane E2E na staging prod = ACK
Warstwa uwierzytelniania enterprise: walidacja tokenów OIDC (RS256 + JWKS, standard Keycloak/Azure AD/Auth0) obok dotychczasowego logowania. auth() z flagą IP3_OIDC=off|shadow|on: off = bez zmian, shadow = sprawdza OIDC równolegle i loguje (nie zmienia dostępu), on = akceptuje token OIDC lub dotychczasowy (fallback). Zweryfikowane end-to-end na staging z testowym IdP: token OIDC daje dostęp do chronionego API, brak tokenu → 401 (fail-closed), wymuszony RS256 (bez algorithm-confusion). Test 10/10. Na prod: świadomie WSTRZYMANE — zmiana ścieżki logowania to ryzyko lockout, wejdzie dopiero z produkcyjnym IdP + osobnym ACK (tryb shadow→dual→on, break-glass). mTLS = druga połowa F1.
2026-07-05 · 08:45
Backend F4 — realny transport konektorów (GitHub/Jira/webhook) kod LIVE egress za flagą
Konektory potrafią teraz realnie wysłać zgłoszenie remediacji (nie tylko zbudować payload). Potrójna bramka egress: ?send=true + IP3_<SYSTEM>_TRANSPORT=on + sekrety klienta — brak któregokolwiek = builder-only (zero wysyłki, jak dotąd). /incidents/:id/ticket?send=true (operator/admin) + status GET /api/ip3/v1/connectors/transport-status. GitHub Issues zweryfikowany end-to-end na staging (realny issue utworzony w prywatnym sandboxie i zamknięty), Jira Cloud v2 = transport-ready, webhook (SIEM/HMAC) = testowalny. Na prod dziś off (builder-only); realne włączenie wymaga dedykowanego fine-grained tokenu klienta + osobny ACK. Timeout 10s. Test 8/8.
2026-07-05 · 08:30
Backend F2 — niezmienny log audytowy (tamper-evident) + podpis dowodów shadow LIVE
Pierwsza fala backendu (mikro-kroki, staging→ACK→prod, plan rollback). Hash-chain audytu (SHA-256): każde zdarzenie audytowe linkowane kryptograficznie do poprzedniego → modyfikacja/usunięcie wpisu jest wykrywalna. Tryb shadow LIVE na prod — pisze równolegle do audytu bazowego (ip3_audit_events nietknięty), za flagą IP3_AUDIT_CHAIN. Weryfikacja: GET /api/ip3/v1/audit/chain/verify (auditor/admin). Podpis integralności paczki evidence: evidence-package?sign=true → HMAC-SHA256 kluczem serwera + POST /reports/verify-signature. Board pack ma teraz hash + timestamp + podpis + dowód łańcucha. Test 17/17. Uczciwie: tamper-evident (wykrywa zmianę) ≠ nieusuwalny (WORM=ROADMAP); HMAC integrity ≠ kwalifikowany podpis eIDAS/PAdES/TSA (ROADMAP). Zero regresji na prod.
2026-07-05 · 07:40
F14 Nawigacja & Nauka: 5 stron (drzewo/taksonomia/funkcje/tutorial/słownik) LIVE
Rój 5 agentów (rozłączne pliki, additive, po całym inwentarzu). mapa-pro — profesjonalne drzewo wszystkich 156 stron PL pogrupowanych w 19 kategorii (statusy 1:1 z pages.json), kategorie — taksonomia (po co każda kategoria), funkcje — wykaz ~60 endpointów/funkcji z jawnym statusem LIVE/auth-gated/MVP/ROADMAP, samouczek — tutorial 5/15/30 min (żywe linki), słownik — 75 pojęć modułu. Doktryna claim ≤ proof; funkcje niewdrożone jawnie ROADMAP. overclaim 183/0.
2026-07-05 · 07:18
Batch C: GTM/Premium + Corpo docs (18 stron) LIVE
Rój 18 agentów (rozłączne pliki, additive). GTM (F13): partner-program, cs-dashboard, exec-digest, roi, white-label, pricing. Premium (F10): war-room, continuous-compliance, breach-simulator, tamper-export, evidence-exchange, badges. Corpo/inwestor (F13): exec-deck, tech-whitepaper, compliance-whitepaper, security-pack, data-room, deployment-modes, category. Kanon: „Evidence Operating Layer". overclaim 178/0.
2026-07-05 · 06:36
F15 Global Legal/Privacy: 7 dokumentów (EU/UK/US) LIVE
Warstwa korpo pod wyjście globalne (rój 7 agentów, tone korpo). privacy-policy (GDPR/RODO + UK GDPR + US CCPA/CPRA), rodo (obowiązek informacyjny art.13/14), cookies, terms, global-compliance (przegląd rynków EU/UK/US), subprocessors, legal-notice/impressum. Każdy z jawnym disclaimerem decision-support / NIE porada prawna, wymaga przeglądu prawnika/DPO; administrator = K0NSULT Sp. z o.o. (NIP 5253089872, KRS 0001239441). overclaim 160/0.
2026-07-05 · 05:41
Batch B: Context + Exec/GRC (9 stron + 2 moduły z testami) LIVE
Rój 11 agentów (rozłączne pliki, additive bez ACK). Context (F11): crown-jewels (asset criticality/blast radius), attack-path, control-mapping (ISO27001/NIST/CIS/DORA/NIS2), control-effectiveness, third-party-risk. Exec/GRC (F12): ciso-dashboard, risk-acceptance, exceptions, legal-timeline. Realne moduły+testy (32 asercje): GET /incidents/:id/controls (evidence→control) + GET /audit/export?format=csv|json. overclaim 153/0.
2026-07-05 · 05:00
Batch A: konektory DevSecOps (realny kod+testy) + AI-security depth LIVE
Rój 12 agentów — realne parsery z testami (nie tylko strony): /imports/sarif (CodeQL/Semgrep/GHAS), /imports/sbom (CycloneDX/SPDX, CRA), /imports/secrets (Gitleaks/TruffleHog, redakcja wartości), /imports/cloud (Prowler/ScoutSuite/Checkov/Trivy) + /tools/dedup (fingerprint cross-tool). Unit: 18+10+14+11+10 = 63 asercje PASS. Strony AI (F9, defensywnie): agent-coc (chain-of-custody agenta), tool-firewall, oversight-ledger (AI Act art.14), prompt-injection-pack, mcp-scanner, rag-trace. + kolekcja Postman. overclaim 144/0.
2026-07-05 · 04:54
Release-train v2.0: warstwa produktowa Fal 1-8 (18 stron) LIVE
Rój równoległy 18 agentów (rozłączne pliki, zero kolizji, overclaim 138/0). F1-3 = SPEC/ROADMAP (auth/transport/DB NIE aktywowane na prod — bramka /p ACK): auth-enterprise, security-architecture, signed-evidence, tenant-model. F4: siem/cti/servicenow. F5: model-risk/ai-incident. F7: dora/nis2/rodo/ai-act-pack. F8: procurement/pricing/case-studies/pilot-ops. pages.json: 138 (117 PL). Kolejka rozszerzona do Fal 0-13.
2026-07-05 · 03:39
v1.0 Stable Gate: academy/arena + security.txt + kolejka v2.0 LIVE
Domknięcie bramki v1.0 (audyt Ω∞). Nowe ścieżki: junior-academy (jakość dowodu, normalizacja findingów — dane syntetyczne) i senior-arena (test integralności warstwy evidence — defensywnie, po RoE; laby = ROADMAP). Naprawiono /.well-known/security.txt (CRLF→LF, nagłówek RFC 9116 — był kolapsowany do 1 linii). Potwierdzone dowodowo LIVE (200): trust-center, verify, remediation. Zapisano kolejkę release-train v2.0 (Fale 1-8, roje równoległe bez kolizji) — docs/ip3-v2-release-train-queue.md.
2026-07-05 · 03:30
Fala Partner-Readiness: partner/pilot + DPA + enterprise LIVE
Domknięcie luk z audytu Ω (weryfikacja co „nie poszło"). Nowe strony: partner (hub partner/pilot mode, F9), pilot-intake (formularz PoC), feedback (engine → roadmapa, wisienka #12), data-processing (RODO art. 28 / DPA, F1), enterprise-readiness (uczciwa mapa PoC→enterprise, F10). Aliasy: /trust→trust-center, /ciso→ciso-board-pack, /ai-risk→ai-risk-map. Sample pack: board-pack-demo.pdf (CRIT-5 domknięte). overclaim-lint 118/0.
2026-07-05 · 03:09
v1.0-core: release na prod (deploy) + hardening testów LIVE
Deploy v1.0-core na produkcję (wcześniej tylko na GitHub): /imports/defectdojo (parser DefectDojo → P0-P3 + CVE/CWE, most AppSec) i eksport /incidents/:id/ticket?system=jira|github (builder payloadu, transport = ROADMAP) — teraz realnie live. Strony remediation / release-notes / docs / demo na prod. Test integracyjny utwardzony na dedup/idempotencję (nonce per bieg — re-import nie faluje). Unit 7/7 + 7/7, node --check czysty, GitHub feat/orphan-pages zsynchronizowany.
2026-07-05 · 02:40
Fala v1.0-core: remediation + integracje + dedup LIVE
Krok do v1.0: dedup/idempotencja importów (re-import tego samego raportu nie duplikuje). Remediation workflow/incidents/:id/assign (owner+SLA per severity) + /transition (open→triaged→assigned→fixing→retest; close tylko z dowodem) + strona remediation. Integracje: /imports/defectdojo (most AppSec) + eksport tasku /incidents/:id/ticket?system=jira|github. Nowe strony: release-notes, docs (5 ścieżek), demo.
2026-07-05 · 02:10
Fala GO-ALL: split odbiorców + wisienki #9-15 LIVE
CRIT-2 split (czyste wejścia): /bank (CISO), /dev (pentester), /research. Nowe narzędzia client-side: anonymizer (deidentyfikacja raportu w przeglądarce) i deadline-clock (zegary RODO/NIS2/DORA/AI Act). Strony wartości: DORA timeline, coverage score (+ endpoint /incidents/:id/coverage), readiness score, regulatory packs, CISO board pack. Naprawiono status /connectors (Burp/ZAP/Nessus/Qualys/RE = LIVE v1).
2026-07-05 · 01:45
Reverse Engineering & Deobfuskacja LIVE
Na prośbę pentesterów: warstwa evidence-first dla analizy malware / RE / deobfuskacji binarek. Nowe: capability + playbook + realny konektor importu POST /api/ip3/v1/imports/re (YARA JSON / radare2 / generic RE → incydent+evidence+sha256). ipIII orkiestruje dowody z warsztatu RE (Ghidra/IDA/radare2/YARA), nie jest disassemblerem. Wyłącznie defensywnie, po RoE.
2026-07-05 · 01:26
Fala Trust & Evidence LIVE
Nowe strony: Status Matrix (jeden kanon: obszar/status/dowód/test), Znane ograniczenia (co jeszcze NIE robimy), Trust Center (PoC/dane/retencja/dostęp/DPA), Evidence Verifier (weryfikacja hash pakietu w przeglądarce) oraz publiczny sample pack (przykłady syntetyczne bez logowania).
2026-07-05 · 01:11
6 CI-testów spójności (odpowiedź na audyt) AUDYT
Automatyczne testy pilnujące spójności na przyszłość: status-consistency, link-check, overclaim-lint (0 overclaimów), security-headers, noindex-check, api-contract-drift. Wszystkie zielone na prod.
2026-07-05 · 01:02
Higiene pass po audycie (P0) FIX
Ujednolicone liczby testów (kanon 56/56) + Evidence Matrix; poprawiony artefakt &sector→§; liczba stron → kanon pages.json; statusy Qualys/enrichment/MITRE → LIVE; openapi 0.1.0-reference; złagodzona nota AI Act.
2026-07-05 · 00:05
Fala 1 demo→LIVE LIVE
Import Qualys (CSV/XML) /imports/qualys; enrichment offline CVE (KEV/CVSS/EPSS hint) przy imporcie; biblioteka MITRE ATT&CK (21 technik) + mapowanie /incidents/:id/ttp. Zbudowane rojami, testy 8/8+8/8+9/9.
2026-07-04 · 23:48
Wisienki #2 + #3 MVP
#2 Engagement report-package (raport TLPT JSON/PDF z timeline+hash). #3 Legal Trigger Engine — incydent → obowiązki DORA art.19 / NIS2 (24h/72h) / RODO art.33-34 / AI Act art.73 + zegary + draft (DECISION-SUPPORT).
2026-07-04 · 23:40
Poprawka śladu audytowego importu FIX
Evidence-package importowanego incydentu miał pustą sekcję audytu — dodano zdarzenie incident.import per-incydent. Higiena komunikacyjna (audyt 3 meta-sędziów): „certyfikuje"→„utrwala dowodowo".
2026-07-04 · 23:16
Wisienka #1 — Pentest Report → Board Pack LIVE
Realne parsery importu Burp (XML) · ZAP (JSON/XML) · Nessus (CSV) · generic CSV/JSON → incydent + evidence (sha256, chain-of-custody). Evidence-package / Board Pack JSON + realny PDF. DORA/TIBER white-team-log. Reguła close-with-evidence egzekwowana w bazie.
2026-07-04 · 13:18–13:52
Audyt r0xk0n (PR#39) + import generyczny v1 AUDYT
Niezależny audyt: bug F4 (obejście reguły close-with-evidence przez PATCH) naprawiony + testy regresyjne; F5/F6 domknięte. Pierwszy realny import (generic JSON) do PostgreSQL. EN w pages.json (koniec orphana /en).
Uczciwie. To dziennik zmian modułu ipIII (publiczny prototyp / controlled demo). Elementy oznaczone LIVE mają dowód (kod + test + endpoint); reszta jest jawnie ROADMAP na /roadmap-dev. Materiał nie stanowi certyfikacji ani opinii prawnej. Doktryna claim ≤ proof.