{ "verdict": "APPROVED", "reviewer": "reviewer", "feature_id": "F-130", "summary": "Edición inline de caducidad en /inventory siguiendo patrón de Stock/EAN.", "checks": [ "ProductRow ahora tiene editingExp / editExpValue / savingExp", "handleSaveExp llama productsApi.update(productId, {expirationDate: value || null})", "Celda de caducidad: clic → input type=date autofocus con blur/Enter/Escape", "String vacía se traduce a null (caducidad sin valor)", "Sin cambios en backend", "tsc --noEmit exit 0", "npm run build exit 0" ], "notes": "Backend ya soportaba el patch. Cambio puramente UI.", "reviewed_at": "2026-08-21T16:08:00Z", "agent": "reviewer" }