Files
mercadodevida/work/artifacts/F-138/qa.json
2026-08-22 10:22:25 +02:00

19 lines
2.0 KiB
JSON

{
"feature_id": "F-138",
"agent": "qa",
"stage": "qa_gate",
"verdict": "APPROVED",
"summary": "Build is green and behavior is verified. tsc --noEmit returns 0 errors; the full vitest suite passes 209/209 (57 DB itests skipped without TEST_DATABASE_URL) with no regressions; the 3 new CreateProductVariant unit tests directly assert the AC. The AC integration test in catalog.itest.ts is present and skipped only due to no TEST_DATABASE_URL (repo convention).",
"checks": [
{"item": "AC1 — seed called with variant.id right after creation", "ok": true, "evidence": "variant-use-cases.test.ts 'seeds a default price row immediately after creating the variant' → pricing.seedCalls == ['variant-1']"},
{"item": "AC1 — no seed when product not found", "ok": true, "evidence": "variant-use-cases.test.ts 'does not seed a price row when the product does not exist' → pricing.seedCalls == []"},
{"item": "AC3 — best-effort: creation succeeds even if seed throws", "ok": true, "evidence": "variant-use-cases.test.ts 'returns the created variant even if seeding the price row fails' → result === variant, seedCalls recorded"},
{"item": "AC2/AC4 — idempotency + 3 call sites covered", "ok": true, "evidence": "PgPricingRepository.seedVariantPrice uses ON CONFLICT DO NOTHING; single constructor shared by autovariant, lazy, and explicit POST"},
{"item": "tsc strict (noUncheckedIndexedAccess) — 0 errors", "ok": true, "evidence": "npx tsc --noEmit → exit 0"},
{"item": "no full-suite regression", "ok": true, "evidence": "npm test → 209 passed | 57 skipped (206 baseline + 3 new)"},
{"item": "lint:boundaries — no NEW violations", "ok": true, "evidence": "check-module-boundaries.mjs: only the pre-existing security.routes.ts→log-broadcaster R1 remains"},
{"item": "AC integration test present", "ok": true, "evidence": "catalog.itest.ts 'seeds a default price row immediately after variant creation (F-138 AC1, AC2, AC4)' (skipIf !hasDb)"}
],
"issues": []
}