From 959404823a81170e9b2ba1767cab71b973a67e65 Mon Sep 17 00:00:00 2001 From: Alejandro Lembke Barrientos Date: Mon, 3 Aug 2026 22:53:07 +0000 Subject: [PATCH] Phase 6.4.25b: parametrize gate5 prompts path, add generalization probe GATE5_PROMPTS_PATH env var lets the same 17-metric harness (veto system, MCP retry/page handling) run against a different prompts file. Unset behavior is unchanged -- the official gate 5 (data/gate5_prompts.jsonl, 10 frozen prompts) stays untouched. data/gate5_generalization_probe.jsonl: 4 prompts in rubros confirmed absent from the 138-seed corpus, the 10 gate5 prompts, and the 60-prompt holdout -- ferreteria, gimnasio, tienda de mascotas, panaderia. Swapped out "veterinaria" (originally planned) after finding seed 83 is a substantial design-repair seed for a vet clinic; "tienda de mascotas" verified clean instead. This is an additional check, separate from the official gate 5, meant to test whether the correction generalizes across business types rather than overfitting to the pizzeria case. --- data/gate5_generalization_probe.jsonl | 4 ++++ scripts/35_gate5_penpot_design.py | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 data/gate5_generalization_probe.jsonl diff --git a/data/gate5_generalization_probe.jsonl b/data/gate5_generalization_probe.jsonl new file mode 100644 index 0000000..491bf25 --- /dev/null +++ b/data/gate5_generalization_probe.jsonl @@ -0,0 +1,4 @@ +{"id": "gp-01-ferreteria", "dificultad": "media", "prompt": "Armá una sección de catálogo de 1140 de ancho para una ferretería de barrio, con una grilla de 3 columnas: cada columna es una categoría (herramientas eléctricas, tornillería, pintura) con un ícono o color distintivo, un título y una bajada corta."} +{"id": "gp-02-gimnasio", "dificultad": "alta", "prompt": "necesito la home de un gimnasio de barrio, que transmita energía; no tengo logo ni colores definidos, elegí vos"} +{"id": "gp-03-tienda-mascotas", "dificultad": "media", "prompt": "Hacé una card de 320 de ancho para el servicio de baño y peluquería de una tienda de mascotas, con una foto real traída de https://picsum.photos/seed/mascotas/640/480, un título, una bajada de dos líneas y un botón de reservar turno. Nada de rectángulos grises simulando la foto."} +{"id": "gp-04-panaderia", "dificultad": "alta", "prompt": "hazme una landing page de una panadería artesanal con colores cálidos"} diff --git a/scripts/35_gate5_penpot_design.py b/scripts/35_gate5_penpot_design.py index 3fceb43..7249d89 100644 --- a/scripts/35_gate5_penpot_design.py +++ b/scripts/35_gate5_penpot_design.py @@ -61,7 +61,12 @@ import requests REPO_ROOT = Path(__file__).resolve().parent.parent SCHEMAS_DIR = REPO_ROOT / "data" / "schemas" -PROMPTS_PATH = REPO_ROOT / "data" / "gate5_prompts.jsonl" +# GATE5_PROMPTS_PATH (Fase 6.4.25b): permite apuntar el mismo harness (17 metricas, veto, +# manejo de paginas/reintentos MCP) a un archivo de prompts distinto de los 10 oficiales de +# la puerta 5 -- p.ej. la sonda de generalizacion de rubros nunca vistos. La puerta 5 oficial +# (data/gate5_prompts.jsonl) queda intacta: sin la env var, el comportamiento es identico. +PROMPTS_PATH = Path(os.environ["GATE5_PROMPTS_PATH"]) if os.environ.get("GATE5_PROMPTS_PATH") \ + else REPO_ROOT / "data" / "gate5_prompts.jsonl" HOLDOUT_PATH = REPO_ROOT / "data" / "holdout_penpot_design.jsonl" PENPOT_TOOLS_PATH = SCHEMAS_DIR / "penpot.json" SYSTEM_PROMPT_PATH = SCHEMAS_DIR / "penpot_system_prompt.md"