{"assets":[{"access":"gitlab_access_required","architecture":"amd64","kind":"archive","name":"sonny-api_0.12.1-rc.14_linux_amd64.tar.gz","platform":"linux","sha256":"ace6d06ab3be3c5b4a23ef4201eec7562f762d62ced2b660162dca98b0f49420","size_bytes":55055472,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny-api_0.12.1-rc.14_linux_amd64.tar.gz"},{"access":"gitlab_access_required","architecture":"arm64","kind":"archive","name":"sonny-api_0.12.1-rc.14_linux_arm64.tar.gz","platform":"linux","sha256":"54a302c83b59d8e596b9b17340d132497a856606c9edbb2e047b85dfde90715d","size_bytes":50708641,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny-api_0.12.1-rc.14_linux_arm64.tar.gz"},{"access":"gitlab_access_required","architecture":"amd64","kind":"installer","name":"sonny-desktop-0.12.1-rc.14-1.x86_64.rpm","platform":"linux","sha256":"2a759de2e38039329eee098c8722007752fd9323d0d907f522ff6a54073f9165","size_bytes":28201155,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny-desktop-0.12.1-rc.14-1.x86_64.rpm"},{"access":"gitlab_access_required","architecture":"amd64","kind":"installer","name":"sonny-desktop_0.12.1-rc.14_amd64.deb","platform":"linux","sha256":"70d0920c0139b21a329a10487b39555c38fb587cb813e6ec36bb14355d48ed64","size_bytes":28201022,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny-desktop_0.12.1-rc.14_amd64.deb"},{"access":"gitlab_access_required","architecture":"universal","kind":"installer","name":"sonny-desktop_0.12.1-rc.14_darwin_universal.dmg","platform":"darwin","sha256":"27b202cb3435324fc8bffa9315d91a09ca2574f973e4639ea09e45748c4262e8","size_bytes":223532288,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny-desktop_0.12.1-rc.14_darwin_universal.dmg"},{"access":"gitlab_access_required","architecture":"amd64","kind":"installer","name":"sonny-desktop_0.12.1-rc.14_windows_amd64-installer.exe","platform":"windows","sha256":"111024b750a08a1eaf65ff192292d32c4d9193fe18571c33cf136c382ec6e2e1","size_bytes":102966208,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny-desktop_0.12.1-rc.14_windows_amd64-installer.exe"},{"access":"gitlab_access_required","architecture":"arm64","kind":"installer","name":"sonny-desktop_0.12.1-rc.14_windows_arm64-installer.exe","platform":"windows","sha256":"a82edf7e577fd6c9b3239b1bfa4deb5eace712c150f99427b4302476c8ccba45","size_bytes":93551592,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny-desktop_0.12.1-rc.14_windows_arm64-installer.exe"},{"access":"gitlab_access_required","architecture":"amd64","kind":"archive","name":"sonny_0.12.1-rc.14_darwin_amd64.tar.gz","platform":"darwin","sha256":"7d0dffbd7296fed43ab5a2fe03114de999c9bcc6c2f28bda9935cefba4a8fc6c","size_bytes":74668823,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny_0.12.1-rc.14_darwin_amd64.tar.gz"},{"access":"gitlab_access_required","architecture":"arm64","kind":"archive","name":"sonny_0.12.1-rc.14_darwin_arm64.tar.gz","platform":"darwin","sha256":"d25772cad9f386f8ecebe186008470172f754c3135a2dc8f7cc93fa27049c2cc","size_bytes":70434853,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny_0.12.1-rc.14_darwin_arm64.tar.gz"},{"access":"gitlab_access_required","architecture":"amd64","kind":"installer","name":"sonny_0.12.1-rc.14_linux_amd64.apk","platform":"linux","sha256":"6ccbd88a0e261d1f5715b5b56474583084d5f770d5809a06c1fb3bd0f50c8c57","size_bytes":138782212,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny_0.12.1-rc.14_linux_amd64.apk"},{"access":"gitlab_access_required","architecture":"amd64","kind":"installer","name":"sonny_0.12.1-rc.14_linux_amd64.deb","platform":"linux","sha256":"6e69782f18a1f22270151081d9807a1387f92396269f7ee9f99de997f7c97cb5","size_bytes":132640788,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny_0.12.1-rc.14_linux_amd64.deb"},{"access":"gitlab_access_required","architecture":"amd64","kind":"installer","name":"sonny_0.12.1-rc.14_linux_amd64.rpm","platform":"linux","sha256":"fe48086199981391f1a21347f03b676af914840ca783f862abc0098cc7b8bae9","size_bytes":132676649,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny_0.12.1-rc.14_linux_amd64.rpm"},{"access":"gitlab_access_required","architecture":"amd64","kind":"archive","name":"sonny_0.12.1-rc.14_linux_amd64.tar.gz","platform":"linux","sha256":"dfcafc95d1e2242faa7083199023d1aebbf6b4b613cb7281b71995fc61112e56","size_bytes":77597420,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny_0.12.1-rc.14_linux_amd64.tar.gz"},{"access":"gitlab_access_required","architecture":"arm64","kind":"installer","name":"sonny_0.12.1-rc.14_linux_arm64.apk","platform":"linux","sha256":"ca6294897e2a49ebf04b7fe9162b321c9610c7045074d261e96ef22fc1e88742","size_bytes":127429775,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny_0.12.1-rc.14_linux_arm64.apk"},{"access":"gitlab_access_required","architecture":"arm64","kind":"installer","name":"sonny_0.12.1-rc.14_linux_arm64.deb","platform":"linux","sha256":"6131d29c419b834b0345f9228dcc729dfd51c5f6e3f3362db5610dc12af2c04b","size_bytes":122233038,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny_0.12.1-rc.14_linux_arm64.deb"},{"access":"gitlab_access_required","architecture":"arm64","kind":"installer","name":"sonny_0.12.1-rc.14_linux_arm64.rpm","platform":"linux","sha256":"537a250775ae341c19489ad4aaedd6cf090ee21699c3f7175205ce1fa727d5f3","size_bytes":122283876,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny_0.12.1-rc.14_linux_arm64.rpm"},{"access":"gitlab_access_required","architecture":"arm64","kind":"archive","name":"sonny_0.12.1-rc.14_linux_arm64.tar.gz","platform":"linux","sha256":"e856de2569fc76252d6c157b827745360081b4a8faf158a6d46109bdda8039ba","size_bytes":71555956,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny_0.12.1-rc.14_linux_arm64.tar.gz"},{"access":"gitlab_access_required","architecture":"amd64","kind":"archive","name":"sonny_0.12.1-rc.14_windows_amd64.zip","platform":"windows","sha256":"718a9ffcfcfbafa76439cad8633188b43cb63ea70e556a174e54b97d0e0871bb","size_bytes":74493192,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny_0.12.1-rc.14_windows_amd64.zip"},{"access":"gitlab_access_required","architecture":"arm64","kind":"archive","name":"sonny_0.12.1-rc.14_windows_arm64.zip","platform":"windows","sha256":"5a655e361584256f018907b9ef5310313e615cbfcae4d713ae20525db2f6162e","size_bytes":67507684,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny_0.12.1-rc.14_windows_arm64.zip"},{"access":"gitlab_access_required","architecture":null,"kind":"checksums","name":"checksums.txt","platform":null,"sha256":"e1e4e3212b75f62f219140ebbb2923915a7bf76afff354bf15a1801d54fe4c39","size_bytes":2637,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/checksums.txt"},{"access":"gitlab_access_required","architecture":null,"kind":"signature_bundle","name":"checksums.txt.bundle","platform":null,"sha256":"cb127842f50d153f65b3a4cdb721e877f99785624db40c81b03d2ebe3fdb2005","size_bytes":9479,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/checksums.txt.bundle"},{"access":"gitlab_access_required","architecture":"universal","kind":"sbom","name":"sonny-desktop_0.12.1-rc.14_darwin_universal.sbom.cdx.json","platform":"darwin","sha256":"cb1186657b60cad0601a99b220ebd68ca54ddf07e0ead59116cbfed2a0f7d3ed","size_bytes":62411,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny-desktop_0.12.1-rc.14_darwin_universal.sbom.cdx.json"},{"access":"gitlab_access_required","architecture":"amd64","kind":"sbom","name":"sonny-desktop_0.12.1-rc.14_linux_amd64.cdx.json","platform":"linux","sha256":"26e52d6630d4b3e858b876bb72265bfb48096d5be333276e2c46017dfd2899b5","size_bytes":134933,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny-desktop_0.12.1-rc.14_linux_amd64.cdx.json"},{"access":"gitlab_access_required","architecture":"amd64","kind":"reproducibility","name":"sonny-desktop_0.12.1-rc.14_linux_amd64.reproducibility.json","platform":"linux","sha256":"be0cd6bea03497f5a3a8c4f06baec845a4c1927a32ce7173b2205581f687a8ca","size_bytes":664,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny-desktop_0.12.1-rc.14_linux_amd64.reproducibility.json"},{"access":"gitlab_access_required","architecture":"amd64","kind":"sbom","name":"sonny-desktop_0.12.1-rc.14_windows_amd64-installer.sbom.cdx.json","platform":"windows","sha256":"db4fa10d6437c22bcebf0e47ce071f3aae65f57e82705f8be146e17ea2e7f140","size_bytes":125929,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny-desktop_0.12.1-rc.14_windows_amd64-installer.sbom.cdx.json"},{"access":"gitlab_access_required","architecture":"arm64","kind":"sbom","name":"sonny-desktop_0.12.1-rc.14_windows_arm64-installer.sbom.cdx.json","platform":"windows","sha256":"5137540e1305fd134ddc69a19096c16babdd05d02bf9ec037446f5f90b4473f4","size_bytes":125929,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/sonny-desktop_0.12.1-rc.14_windows_arm64-installer.sbom.cdx.json"}],"channel":"prerelease","notes_markdown":"## Changelog   \n### Features   \n* 8ce2a3e38c578a115fab00cf30ad61baceffdf23 feat(app): show the startup re-host retry state in sessions.recover (SONNY-4905)   \n* e3cdf3b9930cb6b0432f4cee0e9b27341ae184ea feat(desktop): show the truncated session id with a copy button (SONNY-4927)   \n* 1d4eee8ed4afe3a3ecc734a12d274136374e0a83 feat(mesh): add the managed provider input-admission owner (SONNY-4942)   \n* 25d71174cfc02af540e6d80bb4a88512ce46dca4 feat(meshengine): bind a session primary owner to the managed lease (SONNY-4942)   \n* 0d33cd97986999bc689ed714dc4b3e19dc5a989e feat(runtime): keep only the live set and a bounded applied-key index (SONNY-4926)   \n* 2e6acf62189ba160d6638e937c0e366cd01be93e feat(runtime): retire settled protocol history and bound re-host memory (SONNY-5014)   \n* 0c2005f78a8e5f5258eb51fc265c6853ed43701e feat(sessions): bind a chat to a trusted workspace from inside the chat (SONNY-4927)   \n* 0009c21bd155b69b1cc3772f262817098189fef0 feat(workmanagement): add portable support layer (SONNY-4812)   \n* 26773894cd6448cfca4dc0f9b4e3cbf86b5a449c feat(workmanagement): ship native portable PM runtime (SONNY-4812)   \n* 6455db9a8a9b788f1fea3822f8081eb73440d4f3 feat(workmanagement): support multiple provider connections (SONNY-4812)   \n### Bug Fixes   \n* 62bd6116dd82f8d98f4fd1fa08395ee54cd1f113 fix(agentmail): wake an idle receiver for verified peer mail (SONNY-4946)   \n* 60621554309d3062428791efdaee56cdea41e8e7 fix(agents): tell agent_search callers whether a sub-pack can write files (SONNY-4829)   \n* d68d9576489758e58416cb133b0c8d69124a6f53 fix(app): fold restart recovery reads in bounded journal pages (SONNY-5019)   \n* 2263ea6880c2a08786143e8b4095185cf4f71284 fix(app): retry a failed startup re-host with a bounded backoff (SONNY-4905)   \n* 3938071f5bf1fadde09a138302cca68daac319e2 fix(app): retry a hosted re-host until it succeeds and audit journals in the background (SONNY-5045)   \n* 954764a444da71124fd01c101c08d9a34626799d fix(benchmarks): reseal the TCE fault report for the go1.27.2 toolchain (SONNY-4927)   \n* 70b13e409538ee8e095dac8e28cac37a4d277f9a fix(build): install the macOS desktop app bundle (SONNY-4921)   \n* 87960700e6a96b3d7062b3f796f9cdb8d4d1c282 fix(build): stop the isolation engine and remove read-only state on uninstall   \n* f954365d02e466ed3d094866248a880d2b7c5dd6 fix(catalog): admit tool_exec arguments against the target's own schema (SONNY-4937)   \n* 2ac91ddad74c562beed0ff73fc0111bc0d939a9e fix(catalog): certify tool_exec results against the target's own output schema (SONNY-4940)   \n* d29e43913880bb5eacc0c2f143d1fdc7e582bfbc fix(catalog): certify tool_search rows that carry MCP server metadata (SONNY-4945)   \n* 86f9d30c66c98fd50af6c18251fbf01afd8fd42d fix(catalog): certify tool_search rows that carry an input schema (SONNY-4941)   \n* f75394983e45ddaee4409b45d6698245103c6bf6 fix(category): never seed or route the template's placeholder sources (SONNY-4640)   \n* c832e2d1eedc71376ff819317c954c4fc10950fb fix(ci): canonical, admissible test TMPDIR on the build volume (SONNY-4927)   \n* 778528819dbd0b22a79dc7fb7d43c907b843aef0 fix(ci): classify the nativequitqualification build tag in lint-variants (SONNY-4927)   \n* 2660abce808c249cae65523554255b0d559af25e fix(ci): create no publication jobs for prerelease tags (SONNY-4578)   \n* 4a6841b978311c1a3316af3f47a1db9782393c78 fix(ci): export the test TMPDIR in the script and budget full lint runs (SONNY-4927)   \n* 2f5360f123adaf0e17e944ae8ae68e5ec36b654e fix(ci): give cue-handoff's docs/user run 45m on slow kvm runners (SONNY-4578)   \n* 1a45c696c5a4e1491ffa7e9efd61615e7774b91d fix(ci): give docs/user 45m on slow kvm runners (SONNY-4578)   \n* bbcaf40cdc7835bbfd5711d3b3cc8f7c72f6d37b fix(ci): give drift-contract room to finish the shard check (SONNY-4927)   \n* 16039e81a336df2efc6830be7e62959f1b119a52 fix(ci): give drift-guards room to upload its module cache (SONNY-4927)   \n* 28ae01e8f39f3bfa17ca09e298fb8c1c7937648b fix(ci): give go-test shards a 150m package deadline for slower kvm runners (SONNY-4578)   \n* d4a4e53d02056439671c7150165becbb81b4e681 fix(ci): give the SQLite go-test shards 150m on slow kvm runners (SONNY-4578)   \n* 5b75b1ede3461d724b68712e19badad46f51aa61 fix(ci): install the pinned pnpm with npm on node:26 images (SONNY-4927)   \n* a9feae652ac991315234fad16ff566a37f90641a fix(ci): keep the test temp dir short enough for Unix sockets (SONNY-4927)   \n* cba2563240f890117ed82ff8f8264a45b154f390 fix(ci): let a newer main push cancel go-build and the drift gates (SONNY-4927)   \n* 025a51161ff7cb8282339b645ce4c6b2a42240fc fix(ci): lint linux-prod and linux-nocgo in separate verify cells (SONNY-4927)   \n* a5d300f7ab7e500ff86148107896561cf157620e fix(ci): qualify proc v0.2.1 and synapse v0.3.3 in the CUE isolation gate (SONNY-4927)   \n* 9ef00aef31661be4d8febcc682fe3db3e3f47cac fix(ci): qualify proc v0.2.3 in the CUE isolation gate (SONNY-4927)   \n* 7b209e64e4f116165615e9d42c112f986656f92e fix(ci): run the production fixtures on a filesystem with O_TMPFILE (SONNY-4927)   \n* 9170ac49c3915c35ad2abaaba3bad26c50ce1e8a fix(ci): set the Windows Artifact Signing certificate subject (SONNY-4575)   \n* d31b7c56949a89ec0865c2227e01459c24b6c295 fix(ci): upload prerelease desktop packages under tilde-free names (SONNY-4578)   \n* 05dc3f5d67aff1ed04c05181b0f79d787ec06cd3 fix(cli): onboard a gateway group through its -v1 twin when both are listed (SONNY-4829)   \n* d5c7ed4c8e2cb1c46c5d0b03ff435b92f434371f fix(cli): run the MCP doc_* round trips on an O_TMPFILE workspace (SONNY-4927)   \n* 895e7be6adcfcfc55c70d74fe48d99e67ced04c7 fix(control): observe the newest migration in the one-behind read test (SONNY-4927)   \n* b27564f2da3301607d12c93b3129f466dc39715d fix(control): restate the sensitive_read effect in control/domain (SONNY-4927)   \n* 0425278e9ee4dbcf2d95bd50959227ede2e44701 fix(control/sqlite): keep host lease renewal and fence reads off the bulk write path (SONNY-1349)   \n* 297f65de26ab7d52960d099d502b67f5ebaf0945 fix(controlauth): grant managed sensitive-read tools under an explicit tenant-policy allow (SONNY-4939)   \n* 541a2a1c597ef66eb9ec03bcc65e2acb4ed3a6c8 fix(deps): restore the pinned Geode digest and stop unpinned bumps (SONNY-4927)   \n* 391c61409fe2393ef7092909287eec86131952be fix(deps): tidy go.sum and gate untidy module files at commit   \n* b7a009a8088d372e6b4522bec8b9eba8d3bd5495 fix(desktop): admit packs installed after the daemon started (SONNY-4921)   \n* a5883955a57e873a0e894a2abb68e91a827e950f fix(isolation): bind managed cells through the session's verified realm lineage (SONNY-4932)   \n* 018b33099daa968d1edacb1e2f1224e776c42631 fix(isolation): bind managed execution authority to the verified managed identity (SONNY-4934)   \n* 962a0cc8649ae4cc11885065d0db5ee6f68ff4ec fix(isolation): hold a busy day in Sonny's default Docker journal (SONNY-4938)   \n* e767f7f5c36487efbf9bd16f0b99d4e1d2a3d780 fix(isolation): pin realm runtime facts in managed session dependencies (SONNY-4928)   \n* 1c610951af2c253844d82494639a39ee984f3967 fix(isolation): re-verify live managed realms against recorded history (SONNY-4925)   \n* 76fdda3844ebe9a49ed0f84cd4f9e907a0f5bce4 fix(isolation): renew managed realm freshness with signed realm renewals (SONNY-4930)   \n* e8667f2f4be2fa8c66027247a37367321f0a4d34 fix(isolation): verify managed realm lineage incrementally and lift the 4096-record proof cap (SONNY-4936)   \n* 516a627d2ab5e4b4d60a7d549235872abdfdc541 fix(isolationruntime): refuse a revoked structured capability before dispatch (SONNY-4927)   \n* ee2fbd170581774b61844fd971bd1d9c56455512 fix(lint): name the project tier and capability result key (SONNY-4578)   \n* 59545c0544b362483c24058b9e8c5713c2c6f333 fix(mcp): always admit Sonny's own sonny-internal server without an allowlist entry (ENG-5221)   \n* d343bc4ecbc612fc67103ec2e477236d7a732eb3 fix(mesh): answer a peer for a closed recipient as closed (SONNY-4943)   \n* 1dd7e88af284ff2a84a1085f5099ba656b88df4b fix(mesh): back off agent mail resends and stop them on a received receipt (SONNY-4944)   \n* f83d0a2e4eddbc66b0bb69134083a399ea700246 fix(mesh): fail a hosted turn whose output copy falls behind (SONNY-5013)   \n* 6722a449b1a93b0738bcdb2ef5f74af22aa208df fix(mesh): give each session stream its own copy of the output (SONNY-5012)   \n* b6e3a9e3a18212b60f9a3749d106fa4d8bb422ca fix(mesh): give the managed peer-wake tests slow-runner headroom (SONNY-4578)   \n* e35d35b5bb3b7b6798fa550e1b24ecf69bda851f fix(mesh): interrupt a managed session whose host lease is lost (SONNY-4943)   \n* 256adf660dcdcc133705b1fd024d9e94fd35e744 fix(mesh): issue a real control-plane grant for every managed catalog call (SONNY-4935)   \n* f38cb60c9ac51da5093b091b99bfdc8aadf1fc63 fix(mesh): keep sealed turn prompts out of the turn run aggregate (SONNY-4947)   \n* ba1d20929722a842c2cde1db3ff8fe11d7fe775f fix(mesh): re-host a Desktop session whose lease lapsed with no competing holder (SONNY-4943)   \n* 7ef53db0decae8b5ba7533561dc63a2de06351b9 fix(mesh): re-observe a peer grant until its mirror is observed (SONNY-4929)   \n* e57a9a0d2fb81211f1b124c660cffdf7d3ff9f01 fix(mesh): record managed operator turns and wake idle receivers (SONNY-4942)   \n* 5f227babc7bcfae3ad5b5346fe584ce445f4e9fa fix(mesh): seal the reply and tool results of sealed turns in their run aggregate (SONNY-5010)   \n* 63d8c3b84574832268857e973edb113ac400d751 fix(mesh): settle a managed node's sessions as INTERRUPTED at restart (SONNY-4931)   \n* 851b704dbccdf1de3664655eb67e7aea54937206 fix(mesh): settle terminated managed sessions and cancel turns (SONNY-4948)   \n* 98ea0a8427f994c8d61f70cfd799c34c3e3a82a6 fix(mesh): stop resends to a closed recipient and cancel the sender copy (SONNY-4944)   \n* cb324cfc4a354240d8197db065f6f63dd3ebba35 fix(packaging): make fresh-install work and repeat on macOS   \n* 5672d5374cdb1f13268e4d636d0bdf1bb097c843 fix(packload): validate CheckInheritance against llm v0.45.0 (SONNY-4927)   \n* 80aae863a0e10dd7cc3146d42f7b4a6421cf48d4 fix(packload): validate CheckInheritance against llm v0.46.0 (SONNY-4578)   \n* 51d17241e5b3a06632c463656a7fce2b9561c815 fix(packs): stop startup pack fetches blocking startup or dying silently (SONNY-4829)   \n* a975de0900a58b5d841f15ddebbc2f3d9c5e6a35 fix(planbaseline): let the recovery report settle journal records (SONNY-4927)   \n* 197c694cdf7552e4639cb9a2cc168c5c0b32ff8b fix(projection): settle session state from an external writer's turn activity (SONNY-4113)   \n* b195cd335cbd4e8c7cb1ef34e75272ced1fd85c9 fix(provider): send a catalog row's api_model and params from every session binding (SONNY-4829)   \n* 35b2d1dcc05bcd383eae4a5b8f881bd14200dbbf fix(release): give Linux and Windows desktop builds a two-hour job budget (SONNY-4578)   \n* 3bb991a9050d56950d8012388f12336af5411335 fix(release): name and depend on prerelease desktop Linux packages by their deb/rpm version (SONNY-4578)   \n* b2e59bd77ecc1bf390d221aa730aa1105f30f012 fix(release): publish prerelease desktop deb/rpm assets under the release version's dash (SONNY-4578)   \n* aac88ad4bf4e21b76fae573c490bfaf703989a16 fix(release): put the macOS signing keychain on the search list (SONNY-4578)   \n* a603b6eae6cc942aacf816748f31a93dd7ad9978 fix(release): unblock the desktop signing candidate on macOS and Windows (SONNY-4578)   \n* cf57ec852b788ef666e8247bbe3699e80d2bff58 fix(release): verify the WebView2 bootstrapper against pinned Microsoft roots (SONNY-4575)   \n* b90b95623cd00bd8c997ff9703f74942e33bf3c5 fix(routing): classify a local param refusal as policy and say what to change (SONNY-4640)   \n* d2e1e08190f58c0fa2a8582edbd762aed8f8377f fix(routing): fail over to the next candidate on a capability rejection   \n* bbfaa9a1ea381129bf9388ab2d7aede51b64aece fix(routing): shape reasoning effort for tool-bearing calls per deployment   \n* 6477b684d5b34b510540550ef52a7d940bd486ec fix(routing): stop fallback targets inheriting the primary route's reasoning effort   \n* 22edc37c29ac4b2e8e6c8484c27d313e77ef8167 fix(runtime): end a workspace-less policy denial with an actionable outcome (SONNY-4927)   \n* cfde30f6350e1bb2d033bace646ed6c1f0be6f57 fix(runtime): settle a relay's conversation with the task it forwards (SONNY-4926)   \n* 0633af9451d0a4a416288e42b8643c65d039c18d fix(runtime): verify a resume from the verified head, not the whole journal (SONNY-5045)   \n* 17af8c9bf4a377e2999e1e448cc8a308af9c7597 fix(runtime): verify a session journal from its verified head (SONNY-4905)   \n* b505fe35b990a6e42627c1ce8281020266e92940 fix(runtime/hostlease): treat slow renewals as unconfirmed, not lost, until the lease expires (SONNY-1349)   \n* 7afa6b7b730d212e8c5376f9ed8ff950a1acb411 fix(runtimeworker): wait briefly for a session's previous fence (SONNY-4927)   \n* 99a39bf5dc27365e75ffc3d654bb2169de17c9b8 fix(store): back up every event of a long runtime journal (SONNY-4905)   \n* 1f42dc66b203b5f09054e752253ae66e507ad8fd fix(store): keep the re-host heap test out of race builds (SONNY-4578)   \n* c92e6752feb4111aa8c6b6ad72da3584a368b1fd fix(store): retry transient fixture database drops within a two-minute budget (SONNY-4578)   \n* c66708382312e8ae45138b83f9b7669798ed1125 fix(supervisor): keep serving when a client hangs up before Accept   \n* d7b8d3f8e7f38c52d3e90936e39f2604c90699e6 fix(target): learn which reasoning remedy a deployment accepts beside tools, and stop on none (SONNY-4829)   \n* fa771e7f5f0326b9e8bcf37387a6136711aa6a91 fix(target): retry a tool-bearing turn with reasoning_effort none when LiteLLM rejects the pair (SONNY-4829)   \n* 73231952b83b1e533f33b2b992471e0ade992d96 fix(test): reconcile drifted parity, CLI and mesh peer tests (SONNY-4927)   \n* 1e8d4526b540e3fb9a371e8d95296ebd2aefca24 fix(test): run the resume measurement as a smoke check instead of skipping (SONNY-4578)   \n* 0b0766d26385c838897181c31d027a004a2325de fix(tools): keep MCP out of the work-management model surface (SONNY-4578)   \n* 514580021e63f224dc4b1daa0753f441d7d1675a fix(tools): provision private staging for in-process workspace scopes   \n* 76af4c6e99857be3f093700553b1ccffa0aa818c fix(trace): name ScanError files relative to the scanned root (SONNY-4927)   \n* 4a1278ff9d2c7a27afdfcd77c8791b77d3fa09c2 fix(trace): record the child's own identity on agent_session (SONNY-3592)   \n* 309facd3cd0d9c087f052832e5e23aba9b5d45f4 fix(tui): admit picked and pinned models through canonical routing   \n* d66468d5f5bc5634e862f8a2d0d232eb24669058 fix(tui): authorize primary factory against served profile identity   \n* 281a23e06212b33185c474d5edb9a9d2ffcb4c3d fix(tui): bind picked api_model rows through canonical routing (SONNY-4829)   \n* afbbd4bfdbd6a39044ed28863501b2c946616916 fix(tui): fence turn activity with the host owner the turn ran under (SONNY-1349)   \n* 13413f10b72ebf71dccf565997e31b7c76225906 fix(tui): keep local turn activity over a stale daemon projection (SONNY-4113)   \n* b01535894bcf59652127579af83a365dd39d67aa fix(tui): record external-writer turn activity in the session stream (SONNY-4113)   \n* f6fb31d953f56055052f69b2b261205fc8339de7 fix(tui): recover a sealed external writer owner on a new lease generation at the next send (SONNY-1349)   \n* 562c57a713b2a83f41cac82a09f075859bd6401f fix(tui): send the TUI's route switches to its daemon session row (SONNY-4113)   \n* c1d23fd01d7720e7f0e1d0a521368e2fa62dc2ee fix(ui): apply a same-id pack switch whose content changed (SONNY-4927)   \n* fab72c71aa83f5292d8a981da253ec5766196f5e fix(ui): filter the environment start picker by the latest running set (SONNY-4927)   \n* e250dc697929d70a99adb7283775aa0ab1035430 fix(ui): keep a session busy while its sub-agents run (SONNY-4113)   \n* 42da019f7c41773337349eda3b39af96785fc83b fix(ui): keep text streamed before a cancel in the interrupted reply (SONNY-4927)   \n* f223b05dcb6dc1bc6550e2511252b3103d23fa7e fix(ui): keep the shown plan revision rendered while it is re-read (SONNY-4927)   \n* 777a1de75cf78ca78b02949cc1e2614b34b89b2a fix(ui): re-list New chat models after Settings closes (SONNY-4921)   \n* 179ef0aff66545127289f33e315f7a692013672d fix(ui): restore the frozen ui install and the /jump and /split gates (SONNY-4829)   \n* c8bd4bcc7c9da0dd3fbeec3f0e5d0b4114abbd64 fix(ui): stop calling a /models selection a pinned model in the routing log (SONNY-3150)   \n* 375bee33a766eeaa8824a9d896cf1bc4b9bb61d9 fix(workmanagement): satisfy repository gates (SONNY-4812)   \n### Performance   \n* 52baf6680dd01a8994b3ca9fe0a72c6bc969fa2f perf(ci): let precommitci-authoritative read the go-build caches (SONNY-4949)   \n* bc61baf7b019b0138b8bf56183b6db7d948a203c perf(ci): publish docs beside validation, only when docs change (SONNY-4950)   \n* 39a702476392dadaf8a4c54cb619e7a039392ffe perf(runtime): verify the journal once in InspectRecovery (SONNY-5019)   \n* 221227107e94ca2bbeb2a6e3922458a25453b29e perf(store): verify a long runtime journal within the re-host bound (SONNY-4926)   \n### Others   \n* 9222cf675a3fb5306bf98b7d8ac4a6ff026a713a Merge commit '050a08f6d1015697f1588138bc353435761f839b' into codex/direct-merge-197-606215   \n* 050a08f6d1015697f1588138bc353435761f839b Merge remote-tracking branch 'origin/main' into codex/sonny-4812-4815-support   \n* b9bec7e1e052a4ec49cf56410836bfa896847ae6 Merge remote-tracking branch 'origin/main' into codex/sonny-4812-4815-support   \n* 2ea6f370bb90ce71a1bee620ab14fdea774e6971 chore(release): bump to v0.12.1-rc.14 for the desktop signing candidate (SONNY-4578)   \n* 63323505044793078ee6af2e626ac1ea1a648ed8 ci(release): sign Windows desktop builds with Azure Artifact Signing   \n* 371e6385d90528f6d8272e0ea0258c92e198cf25 docs(architecture): record resume verification from the verified head and its security decision (SONNY-5045)   \n* ca7ef186a728e5cf3d09a913c52255ecccf4f57c docs(codeindex): recheck the codeintel contract against llm v0.42.0 (SONNY-4927)   \n* b13828a74513c7bd4ca3112988ec7b4c74243075 docs(messaging): record the blocked stage 2 canary fourth attempt on 63d8c3b84 (SONNY-4652)   \n* 171fcc7a3241d6f0cae65ee7864923395adbb414 docs(messaging): record the blocked stage 2 canary rerun on e707f9e62 (SONNY-4652)   \n* c1e4347c462eafcce9424f8255d2dd168ca9fad0 docs(messaging): record the blocked stage 2 canary third attempt on 1c610951a (SONNY-4652)   \n* 23fd2abdbd27fdde43e4eb847f6dc6eb077be4a4 docs(messaging): record the stage 2 canary eighth attempt on 62bd6116d (SONNY-4652)   \n* cb65030f5282accbd44d5b43708c1d079b8486ee docs(messaging): record the stage 2 canary fifth attempt on f954365d0 (SONNY-4652)   \n* 5827d5e91de90bb6d0f6cc052a493399d32c8f57 docs(messaging): record the stage 2 canary seventh attempt on e57a9a0d2 (SONNY-4652)   \n* ac0efafdda892852f8af1efced73592bd05335e0 docs(messaging): record the stage 2 canary sixth attempt on d66468d5f (SONNY-4652)   \n* 8024bf9a640ea266029def02c6ba5fcc72373e4d docs(runtime): describe the live set and the applied-key index (SONNY-4926)   \n* 509c1da45e2c16b89aec5b6a273f048a98f53ebc docs(ui): record the npm-installed pnpm 12.11.2 on node:26 CI images (SONNY-4927)   \n* 8325849e0507c2f8d2c6f1398e0bbfbfbe687f23 docs(validation): record the live recheck of the session stream fan-out fix (SONNY-4652)   \n* 7fc4cc58b4a3a5a3197161a9b4c1668fa4c42d8b refactor(workmanagement): reuse named MCP instances (SONNY-4812)   \n* 8adbbd510ecba209de5263f01cc355ad5c74207e test(a2a): cover the native relay pump's dispatch, retry and answer paths to restore the coverage floor (SONNY-4578)   \n* da34adeb11df4e2aee9a021eeaa30949daa5c095 test(a2a): keep the federation soak's TLS certificate valid for the whole run (SONNY-4647)   \n* a5c6ba1916197c946caeb11384884e3836d78635 test(a2a): keep the relay's held forward below its I/O bounds (SONNY-4927)   \n* bb274870f02893d09e7a161eb7384b1e29b3761f test(a2a): release each restart's runtime in the federation soak (SONNY-4647)   \n* ea873941532e572ed6a9a216d792ba1af29b0295 test(a2a): report p99 and each task's latency in the federation soak (SONNY-4926)   \n* b5f11891285ff221e139bd58e4cce82a08e9af6a test(a2a): report task latency in the federation soak (SONNY-4926)   \n* 2629c082fed08e06aea44f1196d4d94592fd8c5b test(a2a): size the restart journals for the race detector (SONNY-4927)   \n* b6dc9d41c9a70dc297a682f0ac00ac9e05dfe1a4 test(agents): reproduce agent_search hiding whether a sub-pack can write (SONNY-4829)   \n* 757efa844eccacfc0d0e4a20b2f7598a3475549f test(app): allowlist the control-store compat reach in the facade guard (SONNY-4927)   \n* 3c0ad015f575c5cda071f8de10d4120a44ade7fa test(catalogruntime): cover dispatcher accessors and history recovery to restore the coverage floor (SONNY-4578)   \n* f50c3bcb9f1300cb86fc5102fe6e15f6a4a98297 test(category): reproduce template placeholder sources being seeded and routed (SONNY-4640)   \n* 9b56910dd900a6d3a896d08965eb4ec8ab036a51 test(ci): reproduce docs/user timing out on the slower Lab Servers runner (SONNY-4578)   \n* c1378390481af3316744f4da7994abe01a473aa9 test(ci): reproduce publication jobs created for prerelease tags (SONNY-4578)   \n* e63e1a376f5e870eb16a536a9ebcfcc18559364c test(ci): reproduce rc.7 go-test shards hitting the 90m package deadline on Lab Servers (SONNY-4578)   \n* 4e264565dc678d36969e4ee8bc17807fb5b54781 test(ci): reproduce the rc.7 release upload refusing a tilde asset name (SONNY-4578)   \n* 185661c09a05cb89b5248b4c2903159f2e8754cd test(cli): reproduce Desktop onboarding binding legacy gateway groups over their -v1 twins (SONNY-4829)   \n* b9e42ab07d81f4480e5bc270d9ff106562c3207a test(cmd/sonny): realign release-blocking tests with intended behavior (SONNY-4927)   \n* cfa924e1845d423584bcd86a9ffa6985db479c67 test(codeindex): widen the store bound for the checkpoint kill driver (SONNY-4927)   \n* cdc6b5eff50c97c143c7c9cb56f310b9e04bd048 test(control/sqlite): reproduce host lease renewal queuing behind bulk writes and child reconciles (SONNY-1349)   \n* 948a4f755c9dc658af1c83b5134ba7827cbdfb77 test(envelope): track mesh push progress under runMeshPush (SONNY-4927)   \n* 8f080d02ed77c79556f1372092ca3c4c24f4e2f7 test(hooks): cover ValidateYAML, BlockResult canonicalization, and UnwrapTool to restore the coverage floor (SONNY-4578)   \n* 467f5e4d5eeeb37e723a969be0b0e9e2542cc2c4 test(isolation): pin the lineage contract for native and VM realm renewals (SONNY-4933)   \n* afdef9885033d14cf53732e62406aef769efeb05 test(mcp): reproduce Sonny's own sonny-internal server refused by the MCP allowlist (ENG-5221)   \n* 5adcc670c9f7332b14532b4b29fd17c7ca763c93 test(mesh): read portable child mailbox results from the tool_exec envelope (SONNY-4940)   \n* eac54fb6d4f0ea83b4201843dc251753aa54c46e test(mesh): reproduce Desktop sessions interrupted for good when their lease merely expired (SONNY-4943)   \n* 44c96ff973827ee593d2f22ccebc675081a1e24a test(mesh): settle wake binding charges before checking holds (SONNY-4927)   \n* 184f4bb6129c237907450ce98fb1989706874e17 test(meshengine): keep message recovery inside the receive hang guard (SONNY-4927)   \n* d29f1037c44d9349808b0ffd75f63351e82a7d05 test(packcompile): route policy decision_policy packs like governance (SONNY-4927)   \n* 1e484a4fc5dabe8c0778161eb8769107d8bd7f4f test(packs): reproduce a startup pack fetch killed with no reason (SONNY-4829)   \n* d66b99c04b7a7dbf953ba6219a265641379475da test(projection): reproduce an external writer's turns never settling session state (SONNY-4113)   \n* fcff5a9c49c17dc00684af194123cc6807818ec1 test(provider): reproduce hosted session sending the catalog id instead of api_model (SONNY-4829)   \n* a9ff6a0d8dfd41b2922f65d797e9f3b771bac294 test(release): reproduce prerelease desktop Linux packages failing their contract (SONNY-4578)   \n* 8063325eb23dbec87d5e2e11228b6105727f36bb test(release): reproduce rc.5 desktop builds exceeding the 60m job timeout (SONNY-4578)   \n* 2aa05131deca238d7222222bf341b14aef42b8b4 test(release): reproduce rc.7 build-release failing to attach the tilde-named desktop packages (SONNY-4578)   \n* 621fff543f9a6ec386401b23af5bb931aa40c721 test(release): reproduce the v0.12.1-rc.1 desktop signing failures (SONNY-4578)   \n* 4319b8b99fe212056b4b1be5ac194b842ec03a5f test(release): reproduce the v0.12.1-rc.2 missing Developer ID identity (SONNY-4578)   \n* e288f8a687dc4fd9a7e7dd04d6c677b66a643c6d test(relverify): mirror the homebrew-publish v1.55.8 include (SONNY-4927)   \n* 0dee8caa026c4eb7f203f2793847b54cd6bb8174 test(routing): reproduce a local param refusal reported as malformed_response (SONNY-4640)   \n* fd688d431acea03deb5137f7c2e67ce9d6fb6bd6 test(routing): reproduce primary reasoning effort leaking to fallback targets   \n* 2b577e73689dff4d95b0d6d427ab1690fa68a393 test(runtime/hostlease): reproduce one slow renewal permanently sealing a host owner (SONNY-1349)   \n* 9220cd0a84cc70efcf940a4c5699b995c670fe04 test(security): skip the proc-environ probe when the runner holds CAP_SYS_PTRACE (SONNY-4068)   \n* 41486ae9824347ccd867d2c286f62d0b1aea23c3 test(sessions): reproduce Desktop chats that cannot choose a workspace (SONNY-4927)   \n* a660a64c569ef56963b2575c2d6a179f5f7e09fa test(sqlite): run the verify measurement as a smoke check instead of skipping (SONNY-4927)   \n* 2b744200fad4891a29d8f4f2d3a11184304cf3cf test(supervisor): reproduce desktop startup exit status 4 on macOS   \n* ca4402ba6f0fb945dd92dfd3600ccdd3ab0e8c00 test(target): reproduce Desktop turns failing on LiteLLM tools+reasoning_effort 400 (SONNY-4829)   \n* 98479345c5df35cf18b6d71b86fb6c0e2a40e0a5 test(target): reproduce the tools/reasoning retry poisoning astra with a rejected none (SONNY-4829)   \n* 60023c5ac6794178fe29adceb521186ba998a995 test(toolefficiency): check the CI Geode service against the pin (SONNY-4927)   \n* 6e4cca85f2b361ae61a03397fc9e642e8bd9905c test(toolefficiency): reseal surface parity for the wired history stage (SONNY-4927)   \n* 7d59a7498d0615098ba48351a323ae92f820c1a9 test(toolscope): exempt the activation presentation schema check (SONNY-4927)   \n* 4e3bd743575fdc2307ca89de01a2281b80472894 test(trace): reproduce agent_session carrying only the parent's identity (SONNY-3592)   \n* e9e73a9dac3fadf92ec71ed60216b6251746c3e8 test(tui): reproduce a sealed external writer owner refusing every later send (SONNY-1349)   \n* 4485fdbfc37b202bd96024db953e482b21a366d4 test(tui): reproduce picked api_model rows bypassing canonical routing (SONNY-4829)   \n* 82453e8b87960eea3a1bc20de1de3e09bcc31ea2 test(tui): reproduce picked-model bypass of tools_with_reasoning gate   \n* 7931994c61ea14b32ea51276e05658f0177f5213 test(tui): reproduce primary authority refusal under profile tenant   \n* 61c51d21b5aad4265489a6bb6c11458d694901ac test(tui): reproduce turn activity refused after host owner recovery (SONNY-1349)   \n* 5d49f080da9462636b2b8b1b2ef6955f9733a6d7 test(verdict): cover claim validation and signer key checks to restore the coverage floor (SONNY-4578)\n\n","product":"sonny","published_at":"2026-10-16T16:35:27.129Z","schema":"sonny-release/v1","source_commit":"2ea6f370bb90ce71a1bee620ab14fdea774e6971","tag":"v0.12.1-rc.14","verification":{"checksums_url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/checksums.txt","historical_archive":{"checked_at":"2026-10-26T04:26:19.301984+00:00","newer_released_at":"2026-10-25T16:41:03.251Z","newer_source_commit":"eaf885551c5834f4bee56ea48be7b9eff768c66d","newer_stable_tag":"v0.12.8"},"scope":"Historical release: file hashes match the authenticated release checksum manifest and GitLab package metadata. Only assets with a separate anonymous streamed proof are classified as public. GitLab links require project access; neither anonymous availability nor signature verification is claimed for them.","signature_bundle_url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.12.1-rc.14/downloads/checksums.txt.bundle","signature_verified_by_importer":false},"version":"0.12.1-rc.14"}