{"assets":[{"access":"gitlab_access_required","architecture":"amd64","kind":"archive","name":"sonny-api_0.9.0_linux_amd64.tar.gz","platform":"linux","sha256":"0ff7d12d29c1fb0f48ddf887736ef8f4268e46ec157646f62a18a31fe9681b24","size_bytes":9694978,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny-api_0.9.0_linux_amd64.tar.gz"},{"access":"gitlab_access_required","architecture":"arm64","kind":"archive","name":"sonny-api_0.9.0_linux_arm64.tar.gz","platform":"linux","sha256":"364b61b99c33144329d4a41b5784ac4cce08ab733290f33b8989d47fd9500fe5","size_bytes":8843253,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny-api_0.9.0_linux_arm64.tar.gz"},{"access":"gitlab_access_required","architecture":"amd64","kind":"archive","name":"sonny_0.9.0_darwin_amd64.tar.gz","platform":"darwin","sha256":"7a04ea0315e1726b600d34a9095cb593890b1931cae2ceb90f6c38286632d444","size_bytes":23589482,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny_0.9.0_darwin_amd64.tar.gz"},{"access":"gitlab_access_required","architecture":"arm64","kind":"archive","name":"sonny_0.9.0_darwin_arm64.tar.gz","platform":"darwin","sha256":"542297c3c40d3bfd0327c03b5e0b76f175d016808184a33c84c94d820c04c765","size_bytes":22313222,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny_0.9.0_darwin_arm64.tar.gz"},{"access":"gitlab_access_required","architecture":"amd64","kind":"installer","name":"sonny_0.9.0_linux_amd64.apk","platform":"linux","sha256":"13b3bf807aa845e810097857ca2385194c5aa795eb087d79df145ac2da46bb05","size_bytes":35767574,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny_0.9.0_linux_amd64.apk"},{"access":"gitlab_access_required","architecture":"amd64","kind":"installer","name":"sonny_0.9.0_linux_amd64.deb","platform":"linux","sha256":"666ab762f8dc04086937c05c8cff9b1e9ecff70176db4836aeca2ce0a31388b2","size_bytes":34288650,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny_0.9.0_linux_amd64.deb"},{"access":"gitlab_access_required","architecture":"amd64","kind":"installer","name":"sonny_0.9.0_linux_amd64.rpm","platform":"linux","sha256":"85eef1cf578fbaa6daf2f86829e50dc65de0761de7c57cfef4fda6eaf0cfd9b0","size_bytes":34304226,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny_0.9.0_linux_amd64.rpm"},{"access":"gitlab_access_required","architecture":"amd64","kind":"archive","name":"sonny_0.9.0_linux_amd64.tar.gz","platform":"linux","sha256":"343a11811ade8706a6e2ece3c89c8f7488b335edc98a69c3e73f209be0c7281e","size_bytes":24613235,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny_0.9.0_linux_amd64.tar.gz"},{"access":"gitlab_access_required","architecture":"arm64","kind":"installer","name":"sonny_0.9.0_linux_arm64.apk","platform":"linux","sha256":"f7ecbe72ce141e7fc312186ca8bbde800384092f8e8250683b3ae0a367e79ece","size_bytes":32865081,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny_0.9.0_linux_arm64.apk"},{"access":"gitlab_access_required","architecture":"arm64","kind":"installer","name":"sonny_0.9.0_linux_arm64.deb","platform":"linux","sha256":"d48efba60c27e975d7af9b3127a111aa4cf3b7a0a8539ddb959ac9b9236b07ff","size_bytes":31531714,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny_0.9.0_linux_arm64.deb"},{"access":"gitlab_access_required","architecture":"arm64","kind":"installer","name":"sonny_0.9.0_linux_arm64.rpm","platform":"linux","sha256":"c927c977a0b708e6f4a88517eaed5ff1f77cceb9f7444c09c18e824ae76fd25a","size_bytes":31545919,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny_0.9.0_linux_arm64.rpm"},{"access":"gitlab_access_required","architecture":"arm64","kind":"archive","name":"sonny_0.9.0_linux_arm64.tar.gz","platform":"linux","sha256":"07ad9bc47deb95d17e5016c0152a5373fb2f9440cb8f9adc98c2c645afc61d41","size_bytes":22707062,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny_0.9.0_linux_arm64.tar.gz"},{"access":"gitlab_access_required","architecture":"amd64","kind":"archive","name":"sonny_0.9.0_windows_amd64.zip","platform":"windows","sha256":"68458486bf104de3fd94c995fbac06a03744134207646f6f0d804e136d0a9bb2","size_bytes":23505497,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny_0.9.0_windows_amd64.zip"},{"access":"gitlab_access_required","architecture":"arm64","kind":"archive","name":"sonny_0.9.0_windows_arm64.zip","platform":"windows","sha256":"f3d899d66d3929062cdce1edaaee7450110e469ae31be856e6c84c2ee1aad221","size_bytes":21260064,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/sonny_0.9.0_windows_arm64.zip"},{"access":"gitlab_access_required","architecture":null,"kind":"checksums","name":"checksums.txt","platform":null,"sha256":"884d68533d6a517f3b1a8e7782234466b0660c90be7f49e40c1cf001613a299a","size_bytes":1348,"url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/checksums.txt"}],"channel":"stable","notes_markdown":"## Changelog   \n### Features   \n* f02797c3313dd04d8f092c3e72f3faa788a33da0 feat(constraint): mediate scope-aware spawn through audit gateway (B4)   \n* 546d29e4ec9cd74d89a28aab153e797edd0a69a7 feat(control): L3 evidence + signed verdict + merge gate from critic review   \n* 272b42752e17984baa127b48e88bbf7cef15df83 feat(control): feed control-plane Task lifecycle from scope-aware spawn (L2)   \n* d6c3ee5d84dcbd7fdc6e38cb73114c59dff313c5 feat(control/store): add Postgres backend for the control-plane store (L4)   \n* d800a852be4fd4ac834352f96118bcf0aae6b236 feat(pack): red-team eval corpus for sonny pack eval (L5)   \n* cc16337608abf05323769afefc02011d7a9511d3 feat(routing): bootstrap the routing coordinator stack behind SONNY_ROUTING (L0)   \n* 73fba4b8c17702fd77614bf8209f58e6d45bc3ca feat(routing): request_capability tool — vendor-neutral use_profile replacement (L1)   \n* 9232071f6d6428a1d87b5faab0765c9944bf986f feat(tools): render full tool schemas as JSON Schema   \n### Bug Fixes   \n* 56c57efc0fe68c898248558abfac09fcec3cb507 bug fix: classify idempotency-key violations by column, not bare UNIQUE code, to avoid silent wrong-task return   \n* d9083f4ea3ef1063062a2ef6b2a5f5f235368b72 bug fix: default resolver clock to UTC and resolve capability-mapping role collisions   \n* aa05dc2c027299ff5054b1eae9cdc0a0e7ec04fd bug fix: log when a constraint audit record fails to persist (B2 follow-up)   \n* 75e6cc782f7cf09da16e1f19a20f62afbc5dcb7c bug fix: make Gate the structural sole-writer of READY_FOR_MERGE (refuse raw Transition; guard ApproveMerge) + review nits   \n* 2d06b294dabbaa094a0002b8f7172aa4442c4a48 bug fix: mesh Phase-0 security — fail-closed authz (SON-01), gate a2a --shell-mode, honest QueueSubscribe name   \n* 338599e31a23f08f55a5a3784c494502b9aaccf4 bug fix: preserve task_id and return_contract verbatim in budget-bounded handoff context   \n* feb82c84c9fd2908d3337178eec3fafc7f8bc532 bug fix: require mTLS for off-loopback mesh listeners and install authz interceptors unconditionally   \n* a65760f4fcc9b1f145ba3703e0c3424ebc88bd5a bug fix: reserve load_tools slot so deferred tool set cannot exceed the provider cap; test the in-place refresh   \n* 57faaacdeaa8a75a3683079dd05daa2cc70232ce bug fix: unify control-DB path so mesh-self and daemon never split-brain   \n* 01c4a0f1e7c8715297ec97bbb726f84d96031ea0 fix(control): forge-proof L3 merge review — non-execution can never approve (C1)   \n* 397b0dd94142ee37c66f44050a44b0ecf3853549 fix(control): make L2 control-plane feeding TRULY default-on via lazy DB materialization   \n* 9cc806b4cb88a632ea195431af326329f79658a7 fix(control): prevent L2 control feed global from outliving its closed store   \n* 6aa31157bec6264b388d419a274a561dd32cbef4 fix(control/feed): honor Postgres DSN in ensureOpen's empty-path guard   \n* 8c869ebace3f6b6e25366270bc59ec481cdfbe73 fix(pack-eval): validate --suite-file cases before scoring (L5)   \n* f3628aef3e9eac626a631c9143bb51cf8af4bb25 fix(routing): flip L0 bootstrap to default-ON with graceful degradation   \n* e6c3437fa57ab387bd639957bb17359fdfb66dbd fix(tools): resolve the pack before reading its effective tool allowlist   \n### Others   \n* 63047a1d232c6fcdc9923096fae0dbd772d6af98 chore(deps): update all dependencies to latest   \n* cdd9f5fbbc33b665b11522af948d290afc69a939 ci(apt): publish releases to apt.codepros.org (shared codepros OSS apt key)   \n* b7c040b9b0625acb8db7a0ca1328cdfa2e572a47 feature: add Gate-required identity/policy/expiry fields to Task and Verdict (signed)   \n* 64cbff3c75a0e84a644f6336a6d1778a994c16f1 feature: add arch_check tool leveraging the arch DSL parse/validate/analyze toolchain   \n* e2d355fce97d45bad772651c9ce86432bf3a4d9c feature: add kind:architecture prompt pack with arch_check bootstrap card and output-contract correction loop   \n* 73bd0aacfa95ec43dc3527be8267b41546693464 feature: adopt tools.Deferred for context-efficient tool loading (opt-in via SONNY_DEFERRED_TOOLS)   \n* cf419ab3a80cfaeb1dc5ef4cd8bfb4896fac0976 feature: budget-bound sub-agent handoff context via ctxm.Packet/Assembler   \n* 8e23a9641651ebf641fbfd776ab2fd1f31963aaa feature: compile models.yaml into public capability manifests + private target pools (routing catalog)   \n* 26f1a01905c5154f7a5499f0d818b3648077ef3f feature: context-bounded research tool backed by devnw.dev/llm/research (bounded delegation, one synthesis owner, deterministic checks)   \n* fef5cebb98167c2dc88aa9b143835abc69244c66 feature: control-plane EvidenceBundle — hash-bound evidence generations from the constraint bridge   \n* 98273c24de2605c0e286331f12338e0b2920ba1a feature: control-plane ReviewVerdict — ed25519-signed verdicts bound to an exact evidence generation   \n* 38ceb9444156a339e92e63910147e3530f2d1f40 feature: control-plane outbox relay + reconciler (after-commit Synapse notifications, at-least-once)   \n* b2a594e1741345de1e08f9b91992de33761b2b41 feature: control-plane task service — idempotent create + authority-gated state-machine transitions   \n* 46001e38a9952515e24b3c5c90b3587e4786b935 feature: deterministic merge Gate — sole authorizer of READY_FOR_MERGE over signed, fresh, independent, quorum-satisfying verdicts   \n* ac5a779c7aebe225a545f95e43f60058d875983f feature: durable SQLite constraint AuditSink backing the audit gateway   \n* 153fb4edfaa029db00ebf44cb2c3d2eaaae485ce feature: durable mesh control-plane store (domain + SQLite backend + transactional outbox)   \n* 5d97ea35e40121083c68b807658c37cdf405f51b feature: internal/target core — opaque xh_ handles + admission gateway (routing identity-isolation boundary)   \n* 9d36eaffa948f7df7cab32c937813ad0cc4b277c feature: mediate tool side-effects through constraint.Gateway (audit-only, opt-in SONNY_CONSTRAINT_AUDIT)   \n* db797ca7582429f5f151e1283e9d931c86702061 feature: run control-plane golang-migrate migrations on sonny init   \n* bcefdbfbb6d3b3fe360c5e533b2e878e87020661 feature: run control-plane outbox relay in the mesh node lifecycle (Publisher=SynapseBus, OnError observability)   \n* 358f13c452e82e53e193d1a925f215bfc7697fb1 feature: runtime.Coordinator core — shared routing state machine over internal/target admission   \n* 20c47335df717809f5ee8b9c98ef20efb138fd28 refactor: manage control-plane schema with golang-migrate (versioned up/down migrations)   \n* 335f05661874e0f37f9b42a5b93dd9f65c810459 refactor: migrate sonny to devnw.dev/llm v0.2.1 subpackage layout   \n* 3043af941fbe108886639ba7ff77f25a5c653801 refactor: move sonny off the deprecated router.Router interface\n\n","product":"sonny","published_at":"2026-08-31T12:59:41.834Z","schema":"sonny-release/v1","source_commit":"cdd9f5fbbc33b665b11522af948d290afc69a939","tag":"v0.9.0","verification":{"checksums_url":"https://gitlab.com/devnw/codepros/sonny/sonny/-/releases/v0.9.0/downloads/checksums.txt","historical_archive":{"checked_at":"2026-10-26T04:39:26.020858+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_available":false,"signature_bundle_url":null,"signature_verified_by_importer":false},"version":"0.9.0"}