Files
meeting-assistant/openspec/changes/add-macos-desktop-controls/main-sync-completion.md

7.7 KiB

macOS main synchronization — 2026-10-03

Candidate and scope

Repository: /Users/dh/Documents/DanielsVault/_ops/meeting-assistant. Authorized delivery: fetch remote main, merge into codex/macos-support, deploy and verify on this Mac. No main push or OpenSpec archive.

Old branch HEAD: bf6e1e7560c6bdfcebf69ad0e3240b4de647adb6. Fetched and rechecked remote main: 7b2bcd36310ae6434a4ee6eeb3a47b6d1d431df4. The initial worktree was clean. Upstream changes are included unchanged except conflict resolution; prior macOS features are preserved.

Substantive review covers the owned merge resolutions and required portable interface adaptation, not an independent review of all upstream or earlier branch features. Reviewed current content manifest:

File SHA-256
MeetingAssistant/Program.cs 1165364aeb846fc164cc875146b8fd70636dbc2c51e47ae3a373dab75330ce2a
MeetingAssistant/MacOs/MacOsWorkflowRulesEditorWindowService.cs b008ef5893dd1caf20f504e3a9bde390dd8f0e4fe6c31f9725d26fd5007b6e23
MeetingAssistant.Tests/MacOsDesktopControlManifestTests.cs 3ff6e8c73830fb350c6f7d89e550a84eacef6acb3c363407ab8eb8a8c2f0dfe5
docs/meeting-workflow-engine.md 9792a398f387a96a4fe1a02bfe13f19a9ca30cc869bbbe393f7341e0cbdb3a9e
openspec/changes/add-macos-desktop-controls/specs/meeting-session/spec.md 5b730cd96bed5e7dff87690272d5755d8b9d0ef5bcc78a674c6688e152ac635d
openspec/changes/add-macos-desktop-controls/tasks.md 877304a11600e513630d495882564dfd083825f163a4c53574f76f3fd2d1f42e

This receipt and generated logs are evidence, excluded from the reviewed behavioral content identity.

Requirements and verification

  • Preserve macOS recording/menu/calendar/screenshot/editor registrations: resolved composition inspected; existing native registration and manifest tests pass. Upstream no-op approval dependency is present without replacing real macOS providers.
  • Reject unavailable automatic approvals without changing the interactive conversation: MacOsApplicationDeclinesUnavailableAutomaticApprovals calls the registered approval service through its public interface and observes false.
  • Never silently discard an automatic workflow prompt: AutomaticWorkflowChangeCannotSilentlyLoseItsPromptOnMacOs observes PlatformNotSupportedException. A compiled red run first reported actual NotImplementedException; the subsequent implementation passes.
  • Existing interactive editor remains available: existing MacOsApplicationRegistersARealInteractiveAgentWindow passes; Show() is unchanged.
  • Full portable regression suite: 576 passed, zero failed, on this Mac. Command: dotnet test MeetingAssistant.Tests/MeetingAssistant.Tests.csproj -f net10.0 -c Release -p:EnableWindowsTargeting=true --logger 'trx;LogFileName=macos-main-sync-green.trx'. Raw red/green receipts: MeetingAssistant.Tests/TestResults/macos-main-sync-{red,green}.trx (generated, not committed).
  • Strict OpenSpec validation passed for add-macos-desktop-controls, add-summary-agent-requests, and prompt-for-new-microphone. git diff --check passed.

The new upstream approval notifications are Windows-only. On portable hosts approval requests are declined as permitted by the upstream notification-unavailable scenario. No new native notification feature is claimed.

Standards and sequential review

Rules: repository AGENTS.md, the active macOS desktop-control scenario, and upstream automatic approval unavailability requirements. Coverage: public-interface tests/duplication → DRY; coherent dependencies, explicit platform failure, lifecycle preservation, source ownership → SOLID; minimal sync scope, naming/readability, spec/docs/task consistency → KISS. Typechecking and whitespace are covered by build/tests and diff check.

  • DRY /root/review_dry: clean; verified all six manifest hashes and surrounding composition/approval code. No duplication needing consolidation. Public-interface tests satisfy repository guidance.
  • SOLID /root/review_solid: clean; verified all six hashes, interface/callers and native registrations. Explicit unsupported handoff is caught by its caller; normal interactive editor is unchanged. No abstraction needed.
  • KISS /root/review_kiss: clean; verified the same six hashes at merge commit fc0edd812dd22a03e6eb5e3b3bfdd0fa080fc010. Inspected nearby interfaces/callers and raw TRX evidence. Minimal structure, clear names, consistent spec/docs/tasks; no binding violations or material risks.

Delivery and runtime evidence

State: technically complete for the reviewed code; final production-configuration restoration accompanies the evidence-only closeout commit. The existing updater can skip managed-only bundle changes. This deployment must replace the complete signed bundle, not just the loose runtime. Recoverable backup: /Users/dh/Library/Application Support/MeetingAssistant/backups/main-sync-20261003.DtKbYS. Isolated test/evidence directory: /private/tmp/meeting-assistant-main-sync.gABedp. Configuration and credentials remain external; a temporary root-level smoke overlay is restored byte-for-byte after testing. No genuine meeting artifacts are test cleanup targets.

Operational verification

  • The installed merge build reports 1.0.0+fc0edd812dd22a03e6eb5e3b3bfdd0fa080fc010; staged and installed runtime SHA-256 matched 71b4b2495fcaa5bf790712586073f88d1b6e1dc5fdd37a4893f1623f47d554d5.
  • codesign --verify --deep --strict passed for staged and installed bundles. The designated requirement remains identifier "cloud.schweigert.meeting-assistant", retaining the stable installed privacy identity.
  • /health returned service meeting-assistant, status ok; /diagnostics/platform-capabilities reported the actual macOS calendar, screenshot and editor implementations. Process inspection confirmed the installed bundle runtime and macOS menu-bar helper.
  • The native integrations helper self-test returned status: ok with calendar, prompt, screenshot and crop features. This packaging check does not itself prove all permissions or UI interactions.
  • First successful real test recording: 20261003-1024, 77 seconds, system audio through the installed helper and Azure Speech to a transcript and completed LiteLLM summary. The long synthetic utterance was only partly recognized; no perfect recognition claim is made.
  • Stronger short-utterance check: 20261003-1027, 26 seconds. All four synthetic sentences were transcribed, including Die Aufnahme endet jetzt mit dem Wort Kaffeetasse. The summary includes the identifier and recording end. Assistant context reached state: finished; /recording/status returned isRecording:false,state:0.
  • Agent-runnable assertion: /private/tmp/meeting-assistant-main-sync.gABedp/verify-smoke.sh returned PASS: real system audio -> Azure transcript including end marker -> LiteLLM summary -> finished/idle.
  • Evidence: vault/Meetings/Transcripts/20261003-1027-transcript.md, vault/Meetings/Summaries/20261003-1027-summary.md, and runtime-smoke.log inside the isolated test directory above. Both live native audio helpers produced PCM; microphone gain was zero to avoid recording ambient conversations, so actual spoken microphone transcription was not tested.
  • An initial test-start timeout was caused by the smoke setup's ten-minute note-opening delay, before capture began. The overlay was corrected to zero and the two real recordings above completed. This was not a runtime audio failure of the new build.

The closeout commit changes only this evidence record; the reviewed behavioral manifest remains unchanged. Its rebuilt bundle is installed while idle, production env is restored exactly from the preserved original, and final health/status/signature/provenance checks are performed before handoff. No remote push is included in this request.