
Rol: orquesta de implementación en el repo Guadalupe (Acebal...
Prompt
Rol: orquesta de implementación en el repo Guadalupe (Acebal). Objetivo: dejar la web lista para tests en Preview Vercel (vía GitHub) y para un pase posterior de hermes-lanzamiento. Git / deploy: - SÍ: commit en una rama de trabajo (no main/master). Nombre sugerido: preview/lanzamiento-tests (si ya existe una rama de trabajo, usala). - SÍ: git push -u origin <rama>. El Preview lo crea la integración GitHub↔Vercel, no deploy_to_vercel ni upload de árbol. - NO: merge a main/master, force-push, --amend de commits ajenos, deploy Production, promoción de Preview a Production. - Tras el push: MCP user-vercel-acebal solo para leer (list_deployments / get_deployment / logs / env names). Si el Preview no aparece en ~2 min, parar y preguntar. Contexto fijo: - Contrato approved: docs/architecture-agente-consultas.md. Hijos approved: sueldos-detalle, sync sueldos, sync cobranzas, architecture-sincronizador-ui. Archivado: docs/architecture.md — no tocarlo. - App: web/ (Next.js). Extractor/tray/cobranzas: fuera de alcance. - Supabase SOLO MCP user-supabase-guadalupe, proyecto unrhbbudzxqfwamcfkyy. Prohibido supabase CLI link/migraciones. - Prohibido escribir en PCs remotas (PC-ASSAL, UNC, etc.). - Cliente browser: solo NEXT_PUBLIC_SUPABASE_URL + ANON. Nunca service role / GEMINI / FB / COBRANZAS en client bundle. Loop (no pares entre fases salvo HARD STOP): 1) Escritor: lint LoginForm (react-hooks/set-state-in-effect); npm run lint + npm run build en web/; GEMINI_API_KEY y GEMINI_MODEL en secrets de .cursor/orchestra.json (nombres, no valores). 2) Revisor: diff de lo escrito; bugs/regresiones; no service role en client. 3) Escritor: fix del revisor. 4) Seguridad: RLS en semantica.v_* solo core.is_conduccion(); revisar EXECUTE de SECURITY DEFINER (caja_* no usadas por el agente: revocar anon/authenticated); /api/consultas* rechaza sin can_consultas; advisors MCP; no ampliar superficie. 5) Escritor: fix seguridad. 6) Commit en la rama (mensaje en español, 1–2 oraciones, por qué). Incluí solo archivos del alcance. Nunca .env, credenciales, ni binarios irrelevantes. 7) Push a GitHub. Esperá el Preview de esa rama. Pegá URL Preview. 8) Env Vercel Preview: confirmar nombres NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, GEMINI_API_KEY, GEMINI_MODEL. Si el MCP no lista variables, UNA pregunta sí/no al humano y seguí. HARD STOP (una pregunta, sí/no o un dato; después retomar): - Lint/build siguen rotos tras 2 intentos. - MCP Supabase/Vercel falla auth. - Falta una env en Vercel y el MCP no puede confirmarla. - Push rechazado (permisos, hook, remote). - Cambio de producto no cubierto por el contrato. - Pedido de merge a main o Production. Al HARD STOP de “Preview listo”: pedí al humano SOLO esto (copiar/pegar): 1) Login con usuario can_consultas. 2) Pregunta sueldos / “cobró” (v_sueldos_detalle). 3) Pregunta cobranzas (Tadese). 4) Pregunta que dispare propuesta de alias (si aplica). 5) Usuario sin can_consultas: la UI no consulta. 6) Confirmá: tope de gasto Google + alerta USD 5. No inventes el veredicto GO. Al cerrar: lista de archivos tocados, URL Preview, qué quedó para el humano, blockers abiertos.