Skip to content

release: Unify AppImage asset names and validate updater metadata - #677

Merged
zackees merged 7 commits into
masterfrom
fix/624-appimage-asset-names
Oct 14, 2026
Merged

zackees merged 7 commits into
masterfrom
fix/624-appimage-asset-names

Conversation

@zackees

@zackees zackees commented Oct 14, 2026 •

Copy link
Copy Markdown
Member

Fixes #624. Refs #635 and #674.

Changes

  • Derive canonical AppImage names from the actual executable version, including the complete Rust beta version. Copy the AppImage and zsync unchanged into the beta while retaining both originals for continuous publication.
  • Check the actual executable identity, embedded update target and zsync Filename, URL, payload length and SHA-1. SHA-1 is the zsync protocol checksum, not a signature. Standalone builds may omit updater metadata; release candidates must contain the correct continuous update target.
  • Provision host GPU runtime libraries before the actual metadata launch and retain bounded loader diagnostics. Keep all four distro scenarios, saved-profile capture and recording checks.
  • Integrate merged ci: Drop the previous build's assets from continuous #678 with the canonical keep-list. Delete only obsolete legacy/canonical x86_64 AppImage pairs; preserve the current pair and unrelated release attachments. Gated in-place publication remains intact.
  • Preserve C-only oracle builds and merged macos: The DMG is ad-hoc signed and not notarized #630 signing, runtime and release-note fixes.

RED → GREEN

  • Naming/metadata RED 0714432b8: stub helpers and old workflows produce one failure and two errors; GREEN 1b0a7c475 checks real naming and metadata with malformed-payload mutations.
  • Host-runtime RED 1ecfd79b6, GREEN 28abf3103: require libraries before real frontend launch and preserve stderr on a failed launch.
  • Pruning RED ddb1e431b: executing the real selector with mocked GitHub I/O deletes two unrelated attachments. GREEN 17a398af9: deletes exactly the four superseded legacy/canonical files and retains current/unrelated assets.

Final integrated local validation

Exact pushed head 17a398af9cbddd7ac8b090724ec810147e18999c, tree 8104c33c58c68d13df4a7a277f060ca0b8d06be5, based on master 739fb7677.

Fresh ./lint and ./unittest pass: OFF/ON each pass 193 unchanged C tests; 1766 exported symbols are identical. Full local-gate attestation passes all four lanes in 424 seconds. The full CI Python suite passes 171 tests with one existing environment skip. Final integration review is clean. No existing C tests/public headers or new workflow files were changed.

Actual package evidence and remaining gate

Previously pushed exact head 16d05b40dc50d2072da4b4561da06210c7d0fc9b passed both standalone AppImage 38512932873 and full verify-only 38512929127. Standalone checks the actual canonical 0.1.0 artifact with optional empty updater data. Full verification checks the actual 0.1.0-beta.20261014 artifact and zsync/update target, all four distro scenarios, saved-profile startup, recording movement/tone and negative recording-verifier mutations; all five desktop packages, native Windows ARM startup and the release gate passed. Hosted runners do not prove physical camera/microphone frames or real GPU hardware capture.

The integrated final head passed standalone AppImage 38516984180 and complete verify-only 38517032562, both at exact 17a398af9cbddd7ac8b090724ec810147e18999c. All five desktop builds, the full release gate, all four AppImage distros, Windows ARM native saved-profile/negative-plugin validation, and both actual macOS DMG native startup jobs succeeded. The release-candidate AppImage verifies the full beta filename, embedded updater target and zsync metadata; saved-profile recording checks exercise screen/camera movement and microphone tone, with negative verifier mutations.

Both native macOS apps reached real frontend readiness, loaded all saved capture input kinds, returned PNG/JPEG screenshots, and exited normally. Intel logged one tracked allocation at its shutdown checkpoint; ARM logged zero. This is retained as an observation and is not attributed to this naming change or claimed resolved. Hosted native runners do not prove physical capture frames or Apple permission grants. Verify-only intentionally skipped release publication.

Preserved actual failures

Initial AppImage 38510812090 built the canonical artifact, then all four host metadata launches failed with exit 127 before distro scenarios. Captured stderr was hidden by the old exception, so no specific missing library is asserted. Full run 38510810928 likewise failed the four AppImage checks and was explicitly cancelled after identifying that defect. Neither is counted as success. The host-runtime correction above produced the later real package successes.

@zackees

zackees commented Oct 14, 2026

Copy link
Copy Markdown
Member Author

Actual AppImage run 38510812090 at e444f93cefd56b9800652994ca9228a8faf36f55 completed failure: package creation succeeded with canonical OBS-Studio-Rust-0.1.0-linux-x86_64.AppImage, then all four test jobs failed at the new host-side --version metadata check (exit 127), before entering the distro runtime scenarios. Captured stderr was not included in the old exception, so a specific missing library is not asserted from that log. The failure remains RED.

Local RED c8e695237 / GREEN 612d82a15 install the same host Mesa/GL/DRM/GBM/VA/Wayland/Vulkan libraries already used by the distro tests before running the actual frontend metadata check, preserve bounded subprocess diagnostics, and create cleanup directories before the precheck. All assertions remain intact. The 18 focused tests and single-reviewer follow-up pass; the full CI Python suite passes 157 tests with one retained environment skip. Fresh local gates run before push. The known-broken full verification run 38510810928 received an explicit cancellation request after its four AppImage jobs also failed; it is not counted as validation success or restarted on an observation timeout. Fresh package GREEN is still required.

@zackees

zackees commented Oct 14, 2026

Copy link
Copy Markdown
Member Author

Pushed unchanged stamped 16d05b40dc50d2072da4b4561da06210c7d0fc9b with host-check correction. Fresh lint/unit and all four attestation lanes pass (420 seconds), with 193 C tests OFF/ON and 1766 identical exports. 18 focused tests, 157 CI Python tests (one retained environment skip), and review pass.

Fresh actual PR AppImage validation and verify-only run 38512929127 must prove the actual canonical files/updater metadata and saved-profile scenarios. Old failed AppImage 38510812090 and cancelled known-broken verification 38510810928 are retained as RED evidence. This remains draft.

Local-Gate: v1 tree=d2c58a1a070daf5027869f68bf5587dde5fe816b secs=486 lanes=lint:run,rust-test:run,cross:run,tier2-linux:run
Ci-Attestation: {"at":1791951466,"gate":"rust/all/fmt","host":"linux-x86_64","key":"02bc746d0ab4d257e2515312ce87010ee04b8a6f88d172fc1a31e9ebb6b1b012","lane":"lint","parents":["d15d84bfd647c30b3a8c55fcaef0f1df6fed6bb9"],"secs":87,"stamp":"1983b6dd0450cf321f022b8a9099a407","tree":"d2c58a1a070daf5027869f68bf5587dde5fe816b","v":1,"via":"run"}
Ci-Attestation: {"at":1791951466,"gate":"rust/x86_64-unknown-linux-gnu/clippy","host":"linux-x86_64","key":"02bc746d0ab4d257e2515312ce87010ee04b8a6f88d172fc1a31e9ebb6b1b012","lane":"lint","parents":["d15d84bfd647c30b3a8c55fcaef0f1df6fed6bb9"],"secs":87,"stamp":"55cb7805c4c1b97d8e406c57645f1b9a","tree":"d2c58a1a070daf5027869f68bf5587dde5fe816b","v":1,"via":"run"}
Ci-Attestation: {"at":1791951466,"gate":"rust/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"2ccf32a26d31531e9c28eef5172636a09922131946a041600915fb2e52d7a32b","lane":"rust-test","parents":["d15d84bfd647c30b3a8c55fcaef0f1df6fed6bb9"],"secs":139,"stamp":"1d3dd25ceda2eaa5e2e21c48ffdf2f22","tree":"d2c58a1a070daf5027869f68bf5587dde5fe816b","v":1,"via":"run"}
Ci-Attestation: {"at":1791951466,"gate":"rust/x86_64-pc-windows-msvc/clippy","host":"linux-x86_64","key":"d9b3394066d4d94dc80d3e1c463977b266db992dffbadeb04cbcc0e244fb42f5","lane":"cross","parents":["d15d84bfd647c30b3a8c55fcaef0f1df6fed6bb9"],"secs":115,"stamp":"c6acf93cc2f0bed37f2a010327fbf47a","tree":"d2c58a1a070daf5027869f68bf5587dde5fe816b","v":1,"via":"run"}
Ci-Attestation: {"at":1791951466,"gate":"rust/x86_64-pc-windows-msvc/dylint","host":"linux-x86_64","key":"d9b3394066d4d94dc80d3e1c463977b266db992dffbadeb04cbcc0e244fb42f5","lane":"cross","parents":["d15d84bfd647c30b3a8c55fcaef0f1df6fed6bb9"],"secs":115,"stamp":"2d1455b53bf54ce9b907075c507c523c","tree":"d2c58a1a070daf5027869f68bf5587dde5fe816b","v":1,"via":"run"}
Ci-Attestation: {"at":1791951466,"gate":"rust/aarch64-apple-darwin/clippy","host":"linux-x86_64","key":"d9b3394066d4d94dc80d3e1c463977b266db992dffbadeb04cbcc0e244fb42f5","lane":"cross","parents":["d15d84bfd647c30b3a8c55fcaef0f1df6fed6bb9"],"secs":115,"stamp":"9ad20c35148b4cce490b67cbd6eb9580","tree":"d2c58a1a070daf5027869f68bf5587dde5fe816b","v":1,"via":"run"}
Ci-Attestation: {"at":1791951466,"gate":"rust/aarch64-apple-darwin/dylint","host":"linux-x86_64","key":"d9b3394066d4d94dc80d3e1c463977b266db992dffbadeb04cbcc0e244fb42f5","lane":"cross","parents":["d15d84bfd647c30b3a8c55fcaef0f1df6fed6bb9"],"secs":115,"stamp":"45383225b555d4879ee2e7e894cccc1b","tree":"d2c58a1a070daf5027869f68bf5587dde5fe816b","v":1,"via":"run"}
Ci-Attestation: {"at":1791951466,"gate":"rust/x86_64-apple-darwin/clippy","host":"linux-x86_64","key":"d9b3394066d4d94dc80d3e1c463977b266db992dffbadeb04cbcc0e244fb42f5","lane":"cross","parents":["d15d84bfd647c30b3a8c55fcaef0f1df6fed6bb9"],"secs":115,"stamp":"1832eda19adfde41c44cc224713e0788","tree":"d2c58a1a070daf5027869f68bf5587dde5fe816b","v":1,"via":"run"}
Ci-Attestation: {"at":1791951466,"gate":"rust/x86_64-apple-darwin/dylint","host":"linux-x86_64","key":"d9b3394066d4d94dc80d3e1c463977b266db992dffbadeb04cbcc0e244fb42f5","lane":"cross","parents":["d15d84bfd647c30b3a8c55fcaef0f1df6fed6bb9"],"secs":115,"stamp":"b4e4920aa000db38e500431deffcf4fc","tree":"d2c58a1a070daf5027869f68bf5587dde5fe816b","v":1,"via":"run"}
Ci-Attestation: {"at":1791951466,"gate":"cpp/linux-x64/tier2","host":"linux-x86_64","key":"b3bfd0db9d3ef36357205c4ca97b5d35cfad245426d7c9369908c12242c68bd3","lane":"tier2-linux","parents":["d15d84bfd647c30b3a8c55fcaef0f1df6fed6bb9"],"secs":145,"stamp":"650b14d136e19a6d448b5694516820b8","tree":"d2c58a1a070daf5027869f68bf5587dde5fe816b","v":1,"via":"run"}
…REEN, #624)

Local-Gate: v1 tree=d3db6171ade3c5407335dd71d55072fc70b5645b secs=420 lanes=lint:run,rust-test:run,cross:run,tier2-linux:run
Ci-Attestation: {"at":1791952996,"gate":"rust/all/fmt","host":"linux-x86_64","key":"00f23c845e0cb8d929563e275172ecedf4af553b50bf1f0ab83f93cd014ad289","lane":"lint","parents":["c8e695237bd9c00c212b7f26e4cfcc5f1a4227c2"],"secs":82,"stamp":"fcc10307ee0ed7b61ae45bb0e7253c1a","tree":"d3db6171ade3c5407335dd71d55072fc70b5645b","v":1,"via":"run"}
Ci-Attestation: {"at":1791952996,"gate":"rust/x86_64-unknown-linux-gnu/clippy","host":"linux-x86_64","key":"00f23c845e0cb8d929563e275172ecedf4af553b50bf1f0ab83f93cd014ad289","lane":"lint","parents":["c8e695237bd9c00c212b7f26e4cfcc5f1a4227c2"],"secs":82,"stamp":"e82581531ab33f757efe6ce2191cca49","tree":"d3db6171ade3c5407335dd71d55072fc70b5645b","v":1,"via":"run"}
Ci-Attestation: {"at":1791952996,"gate":"rust/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"6246fd597cffc66ba37c10393f6da3ec5ff431efb4e25dfbdfce4892912aa85b","lane":"rust-test","parents":["c8e695237bd9c00c212b7f26e4cfcc5f1a4227c2"],"secs":117,"stamp":"dbc37fc5fe162abf3aa88a55a1608580","tree":"d3db6171ade3c5407335dd71d55072fc70b5645b","v":1,"via":"run"}
Ci-Attestation: {"at":1791952996,"gate":"rust/x86_64-pc-windows-msvc/clippy","host":"linux-x86_64","key":"aa3610c4bec8cc46c15a9bdab889fd169f74def4f959aeca18e641f4940894a0","lane":"cross","parents":["c8e695237bd9c00c212b7f26e4cfcc5f1a4227c2"],"secs":91,"stamp":"fd5c5d3acd21806a1cf13472f5899edd","tree":"d3db6171ade3c5407335dd71d55072fc70b5645b","v":1,"via":"run"}
Ci-Attestation: {"at":1791952996,"gate":"rust/x86_64-pc-windows-msvc/dylint","host":"linux-x86_64","key":"aa3610c4bec8cc46c15a9bdab889fd169f74def4f959aeca18e641f4940894a0","lane":"cross","parents":["c8e695237bd9c00c212b7f26e4cfcc5f1a4227c2"],"secs":91,"stamp":"3e80f29a6dc4f1f35f44e397e79f0be1","tree":"d3db6171ade3c5407335dd71d55072fc70b5645b","v":1,"via":"run"}
Ci-Attestation: {"at":1791952996,"gate":"rust/aarch64-apple-darwin/clippy","host":"linux-x86_64","key":"aa3610c4bec8cc46c15a9bdab889fd169f74def4f959aeca18e641f4940894a0","lane":"cross","parents":["c8e695237bd9c00c212b7f26e4cfcc5f1a4227c2"],"secs":91,"stamp":"78e7ab2b59064f4a5c2b15f59677e82a","tree":"d3db6171ade3c5407335dd71d55072fc70b5645b","v":1,"via":"run"}
Ci-Attestation: {"at":1791952996,"gate":"rust/aarch64-apple-darwin/dylint","host":"linux-x86_64","key":"aa3610c4bec8cc46c15a9bdab889fd169f74def4f959aeca18e641f4940894a0","lane":"cross","parents":["c8e695237bd9c00c212b7f26e4cfcc5f1a4227c2"],"secs":91,"stamp":"44d619e5e42ada1f1bec4a1714ebcf36","tree":"d3db6171ade3c5407335dd71d55072fc70b5645b","v":1,"via":"run"}
Ci-Attestation: {"at":1791952996,"gate":"rust/x86_64-apple-darwin/clippy","host":"linux-x86_64","key":"aa3610c4bec8cc46c15a9bdab889fd169f74def4f959aeca18e641f4940894a0","lane":"cross","parents":["c8e695237bd9c00c212b7f26e4cfcc5f1a4227c2"],"secs":91,"stamp":"223820bcb298520de03b76899eed2844","tree":"d3db6171ade3c5407335dd71d55072fc70b5645b","v":1,"via":"run"}
Ci-Attestation: {"at":1791952996,"gate":"rust/x86_64-apple-darwin/dylint","host":"linux-x86_64","key":"aa3610c4bec8cc46c15a9bdab889fd169f74def4f959aeca18e641f4940894a0","lane":"cross","parents":["c8e695237bd9c00c212b7f26e4cfcc5f1a4227c2"],"secs":91,"stamp":"4e6c110efa01f5536efb0187598ef1a4","tree":"d3db6171ade3c5407335dd71d55072fc70b5645b","v":1,"via":"run"}
Ci-Attestation: {"at":1791952996,"gate":"cpp/linux-x64/tier2","host":"linux-x86_64","key":"f15cc416c8402b9d25beb2961320b10f6a373e0811dfd2e49202e8be6bf3f0ab","lane":"tier2-linux","parents":["c8e695237bd9c00c212b7f26e4cfcc5f1a4227c2"],"secs":130,"stamp":"abb2535e881e10bb699535d56280360f","tree":"d3db6171ade3c5407335dd71d55072fc70b5645b","v":1,"via":"run"}
…s (GREEN, #624)

Local-Gate: v1 tree=8104c33c58c68d13df4a7a277f060ca0b8d06be5 secs=424 lanes=lint:run,rust-test:run,cross:run,tier2-linux:run
Ci-Attestation: {"at":1791955784,"gate":"rust/all/fmt","host":"linux-x86_64","key":"3b0327e2d832183bd9ef8947dd1cf423c9af534dc7373b1e28c663d5849dc68e","lane":"lint","parents":["ddb1e431bd2886d79148f42f88c58fad03328f00"],"secs":84,"stamp":"e02feb45230c8f814bb66a8d31919e16","tree":"8104c33c58c68d13df4a7a277f060ca0b8d06be5","v":1,"via":"run"}
Ci-Attestation: {"at":1791955784,"gate":"rust/x86_64-unknown-linux-gnu/clippy","host":"linux-x86_64","key":"3b0327e2d832183bd9ef8947dd1cf423c9af534dc7373b1e28c663d5849dc68e","lane":"lint","parents":["ddb1e431bd2886d79148f42f88c58fad03328f00"],"secs":84,"stamp":"f964c155d4dfac74a9a545a5aa6849e4","tree":"8104c33c58c68d13df4a7a277f060ca0b8d06be5","v":1,"via":"run"}
Ci-Attestation: {"at":1791955784,"gate":"rust/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"cb8026a9897080f64717d9bd33e9f36f521ee4953509ce880e91033f8c1c3709","lane":"rust-test","parents":["ddb1e431bd2886d79148f42f88c58fad03328f00"],"secs":120,"stamp":"1742e340b4206803fe5eeee01d981624","tree":"8104c33c58c68d13df4a7a277f060ca0b8d06be5","v":1,"via":"run"}
Ci-Attestation: {"at":1791955784,"gate":"rust/x86_64-pc-windows-msvc/clippy","host":"linux-x86_64","key":"500f9a0b2dbd03d4be1931b92b124462825ee2d5852246d8a0c99356fc6cb866","lane":"cross","parents":["ddb1e431bd2886d79148f42f88c58fad03328f00"],"secs":91,"stamp":"949062cf0a357543fd19712e23f42ad8","tree":"8104c33c58c68d13df4a7a277f060ca0b8d06be5","v":1,"via":"run"}
Ci-Attestation: {"at":1791955784,"gate":"rust/x86_64-pc-windows-msvc/dylint","host":"linux-x86_64","key":"500f9a0b2dbd03d4be1931b92b124462825ee2d5852246d8a0c99356fc6cb866","lane":"cross","parents":["ddb1e431bd2886d79148f42f88c58fad03328f00"],"secs":91,"stamp":"4fafc4123fb1a005da15d577929f1305","tree":"8104c33c58c68d13df4a7a277f060ca0b8d06be5","v":1,"via":"run"}
Ci-Attestation: {"at":1791955784,"gate":"rust/aarch64-apple-darwin/clippy","host":"linux-x86_64","key":"500f9a0b2dbd03d4be1931b92b124462825ee2d5852246d8a0c99356fc6cb866","lane":"cross","parents":["ddb1e431bd2886d79148f42f88c58fad03328f00"],"secs":91,"stamp":"a34e0593fc3f3e248808a8bfce4a0766","tree":"8104c33c58c68d13df4a7a277f060ca0b8d06be5","v":1,"via":"run"}
Ci-Attestation: {"at":1791955784,"gate":"rust/aarch64-apple-darwin/dylint","host":"linux-x86_64","key":"500f9a0b2dbd03d4be1931b92b124462825ee2d5852246d8a0c99356fc6cb866","lane":"cross","parents":["ddb1e431bd2886d79148f42f88c58fad03328f00"],"secs":91,"stamp":"38de1567447833d2e9a9e9867a101732","tree":"8104c33c58c68d13df4a7a277f060ca0b8d06be5","v":1,"via":"run"}
Ci-Attestation: {"at":1791955784,"gate":"rust/x86_64-apple-darwin/clippy","host":"linux-x86_64","key":"500f9a0b2dbd03d4be1931b92b124462825ee2d5852246d8a0c99356fc6cb866","lane":"cross","parents":["ddb1e431bd2886d79148f42f88c58fad03328f00"],"secs":91,"stamp":"95c4fc9c6e03c1e983699b9c66457f94","tree":"8104c33c58c68d13df4a7a277f060ca0b8d06be5","v":1,"via":"run"}
Ci-Attestation: {"at":1791955784,"gate":"rust/x86_64-apple-darwin/dylint","host":"linux-x86_64","key":"500f9a0b2dbd03d4be1931b92b124462825ee2d5852246d8a0c99356fc6cb866","lane":"cross","parents":["ddb1e431bd2886d79148f42f88c58fad03328f00"],"secs":91,"stamp":"4459658d685bedf49162a46e5cf05a59","tree":"8104c33c58c68d13df4a7a277f060ca0b8d06be5","v":1,"via":"run"}
Ci-Attestation: {"at":1791955784,"gate":"cpp/linux-x64/tier2","host":"linux-x86_64","key":"f8cff828dc0c257fca961f7894f94e24e570c31730ec61b6d0085951d7c4c893","lane":"tier2-linux","parents":["ddb1e431bd2886d79148f42f88c58fad03328f00"],"secs":128,"stamp":"1d75158cde1498a6b3fc07b20b24e080","tree":"8104c33c58c68d13df4a7a277f060ca0b8d06be5","v":1,"via":"run"}
@zackees
zackees force-pushed the fix/624-appimage-asset-names branch from 16d05b4 to 17a398a Compare October 14, 2026 05:30
@zackees

zackees commented Oct 14, 2026

Copy link
Copy Markdown
Member Author

Rebased onto master 739fb7677, incorporating merged #630 and preserving the #678 canonical/pruning fix. Replaced head 16d05b40dc50d2072da4b4561da06210c7d0fc9b with attested 17a398af9cbddd7ac8b090724ec810147e18999c (tree 8104c33c58c68d13df4a7a277f060ca0b8d06be5).

Fresh lint/unit and full attestation pass; OFF/ON each pass 193 C tests with 1766 identical exports. Full CI suite: 171 tests, one existing environment skip. Integration review is clean.

Earlier head passed actual standalone/full package runs 38512932873 and 38512929127. Final-head standalone AppImage 38516984180 and full verify-only 38517032562 are now running; the PR stays draft until these finish successfully.

@zackees
zackees marked this pull request as ready for review October 14, 2026 06:09
@zackees
zackees merged commit b6241c5 into master Oct 14, 2026
59 checks passed
@zackees
zackees deleted the fix/624-appimage-asset-names branch October 14, 2026 06:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

appimage: continuous moves before the release gate and is deleted before it's recreated

1 participant