Skip to content

ci: preserve upstream checks and replace fork CI with one smoke test - #5

Merged
jmonster merged 2 commits into
mainfrom
ci/upstream-plus-one-smoke
Sep 20, 2026
Merged

jmonster merged 2 commits into
mainfrom
ci/upstream-plus-one-smoke

Conversation

@jmonster

@jmonster jmonster commented Sep 20, 2026 •

Copy link
Copy Markdown
Owner

Result: upstream unchanged, one extra test, six-second hosted job

Current head: aad69fc33f87bde8f00757998b3af56401e2cbf9.
Current main incorporated: 94937a02a1db83c30904bfedd66012c81144e8d1.
Tree: 9b03911be1f787440e79abd807df7f676925a781.

The new smoke job passed for this exact head: run 35480798887, job 105998111176. GitHub reports execution from 01:12:50 to 01:12:56 UTC on September 20, 2026: six seconds including checkout, plus approximately three seconds between job creation and start. The compile-and-run step begins and ends within the same reported second. This is one observed run, not a latency guarantee or billed-minute measurement.

The unchanged upstream Build check and translation workflow were still running at the latest check; their results are not assumed successful. No merge, release or manual full-application dispatch was performed.

Fork-specific work per PR update Current main This PR
Workflows 4 1
Runner jobs 7 1 Ubuntu job
Additional complete Cemu builds 4: macOS ARM/Intel, Linux, Windows 0
SDK regression reruns Package, rumble, session, SDL and host suites 0
Fork test/harness files 11 1 C++ smoke scenario
Fork artifact/cache uploads Sources, applications, diagnostics and dependencies 0

The remaining job has a two-minute timeout and a ten-second execution limit for the smoke binary. It runs once per pull-request update, or on manual request. There is no platform matrix, dependency/submodule checkout, package installation, SDK build, application build, extra push run, scheduled run or aggregate test runner. Superseded runs are cancelled.

This does not make all Cemu CI two minutes. Upstream's build and translation workflows retain their original triggers, jobs, matrices, caches and uploads. The table describes only additional fork work; no dollar savings are inferred.

Upstream and production code remain unchanged

All five inherited workflow blobs match cemu-project/Cemu and are retained byte-for-byte: build.yml, build_check.yml, deploy_release.yml, determine_release_version.yml and generate_pot.yml.

No production source, upstream test, dependency gitlink, CMake configuration, application build helper, license or runtime guard changes relative to current main. The upstream information section of the README is also unchanged.

Main advanced while this PR was being opened: automatic-connection #4 merged as 94937a0. The original conflict has been reconciled by incorporating that main commit without force-pushing. All merged automatic-connection production code, its SDK pin, user-facing controller guidance and hardware acceptance instructions are preserved. The four additional test files from #4 are removed along with the earlier fork suite, keeping the requested one-test limit.

The one retained test

tests/switch2kit/smoke.cpp is one 85-line C++ lifecycle scenario including the real, unchanged Switch2KitSession.h. It controls only the external host and save-callback boundaries. It exercises default-off startup, failed discovery and explicit retry, an active session surviving failed rescan, failed-save consent preservation, automatic opt-in, Disconnect suppressing polling/restart, explicit restart, opt-out preserving live input, and terminal shutdown.

It compiles once and executes once with the system C++20 compiler. It requires no external dependencies, does not enforce source text/prose, and retains its checks under NDEBUG. It does not load a real configuration file or test an actual controller.

The old mapping/identity/rollback, configuration-file, source-wiring, desktop configuration/CRT and SDK host-file harnesses are deleted, not hidden behind a wrapper or moved into a manual matrix. Three extra workflows are deleted; native-switch2kit.yml becomes the small smoke workflow. The final diff against current main is 18 files, 130 added lines and 1,537 deleted lines.

Coverage and distribution tradeoff

This smoke scenario does not replace full enabled Cemu/SDL/SDK integration, mappings, configuration-file persistence, packaging/runtime relocation, GUI startup, Mac/Windows compatibility or physical-controller qualification. The unchanged upstream builds keep ENABLE_SWITCH2KIT disabled by default. SDK testing belongs in the SDK repository; an SDK pass alone is not evidence of an enabled Cemu application working.

Controller-enabled application artifacts will no longer be generated automatically. The existing local macOS/Linux/Windows build helpers remain, and README/controller instructions now point to them rather than removed workflows or merged implementation branches. Existing artifacts are not deleted and retain their original expiration. Validate the exact enabled build on its target platform before distributing it. No new production release or hardware acceptance is claimed.

Validation

  • Initial baseline files were hash-verified against main. Reconciliation uses the recorded source archive for tree bf5667104bc5133546aaff53a28799bcfe57f892, which matches the newly merged main tree. The current production session header was also checked directly against GitHub.
  • All five inherited workflow files remain byte-identical. All six final YAML files parse with duplicate-key rejection; the new Bash command passes syntax checking.
  • The final scenario passes GCC and Clang: 0.302 / 0.357 seconds compilation, approximately 0.002 seconds execution locally. The exact workflow command passes without dependencies and in a path containing spaces. These are local observations, not hosted guarantees.
  • An optimized -O2 -DNDEBUG build passes with checks active.
  • All ten disposable mutation controls compile and are rejected at runtime: unwanted startup, enabling after failed startup, disabling after failed rescan, unconditional pumping, swallowed discovery errors, missing stop/shutdown fences, missing shutdown forwarding, failed saves changing consent and opt-out stopping the host. These controls are not committed as extra tests.
  • Updated documentation has no removed test commands or download-workflow links. Automatic-connection behavior and hardware acceptance guidance are retained. git diff --check passes.
  • All four final uploaded blobs match locally tested content. The remote comparison is exactly the intended 18 CI/test/documentation paths, with current main as the merge base and zero commits behind.
  • The exact final-head smoke workflow passed on GitHub as linked above. Unchanged upstream jobs remain separate checks.

The branch contains the cleanup commit plus one main-reconciliation commit. No history was rewritten, repository/billing settings were changed, or existing artifacts were deleted.

Retain all five inherited workflows byte-for-byte. Replace four fork-specific workflows and seven extra jobs with one dependency-free C++ session lifecycle smoke test, a two-minute Ubuntu job and superseded-run cancellation. Remove the redundant SDK, source-contract, native application and packaging test harnesses rather than hiding them behind a single runner.

Leave production sources, dependency pins, CMake and platform build helpers unchanged. Update controller documentation to explain the narrower coverage and local source builds instead of automatic application artifacts.

Validated the exact smoke command without dependencies; GCC, Clang and optimized NDEBUG builds pass. Eight disposable mutation controls fail as expected. YAML, Bash syntax, baseline blob checks and whitespace checks pass. Complete native applications and current-head GitHub Actions are not claimed validated.
Main advanced to 94937a0 when automatic-connection PR #4 merged during publication of this cleanup. Preserve its complete production source tree, SDK pin, controller documentation and hardware acceptance guidance. Resolve workflow/test conflicts in favor of the requested single-test policy, including removing the four newly merged test files.

Adapt the same dependency-free lifecycle scenario to the current session API. Exercise failed save, opt-in, explicit Disconnect, restart, opt-out preserving input and terminal shutdown without an additional test or runner. GCC, Clang and optimized NDEBUG builds pass; all ten disposable mutation controls are rejected. Five inherited workflows remain byte-identical, and the final diff against current main is limited to 18 CI/test/documentation paths. No native application or current-head GitHub CI pass is claimed.
@jmonster
jmonster merged commit 7730c7d into main Sep 20, 2026
7 checks passed
@jmonster
jmonster deleted the ci/upstream-plus-one-smoke branch September 20, 2026 01:39
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.

1 participant