Fix empty final transcription for English recordings #7
Open
opened 2026-09-13 13:34:40 +00:00 by kayg
·
14 comments
No Branch/Tag specified
dev
wave19/desktop-test
wave19/per-space-state
wave19/first-space-integration
wave19/first-space-draft-transfer
wave19/block-editor-craft
codex/wip/root-conflict-snapshot-20260914
wave12/first-space-draft-transfer
wave14/editor-overnight-combined
wave17/editor-diagnostics-3bbb
wave16/code-block-polish
wave16/image-controls
wave16/event-title-crash-control
wave16/image-preview-dispatch-repair
wave16/event-title-lifecycle-qa
wave16/editor-list-refinements
wave17/editor-layout-correction
wave16/event-edit-date
wave16/note-title-presentation
wave16/editor-final-combined
wave18/document-chrome-repair
wave17/cross-event-drop
wave16/editor-structural-combined
wave16/editor-hover-margins
wave16/editor-caret-relocation-perf
wave16/inspector-polish
wave16/image-preview-integration
wave16/english-transcription
wave16/document-background-edge
wave16/sidebar-live-layout
wave15/image-preview-ownership-repair
wave15/editor-handle-six-dot
wave15/titlebar-public-repair
wave15/sidebar-initial-restoration
wave15/editor-formatting-tooltips
wave15/editor-drag-mounted-repair
wave15/image-preview-foundation-isolated
wave15/editor-block-drag-feedback
wave15/sidebar-attachment-layout
wave14/editor-inline-plain-fastpath
wave14/editor-rendered-paste-replacement
wave14/clipboard-awaited-shutdown
wave14/editor-selectall-toolbar-perf
fix/clipboard-body-undo-group
diagnostic/clipboard-insertion-491
wave14/sidebar-unselected-drag-v2
diagnostic/sidebar-unselected-drag-trace
diagnostic/clipboard-phase-0225
wave14/sidebar-prime-access
wave14/nested-projection-handle-test-fix
wave14/sidebar-unselected-event-drag
fix/clipboard-task-ownership-6318
fix/editor-resource-url-invalidation
codex/wip/editor-handle-render-diagnostic-20260914
fix/central9c9-clipboard-crash
codex/wip/editor-handle-diagnostic-20260914
wave14/sidebar-event-runtime-repair
wave14/nested-projection-runtime-fix
wave14/sidebar-event-test-fixtures
wave14/sidebar-attachment-overlap
integration/rendered-image-clipboard
wave14/sidebar-event-preview-integration
wave14/editor-nested-list-integrate
wave14/editor-nested-list-projection
task/rendered-image-clipboard
wave14/sidebar-paste-preview-integration
wave14/sidebar-event-day-dnd
wave14/editor-preview-next
wave14/editor-list-handle-integrated
task/native-basic-paste
wave14/editor-list-keyboard-audit
task/native-clipboard-contract
codex/wip/editor-handle-geometry-20260914
wave14/editor-block-drag
wave14/editor-drag-integrated
wave14/editor-empty-marker-map-publication
wave14/editor-empty-marker-runtime-diag
wave14/editor-empty-marker-preview
wave14/editor-empty-marker-host-repro
wave14/editor-empty-marker-probe
codex/wip/editor-hr-leaf-fix-20260914
wave14/event-attachment-drop
wave14/editor-empty-marker-paint
wave14/editor-drop-list-preview
wave14/editor-finder-drop
wave14/editor-rule-caret
wave14/editor-list-enter-next
wave14/editor-image-qa
wave14/editor-mode-commands
wave13/editor-code-performance-preview
wave14/sidebar-overlap-repair
wave13/cross-day-compile-repair
wave13/spotlight-retry
wave13/editor-chrome-runtime-repair
wave13/editor-inline-fast-path
codex/wip/detached-87aa-20260914
wave12/editor-viewport-polish
wave12/craft-code-block-polish
wave12/editor-asset-return-preview
wave12/voice-polish-preview
wave12/editor-native-return-runtime-repair
wave12/editor-asset-focus
wave12/cross-day-reviewed-integration
wave12/optional-voice-provider-finish
wave12/event-move-descriptor-compile-fix
wave12/editor-image-geometry-preview
wave12/editor-native-return-undo-repair
wave12/image-native-geometry-fixture
wave12/editor-pattern-preview
wave12/editor-bullet-continuation
wave12/editor-top-chrome
wave12/voice-composer-restart
wave12/speech-variable-buffer-repair
wave12/editor-image-preview
wave12/event-move-descriptor-scale
wave12/editor-image-geometry
wave12/afternoon-ui-preview
wave12/sidebar-hosted-bounds-repair
wave12/sidebar-overlap-live
wave12/speech-e2e-verification
wave12/mentions-polish-finish
wave12/editor-structural-range-repair
wave12/sidebar-fade-desktop-preview
wave12/sidebar-design-ledger
wave12/voice-assets-physical-fixtures
wave12/native-event-marker-polish
wave12/sidebar-fade-undo-preview
wave12/event-move-fence-corrections
wave12/sidebar-fade-boundary-repair
wave12/parent-space-entry-integration
wave12/editor-undo-group-repair
wave12/native-event-row-performance
wave12/parent-swipe-integration
wave12/metadata-noteid-test-fix
wave12/space-composer-generation-fix
wave12/voice-lifecycle-clock-fixture
wave12/sidebar-child-binding
wave12/voice-provider-pool-preview
wave12/composer-recording-preview
wave12/event-cross-day-store-corrections
wave12/voice-async-test-locks
wave12/speech-buffer-lease-fix
wave12/composer-no-top-readouts
wave12/sidebar-child-target
wave12/space-required-composer
wave12/editor-correctness-preview
wave12/voice-provider-compile-corrected
wave12/event-move-integration
wave12/voice-assets-compile-fix
wave12/parakeet-compile-fix
wave12/note-metadata-flexibility
wave12/sidebar-event-drag-drop
wave12/editor-paste-source-guard
wave12/note-asset-import-safety-causal-tests
wave12/note-asset-import-safety
wave12/editor-readonly-command-guards
wave12/voice-provider-integration
wave12/editor-format-flexibility
wave12/hosted-sidebar-ui-sdk-fix
wave12/event-cross-day-store
wave12/voice-app-wiring
wave12/voice-parakeet-assets
wave12/voice-hosted-await-fix
wave12/event-edit-date-guard
wave12/event-cross-day-app
wave12/network-client-entitlement
wave12/sidebar-row-overlap
wave12/voice-settings-surface
wave12/parakeet-capture-adapter
wave12/task-marker-normalization
wave12/voice-polish-integration
wave12/voice-capture-hardening
wave12/voice-provider-settings-plan
wave12/copied-space-editor-io
wave12/hosted-background-sendability
wave12/voice-stop-nlp
wave12/voice-fixture-roots
wave12/voice-claim-collision
wave12/sidebar-add-swipe-plan
wave12/copied-space-app-wiring-plan
wave12/voice-fence-stat-compilefix
wave12/composer-dismiss-crash-hotfix
wave12/voice-retainer-defer-fix
wave12/overnight-recovery-space-preview
wave12/background-checkpoint-compilefix
wave12/copied-space-enumeration-fix
wave12/copied-space-local-state
wave12/voice-fence-fixture-fix
wave12/voice-manifest-fd-fix
wave12/voice-recovery-publication-proof
wave12/voice-retainer-bytecount-fix
wave12/overnight-navigation-background-compilefix
wave12/navigation-work-diagnostic
wave12/overnight-navigation-background-preview
wave12/background-import-bounds
wave12/overnight-voice-lifecycle-preview
wave12/voice-frozen-claim
wave12/voice-input-seam
wave12/voice-recovery-compile-fix
wave12/voice-terminal-cleanup-plan
wave12/voice-recovery-activation-plan-current
wave12/overnight-runtime-probe-preview
wave12/overnight-sandbox-startup-preview
wave12/startup-geometry-diagnostic
wave12/voice-source-sandbox-fix
wave12/image-root-sandbox-fix
wave12/perf-scroll-zero-args
wave12/overnight-document-geometry-preview
wave12/native-document-geometry-diagnostic
wave12/overnight-draft-root-preview
wave12/voice-recovery-c-session-fence
wave12/draft-root-direct-open
wave12/hosted-single-module-linkage
wave12/overnight-voice-recovery-preview
wave12/voice-recovery-checkpoint-a-finalization
wave12/copied-space-local-state-plan
wave12/overnight-refresh-hosted-preview
wave12/incremental-refresh-bounded-load
wave12/raw-source-reconciliation-test-fix
wave12/overnight-rendering-startup-preview
wave12/draft-root-diagnostic
wave12/day-event-bulk-load
wave12/speech-asset-install-test-preview
wave12/hr-material-contrast
wave12/height-clamp-followup
wave12/voice-recovery-checkpoint-a-corrections
wave12/overnight-cstore-caret-preview
wave12/voice-recovery-checkpoint-a
wave12/editor-adjacent-caret-boundary-v3
wave12/voice-recovery-index-query-fix
wave12/editor-adjacent-caret-boundary-v2
wave12/voice-recovery-index-query
wave12/startup-collector-empty-args
wave12/editor-adjacent-caret-boundary
wave12/overnight-hr-storage-preview
wave12/hr-native-diagnostic-followup
wave12/hr-native-diagnostic
wave12/overnight-storage-settings-preview
wave12/snapshot-native-move-followup
wave12/speech-local-fallback
wave12/settings-stream-test-compilefix
wave12/snapshot-path-identity-followup
wave12/corefrontmatter-join-fastpath
wave12/speech-fallback-plan
wave12/overnight-caret-control-registry
wave12/editor-registry-compilefix
wave12/voicea-test-compilefix
wave12/overnight-caret-control-ready
wave12/voicea-enum-compilefix
wave12/voice-recovery-phaseb
wave12/overnight-caret-control
wave12/overnight-polish-storage-preview
wave12/voicea-foundation-compilefix
wave12/snapshot-path-identity
wave12/overnight-native-polish-preview
wave12/hr-rule-geometry
wave12/speech-conversion-fixture
wave12/editor-deferred-caret
wave12/overnight-hosted-lifetime-preview
wave12/marker-glyph-clipping
wave12/voice-recovery-activation
wave12/overnight-package-fixture-preview
wave12/overnight-lifetime-voice-preview
wave12/app-tests-cleanup
wave12/snapshot-physical-fixtures
wave12/event-date-title-punctuation
wave12/overnight-lifetime-voice-plan
wave12/overnight-draw-before
wave12/overnight-picker-event-preview
wave12/settings-watcher
wave12/event-date-title-fix
wave12/note-background-picker-fix
wave12/editor-lifetime
wave12/overnight-draw-preview
wave12/snapshot-attribute-compile-fix
wave12/editor-accepted-draw-trace
wave12/overnight-runtime-preview
wave12/composer-test-concurrency-fix
wave12/editor-caret-performance
wave12/overnight-snapshot-correction
wave12/settings-model-callbacks
wave12/overnight-full-preview
wave12/overnight-store-preview
wave12/rendered-bullet-fix
wave12/settings-document-fixture-fix
wave12/composer-task-pill-ui
wave12/overnight-roadmap-preview
wave12/task-tag-readouts
wave12/event-snapshot-dependency
wave12/h1-strict-preview
wave12/settings-store-await-fix
wave12/settings-store-test-fix
wave12/overnight-pill-preview
wave12/composer-pill-accent-fix
wave12/composer-pill-final
wave11/sidebar-cold-index-prime
wave12/overnight-preview
wave11/voice-draft-recovery
wave11/voice-transcription-finish
wave11/note-save-rename
wave11/task-event-preview
wave11/settings-enabled-plugin-section
wave11/pill-fade-preview
wave11/sidebar-top-fade-regression
wave11/event-sidebar-preview
wave11/composer-pill-restore
wave11/settings-plugins-portability
wave11/composer-hash-semantics
wave11/event-composer-edit
wave11/sidebar-spacing-followup
wave11/editor-performance-evidence
wave11/voice-preview
wave11/voice-stop-repair
wave11/polish-verification
wave11/plugins-settings-ui
wave11/bullet-list-regression
wave11/sidebar-insert-stability
wave11/polish-preview
wave11/document-style-repair
wave11/composer-native-readouts
wave11/mentions-disclosure-motion
wave11/sidebar-swipe-compact
wave11/legacy-helper-path-fix
wave11/persistence-integration
wave11/capsule-instant-presentation
wave11/native-link-activation
wave11/desktop-integration
wave11/link-integration
wave11/synthetic-note-names
wave11/composer-overflow-actions
wave11/legacy-root-links
wave11/note-title-punctuation
wave11/note-title-metadata
wave11/spotlight-navigation
wave11/spotlight-trace-baseline
wave11/note-name-collisions
wave11/identity-query-indexes
wave11/note-heading-title
wave11/capsule-scroll-chrome
wave11/sidebar-context-menu
wave11/spotlight-metadata
wave11/rename-link-repair
wave11/analytics-native
wave11/sidebar-scroll-restoration
wave11/sidebar-bottom-spacing
wave11/capsule-optical-alignment
wave11/markdown-link-resolution
wave11/command-results-layout
wave11/capsule-outside-dismissal
wave11/events-folder
wave11/capsule-query-retention
wave11/capsule-snap-preview
wave11/composer-controls-preview
wave11/sidebar-fade-preview
wave11/selection-lookup
wave11/note-creation-routing
wave11/sidebar-header-spacing
wave11/block-editor
wave11/space-onboarding
wave11/space-terminology
wave4/voice
wave2/search
wave4/glur-probe
wave7/cli-integration
wave12/inspector-style
wave4/document-presentation
wave2/cli
wave2/sidebar
No results found.
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
kayg/calternal-macos#7
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Request and current status
Capture/retention work exists, but audit has no verified successful final English transcript through the production path.
Acceptance
Obtain nonempty final English speech output through production PCM conversion/recognition. Verify Stop/cancellation/late-result fencing and playable retained unsent audio. Preserve existing user recordings.
Keep open until the user-facing outcome is verified in a delivered build. Source review or a successful build alone is not completion.
Worker: task (english-transcription), worktree
/Users/kayg/Developer/calternal-app/.worktrees/english-transcription, branchwave16/english-transcription, basefb4c66d5.State: investigating production VoiceCaptureSession PCM conversion and SpeechAnalyzer finalization for issue #7. Read issue #7, overnight roadmap audit, and voice recovery plans. Existing evidence proves retained 48 kHz mono Float32 CAF but does not prove a nonempty final English transcript.
Plan: trace the production input -> writer -> conversion -> analyzer -> final-result path; reproduce with the existing generated-PCM production-seam test; make a minimal voice capture/analyzer-only fix and focused test if a deterministic defect is found; then hand off the candidate to reviewer and QA. No ComposerModel/AppModel/sidebar or user desktop/vault changes.
Next action: inspect current conversion/finalization ordering and run focused checks on agents@mbp through the root build owner.
Worker: task (english-transcription), worktree
/Users/kayg/Developer/calternal-app/.worktrees/english-transcription, branchwave16/english-transcription.State: implemented candidate commit
0a282bd4(Preserve transcript when final speech result is empty).Changes:
Sources/CalternalSpeech/Module.swift: route SpeechTranscriber updates throughmergeSpeechTranscript; an empty final hypothesis now preserves the latest nonempty partial transcript and publishes that retained value as final. Nonempty finals keep the existing accumulation behavior.Tests/CalternalSpeechTests/VoiceCaptureLifecycleTests.swift: add deterministic coverage for empty-final preservation and nonempty-final accumulation.Rationale: production
publishpreviously assignedlatestTranscript = finalizedTranscriptfor every final result. An empty final result therefore erased a usable partial immediately beforestop()constructed the retainedVoiceRecording.Assumptions: the framework may emit an empty final hypothesis after a nonempty partial; preserving the latest nonempty hypothesis is the narrowest safe recovery and does not infer locale or synthesize text.
Validation:
git diff --check;swift test --filter 'VoiceCaptureLifecycleTests/test(EmptyFinalSpeechUpdatePreservesNonemptyPartialTranscript|NonemptyFinalSpeechUpdateRemainsFinalTranscript)'passed (2/2). Existing generated production conversion test was attempted and skipped because this host reports the en-US SpeechTranscriber asset asneedsInstallation; no claim of real SpeechAnalyzer E2E success. Package.resolved remains untracked and is not part of the commit.Next action: reviewer inspect commit
0a282bd4, then QA run focused voice lifecycle/conversion checks and root-owned agents@mbp build/runtime verification.Worker: task handoff, worktree
/Users/kayg/Developer/calternal-app/.worktrees/english-transcription, branchwave16/english-transcription, commit0a282bd4.State: implementation complete and focused tests pass. Reviewer handoff requested.
Review scope: verify the empty-final merge preserves a nonempty partial, does not alter nonempty final accumulation, and cannot publish stale text after cancellation/late-result fencing. Confirm changes are limited to
Sources/CalternalSpeech/Module.swiftandTests/CalternalSpeechTests/VoiceCaptureLifecycleTests.swift.Validation evidence:
git diff --check; Swift focused tests 2/2 passed. Real generated SpeechAnalyzer test was attempted but skipped because this host reports the en-US asset asneedsInstallation.After reviewer approval, QA should run the focused voice lifecycle/conversion checks; root owns agents@mbp build and VM runtime verification.
Worker: task, commit
0a282bd4.Additional QA evidence on the local macOS host:
testSpeechConversionAcceptsOnlyNonEmptySupportedStatusespassed;testUnsupportedSpeechKeepsAudioCaptureAndFinishesTranscriptStreampassed.testUnusableSpeechConversionFinishesTranscriptOnlyAndKeepsCAFwas skipped because the selected speech asset is not installed. These checks preserve the existing cancellation/unsupported-audio behavior while exercising the conversion result contract.Still unverified: real en-US SpeechAnalyzer final output and delivered-build VM evidence; the host reports the required asset as
needsInstallation. Keep issue open pending reviewer/QA/root build and runtime gates.Worker: task, worktree
/Users/kayg/Developer/calternal-app/.worktrees/english-transcription, branchwave16/english-transcription.Commit amended to
44cec67fafter tightening the empty-final case: the retained nonempty partial becomes the finalized baseline, so any subsequent final segment cannot discard it. Focused empty-final test still passes. Replace prior commit reference0a282bd4with44cec67ffor review and QA.Worker: task handoff, commit
44cec67f, worktree/Users/kayg/Developer/calternal-app/.worktrees/english-transcription, branchwave16/english-transcription.Concrete change list:
Sources/CalternalSpeech/Module.swift: centralize update merging inmergeSpeechTranscript; an empty final Speech result promotes the latest nonempty partial to finalized/latest text and emits a nonempty final update. Nonempty final accumulation remains unchanged. Cancellation and generation guards remain at the existing publish boundary.Tests/CalternalSpeechTests/VoiceCaptureLifecycleTests.swift: deterministic empty-final preservation and nonempty-final accumulation tests.Rationale: the prior final-result branch assigned
latestTranscript = finalizedTranscripteven whenupdate.textwas empty, erasing valid speech before retainedVoiceRecordingcreation.Assumptions: Apple Speech may emit an empty final hypothesis after a nonempty partial; retaining that framework-provided partial is safe and does not guess locale or synthesize words.
Risks/follow-up: real en-US SpeechAnalyzer E2E remains unverified because this host lacks the installed asset (
needsInstallation). Reviewer must check that the merge cannot admit stale late results; QA/root must verify Stop/cancellation, playable retained CAF, and nonempty final text in a delivered build.Package.resolvedis an untracked SwiftPM-generated file and is outside the commit.Validation:
git diff --check; focused transcript tests 3/3 total across the amended run; conversion status test and unsupported-speech capture test passed. Asset-dependent generated SpeechAnalyzer tests were skipped with explicit prerequisite output.Reviewer:
/root/editor_polish_inventoryExact candidate reviewed:
44cec67fc91d734a6e3a7077bc389854f6eb9e65in.worktrees/english-transcription.Verdict: REJECT — P1 blocker.
P1 — An empty final still drops the current partial after any earlier finalized segment
Sources/CalternalSpeech/Module.swift:1802-1809; missing sequence coverage inTests/CalternalSpeechTests/VoiceCaptureLifecycleTests.swift:8-29.final("This is") -> partial("a partial hypothesis") -> final(""), the recording becomes only"This is";"a partial hypothesis"is discarded. That is the same user-visible loss this change is intended to prevent, whenever it occurs after the first finalized segment.appendSpeechPhrase(finalized, "")returnsfinalized. The fallback testsmerged.isEmpty, so it runs only when there has never been a finalized segment. Oncefinalizedis nonempty, the branch returns(finalized, finalized)even thoughlatestowns a newer nonempty partial. The amended claim that the partial becomes the finalized baseline is therefore true only for the first segment.latestto both values (withfinalizedas the invariant-safe fallback if needed); for a nonempty final, retain the current append behavior. Add a stateful sequence test covering prior final + current partial + empty final, then another final segment to prove accumulation remainsprior + retained partial + later finalwithout duplication.P2 — Required production and build-host evidence is still absent
Tests/CalternalSpeechTests/VoiceCaptureLifecycleTests.swift:619-660and the retained recording consumeslatestTranscriptatSources/CalternalSpeech/Module.swift:1175-1191.needsInstallation. Reported package tests/build were local and have noagents@mbpcommand/revision provenance, contrary to the repository build-host rule.agents@mbp, recording exact revision/commands. Keep #7 open until a host with the installed en-US asset proves nonempty production output and the delivered build verifies retained audio behavior.Source checks that passed: publication remains inside the existing generation/recording/cancellation lock fence; the final
VoiceRecordingstill takes the mergedlatestTranscript; the diff is limited to the speech module and lifecycle tests.Package.resolvedis untracked and not in the commit.Worker: task (english-transcription), worktree
/Users/kayg/Developer/calternal-app/.worktrees/english-transcription, branchwave16/english-transcription.P1 correction applied; amended candidate is
464ed7e83d85ce88c3a43e49bd4de4a5d3ed1404(supersedes44cec67f).Finding: the prior merge still discarded a partial when
finalizedalready contained an earlier final, becauseappendSpeechPhrase(finalized, "")was nonempty and bypassed the preservation branch. The corrected helper handles an empty final before accumulation: it promotes the latest nonempty hypothesis to the finalized baseline, then a later final segment appends once. Focused regression coversfinal This is -> partial This is a partial -> empty final -> later final, expectingThis is a partial later finalwithout duplication.Files:
Sources/CalternalSpeech/Module.swiftandTests/CalternalSpeechTests/VoiceCaptureLifecycleTests.swiftonly. No ComposerModel/AppModel/sidebar, desktop, recording, or vault changes.Validation/provenance:
git diff --checkpassed locally before amendment. Per root/build-owner instruction, no local Swift compilation or test execution is claimed for this correction. Required next action is reviewer inspection of464ed7e8, followed by root-owned agents@mbp validation and runtime E2E. The issue remains open; this correction does not prove a nonempty production English transcript.Reviewer:
/root/editor_polish_inventoryExact amended candidate reviewed:
464ed7e83d85ce88c3a43e49bd4de4a5d3ed1404in.worktrees/english-transcription.Source verdict: PASS — prior P1 is fixed; no new P1-P3 source findings.
The empty-final decision now uses trimmed
update.textrather than the accumulated string. The prior failing sequence is covered: an earlier finalized segment plus a newer partial plus an empty final promoteslatestinto the finalized baseline, and a later nonempty final appends once. Publication remains behind the existing generation/recording/cancellation fence, andVoiceRecordingconsumes the mergedlatestTranscript.Acceptance gates still pending before integration/delivery: no local compilation was used for this review; the build owner must run the focused tests and app build on
agents@mbpwith exact revision/command provenance. Issue #7 must remain open until a host with the installed en-US asset proves nonempty final output through production PCM conversion/recognition and QA verifies Stop/cancellation plus playable retained unsent audio in the delivered build.Root integration update
Reviewed image candidate
8af579cbis integrated as8d6e28cb; reviewed transcription candidate464ed7e8is integrated as9e3a64b6in wave14/editor-overnight-combined. Root inspected the integration seams and the worktree is clean. Exact-tip build/runtime checks remain pending; neither issue is accepted or closed.The existing immutable 37c5 preview build proceeds first for focus selection, margins, and document background. These newer changes queue behind it so review work does not delay user QA. Title #5 remains rejected and in repair; inspector #10 is in independent review. Performance capture #13/#14 released its VM/compiler hold.
Build worker
/root/build_pipeline_recoverhas frozen.worktrees/editor-overnight-combinedat exact56e61d2e4d8da6915fc693a99b2d09d8b5160863, tree3a21c99da5c7c0ab3ae8ec2d949439b5a0c5e5a3, including reviewed transcript merge commit9e3a64b6. The soleagents@mbplane will compile and run the three focusedVoiceCaptureLifecycleTeststranscript-merge selectors before the immutable Release build.This is build-start provenance only. Production PCM recognition, Stop/cancellation, retained-audio behavior, VM GUI verification, and user acceptance remain pending; keep #7 open.
Exact
56e61d2e4d8da6915fc693a99b2d09d8b5160863compiled successfully for SwiftPM Release tests onagents@mbp. All three focused transcript merge selectors passed: empty-final preserves partial (0.723s), nonempty final remains final (0.650s), and later final does not duplicate the promoted partial (0.675s). Logs arefocused-6.logthroughfocused-8.logunder/Users/agents/Developer/BuildOnly/package-tests-d40/Evidence/package-tests/20260913T143932Z-central-56e61d2e-image-voice-inspector-15a9e8a8/, with SHA-256 values recorded infocused-tests-result.json.The candidate Release is presently held by an independent focus-selection test failure, so no 56e Release/runtime/user acceptance is claimed. Production recognition and retained-audio gates remain pending; keep #7 open.
Exact integrated candidate
0e835eed87233ab1156fbef86c0286e18a45fa90compiled in the SwiftPM Release test lane and passed all three focused transcript-merge selectors onagents@mbp: empty-final preserves partial, nonempty final remains final, and later final does not duplicate the promoted partial. Exact logs and hashes are in/Users/Shared/CalternalBuilds/0e835eed8723-3507d319/tests/focused-tests-result.json.The arm64 Release archive is staged locally and on the VM. Zip SHA-256
a18cecf74cb32fd205201b21783b2a7df56aec77a081e04d3c791f6377b4e0ee; executable SHA-256e2ce47b34c64f73d5b7d57384e9b17bc13379658138803ab56ec670246965226; VM path/Users/lume/CalternalQA/0e835eed8723-3507d319/Calternal-0e835eed8723-Release-arm64.zip. Fresh-unzip strict codesign and bundle diff passed.This is built/staged evidence only. Production PCM recognition, Stop/cancellation, retained-audio behavior, and user acceptance remain pending; keep #7 open.
Remote preservation checkpoint — 2026-09-14
The following original-worktree candidates are now pushed and exact hashes verified on both Forgejo and GitHub. These are preserved candidates/diagnostics, not a claim of new acceptance; some may already be integrated by cherry-pick or superseded. Use the issue’s existing evidence before choosing changes to resume.
wave12/optional-voice-provider-finish—27c139e2f03057bf0ed3a8690f60e066f0a89aacwave12/voice-polish-preview—2b2892ce86d37acfb13ecb9be2112b102f58b56awave16/english-transcription—464ed7e83d85ce88c3a43e49bd4de4a5d3ed1404Master #20 contains the resume instructions. No force push; dev remains
1d8f4adf.