You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
AppOlObjectsFolderTreeServiceLifecycleTests.TerminalNotificationHookFailure_DoesNotReplaceDispatchFault in TaskMaster.Test/AppGlobals/AppOlObjectsFolderTreeServiceTests.cs asserts sut.InvokedTerminalHookCount.Should().Be(1) immediately after await run.Operation.ReleaseAsync() with no synchronization barrier guaranteeing the terminal hook has executed. The test is non-deterministic and failed once on CI with identical code passing on re-run.
Environment
OS/version: GitHub Actions windows-latest runner (CI job mstest-coverage / Run MSTest suite with coverage); also reproducible in principle on any Windows host running the MSTest suite.
Python version: n/a (C# / MSTest).
Command/flags used: vstest.console.exe TaskMaster.Test\bin\Debug\TaskMaster.Test.dll /EnableCodeCoverage /InIsolation (the CI coverage step).
Data source or fixture: ControlledUiDispatcher(DispatchMode.Pending, fault: ...) with CreateSut(dispatcher, throwFromTerminalHook: true); no external data.
Run the TaskMaster.Test assembly repeatedly under vstest (loop or CI re-runs).
Observe TerminalNotificationHookFailure_DoesNotReplaceDispatchFault intermittently fail with Expected sut.InvokedTerminalHookCount to be 1, but found 0.
Expected Behavior
The test deterministically observes the terminal hook invocation before asserting on InvokedTerminalHookCount, and passes on every run.
Actual Behavior
On PR #746 the mstest-coverage required check failed once asserting InvokedTerminalHookCount to be 1 and finding 0, then passed on re-run. The same check had already passed against head e6c488bf, which contained every production and test change; the only delta to the failing head was three Markdown audit files, so identical code produced opposite outcomes.
Medium: a flaky required CI check blocks unrelated pull requests and forces re-runs; it also violates the determinism requirement in the General Unit Test Policy (UT1) and the test-determinism objective of issue #729.
Summary
AppOlObjectsFolderTreeServiceLifecycleTests.TerminalNotificationHookFailure_DoesNotReplaceDispatchFaultinTaskMaster.Test/AppGlobals/AppOlObjectsFolderTreeServiceTests.csassertssut.InvokedTerminalHookCount.Should().Be(1)immediately afterawait run.Operation.ReleaseAsync()with no synchronization barrier guaranteeing the terminal hook has executed. The test is non-deterministic and failed once on CI with identical code passing on re-run.Environment
windows-latestrunner (CI jobmstest-coverage / Run MSTest suite with coverage); also reproducible in principle on any Windows host running the MSTest suite.vstest.console.exe TaskMaster.Test\bin\Debug\TaskMaster.Test.dll /EnableCodeCoverage /InIsolation(the CI coverage step).ControlledUiDispatcher(DispatchMode.Pending, fault: ...)withCreateSut(dispatcher, throwFromTerminalHook: true); no external data.Steps to Reproduce
mainat or after merge commita679cd08(PR fix(729): remove test-determinism debt via TimeProvider seam, live Form removal, and Console.Out serialization #746).TaskMaster.Testassembly repeatedly under vstest (loop or CI re-runs).TerminalNotificationHookFailure_DoesNotReplaceDispatchFaultintermittently fail withExpected sut.InvokedTerminalHookCount to be 1, but found 0.Expected Behavior
The test deterministically observes the terminal hook invocation before asserting on
InvokedTerminalHookCount, and passes on every run.Actual Behavior
On PR #746 the
mstest-coveragerequired check failed once assertingInvokedTerminalHookCountto be 1 and finding 0, then passed on re-run. The same check had already passed against heade6c488bf, which contained every production and test change; the only delta to the failing head was three Markdown audit files, so identical code produced opposite outcomes.Logs / Screenshots
Expected sut.InvokedTerminalHookCount to be 1, but found 0.(FluentAssertions message from the failed CI run on PR fix(729): remove test-determinism debt via TimeProvider seam, live Form removal, and Console.Out serialization #746; recorded inartifacts/orchestration/parallel-orchestrator-state.jsonunderlatent_defects_pending_promotion).Impact / Severity
Medium: a flaky required CI check blocks unrelated pull requests and forces re-runs; it also violates the determinism requirement in the General Unit Test Policy (UT1) and the test-determinism objective of issue #729.
Source
From: docs/features/potential/2026-09-03-terminal-notification-hook-test-lacks-sync-barrier.md