Skip to content

Process Cat A cluster A2 (macOS, 35 files) — cherry-pick + EXCLUDE-DIVERGENT for v2026.3.22 sync backlog #2583

@alexey-pelykh

Description

@alexey-pelykh

Background

Decomposition of #2576 (Cat A processing). Cluster A2 covers the macOS surface of the v2026.3.22 sync backlog: 35 files under apps/macos/ where fork content diverges from upstream@v2026.3.22 with rebrand applied.

See full triage at hq/upstream/pending-sync-review/2026-04-24-cat-a-triage.md (cluster A2 section) and per-cluster TSV at hq/upstream/pending-sync-review/2026-04-24-cat-a-clusters.tsv.

Disposition summary

Disposition Count
CHERRY-PICK 31
EXCLUDE-DIVERGENT 4
Total 35

Cluster scope (per fork path prefix):

  • apps/macos/Sources/RemoteClaw/** — 31 app source files (largest sub-cluster)
  • apps/macos/Sources/RemoteClawDiscovery/** — 1 file
  • apps/macos/Sources/RemoteClawMacCLI/** — 1 file
  • apps/macos/Tests/RemoteClawIPCTests/** — 2 test files

Scope

For each of the 35 files:

  1. CHERRY-PICK (31): Apply the upstream change between fork's last sync of this file and v2026.3.22 to the fork's rebranded path with rebrand-content transforms. Per-file inspection may convert to EXCLUDE-DIVERGENT if the upstream change touches a fork-gutted code path.
  2. EXCLUDE-DIVERGENT (4): All four EXCLUDE-DIVERGENT entries in this cluster (ContextUsageBar.swift, SessionMenuLabelView.swift, SessionsSettings.swift, UsageMenuLabelView.swift) trace to fork commit gut(session): remove vestigial contextTokens config and display denominator #2277 gut(session): remove vestigial contextTokens config and display denominator. Add disposition.tsv rows with that rationale.

File list

Action Diff lines Upstream path Fork path
CHERRY-PICK 33 apps/macos/Sources/OpenClaw/AudioInputDeviceObserver.swift apps/macos/Sources/RemoteClaw/AudioInputDeviceObserver.swift
CHERRY-PICK 8 apps/macos/Sources/OpenClaw/CanvasWindowController.swift apps/macos/Sources/RemoteClaw/CanvasWindowController.swift
CHERRY-PICK 9 apps/macos/Sources/OpenClaw/ConfigSettings.swift apps/macos/Sources/RemoteClaw/ConfigSettings.swift
EXCLUDE-DIVERGENT 90 apps/macos/Sources/OpenClaw/ContextUsageBar.swift apps/macos/Sources/RemoteClaw/ContextUsageBar.swift
CHERRY-PICK 18 apps/macos/Sources/OpenClaw/CronJobsStore.swift apps/macos/Sources/RemoteClaw/CronJobsStore.swift
CHERRY-PICK 4 apps/macos/Sources/OpenClaw/GatewayDiscoverySelectionSupport.swift apps/macos/Sources/RemoteClaw/GatewayDiscoverySelectionSupport.swift
CHERRY-PICK 42 apps/macos/Sources/OpenClaw/GatewayEndpointStore.swift apps/macos/Sources/RemoteClaw/GatewayEndpointStore.swift
CHERRY-PICK 22 apps/macos/Sources/OpenClaw/GatewayLaunchAgentManager.swift apps/macos/Sources/RemoteClaw/GatewayLaunchAgentManager.swift
CHERRY-PICK 44 apps/macos/Sources/OpenClaw/InstancesSettings.swift apps/macos/Sources/RemoteClaw/InstancesSettings.swift
CHERRY-PICK 27 apps/macos/Sources/OpenClaw/InstancesStore.swift apps/macos/Sources/RemoteClaw/InstancesStore.swift
CHERRY-PICK 16 apps/macos/Sources/OpenClaw/MenuBar.swift apps/macos/Sources/RemoteClaw/MenuBar.swift
CHERRY-PICK 50 apps/macos/Sources/OpenClaw/MenuContentView.swift apps/macos/Sources/RemoteClaw/MenuContentView.swift
CHERRY-PICK 141 apps/macos/Sources/OpenClaw/NodePairingApprovalPrompter.swift apps/macos/Sources/RemoteClaw/NodePairingApprovalPrompter.swift
CHERRY-PICK 2 apps/macos/Sources/OpenClaw/NodeServiceManager.swift apps/macos/Sources/RemoteClaw/NodeServiceManager.swift
CHERRY-PICK 10 apps/macos/Sources/OpenClaw/NodesStore.swift apps/macos/Sources/RemoteClaw/NodesStore.swift
CHERRY-PICK 38 apps/macos/Sources/OpenClaw/OnboardingView+Layout.swift apps/macos/Sources/RemoteClaw/OnboardingView+Layout.swift
CHERRY-PICK 23 apps/macos/Sources/OpenClaw/OnboardingView+Workspace.swift apps/macos/Sources/RemoteClaw/OnboardingView+Workspace.swift
CHERRY-PICK 72 apps/macos/Sources/OpenClaw/PeekabooBridgeHostCoordinator.swift apps/macos/Sources/RemoteClaw/PeekabooBridgeHostCoordinator.swift
CHERRY-PICK 40 apps/macos/Sources/OpenClaw/PermissionManager.swift apps/macos/Sources/RemoteClaw/PermissionManager.swift
CHERRY-PICK 17 apps/macos/Sources/OpenClaw/RemotePortTunnel.swift apps/macos/Sources/RemoteClaw/RemotePortTunnel.swift
CHERRY-PICK 16 apps/macos/Sources/OpenClaw/ScreenRecordService.swift apps/macos/Sources/RemoteClaw/ScreenRecordService.swift
EXCLUDE-DIVERGENT 20 apps/macos/Sources/OpenClaw/SessionMenuLabelView.swift apps/macos/Sources/RemoteClaw/SessionMenuLabelView.swift
EXCLUDE-DIVERGENT 16 apps/macos/Sources/OpenClaw/SessionsSettings.swift apps/macos/Sources/RemoteClaw/SessionsSettings.swift
CHERRY-PICK 29 apps/macos/Sources/OpenClaw/SettingsRootView.swift apps/macos/Sources/RemoteClaw/SettingsRootView.swift
EXCLUDE-DIVERGENT 23 apps/macos/Sources/OpenClaw/UsageMenuLabelView.swift apps/macos/Sources/RemoteClaw/UsageMenuLabelView.swift
CHERRY-PICK 44 apps/macos/Sources/OpenClaw/VoicePushToTalk.swift apps/macos/Sources/RemoteClaw/VoicePushToTalk.swift
CHERRY-PICK 6 apps/macos/Sources/OpenClaw/VoiceWakeGlobalSettingsSync.swift apps/macos/Sources/RemoteClaw/VoiceWakeGlobalSettingsSync.swift
CHERRY-PICK 89 apps/macos/Sources/OpenClaw/VoiceWakeRuntime.swift apps/macos/Sources/RemoteClaw/VoiceWakeRuntime.swift
CHERRY-PICK 30 apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift apps/macos/Sources/RemoteClaw/VoiceWakeSettings.swift
CHERRY-PICK 56 apps/macos/Sources/OpenClaw/VoiceWakeTester.swift apps/macos/Sources/RemoteClaw/VoiceWakeTester.swift
CHERRY-PICK 12 apps/macos/Sources/OpenClaw/WorkActivityStore.swift apps/macos/Sources/RemoteClaw/WorkActivityStore.swift
CHERRY-PICK 12 apps/macos/Sources/OpenClawDiscovery/GatewayDiscoveryModel.swift apps/macos/Sources/RemoteClawDiscovery/GatewayDiscoveryModel.swift
CHERRY-PICK 42 apps/macos/Sources/OpenClawMacCLI/ConnectCommand.swift apps/macos/Sources/RemoteClawMacCLI/ConnectCommand.swift
CHERRY-PICK 2 apps/macos/Tests/OpenClawIPCTests/GatewayDiscoveryHelpersTests.swift apps/macos/Tests/RemoteClawIPCTests/GatewayDiscoveryHelpersTests.swift
CHERRY-PICK 52 apps/macos/Tests/OpenClawIPCTests/TestIsolation.swift apps/macos/Tests/RemoteClawIPCTests/TestIsolation.swift

How to verify

  • Per-file: git log -1 --format=%H -- {fork-equivalent-path} shows the cherry-pick (or trailer Cherry-picked-from: {upstream-sha})
  • Local Xcode build (fork CI does not build macOS)
  • Local Swift Package Tests pass: swift test in each touched module
  • Bulk: re-run audit against v2026.3.22 after PR merges; A2 cluster residual = 0
  • For EXCLUDE-DIVERGENT entries: disposition.tsv row exists citing fork commit gut(session): remove vestigial contextTokens config and display denominator #2277

Acceptance criteria

  • Each of the 35 paths has either a cherry-picked upstream change (with rebrand transform) OR an EXCLUDE-DIVERGENT entry in hq/upstream/disposition.tsv
  • Local pnpm check (lint+typecheck) passes
  • Local Xcode build passes for RemoteClaw.app target
  • Local swift test passes for RemoteClawKit targets affected
  • No new CI failures
  • Bulk verification re-run shows A2 residual = 0

Out of scope

  • A1 (Android, 31 files) — separate issue
  • A3 (Shared+iOS, 10 files) — separate issue
  • A0 (40 ALREADY-SYNCED, audit false positives) — needs audit-tooling enhancement; not in this issue

Notes

  • Per-file dispositions in the file list above are proposals. Reviewer judgment on each file is required during execution; expect 5–10% reclassification (CHERRY-PICK → EXCLUDE-DIVERGENT) after code-context inspection.
  • Three largest CHERRY-PICK files (NodePairingApprovalPrompter.swift 141 lines, VoiceWakeRuntime.swift 89 lines, PeekabooBridgeHostCoordinator.swift 72 lines) may warrant their own commits within the cluster PR for review tractability.
  • The 4 EXCLUDE-DIVERGENT entries can land in a single small commit adding rows to disposition.tsv (in the audit repo), then the remaining 31 cherry-picks can land as the larger code commit.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions