Background
Decomposition of #2576 (Cat A processing). Cluster A3 covers the shared kit + iOS surface of the v2026.3.22 sync backlog: 10 files under apps/shared/RemoteClawKit/ and apps/ios/ 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 A3 section) and per-cluster TSV at hq/upstream/pending-sync-review/2026-04-24-cat-a-clusters.tsv.
Disposition summary
| Disposition |
Count |
| CHERRY-PICK |
10 |
| EXCLUDE-DIVERGENT |
0 |
| Total |
10 |
Cluster scope (per fork path prefix):
apps/shared/RemoteClawKit/Sources/RemoteClawChatUI/** — 4 chat UI files
apps/shared/RemoteClawKit/Sources/RemoteClawKit/** — 3 kit source files
apps/shared/RemoteClawKit/Tests/RemoteClawKitTests/** — 2 kit test files
apps/ios/Tests/** — 1 file (basename match: TalkConfigParsingTests.swift)
Scope
All 10 files are CHERRY-PICK candidates: fork only touched these in rebrand/sync mechanics; upstream changed since fork's last sync of each file.
File list
| Action |
Diff lines |
Upstream path |
Fork path |
| CHERRY-PICK |
128 |
apps/shared/OpenClawKit/Tests/OpenClawKitTests/TalkConfigParsingTests.swift |
apps/ios/Tests/TalkConfigParsingTests.swift |
| CHERRY-PICK |
34 |
apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift |
apps/shared/RemoteClawKit/Sources/RemoteClawChatUI/ChatComposer.swift |
| CHERRY-PICK |
141 |
apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMarkdownPreprocessor.swift |
apps/shared/RemoteClawKit/Sources/RemoteClawChatUI/ChatMarkdownPreprocessor.swift |
| CHERRY-PICK |
133 |
apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift |
apps/shared/RemoteClawKit/Sources/RemoteClawChatUI/ChatMessageViews.swift |
| CHERRY-PICK |
133 |
apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift |
apps/shared/RemoteClawKit/Sources/RemoteClawChatUI/ChatView.swift |
| CHERRY-PICK |
3 |
apps/shared/OpenClawKit/Sources/OpenClawKit/Capabilities.swift |
apps/shared/RemoteClawKit/Sources/RemoteClawKit/Capabilities.swift |
| CHERRY-PICK |
4 |
apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayNodeSession.swift |
apps/shared/RemoteClawKit/Sources/RemoteClawKit/GatewayNodeSession.swift |
| CHERRY-PICK |
36 |
apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayTLSPinning.swift |
apps/shared/RemoteClawKit/Sources/RemoteClawKit/GatewayTLSPinning.swift |
| CHERRY-PICK |
14 |
apps/shared/OpenClawKit/Tests/OpenClawKitTests/AssistantTextParserTests.swift |
apps/shared/RemoteClawKit/Tests/RemoteClawKitTests/AssistantTextParserTests.swift |
| CHERRY-PICK |
79 |
apps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatMarkdownPreprocessorTests.swift |
apps/shared/RemoteClawKit/Tests/RemoteClawKitTests/ChatMarkdownPreprocessorTests.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 Swift Package Tests pass:
swift test in apps/shared/RemoteClawKit/
- Local Xcode build for any iOS target consuming
RemoteClawKit
- Bulk: re-run audit against
v2026.3.22 after PR merges; A3 cluster residual = 0
Acceptance criteria
Out of scope
- A1 (Android, 31 files) — separate issue
- A2 (macOS, 35 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.
- A3 is the smallest cluster and a natural starter for trying the cherry-pick + rebrand workflow before tackling the larger A1/A2 clusters.
- The largest CHERRY-PICK in this cluster is
ChatMarkdownPreprocessor.swift (141 lines), followed by ChatView.swift and ChatMessageViews.swift (133 lines each). All three are in the chat UI sub-cluster and may share related upstream commits.
- The iOS file (
TalkConfigParsingTests.swift) was found via basename search — fork has it under apps/ios/Tests/ while upstream has it under apps/shared/OpenClawKit/Tests/OpenClawKitTests/. Verify the fork path is intentional or whether it should also be moved/renamed.
Background
Decomposition of #2576 (Cat A processing). Cluster A3 covers the shared kit + iOS surface of the v2026.3.22 sync backlog: 10 files under
apps/shared/RemoteClawKit/andapps/ios/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 A3 section) and per-cluster TSV athq/upstream/pending-sync-review/2026-04-24-cat-a-clusters.tsv.Disposition summary
Cluster scope (per fork path prefix):
apps/shared/RemoteClawKit/Sources/RemoteClawChatUI/**— 4 chat UI filesapps/shared/RemoteClawKit/Sources/RemoteClawKit/**— 3 kit source filesapps/shared/RemoteClawKit/Tests/RemoteClawKitTests/**— 2 kit test filesapps/ios/Tests/**— 1 file (basename match:TalkConfigParsingTests.swift)Scope
All 10 files are CHERRY-PICK candidates: fork only touched these in rebrand/sync mechanics; upstream changed since fork's last sync of each file.
File list
apps/shared/OpenClawKit/Tests/OpenClawKitTests/TalkConfigParsingTests.swiftapps/ios/Tests/TalkConfigParsingTests.swiftapps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swiftapps/shared/RemoteClawKit/Sources/RemoteClawChatUI/ChatComposer.swiftapps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMarkdownPreprocessor.swiftapps/shared/RemoteClawKit/Sources/RemoteClawChatUI/ChatMarkdownPreprocessor.swiftapps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swiftapps/shared/RemoteClawKit/Sources/RemoteClawChatUI/ChatMessageViews.swiftapps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swiftapps/shared/RemoteClawKit/Sources/RemoteClawChatUI/ChatView.swiftapps/shared/OpenClawKit/Sources/OpenClawKit/Capabilities.swiftapps/shared/RemoteClawKit/Sources/RemoteClawKit/Capabilities.swiftapps/shared/OpenClawKit/Sources/OpenClawKit/GatewayNodeSession.swiftapps/shared/RemoteClawKit/Sources/RemoteClawKit/GatewayNodeSession.swiftapps/shared/OpenClawKit/Sources/OpenClawKit/GatewayTLSPinning.swiftapps/shared/RemoteClawKit/Sources/RemoteClawKit/GatewayTLSPinning.swiftapps/shared/OpenClawKit/Tests/OpenClawKitTests/AssistantTextParserTests.swiftapps/shared/RemoteClawKit/Tests/RemoteClawKitTests/AssistantTextParserTests.swiftapps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatMarkdownPreprocessorTests.swiftapps/shared/RemoteClawKit/Tests/RemoteClawKitTests/ChatMarkdownPreprocessorTests.swiftHow to verify
git log -1 --format=%H -- {fork-equivalent-path}shows the cherry-pick (or trailerCherry-picked-from: {upstream-sha})swift testinapps/shared/RemoteClawKit/RemoteClawKitv2026.3.22after PR merges; A3 cluster residual = 0Acceptance criteria
pnpm check(lint+typecheck) passesswift testpasses forRemoteClawKittargetsOut of scope
Notes
ChatMarkdownPreprocessor.swift(141 lines), followed byChatView.swiftandChatMessageViews.swift(133 lines each). All three are in the chat UI sub-cluster and may share related upstream commits.TalkConfigParsingTests.swift) was found via basename search — fork has it underapps/ios/Tests/while upstream has it underapps/shared/OpenClawKit/Tests/OpenClawKitTests/. Verify the fork path is intentional or whether it should also be moved/renamed.