Files
agentic-codemod-pipeline/docs/adr/0004-guardraile-w-dwoch-warstwach.md
2026-08-29 13:17:59 +02:00

1.5 KiB

ADR-0004: Guardraile w dwóch warstwach - prompt nie jest zabezpieczeniem

  • Status: przyjęty
  • Data: 2026-08-28

Kontekst

Instrukcje w promptcie ("nie modyfikuj .gitlab-ci.yml") działają w większości przypadków, ale są miękkie: zależą od modelu, długości kontekstu i sformułowania zadania. W repozytorium bankowym pytanie audytora nie brzmi "czy model zwykle tego nie robi", tylko "co się stanie, jeśli spróbuje".

Decyzja

Każdy istotny guardrail istnieje dwukrotnie:

  • jako instrukcja APM dla modelu (security.instructions.md) - żeby agent w ogóle nie próbował,
  • jako mechanizm w kodzie (WorkspaceTools, Settings.deny_globs, budżety, brak powłoki) - żeby próba zakończyła się błędem narzędzia zapisanym w śladzie audytowym.

Ta sama zasada dotyczy oceny wyniku: werdykt agenta reviewer jest uzupełniany niezależną kontrolą mechaniczną (pliki objęte zakazem, zmiany w testach, budżet zakresu, status weryfikacji).

Konsekwencje

Pozytywne

  • Naruszenie guardraila jest zdarzeniem obserwowalnym, a nie niewidoczną zmianą w diffie.
  • Da się odpowiedzieć na pytanie "co system uniemożliwia", a nie tylko "o co prosi".
  • Testy zabezpieczeń (test_workspace_tools.py) są testami jednostkowymi, nie ćwiczeniem z promptowania.

Negatywne

  • Duplikacja reguł w dwóch miejscach - trzeba je świadomie utrzymywać razem.
  • Zbyt ciasne budżety potrafią zablokować poprawną, ale szeroką zmianę; wartości są konfigurowalne przez zmienne środowiskowe i powinny być dostrajane per klasa repozytoriów.