Zły prompt
Czasem 409, dodaj sleep i retry, bedzie git.
Developer · FREE
Objawy czasem 409, podwojny zapis, lost update: rysuje wyscig dwoch aktow o wspolny stan, daje rownolegle repro i jedna obrone w bazie albo kolejce. Nie sleep 100 ms.
reviewed:
Objaw: [OBJAW]. Wspolny stan (wiersz, plik, klucz, kasa, unikalny email): [STAN]. Transakcja / unique / lock (tak/nie, co dokladnie): [TRANSAKCJA]. Dwa request-id z logu (opcjonalnie): [REQUEST_IDS].
NIE PISZ PATCHA NA WEJSCIU. NIE proponuj `sleep`, `setTimeout`, `synchronized` na caly serwis, "retry az przejdzie".
Jesli [STAN] pusty - dopytaj CO jest wspoldzielone i KTO dwoch to rusza, i stop.
Jesli nie da sie wyslac dwoch requestow rownolegle - napisz czego brakuje (endpoint, auth, narzedzie) i stop.
Zwracasz:
## 1. Wyscig
- Akt A: kto, jaka mutacja, jaki klucz.
- Akt B: kto, jaka mutacja, ten sam klucz.
- Stan wspolny: nazwa tabeli/kolejki/pliku + pole.
- Czego brakuje: unique / version column / lock / single consumer / idempotency-key.
## 2. Oś czasu (dwie linie)
```
A: read(v) -------- write(v) ---->
B: read(v) -------- write(v) ---->
^ lost update / duplikat
```
Wstaw prawdziwe nazwy z [STAN], nie "v".
## 3. Repro ROWNOLEGLE
Nie "odpal dwa razy po kolei". Skrypt:
- `xargs -P` / GNU parallel / k6 (2+ vu, ten sam payload) / dwa `curl` w tle.
- asercja: duplikat wiersza, 409, rozjazd salda, dwa maile.
- to samo dwa razy z rzędu = ten sam wynik (deterministyczne okno, nie "czasem").
## 4. Jedna obrona
Wybierz JEDNA, w tej kolejnosci preferencji:
1. unique constraint / upsert na kluczu biznesowym
2. kolumna wersji (optimistic: UPDATE ... WHERE version=n)
3. jedna kolejka, jeden consumer na klucz
Nie: sleep 100ms, "retry w UI", lock w pamieci procesu.
## 5. Test, ktory pali stary kod
Rownolegly test (k6 albo dwa requesty w tesie integracyjnym). Na starym kodzie ma PADAC. Po "ok, koduj": minimalny diff + ten test.
Jesli [REQUEST_IDS] sa: uzyj ich jako dowodu dwoch aktow, nie zgaduj trzeciego.
Dywiz "-". Kod po angielsku. Czasem 409, dodaj sleep i retry, bedzie git.
Objaw: [OBJAW]. Wspolny stan (wiersz, plik, klucz, kasa, unikalny email): [STAN]. Transakcja / unique / lock (tak/nie, co dokladnie): [TRANSAKCJA]. Dwa request-id z logu (opcjonalnie): [REQUEST_IDS]. NIE PISZ PATCHA NA WEJSCIU. NIE proponuj `sleep`, `setTimeout`, `synchronized` na caly serwis, "retry az przejdzie". Jesli [STAN] pusty - dopytaj CO jest wspoldzielone i KTO dwoch to rusza, i stop. Jesli nie da sie wyslac dwoch requestow rownolegle - napisz czego brakuje (endpoint, auth, narzedzie) i stop. Zwracasz:
Agentowy asystent kodowania Anthropic uruchamiany w terminalu.
Alternatywy
Edytor kodu z wbudowanym agentem AI, fork Visual Studio Code.
Alternatywy
Uzupełnij pola w nawiasach (albo weź je z profilu Skill creator na /skille), kliknij Kopiuj i wklej treść do instrukcji projektu w Claude.ai. W Claude Code kliknij Pobierz SKILL.md i połóż plik w folderze skilli. Skill działa też w ChatGPT (Custom Instructions). Nie chowa się za paywallem: kopia jest darmowa.
Nie gdy to zwykly flaky test UI bez wspoldzielonego stanu (to testy-flaky-izolacja). Nie do dorzuc synchronized na wszystko. Nie gdy nie umiesz wyslac dwoch requestow naraz.