Harden the CI workflow - #73
Merged
Merged
Conversation
danielchalmers
force-pushed
the
production-fixes-and-ci
branch
from
August 1, 2026 22:05
727fe0a to
a485078
Compare
- Build and test in Release. There are three #if DEBUG blocks in shipped code (log level, the update check, drive scanning), so a green Debug run said nothing about the binaries users actually get. - Add --blame-hang with a 5m inactivity timeout. The suite's polling helpers have deadlines, but a Dispatcher.Invoke that never returns is not polled, and today a deadlock regression burns a 6-hour Windows runner instead of failing with the offending test named. - Upload the trx on failure so a red build leaves more than raw scrollback. - Gate on dotnet format. AGENTS.md mandates it but nothing enforced it, and it caught real drift while the test-suite work was in progress. - Install WiX after the test step so build, format, and test failures short-circuit ahead of the tool install. - Add a concurrency group and workflow_dispatch to the workflow. Cancelling in-progress main runs is safe here because build.yml's artifacts are never consumed; releases come from the tag-triggered deploy.yml, which builds its own. Also documents the test naming and comment conventions in AGENTS.md, neither of which was written down. Left out deliberately: -warnaserror. The workflow pins a floating dotnet-version (10.0.x), so an SDK patch that tightens a warning would break every open PR at once.
danielchalmers
force-pushed
the
production-fixes-and-ci
branch
from
August 1, 2026 22:09
a485078 to
54713e9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CI-only follow-up to #72. No production or test code changes.
#if DEBUGblocks in shipped code (log level, the update check, drive scanning) mean a green Debug run said nothing about the binaries users actually get--blame-hang --blame-hang-timeout 5mDispatcher.Invokethat never returns isn't polled. Today a deadlock regression burns a 6-hour Windows runner instead of failing in minutes with the offending test namedif-no-files-found: errordotnet format --verify-no-changesgateAGENTS.mdmandates it, nothing enforced it, and commit 35c75d8 "Apply dotnet format" shows the rule gets missed. Placed after Build so a compile error is reported first. Passes clean today, so it's a zero-fix ratchetsetup-dotnetkeeps~/.dotnet/toolson PATH for the whole job, anddeploy.ymluses the same composite action so it benefits identicallyconcurrency+workflow_dispatchbuild.yml's artifacts are never consumed — releases come from the tag-triggereddeploy.yml, which builds its ownAlso writes down two conventions that were being followed but never documented: the
Subject_Scenario_Expectationtest naming, and the comment style (one sentence per line, no em dashes).Left out deliberately:
-warnaserror. The workflow pins a floatingdotnet-version: 10.0.x, so an SDK patch that tightens a warning would break every open PR at once, with the fix needing to land before anything else can merge. The build is at zero warnings today if you want it later.Verified locally:
dotnet build -c Releaseanddotnet test -c Releaseclean at 365 tests,dotnet format --verify-no-changesexits 0, and the app launches and scans 177 real clips with no errors logged.