Skip to content

ci: Keep Rust enabled when AppImage inputs are absent - #672

Merged
zackees merged 4 commits into
masterfrom
fix/appimage-rust-input-default
Oct 14, 2026
Merged

zackees merged 4 commits into
masterfrom
fix/appimage-rust-input-default

Conversation

@zackees

@zackees zackees commented Oct 14, 2026 •

Copy link
Copy Markdown
Member

Fixes #671. Refs #635 and #670.

Changes

  • Evaluate the actual AppImage workflow expression with pinned GitHub @actions/expressions 0.3.61 across 16 typed contexts (four caller events; absent, empty, false and true input values).
  • Compare the formatted input with the string false, preserving explicit C-only oracle/test builds while enabling Rust when inputs are absent on ordinary push/PR/tag paths.
  • Remove the duplicate workflow_call Rust input declaration introduced when release: Build and validate the Windows ARM64 beta package #664 and ci: Build the release's AppImage with Rust libobs on a manual dispatch too #670 merged. Keep the declared workflow_call Boolean default and explicit daily Rust caller. No production Node dependency is added; the Python test installs the official evaluator in its own temporary directory and cleans it.

RED → GREEN

  • 4704be509: test_absent_input_defaults_to_rust has eight failing subcases using the real GitHub evaluator; explicit false and true remain correct.

  • a14e19b79: all 16 typed cases pass; 14 focused tests pass, and integration review is clean.

  • 39448573b: the duplicate-input regression test fails with two declarations instead of one. The actual PR workflow run 38504479307 also failed before creating any jobs.

  • 091753db9: one Boolean input declaration remains; all 15 focused tests pass.

Validation

Fresh ./lint, ./unittest, and all four attestation lanes passed after the duplicate-key correction. The full attestation took 469 seconds and stamped exact pushed head 2d795859cedbd66630350b14b5c3524d9f146e7e (tree 3b38594f9c222e28397575c38921daa3f9c2d8f6). OFF/ON C tests pass with 193 tests in each configuration and 1766 identical exports. The focused tests and integration review are clean.

Actual absent-input PR build 38506716441 succeeded at exact head 2d795859cedbd66630350b14b5c3524d9f146e7e. Its real configure environment reports RUST_LIBOBS: true, and CMake reports OBS-Studio-Rust version: 0.1.0. This proves the expression correction in GitHub Actions rather than only the evaluator test. The same run completed success: all four distribution jobs (Debian, Arch, Fedora, Ubuntu 22.04) pass bundle, first-start, probes and saved-profile scenarios. Debian, Arch and Fedora recordings prove moving screen/camera regions and continuous 440 Hz microphone audio, and the recording verifier rejects frozen/silent/corrupt mutations. Ubuntu 22.04 retains its explicit older test-producer limitation: saved-profile startup passes, but it does not create a recording. All routine PR checks are terminal with no failures; Linux attested lanes legitimately skip. Publication correctly skips in the PR context.

GitHub documents loose equality and null/empty/Boolean coercion in https://docs.github.com/en/actions/reference/workflows-and-actions/expressions; the official evaluator is https://github.com/actions/languageservices/tree/main/expressions.

Local-Gate: v1 tree=acedab891cbdcf5351e655e7a0390a5a36984266 secs=417 lanes=lint:run,rust-test:run,cross:run,tier2-linux:run
Ci-Attestation: {"at":1791946982,"gate":"rust/all/fmt","host":"linux-x86_64","key":"3f17459581eac69c2e2d79586c87ee2ce94bfd3b3b869bb87ec4eb834fe198f7","lane":"lint","parents":["c2f689f693913e27ed38d7fd676fea0c82b3dd03"],"secs":44,"stamp":"4427d143787bd1733cbbf0e135354496","tree":"acedab891cbdcf5351e655e7a0390a5a36984266","v":1,"via":"run"}
Ci-Attestation: {"at":1791946982,"gate":"rust/x86_64-unknown-linux-gnu/clippy","host":"linux-x86_64","key":"3f17459581eac69c2e2d79586c87ee2ce94bfd3b3b869bb87ec4eb834fe198f7","lane":"lint","parents":["c2f689f693913e27ed38d7fd676fea0c82b3dd03"],"secs":44,"stamp":"7628b534aa80cd40d309b0351b1cd231","tree":"acedab891cbdcf5351e655e7a0390a5a36984266","v":1,"via":"run"}
Ci-Attestation: {"at":1791946982,"gate":"rust/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"108a249f092b9d86a9df74639dd7773c2458d797283a683ff5490c2949705a2c","lane":"rust-test","parents":["c2f689f693913e27ed38d7fd676fea0c82b3dd03"],"secs":132,"stamp":"6f1429941515d23c5bf5ad8623e08c00","tree":"acedab891cbdcf5351e655e7a0390a5a36984266","v":1,"via":"run"}
Ci-Attestation: {"at":1791946982,"gate":"rust/x86_64-pc-windows-msvc/clippy","host":"linux-x86_64","key":"3d215f112f37dc41257c39ce26a610f736d9b6084b051aaf5c31f3f3befc9003","lane":"cross","parents":["c2f689f693913e27ed38d7fd676fea0c82b3dd03"],"secs":105,"stamp":"53a24dd0cbee9f73631f09d2448daed3","tree":"acedab891cbdcf5351e655e7a0390a5a36984266","v":1,"via":"run"}
Ci-Attestation: {"at":1791946982,"gate":"rust/x86_64-pc-windows-msvc/dylint","host":"linux-x86_64","key":"3d215f112f37dc41257c39ce26a610f736d9b6084b051aaf5c31f3f3befc9003","lane":"cross","parents":["c2f689f693913e27ed38d7fd676fea0c82b3dd03"],"secs":105,"stamp":"8e00e3f31bb4f3776868219e80e756f6","tree":"acedab891cbdcf5351e655e7a0390a5a36984266","v":1,"via":"run"}
Ci-Attestation: {"at":1791946982,"gate":"rust/aarch64-apple-darwin/clippy","host":"linux-x86_64","key":"3d215f112f37dc41257c39ce26a610f736d9b6084b051aaf5c31f3f3befc9003","lane":"cross","parents":["c2f689f693913e27ed38d7fd676fea0c82b3dd03"],"secs":105,"stamp":"1ef732ceb79960eeb4affbc5509b03e7","tree":"acedab891cbdcf5351e655e7a0390a5a36984266","v":1,"via":"run"}
Ci-Attestation: {"at":1791946982,"gate":"rust/aarch64-apple-darwin/dylint","host":"linux-x86_64","key":"3d215f112f37dc41257c39ce26a610f736d9b6084b051aaf5c31f3f3befc9003","lane":"cross","parents":["c2f689f693913e27ed38d7fd676fea0c82b3dd03"],"secs":105,"stamp":"f18e086bdd07a4b2504872d9b5e26095","tree":"acedab891cbdcf5351e655e7a0390a5a36984266","v":1,"via":"run"}
Ci-Attestation: {"at":1791946982,"gate":"rust/x86_64-apple-darwin/clippy","host":"linux-x86_64","key":"3d215f112f37dc41257c39ce26a610f736d9b6084b051aaf5c31f3f3befc9003","lane":"cross","parents":["c2f689f693913e27ed38d7fd676fea0c82b3dd03"],"secs":105,"stamp":"4ec66502e16f11312bcfd1ac566dc3ab","tree":"acedab891cbdcf5351e655e7a0390a5a36984266","v":1,"via":"run"}
Ci-Attestation: {"at":1791946982,"gate":"rust/x86_64-apple-darwin/dylint","host":"linux-x86_64","key":"3d215f112f37dc41257c39ce26a610f736d9b6084b051aaf5c31f3f3befc9003","lane":"cross","parents":["c2f689f693913e27ed38d7fd676fea0c82b3dd03"],"secs":105,"stamp":"0ffe1c8eb2fe022e9a6b40dee30157a3","tree":"acedab891cbdcf5351e655e7a0390a5a36984266","v":1,"via":"run"}
Ci-Attestation: {"at":1791946982,"gate":"cpp/linux-x64/tier2","host":"linux-x86_64","key":"51aff543d1df362642f5c77b2414b1bac8ff28195a477161f16ceba4b6474a8b","lane":"tier2-linux","parents":["c2f689f693913e27ed38d7fd676fea0c82b3dd03"],"secs":135,"stamp":"543791eb8ecc7e170418d71d05b543a5","tree":"acedab891cbdcf5351e655e7a0390a5a36984266","v":1,"via":"run"}
@zackees

zackees commented Oct 14, 2026

Copy link
Copy Markdown
Member Author

Additional actual startup RED: AppImage run 38504479307 at the initial #672 head failed before creating any jobs. The merged workflow_call mapping contained two identical rust_libobs keys, added by #664 and #670 in different positions. The workflow structure was invalid; no packaged artifact test ran.

RED 3944857 adds a uniqueness regression that fails with 2 declarations rather than 1. GREEN 091753db9 removes the duplicate and retains the original Boolean type/default true. All 15 focused input/platform tests pass. Review is clean and fresh mandatory gates are running before push. Draft #672 remains blocked from readiness by missing actual packaged AppImage evidence; the zero-job run is not treated as a passing or skipped test.

The macOS stack inherits the schema fix alongside the corrected lipo operand order. No macOS frontend startup success is claimed yet.

#671)

Local-Gate: v1 tree=3b38594f9c222e28397575c38921daa3f9c2d8f6 secs=469 lanes=lint:run,rust-test:run,cross:run,tier2-linux:run
Ci-Attestation: {"at":1791948662,"gate":"rust/all/fmt","host":"linux-x86_64","key":"4772f72b0622b039cf7ee6c651b083020d2cd901f08d48d6d92e4f034feca2e9","lane":"lint","parents":["39448573b53cbd25fdc467aca701b0af8150b91e"],"secs":84,"stamp":"cc82037a72efa7bb578a00fcef4a9164","tree":"3b38594f9c222e28397575c38921daa3f9c2d8f6","v":1,"via":"run"}
Ci-Attestation: {"at":1791948662,"gate":"rust/x86_64-unknown-linux-gnu/clippy","host":"linux-x86_64","key":"4772f72b0622b039cf7ee6c651b083020d2cd901f08d48d6d92e4f034feca2e9","lane":"lint","parents":["39448573b53cbd25fdc467aca701b0af8150b91e"],"secs":84,"stamp":"12c7c5d74f822e2b8dda472df65cb114","tree":"3b38594f9c222e28397575c38921daa3f9c2d8f6","v":1,"via":"run"}
Ci-Attestation: {"at":1791948662,"gate":"rust/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"7c0f593880583c56f5d3db5aad38a8f8056c2c2be0f6d839a249e28c69cdcfe2","lane":"rust-test","parents":["39448573b53cbd25fdc467aca701b0af8150b91e"],"secs":122,"stamp":"01ffeec95feb97cd182f72fd7c0b10c2","tree":"3b38594f9c222e28397575c38921daa3f9c2d8f6","v":1,"via":"run"}
Ci-Attestation: {"at":1791948662,"gate":"rust/x86_64-pc-windows-msvc/clippy","host":"linux-x86_64","key":"b7ca8639b93cb98c34ee6a76669c3bbdc499c55473b8e083bf4b7dbec544c837","lane":"cross","parents":["39448573b53cbd25fdc467aca701b0af8150b91e"],"secs":133,"stamp":"657795a018c4d996de4aaf53841e8f36","tree":"3b38594f9c222e28397575c38921daa3f9c2d8f6","v":1,"via":"run"}
Ci-Attestation: {"at":1791948662,"gate":"rust/x86_64-pc-windows-msvc/dylint","host":"linux-x86_64","key":"b7ca8639b93cb98c34ee6a76669c3bbdc499c55473b8e083bf4b7dbec544c837","lane":"cross","parents":["39448573b53cbd25fdc467aca701b0af8150b91e"],"secs":133,"stamp":"0bb666a7e98e7571152f1ca73ea6f0fc","tree":"3b38594f9c222e28397575c38921daa3f9c2d8f6","v":1,"via":"run"}
Ci-Attestation: {"at":1791948662,"gate":"rust/aarch64-apple-darwin/clippy","host":"linux-x86_64","key":"b7ca8639b93cb98c34ee6a76669c3bbdc499c55473b8e083bf4b7dbec544c837","lane":"cross","parents":["39448573b53cbd25fdc467aca701b0af8150b91e"],"secs":133,"stamp":"9a67909f84e472e887188cdab095925d","tree":"3b38594f9c222e28397575c38921daa3f9c2d8f6","v":1,"via":"run"}
Ci-Attestation: {"at":1791948662,"gate":"rust/aarch64-apple-darwin/dylint","host":"linux-x86_64","key":"b7ca8639b93cb98c34ee6a76669c3bbdc499c55473b8e083bf4b7dbec544c837","lane":"cross","parents":["39448573b53cbd25fdc467aca701b0af8150b91e"],"secs":133,"stamp":"2cee945c33914185f83785ebdf9d457d","tree":"3b38594f9c222e28397575c38921daa3f9c2d8f6","v":1,"via":"run"}
Ci-Attestation: {"at":1791948662,"gate":"rust/x86_64-apple-darwin/clippy","host":"linux-x86_64","key":"b7ca8639b93cb98c34ee6a76669c3bbdc499c55473b8e083bf4b7dbec544c837","lane":"cross","parents":["39448573b53cbd25fdc467aca701b0af8150b91e"],"secs":133,"stamp":"fb8aaba96391d034bc9a38de9b27c1c1","tree":"3b38594f9c222e28397575c38921daa3f9c2d8f6","v":1,"via":"run"}
Ci-Attestation: {"at":1791948662,"gate":"rust/x86_64-apple-darwin/dylint","host":"linux-x86_64","key":"b7ca8639b93cb98c34ee6a76669c3bbdc499c55473b8e083bf4b7dbec544c837","lane":"cross","parents":["39448573b53cbd25fdc467aca701b0af8150b91e"],"secs":133,"stamp":"7372f51f6054acbd6eeb3f4c859f0377","tree":"3b38594f9c222e28397575c38921daa3f9c2d8f6","v":1,"via":"run"}
Ci-Attestation: {"at":1791948662,"gate":"cpp/linux-x64/tier2","host":"linux-x86_64","key":"5d2efe0d19394bd1ec99a12f5278fec3d17f6e9a15d32a17a1e1d89d8d24c3d2","lane":"tier2-linux","parents":["39448573b53cbd25fdc467aca701b0af8150b91e"],"secs":128,"stamp":"26b01a405501dafefb30828d25db9197","tree":"3b38594f9c222e28397575c38921daa3f9c2d8f6","v":1,"via":"run"}
@zackees

zackees commented Oct 14, 2026

Copy link
Copy Markdown
Member Author

Pushed the unchanged stamped head 2d795859cedbd66630350b14b5c3524d9f146e7e. Fresh lint/unit and all four attestation lanes passed (469 seconds); OFF/ON each pass 193 C tests with 1766 identical exports. This adds the genuine duplicate-key RED/GREEN correction to the previously pushed input-expression fix.

The corrected actual PR workflow now creates and executes Build AppImage job 115665794810 in run 38506716441. It remains draft while the actual absent-input build and packaged saved-profile tests finish. The preceding run 38504479307 failed before any jobs and is retained as RED evidence.

@zackees
zackees marked this pull request as ready for review October 14, 2026 03:49
@zackees
zackees merged commit 0bbe544 into master Oct 14, 2026
27 checks passed
@zackees
zackees deleted the fix/appimage-rust-input-default branch October 14, 2026 03:50
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.

bug: AppImage: absent Rust input selects C-only builds on push and PR events

1 participant