Sari la conținut

Run Until Green (dezvoltare autonomă continuă)

Acest conținut nu este încă disponibil în limba selectată.

Scop: duci un task de la „test care pică” la „totul verde + review”, singur, fără check-in uman la fiecare iterație.

  • Există un plan de task (din writing-plans) cu fișiere și criterii.
  • Baseline de teste curat (build trece, suita existentă verde) — verifică ÎNTÂI.
  • Comenzile de verificare per stack sunt cunoscute (vezi mai jos).

Bucla (max MAX_GREEN_ITERATIONS iterații)

Section titled “Bucla (max MAX_GREEN_ITERATIONS iterații)”
iter = 0
RED: scrie testul care pică; rulează; confirmă că pică din motivul corect
GREEN: scrie codul minim; rulează testele
loop:
iter += 1
rulează: build + lint + teste
dacă VERDE:
refactor (opțional) → re-rulează → checkpoint (skill checkpoint-and-resume) → ieși cu SUCCESS
dacă ROȘU:
systematic-debugging (4 faze): reproduce → izolează cauza → ipoteză → fix minim
NU slăbi testul, NU skip, NU șterge aserțiuni ca să „treacă"
dacă iter >= MAX: scrie raport de blocaj în inbox (OPEN!) și ieși cu BLOCKED
  • Angular: npm ci && npm run lint && npm test -- --watch=false --browsers=ChromeHeadless ; e2e: npx playwright test
  • ASP.NET Core: dotnet restore && dotnet build -warnaserror && dotnet test
  • Java Spring Boot: ./gradlew build test (sau mvn -B verify)

Reguli dure (steaguri roșii = oprește și raportează)

Section titled “Reguli dure (steaguri roșii = oprește și raportează)”
  • Test care trece din prima fără să fi picat → suspect; verifică că testează ceva real.
  • „Repararea” prin modificarea testului ca să accepte comportamentul greșit → INTERZIS.
  • should/probably/seems/ar trebui să meargă → nu e verde; rulează și dovedește.
  • Cod scris înainte de test → șterge-l, reia RED.
  • Commit pe branch-ul taskului, self-review, predă diff-ul către reviewer.
  • Dacă reviewer = APPROVE → checkpoint + cere gitlab-sync să lege MR-ul de issue.
  • Dacă reviewer = REJECT (CRITICAL) → reintră în buclă cu instrucțiunile lui.
  • Raport în inbox.md (OPEN!): ce încerca taskul, ce ai încercat, erorile, 2–3 ipoteze, ce input îți trebuie. Treci la următorul task care nu depinde de acesta.

§docker-compose — mediu de test ridicat de agent (obligatoriu la integrare)

Section titled “§docker-compose — mediu de test ridicat de agent (obligatoriu la integrare)”

„Done = testat.” Testele de integrare rulează pe servicii reale (PostgreSQL + Kafka, Keycloak dacă oauth2), ridicate de agent și oprite mereu, chiar și la eșec.

Terminal window
APP=<app>; COMPOSE="03-development/$APP/docker-compose.test.yml"; PORT=<serverPort>
cleanup() { docker compose -f "$COMPOSE" down -v; } # oprește ȘI curăță volumele, orice s-ar întâmpla
trap cleanup EXIT
docker compose -f "$COMPOSE" up -d --wait # postgres + kafka (+ keycloak)
mvn -B verify # unit + integrare (Testcontainers unde există)
python 03-development/ci-templates/api_audit.py --base "http://localhost:$PORT" # Standard API / RFC7807
# (opțional) npx playwright test # E2E frontend cu backend pornit
# `trap` face `down -v` automat la ieșire

Reguli:

  • docker-compose.test.yml lipsă → generează-l din serviciile din .yo-rc.json (postgres, kafka; keycloak la oauth2) și comite-l în 03-development/<app>/.
  • Nu lăsa niciodată containere pornite după rulare. down -v e în trap/finally.
  • Un rezultat „verde” fără ca integrarea să fi rulat pe compose NU e verde — e incomplet.
  • Documentează în checkpoint comenzile rulate + rezultatul (inclusiv up/down-ul mediului).