Observe storage errors before journal and timer decisions - #206
Merged
Merged
Conversation
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.
Storage-error formatting held shared journal or timer decision locks. A delayed retirement error could block capture/diagnostic admission and retention metadata, while timer load/save errors could block disarm, rearm and status. Both stores now observe error messages before taking their admission/decision mutex, then validate current ownership and publish the same diagnostics.
The journal regression fails on the prior implementation and now preserves independent capture, diagnostics, retained-error reporting and cleanup retry. Both timer load/save regressions also fail before the fix; delayed errors no longer block independent arm decisions or publish into a different arm. Twenty combined journal/timer observation repetitions passed.
Final validation: full uncached race suite passed (manager 59.973s, journal 42.594s, timers 3.305s), plus vet, Windows/Linux staticcheck, complete diff/privacy review and local documentation links. Exact source
c4f6341b55176940358736b462d624db0acc1828passed CI 34768748133 and the consolidated 57-case matrix: 50 manager, four journal and three timer cases, three repetitions per SYSTEM/headless standard-user identity (8.680s/6.613s). No cases skipped; process, linger and profile cleanup passed. All three binary hashes and source identity were verified in retained evidence. Full R2 acceptance remains open, including notification-reader admission.The initial candidate's broader lab run stopped when the PowerShell wrapper treated expected native stderr as a terminating script error (three completed cases passed, no test failures observed). Its partial evidence is retained; it is not qualification. The corrected wrapper retains stderr and checks every test-process exit code explicitly. A local three-run stderr rehearsal passed before the fresh final-source fixture was staged.