| name | vault-provenance-rules |
| description | Reglas universales al escribir ficheros en vault/ — frontmatter de provenance, bloques Evidence y prohibición de código fuente |
| metadata | {"tipo":"decision"} |
Cada fichero .md generado en vault/ debe cumplir tres invariantes:
-
Frontmatter de provenance: campos commit (SHA corto de git al leer las fuentes, obtenido con git rev-parse --short HEAD) y last_sync (timestamp ISO 8601 UTC real, no placeholder — obtener con date -u +%Y-%m-%dT%H:%M:%SZ). Usar un placeholder cuesta una iteración correctiva completa (evidencia: iter-5 de task/00).
-
Bloque ## Evidence al final de cada sección, citando rutas de fichero fuente sin números de línea. Criterio de aceptación universal en todos los checkpoints juez del plan.
-
Sin código fuente: solo intención, interfaces, estructura y entidades nombradas. Para el módulo agent, tampoco el contenido literal de los prompts. Bloques triple-backtick procedentes de server/ o agent/ están prohibidos.
Pitfall conocido — cierre de config: después de que gv.py validate pase, hay que actualizar explícitamente la entrada del repo en vault/.graphvault/config.json con phase: "done" y last_sync_commit. Omitirlo causa rechazo de juez aunque validate haya salido con exit 0 (evidencia: iter-8 de task/00).
Cierre y validación
Toda tarea de vault debe terminar con una secuencia disciplinada de tres pasos para evitar cierre incompleto y permitir detección temprana de fricciones. Primero, ejecutar python3 /Users/juantomas/.claude/skills/graph-vault/scripts/gv.py --vault vault validate con verificación explícita de exit code 0; este paso confirma que todos los ficheros generados cumplen el esquema y frontmatter obligatorio, sin dejar errores silenciosos. Segundo, una vez validate pase, actualizar de forma inmediata la entrada correspondiente en vault/.graphvault/config.json con dos campos: phase: "done" y last_sync_commit con el SHA corto del commit actual (git rev-parse --short HEAD). Este cierre de config es un invariante crítico que marcan los jueces de todas las subtareas de cierre ([juez] en líneas 63-70 de task/01.md): sin él, el juez rechazará aunque validate haya salido con exit 0, forzando una iteración correctiva completa.
Tercero, invocar /maestro review para que revise el trabajo completado de la tarea y almacene decisiones y fricciones observadas como skills locales. Esto permite que futuras iteraciones de vault aprendan del trabajo anterior sin repetir errores; es especialmente crítico en tareas de vault donde la fricciones acumuladas (orden de secciones, frontmatter incompleto, cierre de config olvidado) tienden a repetirse. El patrón está anclado en plan.md línea 18 (parar tras completar una acción única) y en task/01.md líneas 71 donde la subtarea final es explícitamente [ ] Invocar la acción review de maestro: su presencia como subtarea hojas (sin [x] hasta el final) hace que cierre incompleto sea detectable incluso sin leer todos los ficheros de validación.
Evidence
plan/plan.md (línea 18: "Parar. No busques la siguiente subtarea")
plan/task/01.md (líneas 61–71: secuencia de tres pasos — validate, config.json, maestro review)