Summary
After #942 moved CompletePrime to report the fault first and clear the marker second, a logError sink that throws skips the _primeTasks.TryRemove. The stale prime marker then blocks later re-primes for that engine, which is the #944 symptom by a different cause, and the continuation task faults unobserved.
Environment
- OS/version: Windows 11 / windows-latest
- Python version: n/a (C#, .NET Framework 4.8)
- Command/flags used: n/a
- Data source or fixture:
TaskMaster/Ribbon/EngineToggleStateCoordinator.cs, CompletePrime
Steps to Reproduce
- Construct the coordinator with a
logError delegate that throws.
- Fault a prime, so that
EngineActiveAsync faults.
- Call
GetPressed again for the same engine.
Expected Behavior
The marker is cleared whether or not the log sink throws, a later GetPressed starts a new prime, and no task faults unobserved.
Actual Behavior
The marker stays registered, no re-prime starts, and the continuation task faults unobserved.
Logs / Screenshots
Impact / Severity
Source
From: docs/features/potential/2026-09-30-engine-toggle-throwing-log-sink-leaves-stale-prime-marker.md
Summary
After #942 moved
CompletePrimeto report the fault first and clear the marker second, alogErrorsink that throws skips the_primeTasks.TryRemove. The stale prime marker then blocks later re-primes for that engine, which is the #944 symptom by a different cause, and the continuation task faults unobserved.Environment
TaskMaster/Ribbon/EngineToggleStateCoordinator.cs,CompletePrimeSteps to Reproduce
logErrordelegate that throws.EngineActiveAsyncfaults.GetPressedagain for the same engine.Expected Behavior
The marker is cleared whether or not the log sink throws, a later
GetPressedstarts a new prime, and no task faults unobserved.Actual Behavior
The marker stays registered, no re-prime starts, and the continuation task faults unobserved.
Logs / Screenshots
Impact / Severity
Source
From: docs/features/potential/2026-09-30-engine-toggle-throwing-log-sink-leaves-stale-prime-marker.md