4.1 KiB
4.1 KiB
ETAPA 1B — Corrección del seed + ejecución/validación real
Prompt versionado (Patrón B.1). Cierra los huecos que la auditoría encontró en la Etapa 1: seed inventado/incompleto y nada ejecutado. Claude Code lo ejecuta tras leer
CLAUDE.md,DATA_MODEL.md,SEED_SPEC.mdy este prompt.
1. Objetivo
Reescribir supabase/seed.sql para que refleje el instrumento real (34 preguntas) según
SEED_SPEC.md, y ejecutar la base contra el proyecto Supabase Cloud ya vinculado (sin Docker)
para verificar de verdad lo que la Etapa 1 dejó sin correr.
2. Contexto previo
La Etapa 1 creó esquema, RLS, triggers, agg_segment y un seed incorrecto (9 de 34 preguntas;
B1/C1/D1 tipadas como yes_no; supuesto inválido C1→G4; D1 sin reglas; falta Sección A). El esquema
NO se ejecutó (no había Docker). Ahora hay un proyecto Supabase Cloud vinculado (supabase link).
3. Decisiones ya tomadas (no consultar de nuevo)
- Las 34 preguntas, tipos, opciones y condicionales están en
SEED_SPEC.md— es el contrato. conditional_rulesvan en la pregunta dependiente ({if_question, op:'eq', value:'Sí', action:'show'}).- B1/C1/D1 =
single_choicede 3 opciones; solo "Sí" dispara el bloque. is_sensitive=trueen las preguntas marcadas enSEED_SPEC.md. Encuesta =sensible, anónima, Modo A.qi_age_bucket←A2,qi_sector←A1,qi_zone=NULL (no se pregunta zona).respondent_idsigue NULL (encuesta anónima).
4. Tareas
- Reescribir
supabase/seed.sql: 1 organización demo, 1consent_versionv1 (scopes["operativo","macro_n1"]), 1survey(anónima/sensible/confidencial/Modo A/k=5), y las 34 preguntas con sus tipos, opciones,max_select(H1=3),is_sensitive, yconditional_rulesen las dependientes (B2-B5, C2-C5, D2-D5). - Aplicar a Cloud:
supabase db pushy luego cargar el seed contra el proyecto vinculado. - Ejecutar las validaciones de la sección 6 contra la base real.
5. Definition of Done
seed.sqlcon 34 preguntas que coinciden 1:1 conSEED_SPEC.md.supabase db pushaplica limpio en Cloud (reportar si algún GRANT/policy falla — la auditoría sospechaba de 003/006).- Seed cargado y consultable en el proyecto Cloud.
- Validaciones de la sección 6 verdes.
git diff --name-only HEADsolo consupabase/seed.sql(+ tests si los tocás).
6. Validaciones automatizadas mandatorias (contra la base Cloud)
- Conteo:
SELECT count(*) FROM questions= 34; condicionales = 12 (B2-B5, C2-C5, D2-D5), cada una conif_questioncorrecto yvalue='Sí'. - Tipos: B1/C1/D1 son
single_choice(noyes_no); H1multiple_choiceconmax_select=3; F3/G4rating; H3text_long. is_sensitive=trueen exactamente las preguntas marcadas enSEED_SPEC.md.- RLS: como rol de organización,
SELECT * FROM responsesyFROM answers→ 0 filas. - Constraint:
INSERTenresponsesconrespondent_idno nulo en encuesta anónima → ERROR. - k-anonimato:
agg_segmentsobre un segmento sembrado con 3 respuestas → "n insuficiente"; con ≥5 → valor. - Inmutabilidad:
UPDATE/DELETEsobreconsent_records→ ERROR. - Si CUALQUIERA falla: NO declarar lista la etapa. Reportar el fallo y esperar instrucciones.
7. Qué reportar
- Verificado: salida concreta de cada validación (conteos, resultado de
agg_segmentn=3 y n=5, comportamiento de RLS, errores esperados que efectivamente saltaron). - Asumido: cualquier supuesto (ej. textos exactos de opciones que hayas normalizado).
- Hallazgos no esperados y Decisiones por iniciativa (clasificadas por nivel).
git diff --name-only HEADpegado.
8. Qué NO hacer
- NO tocar el esquema (migraciones 001-006) salvo que una validación revele un bug — y si lo revela, reportar antes de corregir (cambiar esquema es Nivel 3 si toca RLS/privacidad).
- NO agregar columnas
qi_gender/qi_modality(hay un hallazgo abierto enSEED_SPEC.mdpara el director — es decisión Nivel 3, no la tomes acá). - NO exponer texto libre (H3) en ninguna vista/función analítica.
- NO usar
respondent_id. NO usarservice_roleen nada de cara al cliente.