feat: initial commit
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# ADR-0003: Runtime w efemerycznym jobie GitLab CI, nie w usłudze
|
||||
|
||||
- Status: przyjęty
|
||||
- Data: 2026-08-28
|
||||
|
||||
## Kontekst
|
||||
|
||||
agno pozwala wystawić agentów jako usługę (AgentOS/FastAPI) z bazą sesji, pamięcią i UI.
|
||||
Kuszące, ale dla zadania "zmodyfikuj kod i otwórz MR" oznacza nową usługę produkcyjną:
|
||||
własne SLA, uwierzytelnianie, przechowywanie stanu, przegląd bezpieczeństwa i dostęp
|
||||
do repozytoriów z długożyjącego procesu.
|
||||
|
||||
## Decyzja
|
||||
|
||||
Runtime to efemeryczny job GitLab CI. Jedno uruchomienie = jeden job = jeden katalog roboczy
|
||||
= jeden komplet artefaktów. Stan przebiegu żyje w artefaktach (`run.json`, `trace.jsonl`,
|
||||
`changes.patch`), nie w bazie. Uprawnienia to uprawnienia joba (token projektowy),
|
||||
a nie konta usługowego z dostępem do wszystkiego.
|
||||
|
||||
Wyzwalanie: issue z labelką (webhook → trigger token), zdarzenie na MR, harmonogram
|
||||
oraz ręczny formularz w "Run pipeline" (zmienne z `description` i `options`).
|
||||
|
||||
## Konsekwencje
|
||||
|
||||
**Pozytywne**
|
||||
|
||||
- Zero nowej usługi do utrzymania i przeglądu bezpieczeństwa.
|
||||
- Naturalna izolacja: brak stanu współdzielonego między przebiegami.
|
||||
- Bramka manualna w CI daje właściciela podpisu pod zmianą.
|
||||
- Limity zasobów i czasu przychodzą z platformy CI.
|
||||
|
||||
**Negatywne**
|
||||
|
||||
- Brak pamięci między przebiegami - powtórka zaczyna od zera (świadomy kompromis:
|
||||
pamięć między przebiegami w narzędziu modyfikującym kod to więcej ryzyka niż korzyści).
|
||||
- Zimny start: instalacja kontekstu APM w każdym przebiegu (łagodzone cache'em i artefaktami).
|
||||
- Brak interaktywnego trybu "zapytaj człowieka w trakcie" - stąd wzorzec `requires_human`:
|
||||
agent nie pyta, tylko oznacza i idzie dalej.
|
||||
Reference in New Issue
Block a user