1.6 KiB
1.6 KiB
ADR-0002: Deterministycznie tyle, ile się da; model tylko na resztę
- Status: przyjęty
- Data: 2026-08-28
Kontekst
Migracja SDK to w większości mechaniczne podmiany. Powierzenie ich modelowi kosztuje tokeny, wydłuża przebieg i wprowadza wariancję tam, gdzie wariancja jest czystą stratą - nikt nie chce, żeby dwa uruchomienia dawały inny diff dla tej samej zmiany nazwy metody.
Decyzja
Dzielimy pracę wzdłuż linii "czy da się to zrobić kodem":
- Wykrycie ekosystemu, plików zależności i komendy testowej - adapter (
adapters/). - Podbicie deklaracji wersji - adapter.
- Migracja objęta regułami - silnik reguł czytający
*.codemod.yamlz pakietu APM. - Reszta - agent
coderz LLM. - Ocena wyniku - agent
revieweroraz niezależna kontrola mechaniczna.
Reguły codemod są częścią pakietu APM (leżą obok notatki migracyjnej), więc podlegają temu samemu przeglądowi i wersjonowaniu co wiedza dla modelu.
Konsekwencje
Pozytywne
- Powstaje tryb
--offline: ta sama topologia bez modelu. Smoke test całego pipeline'u na każdym MR, bez GPU i bez internetu. - Punkt odniesienia: widać, ile przypadków model faktycznie dołożył ponad reguły.
- Mniejszy koszt i krótszy przebieg dla typowych migracji.
Negatywne
- Dwie ścieżki do utrzymania (
RuleBrain,LlmBrain) i wspólny kontrakt między nimi. - Reguły regexowe mają znane ograniczenia (zmiany strukturalne, wieloliniowe konteksty). Świadomie nie budujemy własnego silnika AST - od tego są narzędzia dziedzinowe (OpenRewrite, jscodeshift), które można podpiąć jako kolejny adapter.