{ "feature_id": "F-151", "agent": "qa", "stage": "qa_gate", "verdict": "APPROVED", "reviewed_at": "2026-08-21T20:15:00Z", "summary": "El entorno vuelve a estar utilizable: servicios arriba, productos restaurados y login admin mantiene sesión en HTTP LAN.", "acceptance_traceability": [ {"criterion":"Servicios levantados","ok":true,"evidence":"monolith prod status: backend/admin/frontend/storefront running HTTP 200"}, {"criterion":"Productos disponibles","ok":true,"evidence":"DB: 12 products/variants/prices/stock; /products/search devuelve items; frontend /products contiene Almendras/Aceite"}, {"criterion":"Admin acepta credenciales","ok":true,"evidence":"POST /api/backoffice/auth/login vía admin proxy 200 con admin@mdv.local"}, {"criterion":"Sesión admin persistente","ok":true,"evidence":"Cookie guardada sin Secure en HTTP; GET /api/backoffice/auth/me devuelve admin"}, {"criterion":"Admin puede listar productos","ok":true,"evidence":"GET /api/catalog/products?limit=2 con cookie devuelve items"}, {"criterion":"Seed corregido","ok":true,"evidence":"node scripts/seed.cjs completa y es compatible con inventory_stock (variant_id, store_id)"}, {"criterion":"Regression checks","ok":true,"evidence":"npm run build; npm test 191 passed/56 skipped; touched-file lint/prettier; verify.sh; git diff --check"} ], "checks": [], "issues": [], "notes":"npm run lint global no se usa como bloqueo de esta feature porque falla por errores preexistentes en archivos no tocados, documentados en implementer.md." }