Merge latest main into macOS support and preserve portable integrations

This commit is contained in:
dh
2026-10-03 10:16:09 +02:00
55 changed files with 2282 additions and 113 deletions
@@ -0,0 +1,51 @@
# 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: pending independent review.
## Delivery and runtime evidence
State: review in progress; build and runtime verification pending.
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.
@@ -26,3 +26,9 @@ Selecting `Open agent` on macOS SHALL open a native window titled `Meeting Summa
- **WHEN** the user selects `Open agent` from the menu-bar control
- **THEN** a `Meeting Summary Agent` window opens
- **AND** the user can submit a chat message and receive the interactive agent response
#### Scenario: unavailable automatic approvals do not alter the macOS agent conversation
- **GIVEN** automatic workflow-change approval notifications are unavailable on macOS
- **WHEN** the summary agent requests a workflow change or project association
- **THEN** the request is declined without opening or changing the interactive agent conversation
- **AND** a direct attempt to open an automatic prompt reports the platform limitation instead of silently discarding the prompt
@@ -16,3 +16,7 @@
- [x] 3.2 Run strict OpenSpec validation.
- [x] 3.3 Launch Meeting Assistant, start a new recording, and save screenshot evidence.
- [x] 3.4 Perform required DRY, SOLID, and KISS refactoring reviews and re-run verification.
## 4. Main synchronization compatibility
- [x] 4.1 Preserve macOS service registration and explicitly reject unsupported automatic prompts, with portable behavior tests.