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
Release the history recording-mutation mutex before retention cleanup.
Add regression coverage proving cleanup can reacquire the guard after the history mutation.
Root cause
save_entry_with_all_metadata held the non-reentrant recording-mutation mutex while calling retention cleanup. Cleanup can delete old rows/files through a helper that reacquires the same mutex, leaving dictation stuck in Processing after ASR and history persistence.
Validation
Focused history regression and adjacent retention tests: passed.
Backend check: passed.
Full Rust library suite: 816 passed, 0 failed.
Rust formatting and diff checks: passed.
Windows dev installer build: passed.
Packaged native smoke: passed all phases.
WhiteKnight real dictation lane: not completed because the dedicated remote runner refused its pre-existing clipboard precondition; it failed closed before app startup and cleaned up successfully.
Base note
This branch was cut from local codex/packaged-insertion-safety, which is not currently present on origin. The draft therefore targets main and includes that branch's preceding commits; retarget it if that base branch is restored.
Give real-inference execution headroom beyond model loading
When --real-inference-wav uses the default timeout, the runner kills the phase after 90 seconds while VERBATIM_SMOKE_REAL_INFERENCE_TIMEOUT_MS gives the app the same 90 seconds solely to load the model. Startup time, the unbounded transcription call, status serialization, and the additional 2-second smoke-exit delay all occur outside that allowance, so a model that loads successfully near the deadline will always be terminated and reported as a smoke failure. Set the process timeout above the internal model-load timeout with enough margin for inference and shutdown.
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
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.
Summary
Root cause
save_entry_with_all_metadata held the non-reentrant recording-mutation mutex while calling retention cleanup. Cleanup can delete old rows/files through a helper that reacquires the same mutex, leaving dictation stuck in Processing after ASR and history persistence.
Validation
Base note
This branch was cut from local codex/packaged-insertion-safety, which is not currently present on origin. The draft therefore targets main and includes that branch's preceding commits; retarget it if that base branch is restored.