Skip to content

v0.11.0

Choose a tag to compare

@quailops quailops released this 30 Oct 05:12
439b487

0.11.0 (2026-10-30)

⚠ BREAKING CHANGES

  • @chernabog/core is the binary's contract with every repo's flows, and each repo runs the @chernabog/sdk it pins (#167)

Features

  • @chernabog/core is the binary's contract with every repo's flows, and each repo runs the @chernabog/sdk it pins (#167) (4c9db37)
  • a notification about an issue or pull request checks its runs' stillValid within seconds (#165) (3b3e5ce)
  • a run names the subjects it touched, instead of the engine recording its pull request (#210) (799e427)
  • a trigger can report an item as held, with a reason, and status shows it (#183) (ac588bf)
  • CI is read as checks and statuses, the SDK decides the verdict, and cancel leaves labels to markers (#217) (caf8574)
  • CI state for a commit or a branch, and ciState counts every check when branch rules are refused (#190) (d288d93)
  • claims are leases: the daemon renews its runs' claims, an expired one can be taken over, and a run that lost its claim ends as lost (#169) (7d90433)
  • Epic.tasks works out which of an epic's tasks are ready, the base each stacks on, and why the rest wait (#187) (36ff85f)
  • fencing and change reporting cover every write a capability declares, without the engine naming methods (#211) (8632c19), closes #205
  • flows declare their own settings, and core's settings are only the engine's (#214) (0037fdd)
  • implement adopts an open pull request that already closes its issue, instead of implementing it again (#191) (425803c)
  • Implement and Hybrid blocks take a base branch per item, not only repo.baseBranch (#168) (1f716ea)
  • markers: a run registers what it put on an item, and the daemon takes it off however the run ends (#164) (fdca485)
  • recipes: an epic recipe that implements an epic's tasks as stacked pull requests (#193) (0fe6ebd)
  • recipes: an epic with ship set lands its layers, bottom to top, once each is approved (#220) (e614164)
  • recipes: an epic's tasks implemented at once is its atOnce setting (#221) (9a8f1f2)
  • recipes: the epic run carries a lower layer's change up its stack (#197) (d528b27)
  • routing is the flow's decision, not the engine's (#215) (805af1a), closes #204
  • runs whose issue or pull request goes away end as superseded (flows' stillValid, checked by the daemon) (#160) (c0bbcfb)
  • sdk: an approval survives a head that only merged in its base (#184) (8a6c44f)
  • sdk: implement holds a blocked issue, and leaves an epic run's tasks to it (#188) (4f66c12), closes #177
  • sdk: Stack.refreshLayer brings a layer whose base moved up to date and adjusts it, outside the review rounds (#189) (205ab4c)
  • sdk: Stack.syncBase merges a layer's moved base in, including a squash-merged layer below (#186) (1487c3f)
  • the config branch is GitHub's default, and a flow's work targets its own base (#216) (4a4ffd5)

Bug Fixes

  • a worktree left by an earlier run is reset to the claimed branch, so implement's push no longer fails with stale info (#159) (9552a27)
  • recipes: an approved layer of a stack waits for the layer below, rather than going to a person (#219) (4f450ab)
  • review, address-review and merge treat a pull request stacked on another branch as a layer (#185) (9b834b8)
  • runs preparing worktrees at once no longer collide on the checkout's git locks (#212) (#213) (d4ee04b)
  • sdk: addressing a review stops for a person when the author leaves edits uncommitted (#194) (657528d), closes #192