diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 50c695e..63f7942 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "cys", - "version": "0.6.19", + "version": "0.6.20", "description": "Development methodology skills with parallel plan execution: design, plan, run, check, ship. Named after the author's twin daughters, Cielo y Sophia.", "author": { "name": "Christian Bacilio" }, "repository": "https://github.com/bacsystem/parallel-plan-executor", diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index d5b33a6..b404b09 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "cys", - "version": "0.6.19", + "version": "0.6.20", "description": "Development methodology skills for design, plan, check, and ship — parallel plan execution (cys:run) is Claude Code only for now.", "author": { "name": "Christian Bacilio" }, "repository": "https://github.com/bacsystem/parallel-plan-executor", diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d9abea..fe19d83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 0.6.20 — 2026-07-19 + +Added: + +- `tests/parse-plan-cli.test.js` now runs the exact command + `examples/README.md` tells a new dev to copy-paste + (`node bin/parse-plan.js examples/hello-parallel/plan.md`) and asserts + its printed graph — closes a gap where `tests/examples.test.js` only + exercised `parsePlan`/`buildGraph` directly, so a CLI-level regression + in argument handling or JSON serialization could break the README's + published first-contact command without failing any test. + +From a follow-up external review of the previous rollout (v0.6.15-0.6.19): +one of its two flagged items (documenting `assertAcyclic` as "evaluated +and deferred") turned out to rest on a stale premise — `assertAcyclic` +was already made iterative in v0.6.15, not deferred — so nothing was +done there; the other (this CLI gap) was real and is fixed by this +release. + ## 0.6.19 — 2026-07-19 Changed: diff --git a/gemini-extension.json b/gemini-extension.json index 7be5f77..8cfe1cc 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,6 +1,6 @@ { "name": "cys", - "version": "0.6.19", + "version": "0.6.20", "description": "Development methodology skills for design, plan, check, and ship — parallel plan execution (cys:run) is Claude Code only for now.", "repository": "https://github.com/bacsystem/parallel-plan-executor", "license": "MIT" diff --git a/package.json b/package.json index c20da52..faa4a7f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parallel-plan-executor", - "version": "0.6.19", + "version": "0.6.20", "author": "Christian Bacilio", "private": true, "type": "module", diff --git a/tests/parse-plan-cli.test.js b/tests/parse-plan-cli.test.js index 4f0927d..27888b4 100644 --- a/tests/parse-plan-cli.test.js +++ b/tests/parse-plan-cli.test.js @@ -30,3 +30,14 @@ test('CLI emite warnings de productor duplicado en stderr y en el JSON, sin ensu test('CLI exits non-zero with a usage message when no path is given', () => { assert.throws(() => execFileSync('node', [cliPath], { encoding: 'utf8' })); }); + +test('el comando publicado en examples/README.md imprime el grafo que ese README promete', () => { + // examples/README.md muestra `node bin/parse-plan.js examples/hello-parallel/plan.md` + // como el primer contacto de un dev nuevo con cys — si el CLI cambia de forma + // incompatible, este test debe romperse ANTES que el README quede mintiendo. + const examplePath = path.join(root, 'examples', 'hello-parallel', 'plan.md'); + const output = execFileSync('node', [cliPath, examplePath], { encoding: 'utf8' }); + const parsed = JSON.parse(output); + + assert.deepEqual(parsed.graph, { 1: [], 2: [1], 3: [1], 4: [2, 3] }); +});