10X WORKFLOW // MODUŁ 3 // 5 LEKCJI
Marcin celowo uruchamia błąd testu, a Przemek sprawdza kolejne warstwy quality gates
DOWÓD JAKOŚCI

Nie tylko zielone testy: ryzyko, deliberate-break check i najtańsza skuteczna bramka.

MODUŁ 3 // JAKOŚĆ

Najpierw ryzyka, nie pliki

Jakość w 10x Workflow: pięć lekcji o tym, jak chronić najgroźniejsze scenariusze testem, którego asercja realnie pada - plan testów, wyrocznia i mutacja, warstwy hooków, przelot E2E i debugowanie z dowodów. Zielony test, który nie pada po zepsuciu, niczego nie pilnuje.

Skrót modułu · pięć lekcji w 30 sekund

ZAPAMIĘTAJ:

Zaczynaj od ryzyk, nie od plików - i pisz testy, których asercja naprawdę pada na zepsutym kodzie.

LEKCJA 01Diuna · Fremeni

Plan testów - co zabija projekt najpierw?

„Pustynia zabija w znanej kolejności: najpierw pragnienie, potem burza, na końcu czerw. Kto wychodzi z siczy bez tej mapy, nie wraca."

- nauka Fremenów, przed wyjściem z siczy
PRAWDOPODOBIEŃSTWO →WPŁYW →CHRONIONE NAJPIERWTEST-PLAN.MDRYZYKO = AWARIA U USERA
RYS. 01 // MAPA RYZYK: WPŁYW × PRAWDOPODOBIEŃSTWO

Fremeni nie wychodzą z siczy z listą rzeczy do zrobienia - wychodzą z mapą tego, co zabija. Pustynia jest przewidywalna w swojej wrogości: każde zagrożenie ma znaną wagę i znaną częstość. Plan testów przenosi ten rygor na projekt: zamiast pokrywać pliki po kolei, mapuje ryzyka na osi wpływ × prawdopodobieństwo, a każde ryzyko opisuje jako awarię u usera - „koszyk gubi pozycje przy odświeżeniu", nie „brak testów w cart.ts".

Plan testów zaczyna od mapy tego, co zabija projekt, a nie od listy plików: mapuje ryzyka na osi wpływ × prawdopodobieństwo, a każde ryzyko opisuje jako awarię u usera - „koszyk gubi pozycje przy odświeżeniu", nie „brak testów w cart.ts".

Wejście: działający produkt i PRD. Wyjście: context/foundation/test-plan.md - mapa ryzyk pocięta na etapy rolloutu, od najgroźniejszych scenariuszy w dół. Mechanizm: /10x-test-plan orkiestruje dowiezienie testów, nie pisze ich sam - każdy etap prowadzi przez łańcuch (research → plan → implement), a ponowne uruchomienie wznawia od następnego etapu zamiast zaczynać od zera.

Pytanie
co zabija projekt najpierw?
Gwarancja
najgroźniejsze scenariusze chronione najpierw
Artefakt
test-plan.md w context/foundation/
Narzędzia
/10x-test-plan → łańcuch: research → plan → implement
CEL:

zanim powstanie pierwszy test - kolejność pisania testów wyznacza mapa ryzyk, nie struktura katalogów.

DEEP DIVE // 10x-test-planROZWIŃ ↓
  1. 01Po co

    Orkiestrator, nie autor testów: pisze context/foundation/test-plan.md jako etapową strategię rolloutu i prowadzi każdy etap przez łańcuch: nowa zmiana → research → plan → implement. Ponowne uruchomienie odczytuje stan z dysku i wznawia od pierwszego niedomkniętego etapu.

  2. 02Wejście → wyjście

    Wejście: PRD, roadmapa, archiwum zmian, skan hot-spotów z historii gita (ostatnie 30 dni) i wywiad z użytkownikiem - pięć pytań o realne obawy, wcześniejsze wpadki i miejsca zmieniane bez pewności. Wyjście: mapa ryzyk wpływ × prawdopodobieństwo pocięta na etapy rolloutu ze statusami.

  3. 03Dowody, nie kotwice

    Każde ryzyko cytuje dowód: linię PRD, odpowiedź z wywiadu, katalog o wysokim churnie. Nigdy plik:linia - kotwice w kodzie znajduje dopiero research w ramach konkretnego etapu, na aktualnym kodzie. Ryzyko to scenariusz awarii u usera, nie lokalizacja w repo.

  4. 04Koszt × sygnał

    Dla każdego ryzyka plan niesie wskazówki odpowiedzi:

    • co by dowiodło ochrony (zachowanie, nie „pokryj moduł"),
    • jakie oczywiste założenie trzeba podważyć,
    • najtańsza warstwa testu, która daje realny sygnał,
    • antywzorzec do uniknięcia - najgroźniejszy to wyrocznia spisana z implementacji: taki test przyklepuje bieżące bugi.
  5. 05Soczewka nadużyć

    Jeśli produkt ma logowanie, płatności albo przyjmuje dane od użytkownika, mapa musi zawierać co najmniej jeden scenariusz nadużycia: kontrola własności zasobu, walidacja po stronie serwera, wyciek sekretów lub danych, nadużycie zasobów. Happy path nie zawiera atakującego, więc te ryzyka nie wypłyną same z wywiadu.

  6. 06Granice

    Nie pisze kodu testów, nie konfiguruje hooków ani CI - to robota etapów rolloutu. Nie wymyśla ryzyk: każde musi się wywodzić z PRD, roadmapy, archiwum, hot-spotów albo wywiadu. Jeden test do jednego pliku to teren /10x-tdd, nie rollout.

LEKCJA 02Problem trzech ciał · Eksperyment

Od planu do testów - skąd test wie, co jest poprawne?

„Nie pytaj teorii, czy ma rację. Zepsuj układ i patrz, czy przyrząd krzyknie - pomiar rozstrzyga, nie wiara."

- protokół eksperymentu, dziennik zespołu badawczego
UKŁAD: ZEPSUTY CELOWOPRZYRZĄD = TESTCZERWIEŃWYROCZNIA: Z WYMAGAŃ, NIE Z KODUZIELONY, KTÓRY NIE PADA, NICZEGO NIE PILNUJE
RYS. 02 // MUTATION CHECK: ZEPSUJ I POTWIERDŹ CZERWIEŃ

W „Problemie trzech ciał" spory rozstrzyga eksperyment: teoria, której nie da się zmierzyć, jest tylko opinią. Test ma tę samą naturę - to, co poprawne, musi znać z wyroczni zbudowanej z wymagań i researchu, nie z kodu, który sprawdza. Test odczytujący oczekiwaną wartość z implementacji tylko ją powiela - przyklepie każdy bug, który już tam mieszka. Stąd antywzorce do wytępienia: asercje spisane z kodu, snapshoty bez zrozumienia, mocki testujące mocki.

To, co poprawne, test musi znać z wyroczni zbudowanej z wymagań i researchu, nie z kodu, który sprawdza. Asercja spisana z implementacji tylko ją powiela - przyklepie każdy bug, który już tam mieszka; stąd antywzorce do wytępienia: asercje spisane z kodu, snapshoty bez zrozumienia, mocki testujące mocki.

Wejście: jedno ryzyko z test-plan.md. Wyjście: test, którego asercja realnie pada na zepsutym kodzie. Mechanizm: mutation check - zepsuj chronione zachowanie celowo i potwierdź czerwień; jeśli przyrząd nie krzyczy po sabotażu, niczego nie mierzy. /10x-tdd wymusza tę kolejność od początku: czerwony test przed kodem, zieleń jako dowód, refactor na osłoniętym gruncie.

Pytanie
skąd test wie, co jest poprawne?
Gwarancja
asercja, która realnie pada na zepsutym kodzie
Artefakt
test chroniący ryzyko + potwierdzona czerwień
Narzędzia
/10x-tdd, mutation / deliberate-break check
CEL:

przy każdym teście pisanym przez agenta - wyrocznia pochodzi z wymagań, a dowodem jakości testu jest jego czerwień na zepsutym kodzie.

DEEP DIVE // 10x-tddROZWIŃ ↓
  1. 01Po co

    Test-first brat /10x-implement: prowadzi etapy zatwierdzonego planu przez pętlę czerwony → zielony → refactor. Padający test powstaje przed kodem produkcyjnym - wyrocznia fizycznie nie może zostać spisana z implementacji, bo tej jeszcze nie ma.

  2. 02Bramka wejścia

    Przed każdym etapem dwa pytania: czy implementacja jeszcze nie istnieje i czy etap da się poprowadzić padającym testem. Istniejący kod - stop i przekierowanie do /10x-implement, bo testy dopisane po fakcie to nie TDD. Scaffolding, config, infra, szlif wizualny - też przekierowanie: tam padający test niczego nie prowadzi.

  3. 03RED

    Jeden test na jedno zachowanie, nazwany od wyniku („zwraca 429 po przekroczeniu limitu"), asercje o wynikach, nie o wnętrznościach. Test musi spaść z właściwego powodu: brakującego zachowania, nie błędu składni w samym teście. Pomijanie testu przez it.skip, żeby „przeszło", jest zakazane - czerwień to sedno.

  4. 04GREEN i REFACTOR

    Najmniejszy kod produkcyjny, który gasi czerwień - bez budowania na zapas, przyszłe zachowania dostaną własny krok RED. Potem porządki przy zielonym teście: nazwy, duplikacja, typy - bez zmiany zachowania. Budżet: 2-5 testów na etap, te, które łapią realne regresje; nie test na getter.

  5. 05Antywzorce

    Testowanie detali implementacji (prywatny stan, kolejność wywołań), over-mocking (gdy wszystko jest mockiem, testujesz mocki), snapshoty dla logiki biznesowej, prawie-duplikaty pod różnymi nazwami. I żelazna zasada: commit tylko na zielono - nigdy przy czerwonym albo pominiętym teście.

LEKCJA 03Star Wars · Tarcze deflektorowe

Hooki i triggery - co łapie błąd, zanim go zobaczysz?

„Najpierw pracuje tania osłona zewnętrzna, potem deflektory, na końcu pancerz. Ogień, który dochodzi do kadłuba, to porażka wszystkich warstw."

- oficer sekcji tarcz, odprawa przed bitwą
KODPRE-PUSHPRE-COMMITPER-EDIT // NAJTAŃSZADRYF ŁAPANY SEKUNDY PO POWSTANIUIM DALEJ OD KODU, TYM DROŻSZY BŁĄD
RYS. 03 // BŁĄD GAŚNIE NA NAJTAŃSZEJ WARSTWIE

Krążownik nie przyjmuje ognia na pancerz kadłuba - od tego są tarcze deflektorowe, warstwa za warstwą, od najtańszej na zewnątrz po najdroższą przy poszyciu. Obrona jakości działa tak samo i jest uporządkowana według kosztu: per-edit (lint i typecheck sekundy po zapisie) → pre-commit → pre-push. Im dalej błąd doleci, tym droższe jest jego zestrzelenie.

Obrona jakości jest uporządkowana według kosztu: per-edit (lint i typecheck sekundy po zapisie) → pre-commit → pre-push. Im później błąd zostanie wykryty, tym droższa jest jego naprawa.

Wejście: reguły jakości projektu - lint, typecheck, szybkie testy. Wyjście: hooki zapięte na zdarzenia - per-edit, pre-commit i pre-push, każdy z własnym budżetem czasu. Mechanizm: self-checking pipeline - dryf jest wykrywany sekundy po powstaniu, w tle, bez udziału człowieka; do końca etapu dolatuje już tylko to, czego żadna warstwa nie mogła złapać wcześniej.

Pytanie
co łapie błąd, zanim go zobaczysz?
Gwarancja
dryf wykryty sekundy po powstaniu, nie na końcu etapu
Artefakt
hooki per-edit / pre-commit / pre-push w repo
Narzędzia
hooki (PostToolUse, pre-commit, pre-push), lint, typecheck
CEL:

przy pracy z agentem, który generuje kod szybciej, niż czytasz - błąd ma zgasnąć na najtańszej warstwie, zanim dotknie historii gita.

LEKCJA 04The Expanse · Lot testowy Rocinante

Testy E2E - czy całość naprawdę lecidziała?

„Makieta w doku nie powie ci, czy statek leci. Wyprowadź go, odpal silniki i czytaj przyrządy w locie."

- mechanik pokładowy, przed lotem testowym
UIAPIDANESEED: DANE POD PRZELOTE2E TYLKO TAM, GDZIE MOCK BY SKŁAMAŁPEŁNY PRZELOT, NIE DOK
RYS. 04 // LOT TESTOWY: PRZEZ WSZYSTKIE MODUŁY, NIE W DOKU

Rocinante nie dowiodła, że lata, na schematach w doku - dowiodła tego lotem testowym: silniki, nawigacja, kadłub i załoga naraz, w próżni. Test E2E to ten sam manewr: przelot przez wszystkie moduły naraz - UI, API, dane - dokładnie tam, gdzie mock by skłamał. Obowiązuje zasada najtańszego testu dającego sygnał: jeśli unit wystarcza, E2E jest przepychem; jeśli unit kłamie, E2E jest jedynym uczciwym pomiarem. Celem jest sygnał, nie coverage.

Test E2E to przejście przez wszystkie moduły naraz - UI, API, dane - dokładnie tam, gdzie mock by skłamał. Obowiązuje zasada najtańszego testu dającego sygnał: jeśli unit wystarcza, E2E jest przepychem; celem jest sygnał, nie coverage.

Wejście: działająca aplikacja i ryzyko z planu, którego nie pokryje nic tańszego. Wyjście: testy Playwright + seed test przygotowujący dane pod przelot. Mechanizm: /10x-e2e prowadzi ryzyko przez plan → generate → review → verify na uruchomionej aplikacji, multimodalnie - agent czyta DOM i patrzy na zrzuty ekranu jednocześnie, więc widzi też to, czego selektor nie złapie.

Pytanie
czy całość naprawdę leci?
Gwarancja
przelot end-to-end tam, gdzie unit by skłamał
Artefakt
testy Playwright + seed test
Narzędzia
/10x-e2e, Playwright CLI/MCP (DOM + vision)
CEL:

dla ścieżek krytycznych - logowanie, płatność, zapis danych - E2E tylko tam, gdzie mock by skłamał, nie do gonienia coverage.

DEEP DIVE // 10x-e2eROZWIŃ ↓
  1. 01Po co

    Prowadzi etapy planu wymagające przeglądarki jedno ryzyko na raz przez pętlę plan → generate → review → verify. Agent wygeneruje przechodzący test E2E w sekundy; trudne jest to, żeby test chronił realne ryzyko i przeżył jutrzejszy refactor - i właśnie tę pracę wykonuje ta pętla.

  2. 02Bramka wejścia

    Trzy warunki naraz: ryzyko naprawdę wymaga przeglądarki (przecina auth, routing, API i dane albo istnieje tylko w wyrenderowanym UI), feature jest już zbudowany i uruchamialny, a test dla tego ryzyka jeszcze nie istnieje. Wszystko inne - przekierowanie do /10x-tdd albo /10x-implement: E2E to najdroższa i najbardziej krucha warstwa.

  3. 03Dwie dźwignie

    Testów E2E nie generuje się od zera. Jakości pilnują dwie dźwignie: seed.spec.ts - wzorcowy test, na którym modelowany jest każdy następny (co pokażesz, to dostaniesz), oraz plik reguł E2E czytany przed generowaniem. Prompt niesie tylko to, czego dźwignie nie zakodują: konkretne ryzyko, flow i granice real vs mock.

  4. 04Mechanizm

    Agent widzi drzewo dostępności (role, nazwy, stany), nie piksele - stąd naturalnie lokatory getByRole, nie selektory CSS. Granice wewnętrzne (auth, routing, baza) zostają prawdziwe, bo tam mieszka ryzyko integracji; mockuje się wyłącznie drogie lub niedeterministyczne zewnętrzne API, na warstwie sieci.

  5. 05Review: 5 antywzorców

    Wygenerowanego testu nie przyjmuje się na słowo. Przegląd łapie pięć antywzorców: halucynowana asercja, kruchy selektor, współdzielony stan, czekanie na czas zamiast na stan, brak sprzątania. Poprawka to re-prompt po nazwie antywzorca: co jest źle, czemu nie chroni ryzyka, jaki wzorzec ma to zastąpić - nigdy ogólne „napraw ten test".

  6. 06Verify

    Zielony wynik to za mało. Pytanie kontrolne: czy test spadnie, gdy ryzyko z planu naprawdę się zmaterializuje? Dowodem jest deliberate break: celowe zepsucie chronionego zachowania i potwierdzona czerwień, potem natychmiastowy powrót do stanu sprzed zepsucia. Budżet: jeden test na ryzyko, rzadko więcej niż 1-3 na etap.

LEKCJA 05Hyperion · Pielgrzymi

Debugowanie - co mówią wszystkie przyrządyźródła naraz?

„Każdy z nas niesie inną opowieść i żadna z osobna niczego nie wyjaśnia. Prawda leży tam, gdzie opowieści się przecinają."

- zasada pielgrzymów, w drodze do Grobowców Czasu
SENTRYWRANGLER LOGSCONSOLENETWORKPRZECIĘCIE OPOWIEŚCIDIAGNOZAŻADNE ŹRÓDŁO SAMO NIE WYSTARCZATRY/CATCH → 200 = POŁKNIĘTY DOWÓD
RYS. 05 // WIELE OPOWIEŚCI, JEDNA DIAGNOZA

Pielgrzymi w drodze do Grobowców Czasu docierają do prawdy tylko dlatego, że każdy opowiada własną historię - żadna z osobna niczego nie wyjaśnia, wszystkie naraz wskazują to samo miejsce. Debugowanie z agentem działa identycznie: synteza dowodów z wielu źródeł - Sentry z produkcji, wrangler logs z backendu, konsola i network z Playwrighta - zamiast mistrzostwa w jednym narzędziu.

Debugowanie z agentem to synteza dowodów z wielu źródeł naraz - Sentry z produkcji, wrangler logs z backendu, konsola i network z Playwrighta - zamiast mistrzostwa w jednym narzędziu. Żadne źródło z osobna niczego nie wyjaśnia; wszystkie naraz wskazują to samo miejsce.

Wejście: objaw - błąd u usera, czerwony test, alert. Wyjście: diagnoza poparta dowodami i naprawa przypięta testem, żeby regresja nie wróciła. Mechanizm: zbierz odczyty wszystkich przyrządów naraz i szukaj przecięcia opowieści; po drodze wytęp połykanie błędów - try/catch zwracający 200 to zamiatanie dowodów (OWASP A10:2025), przez które następna diagnoza zaczyna od zera.

Pytanie
co mówią wszystkie przyrządy naraz?
Gwarancja
diagnoza z dowodów, nie z przeczucia
Artefakt
diagnoza + test przypinający naprawę
Narzędzia
Sentry MCP, wrangler logs, Playwright console/network
CEL:

gdy objaw i przyczyna mieszkają w różnych warstwach - diagnozę stawia przecięcie źródeł, nie pierwsze podejrzenie.

DALEJJakość domyka blok · 10xBuilder

Dalej: blok domknięty

BLOK 10XBUILDER // FUNDAMENT → ŁAŃCUCH → JAKOŚĆ

Jakość domyka blok 10xBuilder. Fundament stawia rampę, łańcuch lata jednostkami pracy, skalowanie podnosi rygor i autonomię, a jakość pilnuje, żeby to, co lata, nie spadało.

Jakość domyka blok 10xBuilder. Fundament przygotowuje projekt, łańcuch dowozi jednostki pracy, skalowanie podnosi przepustowość i autonomię, a jakość pilnuje, żeby poziom nie spadał, gdy tempo rośnie.

moduł 1
Moduł 1: Fundament - od pomysłu do rampy startowej
moduł 2 // csc
Core Skills Chain - pięć skoków jednej jednostki pracy
skalowanie
Skalowanie - quality gates, goal, loops
MODUŁ 4 // LEGACY

Dalej gra toczy się w cudzym kodzie: 10xArchitect otwiera moduł o legacy - zastane systemy, brak testów, archeologia decyzji. Wszystko, czego ten moduł nauczył cię na własnym kodzie, wraca tam ze zdwojoną stawką.

zapowiedź
legacy (M4, 10xArchitect) - praca w zastanych systemach
zasada
w legacy test chroniący zachowanie powstaje, zanim ruszy refactor
CO DALEJ:

Blok 10xBuilder masz za sobą: fundament, łańcuch i testy, które realnie łapią błędy. Moduł 4 przenosi to wszystko do cudzego kodu - zacznij od lekcji o mapie projektu.