From 5d7934d9c53da39a15584bd4673cc1c239083f1a Mon Sep 17 00:00:00 2001 From: droidnoob Date: Sun, 31 May 2026 00:35:04 +0530 Subject: [PATCH] chore(release): 0.12.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - workspace Cargo.toml: 0.11.0 -> 0.12.0 - 23 skill body hew:version= markers bumped to match - .claude/ install snapshot refreshed via hew init --runtime=claude - CHANGELOG.md: [Unreleased] content moved to [0.12.0] — 2026-05-31 - CHANGELOG.md: added Fixed entries for hew-zt4z / hew-s9mb / hew-cn2y - hew/tests/config_e2e.rs: changelog_unreleased_has_project_local_config_entry retargeted at the [0.12.0] section (now that the entry has been released) Release contents since 0.11.0: - #62 parallel loop hand-off fix + serial scope filter fix + loop summary in-flight fix + .hew.toml project-local config (hew-zt4z, hew-s9mb, hew-cn2y, hew-c0pa) No code changes in this commit beyond version bumps + CHANGELOG promotion + test target update for the moved CHANGELOG entry. CI will verify. Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude/skills/hew/SKILL.md | 2 +- .claude/skills/hew/brownfield/hew-audit.md | 2 +- .claude/skills/hew/brownfield/hew-boundary.md | 2 +- .../skills/hew/brownfield/hew-convention.md | 2 +- .claude/skills/hew/brownfield/hew-migrate.md | 2 +- .claude/skills/hew/brownfield/hew-scan.md | 2 +- .claude/skills/hew/core/hew-checkpoint.md | 2 +- .claude/skills/hew/core/hew-decompose.md | 2 +- .claude/skills/hew/core/hew-execute.md | 2 +- .claude/skills/hew/core/hew-guard.md | 2 +- .claude/skills/hew/core/hew-new-project.md | 2 +- .claude/skills/hew/core/hew-plan.md | 2 +- .claude/skills/hew/core/hew-verify.md | 2 +- .../hew/optional/hew-adversarial-review.md | 2 +- .claude/skills/hew/optional/hew-blast.md | 2 +- .claude/skills/hew/optional/hew-compact.md | 2 +- .claude/skills/hew/optional/hew-deps.md | 2 +- .claude/skills/hew/optional/hew-quick.md | 2 +- .claude/skills/hew/optional/hew-research.md | 2 +- .claude/skills/hew/optional/hew-review.md | 2 +- .claude/skills/hew/optional/hew-security.md | 2 +- .claude/skills/hew/optional/hew-spec.md | 2 +- CHANGELOG.md | 41 +++++++++++++++++++ Cargo.lock | 4 +- Cargo.toml | 2 +- hew/tests/config_e2e.rs | 16 +++++--- skills/SKILL.md | 2 +- skills/brownfield/hew-audit.md | 2 +- skills/brownfield/hew-boundary.md | 2 +- skills/brownfield/hew-convention.md | 2 +- skills/brownfield/hew-migrate.md | 2 +- skills/brownfield/hew-scan.md | 2 +- skills/core/hew-checkpoint.md | 2 +- skills/core/hew-decompose.md | 2 +- skills/core/hew-execute.md | 2 +- skills/core/hew-guard.md | 2 +- skills/core/hew-new-project.md | 2 +- skills/core/hew-plan.md | 2 +- skills/core/hew-verify.md | 2 +- skills/data/planner-prompt.md | 2 +- skills/optional/hew-adversarial-review.md | 2 +- skills/optional/hew-blast.md | 2 +- skills/optional/hew-compact.md | 2 +- skills/optional/hew-deps.md | 2 +- skills/optional/hew-quick.md | 2 +- skills/optional/hew-research.md | 2 +- skills/optional/hew-review.md | 2 +- skills/optional/hew-security.md | 2 +- skills/optional/hew-spec.md | 2 +- 49 files changed, 99 insertions(+), 54 deletions(-) diff --git a/.claude/skills/hew/SKILL.md b/.claude/skills/hew/SKILL.md index 41f93cb..69377cd 100644 --- a/.claude/skills/hew/SKILL.md +++ b/.claude/skills/hew/SKILL.md @@ -1,4 +1,4 @@ - + --- name: hew description: Index of installed hew skills. Loaded by the agent on session start. diff --git a/.claude/skills/hew/brownfield/hew-audit.md b/.claude/skills/hew/brownfield/hew-audit.md index 24e4f4f..5e0391f 100644 --- a/.claude/skills/hew/brownfield/hew-audit.md +++ b/.claude/skills/hew/brownfield/hew-audit.md @@ -1,4 +1,4 @@ - + --- name: hew-audit category: brownfield diff --git a/.claude/skills/hew/brownfield/hew-boundary.md b/.claude/skills/hew/brownfield/hew-boundary.md index cc1f800..802eea6 100644 --- a/.claude/skills/hew/brownfield/hew-boundary.md +++ b/.claude/skills/hew/brownfield/hew-boundary.md @@ -1,4 +1,4 @@ - + --- name: hew-boundary category: brownfield diff --git a/.claude/skills/hew/brownfield/hew-convention.md b/.claude/skills/hew/brownfield/hew-convention.md index f2435b2..0c4613f 100644 --- a/.claude/skills/hew/brownfield/hew-convention.md +++ b/.claude/skills/hew/brownfield/hew-convention.md @@ -1,4 +1,4 @@ - + --- name: hew-convention category: brownfield diff --git a/.claude/skills/hew/brownfield/hew-migrate.md b/.claude/skills/hew/brownfield/hew-migrate.md index 47b67b9..a982626 100644 --- a/.claude/skills/hew/brownfield/hew-migrate.md +++ b/.claude/skills/hew/brownfield/hew-migrate.md @@ -1,4 +1,4 @@ - + --- name: hew-migrate category: brownfield diff --git a/.claude/skills/hew/brownfield/hew-scan.md b/.claude/skills/hew/brownfield/hew-scan.md index 6ac5d89..2a1636a 100644 --- a/.claude/skills/hew/brownfield/hew-scan.md +++ b/.claude/skills/hew/brownfield/hew-scan.md @@ -1,4 +1,4 @@ - + --- name: hew-scan category: brownfield diff --git a/.claude/skills/hew/core/hew-checkpoint.md b/.claude/skills/hew/core/hew-checkpoint.md index 3efbf24..3fa5e95 100644 --- a/.claude/skills/hew/core/hew-checkpoint.md +++ b/.claude/skills/hew/core/hew-checkpoint.md @@ -1,4 +1,4 @@ - + --- name: hew-checkpoint category: core diff --git a/.claude/skills/hew/core/hew-decompose.md b/.claude/skills/hew/core/hew-decompose.md index 6525f6b..3bae671 100644 --- a/.claude/skills/hew/core/hew-decompose.md +++ b/.claude/skills/hew/core/hew-decompose.md @@ -1,4 +1,4 @@ - + --- name: hew-decompose category: core diff --git a/.claude/skills/hew/core/hew-execute.md b/.claude/skills/hew/core/hew-execute.md index 6375f34..7f0e066 100644 --- a/.claude/skills/hew/core/hew-execute.md +++ b/.claude/skills/hew/core/hew-execute.md @@ -1,4 +1,4 @@ - + --- name: hew-execute category: core diff --git a/.claude/skills/hew/core/hew-guard.md b/.claude/skills/hew/core/hew-guard.md index 760bc20..840cfb3 100644 --- a/.claude/skills/hew/core/hew-guard.md +++ b/.claude/skills/hew/core/hew-guard.md @@ -1,4 +1,4 @@ - + --- name: hew-guard category: core diff --git a/.claude/skills/hew/core/hew-new-project.md b/.claude/skills/hew/core/hew-new-project.md index 3892627..77ededd 100644 --- a/.claude/skills/hew/core/hew-new-project.md +++ b/.claude/skills/hew/core/hew-new-project.md @@ -1,4 +1,4 @@ - + --- name: hew-new-project category: core diff --git a/.claude/skills/hew/core/hew-plan.md b/.claude/skills/hew/core/hew-plan.md index 12f26bc..47ab8d2 100644 --- a/.claude/skills/hew/core/hew-plan.md +++ b/.claude/skills/hew/core/hew-plan.md @@ -1,4 +1,4 @@ - + --- name: hew-plan category: core diff --git a/.claude/skills/hew/core/hew-verify.md b/.claude/skills/hew/core/hew-verify.md index 507ffcd..0cdfabd 100644 --- a/.claude/skills/hew/core/hew-verify.md +++ b/.claude/skills/hew/core/hew-verify.md @@ -1,4 +1,4 @@ - + --- name: hew-verify category: core diff --git a/.claude/skills/hew/optional/hew-adversarial-review.md b/.claude/skills/hew/optional/hew-adversarial-review.md index b435de0..b8f3176 100644 --- a/.claude/skills/hew/optional/hew-adversarial-review.md +++ b/.claude/skills/hew/optional/hew-adversarial-review.md @@ -1,4 +1,4 @@ - + --- name: hew-adversarial-review category: optional diff --git a/.claude/skills/hew/optional/hew-blast.md b/.claude/skills/hew/optional/hew-blast.md index 5b6c15d..fd8aed3 100644 --- a/.claude/skills/hew/optional/hew-blast.md +++ b/.claude/skills/hew/optional/hew-blast.md @@ -1,4 +1,4 @@ - + --- name: hew-blast category: optional diff --git a/.claude/skills/hew/optional/hew-compact.md b/.claude/skills/hew/optional/hew-compact.md index 612e5be..a59a729 100644 --- a/.claude/skills/hew/optional/hew-compact.md +++ b/.claude/skills/hew/optional/hew-compact.md @@ -1,4 +1,4 @@ - + --- name: hew-compact category: optional diff --git a/.claude/skills/hew/optional/hew-deps.md b/.claude/skills/hew/optional/hew-deps.md index 08ba40b..979a6c5 100644 --- a/.claude/skills/hew/optional/hew-deps.md +++ b/.claude/skills/hew/optional/hew-deps.md @@ -1,4 +1,4 @@ - + --- name: hew-deps category: optional diff --git a/.claude/skills/hew/optional/hew-quick.md b/.claude/skills/hew/optional/hew-quick.md index 06c9568..588d6a8 100644 --- a/.claude/skills/hew/optional/hew-quick.md +++ b/.claude/skills/hew/optional/hew-quick.md @@ -1,4 +1,4 @@ - + --- name: hew-quick category: optional diff --git a/.claude/skills/hew/optional/hew-research.md b/.claude/skills/hew/optional/hew-research.md index c78aa55..21aef4f 100644 --- a/.claude/skills/hew/optional/hew-research.md +++ b/.claude/skills/hew/optional/hew-research.md @@ -1,4 +1,4 @@ - + --- name: hew-research category: optional diff --git a/.claude/skills/hew/optional/hew-review.md b/.claude/skills/hew/optional/hew-review.md index 8f1cb50..5c27e22 100644 --- a/.claude/skills/hew/optional/hew-review.md +++ b/.claude/skills/hew/optional/hew-review.md @@ -1,4 +1,4 @@ - + --- name: hew-review category: optional diff --git a/.claude/skills/hew/optional/hew-security.md b/.claude/skills/hew/optional/hew-security.md index 72b44e0..2082526 100644 --- a/.claude/skills/hew/optional/hew-security.md +++ b/.claude/skills/hew/optional/hew-security.md @@ -1,4 +1,4 @@ - + --- name: hew-security category: optional diff --git a/.claude/skills/hew/optional/hew-spec.md b/.claude/skills/hew/optional/hew-spec.md index 8d922c5..c54ca88 100644 --- a/.claude/skills/hew/optional/hew-spec.md +++ b/.claude/skills/hew/optional/hew-spec.md @@ -1,4 +1,4 @@ - + --- name: hew-spec category: optional diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c366e1..691c533 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ versioning follows [Semantic Versioning](https://semver.org/). ## [Unreleased] +## [0.12.0] — 2026-05-31 + ### Added - **Project-local config file `.hew.toml` (`hew-c0pa`).** Hew settings @@ -24,6 +26,45 @@ versioning follows [Semantic Versioning](https://semver.org/). without bypassing layering (`HEW_CONFIG` retains single-file bypass semantics). See [`docs/CONFIG.md`](docs/CONFIG.md). +### Fixed + +- **`hew loop run --jobs >= 2` now actually runs N workers (`hew-zt4z`).** + The parallel dispatcher claimed N tasks at slot-fill time, but the + per-worker loop then re-queried `bd.ready()` independently — and saw + an empty list (since the dispatcher's own claim removed those tasks + from ready). Result: 0 iters per worker, tasks stranded in + `in_progress`. Fix threads the assigned `ReadyTask` into the worker + via `Worker.assigned_task`; the worker prepends it to its + `bd.ready()` poll for the first iter, then falls back to the normal + query for iter 2+. Verified end-to-end: 2 workers, real `claude -p` + spawns, real per-worker worktrees at `~/.hew/wt//{0,1}/`, + real merge-back, both worker branches landed cleanly. +- **`hew loop run --jobs=1 --scope=epics` now honors the scope filter + (`hew-s9mb`).** The serial path's `bd.ready()` poll skipped the + scope-descendant check that the parallel `Dispatcher::dispatch_tick` + enforces. Result: agent-explicit `--scope=epics --epics=` could + silently consume any bd-ready task. Fix re-resolves the descendant + set at the worker's bd.ready() poll and filters every iter, matching + dispatcher semantics. Verified: with P1 standalones at the top of + `bd ready` and a P2 in the scoped epic, the loop now picks the P2. +- **`hew loop summary` renders an in-flight view instead of erroring + with `No such file` (`hew-cn2y`).** The command crashed with raw + `× read run.json: No such file or directory` when called against a + run whose first iter hadn't completed yet. Fix classifies four + cases: no run-dir → today's "not found" error; run-dir with + manifest.json but no run.json → render parallel in-flight view from + manifest worker states; run-dir with iter-*.json but no run.json → + render serial in-flight view from latest iter; empty run-dir → + minimal "iter 0 in flight" view with elapsed time. Includes a + `note:` line pointing at re-running summary after iter 1 ends. + +### Changed + +- **`/hew:auto` slash description** corrected from the legacy + "Run plan → decompose → execute → verify autonomously" to the + in-conversation epic walk it actually does (per the rewrite in + `hew-6n0v` / 0.11.0). + ## [0.11.0] — 2026-05-30 ### Added diff --git a/Cargo.lock b/Cargo.lock index e44daf9..9977ed9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -893,7 +893,7 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hew" -version = "0.11.0" +version = "0.12.0" dependencies = [ "anstream", "anstyle", @@ -924,7 +924,7 @@ dependencies = [ [[package]] name = "hew-core" -version = "0.11.0" +version = "0.12.0" dependencies = [ "etcetera", "insta", diff --git a/Cargo.toml b/Cargo.toml index 1e76a55..53b969a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "2" members = ["hew-core", "hew"] [workspace.package] -version = "0.11.0" +version = "0.12.0" edition = "2024" rust-version = "1.91" license = "MIT" diff --git a/hew/tests/config_e2e.rs b/hew/tests/config_e2e.rs index 0f11136..ecac8ec 100644 --- a/hew/tests/config_e2e.rs +++ b/hew/tests/config_e2e.rs @@ -375,15 +375,19 @@ fn docs_config_md_contains_merge_semantics_section() { } #[test] -fn changelog_unreleased_has_project_local_config_entry() { +fn changelog_has_project_local_config_entry() { + // Originally asserted the entry sat under [Unreleased]; the entry + // promoted into [0.12.0] at release time. The test stays as a + // "didn't accidentally drop the entry" guard against the shipped + // version's section. let body = fs::read_to_string(workspace_root().join("CHANGELOG.md")).unwrap(); - let unreleased = body - .split("## [Unreleased]") + let section = body + .split("## [0.12.0]") .nth(1) .and_then(|s| s.split("## [").next()) - .expect("[Unreleased] section"); - assert!(unreleased.contains("hew-c0pa") || unreleased.contains(".hew.toml")); - assert!(unreleased.contains("project") || unreleased.contains("Project")); + .expect("[0.12.0] section"); + assert!(section.contains("hew-c0pa") || section.contains(".hew.toml")); + assert!(section.contains("project") || section.contains("Project")); } #[test] diff --git a/skills/SKILL.md b/skills/SKILL.md index 41f93cb..69377cd 100644 --- a/skills/SKILL.md +++ b/skills/SKILL.md @@ -1,4 +1,4 @@ - + --- name: hew description: Index of installed hew skills. Loaded by the agent on session start. diff --git a/skills/brownfield/hew-audit.md b/skills/brownfield/hew-audit.md index 24e4f4f..5e0391f 100644 --- a/skills/brownfield/hew-audit.md +++ b/skills/brownfield/hew-audit.md @@ -1,4 +1,4 @@ - + --- name: hew-audit category: brownfield diff --git a/skills/brownfield/hew-boundary.md b/skills/brownfield/hew-boundary.md index cc1f800..802eea6 100644 --- a/skills/brownfield/hew-boundary.md +++ b/skills/brownfield/hew-boundary.md @@ -1,4 +1,4 @@ - + --- name: hew-boundary category: brownfield diff --git a/skills/brownfield/hew-convention.md b/skills/brownfield/hew-convention.md index f2435b2..0c4613f 100644 --- a/skills/brownfield/hew-convention.md +++ b/skills/brownfield/hew-convention.md @@ -1,4 +1,4 @@ - + --- name: hew-convention category: brownfield diff --git a/skills/brownfield/hew-migrate.md b/skills/brownfield/hew-migrate.md index 47b67b9..a982626 100644 --- a/skills/brownfield/hew-migrate.md +++ b/skills/brownfield/hew-migrate.md @@ -1,4 +1,4 @@ - + --- name: hew-migrate category: brownfield diff --git a/skills/brownfield/hew-scan.md b/skills/brownfield/hew-scan.md index 6ac5d89..2a1636a 100644 --- a/skills/brownfield/hew-scan.md +++ b/skills/brownfield/hew-scan.md @@ -1,4 +1,4 @@ - + --- name: hew-scan category: brownfield diff --git a/skills/core/hew-checkpoint.md b/skills/core/hew-checkpoint.md index 3efbf24..3fa5e95 100644 --- a/skills/core/hew-checkpoint.md +++ b/skills/core/hew-checkpoint.md @@ -1,4 +1,4 @@ - + --- name: hew-checkpoint category: core diff --git a/skills/core/hew-decompose.md b/skills/core/hew-decompose.md index 6525f6b..3bae671 100644 --- a/skills/core/hew-decompose.md +++ b/skills/core/hew-decompose.md @@ -1,4 +1,4 @@ - + --- name: hew-decompose category: core diff --git a/skills/core/hew-execute.md b/skills/core/hew-execute.md index 6375f34..7f0e066 100644 --- a/skills/core/hew-execute.md +++ b/skills/core/hew-execute.md @@ -1,4 +1,4 @@ - + --- name: hew-execute category: core diff --git a/skills/core/hew-guard.md b/skills/core/hew-guard.md index 760bc20..840cfb3 100644 --- a/skills/core/hew-guard.md +++ b/skills/core/hew-guard.md @@ -1,4 +1,4 @@ - + --- name: hew-guard category: core diff --git a/skills/core/hew-new-project.md b/skills/core/hew-new-project.md index 3892627..77ededd 100644 --- a/skills/core/hew-new-project.md +++ b/skills/core/hew-new-project.md @@ -1,4 +1,4 @@ - + --- name: hew-new-project category: core diff --git a/skills/core/hew-plan.md b/skills/core/hew-plan.md index 12f26bc..47ab8d2 100644 --- a/skills/core/hew-plan.md +++ b/skills/core/hew-plan.md @@ -1,4 +1,4 @@ - + --- name: hew-plan category: core diff --git a/skills/core/hew-verify.md b/skills/core/hew-verify.md index 507ffcd..0cdfabd 100644 --- a/skills/core/hew-verify.md +++ b/skills/core/hew-verify.md @@ -1,4 +1,4 @@ - + --- name: hew-verify category: core diff --git a/skills/data/planner-prompt.md b/skills/data/planner-prompt.md index 4b05043..c5daf44 100644 --- a/skills/data/planner-prompt.md +++ b/skills/data/planner-prompt.md @@ -1,4 +1,4 @@ - + # Hew loop — batch planner You are the planner subprocess inside `hew loop run --jobs N`. Your only diff --git a/skills/optional/hew-adversarial-review.md b/skills/optional/hew-adversarial-review.md index b435de0..b8f3176 100644 --- a/skills/optional/hew-adversarial-review.md +++ b/skills/optional/hew-adversarial-review.md @@ -1,4 +1,4 @@ - + --- name: hew-adversarial-review category: optional diff --git a/skills/optional/hew-blast.md b/skills/optional/hew-blast.md index 5b6c15d..fd8aed3 100644 --- a/skills/optional/hew-blast.md +++ b/skills/optional/hew-blast.md @@ -1,4 +1,4 @@ - + --- name: hew-blast category: optional diff --git a/skills/optional/hew-compact.md b/skills/optional/hew-compact.md index 612e5be..a59a729 100644 --- a/skills/optional/hew-compact.md +++ b/skills/optional/hew-compact.md @@ -1,4 +1,4 @@ - + --- name: hew-compact category: optional diff --git a/skills/optional/hew-deps.md b/skills/optional/hew-deps.md index 08ba40b..979a6c5 100644 --- a/skills/optional/hew-deps.md +++ b/skills/optional/hew-deps.md @@ -1,4 +1,4 @@ - + --- name: hew-deps category: optional diff --git a/skills/optional/hew-quick.md b/skills/optional/hew-quick.md index 06c9568..588d6a8 100644 --- a/skills/optional/hew-quick.md +++ b/skills/optional/hew-quick.md @@ -1,4 +1,4 @@ - + --- name: hew-quick category: optional diff --git a/skills/optional/hew-research.md b/skills/optional/hew-research.md index c78aa55..21aef4f 100644 --- a/skills/optional/hew-research.md +++ b/skills/optional/hew-research.md @@ -1,4 +1,4 @@ - + --- name: hew-research category: optional diff --git a/skills/optional/hew-review.md b/skills/optional/hew-review.md index 8f1cb50..5c27e22 100644 --- a/skills/optional/hew-review.md +++ b/skills/optional/hew-review.md @@ -1,4 +1,4 @@ - + --- name: hew-review category: optional diff --git a/skills/optional/hew-security.md b/skills/optional/hew-security.md index 72b44e0..2082526 100644 --- a/skills/optional/hew-security.md +++ b/skills/optional/hew-security.md @@ -1,4 +1,4 @@ - + --- name: hew-security category: optional diff --git a/skills/optional/hew-spec.md b/skills/optional/hew-spec.md index 8d922c5..c54ca88 100644 --- a/skills/optional/hew-spec.md +++ b/skills/optional/hew-spec.md @@ -1,4 +1,4 @@ - + --- name: hew-spec category: optional