Summary
Two residuals left by issue 809, both in UtilitiesCS threading. First, the branch-2 residual in
SynchronizationContextAwaiter.IsCompleted at UtilitiesCS/Threading/UiThread.cs:177-178 is
unhardened. Second, 809's AC5 merged unchecked because its apartment-state measurement was never
taken: the probe inferred the apartment from a research premise that the same delivery falsified.
Environment
- OS/version: Windows 11 Pro 10.0.26200, .NET Framework 4.8
- Python version: not applicable
- Command/flags used:
vstest.console.exe over UtilitiesCS.Test.dll and QuickFiler.Test.dll
- Data source or fixture: no live Outlook host required
Steps to Reproduce
- Read
UtilitiesCS/Threading/UiThread.cs:177-178 and observe the second IsCompleted branch is
not hardened the way branch 1 was by issue 809.
- Read
UtilitiesCS.Test/Properties/AssemblyInfo.cs:18 and confirm it carries the repository's only
assembly-level Parallelize attribute.
- Search for a
.runsettings setting ExecutionThreadApartmentState; none exists.
- Read issue 809's
[P0-T15] probe evidence and confirm it never calls
Thread.CurrentThread.GetApartmentState().
Expected Behavior
Both IsCompleted branches enforce the same contract, and AC5's claim about MTA behaviour rests on a
measurement of the executing thread's apartment state rather than on an inference.
Actual Behavior
Branch 2 is unhardened, so the two branches do not enforce the same contract.
For AC5: because no .runsettings sets ExecutionThreadApartmentState and the only assembly-level
Parallelize attribute is the one at AssemblyInfo.cs:18, the probe most likely ran STA and no MTA
measurement exists. The probe inferred apartment state from research premise R4, which issue 809's
own delivery falsified.
Consequently the earlier statement that the issue 782 latch regression "did not reproduce" was
withdrawn during 809's execution. The correct status is unknown, not negative. Correction
sections were committed to three evidence artifacts (p0-t15, p6-t4, p6-t13 section 6) so the
withdrawn claim did not merge as an unqualified assertion, and AC5 was left unchecked in spec.md.
Logs / Screenshots
Impact / Severity
Medium: merged work carries one unmet acceptance criterion, and an asymmetric contract between two
branches of the same predicate is exactly the shape that produced issues 784, 787 and 788.
Source
From: docs/features/potential/2026-09-08-uithread-iscompleted-branch2-residual-and-ac5-apartment-measurement.md
Summary
Two residuals left by issue 809, both in
UtilitiesCSthreading. First, the branch-2 residual inSynchronizationContextAwaiter.IsCompletedatUtilitiesCS/Threading/UiThread.cs:177-178isunhardened. Second, 809's AC5 merged unchecked because its apartment-state measurement was never
taken: the probe inferred the apartment from a research premise that the same delivery falsified.
Environment
vstest.console.exeoverUtilitiesCS.Test.dllandQuickFiler.Test.dllSteps to Reproduce
UtilitiesCS/Threading/UiThread.cs:177-178and observe the secondIsCompletedbranch isnot hardened the way branch 1 was by issue 809.
UtilitiesCS.Test/Properties/AssemblyInfo.cs:18and confirm it carries the repository's onlyassembly-level
Parallelizeattribute..runsettingssettingExecutionThreadApartmentState; none exists.[P0-T15]probe evidence and confirm it never callsThread.CurrentThread.GetApartmentState().Expected Behavior
Both
IsCompletedbranches enforce the same contract, and AC5's claim about MTA behaviour rests on ameasurement of the executing thread's apartment state rather than on an inference.
Actual Behavior
Branch 2 is unhardened, so the two branches do not enforce the same contract.
For AC5: because no
.runsettingssetsExecutionThreadApartmentStateand the only assembly-levelParallelizeattribute is the one atAssemblyInfo.cs:18, the probe most likely ran STA and no MTAmeasurement exists. The probe inferred apartment state from research premise R4, which issue 809's
own delivery falsified.
Consequently the earlier statement that the issue 782 latch regression "did not reproduce" was
withdrawn during 809's execution. The correct status is unknown, not negative. Correction
sections were committed to three evidence artifacts (
p0-t15,p6-t4,p6-t13section 6) so thewithdrawn claim did not merge as an unqualified assertion, and AC5 was left unchecked in
spec.md.Logs / Screenshots
p6-t13section 5 for the branch-2 residual, and the three correctedevidence artifacts named above for the withdrawal.
Impact / Severity
Medium: merged work carries one unmet acceptance criterion, and an asymmetric contract between two
branches of the same predicate is exactly the shape that produced issues 784, 787 and 788.
Source
From: docs/features/potential/2026-09-08-uithread-iscompleted-branch2-residual-and-ac5-apartment-measurement.md