fix(release): reject mislabeled binary artifacts before install - #1156
fix(release): reject mislabeled binary artifacts before install#1156ArjunDeshwal wants to merge 9019 commits into
Conversation
Source: CodebuffAI/freebuff-private@5ff977a13962ac30228a0668933909d088c29710
Source: CodebuffAI/freebuff-private@7eb94576ddb30d5e294624ad432b69a7db6e6e3f
Source: CodebuffAI/freebuff-private@fa7ee9a1552b51d5d6b9de02af6bdf05f1b895ba
Source: CodebuffAI/freebuff-private@70b967ce313adb9dce5470f2a716e2dea7cffe3e
Source: CodebuffAI/freebuff-private@109f4b97cb580501d617d2e3e7a972818e0b05f2
Source: CodebuffAI/freebuff-private@0ed47da6f37cae653b01ec88c29d49fe19565da2
Source: CodebuffAI/freebuff-private@81d4d52b6bb126cee31a13148d7b81e0a5e0cb89
Source: CodebuffAI/freebuff-private@c0a855d22c259a3ce8d8a9c0207055976d85fb43
Source: CodebuffAI/freebuff-private@2610acaadc5b7bcf8eded2d362c33b422ac1c69c
Source: CodebuffAI/freebuff-private@a186b4d3778cc5fac6907d345479f1bae22ae999
Source: CodebuffAI/freebuff-private@5faa5f6218239ee702b36f72bdf1c420c44d8389
Source: CodebuffAI/freebuff-private@fbd4ee3918974c2ced6550233174c3cbc19eaecc
Source: CodebuffAI/freebuff-private@7a5444e862dfd2b9d5b590c057719a662a7df4c7
Source: CodebuffAI/freebuff-private@241f8bfa8a8a97867900b2f71754638efa2cbe86
Source: CodebuffAI/freebuff-private@cfc7760af31f29f1acc7153a7e9fcb48d35f730b
Source: CodebuffAI/freebuff-private@6965ea40dbf54a44c932ca4df63b0dd6377bfec5
Source: CodebuffAI/freebuff-private@ecf4fa2e98fcefcec1a96cbd596b5b16bccd97e3
Source: CodebuffAI/freebuff-private@ce96ca2455d9c6a027d6e41048e8f2520f78754f
Source: CodebuffAI/freebuff-private@890653e2610c57c22298d532cae0129efb26f862
Source: CodebuffAI/freebuff-private@d60d93125f90cdca18e1fc97819b91997081a97f
Source: CodebuffAI/freebuff-private@70ba2a57ab1e48c9f799107675dfb6029dc6d54f
Source: CodebuffAI/freebuff-private@9c2be6595fa98153b9ec0474caed5ec3a58ec116
Source: CodebuffAI/freebuff-private@c1db5271ba86e1c89c3c9fc0c6e6a2a857d3b5dd
Source: CodebuffAI/freebuff-private@2846f67777f75ee23da1e3a3047176d66953d906
Source: CodebuffAI/freebuff-private@f5329a11c8431d6f5c98581c2bfc67fb2d1829ba
Source: CodebuffAI/freebuff-private@e319a9e3de31d8c4cd1d0a9285dfd5360eebb7a1
Source: CodebuffAI/freebuff-private@9cbbba39efda2071b8325bf2779b39170e35348c
Source: CodebuffAI/freebuff-private@8470da01520ea7c273efb6eca943fd37fb265189
Source: CodebuffAI/freebuff-private@884e8a41dd02bb5c0be09d8da8e465c994a6c6a4
Source: CodebuffAI/freebuff-private@b550c712e828f5211de07c5699a643fe0fa8f22e
Source: CodebuffAI/freebuff-private@58b0f8088705d18989314d84e47af14af766c026
Source: CodebuffAI/freebuff-private@5ca12f378fc4561405d5e6bbe075b372ea3ede06
Source: CodebuffAI/freebuff-private@47b25b40d7eb5d1a8bf39cce7d211cfd71a6bf7b
Source: CodebuffAI/freebuff-private@8e7a3fde996dc64f43925de39f4be5354b35dab9
Source: CodebuffAI/freebuff-private@91118f906dfed02c133a0c64854d814b904236a1
Source: CodebuffAI/freebuff-private@c8287ae479e60457aef824f47476895eaa7c4127
Source: CodebuffAI/freebuff-private@26c0a8fbc0d2623945a03ef34cabebc6e326add1
Source: CodebuffAI/freebuff-private@b585420993cc02f08f051acc81a1c9032baa6e96
Source: CodebuffAI/freebuff-private@5ae66fec194797410d46a944f08a23a958be48d9
Source: CodebuffAI/freebuff-private@bbf4e24cac9d657af489b14b89e8b286d0c59b9c
Source: CodebuffAI/freebuff-private@efe3fc4ffa4cceb2138f390c606e0ed843ca13b1
Source: CodebuffAI/freebuff-private@1b7d009da0f5d71624799fb56e47503c02d66ffe
Source: CodebuffAI/freebuff-private@c7eb55ee90b22d1963385f259958535b311dd7af
Source: CodebuffAI/freebuff-private@bb7cd6f516db0f13b8a4805f6ffe45d58e108465
Source: CodebuffAI/freebuff-private@b377dd73a9a3c03ddf1d2ac30aa31041ef41c26e
Source: CodebuffAI/freebuff-private@ebefe1ed757533292b4020b6242e2e7ce3a3e7e8
Source: CodebuffAI/freebuff-private@6681195eefb64fbce00fd6c3174ea1b9c07bb101
Source: CodebuffAI/freebuff-private@3652cdfb84c76cbfd6eaf0285588958c2e9e863d
Source: CodebuffAI/freebuff-private@4c569a6b8a413f2a7ed24ccc46e1bd6d18f4def9
Source: CodebuffAI/freebuff-private@97525b97891db562584728271a39c5ffa4f88a83
Source: CodebuffAI/freebuff-private@968cf83760c8f77a39a5aedaedc04d5f7fe2c98b
Source: CodebuffAI/freebuff-private@976b89df4e302612e31320d886053088882265fa
commented
Aug 31, 2026
|
This is a solid, focused fix for a real failure class (mislabeled/stale release archives clobbering a working cached binary). A few things stand out as well done:
Concerns a maintainer will need to weigh before porting:
No out-of-scope paths are touched. The idea and implementation are good; the size and rollout coupling are the main reasons this needs a real maintainer review rather than a quick merge. |
commented
Aug 31, 2026
|
Apologies — this PR was auto-closed by GitHub when we force-pushed a history rewrite of this repository (repository maintenance; every commit SHA changed). That was not a judgment on this PR, and GitHub does not allow us to reopen it because the commits it was based on no longer exist in the new history. If you'd like to continue with this change: rebase your branch onto the new Sorry for the churn, and thanks for contributing. |
Summary
{ product, version, target }identity in every compiled CLI.Why
Issues #932, #1082, and #1143 report official platform archives launching unrelated bundled scripts instead of Freebuff. The public build script names a fixed entrypoint, while the launcher previously trusted any executable found under the expected archive filename.
This adds an end-to-end invariant at the consumer boundary: an artifact labeled
freebuff-<target>is installable only when the executable identifies itself as the requested Freebuff version and target. A bad update cannot replace a working cached binary.This is deliberately a defense against release/artifact mix-ups; it does not claim a root cause inside the private release service.
Validation
bun test cli/src/__tests__/build-identity.test.ts cli/src/__tests__/release/artifact-identity.test.ts cli/src/__tests__/release/wrapper-safety.test.ts— 31 passbun run build:sdk && bun freebuff/cli/build.ts 0.0.0-cibun cli/scripts/smoke-binary.ts cli/bin/freebuff— tree-sitter initialized and the login prompt was detected during the 10-second boot smokenode --check cli/release-core/launcher.jsbunx prettier --checkon all changed source, test, and workflow filesScope
No backend, production probing, release-host mutation, or checksum/security claim. The contract detects accidental or stale artifact substitution; it is not intended as a cryptographic authenticity mechanism.
Rollout note: publish every target archive built with this identity contract before, or atomically with, the launcher version that enforces it. An older archive without
--print-build-infowill be rejected and a working cached binary will be retained.Addresses the failure class reported in #932, #1082, and #1143.