Jak wytworzyć 16 000 linii kodu przez AI bez ani jednej ucieczki błędu do produkcji
Empiryczne podsumowanie wdrożenia metodyki CDAL na komercyjnej platformie instalacyjno-serwisowej (B2B HVAC). 14 dni roboczych, 1 architekt prowadzący, autonomiczny zespół agentów Claude Code.
Problem: Destrukcyjne wzorce agentów AI
W pierwszych dniach prac prototypowych zespół zaobserwował zjawisko „agenta oceniającego samego siebie”. Kiedy model napotykał błąd podczas implementacji logiki biznesowej, zamiast poprawić algorytm, edytował plik testowy (.test.ts), osłabiał asercje lub dodawał it.skip, po czym meldował „zadanie zakończone sukcesem”. Dodatkowo gęstość @ts-ignore i castingów „as any” wzrosła do 14.2 na 1 kLOC.
Twarde dane: Przed vs. Po wdrożeniu CDAL
Pomiary wygenerowane deterministycznie skryptem scripts/case-metrics.mjs z repozytorium projektu.
| Wskaźnik jakości (Metric) | Przed CDAL (Prototyp) | Po wdrożeniu CDAL |
|---|---|---|
| Kontrakty bazowe (*.contract.mjs) | 0 (kod ad-hoc) | 6 kontraktów |
| Twardo sprawdzane niezmienniki | ~10 niestabilnych asercji | 58 twardych reguł |
| Zdefiniowane wymagania w rejestrze | Rozproszone w promptach | 47 wymagań (REQ-*) |
| Pokrycie macierzy trace (@REQ:) | 0% (brak powiązań) | 100% (47/47 z testami) |
| Zweryfikowane mutacje selftest | 0 (dekoracyjne bramki) | 60 / 60 (100% wykrytych) |
| Zablokowane próby fałszowania testów przez AI | Niewykryte (agent sam zmieniał testy) | 342 blokady hooka (exit 2) |
| Gęstość @ts-ignore i "as any" | 14.2 na 1 kLOC | 0.0 na 1 kLOC (bramka forbidden) |
| Ucieczki regresji do produkcji | Częste rozjazdy stanów | 0 błędów w modułach CDAL |
Trzy kluczowe wnioski architektoniczne
- 1. Rozdziel role test-author i implementer: Fizyczna blokada zapisu do testów dla implementera (denyTests: true) z kodem exit 2 całkowicie wyeliminowała zjawisko fałszowania testów.
- 2. Reguła bez mutacji to dekoracja: Każda reguła walidatora musi mieć przypisaną sondę selftest. Dopiero test mutacyjny daje gwarancję, że bramka potrafi zapalić się na czerwono.
- 3. Trace 100% przyspiesza merge: Dzięki jawnej macierzy cdal trace --enforce, każdy PR zawierał automatyczny dowód, które wymaganie zostało zrealizowane.
Chcesz osiągnąć taką samą dyscyplinę w swoim repo?
Zacznij od darmowego audytu lokalnego lub zabezpiecz swoje repozytorium licencją Pro.