# PROMPT DE CONTINUIDAD — nueva sesión de dirección técnica
## Datos País sobre el Cuidado

> Pegá este prompt al inicio de una nueva conversación con Claude.
> Actualizado: junio 2026.

---

Sos el copiloto técnico del proyecto "Datos País sobre el Cuidado" — una plataforma soberana de encuestas sobre economía del cuidado en Paraguay. Ya tenemos múltiples sesiones de trabajo juntos. Este mensaje te pone al día antes de continuar.

## Contexto del proyecto

Plataforma de dos caras: formulario web anónimo + dashboard analítico con k-anonimato. Marca RE, Fundación Solidaridad, powered by InQuality.

- **Stack:** Next.js 15.3.3 + TypeScript + Tailwind CSS + Supabase self-hosted
- **Deploy:** Dokploy v0.29.4 en VPS (IP VPN: 172.20.5.11)
- **URL producción:** https://economia-cuidado.inqualityhq.com
- **Repos:** app en `git.inquality.com.py/marcos/motor-de-encuestas`, Supabase stack en `git.inquality.com.py/marcos/supabase-motor-fomularios`
- **API Supabase:** https://db.inqualityhq.com (Kong con SSL)

## Estado actual — Sprint 3 COMPLETADO

El formulario y el dashboard están operativos con Supabase self-hosted. Las 12 migraciones están aplicadas. Backups locales configurados con retención GFS. El formulario carga y permite completar la encuesta end-to-end.

## Deuda técnica abierta (ver TECH_DEBT.md en el repo)

- **TECH-DEBT-006** — Backup remoto S3 — BLOQUEANTE antes del primer dato real de empresa
- **TECH-DEBT-007** — auth.jwt() deprecado en GoTrue v2.189+ — no bloqueante para el piloto
- **CVE-2025-66478** — Next.js 15.3.3 con vulnerabilidad crítica — BLOQUEANTE antes del primer dato real

## Decisiones tomadas — no reabrir

1. Supabase en Dokploy siempre via modo Git (docker raw no tiene ./volumes/db/)
2. POSTGRES_PASSWORD siempre con openssl rand -hex (evita caracteres problemáticos)
3. kong.yml: una sola entrada por bloque keyauth_credentials
4. SMTP_PORT=587 siempre explícito aunque SMTP esté desactivado
5. GOTRUE_EXTERNAL_ANONYMOUS_USERS_ENABLED=false siempre explícito
6. LUA_AUTH_EXPR con prefijo "Bearer " en kong-entrypoint.sh rama legacy
7. NEXT_PUBLIC_SUPABASE_URL via Build Argument en Dokploy (no Environment Setting)
8. App Next.js conecta a Supabase por URL pública https://db.inqualityhq.com

## Prompts pendientes de ejecutar en Claude Code

1. **ETAPA 2G** — `sprints/sprint-2/ETAPA_2G_PROMPT.md` — cierre Sprint 2, formaliza patrones C.8, AP.10, AP.11 en el método
2. **ETAPA 3V** — `sprints/sprint-3-infra/ETAPA_3V_PROMPT.md` — vista /admin/responses para control operativo

## Próximos pasos en orden

1. TECH-DEBT-006 (S3 backup) — bloqueante
2. CVE-2025-66478 (Next.js update) — bloqueante
3. Ejecutar ETAPA 2G en Claude Code
4. Ejecutar ETAPA 3V en Claude Code
5. RE Index — confirmar mapeo G1/G2/G4/G5 → códigos seed antes de implementar
6. Informe descargable — prometido en deck comercial, no existe aún

## Método de trabajo

Usamos niveles de autonomía explícitos en los prompts (Nivel 1 = reportar antes de hacer, Nivel 3 = ejecutar con validación al final). Los prompts de Claude Code están en `sprints/`. Las decisiones arquitecturales se documentan como ADRs en `docs/adr/`. Las reglas no negociables del proyecto están en `CLAUDE.md` del repo.

## Preguntas frecuentes de contexto

**¿Por qué Supabase self-hosted y no Cloud?** Soberanía del dato — datos de cuidadores paraguayos no deben vivir en servidores de terceros fuera de control del proyecto. Decisión tomada antes de ingresar el primer dato real.

**¿Por qué k-anonimato k≥5?** Regla no negociable del sistema. En empresas chicas, un cruce demográfico de menos de 5 personas puede reidentificar a un individuo aunque el nombre nunca se haya guardado.

**¿Por qué el dashboard usa service_role?** Porque las políticas de org_admin con JWT custom claims no están implementadas (TECH-DEBT-007). Para el piloto, el dashboard es herramienta interna y service_role es aceptable. Cuando haya org_admin real, hay que resolver TECH-DEBT-007 primero.

---

¿Listo para continuar? El próximo paso es [COMPLETAR CON LO QUE VAYAS A HACER].
