[{"data":1,"prerenderedAt":487},["ShallowReactive",2],{"navigation_docs_es":3,"-es-guides-test-data":188,"-es-guides-test-data-surround":482},[4,35,85,145],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Primeros pasos",false,"\u002Fes\u002Fgetting-started","es\u002F1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"Introducción","\u002Fes\u002Fgetting-started\u002Fintroduction","es\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Instalación","\u002Fes\u002Fgetting-started\u002Finstallation","es\u002F1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Estructura del proyecto","\u002Fes\u002Fgetting-started\u002Fproject-layout","es\u002F1.getting-started\u002F3.project-layout","i-lucide-folder-tree",{"title":26,"path":27,"stem":28,"icon":29},"Actualizar y desinstalar","\u002Fes\u002Fgetting-started\u002Fupgrade-uninstall","es\u002F1.getting-started\u002F4.upgrade-uninstall","i-lucide-refresh-cw",{"title":31,"path":32,"stem":33,"icon":34},"Canales","\u002Fes\u002Fgetting-started\u002Fchannels","es\u002F1.getting-started\u002F5.channels","i-lucide-radio-tower",{"title":36,"icon":6,"path":37,"stem":38,"children":39,"page":6},"Conceptos","\u002Fes\u002Fconcepts","es\u002F2.concepts",[40,45,50,55,60,65,70,75,80],{"title":41,"path":42,"stem":43,"icon":44},"Carriles y métodos","\u002Fes\u002Fconcepts\u002Flanes-and-methods","es\u002F2.concepts\u002F1.lanes-and-methods","i-lucide-route",{"title":46,"path":47,"stem":48,"icon":49},"Specs vivas y cambios","\u002Fes\u002Fconcepts\u002Fliving-specs","es\u002F2.concepts\u002F2.living-specs","i-lucide-book-open-check",{"title":51,"path":52,"stem":53,"icon":54},"Notación","\u002Fes\u002Fconcepts\u002Fnotation","es\u002F2.concepts\u002F3.notation","i-lucide-pen-line",{"title":56,"path":57,"stem":58,"icon":59},"QA y datos de prueba","\u002Fes\u002Fconcepts\u002Fqa-and-test-data","es\u002F2.concepts\u002F4.qa-and-test-data","i-lucide-clipboard-check",{"title":61,"path":62,"stem":63,"icon":64},"Conocimiento","\u002Fes\u002Fconcepts\u002Fknowledge","es\u002F2.concepts\u002F5.knowledge","i-lucide-brain",{"title":66,"path":67,"stem":68,"icon":69},"Scripts","\u002Fes\u002Fconcepts\u002Fscripts","es\u002F2.concepts\u002F6.scripts","i-lucide-file-code",{"title":71,"path":72,"stem":73,"icon":74},"Garantías","\u002Fes\u002Fconcepts\u002Fguardrails","es\u002F2.concepts\u002F7.guardrails","i-lucide-shield",{"title":76,"path":77,"stem":78,"icon":79},"Contexto de sesión","\u002Fes\u002Fconcepts\u002Fsession-context","es\u002F2.concepts\u002F8.session-context","i-lucide-gauge",{"title":81,"path":82,"stem":83,"icon":84},"Cómo mejora el kit","\u002Fes\u002Fconcepts\u002Fself-improvement","es\u002F2.concepts\u002F9.self-improvement","i-lucide-sprout",{"title":86,"icon":6,"path":87,"stem":88,"children":89,"page":6},"Guías","\u002Fes\u002Fguides","es\u002F3.guides",[90,95,100,105,110,115,120,125,130,135,140],{"title":91,"path":92,"stem":93,"icon":94},"Monorepo de app nuevo","\u002Fes\u002Fguides\u002Fnew-app-monorepo","es\u002F3.guides\u002F01.new-app-monorepo","i-lucide-boxes",{"title":96,"path":97,"stem":98,"icon":99},"Tu sitio web con Claude","\u002Fes\u002Fguides\u002Fcontent-site","es\u002F3.guides\u002F02.content-site","i-lucide-globe",{"title":101,"path":102,"stem":103,"icon":104},"Adoptar un proyecto existente","\u002Fes\u002Fguides\u002Fadopt-existing-project","es\u002F3.guides\u002F03.adopt-existing-project","i-lucide-git-merge",{"title":106,"path":107,"stem":108,"icon":109},"Un cambio, de principio a fin","\u002Fes\u002Fguides\u002Fspec-lane-change","es\u002F3.guides\u002F04.spec-lane-change","i-lucide-git-pull-request",{"title":111,"path":112,"stem":113,"icon":114},"Un cambio de vía rápida","\u002Fes\u002Fguides\u002Ffast-track-change","es\u002F3.guides\u002F05.fast-track-change","i-lucide-zap",{"title":116,"path":117,"stem":118,"icon":119},"El ciclo TDD","\u002Fes\u002Fguides\u002Ftdd-loop","es\u002F3.guides\u002F06.tdd-loop","i-lucide-repeat",{"title":121,"path":122,"stem":123,"icon":124},"Una pasada de QA","\u002Fes\u002Fguides\u002Fqa-pass","es\u002F3.guides\u002F07.qa-pass","i-lucide-clipboard-list",{"title":126,"path":127,"stem":128,"icon":129},"Datos de prueba","\u002Fes\u002Fguides\u002Ftest-data","es\u002F3.guides\u002F08.test-data","i-lucide-database",{"title":131,"path":132,"stem":133,"icon":134},"Publicar y actualizar","\u002Fes\u002Fguides\u002Freleasing-and-upgrading","es\u002F3.guides\u002F09.releasing-and-upgrading","i-lucide-rocket",{"title":136,"path":137,"stem":138,"icon":139},"Proponer mejoras","\u002Fes\u002Fguides\u002Fproposing-improvements","es\u002F3.guides\u002F10.proposing-improvements","i-lucide-lightbulb",{"title":141,"path":142,"stem":143,"icon":144},"Documentación para agentes","\u002Fes\u002Fguides\u002Fdocs-for-agents","es\u002F3.guides\u002F11.docs-for-agents","i-lucide-bot",{"title":146,"icon":6,"path":147,"stem":148,"children":149,"page":6},"Referencia","\u002Fes\u002Freference","es\u002F4.reference",[150,155,160,165,170,173,178,183],{"title":151,"path":152,"stem":153,"icon":154},"CLI","\u002Fes\u002Freference\u002Fcli","es\u002F4.reference\u002F1.cli","i-lucide-terminal",{"title":156,"path":157,"stem":158,"icon":159},"Configuración","\u002Fes\u002Freference\u002Fconfiguration","es\u002F4.reference\u002F2.configuration","i-lucide-settings",{"title":161,"path":162,"stem":163,"icon":164},"Skills","\u002Fes\u002Freference\u002Fskills","es\u002F4.reference\u002F3.skills","i-lucide-sparkles",{"title":166,"path":167,"stem":168,"icon":169},"Hooks","\u002Fes\u002Freference\u002Fhooks","es\u002F4.reference\u002F4.hooks","i-lucide-webhook",{"title":66,"path":171,"stem":172,"icon":69},"\u002Fes\u002Freference\u002Fscripts","es\u002F4.reference\u002F5.scripts",{"title":174,"path":175,"stem":176,"icon":177},"Cambios","\u002Fes\u002Freference\u002Fchangelog","es\u002F4.reference\u002F6.changelog","i-lucide-history",{"title":179,"path":180,"stem":181,"icon":182},"Plantillas","\u002Fes\u002Freference\u002Ftemplates","es\u002F4.reference\u002F7.templates","i-lucide-layout-template",{"title":184,"path":185,"stem":186,"icon":187},"Privacidad","\u002Fes\u002Freference\u002Fprivacy","es\u002F4.reference\u002F8.privacy","i-lucide-lock",{"id":189,"title":126,"body":190,"description":474,"extension":475,"links":476,"meta":477,"navigation":479,"path":127,"seo":480,"stem":128,"__hash__":481},"docs_es\u002Fes\u002F3.guides\u002F08.test-data.md",{"type":191,"value":192,"toc":469},"minimark",[193,198,212,236,240,243,259,343,354,358,371,374,454,465],[194,195,197],"h2",{"id":196},"preparación-única-por-base-de-datos","Preparación única por base de datos",[199,200,201,202,206,207,211],"p",{},"Ejecuta ",[203,204,205],"code",{},"supabase\u002Ftest-data\u002Fenv.sql"," en ",[208,209,210],"strong",{},"todos"," los entornos (la plantilla del monorepo lo trae en su primera migración) y fija el valor:",[213,214,220],"pre",{"className":215,"code":216,"filename":217,"language":218,"meta":219,"style":219},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","INSERT INTO public._env (name) VALUES ('dev')      -- o 'test' \u002F 'staging' \u002F 'production'\nON CONFLICT (id) DO UPDATE SET name = excluded.name;\n","SQL Editor","sql","",[203,221,222,230],{"__ignoreMap":219},[223,224,227],"span",{"class":225,"line":226},"line",1,[223,228,229],{},"INSERT INTO public._env (name) VALUES ('dev')      -- o 'test' \u002F 'staging' \u002F 'production'\n",[223,231,233],{"class":225,"line":232},2,[223,234,235],{},"ON CONFLICT (id) DO UPDATE SET name = excluded.name;\n",[194,237,239],{"id":238},"escribir-fixtures","Escribir fixtures",[199,241,242],{},"Cuando un cambio añade tablas o RPCs, o sus escenarios necesitan datos, sus tareas incluyen \"ampliar seed + purge\". Cada fixture es una sección marcada con sus escenarios y su categoría ZOMBIES:",[213,244,247],{"className":215,"code":245,"filename":246,"language":218,"meta":219,"style":219},"-- @fixture invoices.R2.S3 @boundary\nSELECT public.create_invoice(p_codigo => 'TEST_INV_EDGE', p_fecha => current_date - 15, …);\n","supabase\u002Ftest-data\u002Fseed.sql",[203,248,249,254],{"__ignoreMap":219},[223,250,251],{"class":225,"line":226},[223,252,253],{},"-- @fixture invoices.R2.S3 @boundary\n",[223,255,256],{"class":225,"line":232},[223,257,258],{},"SELECT public.create_invoice(p_codigo => 'TEST_INV_EDGE', p_fecha => current_date - 15, …);\n",[260,261,262,275],"table",{},[263,264,265],"thead",{},[266,267,268,272],"tr",{},[269,270,271],"th",{},"Etiqueta",[269,273,274],{},"Datos a crear",[276,277,278,289,303,313,323,333],"tbody",{},[266,279,280,286],{},[281,282,283],"td",{},[203,284,285],{},"@zero",[281,287,288],{},"un padre sin hijos",[266,290,291,300],{},[281,292,293,296,297],{},[203,294,295],{},"@one"," \u002F ",[203,298,299],{},"@simple",[281,301,302],{},"un registro normal por entidad principal",[266,304,305,310],{},[281,306,307],{},[203,308,309],{},"@many",[281,311,312],{},"varios registros: listas, totales, orden",[266,314,315,320],{},[281,316,317],{},[203,318,319],{},"@boundary",[281,321,322],{},"límites, bordes de período, bordes de redondeo",[266,324,325,330],{},[281,326,327],{},[203,328,329],{},"@interface",[281,331,332],{},"un registro por rol \u002F ámbito",[266,334,335,340],{},[281,336,337],{},[203,338,339],{},"@exception",[281,341,342],{},"estados inactivos, anulados, inválidos",[199,344,345,346,349,350,353],{},"Cada tabla donde escribe el seed debe limpiarla ",[203,347,348],{},"purge.sql",", primero las hijas. ",[203,351,352],{},"agent-kit qa gaps"," lista los escenarios sin fixture y los fixtures que nombran escenarios desconocidos.",[194,355,357],{"id":356},"aplicar","Aplicar",[199,359,360,363,364,366,367,370],{},[208,361,362],{},"SQL Editor (el camino soportado):"," ejecuta ",[203,365,348],{}," y luego ",[203,368,369],{},"seed.sql",", cada uno completo.",[199,372,373],{},"Desde una terminal, el agente muestra el comando y lo ejecuta solo después de que lo apruebes:",[213,375,380],{"className":376,"code":377,"filename":378,"language":379,"meta":219,"style":219},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","supabase db query --linked -f supabase\u002Ftest-data\u002Fpurge.sql   # --local o --db-url \"\u003Curl>\"\nsupabase db query --linked -f supabase\u002Ftest-data\u002Fseed.sql\npsql \"$DATABASE_URL\" -v ON_ERROR_STOP=1 -f supabase\u002Ftest-data\u002Fseed.sql\n","Terminal","bash",[203,381,382,408,423],{"__ignoreMap":219},[223,383,384,388,392,395,398,401,404],{"class":225,"line":226},[223,385,387],{"class":386},"sBMFI","supabase",[223,389,391],{"class":390},"sfazB"," db",[223,393,394],{"class":390}," query",[223,396,397],{"class":390}," --linked",[223,399,400],{"class":390}," -f",[223,402,403],{"class":390}," supabase\u002Ftest-data\u002Fpurge.sql",[223,405,407],{"class":406},"sHwdD","   # --local o --db-url \"\u003Curl>\"\n",[223,409,410,412,414,416,418,420],{"class":225,"line":232},[223,411,387],{"class":386},[223,413,391],{"class":390},[223,415,394],{"class":390},[223,417,397],{"class":390},[223,419,400],{"class":390},[223,421,422],{"class":390}," supabase\u002Ftest-data\u002Fseed.sql\n",[223,424,426,429,433,437,440,443,446,450,452],{"class":225,"line":425},3,[223,427,428],{"class":386},"psql",[223,430,432],{"class":431},"sMK4o"," \"",[223,434,436],{"class":435},"sTEyZ","$DATABASE_URL",[223,438,439],{"class":431},"\"",[223,441,442],{"class":390}," -v",[223,444,445],{"class":390}," ON_ERROR_STOP=",[223,447,449],{"class":448},"sbssI","1",[223,451,400],{"class":390},[223,453,422],{"class":390},[455,456,457,458,461,462,464],"warning",{},"Nunca uses ",[203,459,460],{},"supabase db reset"," para reiniciar los datos de prueba en una base compartida: reconstruye toda la base de datos. ",[203,463,348],{}," quita solo las filas de prueba.",[466,467,468],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":219,"searchDepth":232,"depth":232,"links":470},[471,472,473],{"id":196,"depth":232,"text":197},{"id":238,"depth":232,"text":239},{"id":356,"depth":232,"text":357},"Escribe fixtures por escenario y aplica seed o purge con seguridad en bases de dev, test y staging.","md",null,{"sourceHash":478},"f500643f2d6c",{"icon":129},{"title":126,"description":474},"Hp8tGvjEjX9XGR86TdDLBGilp9LO2UYJ8n4qdLwAbTc",[483,485],{"title":121,"path":122,"stem":123,"description":484,"icon":124,"children":-1},"Prueba todo el producto contra las specs vivas y registra los resultados.",{"title":131,"path":132,"stem":133,"description":486,"icon":134,"children":-1},"Publica una versión del kit y pon los proyectos al día.",1793099619124]