Skip to content

v0.17.0

Choose a tag to compare

@kirchdev-release kirchdev-release released this 03 Aug 17:49
d3f4c3e

0.17.0 (2026-08-03)

⚠ BREAKING CHANGES

  • work: a repo setting work.queueBranch: true now needs a workflow that cuts the queue branch and opens its PR. The drain previously did both and stopped the whole run when it could not.
  • skills: a config mapping work.linear.states.done no longer moves the board on the accept verdict; add states.accepted (and list it in statuses) to restore it. Until then the accept verdict leaves the state untouched, which is the existing "unmapped step" behaviour and the intended failure direction — a board that lags rather than one that claims a ship.

Features

  • ci: run the skill conformance check in CI (026417c), closes #105
  • issue: pin the untriaged marker as a configured label (#179) (885d243)
  • issue: select the grilling interview engine with a root grillWith key (#214) (5e44797)
  • merge-deps: extend to the GitLab forge (#219) (638ec05)
  • prune-comments: scope the Bash grant to read-only git (e7c3465), closes #135
  • pull-request: base a stacked branch on the PR below it (#200) (850ca90)
  • refine-issue: add skill that takes an issue to ai-ready (#180) (73e3d6e)
  • release: mark shipped work Done at the default-branch merge (7267e00), closes #160
  • release: state the GitHub-only limitation as a decision (#218) (e3cf795)
  • skills: add a local file-based issue tracker driver (#202) (0cefe26)
  • skills: add GitLab as a third forge and issue tracker (#216) (975d4a0)
  • skills: lead every run report with a TL;DR (#212) (af5e031)
  • skills: link into every client's skills path (c925b7e), closes #118
  • skills: make a blanket Bash grant a named exception (8e8a98a), closes #135
  • skills: make a cross-skill call optional by default (#192) (1b1a684)
  • skills: permit a thin shape for alias-style skills (#195) (7a1cc4e)
  • skills: pin grant minimality against the calls a skill drives (#201) (5d09445)
  • skills: separate drain concurrency from the run cap (#199) (f3933ba)
  • skills: stop the work loop loading the config and lock blocks twice (#198) (6a63d1e)
  • tldr: add a summariser skill with a fixed section frame (#196) (cb6001e)
  • update-deps: add Go as a fourth ecosystem (#194) (bcd07bc)
  • validate-skills: map client extensions across four clients (8b094ed), closes #109
  • validate-skills: scope the Bash grant to what it drives (60cbd2d), closes #135
  • work-implement-queue: report a drain's queue state so a loop knows to wait or stop (#190) (c56f166)
  • work-implement: drive tdd where a test can reach the change (#171) (48236af)
  • work-implement: give the block clause a diagnosis discipline (#172) (5bf95df)
  • work-implement: group a worktree drain's PRs behind one queue branch (#217) (fbe31b9)
  • work-implement: honour blockedBy relations under branch worktree (#174) (2c30e74)
  • work-implement: name the collision gap in worktree + parallel mode (#188) (e2c24e7)
  • work-implement: pace the backpressure wait by mode, not a fixed interval (#210) (a14a2ba)
  • work-implement: read an order-free relation as a parallel-batch mutex (#184) (087e5ad)
  • work-implement: route the loops' feedback to the pull request (#193) (8c0292b)
  • work-implement: rule a rebase conflict on a shared branch (#173) (c829f7c)
  • work-implement: state the recommended effort per loop (#213) (3c53efd)
  • work-implement: withhold issues whose labels contradict each other (#177) (f28ef33)
  • work: keep AI pull requests in draft until review is confident (#215) (84f2f55)
  • work: let the repo own the queue branch, not the drain (240f740)
  • work: settle the owner decisions behind the needs-human backlog (#207) (e76e050)
  • write-contributing: add skill that writes and maintains CONTRIBUTING.md (#178) (2fb2b1f)
  • write-contributing: apply "never transcribe" to every list (#208) (442c1d5)
  • write-docs: reconcile ADRs written in a foreign format (#197) (e17ccfb)
  • write-docs: reconcile the ADR contract with Nygard (#189) (330de14)
  • write-docs: state when a decision earns an ADR (#183) (48e0aa6)

Bug Fixes

  • merge-deps: check out the PR head detached so cleanup needs no force (1557d6a), closes #135
  • merge-deps: derive the verify worktree's path instead of carrying it (3669551), closes #135
  • merge-deps: reclaim the verify worktree and move it out of work/ (0c057cd), closes #135
  • merge-deps: resolve the PR head in the shell that fetched it (75ded77), closes #135
  • prune-branches: describe the branch grants by what they do (309719c), closes #135
  • prune-comments: drop the shell and the stream editor from the grant (652c661), closes #135
  • prune-comments: grant git symbolic-ref at the read the skill drives (9214d48), closes #135
  • pull-request: grant gh api at the one call the skill drives (3402543), closes #135
  • pull-request: grant git branch at the read the skill drives (9b0ae27), closes #135
  • release: keep the shipped-marking step inert when a filter is missing (1eeee97), closes #160
  • skills: clear git log, and treat gh as the exec route it is (18ff2fa), closes #135
  • skills: declare the cache reads two grants still left out (fc5c089)
  • skills: declare the reads every run already makes (93615a0), closes #135
  • skills: make a presented plan render where it is read (fccccc2), closes #157
  • skills: scope every remaining grant to what its skill drives (7d5a9e5), closes #135
  • skills: stop the AI verdict writing a Linear state that means shipped (cbdd577), closes #160
  • skills: write the two read-only grants at the subcommand they drive (fc3a2b7)
  • validate-skills: drop the commands that can reach a shell (fc5fb9e), closes #135
  • validate-skills: tag an extension with every client that defines it (#181) (09a7f4c)
  • work-implement: install dependencies before verifying in a worktree (e14f27c), closes #152
  • work-implement: state that a mapped Linear state is best-effort (#191) (931bea5)
  • work-review: derive the gate worktree's path instead of carrying it (d3e17b1), closes #135
  • work-review: reclaim the gate worktree before creating it (4aabf00), closes #135
  • work-review: remove the throwaway worktree without --force (6b64fb4), closes #135
  • work-review: say that a deny rule refuses rather than prompts (e9e5980), closes #135