Repository navigation
Draft: stack wave-2 and reviewed fixes on main - #2685
Merged
Merged
Conversation
…(UI-OVERLAY-A-8) # Conflicts: # Sources/UI/Overlay/FloatingOverlayController.swift
…sland (UI-OVERLAY-A-3)
… values (APP-DICTATION-7) # Conflicts: # Sources/App/TranscriptedSupportActions.swift
…ertions (UI-OVERLAY-A-10)
…S 26 (SPEECH-A-8)
…dependencies The notice file is the only one the app ships, and it had drifted from what the build links (missing Sentry, fastcluster, llama-server vendored code and the floating SwiftPM packages). Add a short doc with a before-release checklist: which version variable each entry follows, how to see the versions SwiftPM resolves for the unpinned packages, and the two related gaps that the notice file cannot fix (the .mcpb bundle contents and the diarizer cache copy).
prewarm() treated any pooled process as ready, so one that died while idle stayed in the pool until its kind was next taken or the pool stopped. Now a non-running ready process is ended and a fresh one started in its place.
workflow_recovery_finished/failed for failed_meeting retries only carried the original row's failure_kind, so a 58% retry failure rate on 1.1.76 had no reason attached. Add retry_outcome_kind: the MeetingFailureKind the retry itself ended as (from the row's updated errorKind/message), or retry_not_started when the pipeline turned the retry away without running it (retryCount unchanged), retry_row_removed when the row vanished, and model_not_loaded when models never got ready. Registered in analytics-events.psv, the reviewed-property list and the sanitizer's category-valued keys, so only enum-shaped values leave the device.
SentrySDK.startSession/endSession write the session envelope to disk. CrashReporter called them synchronously from the main-thread sleep/wake observers and rotation timer, which showed up as main-thread hangs around sleep and wake (Sentry APPLE-MACOS-5E). SentrySessionRotator now owns the session state and makes every start/end call on a private serial utility queue; callers only enqueue. Termination enqueues and waits so the completed session is still recorded. The rotation decision stays in SentrySessionRotationPolicy. Adds SentrySessionRotatorTests: start/end order for sleep, wake and the periodic check through an injected sink, and no sink call on main.
endSession stamps the end time when it runs, so an end queued at willSleep that slips past suspension would count the whole sleep as session time. The sleep observer now waits up to 200 ms for the queued end. A slow write still can't hold main past that; it finishes after wake, ahead of the wake start, since the queue is serial. Wake and the periodic check stay fire-and-forget.
The unannotated tuple from withAudioGraphLock compiled on Swift 6.4 but not on the hosted CI toolchain, which inferred non-optional elements and rejected the if-let bindings that follow (app-build, spm-tests and the full bench all failed in Build dependencies). Use an explicitly typed closure, as the Stop path in the same change already does.
release-health-card.py and release-watch.py self-tests read Tests/Fixtures/release-health-appcast-1.1.76.xml, but only the nightly-security rule listed that fixture, so a fixture edit selected neither self-test locally. Add the fixture glob to both rules and a selector self-test case for it.
The too-short report runs after transcription and read the controller's shared key release then. A press queued behind the finishing take could be let go first and overwrite it, so a held take reported key_release=tap. Snapshot the release and press length at stop time instead.
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.
Wave 3 combines wave 2's 22 later review PRs with 15 additional fixes on top of the landed integration. It addresses dictation diagnostics and failure reporting, Write for Me process recovery, meeting-library audio copies, main-thread work in calendar/Sentry paths, strict-concurrency capture state, and renamed speaker transcripts. Release/product/hardware decisions listed below remain outside this stack.
Candidate:
93b4e455e76af49a55784df0f88164b4f0e8a7b0Base:
edbc761f66344362254e18698cc208caf0d2be05(main, including #2530)Included PRs
#2667 (wave 2), #2666, #2668, #2669, #2672, #2673, #2684, #2665, #2670, #2674, #2677, #2678, #2680, #2681, #2682, #2683. All 16 were merged with individual merge commits and no text conflicts. All 16 current exact PR heads were independently verified as ancestors of the candidate; no listed PR is missing.
Integration repairs
c83e13957: appcast-fixture changes now select the release-health-card and release-watch self-tests; the matrix regression fails against the previous rule.d1ac60aa6: snapshot the take's key-release and press duration when stopping, so a queued press cannot overwrite a too-short report's diagnostics. The added test covers the snapshot policy; controller wiring has build/static proof, not a dedicated integration test.e31cf610d, retained through merge93b4e455e: explicit optional tuple types in audio-device recovery fix inference on the older hosted Swift compiler. No recovery behavior change is intended.Validation by source
80194a0e4): local quick 113 PASS; fast tests 54,550 assertions / 411 functions, zero failures; Core XCTest 722 tests (1 skipped), zero failures, plus 1,125 Swift Testing tests; app build and source pins/module boundaries/file-size/test-shape/telemetry checks PASS.d1ac60aa6): focused DictationQueuedStartPolicyTests 78/78 PASS; quick 113 PASS; app build, matrix/agent self-tests and affected release self-tests PASS. Full fast/Core suites were not rerun at that point.93b4e455e): Core target built locally after merging the explicit-type compile fix. Current-head hosted Swift CI and the literal full bench have now passed as detailed below. Earlier local test counts retain their original source scope.Current hosted runs
checks,spm-tests,app-buildand aggregatebuild-and-testall succeeded.93b4e455e76af49a55784df0f88164b4f0e8a7b0and trusted workflowedbc761f66344362254e18698cc208caf0d2be05; all 15 expected steps recorded, 14 PASS, 1 nonblocking synthetic-artifact WARN, exit 0. The warning is the empty seeded dictation directory; its validation exits 0. Build, fast/Core tests, E2E, synthetic pasteback, integration, imported audio and the other bench stages passed. This is developer-app automated proof, not signed distribution or Bluetooth acceptance.MAC_RUNNER_MODE=offis unchanged.Review
Four area reviewers reviewed the combined stack and found the two integration issues repaired in
c83e13957andd1ac60aa6. Independent review of the final repair delta80194a0e4..93b4e455eis GREEN with no confirmed findings. The reviewer traced the stop/report callers, optional graph snapshot and fixture-selection rule, and re-reviewed the Sentry sleep repair (4d9a46e00). These static repair-review gaps are closed. The snapshot test remains policy-level; controller wiring was statically inspected. This targeted review is additional to, not another complete review of, the earlier four-area stack review. Hosted results and hardware remain separate.Held outside this stack
#2675: hardware-dependent audio-race redo; #2676: Teams Not now product behavior; #2671: paste-hint wording; #2664 and #2679: release-flow changes; #2639, #2652 and #2658: separate earlier decisions. None is approved or added by this stack.
No new real mic/system-audio/AirPods/paste-back acceptance is claimed. The owner's earlier manual testing covered #2530's app, not every wave-3 change. No release is included. The targeted final-repair review, exact-head Swift CI and full bench are clean. Exact-head automated validation is complete, including concurrency census. Ready for the owner's manual merge under the repository high-risk merge policy; no merge or release has occurred.
Final landing readback
Candidate
93b4e455e76af49a55784df0f88164b4f0e8a7b0and baseedbc761f66344362254e18698cc208caf0d2be05still match the verified heads. PR is mergeable with no conflicts. All required checks, hosted app build/test jobs, hygiene and census succeeded. The separate full bench receipt confirms this exact source, all 15 stages recorded, 14 PASS / 1 nonblocking synthetic-data WARN, exit 0. All 16 included current PR heads are ancestors. Final-repair independent review is GREEN; earlier review findings are resolved. Real hardware and release acceptance remain separate.The current base's
docs/agent-merge-policy.md, sections 1/2/5, reserves high-risk merges to Justin by hand and prohibits agents merging as Justin. This stack touches the policy's audio/owner paths. The PR is being marked ready for that manual merge; no agent merge or auto-merge will be armed. No branch deletion or duplicate-PR cleanup is included.