From a590c26be8f2d1bf88a7ee0a903da62590e5fd97 Mon Sep 17 00:00:00 2001 From: Enrico Piovesan Date: Wed, 26 Aug 2026 10:09:54 -0600 Subject: [PATCH] fix: unblock nightly macOS Sendable and WinUI mapper compile Swift 6 rejects Any? on Sendable presentation structs; mark those snapshots unchecked Sendable (equality already ignores runtime JSON). Link PresentationMapper.cs into TraverseStarter.Tests like the other WinUI shells. Co-authored-by: Cursor --- AGENTS.md | 3 ++- .../Sources/DocApprovalCore/PresentationMapper.swift | 6 +++--- .../loop/LoopCore/Sources/LoopCore/PresentationMapper.swift | 6 +++--- .../Sources/MeetingNotesCore/PresentationMapper.swift | 6 +++--- .../Sources/TraverseCore/PresentationMapper.swift | 6 +++--- .../TraverseStarter.Tests/TraverseStarter.Tests.csproj | 1 + 6 files changed, 15 insertions(+), 13 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 654d186..608d9a7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -29,7 +29,8 @@ gh project item-list 2 --owner traverse-framework --format json --limit 300 \ | `llm-mcp-cursor-live-smoke` | **Done** (#240) | Cursor MCP Mode A stdio evidence | | `llm-mcp-claude-live-smoke` | **Done** (#241) | Claude Desktop/Code MCP Mode A evidence | | `kit-runner-persona-docs` | **Done** (#273) | Persona runbook + embedded onboarding | -| `new-app-author-e2e` | **In Progress** | CLI `app new` → App-Refs layout + Web host rewrite | +| `new-app-author-e2e` | **Done** (#275) | CLI `app new` → App-Refs layout + Web host rewrite | +| `fix-nightly-native-macos-windows` | **In Progress** | Swift 6 Sendable mappers + WinUI test compile of PresentationMapper | | `llm-mcp-mode-a-spec119-scaffold` | **Done** (#271) | Spec 119 consumer scaffold (fail-closed); live kit execute stays `llm-mcp-traverse-starter-catalog` | | `llm-mcp-traverse-starter-catalog` | **Blocked** | Spec 119 Approved; wait on Mode A `traverse-mcp` implement. No kit content groups in v1 (FR-007) | | `loop-wf1-registry-deps` | **Done** (#263) | Digest inventory in `docs/loop-registry-deps.md` | diff --git a/apps/doc-approval/DocApprovalCore/Sources/DocApprovalCore/PresentationMapper.swift b/apps/doc-approval/DocApprovalCore/Sources/DocApprovalCore/PresentationMapper.swift index 64d33c5..a8a1991 100644 --- a/apps/doc-approval/DocApprovalCore/Sources/DocApprovalCore/PresentationMapper.swift +++ b/apps/doc-approval/DocApprovalCore/Sources/DocApprovalCore/PresentationMapper.swift @@ -10,7 +10,7 @@ public enum PresentationState: String, Equatable, Sendable { case error } -public struct PresentationSnapshot: Equatable, Sendable { +public struct PresentationSnapshot: Equatable, @unchecked Sendable { public let state: PresentationState public let errorMessage: String? public let output: Any? @@ -31,7 +31,7 @@ public enum CapabilityPhase: String, Equatable, Sendable { case result } -public struct CapabilityProgressStep: Equatable, Sendable { +public struct CapabilityProgressStep: Equatable, @unchecked Sendable { public let capabilityId: String public let phase: CapabilityPhase public let sequence: UInt64 @@ -61,7 +61,7 @@ public struct CapabilityProgressStep: Equatable, Sendable { } /// Minimal embedder event fields required by the mapper. -public struct EmbedderEventLike: Equatable, Sendable { +public struct EmbedderEventLike: Equatable, @unchecked Sendable { public let eventType: String public let sequence: UInt64 public let data: [String: Any] diff --git a/apps/loop/LoopCore/Sources/LoopCore/PresentationMapper.swift b/apps/loop/LoopCore/Sources/LoopCore/PresentationMapper.swift index 64d33c5..a8a1991 100644 --- a/apps/loop/LoopCore/Sources/LoopCore/PresentationMapper.swift +++ b/apps/loop/LoopCore/Sources/LoopCore/PresentationMapper.swift @@ -10,7 +10,7 @@ public enum PresentationState: String, Equatable, Sendable { case error } -public struct PresentationSnapshot: Equatable, Sendable { +public struct PresentationSnapshot: Equatable, @unchecked Sendable { public let state: PresentationState public let errorMessage: String? public let output: Any? @@ -31,7 +31,7 @@ public enum CapabilityPhase: String, Equatable, Sendable { case result } -public struct CapabilityProgressStep: Equatable, Sendable { +public struct CapabilityProgressStep: Equatable, @unchecked Sendable { public let capabilityId: String public let phase: CapabilityPhase public let sequence: UInt64 @@ -61,7 +61,7 @@ public struct CapabilityProgressStep: Equatable, Sendable { } /// Minimal embedder event fields required by the mapper. -public struct EmbedderEventLike: Equatable, Sendable { +public struct EmbedderEventLike: Equatable, @unchecked Sendable { public let eventType: String public let sequence: UInt64 public let data: [String: Any] diff --git a/apps/meeting-notes/MeetingNotesCore/Sources/MeetingNotesCore/PresentationMapper.swift b/apps/meeting-notes/MeetingNotesCore/Sources/MeetingNotesCore/PresentationMapper.swift index 64d33c5..a8a1991 100644 --- a/apps/meeting-notes/MeetingNotesCore/Sources/MeetingNotesCore/PresentationMapper.swift +++ b/apps/meeting-notes/MeetingNotesCore/Sources/MeetingNotesCore/PresentationMapper.swift @@ -10,7 +10,7 @@ public enum PresentationState: String, Equatable, Sendable { case error } -public struct PresentationSnapshot: Equatable, Sendable { +public struct PresentationSnapshot: Equatable, @unchecked Sendable { public let state: PresentationState public let errorMessage: String? public let output: Any? @@ -31,7 +31,7 @@ public enum CapabilityPhase: String, Equatable, Sendable { case result } -public struct CapabilityProgressStep: Equatable, Sendable { +public struct CapabilityProgressStep: Equatable, @unchecked Sendable { public let capabilityId: String public let phase: CapabilityPhase public let sequence: UInt64 @@ -61,7 +61,7 @@ public struct CapabilityProgressStep: Equatable, Sendable { } /// Minimal embedder event fields required by the mapper. -public struct EmbedderEventLike: Equatable, Sendable { +public struct EmbedderEventLike: Equatable, @unchecked Sendable { public let eventType: String public let sequence: UInt64 public let data: [String: Any] diff --git a/apps/traverse-starter/TraverseCore/Sources/TraverseCore/PresentationMapper.swift b/apps/traverse-starter/TraverseCore/Sources/TraverseCore/PresentationMapper.swift index 64d33c5..a8a1991 100644 --- a/apps/traverse-starter/TraverseCore/Sources/TraverseCore/PresentationMapper.swift +++ b/apps/traverse-starter/TraverseCore/Sources/TraverseCore/PresentationMapper.swift @@ -10,7 +10,7 @@ public enum PresentationState: String, Equatable, Sendable { case error } -public struct PresentationSnapshot: Equatable, Sendable { +public struct PresentationSnapshot: Equatable, @unchecked Sendable { public let state: PresentationState public let errorMessage: String? public let output: Any? @@ -31,7 +31,7 @@ public enum CapabilityPhase: String, Equatable, Sendable { case result } -public struct CapabilityProgressStep: Equatable, Sendable { +public struct CapabilityProgressStep: Equatable, @unchecked Sendable { public let capabilityId: String public let phase: CapabilityPhase public let sequence: UInt64 @@ -61,7 +61,7 @@ public struct CapabilityProgressStep: Equatable, Sendable { } /// Minimal embedder event fields required by the mapper. -public struct EmbedderEventLike: Equatable, Sendable { +public struct EmbedderEventLike: Equatable, @unchecked Sendable { public let eventType: String public let sequence: UInt64 public let data: [String: Any] diff --git a/apps/traverse-starter/windows-winui/TraverseStarter.Tests/TraverseStarter.Tests.csproj b/apps/traverse-starter/windows-winui/TraverseStarter.Tests/TraverseStarter.Tests.csproj index 5fc4d89..83c3207 100644 --- a/apps/traverse-starter/windows-winui/TraverseStarter.Tests/TraverseStarter.Tests.csproj +++ b/apps/traverse-starter/windows-winui/TraverseStarter.Tests/TraverseStarter.Tests.csproj @@ -28,6 +28,7 @@ +