OpenSpec: convertir una petición de código en documentos revisables
Código de ArtifactGraph: por qué OpenSpec recomienda specs primero
Inspecciona el desempate por declaración y seis comprobaciones locales de la clase real.
Qué aprenderás
- Seguir el algoritmo de Kahn
- Comparar orden completo y disponibilidad
- Respetar la entrada previamente validada
Antes de empezar
- Conocimientos básicos de Git y Node
- Repositorio de ejemplo desechable
Explica dependencias y evidencia pendiente sin ejecutar automáticamente el comando recomendado.
Conclusiones clave
- Se vuelve a ordenar toda la cola.
- Se ejecuta la clase pura real.
- Seis casos no verifican toda la CLI.
Seguir el algoritmo de Kahn
getBuildOrder calcula grados de entrada y adyacencia inversa, encola los documentos sin dependencias y reduce los grados de sus sucesores. La cola se ordena por la posición de cada documento en el esquema.
Después de incorporar nuevos elementos disponibles, vuelve a ordenar la cola completa. Ordenar solo los recién llegados podría dejar una prioridad anterior detrás de otra posterior. No es una clasificación alfabética.
Comparar orden completo y disponibilidad
getNextArtifacts omite los documentos completos y exige que todos los requisitos estén en el conjunto completado. Tras proposal, el ensayo devuelve specs y design; tras proposal y specs, devuelve únicamente design.
La prueba elimina tipos TypeScript e importaciones de la clase pura inspeccionada y llama a fromSchema con un esquema sintético válido. Las seis aserciones no ejecutan el cargador, la detección de archivos, la CLI ni modelos.
Respetar la entrada previamente validada
fromSchema espera explícitamente un esquema ya validado. El ensayo no demuestra rechazo de ciclos, identificadores duplicados o dependencias desconocidas. Una prueba normal no convierte esas entradas en casos soportados.
Ante una recomendación inesperada, examina por separado el orden de declaración, el conjunto completado y las dependencias. Cualquiera puede cambiar la respuesta sin que exista un defecto en la ordenación topológica.
Cómo elegir
| Criterio | Opción A | Opción B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
Pasos de implementación
- 1
Inspecciona la declaración y la cola.
- 2
Reproduce los conjuntos completados.
- 3
No atribuyas validación de esquemas al ensayo.
Ejemplo para copiar
{"completed":["proposal"],"ready":["specs","design"],"buildOrder":["proposal","specs","design","tasks"]}Preguntas frecuentes
¿Por qué design no aparece primero alfabéticamente?
El desempate utiliza la posición declarada en el esquema.
¿Se probaron esquemas inválidos?
No. Se utilizó la entrada para esquemas prevalidada con datos sintéticos válidos.
Fuentes
- OpenSpec / src/core/artifact-graph/graph.tsFuente verificada 2026-09-23
- OpenSpec / schemas/spec-driven/schema.yamlFuente verificada 2026-09-23