Skip to content

Releases: Snakeblack/ospec-workflow

v2.21.0

Choose a tag to compare

@Snakeblack Snakeblack released this 07 Jul 17:35

Añadido

  • Lint de contratos unificado (cierre del Bloque 1 del roadmap): nuevo scripts/lib/contract-lint.js (registro puro de checkers, sin cortocircuito) con tres checkers — i1-manifest (nuevo: cruza el manifiesto runtime_capabilities: del frontmatter de los 14 SKILL.md de fase SDD contra las tools: reales del agente vinculado, emitiendo un offender explícito si el agente vinculado a un phase skill no existe en disco), j1-commands-agents (extracción de scripts/commands-agents-contract.test.js preservando sus guards rel-1/rel-2) e i3-budget-constant (extracción/generalización de la coherencia hooks.json↔constantes de lock JS+Go). Sin vía de invocación nueva: el arnés queda recogido por el glob existente de scripts/check.js (pre-commit + CI ya cableados).
  • Manifiesto runtime_capabilities: retrofitteado en los 14 SKILL.md de fase SDD (obligatorio para ese tier; utility/stack/_shared quedan opcionales).
  • Categoría de evidencia static-lint en la taxonomía de sdd-verify, distinta de runtime-test.
  • Nuevo dominio baseline openspec/specs/contract-lint/spec.md.

Full Changelog: v2.20.3...v2.21.0

v2.20.3

Choose a tag to compare

@Snakeblack Snakeblack released this 07 Jul 14:38

Fixed

  • Coerción boolean-like residual en matchConditions (I2): nueva función pura exportada detectResidualBooleanStrings(conditions) en route-dispatcher.js para detectar valores "true"/"false" string que no pasaron por la coerción del parser (p.ej. tablas de routing construidas programáticamente en vez de parseadas desde YAML), evitando que condiciones bugfix/refactor/hotfix caigan silenciosamente al route standard. Test de regresión end-to-end contra la tabla real de openspec/config.yaml.
  • Desalineación entre el presupuesto de timeout del hook SessionStart y el staleMs del lock (I3): staleMs/staleLockAge bajado de 10s a 5s en ambos runtimes (ospec-state.js y internal/store/store.go, con constantes nombradas), y hooks/hooks.json ahora declara timeout: 5 explícito para SessionStart (antes era el único hook sin timeout declarado). Nuevo test de coherencia hooks.json↔constantes de lock en JS y Go.

Changed

  • Sincronizados openspec/specs/routing/spec.md, openspec/specs/hooks/spec.md y openspec/specs/hooks-runtime/spec.md con el comportamiento anterior.

Cambio guiado por SDD (ruta lite) con TDD estricto. Verificación: PASS WITH WARNINGS (19/19 tareas, 1038/1038 tests JS + todos los paquetes Go verdes). Change archivado en openspec/changes/archive/2026-07-07-route-coercion-lock-budget/.

v2.20.2

Choose a tag to compare

@Snakeblack Snakeblack released this 07 Jul 00:26

Added

  • Soporte de diagramas Mermaid (harness/sdd-document): Añadidas las dependencias astro-mermaid y mermaid al scaffold de Starlight de la Opción D, permitiendo renderizar diagramas Mermaid de forma nativa en la documentación generada. Cambio verificado con compilación local exitosa.

Fixed

  • Error de parseo got 'PS' (openwiki/overview.md): Corregido error de sintaxis en el diagrama de arquitectura envolviendo las etiquetas con caracteres especiales (paréntesis, comas, barras) en comillas dobles.

v2.20.1 — Enlaces wiki-internos como slugs de Starlight

Choose a tag to compare

@Snakeblack Snakeblack released this 06 Jul 23:52
78721c9

Fixed

  • Enlaces wiki-internos rotos en el sitio Starlight (Opción D): sync-openwiki.mjs copiaba los enlaces .md tal cual, pero Starlight sirve las páginas como slugs sin extensión, así que cada enlace interno (architecture/overview.md) devolvía 404. Ahora rewriteLinks los reescribe a URLs de slug locales (/architecture/overview/), resolviendo los relativos contra el directorio de la página contenedora, preservando fragmentos #ancla y dejando intactos los enlaces externos y los assets no-.md. Además, un enlace bare anclado a la raíz del wiki (hooks-runtime/lifecycle.md escrito dentro de security/guardrails.md) ya no se anida bajo el directorio de la página: el set de páginas fuente reales desambigua — si el candidato relativo a la página no existe pero el anclado a raíz sí, gana la raíz; si ambos existen, se mantiene la semántica markdown estándar. Tests: +7 casos runtime en sync-openwiki.test.js.

Changed

  • Instancia local web-doc/: sincronizada con el script corregido y con un logo SVG de pulpo (src/assets/octopus-logo.svg) enganchado como logo de Starlight a la izquierda del título del sitio. El wiki openwiki/ se regeneró en español (modo init, Opción D).

v2.20.0

Choose a tag to compare

@Snakeblack Snakeblack released this 06 Jul 23:11
797ba4d

Added

  • Identidad del sitio y navegación ordenada en el template Opción D (REQ-sdd-document-019, REQ-016 ampliado): astro.config.mjs deriva el título del sitio del name del package.json del repo padre (Title-Case por segmento, con fallback al nombre del directorio) en vez del placeholder "Project Documentation"; sync-openwiki.mjs recorta el H1 inicial del cuerpo transformado (Starlight ya renderiza el title del frontmatter como H1, que se veía duplicado en cada página) y emite src/sidebar.generated.json — quickstart siempre primero como enlace superior y un grupo por subdirectorio del wiki, ordenados por primera mención en los enlaces del propio quickstart (alfabético para los no mencionados) — que astro.config.mjs consume con fallback al sidebar autogenerado si falta. Tests: +3 casos runtime en sync-openwiki.test.js y +3 anclas en starlight-web-doc-contract.test.js.

Fixed

  • Falsos positivos del chequeo de atribución AI con palabras en español: el patrón de commit-msg-hook.js y pre-tool-use.js matcheaba nombres de vendor como subcadena, con lo que «coherente», «coherencia», «bombardeo» o «llaman» bloqueaban commits legítimos. Los nombres de vendor quedan anclados a límites de palabra (\b), con tests de regresión en ambos sentidos y el patrón documentado en rules/no-model-attribution.instructions.md actualizado.

v2.19.1

Choose a tag to compare

@Snakeblack Snakeblack released this 06 Jul 22:50
5f06c39

Fixed

  • Template Opción D (web-doc/): el scaffold generado crasheaba en runtime (change fix-web-doc-scaffold-paths, ruta lite con Strict TDD): content.config.ts vivía en la raíz del template pero Astro 5 solo lee la config de colecciones desde src/content.config.ts, con lo que la colección docs cargaba sin el schema de Starlight y toda petición reventaba con Cannot read properties of undefined (reading 'hidden') en utils/navigation.ts (incluida la ruta 404). Además el import @astrojs/starlight/loader (singular) no existe en el paquete publicado — solo exporta ./loaders. Se mueve el archivo a src/, se corrige el import y se añade redirects: { "/": "/quickstart" } en astro.config.mjs para que la raíz del sitio no dé 404. Sincronizados option-d-starlight.md §3, el baseline REQ-sdd-document-014 (delta MODIFIED archivado) y el test de contrato scripts/starlight-web-doc-contract.test.js (11 anclas), con ciclo RED→GREEN verificado en runtime.

v2.19.0 — Opción D: OpenWiki + Starlight web en sdd-document

Choose a tag to compare

@Snakeblack Snakeblack released this 06 Jul 17:18
2411bc4

Added

  • Opción D "OpenWiki + Starlight web" en sdd-document (change starlight-web-doc, ciclo SDD completo con gate 4R remediado): nueva opción de scope en el gate batcheado de idioma+scope que genera web-doc/ en la raíz del repo objetivo como proyecto Starlight cascarón — scaffold estático copiado verbatim desde skills/sdd-document/assets/web-doc-template/ (package.json, astro.config.mjs, content.config.ts, tsconfig.json, CSS custom), nunca ejecuta npm create astro ni instala dependencias (REQ-sdd-document-014). openwiki/ permanece como única fuente de verdad: el script web-doc/scripts/sync-openwiki.mjs (Node ESM zero-dependency, cableado en predev/prebuild) transforma el wiki a src/content/docs/ con inyección de frontmatter title (REQ-016), reescritura de enlaces fuente a la URL del remote origin sobre la rama por defecto (REQ-017) y paridad estricta 1:1 con poda de huérfanos (REQ-018). Sync incremental por mtime/hash con cache local git-ignored (REQ-015). Sandbox de escritura dual modelado como SET {openwiki/, web-doc/} con inventario post-run J5 del orquestador extendido a multi-directorio (REQ-sdd-document-002/006/011, REQ-agents-006). Degradaciones seguras endurecidas por el gate 4R: guard anti-poda-destructiva cuando openwiki/ falta o está vacío, passthrough de frontmatter YAML anidado sin pérdida, try/catch por página/cache/poda con warnings (nunca tumba el build del usuario final) y fallbacks logueados. Procedimiento del ejecutor en skills/sdd-document/references/option-d-starlight.md; 3 ADRs promovidos a docs/adr/. Tests: scripts/sync-openwiki.test.js (18 casos runtime sobre proyecto materializado en temp dir) y scripts/starlight-web-doc-contract.test.js (9 anclas estáticas de contrato).
  • Skill stack-starlight: base de conocimiento del framework Starlight (Astro) — setup, configuración, sidebar, frontmatter, componentes, theming e i18n — con 4 documentos de referencia; fuente técnica de la plantilla de la Opción D.

v2.18.0

Choose a tag to compare

@Snakeblack Snakeblack released this 05 Jul 22:08
9aac280
  • Harden de archivado (REQ-agents-008): Finalización del archivado (borrado de origen) exclusiva del orquestador con validación previa de inventario recursivo.
  • Baseline fingerprints (REQ-agents-009): Cálculo y registro automático pos-spec de baseline hashes en state.yaml de forma standing por el orquestador.
  • Actualización de documentación (OpenWiki): Incorporación de la documentación técnica de OpenWiki (quickstart, runtime, seguridad, etc.).

v2.17.0

Choose a tag to compare

@Snakeblack Snakeblack released this 05 Jul 21:11
446a070

[2.17.0] - 2026-07-05

Added

  • Cableado del orquestador para sdd-document (J1+J4+J5): el orquestador ahora enruta /sdd-document de punta a punta. Wiring mínimo inline (allowlist de agents:, bullet en el índice de comandos y fila en la Circumstantial Handler Pointer Table — bajo el guard de 500 líneas) con el protocolo completo en skills/_shared/route-document.md: gate único batcheado de idioma+alcance (J4) con persistencia en approval ledger (gate: document-init) y .last-update.json (incluye doc_language/scope_choice), pre-pregunta keep/change en modo update con regla de precedencia entre candidatos, resolución autoritativa del output dir por el orquestador (A→openwiki/, B→docs/wiki/, C→custom con rechazo de paths fuera del repo antes de delegar), y verificación de sandbox post-run propiedad del orquestador (J5) scoped por git status, con gate de halt abort/acknowledge y política de fallo inconcluso cuando git status falla. Nuevo test de contrato scripts/commands-agents-contract.test.js que parsea la tabla §3.2 Command Roster del spec de agents (flechas y ->), falla ante filas del roster faltantes o comandos sin fila, y asserta explícitamente la presencia de sdd-document.prompt.md. Gate 4R con remediación completa (1 CRITICAL + 6 WARNING + 2 SUGGESTION) y re-verificación PASS. Ciclo SDD completo: deltas de agents (3 ADDED) y sdd-document (3 MODIFIED) sincronizadas al baseline y change archivado en openspec/changes/archive/2026-07-05-wire-sdd-document/.

v2.16.0 — Agente documentador sdd-document

Choose a tag to compare

@Snakeblack Snakeblack released this 05 Jul 16:44
cb379b1

Added

  • Agente documentador sdd-document: nuevo executor (agents/sdd-document.agent.md + skills/sdd-document/SKILL.md + comando /sdd-document) que compila arquitectura, specs y estado del repo en un wiki Markdown local. Gate interactivo de alcance al lanzar: Opción A — wiki técnico completo estilo OpenWiki (quickstart.md + openwiki/ con subdirectorios temáticos y source maps), Opción B — estado SDD y specs bajo docs/wiki/, Opción C — ruta custom validada. Reglas de sandbox de escritura (paths relativos al output dir, sin escapes; excepciones declaradas para /AGENTS.md y /CLAUDE.md como archivos de instrucción raíz), registro en models.yaml (tier default) y suite de contrato scripts/sdd-document.test.js. Ciclo SDD completo (dogfooding): baseline nuevo openspec/specs/sdd-document/spec.md (13 REQs), delta de agents sincronizada y change archivado en openspec/changes/archive/2026-07-05-add-documenter-agent/. Nota: el cableado del orquestador (roster/route) llega en el change siguiente (J1).

Full Changelog: v2.15.0...v2.16.0