Run Until Green (dezvoltare autonomă continuă)
Scop: duci un task de la „test care pică” la „totul verde + review”, singur, fără check-in uman la fiecare iterație.
Pre-condiții
Section titled “Pre-condiții”- 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 = 0RED: scrie testul care pică; rulează; confirmă că pică din motivul corectGREEN: scrie codul minim; rulează testeleloop: 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 BLOCKEDComenzi de verificare (default)
Section titled “Comenzi de verificare (default)”- 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(saumvn -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.
La SUCCESS
Section titled “La SUCCESS”- Commit pe branch-ul taskului, self-review, predă diff-ul către
reviewer. - Dacă reviewer = APPROVE → checkpoint + cere
gitlab-syncsă lege MR-ul de issue. - Dacă reviewer = REJECT (CRITICAL) → reintră în buclă cu instrucțiunile lui.
La BLOCKED
Section titled “La BLOCKED”- 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.
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âmplatrap 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șireReguli:
docker-compose.test.ymllipsă → generează-l din serviciile din.yo-rc.json(postgres, kafka; keycloak la oauth2) și comite-l în03-development/<app>/.- Nu lăsa niciodată containere pornite după rulare.
down -ve întrap/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).