diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2a248c79..76d5538a 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.8.3" + ".": "0.9.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e9160f1..be919b17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,143 @@ # Changelog +## [0.9.0](https://github.com/shaug/atelier/compare/v0.8.3...v0.9.0) (2026-07-27) + + +### Features + +* add store-native notes mutation ([5af6c22](https://github.com/shaug/atelier/commit/5af6c22046d42a61371c27ecab03fadcae7c3846)) +* **beads:** add process-backed client ([9d63b60](https://github.com/shaug/atelier/commit/9d63b6094e628ecbba5d05ad2edd180b5bdc500d)) +* **beads:** add sync wrappers and test doubles ([e08f92d](https://github.com/shaug/atelier/commit/e08f92df91c8fc175fc1e8e9782adfe1a241cbf1)), closes [#580](https://github.com/shaug/atelier/issues/580) +* **messages:** define work-threaded coordination contract ([bf2ebe5](https://github.com/shaug/atelier/commit/bf2ebe54add6374c1086dff8a376562d8c476744)) +* **messages:** demote agent inbox routing to compatibility ([3f98151](https://github.com/shaug/atelier/commit/3f981519211bcaf38e32b86581cf1ca044f96bed)), closes [#594](https://github.com/shaug/atelier/issues/594) +* migrate planner startup reads to AtelierStore ([e949d54](https://github.com/shaug/atelier/commit/e949d54a8d153df075aca46ca94f2d23a91c090c)) +* **planner:** enforce richer bead authoring contract ([#559](https://github.com/shaug/atelier/issues/559)) ([f209363](https://github.com/shaug/atelier/commit/f2093637c023926edb3ab9b092ca8b45925e48c0)), closes [#556](https://github.com/shaug/atelier/issues/556) +* **planner:** migrate mailbox skills onto AtelierStore ([8954c84](https://github.com/shaug/atelier/commit/8954c84e0758f993ff4bfb9a1a077c76e51f10b4)), closes [#652](https://github.com/shaug/atelier/issues/652) +* **planner:** require full promotion previews ([#562](https://github.com/shaug/atelier/issues/562)) ([f643765](https://github.com/shaug/atelier/commit/f6437658393cc25aaca1766f5c4622e25a5093f5)), closes [#557](https://github.com/shaug/atelier/issues/557) +* **runtime:** add bounded planner and worker profiles ([8c5c4e6](https://github.com/shaug/atelier/commit/8c5c4e66a6839a64a984b53cc16ef79ee4b5f83b)) +* **store:** add Beads-backed discovery reads ([94ef9ef](https://github.com/shaug/atelier/commit/94ef9efb08acfdb481330a6a5827a5f7f154e08c)) +* **store:** add lifecycle mutation adapter ([3954fbe](https://github.com/shaug/atelier/commit/3954fbefa10c749d14454548ee82febad026eee0)) +* **store:** migrate external ticket persistence ([641775f](https://github.com/shaug/atelier/commit/641775fe783c1ac643c29c3c670da32ac5e87225)) +* **store:** migrate planner authoring mutations ([bdf8da3](https://github.com/shaug/atelier/commit/bdf8da399578582228de63abb7b4dbbf1c3a7ce9)), closes [#653](https://github.com/shaug/atelier/issues/653) +* **store:** migrate planner mutation skills to AtelierStore ([feb3447](https://github.com/shaug/atelier/commit/feb344766b04e67acc02ba23e119128e8e8d3a26)), closes [#653](https://github.com/shaug/atelier/issues/653) +* **testing:** define in-memory beads dispatcher harness ([7fd6ea6](https://github.com/shaug/atelier/commit/7fd6ea673bb9b634ff8f50a7c1c567489b0d6285)), closes [#467](https://github.com/shaug/atelier/issues/467) +* **worker:** add north-star self-review contract ([#561](https://github.com/shaug/atelier/issues/561)) ([c9b616c](https://github.com/shaug/atelier/commit/c9b616ccbffee81cbc5b50049ad5602dc62168cf)) +* **worker:** capture restart runtime contract ([#572](https://github.com/shaug/atelier/issues/572)) ([0616125](https://github.com/shaug/atelier/commit/0616125374ec548468c8262ad6f2e4e964c47dcb)), closes [#569](https://github.com/shaug/atelier/issues/569) +* **worker:** define selected-scope worktree fast-path validation ([632afb7](https://github.com/shaug/atelier/commit/632afb79fce9e62a747b44e0943a966493cdbd3c)) +* **worker:** process work-threaded blocking messages ([3795ea4](https://github.com/shaug/atelier/commit/3795ea407e0fb3bb246a8a49c22e365c93fb81e7)), closes [#593](https://github.com/shaug/atelier/issues/593) +* **worker:** restart at idle boundary after runtime updates ([#595](https://github.com/shaug/atelier/issues/595)) ([faaa738](https://github.com/shaug/atelier/commit/faaa738288b29ffe64b1298c77d9179f8654fdb3)), closes [#570](https://github.com/shaug/atelier/issues/570) +* **worker:** validate selected worktree scope before repair ([20cba3d](https://github.com/shaug/atelier/commit/20cba3ddeaa7be1e8406efe3dc53696b09520d88)), closes [#691](https://github.com/shaug/atelier/issues/691) + + +### Bug Fixes + +* align plan-promote preview with planner contract ([9483896](https://github.com/shaug/atelier/commit/9483896bc80896ac0fd40e636e8bf5ab6e3a7768)) +* **beads:** accept store-shaped dependency references ([80f516e](https://github.com/shaug/atelier/commit/80f516e87edcbd24f70fe7b39f28948d43be8c86)) +* **beads:** add overflow repair command ([01033c6](https://github.com/shaug/atelier/commit/01033c67f1d526df81ec327ebeb85f62ff9bc3de)) +* **beads:** centralize overflow repair client capability ([11354f1](https://github.com/shaug/atelier/commit/11354f1637c45bc9bfbbf7cadebaced85febdc07)), closes [#714](https://github.com/shaug/atelier/issues/714) +* **beads:** commit overflow repair writes via dolt server ([ce33974](https://github.com/shaug/atelier/commit/ce339747487263ac80b6bdb70ee021c6d801c080)) +* **beads:** durably verify Dolt overflow repairs ([bda95b7](https://github.com/shaug/atelier/commit/bda95b769a297f29099731c11876f33df39c4b4d)), closes [#751](https://github.com/shaug/atelier/issues/751) +* **beads:** fail closed on oversized snapshot recovery ([6c10873](https://github.com/shaug/atelier/commit/6c108737dc3c4fcfdb2c043df999498d25c29a67)) +* **beads:** finalize overflow repair verification ([25536f4](https://github.com/shaug/atelier/commit/25536f41caf1f68a8f8d169d06773dbb877cdb41)) +* **beads:** gate json capability checks during inspection ([07c09db](https://github.com/shaug/atelier/commit/07c09db0dc3a976cadfd08af36c7f45a6bc5f5ba)), closes [#579](https://github.com/shaug/atelier/issues/579) +* **beads:** keep overflow matcher private ([18652fc](https://github.com/shaug/atelier/commit/18652fc05cdde77dd41f9c3dc93901c2e71753e2)) +* **beads:** narrow dependency payload normalization ([c66e79f](https://github.com/shaug/atelier/commit/c66e79fbdf1d9cf5207ff835beea9eef73b805da)) +* **beads:** persist dolt overflow repair SQL ([3cbcef0](https://github.com/shaug/atelier/commit/3cbcef03bf21b168e1a8583fae8c41a289cbfa4b)) +* **beads:** recover helper-session restart failures ([ca781cc](https://github.com/shaug/atelier/commit/ca781ccb5703a6ba7aa5cee5207276d0125721cb)) +* **beads:** repair overflowed issue history ([8b5d0a8](https://github.com/shaug/atelier/commit/8b5d0a8e0d1b7476fac8707a9c80d717b6bffa4a)) +* **beads:** require helper-session proof for overflow repair ([0d0369f](https://github.com/shaug/atelier/commit/0d0369f94d1bda865e719da8e0a721db4acbeb30)) +* **beads:** retry concurrent description metadata writes ([1618b79](https://github.com/shaug/atelier/commit/1618b79ba3600b55b3069c0349e14032263834d8)), closes [#713](https://github.com/shaug/atelier/issues/713) +* **beads:** use direct dolt sql for durable overflow repair ([b55cd10](https://github.com/shaug/atelier/commit/b55cd104b1b6e2f81267dcf5174f5dd537242fd7)) +* **beads:** verify Dolt overflow compaction persistence ([b16da49](https://github.com/shaug/atelier/commit/b16da49e632461f51fa673c692d26a68d011b1f3)) +* **beads:** verify Dolt overflow compaction persistence ([331ad5c](https://github.com/shaug/atelier/commit/331ad5c5970f834f5a499d44f803d9794385f61c)) +* **beads:** verify sqlite overflow repair readback ([5d3b1e9](https://github.com/shaug/atelier/commit/5d3b1e993fa930a01326958549a2fb95110ccb81)) +* **cli:** restore declared Click compatibility ([180f10e](https://github.com/shaug/atelier/commit/180f10ee15479fadce859662b2d4b3cd628777f0)) +* **dev:** pin local quality gates to python 3.11 ([0af5f5c](https://github.com/shaug/atelier/commit/0af5f5c2877cc92632a08033ab7e806de122be6d)) +* ensure local-create fast path restores epic worktree ([e171043](https://github.com/shaug/atelier/commit/e17104395c2cda63e6e10438835fbc78f5f911bf)) +* **gc:** degrade integrated sha conflicts to anomalies ([4ed1198](https://github.com/shaug/atelier/commit/4ed1198b6d69de3e3b929a9943c3a122ae6e0948)) +* **gc:** normalize placeholder null bead ids ([#632](https://github.com/shaug/atelier/issues/632)) ([086d1c4](https://github.com/shaug/atelier/commit/086d1c497313fc7aa3c09564f9adea7bac20b72b)) +* **gc:** skip closed stale agent beads ([14f1ca4](https://github.com/shaug/atelier/commit/14f1ca4f8f1dca2868466b22a61edf043da73e48)) +* **guardrails:** accept underscored re_split trigger notes ([327cc5e](https://github.com/shaug/atelier/commit/327cc5e032d5edc2a3420787a640c0784ee11cc8)), closes [#656](https://github.com/shaug/atelier/issues/656) +* handle legacy Beads tombstones at store boundary ([090a753](https://github.com/shaug/atelier/commit/090a7536dbfb6ac9bb6b8c209382f2c98f533251)) +* harden overflow recovery for store-backed mutations ([e531328](https://github.com/shaug/atelier/commit/e531328b20f7f51abfb9dcc9c1168f896e775003)) +* **install:** recover invalid project venv ([83411ac](https://github.com/shaug/atelier/commit/83411ac435d9f76dc5ea6b173332e4eaad145931)) +* **install:** repair stale atelier launchers ([1788357](https://github.com/shaug/atelier/commit/17883578ab8480ed601487425ce45e116a53f984)) +* **mail-inbox:** support explicit unread mode ([c27eb08](https://github.com/shaug/atelier/commit/c27eb08e9cdc00b319220083efef411e5f6b6581)) +* **messages:** infer epic thread kind for top-level work ids ([c6420ad](https://github.com/shaug/atelier/commit/c6420adef44e5cb00c5477d951fee26c403dd8fa)) +* **plan-promote-epic:** read canonical beads notes ([7be40bd](https://github.com/shaug/atelier/commit/7be40bd12c06089ebb451f29b350665f12e86f2a)) +* **planner-startup:** harden projected skill runtime ([d5b7c23](https://github.com/shaug/atelier/commit/d5b7c2312e38f15a0c2059126c075082054e2c7a)), closes [#605](https://github.com/shaug/atelier/issues/605) +* **planner:** accept converged lifecycle promotion retries ([10f3bf5](https://github.com/shaug/atelier/commit/10f3bf58f3f6aca1a70e0630a2af5b2e4a4ede63)) +* **planner:** accept structured guardrail authoring fields ([#637](https://github.com/shaug/atelier/issues/637)) ([844d54f](https://github.com/shaug/atelier/commit/844d54f092316662b5a691d16177dae19d3bbc2e)), closes [#634](https://github.com/shaug/atelier/issues/634) +* **planner:** clarify issue owner vs assignee ([ff10a06](https://github.com/shaug/atelier/commit/ff10a06064e2640427baedf4dd906ea90aa2a51c)) +* **planner:** filter startup queued message output ([416428a](https://github.com/shaug/atelier/commit/416428a7d2b9044734e28fc29da46e1a537a63f1)) +* **planner:** harden ownership helper runtime ([261353c](https://github.com/shaug/atelier/commit/261353c00d886129cd5cb5b016d3582bf7e7c805)) +* **planner:** keep startup compatibility reads adapter-local ([d835a06](https://github.com/shaug/atelier/commit/d835a06732523699661125352125b50735dd6e6c)) +* **planner:** move startup message compatibility reads into store ([5e116d7](https://github.com/shaug/atelier/commit/5e116d7d505a37e530eb82fb70664dec373badf5)), closes [#651](https://github.com/shaug/atelier/issues/651) +* **planner:** preserve inbox startup routing after rebase ([f15f369](https://github.com/shaug/atelier/commit/f15f369fd824a0c63aa231bd63524d8c7ec76002)) +* preserve guardrails script default cwd behavior ([7697367](https://github.com/shaug/atelier/commit/7697367a29d1e602aa47641f5793ad2a304033c9)) +* preserve legacy review-state aliases in store updates ([5153e8f](https://github.com/shaug/atelier/commit/5153e8f9795b03c2b737d635c6579f6612f09e5f)) +* preserve overflow cause in review verification ([8666736](https://github.com/shaug/atelier/commit/86667362171f5129695e8e2b4ddc218ca9731d45)) +* preserve stale manifest pythonpath during self-heal ([c55bf31](https://github.com/shaug/atelier/commit/c55bf310c825be6e3ff1cb5a13b81399a420a33b)) +* **publish:** close exported GitHub issues from PR bodies ([#609](https://github.com/shaug/atelier/issues/609)) ([1afffc8](https://github.com/shaug/atelier/commit/1afffc89339773ffa78885354813b3009eb6bbd5)), closes [#607](https://github.com/shaug/atelier/issues/607) +* repair overflow verification readback ([2690910](https://github.com/shaug/atelier/commit/2690910a0e74cbdc05e6e4f3a84b2b7d7eebb270)) +* repair planner helper runtime preflight for broken tool installs ([11bb37e](https://github.com/shaug/atelier/commit/11bb37e7aad49e0fba0c2d80edc17680235d222d)) +* **runtime:** author bounded evidence from launch boundary ([d7801cc](https://github.com/shaug/atelier/commit/d7801cc06c51dd38ea33f80a3a67af86510a5d23)) +* **runtime:** fail closed on evidence cleanup uncertainty ([a1a9d3d](https://github.com/shaug/atelier/commit/a1a9d3de778413d8432037f176bcdf8db95e7ae4)) +* **runtime:** honor worker runtime overrides ([6a7d888](https://github.com/shaug/atelier/commit/6a7d8888bbb139f486df29f285c1eaa426361450)) +* **runtime:** improve projected bootstrap diagnostics ([53b91c0](https://github.com/shaug/atelier/commit/53b91c0541ee670be99809ee5e01d8236a750cb1)) +* **runtime:** isolate bounded worker evidence per iteration ([2161762](https://github.com/shaug/atelier/commit/216176223f69643c6ecc0887a53b176a9409ffdc)) +* **runtime:** isolate projected skill dependency provenance ([1ffab95](https://github.com/shaug/atelier/commit/1ffab9560ad5990d7812102b4a2d9bf026d11594)) +* **runtime:** preserve projected tool runtime roots ([acfed9d](https://github.com/shaug/atelier/commit/acfed9d2abba59287efc871d85179b52888b84f4)) +* **runtime:** preserve split projected tool roots ([b00343d](https://github.com/shaug/atelier/commit/b00343def126ea0285a7c68df75cb477c689dd0f)) +* **runtime:** stabilize projected repo python detection ([89e420d](https://github.com/shaug/atelier/commit/89e420dbf69f81054e96af992b6556004cd12ad3)) +* **runtime:** support bounded convergence across worker agents ([0e0ecb2](https://github.com/shaug/atelier/commit/0e0ecb247b97ea2e481c81c5053bc6029000cf66)) +* **skills:** backfill projected runtime manifests ([b4e7949](https://github.com/shaug/atelier/commit/b4e79491f9012c9ecdfda9e4deaa213c0226c27e)) +* **skills:** bootstrap stale manifests from support runtime ([7e22108](https://github.com/shaug/atelier/commit/7e22108fa628425fd76a7cfb8477f5c6e61e08ae)) +* **skills:** honor bootstrap repo root for beads defaults ([8755f90](https://github.com/shaug/atelier/commit/8755f90ad4be500ac8a8c6917f93359a7cf540b0)) +* **skills:** package shared projected bootstrap tree ([#642](https://github.com/shaug/atelier/issues/642)) ([4d7ac6e](https://github.com/shaug/atelier/commit/4d7ac6e2965d014704b1ac57379c5fe862a8252f)), closes [#640](https://github.com/shaug/atelier/issues/640) +* **skills:** preserve PR base on update ([bcd4ac9](https://github.com/shaug/atelier/commit/bcd4ac95511bebb2d121b0c864b406f7b5e5df9e)), closes [#599](https://github.com/shaug/atelier/issues/599) +* **skills:** preserve work-done bootstrap runtime ([77faf35](https://github.com/shaug/atelier/commit/77faf3503ede5f401967d828bbc6223ee7da6c40)), closes [#704](https://github.com/shaug/atelier/issues/704) +* **skills:** repair projected bootstrap runtime resolution ([0affc6f](https://github.com/shaug/atelier/commit/0affc6fe5187d989aa16a878040a2fbc70f946a6)), closes [#760](https://github.com/shaug/atelier/issues/760) +* **skills:** repair stale copied agent-home runtime lookup ([637a9eb](https://github.com/shaug/atelier/commit/637a9ebfc701ba7455cb708d2463812e3f7fe31b)), closes [#762](https://github.com/shaug/atelier/issues/762) +* **skills:** repair stale projected runtime rollouts ([ef58a35](https://github.com/shaug/atelier/commit/ef58a35a3a0fe286ab13506c8eeebf5988549d88)) +* **skills:** repair stale runtime without support manifest ([fbaa6b0](https://github.com/shaug/atelier/commit/fbaa6b02d9cb4ce829cbd5cce80874a2371cf015)) +* **skills:** self-heal projected helpers on stale manifests ([bf33220](https://github.com/shaug/atelier/commit/bf332208b9c228095ca3e3bc83183c91c4786d41)) +* speed up planner startup epic discovery ([e0d515d](https://github.com/shaug/atelier/commit/e0d515d533e19c6d3a1c71e3aef59668bf316796)) +* **store:** collapse the public store boundary ([e2b42be](https://github.com/shaug/atelier/commit/e2b42be4249b8a7b1440c71c212173f702104111)) +* **store:** keep message recipient hints adapter-local ([3ef96eb](https://github.com/shaug/atelier/commit/3ef96eb93e0c7c1be388e1f09e7ff294010b7562)) +* **store:** keep the public store boundary abstract ([39e9fb4](https://github.com/shaug/atelier/commit/39e9fb484bbda5f77b05933e0cfdcc6af3d8bf36)) +* **store:** move repair history behind beads clients ([f8458e9](https://github.com/shaug/atelier/commit/f8458e9a19a1e1d3f0aca544744a2ca9b4920635)) +* **store:** narrow history convergence after empty stdout ([4b644b3](https://github.com/shaug/atelier/commit/4b644b30be290f9f581aa6796aba0e3e7b811d7e)) +* **store:** publish persistence contract parity ([41f5cef](https://github.com/shaug/atelier/commit/41f5cefe76b58aaaaff388dedd8fd0fa3383a1e0)) +* **store:** recover empty update stdout convergence ([c6a43c9](https://github.com/shaug/atelier/commit/c6a43c961fe5fce6926ff03ae4ee0a5571d6fd8f)), closes [#729](https://github.com/shaug/atelier/issues/729) +* **store:** remove extra public store protocol ([3e8b568](https://github.com/shaug/atelier/commit/3e8b5689faa3b960f838b8d4e11aadfe4b92500f)) +* **store:** route review metadata writes through atelier store ([100cf4e](https://github.com/shaug/atelier/commit/100cf4e04c838f467299dff2c97286d80cdb32d3)) +* **store:** tolerate missing agent-id lookups ([8e00ee1](https://github.com/shaug/atelier/commit/8e00ee14e177fb577c65a5e6819b042c3f98dbfc)) +* **store:** verify multiline note appends ([70c5d82](https://github.com/shaug/atelier/commit/70c5d827cf871d4773f3ec3e6f2c8d5293f5ca7f)) +* **store:** verify review updates with history evidence ([0cf79cd](https://github.com/shaug/atelier/commit/0cf79cdf2473649404725756f0a1074c7518598f)) +* **worker:** avoid stalled startup epic scans ([7474d60](https://github.com/shaug/atelier/commit/7474d601d479dfb22733ccc802ff6dcbf62a6f4c)) +* **worker:** bypass agent scan for hook updates ([e92ab0b](https://github.com/shaug/atelier/commit/e92ab0b944a81d71d8b5507e35aaaca23d9346e1)) +* **worker:** demote stale hooked epics at startup ([3171b9b](https://github.com/shaug/atelier/commit/3171b9bf7f320eaa928a51b3dbc10867fcd0d534)) +* **worker:** enforce bead-first review-feedback ordering ([#567](https://github.com/shaug/atelier/issues/567)) ([41d7b41](https://github.com/shaug/atelier/commit/41d7b41a5ef466e7df553edd8dda81b051a85592)) +* **worker:** enforce bounded convergence evidence contract ([946845f](https://github.com/shaug/atelier/commit/946845fbdddefcbaf5e69357b0c98088e23af9df)) +* **worker:** gate worktree reconciliation fallback ([f19a4c6](https://github.com/shaug/atelier/commit/f19a4c670f73401d9c1d9f435ad52713d380e2cf)), closes [#692](https://github.com/shaug/atelier/issues/692) +* **worker:** ignore inbox messages on terminal threads ([dcde917](https://github.com/shaug/atelier/commit/dcde9178a750707e2a64782fab6e5278e407ce1d)) +* **worker:** ignore terminal inbox threads on startup ([f1b71ab](https://github.com/shaug/atelier/commit/f1b71ab063ad239ae6f70c91805e165aec4a3061)) +* **worker:** keep blocked lifecycle mutation atomic ([5a4da87](https://github.com/shaug/atelier/commit/5a4da87b7f6909498d955ce70820bbde1b3e9d45)) +* **worker:** keep blocked retry audit note stable ([b2429dd](https://github.com/shaug/atelier/commit/b2429dd6b6dcac6128061de274eb61c8daada457)) +* **worker:** keep fast-path validation selected-scope-only ([d76b4fd](https://github.com/shaug/atelier/commit/d76b4fd8ab4fa5b61ec40635e97d155769f67e92)) +* **worker:** keep merged closed children terminal during epic close ([a541da1](https://github.com/shaug/atelier/commit/a541da1d0dee09dad6ee7bf7eee93c490541e605)) +* **worker:** keep stale closed PR inbox threads visible ([dd068fc](https://github.com/shaug/atelier/commit/dd068fc30a2d07e77ccb4066aa66ff0b6bbf2fa2)) +* **worker:** narrow merged finalize close fallback ([846c208](https://github.com/shaug/atelier/commit/846c208d295075214b7161af67eb5ae4d00aa098)), closes [#726](https://github.com/shaug/atelier/issues/726) +* **worker:** preserve agent bead lookup coverage ([de49ca9](https://github.com/shaug/atelier/commit/de49ca93cab469dac9bc547621a0fc138abf385b)) +* **worker:** preserve changeset review metadata during finalize ([#638](https://github.com/shaug/atelier/issues/638)) ([387a0e1](https://github.com/shaug/atelier/commit/387a0e1932a6fe1a44dd416b05e2c5778f55eac6)), closes [#636](https://github.com/shaug/atelier/issues/636) +* **worker:** preserve done-to-closed fallback repair ([3fabec1](https://github.com/shaug/atelier/commit/3fabec1b3f020f242f529b1e19b686623323ea35)) +* **worker:** repair merged finalize close convergence ([ce85ea7](https://github.com/shaug/atelier/commit/ce85ea7eadbf1535edd98ec2fc917b41b22504ae)) +* **worker:** scope blocked convergence to current episode ([d2ac85f](https://github.com/shaug/atelier/commit/d2ac85f9c0cf5b8b513032d87f3085a3cef42650)), closes [#721](https://github.com/shaug/atelier/issues/721) +* **worker:** stabilize blocked transition verification ([fd7df40](https://github.com/shaug/atelier/commit/fd7df40d4d93e3020588c5ef3f1d47319782ba60)) +* **worker:** tighten startup review-followup diagnostics ([9f82f4d](https://github.com/shaug/atelier/commit/9f82f4db64079e12e9d8a20a1b59c8056fd32688)), closes [#661](https://github.com/shaug/atelier/issues/661) +* **worker:** verify close transitions after empty beads output ([cb76610](https://github.com/shaug/atelier/commit/cb76610ce81f70f6a8b7be1d7c2915b44f6e4421)), closes [#724](https://github.com/shaug/atelier/issues/724) + ## [0.8.3](https://github.com/shaug/atelier/compare/v0.8.2...v0.8.3) (2026-03-06) ### Bug Fixes