diff --git "a/data/pr_scope_clusters.json" "b/data/pr_scope_clusters.json" --- "a/data/pr_scope_clusters.json" +++ "b/data/pr_scope_clusters.json" @@ -1,5380 +1,5605 @@ [ { "authors": [ - "IVY-AI-gif", - "Lucenx9", - "Zetarcos", - "bluesky6868", - "isopenclaw", - "jguin", - "luoyanglang", - "neeravmakwana", - "snowshadow" + "Tsenghan", + "cmaldonado80", + "hansolo949", + "kagura-agent", + "njxiaohan", + "plokomarketing-ai", + "xudaiyanzi" ], - "average_similarity": 0.385, - "cluster_id": "pr-scope-53288-15", + "average_similarity": 0.397, + "cluster_id": "pr-scope-37574-10", "kind": "pr_scope", - "last_activity_at": "2026-04-19T05:40:44Z", + "last_activity_at": "2026-04-20T20:46:23Z", "outside_window_prs": [ { - "additions": 130, - "author": "jeremyknows", - "changed_files": 3, - "created_at": "2026-03-24T02:00:14Z", - "deletions": 17, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53288/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53288", - "merged": false, - "number": 53288, - "state": "open", - "title": "feat(discord): extract embed fields and footer for agent visibility", - "updated_at": "2026-03-24T20:15:31Z" - }, - { - "additions": 162, - "author": "joelnishanth", + "additions": 8, + "author": "xialonglee", "changed_files": 2, - "created_at": "2026-03-24T17:37:34Z", - "deletions": 5, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53854/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53854", - "merged": false, - "number": 53854, - "state": "open", - "title": "fix(discord): catch thrown errors from gateway WebSocket close handler", - "updated_at": "2026-03-24T20:15:28Z" - }, - { - "additions": 151, - "author": "qinchaomeishenmeshi", - "changed_files": 3, - "created_at": "2026-03-24T22:31:04Z", - "deletions": 3, + "created_at": "2026-03-06T09:43:49Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54035/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54035", + "files_url": "https://github.com/openclaw/openclaw/pull/37574/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37574", "merged": false, - "number": 54035, + "number": 37574, "state": "open", - "title": "fix(discord): use turn-source routing hints for exec approvals before session-key fallback", - "updated_at": "2026-03-24T22:33:23Z" + "title": "perf(ui): avoid per-event array allocation in eventLogBuffer", + "updated_at": "2026-04-20T04:35:50Z" }, { - "additions": 62, - "author": "whydoineedausername-huh", + "additions": 116, + "author": "Schnitzel", "changed_files": 2, - "created_at": "2026-04-10T18:14:16Z", - "deletions": 1, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64446/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64446", - "merged": false, - "number": 64446, - "state": "open", - "title": "fix(discord): normalize explicit parent channel ids for child bindings", - "updated_at": "2026-04-10T19:15:29Z" - }, - { - "additions": 65, - "author": "BenediktSchackenberg", - "changed_files": 3, - "created_at": "2026-04-11T10:57:21Z", - "deletions": 1, + "created_at": "2026-04-14T01:50:09Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64768/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64768", + "files_url": "https://github.com/openclaw/openclaw/pull/66271/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66271", "merged": false, - "number": 64768, + "number": 66271, "state": "open", - "title": "fix(discord): disconnect gateway before missing-id startup throw", - "updated_at": "2026-04-11T11:14:32Z" + "title": "Control UI: avoid chat flicker on session reload", + "updated_at": "2026-04-14T02:17:24Z" }, { - "additions": 386, - "author": "snowshadow", + "additions": 22, + "author": "0riginal-claw", "changed_files": 2, - "created_at": "2026-04-12T01:30:18Z", - "deletions": 0, + "created_at": "2026-04-14T10:15:49Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65084/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65084", + "files_url": "https://github.com/openclaw/openclaw/pull/66485/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66485", "merged": false, - "number": 65084, + "number": 66485, "state": "open", - "title": "fix(discord): guard zombie gateway reconnects after close", - "updated_at": "2026-04-12T11:18:10Z" + "title": "Align context usage display, refresh chat after compaction", + "updated_at": "2026-04-14T10:23:35Z" } ], "pairwise": [ { - "breadth_similarity": 0.367, - "concentration_similarity": 0.774, - "content_similarity": 0.868, - "left_pr_number": 65084, - "right_pr_number": 65727, + "breadth_similarity": 0.45, + "concentration_similarity": 0.879, + "content_similarity": 0.906, + "left_pr_number": 67699, + "right_pr_number": 68518, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/gateway-plugin.ts", - "extensions/discord/src/monitor/provider.proxy.test.ts" + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.799, - "size_similarity": 0.774 + "similarity": 0.83, + "size_similarity": 0.712 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.799, - "left_pr_number": 53854, - "right_pr_number": 67033, + "content_similarity": 0.739, + "left_pr_number": 67951, + "right_pr_number": 68518, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/gateway-plugin.test.ts", - "extensions/discord/src/monitor/gateway-plugin.ts" + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.765, - "size_similarity": 0.371 + "similarity": 0.752, + "size_similarity": 0.564 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.782, - "left_pr_number": 65084, - "right_pr_number": 68159, + "breadth_similarity": 0.75, + "concentration_similarity": 0.778, + "content_similarity": 0.687, + "left_pr_number": 37574, + "right_pr_number": 66485, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/gateway-plugin.ts", - "extensions/discord/src/monitor/provider.proxy.test.ts" + "ui/src/ui/app-gateway.ts" ], - "similarity": 0.741, - "size_similarity": 0.29 + "similarity": 0.673, + "size_similarity": 0.519 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.695, - "left_pr_number": 68538, - "right_pr_number": 68710, + "breadth_similarity": 0.45, + "concentration_similarity": 0.879, + "content_similarity": 0.688, + "left_pr_number": 67699, + "right_pr_number": 67951, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/native-command.plugin-dispatch.test.ts", - "extensions/discord/src/monitor/native-command.ts" + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.721, - "size_similarity": 0.566 + "similarity": 0.631, + "size_similarity": 0.402 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.994, - "content_similarity": 0.714, - "left_pr_number": 54035, - "right_pr_number": 66918, + "breadth_similarity": 0.7, + "concentration_similarity": 1.0, + "content_similarity": 0.673, + "left_pr_number": 66271, + "right_pr_number": 67037, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/exec-approvals.test.ts", - "extensions/discord/src/monitor/exec-approvals.ts" + "ui/src/ui/app-gateway.sessions.node.test.ts", + "ui/src/ui/app-gateway.ts" ], - "similarity": 0.715, - "size_similarity": 0.714 + "similarity": 0.629, + "size_similarity": 0.253 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.653, - "left_pr_number": 65084, - "right_pr_number": 67033, + "content_similarity": 0.561, + "left_pr_number": 68014, + "right_pr_number": 68518, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/gateway-plugin.ts" + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.631, - "size_similarity": 0.161 + "similarity": 0.626, + "size_similarity": 0.723 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.774, - "content_similarity": 0.679, - "left_pr_number": 65727, - "right_pr_number": 68159, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.608, + "left_pr_number": 37574, + "right_pr_number": 66271, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/gateway-plugin.ts", - "extensions/discord/src/monitor/provider.proxy.test.ts" + "ui/src/ui/app-gateway.ts" ], - "similarity": 0.584, - "size_similarity": 0.224 + "similarity": 0.593, + "size_similarity": 0.119 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.483, - "left_pr_number": 53854, - "right_pr_number": 65084, + "content_similarity": 0.462, + "left_pr_number": 67951, + "right_pr_number": 68014, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/gateway-plugin.ts" + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.553, - "size_similarity": 0.433 + "similarity": 0.565, + "size_similarity": 0.779 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.438, - "left_pr_number": 67033, - "right_pr_number": 68159, + "breadth_similarity": 0.75, + "concentration_similarity": 0.778, + "content_similarity": 0.591, + "left_pr_number": 66271, + "right_pr_number": 66485, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/gateway-plugin.ts" + "ui/src/ui/app-gateway.ts" ], - "similarity": 0.539, - "size_similarity": 0.554 + "similarity": 0.562, + "size_similarity": 0.229 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.409, - "left_pr_number": 53854, - "right_pr_number": 68159, + "content_similarity": 0.486, + "left_pr_number": 37574, + "right_pr_number": 69402, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/gateway-plugin.ts" + "ui/src/ui/app-gateway.ts" ], - "similarity": 0.537, - "size_similarity": 0.671 + "similarity": 0.54, + "size_similarity": 0.5 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.774, - "content_similarity": 0.566, - "left_pr_number": 65727, - "right_pr_number": 67033, + "breadth_similarity": 0.35, + "concentration_similarity": 0.879, + "content_similarity": 0.515, + "left_pr_number": 67699, + "right_pr_number": 68014, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/gateway-plugin.ts" + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.49, - "size_similarity": 0.124 + "similarity": 0.517, + "size_similarity": 0.515 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.309, - "left_pr_number": 64446, - "right_pr_number": 67867, + "breadth_similarity": 0.317, + "concentration_similarity": 0.882, + "content_similarity": 0.477, + "left_pr_number": 66271, + "right_pr_number": 69454, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/thread-bindings.manager.ts" + "ui/src/ui/app-gateway.sessions.node.test.ts", + "ui/src/ui/app-gateway.ts" ], - "similarity": 0.469, - "size_similarity": 0.794 + "similarity": 0.49, + "size_similarity": 0.534 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.212, - "left_pr_number": 68159, - "right_pr_number": 68538, + "breadth_similarity": 0.5, + "concentration_similarity": 0.778, + "content_similarity": 0.505, + "left_pr_number": 66485, + "right_pr_number": 69402, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.439, - "size_similarity": 0.933 + "shared_filenames": [ + "ui/src/ui/app-gateway.ts" + ], + "similarity": 0.481, + "size_similarity": 0.259 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.199, - "left_pr_number": 66918, - "right_pr_number": 68159, + "breadth_similarity": 0.417, + "concentration_similarity": 0.882, + "content_similarity": 0.455, + "left_pr_number": 67037, + "right_pr_number": 69454, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.436, - "size_similarity": 0.982 + "shared_filenames": [ + "ui/src/ui/app-gateway.node.test.ts", + "ui/src/ui/app-gateway.sessions.node.test.ts", + "ui/src/ui/app-gateway.ts" + ], + "similarity": 0.475, + "size_similarity": 0.473 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.195, - "left_pr_number": 64446, - "right_pr_number": 67033, + "content_similarity": 0.429, + "left_pr_number": 66271, + "right_pr_number": 69402, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/app-gateway.ts" ], - "shared_filenames": [], "similarity": 0.434, - "size_similarity": 0.984 + "size_similarity": 0.059 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.208, - "left_pr_number": 53854, - "right_pr_number": 68034, + "breadth_similarity": 0.45, + "concentration_similarity": 0.879, + "content_similarity": 0.26, + "left_pr_number": 66271, + "right_pr_number": 67699, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.428, - "size_similarity": 0.879 + "shared_filenames": [ + "ui/src/ui/app-gateway.ts" + ], + "similarity": 0.405, + "size_similarity": 0.894 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.199, - "left_pr_number": 68034, - "right_pr_number": 68710, + "breadth_similarity": 0.35, + "concentration_similarity": 0.879, + "content_similarity": 0.444, + "left_pr_number": 67699, + "right_pr_number": 69402, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.424, - "size_similarity": 0.896 + "shared_filenames": [ + "ui/src/ui/app-gateway.ts" + ], + "similarity": 0.398, + "size_similarity": 0.053 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.194, - "left_pr_number": 66918, - "right_pr_number": 68538, + "content_similarity": 0.171, + "left_pr_number": 66271, + "right_pr_number": 68518, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.423, - "size_similarity": 0.917 + "similarity": 0.389, + "size_similarity": 0.797 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.774, - "content_similarity": 0.419, - "left_pr_number": 53854, - "right_pr_number": 65727, + "breadth_similarity": 0.7, + "concentration_similarity": 1.0, + "content_similarity": 0.371, + "left_pr_number": 37574, + "right_pr_number": 67037, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/discord/src/monitor/gateway-plugin.ts" + "ui/src/ui/app-gateway.ts" ], - "similarity": 0.419, - "size_similarity": 0.335 + "similarity": 0.384, + "size_similarity": 0.03 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.6, "concentration_similarity": 1.0, - "content_similarity": 0.215, - "left_pr_number": 53854, - "right_pr_number": 68710, + "content_similarity": 0.366, + "left_pr_number": 67037, + "right_pr_number": 69402, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.419, - "size_similarity": 0.788 - }, - { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.202, - "left_pr_number": 64768, - "right_pr_number": 67033, - "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "shared_filenames": [ + "ui/src/ui/app-gateway.ts" ], - "shared_filenames": [], - "similarity": 0.416, - "size_similarity": 0.939 + "similarity": 0.368, + "size_similarity": 0.015 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.211, - "left_pr_number": 53288, - "right_pr_number": 53854, + "breadth_similarity": 0.667, + "concentration_similarity": 0.996, + "content_similarity": 0.204, + "left_pr_number": 67699, + "right_pr_number": 69454, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.413, - "size_similarity": 0.88 + "shared_filenames": [ + "ui/src/ui/app-gateway.ts", + "ui/src/ui/app-render.helpers.ts" + ], + "similarity": 0.349, + "size_similarity": 0.597 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.201, - "left_pr_number": 68159, - "right_pr_number": 68298, + "breadth_similarity": 0.7, + "concentration_similarity": 0.899, + "content_similarity": 0.287, + "left_pr_number": 66485, + "right_pr_number": 67699, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.413, - "size_similarity": 0.982 + "shared_filenames": [ + "ui/src/ui/app-gateway.ts" + ], + "similarity": 0.347, + "size_similarity": 0.205 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.192, - "left_pr_number": 64446, - "right_pr_number": 64768, + "breadth_similarity": 0.45, + "concentration_similarity": 0.778, + "content_similarity": 0.354, + "left_pr_number": 66485, + "right_pr_number": 67037, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.411, - "size_similarity": 0.955 + "shared_filenames": [ + "ui/src/ui/app-gateway.ts" + ], + "similarity": 0.34, + "size_similarity": 0.058 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.216, - "left_pr_number": 53854, - "right_pr_number": 68538, + "content_similarity": 0.165, + "left_pr_number": 66271, + "right_pr_number": 67951, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.409, - "size_similarity": 0.719 + "similarity": 0.333, + "size_similarity": 0.449 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.994, - "content_similarity": 0.198, - "left_pr_number": 53288, - "right_pr_number": 54035, + "concentration_similarity": 1.0, + "content_similarity": 0.167, + "left_pr_number": 66271, + "right_pr_number": 68014, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.407, - "size_similarity": 0.955 + "similarity": 0.328, + "size_similarity": 0.576 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.203, - "left_pr_number": 64768, - "right_pr_number": 67867, + "breadth_similarity": 0.75, + "concentration_similarity": 0.879, + "content_similarity": 0.236, + "left_pr_number": 67037, + "right_pr_number": 67699, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.406, - "size_similarity": 0.758 + "shared_filenames": [ + "ui/src/ui/app-gateway.ts" + ], + "similarity": 0.327, + "size_similarity": 0.283 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.184, - "left_pr_number": 66918, - "right_pr_number": 68298, + "breadth_similarity": 0.567, + "concentration_similarity": 0.895, + "content_similarity": 0.285, + "left_pr_number": 66485, + "right_pr_number": 69454, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.404, - "size_similarity": 1.0 + "shared_filenames": [ + "ui/src/ui/app-gateway.ts" + ], + "similarity": 0.319, + "size_similarity": 0.122 }, { "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.196, - "left_pr_number": 68298, - "right_pr_number": 68538, + "concentration_similarity": 0.778, + "content_similarity": 0.167, + "left_pr_number": 66485, + "right_pr_number": 67951, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.4, - "size_similarity": 0.917 + "similarity": 0.307, + "size_similarity": 0.509 }, { - "breadth_similarity": 0.833, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.207, - "left_pr_number": 67033, - "right_pr_number": 67867, + "content_similarity": 0.155, + "left_pr_number": 37574, + "right_pr_number": 67951, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.399, - "size_similarity": 0.806 + "similarity": 0.298, + "size_similarity": 0.264 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.202, - "left_pr_number": 53288, - "right_pr_number": 68538, + "breadth_similarity": 0.45, + "concentration_similarity": 0.879, + "content_similarity": 0.273, + "left_pr_number": 37574, + "right_pr_number": 67699, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.397, - "size_similarity": 0.816 + "shared_filenames": [ + "ui/src/ui/app-gateway.ts" + ], + "similarity": 0.296, + "size_similarity": 0.106 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.994, - "content_similarity": 0.212, - "left_pr_number": 53854, - "right_pr_number": 54035, + "breadth_similarity": 0.317, + "concentration_similarity": 0.882, + "content_similarity": 0.29, + "left_pr_number": 37574, + "right_pr_number": 69454, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.395, - "size_similarity": 0.922 + "shared_filenames": [ + "ui/src/ui/app-gateway.ts", + "ui/src/ui/app-settings.ts" + ], + "similarity": 0.288, + "size_similarity": 0.063 }, { - "breadth_similarity": 0.833, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.207, - "left_pr_number": 53288, - "right_pr_number": 68159, + "content_similarity": 0.161, + "left_pr_number": 37574, + "right_pr_number": 68518, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.392, - "size_similarity": 0.762 + "similarity": 0.285, + "size_similarity": 0.149 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.202, - "left_pr_number": 53854, - "right_pr_number": 66918, + "content_similarity": 0.163, + "left_pr_number": 68014, + "right_pr_number": 69402, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.39, - "size_similarity": 0.659 + "similarity": 0.279, + "size_similarity": 0.103 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.195, - "left_pr_number": 53288, - "right_pr_number": 68034, + "breadth_similarity": 0.75, + "concentration_similarity": 0.778, + "content_similarity": 0.173, + "left_pr_number": 66485, + "right_pr_number": 68518, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.386, - "size_similarity": 0.774 + "similarity": 0.278, + "size_similarity": 0.287 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.2, - "left_pr_number": 68034, - "right_pr_number": 68538, + "breadth_similarity": 0.283, + "concentration_similarity": 0.882, + "content_similarity": 0.279, + "left_pr_number": 69402, + "right_pr_number": 69454, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.385, - "size_similarity": 0.632 + "shared_filenames": [ + "ui/src/ui/app-gateway.ts" + ], + "similarity": 0.272, + "size_similarity": 0.032 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 1.0, - "content_similarity": 0.191, - "left_pr_number": 53288, - "right_pr_number": 68298, + "breadth_similarity": 0.5, + "concentration_similarity": 0.778, + "content_similarity": 0.169, + "left_pr_number": 66485, + "right_pr_number": 68014, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.384, - "size_similarity": 0.748 + "similarity": 0.267, + "size_similarity": 0.397 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.7, "concentration_similarity": 1.0, - "content_similarity": 0.215, - "left_pr_number": 65084, - "right_pr_number": 68710, + "content_similarity": 0.167, + "left_pr_number": 67037, + "right_pr_number": 68518, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.383, - "size_similarity": 0.549 + "similarity": 0.267, + "size_similarity": 0.201 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.205, - "left_pr_number": 68034, - "right_pr_number": 68159, + "content_similarity": 0.157, + "left_pr_number": 37574, + "right_pr_number": 68014, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.382, - "size_similarity": 0.589 + "similarity": 0.266, + "size_similarity": 0.206 }, { - "breadth_similarity": 0.833, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.189, - "left_pr_number": 53288, - "right_pr_number": 66918, + "content_similarity": 0.161, + "left_pr_number": 67951, + "right_pr_number": 69402, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.378, - "size_similarity": 0.748 + "similarity": 0.257, + "size_similarity": 0.132 }, { - "breadth_similarity": 0.833, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.201, - "left_pr_number": 53288, - "right_pr_number": 68710, + "content_similarity": 0.167, + "left_pr_number": 68518, + "right_pr_number": 69402, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.378, - "size_similarity": 0.693 + "similarity": 0.253, + "size_similarity": 0.074 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.7, "concentration_similarity": 1.0, - "content_similarity": 0.211, - "left_pr_number": 68159, - "right_pr_number": 68710, + "content_similarity": 0.161, + "left_pr_number": 67037, + "right_pr_number": 67951, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.377, - "size_similarity": 0.528 + "similarity": 0.25, + "size_similarity": 0.113 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.6, "concentration_similarity": 1.0, - "content_similarity": 0.201, - "left_pr_number": 64446, - "right_pr_number": 68159, + "content_similarity": 0.163, + "left_pr_number": 67037, + "right_pr_number": 68014, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.375, - "size_similarity": 0.562 + "similarity": 0.246, + "size_similarity": 0.146 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.206, - "left_pr_number": 67033, - "right_pr_number": 68538, + "breadth_similarity": 0.317, + "concentration_similarity": 0.882, + "content_similarity": 0.138, + "left_pr_number": 68518, + "right_pr_number": 69454, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.372, - "size_similarity": 0.517 + "similarity": 0.237, + "size_similarity": 0.425 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.209, - "left_pr_number": 65084, - "right_pr_number": 68034, + "breadth_similarity": 0.283, + "concentration_similarity": 0.882, + "content_similarity": 0.135, + "left_pr_number": 68014, + "right_pr_number": 69454, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.37, - "size_similarity": 0.492 + "similarity": 0.213, + "size_similarity": 0.308 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.193, - "left_pr_number": 66918, - "right_pr_number": 67033, + "breadth_similarity": 0.317, + "concentration_similarity": 0.882, + "content_similarity": 0.133, + "left_pr_number": 67951, + "right_pr_number": 69454, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.37, - "size_similarity": 0.564 - }, - { - "breadth_similarity": 0.875, + "similarity": 0.205, + "size_similarity": 0.24 + } + ], + "pr_count": 10, + "pr_numbers": [ + 37574, + 66271, + 66485, + 67037, + 67699, + 67951, + 68014, + 68518, + 69402, + 69454 + ], + "recent_pr_count": 7, + "recent_pr_numbers": [ + 67037, + 67699, + 67951, + 68014, + 68518, + 69402, + 69454 + ], + "representative_pr_number": 66271, + "representative_title": "Control UI: avoid chat flicker on session reload", + "representative_url": "https://github.com/openclaw/openclaw/pull/66271", + "shared_directories": [ + "ui/src/ui", + "ui/src", + "ui", + "ui/src/ui/controllers" + ], + "shared_filenames": [ + "ui/src/ui/app-gateway.ts", + "ui/src/ui/controllers/chat.ts", + "ui/src/ui/app-gateway.sessions.node.test.ts", + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/app-gateway.node.test.ts", + "ui/src/ui/app-settings.ts", + "ui/src/ui/app-render.helpers.ts" + ], + "summary": "10 open PRs share weighted file overlap around `ui/src/ui/app-gateway.ts`, `ui/src/ui/controllers/chat.ts`, `ui/src/ui/app-gateway.sessions.node.test.ts`; representative PR #66271.", + "title": "Scope: Control UI: avoid chat flicker on session reload" + }, + { + "authors": [ + "1aifanatic", + "ImLukeF", + "christnorman", + "everySympathy", + "jasonmakr", + "mushuiyu886", + "nightq" + ], + "average_similarity": 0.539, + "cluster_id": "pr-scope-66583-8", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T07:05:24Z", + "outside_window_prs": [ + { + "additions": 175, + "author": "RafeSymonds", + "changed_files": 10, + "created_at": "2026-04-14T13:59:49Z", + "deletions": 12, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66583/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66583", + "merged": false, + "number": 66583, + "state": "open", + "title": "feat(memory-core): add dreaming.model config field for per-sweep model override", + "updated_at": "2026-04-14T14:06:36Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.201, - "left_pr_number": 64768, - "right_pr_number": 68298, + "content_similarity": 0.973, + "left_pr_number": 68087, + "right_pr_number": 68312, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], "shared_filenames": [ - "extensions/discord/src/monitor/message-handler.preflight.ts" + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" ], - "similarity": 0.368, - "size_similarity": 0.6 + "similarity": 0.981, + "size_similarity": 1.0 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.187, - "left_pr_number": 66918, - "right_pr_number": 68034, + "content_similarity": 0.974, + "left_pr_number": 68020, + "right_pr_number": 68087, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.368, - "size_similarity": 0.579 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.205, - "left_pr_number": 53854, - "right_pr_number": 68298, - "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" ], - "shared_filenames": [], - "similarity": 0.367, - "size_similarity": 0.659 + "similarity": 0.965, + "size_similarity": 0.884 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.994, - "content_similarity": 0.196, - "left_pr_number": 54035, - "right_pr_number": 68034, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.949, + "left_pr_number": 68020, + "right_pr_number": 68312, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.367, - "size_similarity": 0.811 - }, - { - "breadth_similarity": 0.583, - "concentration_similarity": 0.994, - "content_similarity": 0.203, - "left_pr_number": 54035, - "right_pr_number": 68538, - "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" ], - "shared_filenames": [], - "similarity": 0.367, - "size_similarity": 0.779 + "similarity": 0.947, + "size_similarity": 0.884 }, { - "breadth_similarity": 0.833, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.208, - "left_pr_number": 64768, - "right_pr_number": 68159, + "content_similarity": 0.609, + "left_pr_number": 68087, + "right_pr_number": 68364, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.367, - "size_similarity": 0.589 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.695, + "size_similarity": 0.789 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.196, - "left_pr_number": 64446, - "right_pr_number": 68538, + "content_similarity": 0.596, + "left_pr_number": 68312, + "right_pr_number": 68364, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.366, - "size_similarity": 0.525 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.685, + "size_similarity": 0.789 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.184, - "left_pr_number": 64446, - "right_pr_number": 66918, + "content_similarity": 0.541, + "left_pr_number": 68020, + "right_pr_number": 68364, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.365, - "size_similarity": 0.573 - }, - { - "breadth_similarity": 0.583, - "concentration_similarity": 0.994, - "content_similarity": 0.208, - "left_pr_number": 54035, - "right_pr_number": 68159, - "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" ], - "shared_filenames": [], - "similarity": 0.363, - "size_similarity": 0.727 + "similarity": 0.634, + "size_similarity": 0.698 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.193, - "left_pr_number": 66918, - "right_pr_number": 68710, + "breadth_similarity": 0.5, + "concentration_similarity": 0.687, + "content_similarity": 0.575, + "left_pr_number": 68020, + "right_pr_number": 68681, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.363, - "size_similarity": 0.519 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.583, + "size_similarity": 0.642 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.231, - "left_pr_number": 64446, - "right_pr_number": 68034, + "breadth_similarity": 0.5, + "concentration_similarity": 0.687, + "content_similarity": 0.559, + "left_pr_number": 68087, + "right_pr_number": 68681, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], "shared_filenames": [ - "extensions/discord/src/monitor/thread-bindings.manager.ts" + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" ], - "similarity": 0.362, - "size_similarity": 0.332 + "similarity": 0.561, + "size_similarity": 0.567 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.267, - "left_pr_number": 67867, - "right_pr_number": 68034, + "breadth_similarity": 0.5, + "concentration_similarity": 0.687, + "content_similarity": 0.546, + "left_pr_number": 68312, + "right_pr_number": 68681, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], "shared_filenames": [ - "extensions/discord/src/monitor/thread-bindings.manager.ts" + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" ], - "similarity": 0.36, - "size_similarity": 0.263 + "similarity": 0.552, + "size_similarity": 0.567 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.994, - "content_similarity": 0.202, - "left_pr_number": 54035, - "right_pr_number": 68710, + "breadth_similarity": 0.5, + "concentration_similarity": 0.687, + "content_similarity": 0.548, + "left_pr_number": 68364, + "right_pr_number": 68681, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.359, - "size_similarity": 0.726 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.535, + "size_similarity": 0.448 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.203, - "left_pr_number": 64768, - "right_pr_number": 68538, + "breadth_similarity": 0.267, + "concentration_similarity": 0.91, + "content_similarity": 0.636, + "left_pr_number": 68087, + "right_pr_number": 69209, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.358, - "size_similarity": 0.55 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.526, + "size_similarity": 0.06 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.198, - "left_pr_number": 53288, - "right_pr_number": 64768, + "breadth_similarity": 0.267, + "concentration_similarity": 0.91, + "content_similarity": 0.635, + "left_pr_number": 68312, + "right_pr_number": 69209, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.356, - "size_similarity": 0.449 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.525, + "size_similarity": 0.06 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.19, - "left_pr_number": 64768, - "right_pr_number": 66918, + "breadth_similarity": 0.267, + "concentration_similarity": 0.91, + "content_similarity": 0.63, + "left_pr_number": 68020, + "right_pr_number": 69209, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.356, - "size_similarity": 0.6 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.524, + "size_similarity": 0.068 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.994, - "content_similarity": 0.193, - "left_pr_number": 54035, - "right_pr_number": 68298, + "breadth_similarity": 0.45, + "concentration_similarity": 0.788, + "content_similarity": 0.56, + "left_pr_number": 68364, + "right_pr_number": 68445, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.354, - "size_similarity": 0.714 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.52, + "size_similarity": 0.288 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.205, - "left_pr_number": 53854, - "right_pr_number": 64446, + "breadth_similarity": 0.9, + "concentration_similarity": 0.898, + "content_similarity": 0.393, + "left_pr_number": 68445, + "right_pr_number": 68681, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", + "src" ], - "shared_filenames": [], - "similarity": 0.35, - "size_similarity": 0.377 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.506, + "size_similarity": 0.644 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.213, - "left_pr_number": 67867, - "right_pr_number": 68159, + "breadth_similarity": 0.8, + "concentration_similarity": 0.593, + "content_similarity": 0.495, + "left_pr_number": 66583, + "right_pr_number": 69209, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "extensions/memory-core/src", + "extensions/memory-core", + "src/memory-host-sdk", + "extensions", + "src" ], - "shared_filenames": [], - "similarity": 0.349, - "size_similarity": 0.446 + "shared_filenames": [ + "extensions/memory-core/openclaw.plugin.json", + "extensions/memory-core/src/config.test.ts", + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts", + "extensions/memory-core/src/dreaming-phases.ts", + "extensions/memory-core/src/dreaming.ts", + "src/memory-host-sdk/dreaming.test.ts", + "src/memory-host-sdk/dreaming.ts" + ], + "similarity": 0.501, + "size_similarity": 0.295 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.217, - "left_pr_number": 65084, - "right_pr_number": 68538, + "breadth_similarity": 0.267, + "concentration_similarity": 0.91, + "content_similarity": 0.589, + "left_pr_number": 68364, + "right_pr_number": 69209, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.348, - "size_similarity": 0.311 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.492, + "size_similarity": 0.047 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.195, - "left_pr_number": 67033, - "right_pr_number": 68298, + "breadth_similarity": 0.45, + "concentration_similarity": 0.788, + "content_similarity": 0.47, + "left_pr_number": 68087, + "right_pr_number": 68445, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.346, - "size_similarity": 0.564 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.469, + "size_similarity": 0.365 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 1.0, - "content_similarity": 0.197, - "left_pr_number": 67867, - "right_pr_number": 68298, + "breadth_similarity": 0.45, + "concentration_similarity": 0.788, + "content_similarity": 0.463, + "left_pr_number": 68312, + "right_pr_number": 68445, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.344, - "size_similarity": 0.455 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.464, + "size_similarity": 0.365 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.189, - "left_pr_number": 68034, - "right_pr_number": 68298, + "breadth_similarity": 0.583, + "concentration_similarity": 0.878, + "content_similarity": 0.482, + "left_pr_number": 68445, + "right_pr_number": 69209, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", + "src" ], - "shared_filenames": [], - "similarity": 0.344, - "size_similarity": 0.579 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts", + "extensions/memory-core/src/dreaming-phases.ts" + ], + "similarity": 0.464, + "size_similarity": 0.164 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.202, - "left_pr_number": 53288, - "right_pr_number": 67867, + "breadth_similarity": 0.45, + "concentration_similarity": 0.788, + "content_similarity": 0.445, + "left_pr_number": 68020, + "right_pr_number": 68445, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.343, - "size_similarity": 0.34 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.458, + "size_similarity": 0.413 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.212, - "left_pr_number": 53854, - "right_pr_number": 64768, + "breadth_similarity": 0.533, + "concentration_similarity": 0.776, + "content_similarity": 0.491, + "left_pr_number": 68681, + "right_pr_number": 69209, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", + "src" ], - "shared_filenames": [], - "similarity": 0.341, - "size_similarity": 0.395 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.452, + "size_similarity": 0.106 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.186, - "left_pr_number": 64446, - "right_pr_number": 68298, + "breadth_similarity": 0.2, + "concentration_similarity": 0.503, + "content_similarity": 0.396, + "left_pr_number": 66583, + "right_pr_number": 68312, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.341, - "size_similarity": 0.573 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.353, + "size_similarity": 0.203 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.208, - "left_pr_number": 67867, - "right_pr_number": 68538, + "breadth_similarity": 0.45, + "concentration_similarity": 0.714, + "content_similarity": 0.269, + "left_pr_number": 66583, + "right_pr_number": 68445, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", + "src" ], - "shared_filenames": [], - "similarity": 0.341, - "size_similarity": 0.417 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts", + "extensions/memory-core/src/dreaming-phases.ts" + ], + "similarity": 0.352, + "size_similarity": 0.556 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.195, - "left_pr_number": 68298, - "right_pr_number": 68710, + "breadth_similarity": 0.2, + "concentration_similarity": 0.503, + "content_similarity": 0.398, + "left_pr_number": 66583, + "right_pr_number": 68364, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.34, - "size_similarity": 0.519 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.348, + "size_similarity": 0.16 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.211, - "left_pr_number": 53288, - "right_pr_number": 65084, + "breadth_similarity": 0.2, + "concentration_similarity": 0.503, + "content_similarity": 0.386, + "left_pr_number": 66583, + "right_pr_number": 68087, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.338, - "size_similarity": 0.381 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.346, + "size_similarity": 0.203 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.194, - "left_pr_number": 66918, - "right_pr_number": 67867, + "breadth_similarity": 0.2, + "concentration_similarity": 0.503, + "content_similarity": 0.353, + "left_pr_number": 66583, + "right_pr_number": 68020, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.338, - "size_similarity": 0.455 + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.327, + "size_similarity": 0.23 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.199, - "left_pr_number": 67033, - "right_pr_number": 68034, + "breadth_similarity": 0.4, + "concentration_similarity": 0.816, + "content_similarity": 0.273, + "left_pr_number": 66583, + "right_pr_number": 68681, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", + "src" ], - "shared_filenames": [], - "similarity": 0.338, - "size_similarity": 0.326 - }, + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts" + ], + "similarity": 0.325, + "size_similarity": 0.358 + } + ], + "pr_count": 8, + "pr_numbers": [ + 66583, + 68020, + 68087, + 68312, + 68364, + 68445, + 68681, + 69209 + ], + "recent_pr_count": 7, + "recent_pr_numbers": [ + 68020, + 68087, + 68312, + 68364, + 68445, + 68681, + 69209 + ], + "representative_pr_number": 68087, + "representative_title": "fix(memory-core): downgrade cleanup warning to debug when missing operator.admin scope", + "representative_url": "https://github.com/openclaw/openclaw/pull/68087", + "shared_directories": [ + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", + "src", + "src/memory-host-sdk" + ], + "shared_filenames": [ + "extensions/memory-core/src/dreaming-narrative.test.ts", + "extensions/memory-core/src/dreaming-narrative.ts", + "extensions/memory-core/src/dreaming-phases.ts", + "extensions/memory-core/src/config.test.ts", + "src/memory-host-sdk/dreaming.test.ts", + "extensions/memory-core/src/dreaming.ts", + "src/memory-host-sdk/dreaming.ts", + "extensions/memory-core/openclaw.plugin.json" + ], + "summary": "8 open PRs share weighted file overlap around `extensions/memory-core/src/dreaming-narrative.test.ts`, `extensions/memory-core/src/dreaming-narrative.ts`, `extensions/memory-core/src/dreaming-phases.ts`; representative PR #68087.", + "title": "Scope: fix(memory-core): downgrade cleanup warning to debug when missing operator.admin scope" + }, + { + "authors": [ + "Maaannnn", + "briandevans", + "dkaygithub", + "draix", + "duqaXxX", + "hss-oss", + "sk7n4k3d" + ], + "average_similarity": 0.433, + "cluster_id": "pr-scope-64660-8", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T17:32:57Z", + "outside_window_prs": [ { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.201, - "left_pr_number": 53288, - "right_pr_number": 67033, + "additions": 404, + "author": "gzsiang", + "changed_files": 9, + "created_at": "2026-04-11T05:24:38Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64660/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64660", + "merged": false, + "number": 64660, + "state": "open", + "title": "fix(agents): support local LLM tool calls and streaming usage via OpenAI-compatible endpoints", + "updated_at": "2026-04-14T04:09:42Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.875, + "concentration_similarity": 0.721, + "content_similarity": 0.729, + "left_pr_number": 67203, + "right_pr_number": 68418, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.337, - "size_similarity": 0.422 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.753, + "size_similarity": 0.792 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.205, - "left_pr_number": 67033, - "right_pr_number": 68710, + "breadth_similarity": 0.75, + "concentration_similarity": 0.998, + "content_similarity": 0.641, + "left_pr_number": 68418, + "right_pr_number": 69212, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.337, - "size_similarity": 0.292 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.635, + "size_similarity": 0.413 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.203, - "left_pr_number": 65084, - "right_pr_number": 66918, + "content_similarity": 0.608, + "left_pr_number": 66949, + "right_pr_number": 69411, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.335, - "size_similarity": 0.285 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.58, + "size_similarity": 0.195 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.191, - "left_pr_number": 53288, - "right_pr_number": 64446, + "breadth_similarity": 0.625, + "concentration_similarity": 0.998, + "content_similarity": 0.502, + "left_pr_number": 66949, + "right_pr_number": 68418, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.332, - "size_similarity": 0.429 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.578, + "size_similarity": 0.761 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.195, - "left_pr_number": 64446, - "right_pr_number": 68710, + "breadth_similarity": 0.583, + "concentration_similarity": 0.998, + "content_similarity": 0.567, + "left_pr_number": 68418, + "right_pr_number": 69411, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.331, - "size_similarity": 0.297 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.544, + "size_similarity": 0.256 }, { - "breadth_similarity": 0.833, + "breadth_similarity": 0.875, "concentration_similarity": 1.0, - "content_similarity": 0.217, - "left_pr_number": 53854, - "right_pr_number": 67867, + "content_similarity": 0.413, + "left_pr_number": 66949, + "right_pr_number": 69212, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.33, - "size_similarity": 0.299 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.508, + "size_similarity": 0.542 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.994, - "content_similarity": 0.199, - "left_pr_number": 54035, - "right_pr_number": 64768, + "breadth_similarity": 0.5, + "concentration_similarity": 0.842, + "content_similarity": 0.381, + "left_pr_number": 64660, + "right_pr_number": 68418, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.328, - "size_similarity": 0.429 + "shared_filenames": [ + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.495, + "size_similarity": 0.909 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.196, - "left_pr_number": 64768, - "right_pr_number": 68034, + "breadth_similarity": 0.625, + "concentration_similarity": 0.719, + "content_similarity": 0.495, + "left_pr_number": 67203, + "right_pr_number": 69212, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.322, - "size_similarity": 0.347 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.494, + "size_similarity": 0.327 }, { "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.202, - "left_pr_number": 64768, - "right_pr_number": 68710, + "content_similarity": 0.477, + "left_pr_number": 69212, + "right_pr_number": 69411, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.321, - "size_similarity": 0.311 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.483, + "size_similarity": 0.106 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.205, - "left_pr_number": 64446, - "right_pr_number": 65084, + "breadth_similarity": 0.5, + "concentration_similarity": 0.719, + "content_similarity": 0.465, + "left_pr_number": 67203, + "right_pr_number": 69411, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.318, - "size_similarity": 0.163 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.46, + "size_similarity": 0.323 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.994, - "content_similarity": 0.213, - "left_pr_number": 54035, - "right_pr_number": 65084, - "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "breadth_similarity": 0.75, + "concentration_similarity": 0.719, + "content_similarity": 0.362, + "left_pr_number": 66949, + "right_pr_number": 67203, + "shared_directories": [ + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.317, - "size_similarity": 0.399 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.455, + "size_similarity": 0.603 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.994, - "content_similarity": 0.204, - "left_pr_number": 54035, - "right_pr_number": 67867, + "breadth_similarity": 0.174, + "concentration_similarity": 0.768, + "content_similarity": 0.458, + "left_pr_number": 66871, + "right_pr_number": 69411, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.316, - "size_similarity": 0.325 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.439, + "size_similarity": 0.414 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.207, - "left_pr_number": 67867, - "right_pr_number": 68710, + "breadth_similarity": 0.303, + "concentration_similarity": 0.77, + "content_similarity": 0.368, + "left_pr_number": 66871, + "right_pr_number": 68418, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.313, - "size_similarity": 0.236 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.419, + "size_similarity": 0.618 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.205, - "left_pr_number": 65084, - "right_pr_number": 68298, + "breadth_similarity": 0.265, + "concentration_similarity": 0.768, + "content_similarity": 0.387, + "left_pr_number": 66871, + "right_pr_number": 66949, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.311, - "size_similarity": 0.285 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.407, + "size_similarity": 0.471 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.994, - "content_similarity": 0.202, - "left_pr_number": 54035, - "right_pr_number": 67033, + "breadth_similarity": 0.675, + "concentration_similarity": 0.955, + "content_similarity": 0.299, + "left_pr_number": 64660, + "right_pr_number": 68935, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents/pi-embedded-runner", + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.31, - "size_similarity": 0.403 + "shared_filenames": [ + "src/agents/openai-transport-stream.ts", + "src/agents/pi-embedded-runner/stream-resolution.ts" + ], + "similarity": 0.402, + "size_similarity": 0.515 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.212, - "left_pr_number": 64768, - "right_pr_number": 65084, + "breadth_similarity": 0.348, + "concentration_similarity": 0.951, + "content_similarity": 0.29, + "left_pr_number": 66871, + "right_pr_number": 67203, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.307, - "size_similarity": 0.171 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.402, + "size_similarity": 0.78 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.217, - "left_pr_number": 65084, - "right_pr_number": 67867, + "breadth_similarity": 0.325, + "concentration_similarity": 0.797, + "content_similarity": 0.348, + "left_pr_number": 68418, + "right_pr_number": 68935, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.305, - "size_similarity": 0.13 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.401, + "size_similarity": 0.566 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.994, - "content_similarity": 0.193, - "left_pr_number": 54035, - "right_pr_number": 64446, + "breadth_similarity": 0.225, + "concentration_similarity": 0.795, + "content_similarity": 0.316, + "left_pr_number": 68935, + "right_pr_number": 69212, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.304, - "size_similarity": 0.409 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.393, + "size_similarity": 0.729 }, { - "breadth_similarity": 0.633, - "concentration_similarity": 0.78, - "content_similarity": 0.184, - "left_pr_number": 54035, - "right_pr_number": 65727, + "breadth_similarity": 0.389, + "concentration_similarity": 0.84, + "content_similarity": 0.28, + "left_pr_number": 64660, + "right_pr_number": 66949, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.278, - "size_similarity": 0.309 + "shared_filenames": [ + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.381, + "size_similarity": 0.692 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.774, - "content_similarity": 0.187, - "left_pr_number": 65727, - "right_pr_number": 68710, + "breadth_similarity": 0.875, + "concentration_similarity": 0.973, + "content_similarity": 0.267, + "left_pr_number": 66871, + "right_pr_number": 68935, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents/pi-embedded-runner", + "src/agents", + "docs", + "src" ], - "shared_filenames": [], - "similarity": 0.27, - "size_similarity": 0.425 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.375, + "size_similarity": 0.35 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.774, - "content_similarity": 0.181, - "left_pr_number": 65727, - "right_pr_number": 68034, + "breadth_similarity": 0.267, + "concentration_similarity": 0.795, + "content_similarity": 0.262, + "left_pr_number": 66949, + "right_pr_number": 68935, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.259, - "size_similarity": 0.381 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.361, + "size_similarity": 0.744 }, { - "breadth_similarity": 0.467, - "concentration_similarity": 0.774, - "content_similarity": 0.183, - "left_pr_number": 53288, - "right_pr_number": 65727, + "breadth_similarity": 0.556, + "concentration_similarity": 0.879, + "content_similarity": 0.174, + "left_pr_number": 64660, + "right_pr_number": 67203, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.258, - "size_similarity": 0.295 + "shared_filenames": [ + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.352, + "size_similarity": 0.871 }, { - "breadth_similarity": 0.567, - "concentration_similarity": 0.774, - "content_similarity": 0.178, - "left_pr_number": 65727, - "right_pr_number": 68298, + "breadth_similarity": 0.333, + "concentration_similarity": 0.84, + "content_similarity": 0.303, + "left_pr_number": 64660, + "right_pr_number": 69212, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.253, - "size_similarity": 0.22 + "shared_filenames": [ + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.344, + "size_similarity": 0.375 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.774, - "content_similarity": 0.188, - "left_pr_number": 65727, - "right_pr_number": 68538, + "breadth_similarity": 0.659, + "concentration_similarity": 0.928, + "content_similarity": 0.157, + "left_pr_number": 64660, + "right_pr_number": 66871, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents/pi-embedded-runner", + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.243, - "size_similarity": 0.24 + "shared_filenames": [ + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.324, + "size_similarity": 0.68 }, { - "breadth_similarity": 0.467, - "concentration_similarity": 0.774, - "content_similarity": 0.184, - "left_pr_number": 64768, - "right_pr_number": 65727, + "breadth_similarity": 0.367, + "concentration_similarity": 0.924, + "content_similarity": 0.246, + "left_pr_number": 67203, + "right_pr_number": 68935, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.234, - "size_similarity": 0.132 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.323, + "size_similarity": 0.449 }, { - "breadth_similarity": 0.467, - "concentration_similarity": 0.774, - "content_similarity": 0.189, - "left_pr_number": 65727, - "right_pr_number": 67867, + "breadth_similarity": 0.22, + "concentration_similarity": 0.768, + "content_similarity": 0.315, + "left_pr_number": 66871, + "right_pr_number": 69212, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.232, - "size_similarity": 0.1 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.319, + "size_similarity": 0.255 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.774, - "content_similarity": 0.176, - "left_pr_number": 65727, - "right_pr_number": 66918, + "breadth_similarity": 0.183, + "concentration_similarity": 0.795, + "content_similarity": 0.29, + "left_pr_number": 68935, + "right_pr_number": 69411, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.231, - "size_similarity": 0.22 + "shared_filenames": [ + "src/agents/openai-transport-stream.test.ts", + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.283, + "size_similarity": 0.145 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.774, - "content_similarity": 0.178, - "left_pr_number": 64446, - "right_pr_number": 65727, + "breadth_similarity": 0.278, + "concentration_similarity": 0.84, + "content_similarity": 0.154, + "left_pr_number": 64660, + "right_pr_number": 69411, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.219, - "size_similarity": 0.126 + "shared_filenames": [ + "src/agents/openai-transport-stream.ts" + ], + "similarity": 0.22, + "size_similarity": 0.282 } ], - "pr_count": 15, + "pr_count": 8, "pr_numbers": [ - 53288, - 53854, - 54035, - 64446, - 64768, - 65084, - 65727, - 66918, - 67033, - 67867, - 68034, - 68159, - 68298, - 68538, - 68710 + 64660, + 66871, + 66949, + 67203, + 68418, + 68935, + 69212, + 69411 ], - "recent_pr_count": 9, + "recent_pr_count": 7, "recent_pr_numbers": [ - 65727, - 66918, - 67033, - 67867, - 68034, - 68159, - 68298, - 68538, - 68710 + 66871, + 66949, + 67203, + 68418, + 68935, + 69212, + 69411 ], - "representative_pr_number": 68159, - "representative_title": "fix(discord): prevent Identify silent-drop race in gateway startup", - "representative_url": "https://github.com/openclaw/openclaw/pull/68159", + "representative_pr_number": 68418, + "representative_title": "fix(agents): unpack typed-block delta.content arrays in openai-completions stream", + "representative_url": "https://github.com/openclaw/openclaw/pull/68418", "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src", + "src/agents/pi-embedded-runner", + "docs" ], "shared_filenames": [ - "extensions/discord/src/monitor/gateway-plugin.ts", - "extensions/discord/src/monitor/provider.proxy.test.ts", - "extensions/discord/src/monitor/thread-bindings.manager.ts", - "extensions/discord/src/monitor/exec-approvals.ts", - "extensions/discord/src/monitor/exec-approvals.test.ts", - "extensions/discord/src/monitor/gateway-plugin.test.ts", - "extensions/discord/src/monitor/native-command.plugin-dispatch.test.ts", - "extensions/discord/src/monitor/message-handler.preflight.ts" + "src/agents/openai-transport-stream.ts", + "src/agents/openai-transport-stream.test.ts", + "src/agents/pi-embedded-runner/stream-resolution.ts" ], - "summary": "15 open PRs share weighted file overlap around `extensions/discord/src/monitor/gateway-plugin.ts`, `extensions/discord/src/monitor/provider.proxy.test.ts`, `extensions/discord/src/monitor/thread-bindings.manager.ts`; representative PR #68159.", - "title": "Scope: fix(discord): prevent Identify silent-drop race in gateway startup" + "summary": "8 open PRs share weighted file overlap around `src/agents/openai-transport-stream.ts`, `src/agents/openai-transport-stream.test.ts`, `src/agents/pi-embedded-runner/stream-resolution.ts`; representative PR #68418.", + "title": "Scope: fix(agents): unpack typed-block delta.content arrays in openai-completions stream" }, { "authors": [ - "ccage-simp", - "imadal1n", - "jochenfrey", - "lml2468", - "seank-com", - "shawnduggan" + "HelloBias", + "IVY-AI-gif", + "Lucenx9", + "Zetarcos", + "isopenclaw", + "luoyanglang" ], - "average_similarity": 0.563, - "cluster_id": "pr-scope-65017-10", + "average_similarity": 0.404, + "cluster_id": "pr-scope-53288-11", "kind": "pr_scope", - "last_activity_at": "2026-04-18T14:10:44Z", + "last_activity_at": "2026-04-19T17:34:20Z", "outside_window_prs": [ { - "additions": 105, - "author": "imadal1n", + "additions": 130, + "author": "jeremyknows", "changed_files": 3, - "created_at": "2026-04-11T21:51:49Z", - "deletions": 11, + "created_at": "2026-03-24T02:00:14Z", + "deletions": 17, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65017/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65017", + "files_url": "https://github.com/openclaw/openclaw/pull/53288/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53288", "merged": false, - "number": 65017, + "number": 53288, "state": "open", - "title": "fix(memory-core): refresh qmd session exports on transcript updates", - "updated_at": "2026-04-11T22:25:55Z" + "title": "feat(discord): extract embed fields and footer for agent visibility", + "updated_at": "2026-03-24T20:15:31Z" }, { - "additions": 223, - "author": "bek91", - "changed_files": 4, - "created_at": "2026-04-12T07:12:12Z", - "deletions": 49, + "additions": 162, + "author": "joelnishanth", + "changed_files": 2, + "created_at": "2026-03-24T17:37:34Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65226/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65226", + "files_url": "https://github.com/openclaw/openclaw/pull/53854/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53854", "merged": false, - "number": 65226, + "number": 53854, "state": "open", - "title": "Fix qmd session export/update races", - "updated_at": "2026-04-12T07:19:17Z" - } - ], - "pairwise": [ + "title": "fix(discord): catch thrown errors from gateway WebSocket close handler", + "updated_at": "2026-03-24T20:15:28Z" + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.994, - "content_similarity": 0.796, - "left_pr_number": 65017, - "right_pr_number": 67404, - "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", - "src/plugin-sdk", - "extensions", - "src" + "additions": 151, + "author": "qinchaomeishenmeshi", + "changed_files": 3, + "created_at": "2026-03-24T22:31:04Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/54035/files", + "html_url": "https://github.com/openclaw/openclaw/pull/54035", + "merged": false, + "number": 54035, + "state": "open", + "title": "fix(discord): use turn-source routing hints for exec approvals before session-key fallback", + "updated_at": "2026-03-24T22:33:23Z" + }, + { + "additions": 386, + "author": "snowshadow", + "changed_files": 2, + "created_at": "2026-04-12T01:30:18Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65084/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65084", + "merged": false, + "number": 65084, + "state": "open", + "title": "fix(discord): guard zombie gateway reconnects after close", + "updated_at": "2026-04-12T11:18:10Z" + }, + { + "additions": 499, + "author": "snowshadow", + "changed_files": 5, + "created_at": "2026-04-13T05:15:43Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65727/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65727", + "merged": false, + "number": 65727, + "state": "open", + "title": "docs: add hook-pack publishing guide", + "updated_at": "2026-04-13T05:23:27Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.367, + "concentration_similarity": 0.774, + "content_similarity": 0.865, + "left_pr_number": 65084, + "right_pr_number": 65727, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts", - "src/plugin-sdk/agent-harness.ts" + "extensions/discord/src/monitor/gateway-plugin.ts", + "extensions/discord/src/monitor/provider.proxy.test.ts" ], - "similarity": 0.835, - "size_similarity": 0.853 + "similarity": 0.797, + "size_similarity": 0.774 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, "content_similarity": 0.799, - "left_pr_number": 65547, - "right_pr_number": 67805, + "left_pr_number": 53854, + "right_pr_number": 67033, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts" + "extensions/discord/src/monitor/gateway-plugin.test.ts", + "extensions/discord/src/monitor/gateway-plugin.ts" ], - "similarity": 0.793, - "size_similarity": 0.725 + "similarity": 0.765, + "size_similarity": 0.371 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.747, - "left_pr_number": 65226, - "right_pr_number": 67630, + "content_similarity": 0.694, + "left_pr_number": 68538, + "right_pr_number": 68710, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/memory-core/src/memory/search-manager.test.ts", - "extensions/memory-core/src/memory/search-manager.ts" + "extensions/discord/src/monitor/native-command.plugin-dispatch.test.ts", + "extensions/discord/src/monitor/native-command.ts" ], - "similarity": 0.73, - "size_similarity": 0.548 + "similarity": 0.72, + "size_similarity": 0.566 }, { "breadth_similarity": 0.583, - "concentration_similarity": 0.957, - "content_similarity": 0.66, - "left_pr_number": 65017, - "right_pr_number": 65481, + "concentration_similarity": 0.966, + "content_similarity": 0.776, + "left_pr_number": 65084, + "right_pr_number": 68159, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" + "extensions/discord/src/monitor/gateway-plugin.ts", + "extensions/discord/src/monitor/provider.proxy.test.ts" ], - "similarity": 0.683, - "size_similarity": 0.767 + "similarity": 0.695, + "size_similarity": 0.301 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.963, - "content_similarity": 0.641, - "left_pr_number": 67404, - "right_pr_number": 67805, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.653, + "left_pr_number": 65084, + "right_pr_number": 67033, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" + "extensions/discord/src/monitor/gateway-plugin.ts" ], - "similarity": 0.683, - "size_similarity": 0.85 + "similarity": 0.631, + "size_similarity": 0.161 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.957, - "content_similarity": 0.664, - "left_pr_number": 65017, - "right_pr_number": 67805, + "breadth_similarity": 0.633, + "concentration_similarity": 0.808, + "content_similarity": 0.672, + "left_pr_number": 65727, + "right_pr_number": 68159, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" + "extensions/discord/src/monitor/gateway-plugin.ts", + "extensions/discord/src/monitor/provider.proxy.test.ts" ], - "similarity": 0.68, - "size_similarity": 0.725 + "similarity": 0.609, + "size_similarity": 0.232 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.567, - "left_pr_number": 65481, - "right_pr_number": 65914, + "content_similarity": 0.481, + "left_pr_number": 53854, + "right_pr_number": 65084, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" + "extensions/discord/src/monitor/gateway-plugin.ts" ], - "similarity": 0.676, - "size_similarity": 0.865 + "similarity": 0.552, + "size_similarity": 0.433 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.618, - "left_pr_number": 65481, - "right_pr_number": 66259, + "breadth_similarity": 0.583, + "concentration_similarity": 0.966, + "content_similarity": 0.406, + "left_pr_number": 53854, + "right_pr_number": 68159, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" + "extensions/discord/src/monitor/gateway-plugin.ts" ], - "similarity": 0.675, - "size_similarity": 0.787 + "similarity": 0.495, + "size_similarity": 0.695 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.624, - "left_pr_number": 65547, - "right_pr_number": 65914, + "breadth_similarity": 0.583, + "concentration_similarity": 0.966, + "content_similarity": 0.436, + "left_pr_number": 67033, + "right_pr_number": 68159, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts" + "extensions/discord/src/monitor/gateway-plugin.ts" ], - "similarity": 0.661, - "size_similarity": 0.664 + "similarity": 0.492, + "size_similarity": 0.534 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.963, - "content_similarity": 0.646, - "left_pr_number": 65481, - "right_pr_number": 67404, + "breadth_similarity": 0.367, + "concentration_similarity": 0.774, + "content_similarity": 0.565, + "left_pr_number": 65727, + "right_pr_number": 67033, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" + "extensions/discord/src/monitor/gateway-plugin.ts" ], - "similarity": 0.657, - "size_similarity": 0.654 + "similarity": 0.489, + "size_similarity": 0.124 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.622, - "left_pr_number": 65914, - "right_pr_number": 67805, + "content_similarity": 0.208, + "left_pr_number": 65084, + "right_pr_number": 66891, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.657, - "size_similarity": 0.481 + "shared_filenames": [], + "similarity": 0.429, + "size_similarity": 0.889 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.584, - "left_pr_number": 65481, - "right_pr_number": 65547, + "content_similarity": 0.209, + "left_pr_number": 53854, + "right_pr_number": 68034, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts" - ], - "similarity": 0.649, - "size_similarity": 0.767 + "shared_filenames": [], + "similarity": 0.428, + "size_similarity": 0.879 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.543, - "left_pr_number": 65914, - "right_pr_number": 66259, + "content_similarity": 0.199, + "left_pr_number": 68034, + "right_pr_number": 68710, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.642, - "size_similarity": 0.909 + "shared_filenames": [], + "similarity": 0.424, + "size_similarity": 0.896 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.579, - "left_pr_number": 65481, - "right_pr_number": 67805, + "content_similarity": 0.216, + "left_pr_number": 53854, + "right_pr_number": 68710, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.639, - "size_similarity": 0.556 + "shared_filenames": [], + "similarity": 0.419, + "size_similarity": 0.788 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 1.0, - "content_similarity": 0.562, - "left_pr_number": 65547, - "right_pr_number": 66259, + "breadth_similarity": 0.367, + "concentration_similarity": 0.774, + "content_similarity": 0.416, + "left_pr_number": 53854, + "right_pr_number": 65727, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts" + "extensions/discord/src/monitor/gateway-plugin.ts" ], - "similarity": 0.597, - "size_similarity": 0.603 + "similarity": 0.417, + "size_similarity": 0.335 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.957, - "content_similarity": 0.505, - "left_pr_number": 65017, - "right_pr_number": 65547, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.211, + "left_pr_number": 53288, + "right_pr_number": 53854, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts" - ], - "similarity": 0.593, - "size_similarity": 1.0 + "shared_filenames": [], + "similarity": 0.413, + "size_similarity": 0.88 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.957, - "content_similarity": 0.554, - "left_pr_number": 65017, - "right_pr_number": 65914, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.219, + "left_pr_number": 53854, + "right_pr_number": 68538, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.593, - "size_similarity": 0.664 + "shared_filenames": [], + "similarity": 0.411, + "size_similarity": 0.719 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.963, - "content_similarity": 0.582, - "left_pr_number": 65226, - "right_pr_number": 67404, + "breadth_similarity": 1.0, + "concentration_similarity": 0.972, + "content_similarity": 0.203, + "left_pr_number": 54035, + "right_pr_number": 68159, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.593, - "size_similarity": 0.5 + "shared_filenames": [], + "similarity": 0.404, + "size_similarity": 0.753 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.963, - "content_similarity": 0.567, - "left_pr_number": 65914, - "right_pr_number": 67404, + "breadth_similarity": 0.75, + "concentration_similarity": 0.994, + "content_similarity": 0.193, + "left_pr_number": 53288, + "right_pr_number": 54035, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.589, - "size_similarity": 0.566 + "shared_filenames": [], + "similarity": 0.403, + "size_similarity": 0.955 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.963, - "content_similarity": 0.522, - "left_pr_number": 65547, - "right_pr_number": 67404, + "breadth_similarity": 0.583, + "concentration_similarity": 0.966, + "content_similarity": 0.214, + "left_pr_number": 68159, + "right_pr_number": 68538, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts" - ], - "similarity": 0.583, - "size_similarity": 0.853 + "shared_filenames": [], + "similarity": 0.402, + "size_similarity": 0.967 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.497, - "left_pr_number": 65914, - "right_pr_number": 68590, + "content_similarity": 0.204, + "left_pr_number": 53288, + "right_pr_number": 68538, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.583, - "size_similarity": 0.571 + "shared_filenames": [], + "similarity": 0.398, + "size_similarity": 0.816 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.555, - "left_pr_number": 66259, - "right_pr_number": 67805, + "breadth_similarity": 0.583, + "concentration_similarity": 0.994, + "content_similarity": 0.208, + "left_pr_number": 53854, + "right_pr_number": 54035, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" - ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.579, - "size_similarity": 0.438 + "shared_filenames": [], + "similarity": 0.392, + "size_similarity": 0.922 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.547, - "left_pr_number": 67805, - "right_pr_number": 68590, + "content_similarity": 0.195, + "left_pr_number": 53288, + "right_pr_number": 68034, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.574, - "size_similarity": 0.275 + "shared_filenames": [], + "similarity": 0.386, + "size_similarity": 0.774 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.957, - "content_similarity": 0.544, - "left_pr_number": 65017, - "right_pr_number": 65226, + "breadth_similarity": 0.75, + "concentration_similarity": 0.966, + "content_similarity": 0.207, + "left_pr_number": 53288, + "right_pr_number": 68159, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.555, - "size_similarity": 0.426 + "shared_filenames": [], + "similarity": 0.386, + "size_similarity": 0.789 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.485, - "left_pr_number": 65226, - "right_pr_number": 67805, + "content_similarity": 0.202, + "left_pr_number": 68034, + "right_pr_number": 68538, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.553, - "size_similarity": 0.588 + "shared_filenames": [], + "similarity": 0.386, + "size_similarity": 0.632 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.957, - "content_similarity": 0.502, - "left_pr_number": 65017, - "right_pr_number": 66259, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.218, + "left_pr_number": 65084, + "right_pr_number": 68710, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.552, - "size_similarity": 0.603 + "shared_filenames": [], + "similarity": 0.385, + "size_similarity": 0.549 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.963, - "content_similarity": 0.514, - "left_pr_number": 66259, - "right_pr_number": 67404, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.201, + "left_pr_number": 53288, + "right_pr_number": 68710, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.548, - "size_similarity": 0.515 + "shared_filenames": [], + "similarity": 0.378, + "size_similarity": 0.693 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.46, - "left_pr_number": 65481, - "right_pr_number": 68590, + "content_similarity": 0.21, + "left_pr_number": 67033, + "right_pr_number": 68538, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" + "shared_filenames": [], + "similarity": 0.375, + "size_similarity": 0.517 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.211, + "left_pr_number": 65084, + "right_pr_number": 68034, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.546, - "size_similarity": 0.494 + "shared_filenames": [], + "similarity": 0.372, + "size_similarity": 0.492 }, { "breadth_similarity": 0.583, - "concentration_similarity": 0.963, - "content_similarity": 0.559, - "left_pr_number": 67404, - "right_pr_number": 68590, + "concentration_similarity": 0.994, + "content_similarity": 0.201, + "left_pr_number": 54035, + "right_pr_number": 68538, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" + "shared_filenames": [], + "similarity": 0.365, + "size_similarity": 0.779 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.994, + "content_similarity": 0.192, + "left_pr_number": 54035, + "right_pr_number": 68034, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.546, - "size_similarity": 0.324 + "shared_filenames": [], + "similarity": 0.364, + "size_similarity": 0.811 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.515, - "left_pr_number": 65226, - "right_pr_number": 65481, + "content_similarity": 0.197, + "left_pr_number": 66891, + "right_pr_number": 68710, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.535, - "size_similarity": 0.327 + "shared_filenames": [], + "similarity": 0.361, + "size_similarity": 0.488 }, { "breadth_similarity": 0.583, - "concentration_similarity": 0.957, - "content_similarity": 0.528, - "left_pr_number": 65017, - "right_pr_number": 68590, + "concentration_similarity": 0.994, + "content_similarity": 0.198, + "left_pr_number": 54035, + "right_pr_number": 68710, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.532, - "size_similarity": 0.379 + "shared_filenames": [], + "similarity": 0.356, + "size_similarity": 0.726 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.439, - "left_pr_number": 66259, - "right_pr_number": 68590, + "content_similarity": 0.207, + "left_pr_number": 53854, + "right_pr_number": 66891, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.527, - "size_similarity": 0.629 + "shared_filenames": [], + "similarity": 0.352, + "size_similarity": 0.385 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.444, - "left_pr_number": 65547, - "right_pr_number": 68590, + "content_similarity": 0.221, + "left_pr_number": 65084, + "right_pr_number": 68538, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts" - ], - "similarity": 0.493, - "size_similarity": 0.379 + "shared_filenames": [], + "similarity": 0.351, + "size_similarity": 0.311 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.458, - "left_pr_number": 65226, - "right_pr_number": 65914, + "content_similarity": 0.191, + "left_pr_number": 66891, + "right_pr_number": 68034, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" + "shared_filenames": [], + "similarity": 0.349, + "size_similarity": 0.438 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.966, + "content_similarity": 0.205, + "left_pr_number": 68034, + "right_pr_number": 68159, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.488, - "size_similarity": 0.283 + "shared_filenames": [], + "similarity": 0.341, + "size_similarity": 0.611 }, { - "breadth_similarity": 0.625, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.443, - "left_pr_number": 65226, - "right_pr_number": 65547, + "content_similarity": 0.213, + "left_pr_number": 53288, + "right_pr_number": 65084, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts" - ], - "similarity": 0.487, - "size_similarity": 0.426 + "shared_filenames": [], + "similarity": 0.34, + "size_similarity": 0.381 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.418, - "left_pr_number": 65226, - "right_pr_number": 66259, + "content_similarity": 0.201, + "left_pr_number": 67033, + "right_pr_number": 68034, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.481, - "size_similarity": 0.257 + "shared_filenames": [], + "similarity": 0.34, + "size_similarity": 0.326 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.438, - "left_pr_number": 65226, - "right_pr_number": 68590, + "content_similarity": 0.203, + "left_pr_number": 53288, + "right_pr_number": 67033, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], - "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts" - ], - "similarity": 0.456, - "size_similarity": 0.162 + "shared_filenames": [], + "similarity": 0.339, + "size_similarity": 0.422 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.232, - "left_pr_number": 67630, - "right_pr_number": 67805, + "content_similarity": 0.208, + "left_pr_number": 67033, + "right_pr_number": 68710, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [], - "similarity": 0.452, - "size_similarity": 0.931 + "similarity": 0.339, + "size_similarity": 0.292 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.237, - "left_pr_number": 65547, - "right_pr_number": 67630, + "breadth_similarity": 0.583, + "concentration_similarity": 0.966, + "content_similarity": 0.212, + "left_pr_number": 68159, + "right_pr_number": 68710, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [], - "similarity": 0.408, - "size_similarity": 0.779 + "similarity": 0.337, + "size_similarity": 0.547 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.963, - "content_similarity": 0.223, - "left_pr_number": 67404, - "right_pr_number": 67630, + "breadth_similarity": 0.367, + "concentration_similarity": 0.774, + "content_similarity": 0.18, + "left_pr_number": 65727, + "right_pr_number": 66891, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [], - "similarity": 0.399, - "size_similarity": 0.913 + "similarity": 0.332, + "size_similarity": 0.87 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.219, - "left_pr_number": 65481, - "right_pr_number": 67630, + "content_similarity": 0.199, + "left_pr_number": 66891, + "right_pr_number": 68538, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [], - "similarity": 0.393, - "size_similarity": 0.597 + "similarity": 0.331, + "size_similarity": 0.276 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.228, - "left_pr_number": 65914, - "right_pr_number": 67630, + "content_similarity": 0.192, + "left_pr_number": 53288, + "right_pr_number": 66891, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [], - "similarity": 0.387, - "size_similarity": 0.517 + "similarity": 0.319, + "size_similarity": 0.339 }, { "breadth_similarity": 0.583, - "concentration_similarity": 0.957, - "content_similarity": 0.218, - "left_pr_number": 65017, - "right_pr_number": 67630, + "concentration_similarity": 0.994, + "content_similarity": 0.209, + "left_pr_number": 54035, + "right_pr_number": 65084, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [], - "similarity": 0.376, - "size_similarity": 0.779 + "similarity": 0.314, + "size_similarity": 0.399 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.222, - "left_pr_number": 66259, - "right_pr_number": 67630, + "content_similarity": 0.199, + "left_pr_number": 66891, + "right_pr_number": 67033, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [], - "similarity": 0.351, - "size_similarity": 0.47 + "similarity": 0.31, + "size_similarity": 0.143 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.218, - "left_pr_number": 67630, - "right_pr_number": 68590, + "breadth_similarity": 0.583, + "concentration_similarity": 0.994, + "content_similarity": 0.2, + "left_pr_number": 54035, + "right_pr_number": 67033, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [], - "similarity": 0.347, + "similarity": 0.308, + "size_similarity": 0.403 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.994, + "content_similarity": 0.189, + "left_pr_number": 54035, + "right_pr_number": 66891, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.294, + "size_similarity": 0.355 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.966, + "content_similarity": 0.202, + "left_pr_number": 66891, + "right_pr_number": 68159, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.288, + "size_similarity": 0.267 + }, + { + "breadth_similarity": 0.633, + "concentration_similarity": 0.78, + "content_similarity": 0.181, + "left_pr_number": 54035, + "right_pr_number": 65727, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.276, + "size_similarity": 0.309 + }, + { + "breadth_similarity": 0.367, + "concentration_similarity": 0.774, + "content_similarity": 0.189, + "left_pr_number": 65727, + "right_pr_number": 68710, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.271, + "size_similarity": 0.425 + }, + { + "breadth_similarity": 0.367, + "concentration_similarity": 0.774, + "content_similarity": 0.183, + "left_pr_number": 65727, + "right_pr_number": 68034, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.26, + "size_similarity": 0.381 + }, + { + "breadth_similarity": 0.467, + "concentration_similarity": 0.774, + "content_similarity": 0.184, + "left_pr_number": 53288, + "right_pr_number": 65727, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.259, "size_similarity": 0.295 + }, + { + "breadth_similarity": 0.367, + "concentration_similarity": 0.774, + "content_similarity": 0.191, + "left_pr_number": 65727, + "right_pr_number": 68538, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.245, + "size_similarity": 0.24 } ], - "pr_count": 10, + "pr_count": 11, "pr_numbers": [ - 65017, - 65226, - 65481, - 65547, - 65914, - 66259, - 67404, - 67630, - 67805, - 68590 + 53288, + 53854, + 54035, + 65084, + 65727, + 66891, + 67033, + 68034, + 68159, + 68538, + 68710 ], - "recent_pr_count": 8, + "recent_pr_count": 6, "recent_pr_numbers": [ - 65481, - 65547, - 65914, - 66259, - 67404, - 67630, - 67805, - 68590 + 66891, + 67033, + 68034, + 68159, + 68538, + 68710 ], - "representative_pr_number": 67805, - "representative_title": "fix(memory-core): fall back when mcporter query returns no results", - "representative_url": "https://github.com/openclaw/openclaw/pull/67805", + "representative_pr_number": 65084, + "representative_title": "fix(discord): guard zombie gateway reconnects after close", + "representative_url": "https://github.com/openclaw/openclaw/pull/65084", "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", - "extensions", - "src/plugin-sdk", - "src" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], "shared_filenames": [ - "extensions/memory-core/src/memory/qmd-manager.test.ts", - "extensions/memory-core/src/memory/qmd-manager.ts", - "extensions/memory-core/src/memory/search-manager.test.ts", - "src/plugin-sdk/agent-harness.ts", - "extensions/memory-core/src/memory/search-manager.ts" + "extensions/discord/src/monitor/gateway-plugin.ts", + "extensions/discord/src/monitor/provider.proxy.test.ts", + "extensions/discord/src/monitor/gateway-plugin.test.ts", + "extensions/discord/src/monitor/native-command.plugin-dispatch.test.ts", + "extensions/discord/src/monitor/native-command.ts" ], - "summary": "10 open PRs share weighted file overlap around `extensions/memory-core/src/memory/qmd-manager.test.ts`, `extensions/memory-core/src/memory/qmd-manager.ts`, `extensions/memory-core/src/memory/search-manager.test.ts`; representative PR #67805.", - "title": "Scope: fix(memory-core): fall back when mcporter query returns no results" + "summary": "11 open PRs share weighted file overlap around `extensions/discord/src/monitor/gateway-plugin.ts`, `extensions/discord/src/monitor/provider.proxy.test.ts`, `extensions/discord/src/monitor/gateway-plugin.test.ts`; representative PR #65084.", + "title": "Scope: fix(discord): guard zombie gateway reconnects after close" }, { "authors": [ - "Rohan5commit", - "hansolo949", - "kagura-agent", - "njxiaohan", - "plokomarketing-ai", - "xudaiyanzi" + "Magicray1217", + "MoerAI", + "chrispatil", + "rockchris099", + "wkeything" ], - "average_similarity": 0.45, - "cluster_id": "pr-scope-53812-9", + "average_similarity": 0.432, + "cluster_id": "pr-scope-51421-10", "kind": "pr_scope", - "last_activity_at": "2026-04-18T19:22:41Z", + "last_activity_at": "2026-04-20T23:25:13Z", "outside_window_prs": [ { - "additions": 149, - "author": "luzhidong", - "changed_files": 11, - "created_at": "2026-03-24T16:51:26Z", - "deletions": 15, + "additions": 37, + "author": "Kaspre", + "changed_files": 2, + "created_at": "2026-03-21T04:39:54Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53812/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53812", + "files_url": "https://github.com/openclaw/openclaw/pull/51421/files", + "html_url": "https://github.com/openclaw/openclaw/pull/51421", "merged": false, - "number": 53812, + "number": 51421, "state": "open", - "title": "feat(webchat): implement cursor-based pagination for chat history", - "updated_at": "2026-03-24T23:13:40Z" + "title": "fix(memory): memoryFlush fires every compaction cycle instead of every other", + "updated_at": "2026-04-18T19:02:06Z" }, { - "additions": 175, - "author": "CCcassiusdjs", - "changed_files": 9, - "created_at": "2026-04-12T02:37:09Z", + "additions": 103, + "author": "070freebird070-ctrl", + "changed_files": 3, + "created_at": "2026-04-10T15:34:59Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64384/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64384", + "merged": false, + "number": 64384, + "state": "open", + "title": "fix(reply): gate preflight compaction fast-path on token threshold (#63892)", + "updated_at": "2026-04-10T15:38:10Z" + }, + { + "additions": 128, + "author": "neeravmakwana", + "changed_files": 5, + "created_at": "2026-04-13T01:04:09Z", + "deletions": 20, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65622/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65622", + "merged": false, + "number": 65622, + "state": "open", + "title": "fix(agents): reevaluate preflight compaction on fresh totals", + "updated_at": "2026-04-13T01:17:48Z" + }, + { + "additions": 416, + "author": "KeWang0622", + "changed_files": 3, + "created_at": "2026-04-14T17:48:45Z", "deletions": 23, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65115/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65115", + "files_url": "https://github.com/openclaw/openclaw/pull/66716/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66716", "merged": false, - "number": 65115, + "number": 66716, "state": "open", - "title": "fix: resolve 8 GUI bugs in webchat Control UI and TUI", - "updated_at": "2026-04-12T02:59:30Z" + "title": "fix: auto-compaction fires on fresh cached token counts (#66520)", + "updated_at": "2026-04-14T18:34:26Z" } ], "pairwise": [ { - "breadth_similarity": 0.45, - "concentration_similarity": 0.879, - "content_similarity": 0.905, - "left_pr_number": 67699, - "right_pr_number": 68518, + "breadth_similarity": 0.354, + "concentration_similarity": 0.924, + "content_similarity": 0.827, + "left_pr_number": 66716, + "right_pr_number": 66846, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.test.ts", + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.829, - "size_similarity": 0.712 + "similarity": 0.764, + "size_similarity": 0.69 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.742, - "left_pr_number": 67951, - "right_pr_number": 68518, + "breadth_similarity": 0.8, + "concentration_similarity": 0.996, + "content_similarity": 0.687, + "left_pr_number": 64384, + "right_pr_number": 65622, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "CHANGELOG.md", + "src/auto-reply/reply/agent-runner-memory.test.ts", + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.754, - "size_similarity": 0.564 + "similarity": 0.72, + "size_similarity": 0.73 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.879, - "content_similarity": 0.691, - "left_pr_number": 67699, - "right_pr_number": 67951, + "breadth_similarity": 0.75, + "concentration_similarity": 0.991, + "content_similarity": 0.797, + "left_pr_number": 64384, + "right_pr_number": 66716, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.test.ts", + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.633, - "size_similarity": 0.402 + "similarity": 0.719, + "size_similarity": 0.246 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.561, - "left_pr_number": 68014, - "right_pr_number": 68518, + "breadth_similarity": 0.521, + "concentration_similarity": 0.933, + "content_similarity": 0.762, + "left_pr_number": 64384, + "right_pr_number": 66846, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.test.ts", + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.626, - "size_similarity": 0.723 + "similarity": 0.686, + "size_similarity": 0.356 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.462, - "left_pr_number": 67951, - "right_pr_number": 68014, + "content_similarity": 0.559, + "left_pr_number": 51421, + "right_pr_number": 66845, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.565, - "size_similarity": 0.779 + "similarity": 0.648, + "size_similarity": 0.714 }, { - "breadth_similarity": 0.35, - "concentration_similarity": 0.879, - "content_similarity": 0.515, - "left_pr_number": 67699, - "right_pr_number": 68014, + "breadth_similarity": 0.55, + "concentration_similarity": 0.986, + "content_similarity": 0.645, + "left_pr_number": 65622, + "right_pr_number": 66716, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.test.ts", + "src/auto-reply/reply/agent-runner-memory.ts", + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.517, - "size_similarity": 0.515 + "similarity": 0.606, + "size_similarity": 0.337 }, { - "breadth_similarity": 0.771, - "concentration_similarity": 0.889, - "content_similarity": 0.364, - "left_pr_number": 53812, - "right_pr_number": 66098, + "breadth_similarity": 0.646, + "concentration_similarity": 0.938, + "content_similarity": 0.567, + "left_pr_number": 65622, + "right_pr_number": 66846, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui/views", - "src/gateway/server-methods", - "ui/src/ui", - "src/gateway", - "ui/src", - "src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "src/gateway/server-methods/chat.ts", - "ui/src/ui/app-render.ts", - "ui/src/ui/app-view-state.ts", - "ui/src/ui/app.ts", - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts", - "ui/src/ui/views/chat.ts" + "src/auto-reply/reply/agent-runner-memory.test.ts", + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.507, - "size_similarity": 0.872 + "similarity": 0.582, + "size_similarity": 0.488 }, { - "breadth_similarity": 0.646, - "concentration_similarity": 0.603, - "content_similarity": 0.526, - "left_pr_number": 67036, - "right_pr_number": 67699, + "breadth_similarity": 0.417, + "concentration_similarity": 0.938, + "content_similarity": 0.617, + "left_pr_number": 66764, + "right_pr_number": 67297, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.497, - "size_similarity": 0.228 + "similarity": 0.581, + "size_similarity": 0.4 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.482, - "content_similarity": 0.568, - "left_pr_number": 67036, - "right_pr_number": 68518, + "breadth_similarity": 0.583, + "concentration_similarity": 0.938, + "content_similarity": 0.547, + "left_pr_number": 51421, + "right_pr_number": 66764, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts", + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.475, - "size_similarity": 0.162 + "similarity": 0.567, + "size_similarity": 0.525 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.482, - "content_similarity": 0.576, - "left_pr_number": 67036, - "right_pr_number": 67951, + "breadth_similarity": 0.45, + "concentration_similarity": 0.986, + "content_similarity": 0.63, + "left_pr_number": 65622, + "right_pr_number": 69138, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.test.ts", + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.47, - "size_similarity": 0.092 + "similarity": 0.553, + "size_similarity": 0.115 }, { - "breadth_similarity": 0.633, - "concentration_similarity": 0.821, - "content_similarity": 0.444, - "left_pr_number": 66098, - "right_pr_number": 67036, + "breadth_similarity": 0.8, + "concentration_similarity": 0.951, + "content_similarity": 0.427, + "left_pr_number": 65622, + "right_pr_number": 66764, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts", - "ui/src/ui/views/chat.test.ts", - "ui/src/ui/views/chat.ts" - ], - "similarity": 0.464, - "size_similarity": 0.325 + "src/auto-reply/reply/agent-runner-memory.ts", + "src/auto-reply/reply/reply-state.test.ts" + ], + "similarity": 0.508, + "size_similarity": 0.541 }, { - "breadth_similarity": 0.784, - "concentration_similarity": 0.949, - "content_similarity": 0.305, - "left_pr_number": 53812, - "right_pr_number": 65115, + "breadth_similarity": 0.75, + "concentration_similarity": 0.938, + "content_similarity": 0.508, + "left_pr_number": 66716, + "right_pr_number": 66764, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts", + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.463, - "size_similarity": 0.828 + "similarity": 0.505, + "size_similarity": 0.182 }, { - "breadth_similarity": 0.183, - "concentration_similarity": 0.314, - "content_similarity": 0.544, - "left_pr_number": 66780, - "right_pr_number": 67951, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.416, + "left_pr_number": 51421, + "right_pr_number": 69138, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.461, - "size_similarity": 0.314 + "similarity": 0.502, + "size_similarity": 0.405 }, { - "breadth_similarity": 0.408, - "concentration_similarity": 0.424, - "content_similarity": 0.416, - "left_pr_number": 66098, - "right_pr_number": 67699, + "breadth_similarity": 1.0, + "concentration_similarity": 0.947, + "content_similarity": 0.347, + "left_pr_number": 64384, + "right_pr_number": 66764, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/app-render.ts", - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.459, - "size_similarity": 0.702 + "similarity": 0.502, + "size_similarity": 0.741 }, { - "breadth_similarity": 0.444, - "concentration_similarity": 0.485, - "content_similarity": 0.406, - "left_pr_number": 65115, - "right_pr_number": 67699, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.42, + "left_pr_number": 67297, + "right_pr_number": 69138, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/app-gateway.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.453, - "size_similarity": 0.667 + "similarity": 0.499, + "size_similarity": 0.531 }, { - "breadth_similarity": 0.732, - "concentration_similarity": 0.99, - "content_similarity": 0.271, - "left_pr_number": 66098, - "right_pr_number": 66780, + "breadth_similarity": 0.583, + "concentration_similarity": 0.938, + "content_similarity": 0.472, + "left_pr_number": 66764, + "right_pr_number": 66845, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.447, - "size_similarity": 0.899 + "similarity": 0.492, + "size_similarity": 0.375 }, { - "breadth_similarity": 0.421, - "concentration_similarity": 0.435, - "content_similarity": 0.375, - "left_pr_number": 66780, - "right_pr_number": 67699, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.502, + "left_pr_number": 66716, + "right_pr_number": 69138, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.test.ts", + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.444, - "size_similarity": 0.781 + "similarity": 0.491, + "size_similarity": 0.039 }, { - "breadth_similarity": 0.352, - "concentration_similarity": 0.536, - "content_similarity": 0.362, - "left_pr_number": 53812, - "right_pr_number": 67699, + "breadth_similarity": 0.583, + "concentration_similarity": 0.991, + "content_similarity": 0.479, + "left_pr_number": 64384, + "right_pr_number": 69138, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/app-render.ts", - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.test.ts", + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.436, - "size_similarity": 0.805 + "similarity": 0.467, + "size_similarity": 0.157 }, { - "breadth_similarity": 0.183, - "concentration_similarity": 0.303, - "content_similarity": 0.494, - "left_pr_number": 66098, - "right_pr_number": 67951, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.306, + "left_pr_number": 51421, + "right_pr_number": 67297, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.422, - "size_similarity": 0.282 + "similarity": 0.453, + "size_similarity": 0.762 }, { - "breadth_similarity": 0.847, - "concentration_similarity": 0.899, - "content_similarity": 0.202, - "left_pr_number": 53812, - "right_pr_number": 66780, + "breadth_similarity": 0.292, + "concentration_similarity": 0.924, + "content_similarity": 0.512, + "left_pr_number": 66846, + "right_pr_number": 69138, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.test.ts", + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.417, - "size_similarity": 0.97 + "similarity": 0.442, + "size_similarity": 0.056 }, { - "breadth_similarity": 0.792, - "concentration_similarity": 0.94, - "content_similarity": 0.212, - "left_pr_number": 65115, - "right_pr_number": 66098, + "breadth_similarity": 0.333, + "concentration_similarity": 0.594, + "content_similarity": 0.502, + "left_pr_number": 51421, + "right_pr_number": 69379, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts", + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.417, - "size_similarity": 0.949 + "similarity": 0.44, + "size_similarity": 0.172 }, { - "breadth_similarity": 0.153, - "concentration_similarity": 0.415, - "content_similarity": 0.419, - "left_pr_number": 53812, - "right_pr_number": 68518, + "breadth_similarity": 0.333, + "concentration_similarity": 0.594, + "content_similarity": 0.506, + "left_pr_number": 66845, + "right_pr_number": 69379, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/memory-flush.ts", + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.415, - "size_similarity": 0.573 + "similarity": 0.435, + "size_similarity": 0.123 }, { - "breadth_similarity": 0.139, - "concentration_similarity": 0.364, - "content_similarity": 0.473, - "left_pr_number": 65115, - "right_pr_number": 68014, + "breadth_similarity": 0.583, + "concentration_similarity": 0.657, + "content_similarity": 0.418, + "left_pr_number": 66764, + "right_pr_number": 69379, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts", + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.414, - "size_similarity": 0.343 + "similarity": 0.433, + "size_similarity": 0.328 }, { - "breadth_similarity": 0.929, - "concentration_similarity": 0.95, - "content_similarity": 0.199, - "left_pr_number": 65115, - "right_pr_number": 66780, + "breadth_similarity": 0.583, + "concentration_similarity": 0.938, + "content_similarity": 0.394, + "left_pr_number": 66764, + "right_pr_number": 69138, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "ui/src/ui/controllers", - "src/agents/pi-embedded-runner", - "ui/src/ui", - "src/agents", - "ui/src", - "src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.407, - "size_similarity": 0.854 + "similarity": 0.413, + "size_similarity": 0.212 }, { - "breadth_similarity": 0.183, - "concentration_similarity": 0.303, - "content_similarity": 0.426, - "left_pr_number": 66098, - "right_pr_number": 68518, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.373, + "left_pr_number": 51421, + "right_pr_number": 66716, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts", + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.407, - "size_similarity": 0.5 + "similarity": 0.409, + "size_similarity": 0.096 }, { - "breadth_similarity": 0.194, - "concentration_similarity": 0.364, - "content_similarity": 0.416, - "left_pr_number": 65115, - "right_pr_number": 68518, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.355, + "left_pr_number": 66716, + "right_pr_number": 66845, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.4, - "size_similarity": 0.475 + "similarity": 0.392, + "size_similarity": 0.068 }, { - "breadth_similarity": 0.183, - "concentration_similarity": 0.314, - "content_similarity": 0.403, - "left_pr_number": 66780, - "right_pr_number": 68518, + "breadth_similarity": 0.45, + "concentration_similarity": 0.986, + "content_similarity": 0.337, + "left_pr_number": 51421, + "right_pr_number": 65622, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts", + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.4, - "size_similarity": 0.556 + "similarity": 0.373, + "size_similarity": 0.284 }, { - "breadth_similarity": 0.108, - "concentration_similarity": 0.415, - "content_similarity": 0.408, - "left_pr_number": 53812, - "right_pr_number": 68014, + "breadth_similarity": 0.417, + "concentration_similarity": 0.991, + "content_similarity": 0.338, + "left_pr_number": 64384, + "right_pr_number": 67297, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.379, - "size_similarity": 0.415 + "similarity": 0.372, + "size_similarity": 0.296 }, { - "breadth_similarity": 0.659, - "concentration_similarity": 0.832, - "content_similarity": 0.313, - "left_pr_number": 66780, - "right_pr_number": 67036, + "breadth_similarity": 0.35, + "concentration_similarity": 0.986, + "content_similarity": 0.361, + "left_pr_number": 65622, + "right_pr_number": 67297, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts" ], "similarity": 0.37, - "size_similarity": 0.292 + "size_similarity": 0.216 }, { - "breadth_similarity": 0.694, - "concentration_similarity": 0.882, - "content_similarity": 0.27, - "left_pr_number": 65115, - "right_pr_number": 67036, + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.334, + "left_pr_number": 66716, + "right_pr_number": 67297, "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.353, - "size_similarity": 0.342 + "similarity": 0.362, + "size_similarity": 0.073 }, { - "breadth_similarity": 0.142, - "concentration_similarity": 0.303, - "content_similarity": 0.375, - "left_pr_number": 66098, - "right_pr_number": 68014, + "breadth_similarity": 0.75, + "concentration_similarity": 0.608, + "content_similarity": 0.234, + "left_pr_number": 65622, + "right_pr_number": 69379, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "CHANGELOG.md", + "src/auto-reply/reply/agent-runner-memory.ts", + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.346, - "size_similarity": 0.362 + "similarity": 0.36, + "size_similarity": 0.607 }, { - "breadth_similarity": 0.153, - "concentration_similarity": 0.415, - "content_similarity": 0.366, - "left_pr_number": 53812, - "right_pr_number": 67951, + "breadth_similarity": 0.417, + "concentration_similarity": 0.594, + "content_similarity": 0.281, + "left_pr_number": 66716, + "right_pr_number": 69379, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts", + "src/auto-reply/reply/reply-state.test.ts" ], - "similarity": 0.341, - "size_similarity": 0.323 + "similarity": 0.351, + "size_similarity": 0.556 }, { - "breadth_similarity": 0.551, - "concentration_similarity": 0.933, - "content_similarity": 0.251, - "left_pr_number": 53812, - "right_pr_number": 67036, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.1, + "left_pr_number": 66845, + "right_pr_number": 67297, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" - ], - "shared_filenames": [ - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/controllers/chat.ts", - "ui/src/ui/views/chat.ts" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], - "similarity": 0.32, - "size_similarity": 0.283 + "shared_filenames": [], + "similarity": 0.336, + "size_similarity": 0.938 }, { - "breadth_similarity": 0.194, - "concentration_similarity": 0.364, - "content_similarity": 0.334, - "left_pr_number": 65115, - "right_pr_number": 67951, + "breadth_similarity": 0.875, + "concentration_similarity": 0.67, + "content_similarity": 0.115, + "left_pr_number": 66846, + "right_pr_number": 69379, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.312, - "size_similarity": 0.268 + "similarity": 0.322, + "size_similarity": 0.805 + }, + { + "breadth_similarity": 0.521, + "concentration_similarity": 0.987, + "content_similarity": 0.232, + "left_pr_number": 66764, + "right_pr_number": 66846, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/agent-runner-memory.ts" + ], + "similarity": 0.304, + "size_similarity": 0.264 + }, + { + "breadth_similarity": 0.45, + "concentration_similarity": 0.986, + "content_similarity": 0.254, + "left_pr_number": 65622, + "right_pr_number": 66845, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/reply-state.test.ts" + ], + "similarity": 0.302, + "size_similarity": 0.203 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.093, + "left_pr_number": 66845, + "right_pr_number": 69138, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [], + "similarity": 0.3, + "size_similarity": 0.567 }, { "breadth_similarity": 0.229, - "concentration_similarity": 0.482, - "content_similarity": 0.346, - "left_pr_number": 67036, - "right_pr_number": 68014, + "concentration_similarity": 0.924, + "content_similarity": 0.305, + "left_pr_number": 66846, + "right_pr_number": 67297, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.307, - "size_similarity": 0.117 + "similarity": 0.298, + "size_similarity": 0.106 }, { - "breadth_similarity": 0.127, - "concentration_similarity": 0.314, - "content_similarity": 0.251, - "left_pr_number": 66780, - "right_pr_number": 68014, + "breadth_similarity": 0.25, + "concentration_similarity": 0.594, + "content_similarity": 0.306, + "left_pr_number": 67297, + "right_pr_number": 69379, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts" + "src/auto-reply/reply/agent-runner-memory.ts" ], - "similarity": 0.265, - "size_similarity": 0.402 + "similarity": 0.289, + "size_similarity": 0.131 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.991, + "content_similarity": 0.165, + "left_pr_number": 51421, + "right_pr_number": 64384, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/agent-runner-memory.ts" + ], + "similarity": 0.282, + "size_similarity": 0.389 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.604, + "content_similarity": 0.148, + "left_pr_number": 64384, + "right_pr_number": 69379, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "CHANGELOG.md", + "src/auto-reply/reply/agent-runner-memory.ts" + ], + "similarity": 0.258, + "size_similarity": 0.443 + }, + { + "breadth_similarity": 0.292, + "concentration_similarity": 0.924, + "content_similarity": 0.186, + "left_pr_number": 51421, + "right_pr_number": 66846, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/agent-runner-memory.ts" + ], + "similarity": 0.227, + "size_similarity": 0.139 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.991, + "content_similarity": 0.091, + "left_pr_number": 64384, + "right_pr_number": 66845, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [], + "similarity": 0.214, + "size_similarity": 0.278 + }, + { + "breadth_similarity": 0.333, + "concentration_similarity": 0.594, + "content_similarity": 0.145, + "left_pr_number": 69138, + "right_pr_number": 69379, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/agent-runner-memory.ts" + ], + "similarity": 0.175, + "size_similarity": 0.07 + }, + { + "breadth_similarity": 0.292, + "concentration_similarity": 0.924, + "content_similarity": 0.091, + "left_pr_number": 66845, + "right_pr_number": 66846, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [], + "similarity": 0.154, + "size_similarity": 0.099 } ], - "pr_count": 9, + "pr_count": 10, "pr_numbers": [ - 53812, - 65115, - 66098, - 66780, - 67036, - 67699, - 67951, - 68014, - 68518 + 51421, + 64384, + 65622, + 66716, + 66764, + 66845, + 66846, + 67297, + 69138, + 69379 ], - "recent_pr_count": 7, + "recent_pr_count": 6, "recent_pr_numbers": [ - 66098, - 66780, - 67036, - 67699, - 67951, - 68014, - 68518 + 66764, + 66845, + 66846, + 67297, + 69138, + 69379 ], - "representative_pr_number": 68518, - "representative_title": "fix(ui): filter system event messages from chat transcript (#68508)", - "representative_url": "https://github.com/openclaw/openclaw/pull/68518", + "representative_pr_number": 66716, + "representative_title": "fix: auto-compaction fires on fresh cached token counts (#66520)", + "representative_url": "https://github.com/openclaw/openclaw/pull/66716", "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui", - "src", - "ui/src/ui/views", - "ui/src/ui/chat", - "src/agents/pi-embedded-runner/run" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/controllers/chat.ts", - "ui/src/ui/controllers/chat.test.ts", - "ui/src/ui/views/chat.ts", - "ui/src/ui/app-render.ts", - "ui/src/ui/app-gateway.ts", - "ui/src/ui/views/chat.test.ts", - "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/app-view-state.ts" + "src/auto-reply/reply/agent-runner-memory.ts", + "src/auto-reply/reply/reply-state.test.ts", + "src/auto-reply/reply/agent-runner-memory.test.ts", + "CHANGELOG.md", + "src/auto-reply/reply/memory-flush.ts" ], - "summary": "9 open PRs share weighted file overlap around `ui/src/ui/controllers/chat.ts`, `ui/src/ui/controllers/chat.test.ts`, `ui/src/ui/views/chat.ts`; representative PR #68518.", - "title": "Scope: fix(ui): filter system event messages from chat transcript (#68508)" + "summary": "10 open PRs share weighted file overlap around `src/auto-reply/reply/agent-runner-memory.ts`, `src/auto-reply/reply/reply-state.test.ts`, `src/auto-reply/reply/agent-runner-memory.test.ts`; representative PR #66716.", + "title": "Scope: fix: auto-compaction fires on fresh cached token counts (#66520)" }, { "authors": [ - "1aifanatic", - "ImLukeF", - "chiyouYCH", - "christnorman", - "jasonmakr", - "mushuiyu886", - "nightq" + "MoerAI", + "Tuarisa", + "armorbreak001", + "chen-zhang-cs-code", + "sahilsatralkar" ], - "average_similarity": 0.558, - "cluster_id": "pr-scope-67023-7", + "average_similarity": 0.561, + "cluster_id": "pr-scope-51150-9", "kind": "pr_scope", - "last_activity_at": "2026-04-18T20:17:07Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-21T15:50:53Z", + "outside_window_prs": [ + { + "additions": 362, + "author": "JaiminBhojani", + "changed_files": 5, + "created_at": "2026-03-20T17:02:35Z", + "deletions": 45, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/51150/files", + "html_url": "https://github.com/openclaw/openclaw/pull/51150", + "merged": false, + "number": 51150, + "state": "open", + "title": "fix(agents): resolve imageModel 'Unknown model' for custom providers (#33185)", + "updated_at": "2026-04-21T17:40:29Z" + }, + { + "additions": 44, + "author": "Lanfei", + "changed_files": 7, + "created_at": "2026-03-24T14:21:16Z", + "deletions": 20, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53738/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53738", + "merged": false, + "number": 53738, + "state": "open", + "title": "fix(media-tools): apply models.providers baseUrl override in image and pdf tools", + "updated_at": "2026-03-24T20:15:29Z" + }, + { + "additions": 81, + "author": "sagarpswc", + "changed_files": 3, + "created_at": "2026-04-13T09:31:42Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65837/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65837", + "merged": false, + "number": 65837, + "state": "open", + "title": "Fix image tool custom provider resolution for models.json", + "updated_at": "2026-04-13T09:43:08Z" + }, + { + "additions": 144, + "author": "zhanggpcsu", + "changed_files": 3, + "created_at": "2026-04-14T15:00:33Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66622/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66622", + "merged": false, + "number": 66622, + "state": "open", + "title": "fix #66486: fix(image): prepare dynamic models before image tool registry lookup", + "updated_at": "2026-04-16T08:31:59Z" + } + ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.972, - "left_pr_number": 68087, - "right_pr_number": 68312, + "content_similarity": 0.803, + "left_pr_number": 68243, + "right_pr_number": 69682, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.981, - "size_similarity": 1.0 + "similarity": 0.85, + "size_similarity": 0.921 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.974, - "left_pr_number": 68020, - "right_pr_number": 68087, + "content_similarity": 0.881, + "left_pr_number": 67326, + "right_pr_number": 69682, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.964, - "size_similarity": 0.884 + "similarity": 0.795, + "size_similarity": 0.191 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.947, - "left_pr_number": 68020, - "right_pr_number": 68312, + "content_similarity": 0.841, + "left_pr_number": 67326, + "right_pr_number": 68243, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.946, - "size_similarity": 0.884 + "similarity": 0.77, + "size_similarity": 0.208 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.607, - "left_pr_number": 68087, - "right_pr_number": 68364, + "breadth_similarity": 0.583, + "concentration_similarity": 0.986, + "content_similarity": 0.83, + "left_pr_number": 66622, + "right_pr_number": 67326, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.693, - "size_similarity": 0.789 + "similarity": 0.762, + "size_similarity": 0.485 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.593, - "left_pr_number": 68312, - "right_pr_number": 68364, + "breadth_similarity": 0.583, + "concentration_similarity": 0.986, + "content_similarity": 0.828, + "left_pr_number": 66622, + "right_pr_number": 68243, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.684, - "size_similarity": 0.789 + "similarity": 0.751, + "size_similarity": 0.429 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.538, - "left_pr_number": 68020, - "right_pr_number": 68364, + "content_similarity": 0.68, + "left_pr_number": 68906, + "right_pr_number": 69682, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.631, - "size_similarity": 0.698 + "similarity": 0.741, + "size_similarity": 0.763 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.687, - "content_similarity": 0.572, - "left_pr_number": 68020, - "right_pr_number": 68681, + "breadth_similarity": 0.367, + "concentration_similarity": 0.705, + "content_similarity": 0.787, + "left_pr_number": 51150, + "right_pr_number": 67326, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.581, - "size_similarity": 0.642 + "similarity": 0.734, + "size_similarity": 0.744 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.687, - "content_similarity": 0.555, - "left_pr_number": 68087, - "right_pr_number": 68681, + "breadth_similarity": 0.583, + "concentration_similarity": 0.986, + "content_similarity": 0.75, + "left_pr_number": 66622, + "right_pr_number": 68906, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.558, - "size_similarity": 0.567 + "similarity": 0.71, + "size_similarity": 0.517 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.687, - "content_similarity": 0.542, - "left_pr_number": 68312, - "right_pr_number": 68681, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.596, + "left_pr_number": 68243, + "right_pr_number": 68906, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.549, - "size_similarity": 0.567 + "similarity": 0.692, + "size_similarity": 0.829 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.687, - "content_similarity": 0.552, - "left_pr_number": 68364, - "right_pr_number": 68681, + "breadth_similarity": 0.583, + "concentration_similarity": 0.986, + "content_similarity": 0.724, + "left_pr_number": 66622, + "right_pr_number": 69682, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.538, - "size_similarity": 0.448 + "similarity": 0.674, + "size_similarity": 0.395 }, { - "breadth_similarity": 0.9, - "concentration_similarity": 0.814, - "content_similarity": 0.443, - "left_pr_number": 67023, - "right_pr_number": 68445, + "breadth_similarity": 1.0, + "concentration_similarity": 0.643, + "content_similarity": 0.637, + "left_pr_number": 65837, + "right_pr_number": 66622, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.ts", - "extensions/memory-core/src/dreaming-phases.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.522, - "size_similarity": 0.539 + "similarity": 0.669, + "size_similarity": 0.605 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.788, - "content_similarity": 0.551, - "left_pr_number": 68364, - "right_pr_number": 68445, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.671, + "left_pr_number": 67326, + "right_pr_number": 68906, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.513, - "size_similarity": 0.288 + "similarity": 0.657, + "size_similarity": 0.251 }, { - "breadth_similarity": 0.9, - "concentration_similarity": 0.898, - "content_similarity": 0.387, - "left_pr_number": 68445, - "right_pr_number": 68681, + "breadth_similarity": 0.633, + "concentration_similarity": 0.719, + "content_similarity": 0.677, + "left_pr_number": 51150, + "right_pr_number": 66622, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.502, - "size_similarity": 0.644 + "similarity": 0.627, + "size_similarity": 0.361 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.788, - "content_similarity": 0.461, - "left_pr_number": 68087, - "right_pr_number": 68445, + "breadth_similarity": 0.367, + "concentration_similarity": 0.705, + "content_similarity": 0.723, + "left_pr_number": 51150, + "right_pr_number": 69682, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.462, - "size_similarity": 0.365 + "similarity": 0.6, + "size_similarity": 0.143 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.788, - "content_similarity": 0.454, - "left_pr_number": 68312, - "right_pr_number": 68445, + "breadth_similarity": 0.583, + "concentration_similarity": 0.629, + "content_similarity": 0.525, + "left_pr_number": 65837, + "right_pr_number": 68906, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.457, - "size_similarity": 0.365 + "similarity": 0.585, + "size_similarity": 0.854 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.788, - "content_similarity": 0.435, - "left_pr_number": 68020, - "right_pr_number": 68445, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.63, + "left_pr_number": 68906, + "right_pr_number": 68919, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.ts" ], - "similarity": 0.451, - "size_similarity": 0.413 + "similarity": 0.576, + "size_similarity": 0.066 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.974, - "content_similarity": 0.316, - "left_pr_number": 67023, - "right_pr_number": 68020, + "breadth_similarity": 0.268, + "concentration_similarity": 0.531, + "content_similarity": 0.529, + "left_pr_number": 53738, + "right_pr_number": 68906, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.353, - "size_similarity": 0.223 + "similarity": 0.55, + "size_similarity": 0.842 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.712, - "content_similarity": 0.234, - "left_pr_number": 67023, - "right_pr_number": 68681, + "breadth_similarity": 0.464, + "concentration_similarity": 0.902, + "content_similarity": 0.493, + "left_pr_number": 53738, + "right_pr_number": 65837, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/agents/tools", + "src/agents", + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.ts" + "src/agents/tools/media-tool-shared.ts", + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.352, - "size_similarity": 0.347 + "similarity": 0.544, + "size_similarity": 0.719 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.974, - "content_similarity": 0.304, - "left_pr_number": 67023, - "right_pr_number": 68087, + "breadth_similarity": 0.367, + "concentration_similarity": 0.705, + "content_similarity": 0.63, + "left_pr_number": 51150, + "right_pr_number": 68243, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.341, - "size_similarity": 0.197 + "similarity": 0.536, + "size_similarity": 0.155 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.974, - "content_similarity": 0.3, - "left_pr_number": 67023, - "right_pr_number": 68312, + "breadth_similarity": 0.583, + "concentration_similarity": 0.629, + "content_similarity": 0.573, + "left_pr_number": 65837, + "right_pr_number": 67326, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.338, - "size_similarity": 0.197 + "similarity": 0.535, + "size_similarity": 0.294 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.974, - "content_similarity": 0.248, - "left_pr_number": 67023, - "right_pr_number": 68364, + "breadth_similarity": 0.583, + "concentration_similarity": 0.629, + "content_similarity": 0.48, + "left_pr_number": 65837, + "right_pr_number": 68243, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.296, - "size_similarity": 0.155 - } - ], - "pr_count": 7, - "pr_numbers": [ - 67023, - 68020, - 68087, - 68312, - 68364, - 68445, - 68681 - ], - "recent_pr_count": 7, - "recent_pr_numbers": [ - 67023, - 68020, - 68087, - 68312, - 68364, - 68445, - 68681 - ], - "representative_pr_number": 68087, - "representative_title": "fix(memory-core): downgrade cleanup warning to debug when missing operator.admin scope", - "representative_url": "https://github.com/openclaw/openclaw/pull/68087", - "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions", - "src" - ], - "shared_filenames": [ - "extensions/memory-core/src/dreaming-narrative.ts", - "extensions/memory-core/src/dreaming-narrative.test.ts", - "extensions/memory-core/src/dreaming-phases.ts" - ], - "summary": "7 open PRs share weighted file overlap around `extensions/memory-core/src/dreaming-narrative.ts`, `extensions/memory-core/src/dreaming-narrative.test.ts`, `extensions/memory-core/src/dreaming-phases.ts`; representative PR #68087.", - "title": "Scope: fix(memory-core): downgrade cleanup warning to debug when missing operator.admin scope" - }, - { - "authors": [ - "Aliciawque", - "mcaxtr", - "qualiobra" - ], - "average_similarity": 0.481, - "cluster_id": "pr-scope-66221-7", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T02:47:23Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.532, + "size_similarity": 0.708 + }, { - "breadth_similarity": 0.922, - "concentration_similarity": 0.987, - "content_similarity": 0.983, - "left_pr_number": 67818, - "right_pr_number": 67820, + "breadth_similarity": 0.583, + "concentration_similarity": 0.629, + "content_similarity": 0.473, + "left_pr_number": 65837, + "right_pr_number": 69682, "shared_directories": [ - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "src/channels/plugins", - "src/gateway/server-methods", - "extensions/whatsapp", - "src/channels", - "src/gateway", - "src/plugin-sdk", - "extensions" + "src/media-understanding", + "src" ], "shared_filenames": [ - "extensions/whatsapp/login-qr-runtime.ts", - "extensions/whatsapp/src/agent-tools-login.test.ts", - "extensions/whatsapp/src/agent-tools-login.ts", - "extensions/whatsapp/src/auth-store.test.ts", - "extensions/whatsapp/src/auth-store.ts", - "extensions/whatsapp/src/auto-reply.web-auto-reply.connection-and-logging.e2e.test.ts", - "extensions/whatsapp/src/auto-reply/monitor.ts", - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/channel.setup.test.ts", - "extensions/whatsapp/src/channel.setup.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.963, - "size_similarity": 0.893 + "similarity": 0.519, + "size_similarity": 0.652 }, { - "breadth_similarity": 0.763, - "concentration_similarity": 0.936, - "content_similarity": 0.928, - "left_pr_number": 67816, - "right_pr_number": 67818, + "breadth_similarity": 0.367, + "concentration_similarity": 0.705, + "content_similarity": 0.595, + "left_pr_number": 51150, + "right_pr_number": 68906, "shared_directories": [ - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "src/channels/plugins", - "extensions/whatsapp", - "src/channels", - "src/plugin-sdk", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/auth-store.test.ts", - "extensions/whatsapp/src/auth-store.ts", - "extensions/whatsapp/src/auto-reply.web-auto-reply.connection-and-logging.e2e.test.ts", - "extensions/whatsapp/src/auto-reply/monitor.ts", - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/channel.setup.test.ts", - "extensions/whatsapp/src/channel.setup.ts", - "extensions/whatsapp/src/channel.status.test.ts", - "extensions/whatsapp/src/channel.ts", - "extensions/whatsapp/src/connection-controller.test.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.899, - "size_similarity": 0.839 + "similarity": 0.516, + "size_similarity": 0.187 }, { - "breadth_similarity": 0.706, - "concentration_similarity": 0.923, - "content_similarity": 0.902, - "left_pr_number": 67816, - "right_pr_number": 67820, + "breadth_similarity": 0.633, + "concentration_similarity": 0.924, + "content_similarity": 0.481, + "left_pr_number": 51150, + "right_pr_number": 65837, "shared_directories": [ - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "src/channels/plugins", - "extensions/whatsapp", - "src/channels", - "src/plugin-sdk", - "extensions", + "src/agents/tools", + "src/agents", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/auth-store.test.ts", - "extensions/whatsapp/src/auth-store.ts", - "extensions/whatsapp/src/auto-reply.web-auto-reply.connection-and-logging.e2e.test.ts", - "extensions/whatsapp/src/auto-reply/monitor.ts", - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/channel.setup.test.ts", - "extensions/whatsapp/src/channel.setup.ts", - "extensions/whatsapp/src/channel.status.test.ts", - "extensions/whatsapp/src/channel.ts", - "extensions/whatsapp/src/connection-controller.test.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.861, - "size_similarity": 0.749 + "similarity": 0.479, + "size_similarity": 0.219 }, { - "breadth_similarity": 0.534, - "concentration_similarity": 0.787, - "content_similarity": 0.669, - "left_pr_number": 67815, - "right_pr_number": 67820, + "breadth_similarity": 0.268, + "concentration_similarity": 0.531, + "content_similarity": 0.415, + "left_pr_number": 53738, + "right_pr_number": 69682, "shared_directories": [ - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "src/channels/plugins", - "src/gateway/server-methods", - "extensions/whatsapp", - "src/channels", - "src/gateway", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/auth-store.test.ts", - "extensions/whatsapp/src/auth-store.ts", - "extensions/whatsapp/src/auto-reply.web-auto-reply.connection-and-logging.e2e.test.ts", - "extensions/whatsapp/src/auto-reply/monitor.ts", - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/channel.setup.test.ts", - "extensions/whatsapp/src/channel.setup.ts", - "extensions/whatsapp/src/channel.ts", - "extensions/whatsapp/src/connection-controller.test.ts", - "extensions/whatsapp/src/connection-controller.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.682, - "size_similarity": 0.803 + "similarity": 0.479, + "size_similarity": 0.906 }, { - "breadth_similarity": 0.496, - "concentration_similarity": 0.774, - "content_similarity": 0.671, - "left_pr_number": 67815, - "right_pr_number": 67818, + "breadth_similarity": 0.464, + "concentration_similarity": 0.545, + "content_similarity": 0.454, + "left_pr_number": 53738, + "right_pr_number": 66622, "shared_directories": [ - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "src/channels/plugins", - "src/gateway/server-methods", - "extensions/whatsapp", - "src/channels", - "src/gateway", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/auth-store.test.ts", - "extensions/whatsapp/src/auth-store.ts", - "extensions/whatsapp/src/auto-reply.web-auto-reply.connection-and-logging.e2e.test.ts", - "extensions/whatsapp/src/auto-reply/monitor.ts", - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/channel.setup.test.ts", - "extensions/whatsapp/src/channel.setup.ts", - "extensions/whatsapp/src/channel.ts", - "extensions/whatsapp/src/connection-controller.test.ts", - "extensions/whatsapp/src/connection-controller.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.665, - "size_similarity": 0.717 + "similarity": 0.457, + "size_similarity": 0.435 }, { - "breadth_similarity": 0.384, - "concentration_similarity": 0.709, - "content_similarity": 0.686, - "left_pr_number": 67815, - "right_pr_number": 67816, + "breadth_similarity": 0.268, + "concentration_similarity": 0.531, + "content_similarity": 0.351, + "left_pr_number": 53738, + "right_pr_number": 68243, "shared_directories": [ - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "src/channels/plugins", - "extensions/whatsapp", - "src/channels", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/auth-store.test.ts", - "extensions/whatsapp/src/auth-store.ts", - "extensions/whatsapp/src/auto-reply.web-auto-reply.connection-and-logging.e2e.test.ts", - "extensions/whatsapp/src/auto-reply/monitor.ts", - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/channel.setup.test.ts", - "extensions/whatsapp/src/channel.setup.ts", - "extensions/whatsapp/src/channel.ts", - "extensions/whatsapp/src/connection-controller.test.ts", - "extensions/whatsapp/src/connection-controller.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.644, - "size_similarity": 0.602 + "similarity": 0.447, + "size_similarity": 0.984 }, { - "breadth_similarity": 0.762, - "concentration_similarity": 0.714, - "content_similarity": 0.308, - "left_pr_number": 66221, - "right_pr_number": 67816, + "breadth_similarity": 0.417, + "concentration_similarity": 0.986, + "content_similarity": 0.483, + "left_pr_number": 66622, + "right_pr_number": 68919, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/channel.setup.test.ts", - "extensions/whatsapp/src/channel.setup.ts", - "extensions/whatsapp/src/channel.ts", - "extensions/whatsapp/src/heartbeat.ts", - "extensions/whatsapp/src/setup-finalize.ts", - "extensions/whatsapp/src/setup-surface.test.ts", - "extensions/whatsapp/src/setup-surface.ts" + "src/media-understanding/image.ts" ], - "similarity": 0.424, - "size_similarity": 0.644 + "similarity": 0.434, + "size_similarity": 0.034 }, { - "breadth_similarity": 0.492, - "concentration_similarity": 0.838, - "content_similarity": 0.408, - "left_pr_number": 67279, - "right_pr_number": 67816, + "breadth_similarity": 0.196, + "concentration_similarity": 0.531, + "content_similarity": 0.52, + "left_pr_number": 53738, + "right_pr_number": 68919, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/auth-store.ts", - "extensions/whatsapp/src/connection-controller.test.ts", - "extensions/whatsapp/src/connection-controller.ts", - "extensions/whatsapp/src/session.test.ts", - "extensions/whatsapp/src/session.ts" + "src/media-understanding/image.ts" ], - "similarity": 0.408, - "size_similarity": 0.211 + "similarity": 0.422, + "size_similarity": 0.078 }, { - "breadth_similarity": 0.819, - "concentration_similarity": 0.799, - "content_similarity": 0.344, - "left_pr_number": 66976, - "right_pr_number": 67816, + "breadth_similarity": 0.732, + "concentration_similarity": 0.826, + "content_similarity": 0.395, + "left_pr_number": 51150, + "right_pr_number": 53738, "shared_directories": [ - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", + "src/agents/tools", + "src/agents", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/auto-reply/monitor.ts", - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/connection-controller.ts", - "extensions/whatsapp/src/inbound/monitor.ts", - "extensions/whatsapp/src/login-qr.ts", - "extensions/whatsapp/src/login.coverage.test.ts", - "extensions/whatsapp/src/session.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.401, - "size_similarity": 0.257 + "similarity": 0.415, + "size_similarity": 0.157 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.864, - "content_similarity": 0.336, - "left_pr_number": 66976, - "right_pr_number": 67818, + "breadth_similarity": 0.268, + "concentration_similarity": 0.531, + "content_similarity": 0.438, + "left_pr_number": 53738, + "right_pr_number": 67326, "shared_directories": [ - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/auto-reply/monitor.ts", - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/connection-controller.ts", - "extensions/whatsapp/src/inbound/monitor.ts", - "extensions/whatsapp/src/login-qr.ts", - "extensions/whatsapp/src/login.coverage.test.ts", - "extensions/whatsapp/src/session.ts" + "src/media-understanding/image.test.ts", + "src/media-understanding/image.ts" ], - "similarity": 0.398, - "size_similarity": 0.215 + "similarity": 0.392, + "size_similarity": 0.211 }, { - "breadth_similarity": 0.801, - "concentration_similarity": 0.877, - "content_similarity": 0.339, - "left_pr_number": 66976, - "right_pr_number": 67820, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.371, + "left_pr_number": 67326, + "right_pr_number": 68919, "shared_directories": [ - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/auto-reply/monitor.ts", - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/connection-controller.ts", - "extensions/whatsapp/src/inbound/monitor.ts", - "extensions/whatsapp/src/login-qr.ts", - "extensions/whatsapp/src/login.coverage.test.ts", - "extensions/whatsapp/src/session.ts" + "src/media-understanding/image.ts" ], - "similarity": 0.39, - "size_similarity": 0.192 + "similarity": 0.387, + "size_similarity": 0.017 }, { - "breadth_similarity": 0.589, - "concentration_similarity": 0.778, - "content_similarity": 0.291, - "left_pr_number": 66221, - "right_pr_number": 67818, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.357, + "left_pr_number": 68243, + "right_pr_number": 68919, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/channel.setup.test.ts", - "extensions/whatsapp/src/channel.setup.ts", - "extensions/whatsapp/src/channel.ts", - "extensions/whatsapp/src/heartbeat.ts", - "extensions/whatsapp/src/setup-finalize.ts", - "extensions/whatsapp/src/setup-surface.test.ts", - "extensions/whatsapp/src/setup-surface.ts" + "src/media-understanding/image.ts" ], - "similarity": 0.382, - "size_similarity": 0.54 + "similarity": 0.387, + "size_similarity": 0.079 }, { - "breadth_similarity": 0.371, - "concentration_similarity": 0.902, - "content_similarity": 0.384, - "left_pr_number": 67279, - "right_pr_number": 67818, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.313, + "left_pr_number": 68919, + "right_pr_number": 69682, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "src/gateway", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/auth-store.ts", - "extensions/whatsapp/src/connection-controller.test.ts", - "extensions/whatsapp/src/connection-controller.ts", - "extensions/whatsapp/src/session.test.ts", - "extensions/whatsapp/src/session.ts" - ], - "similarity": 0.378, - "size_similarity": 0.177 - }, - { - "breadth_similarity": 0.551, - "concentration_similarity": 0.791, - "content_similarity": 0.286, - "left_pr_number": 66221, - "right_pr_number": 67820, - "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", - "src" - ], - "shared_filenames": [ - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/channel.setup.test.ts", - "extensions/whatsapp/src/channel.setup.ts", - "extensions/whatsapp/src/channel.ts", - "extensions/whatsapp/src/heartbeat.ts", - "extensions/whatsapp/src/setup-finalize.ts", - "extensions/whatsapp/src/setup-surface.test.ts", - "extensions/whatsapp/src/setup-surface.ts" - ], - "similarity": 0.367, - "size_similarity": 0.482 - }, - { - "breadth_similarity": 0.339, - "concentration_similarity": 0.916, - "content_similarity": 0.37, - "left_pr_number": 67279, - "right_pr_number": 67820, - "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "src/gateway", - "extensions", - "src" - ], - "shared_filenames": [ - "extensions/whatsapp/src/auth-store.ts", - "extensions/whatsapp/src/connection-controller.test.ts", - "extensions/whatsapp/src/connection-controller.ts", - "extensions/whatsapp/src/session.test.ts", - "extensions/whatsapp/src/session.ts" - ], - "similarity": 0.363, - "size_similarity": 0.158 - }, - { - "breadth_similarity": 0.423, - "concentration_similarity": 0.961, - "content_similarity": 0.208, - "left_pr_number": 66976, - "right_pr_number": 67279, - "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", - "src" - ], - "shared_filenames": [ - "extensions/whatsapp/src/connection-controller.ts", - "extensions/whatsapp/src/session.ts" - ], - "similarity": 0.359, - "size_similarity": 0.823 - }, - { - "breadth_similarity": 0.421, - "concentration_similarity": 0.91, - "content_similarity": 0.326, - "left_pr_number": 66976, - "right_pr_number": 67815, - "shared_directories": [ - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", - "src" - ], - "shared_filenames": [ - "extensions/whatsapp/src/auto-reply/monitor.ts", - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/connection-controller.ts", - "extensions/whatsapp/src/inbound/monitor.ts", - "extensions/whatsapp/src/login-qr.ts", - "extensions/whatsapp/src/login.coverage.test.ts", - "extensions/whatsapp/src/login.test.ts", - "extensions/whatsapp/src/login.ts", - "extensions/whatsapp/src/session.ts" - ], - "similarity": 0.339, - "size_similarity": 0.155 - }, - { - "breadth_similarity": 0.714, - "concentration_similarity": 0.914, - "content_similarity": 0.217, - "left_pr_number": 66221, - "right_pr_number": 66976, - "shared_directories": [ - "extensions/whatsapp/src", - "src/plugins/contracts", - "extensions/whatsapp", - "src/plugins", - "extensions", - "src" - ], - "shared_filenames": [ - "extensions/whatsapp/runtime-api.ts", - "extensions/whatsapp/src/channel.runtime.ts", - "src/plugins/contracts/plugin-sdk-runtime-api-guardrails.test.ts" + "src/media-understanding/image.ts" ], - "similarity": 0.329, - "size_similarity": 0.399 + "similarity": 0.357, + "size_similarity": 0.086 }, { - "breadth_similarity": 0.178, - "concentration_similarity": 0.871, - "content_similarity": 0.354, - "left_pr_number": 67279, - "right_pr_number": 67815, + "breadth_similarity": 0.417, + "concentration_similarity": 0.629, + "content_similarity": 0.39, + "left_pr_number": 65837, + "right_pr_number": 68919, "shared_directories": [ - "extensions/whatsapp/src", - "src/gateway/server", - "extensions/whatsapp", - "src/gateway", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/auth-store.ts", - "extensions/whatsapp/src/connection-controller.test.ts", - "extensions/whatsapp/src/connection-controller.ts", - "extensions/whatsapp/src/session.test.ts", - "extensions/whatsapp/src/session.ts" + "src/media-understanding/image.ts" ], - "similarity": 0.328, - "size_similarity": 0.127 + "similarity": 0.355, + "size_similarity": 0.056 }, { - "breadth_similarity": 0.31, - "concentration_similarity": 0.995, - "content_similarity": 0.198, - "left_pr_number": 66221, - "right_pr_number": 67815, + "breadth_similarity": 0.267, + "concentration_similarity": 0.705, + "content_similarity": 0.292, + "left_pr_number": 51150, + "right_pr_number": 68919, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", + "src/media-understanding", "src" ], "shared_filenames": [ - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/channel.setup.test.ts", - "extensions/whatsapp/src/channel.setup.ts", - "extensions/whatsapp/src/channel.ts", - "extensions/whatsapp/src/heartbeat.ts", - "extensions/whatsapp/src/setup-surface.test.ts", - "extensions/whatsapp/src/setup-surface.ts" - ], - "similarity": 0.277, - "size_similarity": 0.387 - }, - { - "breadth_similarity": 0.708, - "concentration_similarity": 0.876, - "content_similarity": 0.125, - "left_pr_number": 66221, - "right_pr_number": 67279, - "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", - "src" + "src/media-understanding/image.ts" ], - "shared_filenames": [], - "similarity": 0.251, - "size_similarity": 0.328 + "similarity": 0.268, + "size_similarity": 0.012 } ], - "pr_count": 7, + "pr_count": 9, "pr_numbers": [ - 66221, - 66976, - 67279, - 67815, - 67816, - 67818, - 67820 + 51150, + 53738, + 65837, + 66622, + 67326, + 68243, + 68906, + 68919, + 69682 ], - "recent_pr_count": 7, + "recent_pr_count": 5, "recent_pr_numbers": [ - 66221, - 66976, - 67279, - 67815, - 67816, - 67818, - 67820 + 67326, + 68243, + 68906, + 68919, + 69682 ], - "representative_pr_number": 67818, - "representative_title": "fix(whatsapp): add QR login result codes and gateway preflight", - "representative_url": "https://github.com/openclaw/openclaw/pull/67818", + "representative_pr_number": 66622, + "representative_title": "fix #66486: fix(image): prepare dynamic models before image tool registry lookup", + "representative_url": "https://github.com/openclaw/openclaw/pull/66622", "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", + "src/media-understanding", "src", - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src/inbound", - "src/channels/plugins", - "src/channels" + "src/agents/tools", + "src/agents" ], "shared_filenames": [ - "extensions/whatsapp/src/channel.runtime.ts", - "extensions/whatsapp/src/connection-controller.ts", - "extensions/whatsapp/src/session.ts", - "extensions/whatsapp/src/channel.setup.test.ts", - "extensions/whatsapp/src/channel.ts", - "extensions/whatsapp/src/heartbeat.ts", - "extensions/whatsapp/src/setup-surface.ts", - "extensions/whatsapp/src/auto-reply/monitor.ts" + "src/media-understanding/image.ts", + "src/media-understanding/image.test.ts", + "src/agents/tools/media-tool-shared.ts" ], - "summary": "7 open PRs share weighted file overlap around `extensions/whatsapp/src/channel.runtime.ts`, `extensions/whatsapp/src/connection-controller.ts`, `extensions/whatsapp/src/session.ts`; representative PR #67818.", - "title": "Scope: fix(whatsapp): add QR login result codes and gateway preflight" + "summary": "9 open PRs share weighted file overlap around `src/media-understanding/image.ts`, `src/media-understanding/image.test.ts`, `src/agents/tools/media-tool-shared.ts`; representative PR #66622.", + "title": "Scope: fix #66486: fix(image): prepare dynamic models before image tool registry lookup" }, { "authors": [ - "KeWang0622", - "Magicray1217", - "neeravmakwana", - "rockchris099", - "wkeything" + "Jay-ju", + "amittell", + "badgerbees", + "zhangyue19921010" ], - "average_similarity": 0.454, - "cluster_id": "pr-scope-51421-8", + "average_similarity": 0.511, + "cluster_id": "pr-scope-63502-7", "kind": "pr_scope", - "last_activity_at": "2026-04-15T16:52:56Z", + "last_activity_at": "2026-04-21T12:56:26Z", "outside_window_prs": [ { - "additions": 37, - "author": "Kaspre", - "changed_files": 2, - "created_at": "2026-03-21T04:39:54Z", - "deletions": 5, + "additions": 136, + "author": "ddupg", + "changed_files": 4, + "created_at": "2026-04-09T02:49:41Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/51421/files", - "html_url": "https://github.com/openclaw/openclaw/pull/51421", + "files_url": "https://github.com/openclaw/openclaw/pull/63502/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63502", "merged": false, - "number": 51421, + "number": 63502, "state": "open", - "title": "fix(memory): memoryFlush fires every compaction cycle instead of every other", - "updated_at": "2026-04-18T19:02:06Z" + "title": "feat(memory-lancedb): add cloud storage support to memory-lancedb", + "updated_at": "2026-04-13T03:44:40Z" }, { - "additions": 103, - "author": "070freebird070-ctrl", - "changed_files": 3, - "created_at": "2026-04-10T15:34:59Z", - "deletions": 5, + "additions": 228, + "author": "l0cka", + "changed_files": 2, + "created_at": "2026-04-12T00:35:15Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64384/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64384", + "files_url": "https://github.com/openclaw/openclaw/pull/65066/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65066", "merged": false, - "number": 64384, + "number": 65066, "state": "open", - "title": "fix(reply): gate preflight compaction fast-path on token threshold (#63892)", - "updated_at": "2026-04-10T15:38:10Z" + "title": "fix(memory-lancedb): register runtime for doctor and status", + "updated_at": "2026-04-12T01:13:38Z" } ], "pairwise": [ { - "breadth_similarity": 0.354, - "concentration_similarity": 0.924, - "content_similarity": 0.826, - "left_pr_number": 66716, - "right_pr_number": 66846, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.901, + "left_pr_number": 67952, + "right_pr_number": 68116, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.test.ts", - "src/auto-reply/reply/agent-runner-memory.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.763, - "size_similarity": 0.69 + "similarity": 0.928, + "size_similarity": 0.981 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.991, - "content_similarity": 0.798, - "left_pr_number": 64384, - "right_pr_number": 66716, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.834, + "left_pr_number": 65066, + "right_pr_number": 69707, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.test.ts", - "src/auto-reply/reply/agent-runner-memory.ts" + "extensions/memory-lancedb/index.test.ts", + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.72, - "size_similarity": 0.246 + "similarity": 0.812, + "size_similarity": 0.518 }, { - "breadth_similarity": 0.8, - "concentration_similarity": 0.996, - "content_similarity": 0.684, - "left_pr_number": 64384, - "right_pr_number": 65622, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.719, + "left_pr_number": 63502, + "right_pr_number": 69707, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "CHANGELOG.md", - "src/auto-reply/reply/agent-runner-memory.test.ts", - "src/auto-reply/reply/agent-runner-memory.ts" + "extensions/memory-lancedb/index.test.ts", + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.718, - "size_similarity": 0.73 + "similarity": 0.755, + "size_similarity": 0.843 }, { - "breadth_similarity": 0.521, - "concentration_similarity": 0.933, - "content_similarity": 0.765, - "left_pr_number": 64384, - "right_pr_number": 66846, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.607, + "left_pr_number": 66913, + "right_pr_number": 69707, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.test.ts", - "src/auto-reply/reply/agent-runner-memory.ts" + "extensions/memory-lancedb/index.test.ts", + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.688, - "size_similarity": 0.356 + "similarity": 0.698, + "size_similarity": 0.822 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.557, - "left_pr_number": 51421, - "right_pr_number": 66845, + "content_similarity": 0.631, + "left_pr_number": 63502, + "right_pr_number": 65066, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/reply-state.test.ts" + "extensions/memory-lancedb/index.test.ts", + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.647, - "size_similarity": 0.714 + "similarity": 0.659, + "size_similarity": 0.614 }, { - "breadth_similarity": 0.55, - "concentration_similarity": 0.986, - "content_similarity": 0.647, - "left_pr_number": 65622, - "right_pr_number": 66716, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.548, + "left_pr_number": 65066, + "right_pr_number": 66913, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.test.ts", - "src/auto-reply/reply/agent-runner-memory.ts", - "src/auto-reply/reply/reply-state.test.ts" + "extensions/memory-lancedb/index.test.ts", + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.608, - "size_similarity": 0.337 + "similarity": 0.598, + "size_similarity": 0.425 }, { - "breadth_similarity": 0.646, - "concentration_similarity": 0.938, - "content_similarity": 0.569, - "left_pr_number": 65622, - "right_pr_number": 66846, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.503, + "left_pr_number": 63502, + "right_pr_number": 66913, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.test.ts", - "src/auto-reply/reply/agent-runner-memory.ts" + "extensions/memory-lancedb/index.test.ts", + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.583, - "size_similarity": 0.488 + "similarity": 0.581, + "size_similarity": 0.693 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.938, - "content_similarity": 0.615, - "left_pr_number": 66764, - "right_pr_number": 67297, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.591, + "left_pr_number": 65066, + "right_pr_number": 67952, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.579, - "size_similarity": 0.4 + "similarity": 0.573, + "size_similarity": 0.232 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.938, - "content_similarity": 0.547, - "left_pr_number": 51421, - "right_pr_number": 66764, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.562, + "left_pr_number": 65066, + "right_pr_number": 68116, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts", - "src/auto-reply/reply/reply-state.test.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.567, - "size_similarity": 0.525 + "similarity": 0.553, + "size_similarity": 0.228 }, { - "breadth_similarity": 0.8, - "concentration_similarity": 0.951, - "content_similarity": 0.428, - "left_pr_number": 65622, - "right_pr_number": 66764, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.442, + "left_pr_number": 67952, + "right_pr_number": 69707, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts", - "src/auto-reply/reply/reply-state.test.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.508, - "size_similarity": 0.541 + "similarity": 0.502, + "size_similarity": 0.449 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.938, - "content_similarity": 0.512, - "left_pr_number": 66716, - "right_pr_number": 66764, + "concentration_similarity": 1.0, + "content_similarity": 0.442, + "left_pr_number": 68116, + "right_pr_number": 69707, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts", - "src/auto-reply/reply/reply-state.test.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.508, - "size_similarity": 0.182 + "similarity": 0.5, + "size_similarity": 0.441 }, { "breadth_similarity": 1.0, - "concentration_similarity": 0.947, - "content_similarity": 0.347, - "left_pr_number": 64384, - "right_pr_number": 66764, + "concentration_similarity": 1.0, + "content_similarity": 0.338, + "left_pr_number": 63502, + "right_pr_number": 68060, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts" + "extensions/memory-lancedb/config.ts", + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.501, - "size_similarity": 0.741 + "similarity": 0.426, + "size_similarity": 0.266 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.938, - "content_similarity": 0.477, - "left_pr_number": 66764, - "right_pr_number": 66845, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.339, + "left_pr_number": 63502, + "right_pr_number": 67952, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/reply-state.test.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.495, - "size_similarity": 0.375 + "similarity": 0.407, + "size_similarity": 0.379 }, { "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.298, - "left_pr_number": 51421, - "right_pr_number": 67297, + "content_similarity": 0.259, + "left_pr_number": 65066, + "right_pr_number": 68060, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.448, - "size_similarity": 0.762 + "similarity": 0.371, + "size_similarity": 0.433 }, { - "breadth_similarity": 0.833, + "breadth_similarity": 0.625, "concentration_similarity": 1.0, - "content_similarity": 0.373, - "left_pr_number": 51421, - "right_pr_number": 66716, + "content_similarity": 0.282, + "left_pr_number": 63502, + "right_pr_number": 68116, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts", - "src/auto-reply/reply/reply-state.test.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.409, - "size_similarity": 0.096 + "similarity": 0.366, + "size_similarity": 0.371 }, { - "breadth_similarity": 0.833, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.358, - "left_pr_number": 66716, - "right_pr_number": 66845, + "content_similarity": 0.221, + "left_pr_number": 66913, + "right_pr_number": 67952, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/reply-state.test.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.394, - "size_similarity": 0.068 + "similarity": 0.362, + "size_similarity": 0.546 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.986, - "content_similarity": 0.336, - "left_pr_number": 51421, - "right_pr_number": 65622, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.224, + "left_pr_number": 66913, + "right_pr_number": 68116, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts", - "src/auto-reply/reply/reply-state.test.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.372, - "size_similarity": 0.284 + "similarity": 0.362, + "size_similarity": 0.536 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.991, - "content_similarity": 0.338, - "left_pr_number": 64384, - "right_pr_number": 67297, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.32, + "left_pr_number": 68060, + "right_pr_number": 68116, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.372, - "size_similarity": 0.296 + "similarity": 0.351, + "size_similarity": 0.099 }, { - "breadth_similarity": 0.35, - "concentration_similarity": 0.986, - "content_similarity": 0.357, - "left_pr_number": 65622, - "right_pr_number": 67297, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.311, + "left_pr_number": 67952, + "right_pr_number": 68060, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.367, - "size_similarity": 0.216 + "similarity": 0.346, + "size_similarity": 0.101 }, { - "breadth_similarity": 0.667, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.333, - "left_pr_number": 66716, - "right_pr_number": 67297, + "content_similarity": 0.214, + "left_pr_number": 68060, + "right_pr_number": 69707, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/memory-lancedb", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts" + "extensions/memory-lancedb/index.ts" ], - "similarity": 0.361, - "size_similarity": 0.073 + "similarity": 0.309, + "size_similarity": 0.224 }, { "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.097, - "left_pr_number": 66845, - "right_pr_number": 67297, + "content_similarity": 0.167, + "left_pr_number": 66913, + "right_pr_number": 68060, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "extensions/memory-lancedb", + "extensions" + ], + "shared_filenames": [ + "extensions/memory-lancedb/index.ts" + ], + "similarity": 0.269, + "size_similarity": 0.184 + } + ], + "pr_count": 7, + "pr_numbers": [ + 63502, + 65066, + 66913, + 67952, + 68060, + 68116, + 69707 + ], + "recent_pr_count": 5, + "recent_pr_numbers": [ + 66913, + 67952, + 68060, + 68116, + 69707 + ], + "representative_pr_number": 69707, + "representative_title": "fix(memory-lancedb): truncate embeddings locally", + "representative_url": "https://github.com/openclaw/openclaw/pull/69707", + "shared_directories": [ + "extensions/memory-lancedb", + "extensions" + ], + "shared_filenames": [ + "extensions/memory-lancedb/index.ts", + "extensions/memory-lancedb/index.test.ts", + "extensions/memory-lancedb/config.ts" + ], + "summary": "7 open PRs share weighted file overlap around `extensions/memory-lancedb/index.ts`, `extensions/memory-lancedb/index.test.ts`, `extensions/memory-lancedb/config.ts`; representative PR #69707.", + "title": "Scope: fix(memory-lancedb): truncate embeddings locally" + }, + { + "authors": [ + "Eruditi", + "JustInCache", + "Mlightsnow", + "Sanjays2402", + "nnish16" + ], + "average_similarity": 0.752, + "cluster_id": "pr-scope-68894-5", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T15:21:44Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.99, + "left_pr_number": 68894, + "right_pr_number": 69002, + "shared_directories": [ + "src/commands", "src" ], - "shared_filenames": [], - "similarity": 0.334, + "shared_filenames": [ + "src/commands/onboard-skills.test.ts", + "src/commands/onboard-skills.ts" + ], + "similarity": 0.984, "size_similarity": 0.938 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.986, - "content_similarity": 0.255, - "left_pr_number": 65622, - "right_pr_number": 66845, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.992, + "left_pr_number": 68943, + "right_pr_number": 69545, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/commands", "src" ], "shared_filenames": [ - "src/auto-reply/reply/reply-state.test.ts" + "src/commands/onboard-skills.test.ts", + "src/commands/onboard-skills.ts" ], - "similarity": 0.303, - "size_similarity": 0.203 + "similarity": 0.984, + "size_similarity": 0.926 }, { - "breadth_similarity": 0.521, - "concentration_similarity": 0.987, - "content_similarity": 0.232, - "left_pr_number": 66764, - "right_pr_number": 66846, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.999, + "left_pr_number": 68894, + "right_pr_number": 69545, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/commands", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts" + "src/commands/onboard-skills.test.ts", + "src/commands/onboard-skills.ts" ], - "similarity": 0.303, - "size_similarity": 0.264 + "similarity": 0.976, + "size_similarity": 0.844 }, { - "breadth_similarity": 0.229, - "concentration_similarity": 0.924, - "content_similarity": 0.305, - "left_pr_number": 66846, - "right_pr_number": 67297, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.985, + "left_pr_number": 69002, + "right_pr_number": 69545, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/commands", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts" + "src/commands/onboard-skills.test.ts", + "src/commands/onboard-skills.ts" ], - "similarity": 0.298, - "size_similarity": 0.106 + "similarity": 0.975, + "size_similarity": 0.9 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.991, - "content_similarity": 0.162, - "left_pr_number": 51421, - "right_pr_number": 64384, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.999, + "left_pr_number": 68943, + "right_pr_number": 69002, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/commands", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts" + "src/commands/onboard-skills.test.ts", + "src/commands/onboard-skills.ts" ], - "similarity": 0.279, - "size_similarity": 0.389 + "similarity": 0.974, + "size_similarity": 0.833 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.924, - "content_similarity": 0.181, - "left_pr_number": 51421, - "right_pr_number": 66846, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.995, + "left_pr_number": 68894, + "right_pr_number": 68943, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/commands", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts" + "src/commands/onboard-skills.test.ts", + "src/commands/onboard-skills.ts" ], - "similarity": 0.223, - "size_similarity": 0.139 + "similarity": 0.964, + "size_similarity": 0.781 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.991, - "content_similarity": 0.089, - "left_pr_number": 64384, - "right_pr_number": 66845, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.473, + "left_pr_number": 68941, + "right_pr_number": 69002, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/commands", "src" ], - "shared_filenames": [], - "similarity": 0.212, - "size_similarity": 0.278 + "shared_filenames": [ + "src/commands/onboard-skills.ts" + ], + "similarity": 0.466, + "size_similarity": 0.067 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.924, - "content_similarity": 0.088, - "left_pr_number": 66845, - "right_pr_number": 66846, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.441, + "left_pr_number": 68941, + "right_pr_number": 68943, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/commands", "src" ], - "shared_filenames": [], - "similarity": 0.152, - "size_similarity": 0.099 + "shared_filenames": [ + "src/commands/onboard-skills.ts" + ], + "similarity": 0.446, + "size_similarity": 0.08 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.352, + "left_pr_number": 68894, + "right_pr_number": 68941, + "shared_directories": [ + "src/commands", + "src" + ], + "shared_filenames": [ + "src/commands/onboard-skills.ts" + ], + "similarity": 0.381, + "size_similarity": 0.062 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.343, + "left_pr_number": 68941, + "right_pr_number": 69545, + "shared_directories": [ + "src/commands", + "src" + ], + "shared_filenames": [ + "src/commands/onboard-skills.ts" + ], + "similarity": 0.376, + "size_similarity": 0.074 } ], - "pr_count": 8, + "pr_count": 5, "pr_numbers": [ - 51421, - 64384, - 65622, - 66716, - 66764, - 66845, - 66846, - 67297 + 68894, + 68941, + 68943, + 69002, + 69545 ], - "recent_pr_count": 6, + "recent_pr_count": 5, "recent_pr_numbers": [ - 65622, - 66716, - 66764, - 66845, - 66846, - 67297 + 68894, + 68941, + 68943, + 69002, + 69545 ], - "representative_pr_number": 66716, - "representative_title": "fix: auto-compaction fires on fresh cached token counts (#66520)", - "representative_url": "https://github.com/openclaw/openclaw/pull/66716", + "representative_pr_number": 69002, + "representative_title": "Fix: skip Homebrew prompt on platforms brew doesn't support (Resolves #68893)", + "representative_url": "https://github.com/openclaw/openclaw/pull/69002", "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/commands", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-memory.ts", - "src/auto-reply/reply/reply-state.test.ts", - "src/auto-reply/reply/agent-runner-memory.test.ts", - "CHANGELOG.md" + "src/commands/onboard-skills.ts", + "src/commands/onboard-skills.test.ts" ], - "summary": "8 open PRs share weighted file overlap around `src/auto-reply/reply/agent-runner-memory.ts`, `src/auto-reply/reply/reply-state.test.ts`, `src/auto-reply/reply/agent-runner-memory.test.ts`; representative PR #66716.", - "title": "Scope: fix: auto-compaction fires on fresh cached token counts (#66520)" + "summary": "5 open PRs share weighted file overlap around `src/commands/onboard-skills.ts`, `src/commands/onboard-skills.test.ts`; representative PR #69002.", + "title": "Scope: Fix: skip Homebrew prompt on platforms brew doesn't support (Resolves #68893)" }, { "authors": [ - "Tianworld", - "akinshaywai", - "coder999999999", - "javierdici", - "moorsecopers99" + "DanWebb1949", + "Eruditi", + "glfruit", + "sk7n4k3d", + "yaelsprikut" ], - "average_similarity": 0.391, - "cluster_id": "pr-scope-36800-8", + "average_similarity": 0.518, + "cluster_id": "pr-scope-67535-5", "kind": "pr_scope", - "last_activity_at": "2026-04-19T07:02:28Z", - "outside_window_prs": [ - { - "additions": 57, - "author": "Jleverett4", - "changed_files": 3, - "created_at": "2026-03-05T22:26:45Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36800/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36800", - "merged": false, - "number": 36800, - "state": "open", - "title": "Control UI: surface hidden tool output (deliverables hint) in Chat", - "updated_at": "2026-04-18T04:23:40Z" - }, - { - "additions": 104, - "author": "X-AlexBin", - "changed_files": 5, - "created_at": "2026-03-06T08:54:12Z", - "deletions": 1, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37490/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37490", - "merged": false, - "number": 37490, - "state": "open", - "title": "UI: label dashboard vs feishu message source", - "updated_at": "2026-04-19T04:33:33Z" - } - ], + "last_activity_at": "2026-04-21T15:20:19Z", + "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 0.957, - "content_similarity": 0.961, - "left_pr_number": 67431, - "right_pr_number": 67432, + "breadth_similarity": 0.667, + "concentration_similarity": 0.86, + "content_similarity": 0.814, + "left_pr_number": 69421, + "right_pr_number": 69645, "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "src/cli/update-cli", + "src/cli", + "src" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/chat/grouped-render.ts", - "ui/src/ui/views/chat.ts", - "ui/src/ui/views/markdown-sidebar.ts" + "src/cli/update-cli.test.ts", + "src/cli/update-cli/update-command.ts" ], - "similarity": 0.961, - "size_similarity": 0.933 + "similarity": 0.779, + "size_similarity": 0.661 }, { - "breadth_similarity": 0.714, - "concentration_similarity": 0.947, - "content_similarity": 0.387, - "left_pr_number": 67155, - "right_pr_number": 68850, + "breadth_similarity": 0.667, + "concentration_similarity": 0.972, + "content_similarity": 0.73, + "left_pr_number": 67702, + "right_pr_number": 69421, "shared_directories": [ - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "src/cli/update-cli", + "src/cli", + "src" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.node.test.ts", - "ui/src/ui/app-render.helpers.ts" + "src/cli/update-cli.test.ts", + "src/cli/update-cli/update-command.ts" ], - "similarity": 0.527, - "size_similarity": 0.914 + "similarity": 0.686, + "size_similarity": 0.397 }, { - "breadth_similarity": 0.55, - "concentration_similarity": 0.845, - "content_similarity": 0.368, - "left_pr_number": 37490, - "right_pr_number": 68850, + "breadth_similarity": 0.5, + "concentration_similarity": 0.513, + "content_similarity": 0.725, + "left_pr_number": 67535, + "right_pr_number": 69645, "shared_directories": [ - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "src/cli/update-cli", + "src/cli", + "src" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.node.test.ts", - "ui/src/ui/app-render.helpers.ts" + "src/cli/update-cli/update-command.ts" ], - "similarity": 0.488, - "size_similarity": 0.886 + "similarity": 0.626, + "size_similarity": 0.282 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.559, - "content_similarity": 0.458, - "left_pr_number": 65575, - "right_pr_number": 68850, + "breadth_similarity": 1.0, + "concentration_similarity": 0.833, + "content_similarity": 0.633, + "left_pr_number": 67702, + "right_pr_number": 69645, "shared_directories": [ - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "src/cli/update-cli", + "src/cli", + "src" ], "shared_filenames": [ - "ui/src/ui/views/chat.test.ts" + "src/cli/update-cli.test.ts", + "src/cli/update-cli/update-command.ts" ], - "similarity": 0.467, - "size_similarity": 0.398 + "similarity": 0.624, + "size_similarity": 0.263 }, { - "breadth_similarity": 0.607, - "concentration_similarity": 0.792, - "content_similarity": 0.339, - "left_pr_number": 37490, - "right_pr_number": 67155, + "breadth_similarity": 0.833, + "concentration_similarity": 0.876, + "content_similarity": 0.35, + "left_pr_number": 69574, + "right_pr_number": 69645, "shared_directories": [ - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "src/cli/update-cli", + "src/cli", + "src" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.node.test.ts", - "ui/src/ui/app-render.helpers.ts" + "src/cli/update-cli/update-command.ts" ], - "similarity": 0.459, - "size_similarity": 0.81 + "similarity": 0.499, + "size_similarity": 0.846 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.985, - "content_similarity": 0.305, - "left_pr_number": 36800, - "right_pr_number": 68850, + "breadth_similarity": 0.417, + "concentration_similarity": 0.636, + "content_similarity": 0.485, + "left_pr_number": 67535, + "right_pr_number": 69574, "shared_directories": [ - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "src/cli/update-cli", + "src/cli", + "src" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.ts" + "src/cli/update-cli/update-command.ts" ], - "similarity": 0.455, - "size_similarity": 0.613 + "similarity": 0.463, + "size_similarity": 0.333 }, { - "breadth_similarity": 0.708, - "concentration_similarity": 0.944, - "content_similarity": 0.412, - "left_pr_number": 36800, - "right_pr_number": 67432, + "breadth_similarity": 0.833, + "concentration_similarity": 0.984, + "content_similarity": 0.336, + "left_pr_number": 69421, + "right_pr_number": 69574, "shared_directories": [ - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "src/cli/update-cli", + "src/cli", + "src" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/views/chat.ts" + "src/cli/update-cli/update-command.ts" ], - "similarity": 0.446, - "size_similarity": 0.263 + "similarity": 0.452, + "size_similarity": 0.559 }, { - "breadth_similarity": 0.708, - "concentration_similarity": 0.901, - "content_similarity": 0.41, - "left_pr_number": 36800, - "right_pr_number": 67431, + "breadth_similarity": 0.833, + "concentration_similarity": 0.956, + "content_similarity": 0.273, + "left_pr_number": 67702, + "right_pr_number": 69574, + "shared_directories": [ + "src/cli/update-cli", + "src/cli", + "src" + ], + "shared_filenames": [ + "src/cli/update-cli/update-command.ts" + ], + "similarity": 0.356, + "size_similarity": 0.222 + }, + { + "breadth_similarity": 0.333, + "concentration_similarity": 0.653, + "content_similarity": 0.373, + "left_pr_number": 67535, + "right_pr_number": 69421, + "shared_directories": [ + "src/cli/update-cli", + "src/cli", + "src" + ], + "shared_filenames": [ + "src/cli/update-cli/update-command.ts" + ], + "similarity": 0.355, + "size_similarity": 0.186 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.68, + "content_similarity": 0.351, + "left_pr_number": 67535, + "right_pr_number": 67702, + "shared_directories": [ + "src/cli/update-cli", + "src/cli", + "src" + ], + "shared_filenames": [ + "src/cli/update-cli/update-command.ts" + ], + "similarity": 0.341, + "size_similarity": 0.074 + } + ], + "pr_count": 5, + "pr_numbers": [ + 67535, + 67702, + 69421, + 69574, + 69645 + ], + "recent_pr_count": 5, + "recent_pr_numbers": [ + 67535, + 67702, + 69421, + 69574, + 69645 + ], + "representative_pr_number": 69645, + "representative_title": "fix: skip update when already on target version", + "representative_url": "https://github.com/openclaw/openclaw/pull/69645", + "shared_directories": [ + "src/cli/update-cli", + "src/cli", + "src" + ], + "shared_filenames": [ + "src/cli/update-cli/update-command.ts", + "src/cli/update-cli.test.ts" + ], + "summary": "5 open PRs share weighted file overlap around `src/cli/update-cli/update-command.ts`, `src/cli/update-cli.test.ts`; representative PR #69645.", + "title": "Scope: fix: skip update when already on target version" + }, + { + "authors": [ + "akinshaywai", + "javierdici", + "jckm14" + ], + "average_similarity": 0.412, + "cluster_id": "pr-scope-36800-9", + "kind": "pr_scope", + "last_activity_at": "2026-04-19T22:56:12Z", + "outside_window_prs": [ + { + "additions": 57, + "author": "Jleverett4", + "changed_files": 3, + "created_at": "2026-03-05T22:26:45Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/36800/files", + "html_url": "https://github.com/openclaw/openclaw/pull/36800", + "merged": false, + "number": 36800, + "state": "open", + "title": "Control UI: surface hidden tool output (deliverables hint) in Chat", + "updated_at": "2026-04-18T04:23:40Z" + }, + { + "additions": 104, + "author": "X-AlexBin", + "changed_files": 5, + "created_at": "2026-03-06T08:54:12Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37490/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37490", + "merged": false, + "number": 37490, + "state": "open", + "title": "UI: label dashboard vs feishu message source", + "updated_at": "2026-04-19T04:33:33Z" + }, + { + "additions": 87, + "author": "aliramw", + "changed_files": 5, + "created_at": "2026-03-06T22:19:36Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38363/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38363", + "merged": false, + "number": 38363, + "state": "open", + "title": "feat(control-ui): add configurable chat send shortcut", + "updated_at": "2026-04-21T04:31:09Z" + }, + { + "additions": 36, + "author": "coder999999999", + "changed_files": 2, + "created_at": "2026-04-12T22:15:50Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65575/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65575", + "merged": false, + "number": 65575, + "state": "open", + "title": "fix(ui): pause chat announcements during streaming", + "updated_at": "2026-04-12T23:00:22Z" + }, + { + "additions": 20, + "author": "Tianworld", + "changed_files": 1, + "created_at": "2026-04-14T16:05:28Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66655/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66655", + "merged": false, + "number": 66655, + "state": "open", + "title": "fix(control-ui): show configured thinkingDefault in dropdown", + "updated_at": "2026-04-14T16:06:58Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 0.957, + "content_similarity": 0.957, + "left_pr_number": 67431, + "right_pr_number": 67432, "shared_directories": [ + "ui/src/ui/chat", "ui/src/ui/views", "ui/src/ui", "ui/src", @@ -5382,19 +5607,20 @@ ], "shared_filenames": [ "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/views/chat.ts" + "ui/src/ui/chat/grouped-render.ts", + "ui/src/ui/views/chat.ts", + "ui/src/ui/views/markdown-sidebar.ts" ], - "similarity": 0.44, - "size_similarity": 0.246 + "similarity": 0.958, + "size_similarity": 0.933 }, { - "breadth_similarity": 0.775, - "concentration_similarity": 0.929, - "content_similarity": 0.389, - "left_pr_number": 37490, - "right_pr_number": 67431, + "breadth_similarity": 0.8, + "concentration_similarity": 0.808, + "content_similarity": 0.547, + "left_pr_number": 36800, + "right_pr_number": 38363, "shared_directories": [ - "ui/src/ui/chat", "ui/src/ui/views", "ui/src/ui", "ui/src", @@ -5402,39 +5628,36 @@ ], "shared_filenames": [ "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/chat/grouped-render.ts", + "ui/src/ui/app-render.ts", "ui/src/ui/views/chat.ts" ], - "similarity": 0.416, - "size_similarity": 0.133 + "similarity": 0.597, + "size_similarity": 0.626 }, { - "breadth_similarity": 0.714, - "concentration_similarity": 0.962, - "content_similarity": 0.276, - "left_pr_number": 36800, - "right_pr_number": 67155, + "breadth_similarity": 0.5, + "concentration_similarity": 0.985, + "content_similarity": 0.697, + "left_pr_number": 66655, + "right_pr_number": 68926, "shared_directories": [ - "ui/src/ui/views", "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/app-render.ts" + "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.413, - "size_similarity": 0.671 + "similarity": 0.592, + "size_similarity": 0.032 }, { - "breadth_similarity": 0.775, - "concentration_similarity": 0.886, - "content_similarity": 0.376, - "left_pr_number": 37490, - "right_pr_number": 67432, + "breadth_similarity": 0.8, + "concentration_similarity": 0.823, + "content_similarity": 0.456, + "left_pr_number": 38363, + "right_pr_number": 68850, "shared_directories": [ - "ui/src/ui/chat", "ui/src/ui/views", "ui/src/ui", "ui/src", @@ -5442,17 +5665,16 @@ ], "shared_filenames": [ "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/chat/grouped-render.ts", - "ui/src/ui/views/chat.ts" + "ui/src/ui/views/chat.test.ts" ], - "similarity": 0.406, - "size_similarity": 0.143 + "similarity": 0.587, + "size_similarity": 0.978 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.544, - "content_similarity": 0.303, - "left_pr_number": 36800, + "breadth_similarity": 0.45, + "concentration_similarity": 0.736, + "content_similarity": 0.54, + "left_pr_number": 38363, "right_pr_number": 65575, "shared_directories": [ "ui/src/ui/views", @@ -5461,17 +5683,18 @@ "ui" ], "shared_filenames": [ + "ui/src/ui/views/chat.test.ts", "ui/src/ui/views/chat.ts" ], - "similarity": 0.395, - "size_similarity": 0.649 + "similarity": 0.521, + "size_similarity": 0.407 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.544, - "content_similarity": 0.374, - "left_pr_number": 36800, - "right_pr_number": 66655, + "breadth_similarity": 0.833, + "concentration_similarity": 0.574, + "content_similarity": 0.528, + "left_pr_number": 68850, + "right_pr_number": 68926, "shared_directories": [ "ui/src/ui", "ui/src", @@ -5480,15 +5703,15 @@ "shared_filenames": [ "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.389, - "size_similarity": 0.386 + "similarity": 0.502, + "size_similarity": 0.136 }, { "breadth_similarity": 0.55, - "concentration_similarity": 0.83, - "content_similarity": 0.286, - "left_pr_number": 36800, - "right_pr_number": 37490, + "concentration_similarity": 0.845, + "content_similarity": 0.371, + "left_pr_number": 37490, + "right_pr_number": 68850, "shared_directories": [ "ui/src/ui/views", "ui/src/ui", @@ -5496,36 +5719,38 @@ "ui" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/views/chat.ts" + "ui/src/ui/app-render.helpers.node.test.ts", + "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.378, - "size_similarity": 0.543 + "similarity": 0.49, + "size_similarity": 0.886 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.643, - "content_similarity": 0.316, - "left_pr_number": 66655, - "right_pr_number": 67431, + "breadth_similarity": 0.583, + "concentration_similarity": 0.559, + "content_similarity": 0.46, + "left_pr_number": 65575, + "right_pr_number": 68850, "shared_directories": [ + "ui/src/ui/views", "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.ts" + "ui/src/ui/views/chat.test.ts" ], - "similarity": 0.378, - "size_similarity": 0.636 + "similarity": 0.468, + "size_similarity": 0.398 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.6, - "content_similarity": 0.305, - "left_pr_number": 66655, - "right_pr_number": 67432, + "breadth_similarity": 1.0, + "concentration_similarity": 0.985, + "content_similarity": 0.307, + "left_pr_number": 36800, + "right_pr_number": 68850, "shared_directories": [ + "ui/src/ui/views", "ui/src/ui", "ui/src", "ui" @@ -5533,47 +5758,72 @@ "shared_filenames": [ "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.375, - "size_similarity": 0.682 + "similarity": 0.456, + "size_similarity": 0.613 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.559, - "content_similarity": 0.342, - "left_pr_number": 66655, - "right_pr_number": 68850, + "breadth_similarity": 0.708, + "concentration_similarity": 0.944, + "content_similarity": 0.402, + "left_pr_number": 36800, + "right_pr_number": 67432, "shared_directories": [ + "ui/src/ui/views", "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.ts" + "ui/src/ui/app-render.helpers.ts", + "ui/src/ui/views/chat.ts" ], - "similarity": 0.344, - "size_similarity": 0.237 + "similarity": 0.439, + "size_similarity": 0.263 }, { "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.179, - "left_pr_number": 65575, - "right_pr_number": 66655, + "concentration_similarity": 0.978, + "content_similarity": 0.264, + "left_pr_number": 37490, + "right_pr_number": 38363, "shared_directories": [ + "ui/src/ui/views", "ui/src/ui", "ui/src", "ui" ], - "shared_filenames": [], - "similarity": 0.34, - "size_similarity": 0.595 + "shared_filenames": [ + "ui/src/ui/app-render.helpers.ts", + "ui/src/ui/views/chat.ts" + ], + "similarity": 0.439, + "size_similarity": 0.867 }, { - "breadth_similarity": 0.225, - "concentration_similarity": 0.714, - "content_similarity": 0.334, - "left_pr_number": 37490, - "right_pr_number": 66655, + "breadth_similarity": 0.708, + "concentration_similarity": 0.901, + "content_similarity": 0.401, + "left_pr_number": 36800, + "right_pr_number": 67431, + "shared_directories": [ + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/app-render.helpers.ts", + "ui/src/ui/views/chat.ts" + ], + "similarity": 0.434, + "size_similarity": 0.246 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.558, + "content_similarity": 0.431, + "left_pr_number": 36800, + "right_pr_number": 68926, "shared_directories": [ "ui/src/ui", "ui/src", @@ -5582,71 +5832,93 @@ "shared_filenames": [ "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.323, - "size_similarity": 0.21 + "similarity": 0.426, + "size_similarity": 0.083 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.6, - "content_similarity": 0.256, - "left_pr_number": 65575, - "right_pr_number": 67432, + "breadth_similarity": 0.775, + "concentration_similarity": 0.929, + "content_similarity": 0.385, + "left_pr_number": 37490, + "right_pr_number": 67431, "shared_directories": [ + "ui/src/ui/chat", "ui/src/ui/views", "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [ + "ui/src/ui/app-render.helpers.ts", + "ui/src/ui/chat/grouped-render.ts", "ui/src/ui/views/chat.ts" ], - "similarity": 0.312, - "size_similarity": 0.405 + "similarity": 0.413, + "size_similarity": 0.133 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.643, - "content_similarity": 0.256, - "left_pr_number": 65575, - "right_pr_number": 67431, + "breadth_similarity": 0.775, + "concentration_similarity": 0.886, + "content_similarity": 0.37, + "left_pr_number": 37490, + "right_pr_number": 67432, "shared_directories": [ + "ui/src/ui/chat", "ui/src/ui/views", "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [ + "ui/src/ui/app-render.helpers.ts", + "ui/src/ui/chat/grouped-render.ts", "ui/src/ui/views/chat.ts" ], - "similarity": 0.31, - "size_similarity": 0.378 + "similarity": 0.403, + "size_similarity": 0.143 }, { - "breadth_similarity": 0.708, - "concentration_similarity": 0.916, - "content_similarity": 0.232, - "left_pr_number": 67431, - "right_pr_number": 68850, + "breadth_similarity": 0.583, + "concentration_similarity": 0.544, + "content_similarity": 0.3, + "left_pr_number": 36800, + "right_pr_number": 65575, "shared_directories": [ "ui/src/ui/views", "ui/src/ui", "ui/src", "ui" ], + "shared_filenames": [ + "ui/src/ui/views/chat.ts" + ], + "similarity": 0.393, + "size_similarity": 0.649 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.544, + "content_similarity": 0.371, + "left_pr_number": 36800, + "right_pr_number": 66655, + "shared_directories": [ + "ui/src/ui", + "ui/src", + "ui" + ], "shared_filenames": [ "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.301, - "size_similarity": 0.151 + "similarity": 0.386, + "size_similarity": 0.386 }, { - "breadth_similarity": 0.708, - "concentration_similarity": 0.959, - "content_similarity": 0.226, - "left_pr_number": 67432, - "right_pr_number": 68850, + "breadth_similarity": 0.7, + "concentration_similarity": 0.751, + "content_similarity": 0.359, + "left_pr_number": 38363, + "right_pr_number": 68926, "shared_directories": [ - "ui/src/ui/views", "ui/src/ui", "ui/src", "ui" @@ -5654,15 +5926,15 @@ "shared_filenames": [ "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.301, - "size_similarity": 0.161 + "similarity": 0.379, + "size_similarity": 0.133 }, { - "breadth_similarity": 0.321, - "concentration_similarity": 0.506, - "content_similarity": 0.276, + "breadth_similarity": 0.292, + "concentration_similarity": 0.643, + "content_similarity": 0.315, "left_pr_number": 66655, - "right_pr_number": 67155, + "right_pr_number": 67431, "shared_directories": [ "ui/src/ui", "ui/src", @@ -5671,33 +5943,35 @@ "shared_filenames": [ "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.29, - "size_similarity": 0.259 + "similarity": 0.377, + "size_similarity": 0.636 }, { - "breadth_similarity": 0.393, - "concentration_similarity": 0.506, - "content_similarity": 0.193, - "left_pr_number": 65575, - "right_pr_number": 67155, + "breadth_similarity": 0.55, + "concentration_similarity": 0.83, + "content_similarity": 0.283, + "left_pr_number": 36800, + "right_pr_number": 37490, "shared_directories": [ "ui/src/ui/views", "ui/src/ui", "ui/src", "ui" ], - "shared_filenames": [], - "similarity": 0.265, - "size_similarity": 0.435 + "shared_filenames": [ + "ui/src/ui/app-render.helpers.ts", + "ui/src/ui/views/chat.ts" + ], + "similarity": 0.376, + "size_similarity": 0.543 }, { - "breadth_similarity": 0.619, - "concentration_similarity": 0.906, - "content_similarity": 0.187, - "left_pr_number": 67155, + "breadth_similarity": 0.292, + "concentration_similarity": 0.6, + "content_similarity": 0.303, + "left_pr_number": 66655, "right_pr_number": 67432, "shared_directories": [ - "ui/src/ui/views", "ui/src/ui", "ui/src", "ui" @@ -5705,14 +5979,14 @@ "shared_filenames": [ "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.265, - "size_similarity": 0.176 + "similarity": 0.373, + "size_similarity": 0.682 }, { - "breadth_similarity": 0.619, - "concentration_similarity": 0.863, - "content_similarity": 0.191, - "left_pr_number": 67155, + "breadth_similarity": 0.733, + "concentration_similarity": 0.907, + "content_similarity": 0.315, + "left_pr_number": 38363, "right_pr_number": 67431, "shared_directories": [ "ui/src/ui/views", @@ -5721,17 +5995,37 @@ "ui" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.ts" + "ui/src/ui/app-render.helpers.ts", + "ui/src/ui/views/chat.ts" ], - "similarity": 0.264, - "size_similarity": 0.165 + "similarity": 0.362, + "size_similarity": 0.154 }, { - "breadth_similarity": 0.325, - "concentration_similarity": 0.714, - "content_similarity": 0.171, + "breadth_similarity": 0.45, + "concentration_similarity": 0.729, + "content_similarity": 0.365, "left_pr_number": 37490, - "right_pr_number": 65575, + "right_pr_number": 68926, + "shared_directories": [ + "ui/src/styles/chat", + "ui/src/styles", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/app-render.helpers.ts" + ], + "similarity": 0.36, + "size_similarity": 0.153 + }, + { + "breadth_similarity": 0.733, + "concentration_similarity": 0.864, + "content_similarity": 0.313, + "left_pr_number": 38363, + "right_pr_number": 67432, "shared_directories": [ "ui/src/ui/views", "ui/src/ui", @@ -5739,18977 +6033,17818 @@ "ui" ], "shared_filenames": [ + "ui/src/ui/app-render.helpers.ts", "ui/src/ui/views/chat.ts" ], - "similarity": 0.24, - "size_similarity": 0.352 - } - ], - "pr_count": 8, - "pr_numbers": [ - 36800, - 37490, - 65575, - 66655, - 67155, - 67431, - 67432, - 68850 - ], - "recent_pr_count": 6, - "recent_pr_numbers": [ - 65575, - 66655, - 67155, - 67431, - 67432, - 68850 - ], - "representative_pr_number": 67431, - "representative_title": "fix(ui): add aria-label to icon-only buttons missing accessible names", - "representative_url": "https://github.com/openclaw/openclaw/pull/67431", - "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui", - "ui/src/ui/views", - "ui/src/ui/chat" - ], - "shared_filenames": [ - "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/views/chat.ts", - "ui/src/ui/app-render.helpers.node.test.ts", - "ui/src/ui/chat/grouped-render.ts", - "ui/src/ui/views/markdown-sidebar.ts", - "ui/src/ui/views/chat.test.ts", - "ui/src/ui/app-render.ts" - ], - "summary": "8 open PRs share weighted file overlap around `ui/src/ui/app-render.helpers.ts`, `ui/src/ui/views/chat.ts`, `ui/src/ui/app-render.helpers.node.test.ts`; representative PR #67431.", - "title": "Scope: fix(ui): add aria-label to icon-only buttons missing accessible names" - }, - { - "authors": [ - "Jimmy-xuzimo", - "jeffchen1981-fu" - ], - "average_similarity": 0.426, - "cluster_id": "pr-scope-37063-9", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T15:46:44Z", - "outside_window_prs": [ - { - "additions": 134, - "author": "fengyuwusong", - "changed_files": 3, - "created_at": "2026-03-06T03:03:54Z", - "deletions": 8, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37063/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37063", - "merged": false, - "number": 37063, - "state": "open", - "title": "[Issue #37056] feat: add retry configuration for embedded agent announce operations", - "updated_at": "2026-04-18T04:25:00Z" - }, - { - "additions": 156, - "author": "Jimmy-xuzimo", - "changed_files": 4, - "created_at": "2026-04-11T07:04:03Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64688/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64688", - "merged": false, - "number": 64688, - "state": "open", - "title": "fix(codex): remove invalid OAuth scopes model.request and api.responses.write", - "updated_at": "2026-04-12T14:46:27Z" - }, - { - "additions": 69, - "author": "neo1027144-creator", - "changed_files": 2, - "created_at": "2026-04-11T20:30:52Z", - "deletions": 4, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65004/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65004", - "merged": false, - "number": 65004, - "state": "open", - "title": "fix(cron): suppress trailing NO_REPLY in announce delivery path [AI-assisted]", - "updated_at": "2026-04-11T20:51:33Z" + "similarity": 0.36, + "size_similarity": 0.165 }, { - "additions": 113, - "author": "BKF-Gitty", - "changed_files": 4, - "created_at": "2026-04-11T21:37:23Z", - "deletions": 9, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65016/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65016", - "merged": false, - "number": 65016, - "state": "open", - "title": "Fix/cron announce no reply", - "updated_at": "2026-04-12T19:34:35Z" - } - ], - "pairwise": [ - { - "breadth_similarity": 0.8, - "concentration_similarity": 0.945, - "content_similarity": 0.916, - "left_pr_number": 68177, - "right_pr_number": 68180, + "breadth_similarity": 0.417, + "concentration_similarity": 0.559, + "content_similarity": 0.352, + "left_pr_number": 66655, + "right_pr_number": 68850, "shared_directories": [ - "src/cron/isolated-agent", - "src/slack/monitor", - "src/acp", - "src/cron", - "src/slack", - "src/telegram", - "src" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/acp/translator.ts", - "src/cron/isolated-agent/delivery-dispatch.ts", - "src/slack/monitor/context.ts", - "src/telegram/send.ts" + "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.903, - "size_similarity": 0.902 + "similarity": 0.352, + "size_similarity": 0.237 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.829, - "content_similarity": 0.776, - "left_pr_number": 68174, - "right_pr_number": 68177, + "breadth_similarity": 0.583, + "concentration_similarity": 0.657, + "content_similarity": 0.362, + "left_pr_number": 67431, + "right_pr_number": 68926, "shared_directories": [ - "src/cron/isolated-agent", - "src/acp", - "src/cron", - "src/telegram", - "src" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/acp/translator.ts", - "src/cron/isolated-agent/delivery-dispatch.ts", - "src/telegram/send.ts" + "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.789, - "size_similarity": 0.698 + "similarity": 0.348, + "size_similarity": 0.02 }, { - "breadth_similarity": 0.8, - "concentration_similarity": 0.884, - "content_similarity": 0.71, - "left_pr_number": 68174, - "right_pr_number": 68180, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.178, + "left_pr_number": 65575, + "right_pr_number": 66655, "shared_directories": [ - "src/cron/isolated-agent", - "src/acp", - "src/cron", - "src/telegram", - "src" - ], - "shared_filenames": [ - "src/acp/translator.ts", - "src/cron/isolated-agent/delivery-dispatch.ts", - "src/telegram/send.ts" + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.737, - "size_similarity": 0.774 + "shared_filenames": [], + "similarity": 0.339, + "size_similarity": 0.595 }, { - "breadth_similarity": 0.733, - "concentration_similarity": 0.801, - "content_similarity": 0.685, - "left_pr_number": 67701, - "right_pr_number": 68177, + "breadth_similarity": 0.583, + "concentration_similarity": 0.615, + "content_similarity": 0.348, + "left_pr_number": 67432, + "right_pr_number": 68926, "shared_directories": [ - "src/cron/isolated-agent", - "src/acp", - "src/cron", - "src/telegram", - "src" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/acp/translator.ts", - "src/cron/isolated-agent/delivery-dispatch.ts", - "src/telegram/send.ts" + "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.69, - "size_similarity": 0.649 + "similarity": 0.336, + "size_similarity": 0.022 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.992, - "content_similarity": 0.698, - "left_pr_number": 65004, - "right_pr_number": 66712, + "breadth_similarity": 0.225, + "concentration_similarity": 0.714, + "content_similarity": 0.339, + "left_pr_number": 37490, + "right_pr_number": 66655, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.double-announce.test.ts", - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.684, - "size_similarity": 0.589 + "similarity": 0.327, + "size_similarity": 0.21 }, { - "breadth_similarity": 0.917, - "concentration_similarity": 0.856, - "content_similarity": 0.627, - "left_pr_number": 67701, - "right_pr_number": 68180, + "breadth_similarity": 0.35, + "concentration_similarity": 0.736, + "content_similarity": 0.313, + "left_pr_number": 38363, + "right_pr_number": 66655, "shared_directories": [ - "src/cron/isolated-agent", - "src/acp", - "src/cron", - "src/telegram", - "src" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/acp/translator.ts", - "src/cron/isolated-agent/delivery-dispatch.ts", - "src/telegram/send.ts" + "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.681, - "size_similarity": 0.719 + "similarity": 0.327, + "size_similarity": 0.242 }, { - "breadth_similarity": 0.733, - "concentration_similarity": 0.972, - "content_similarity": 0.594, - "left_pr_number": 67701, - "right_pr_number": 68174, + "breadth_similarity": 0.417, + "concentration_similarity": 0.6, + "content_similarity": 0.257, + "left_pr_number": 65575, + "right_pr_number": 67432, "shared_directories": [ - "src/cron/isolated-agent", - "src/acp", - "src/cron", - "src/telegram", - "src" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/acp/translator.ts", - "src/cron/isolated-agent/delivery-dispatch.ts", - "src/telegram/send.ts" + "ui/src/ui/views/chat.ts" ], - "similarity": 0.677, - "size_similarity": 0.93 + "similarity": 0.312, + "size_similarity": 0.405 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.865, - "content_similarity": 0.416, - "left_pr_number": 37063, - "right_pr_number": 65016, + "breadth_similarity": 0.417, + "concentration_similarity": 0.643, + "content_similarity": 0.258, + "left_pr_number": 65575, + "right_pr_number": 67431, "shared_directories": [ - "src/agents", - "src" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/agents/subagent-announce.ts" + "ui/src/ui/views/chat.ts" ], - "similarity": 0.526, - "size_similarity": 0.859 + "similarity": 0.311, + "size_similarity": 0.378 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.5, - "content_similarity": 0.375, - "left_pr_number": 65016, - "right_pr_number": 66712, + "breadth_similarity": 0.708, + "concentration_similarity": 0.916, + "content_similarity": 0.234, + "left_pr_number": 67431, + "right_pr_number": 68850, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.497, - "size_similarity": 0.984 + "similarity": 0.303, + "size_similarity": 0.151 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.788, - "content_similarity": 0.458, - "left_pr_number": 64688, - "right_pr_number": 68177, + "breadth_similarity": 0.708, + "concentration_similarity": 0.959, + "content_similarity": 0.228, + "left_pr_number": 67432, + "right_pr_number": 68850, "shared_directories": [ - "src/cron/isolated-agent", - "src/acp", - "src/cron", - "src/telegram", - "src" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/acp/translator.ts", - "src/cron/isolated-agent/delivery-dispatch.ts", - "src/telegram/send.ts" + "ui/src/ui/app-render.helpers.ts" ], - "similarity": 0.495, - "size_similarity": 0.233 + "similarity": 0.303, + "size_similarity": 0.161 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.492, - "content_similarity": 0.473, - "left_pr_number": 65004, - "right_pr_number": 65016, + "breadth_similarity": 0.75, + "concentration_similarity": 0.985, + "content_similarity": 0.186, + "left_pr_number": 65575, + "right_pr_number": 68926, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" - ], - "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.483, - "size_similarity": 0.598 + "shared_filenames": [], + "similarity": 0.263, + "size_similarity": 0.054 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.924, - "content_similarity": 0.393, - "left_pr_number": 65016, - "right_pr_number": 68177, + "breadth_similarity": 0.325, + "concentration_similarity": 0.714, + "content_similarity": 0.17, + "left_pr_number": 37490, + "right_pr_number": 65575, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/views/chat.ts" ], - "similarity": 0.467, - "size_similarity": 0.303 + "similarity": 0.24, + "size_similarity": 0.352 + } + ], + "pr_count": 9, + "pr_numbers": [ + 36800, + 37490, + 38363, + 65575, + 66655, + 67431, + 67432, + 68850, + 68926 + ], + "recent_pr_count": 4, + "recent_pr_numbers": [ + 67431, + 67432, + 68850, + 68926 + ], + "representative_pr_number": 38363, + "representative_title": "feat(control-ui): add configurable chat send shortcut", + "representative_url": "https://github.com/openclaw/openclaw/pull/38363", + "shared_directories": [ + "ui/src/ui", + "ui/src", + "ui", + "ui/src/ui/views", + "ui/src/ui/chat", + "ui/src/styles/chat", + "ui/src/styles" + ], + "shared_filenames": [ + "ui/src/ui/app-render.helpers.ts", + "ui/src/ui/views/chat.ts", + "ui/src/ui/views/chat.test.ts", + "ui/src/ui/chat/grouped-render.ts", + "ui/src/ui/views/markdown-sidebar.ts", + "ui/src/ui/app-render.helpers.node.test.ts", + "ui/src/ui/app-render.ts" + ], + "summary": "9 open PRs share weighted file overlap around `ui/src/ui/app-render.helpers.ts`, `ui/src/ui/views/chat.ts`, `ui/src/ui/views/chat.test.ts`; representative PR #38363.", + "title": "Scope: feat(control-ui): add configurable chat send shortcut" + }, + { + "authors": [ + "hansolo949", + "sunlight7777777", + "xudaiyanzi" + ], + "average_similarity": 0.379, + "cluster_id": "pr-scope-37305-9", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T17:48:01Z", + "outside_window_prs": [ + { + "additions": 273, + "author": "hyudryu", + "changed_files": 7, + "created_at": "2026-03-06T06:36:46Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37305/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37305", + "merged": false, + "number": 37305, + "state": "open", + "title": "Added delete modal to delete agents", + "updated_at": "2026-04-19T04:32:34Z" }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.616, - "content_similarity": 0.398, - "left_pr_number": 64688, - "right_pr_number": 68174, + "additions": 222, + "author": "misselvexu", + "changed_files": 17, + "created_at": "2026-03-24T01:38:28Z", + "deletions": 22, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53276/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53276", + "merged": false, + "number": 53276, + "state": "open", + "title": "fix(gateway): device identity should not require browser Secure Context", + "updated_at": "2026-03-24T20:15:31Z" + }, + { + "additions": 149, + "author": "luzhidong", + "changed_files": 11, + "created_at": "2026-03-24T16:51:26Z", + "deletions": 15, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53812/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53812", + "merged": false, + "number": 53812, + "state": "open", + "title": "feat(webchat): implement cursor-based pagination for chat history", + "updated_at": "2026-03-24T23:13:40Z" + }, + { + "additions": 175, + "author": "CCcassiusdjs", + "changed_files": 9, + "created_at": "2026-04-12T02:37:09Z", + "deletions": 23, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65115/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65115", + "merged": false, + "number": 65115, + "state": "open", + "title": "fix: resolve 8 GUI bugs in webchat Control UI and TUI", + "updated_at": "2026-04-12T02:59:30Z" + }, + { + "additions": 169, + "author": "Rohan5commit", + "changed_files": 12, + "created_at": "2026-04-13T18:08:49Z", + "deletions": 19, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66098/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66098", + "merged": false, + "number": 66098, + "state": "open", + "title": "fix(web-ui): respect effective chat defaults", + "updated_at": "2026-04-13T18:17:56Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.817, + "concentration_similarity": 0.922, + "content_similarity": 0.93, + "left_pr_number": 69519, + "right_pr_number": 69740, "shared_directories": [ - "src/cron/isolated-agent", - "src/acp", - "src/cron", - "src/telegram", - "src" + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/styles", + "ui/src/ui", + "test/scripts", + "ui/src", + "test", + "ui" ], "shared_filenames": [ - "src/acp/translator.ts", - "src/cron/isolated-agent/delivery-dispatch.ts", - "src/telegram/send.ts" + "test/scripts/test-install-sh-docker.test.ts", + "ui/src/styles/components.css", + "ui/src/ui/app-render.ts", + "ui/src/ui/app-view-state.ts", + "ui/src/ui/controllers/sessions.test.ts", + "ui/src/ui/controllers/sessions.ts", + "ui/src/ui/views/sessions.test.ts", + "ui/src/ui/views/sessions.ts" ], - "similarity": 0.459, - "size_similarity": 0.333 + "similarity": 0.913, + "size_similarity": 0.894 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.904, - "content_similarity": 0.342, - "left_pr_number": 65016, - "right_pr_number": 68174, + "breadth_similarity": 0.938, + "concentration_similarity": 0.609, + "content_similarity": 0.367, + "left_pr_number": 37305, + "right_pr_number": 69519, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/styles", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/styles/components.css", + "ui/src/ui/app-render.ts", + "ui/src/ui/app-view-state.ts" ], - "similarity": 0.45, - "size_similarity": 0.434 + "similarity": 0.526, + "size_similarity": 0.968 }, { - "breadth_similarity": 0.8, - "concentration_similarity": 0.732, - "content_similarity": 0.42, - "left_pr_number": 64688, - "right_pr_number": 68180, + "breadth_similarity": 0.771, + "concentration_similarity": 0.889, + "content_similarity": 0.359, + "left_pr_number": 53812, + "right_pr_number": 66098, "shared_directories": [ - "src/cron/isolated-agent", - "src/acp", - "src/cron", - "src/telegram", - "src" + "ui/src/ui/controllers", + "ui/src/ui/views", + "src/gateway/server-methods", + "ui/src/ui", + "src/gateway", + "ui/src", + "src", + "ui" ], "shared_filenames": [ - "src/acp/translator.ts", - "src/cron/isolated-agent/delivery-dispatch.ts", - "src/telegram/send.ts" + "src/gateway/server-methods/chat.ts", + "ui/src/ui/app-render.ts", + "ui/src/ui/app-view-state.ts", + "ui/src/ui/app.ts", + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts", + "ui/src/ui/views/chat.ts" ], - "similarity": 0.449, - "size_similarity": 0.258 + "similarity": 0.504, + "size_similarity": 0.872 }, { - "breadth_similarity": 0.8, - "concentration_similarity": 0.98, - "content_similarity": 0.36, - "left_pr_number": 65016, - "right_pr_number": 68180, + "breadth_similarity": 0.767, + "concentration_similarity": 0.688, + "content_similarity": 0.341, + "left_pr_number": 37305, + "right_pr_number": 69740, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/styles", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/styles/components.css", + "ui/src/ui/app-render.ts", + "ui/src/ui/app-view-state.ts" ], - "similarity": 0.432, - "size_similarity": 0.336 + "similarity": 0.488, + "size_similarity": 0.924 }, { - "breadth_similarity": 0.733, - "concentration_similarity": 0.589, - "content_similarity": 0.352, - "left_pr_number": 64688, - "right_pr_number": 67701, + "breadth_similarity": 0.633, + "concentration_similarity": 0.821, + "content_similarity": 0.439, + "left_pr_number": 66098, + "right_pr_number": 67036, "shared_directories": [ - "src/cron/isolated-agent", - "src/acp", - "src/cron", - "src/telegram", - "src" + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/acp/translator.ts", - "src/cron/isolated-agent/delivery-dispatch.ts", - "src/telegram/send.ts" + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts", + "ui/src/ui/views/chat.test.ts", + "ui/src/ui/views/chat.ts" ], - "similarity": 0.403, - "size_similarity": 0.358 + "similarity": 0.46, + "size_similarity": 0.325 }, { - "breadth_similarity": 0.733, - "concentration_similarity": 0.877, - "content_similarity": 0.308, - "left_pr_number": 65016, - "right_pr_number": 67701, + "breadth_similarity": 0.784, + "concentration_similarity": 0.949, + "content_similarity": 0.297, + "left_pr_number": 53812, + "right_pr_number": 65115, "shared_directories": [ - "src/cron/isolated-agent", - "src/agents", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.403, - "size_similarity": 0.467 + "similarity": 0.458, + "size_similarity": 0.828 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.712, - "content_similarity": 0.204, - "left_pr_number": 64688, - "right_pr_number": 65016, + "breadth_similarity": 0.732, + "concentration_similarity": 0.99, + "content_similarity": 0.266, + "left_pr_number": 66098, + "right_pr_number": 66780, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.394, - "size_similarity": 0.767 + "similarity": 0.444, + "size_similarity": 0.899 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.568, - "content_similarity": 0.336, - "left_pr_number": 65004, - "right_pr_number": 68177, + "breadth_similarity": 0.792, + "concentration_similarity": 0.94, + "content_similarity": 0.21, + "left_pr_number": 65115, + "right_pr_number": 66098, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.377, - "size_similarity": 0.507 + "similarity": 0.416, + "size_similarity": 0.949 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.396, - "content_similarity": 0.292, - "left_pr_number": 65004, - "right_pr_number": 68174, + "breadth_similarity": 0.847, + "concentration_similarity": 0.899, + "content_similarity": 0.193, + "left_pr_number": 53812, + "right_pr_number": 66780, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.37, - "size_similarity": 0.726 + "similarity": 0.41, + "size_similarity": 0.97 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.576, - "content_similarity": 0.33, - "left_pr_number": 66712, - "right_pr_number": 68177, + "breadth_similarity": 0.929, + "concentration_similarity": 0.95, + "content_similarity": 0.193, + "left_pr_number": 65115, + "right_pr_number": 66780, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "src/agents/pi-embedded-runner/run", + "ui/src/ui/controllers", + "src/agents/pi-embedded-runner", + "ui/src/ui", + "src/agents", + "ui/src", + "src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.367, - "size_similarity": 0.298 + "similarity": 0.403, + "size_similarity": 0.854 }, { - "breadth_similarity": 0.3, - "concentration_similarity": 0.512, - "content_similarity": 0.307, - "left_pr_number": 65004, - "right_pr_number": 68180, + "breadth_similarity": 0.706, + "concentration_similarity": 0.78, + "content_similarity": 0.227, + "left_pr_number": 37305, + "right_pr_number": 53276, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/controllers/agents.ts" ], - "similarity": 0.355, - "size_similarity": 0.562 + "similarity": 0.4, + "size_similarity": 0.878 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.404, - "content_similarity": 0.287, - "left_pr_number": 66712, - "right_pr_number": 68174, + "breadth_similarity": 0.853, + "concentration_similarity": 0.738, + "content_similarity": 0.211, + "left_pr_number": 53276, + "right_pr_number": 66098, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "src/gateway", + "ui/src", + "src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.348, - "size_similarity": 0.427 + "similarity": 0.385, + "size_similarity": 0.77 }, { - "breadth_similarity": 0.267, - "concentration_similarity": 0.368, - "content_similarity": 0.258, - "left_pr_number": 65004, - "right_pr_number": 67701, + "breadth_similarity": 0.681, + "concentration_similarity": 0.798, + "content_similarity": 0.205, + "left_pr_number": 53276, + "right_pr_number": 65115, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.343, - "size_similarity": 0.781 + "similarity": 0.373, + "size_similarity": 0.811 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.788, - "content_similarity": 0.171, - "left_pr_number": 64688, - "right_pr_number": 66712, + "breadth_similarity": 0.735, + "concentration_similarity": 0.83, + "content_similarity": 0.163, + "left_pr_number": 53276, + "right_pr_number": 69519, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/controllers/sessions.ts" ], - "similarity": 0.339, - "size_similarity": 0.78 + "similarity": 0.365, + "size_similarity": 0.907 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.52, - "content_similarity": 0.302, - "left_pr_number": 66712, - "right_pr_number": 68180, + "breadth_similarity": 0.659, + "concentration_similarity": 0.832, + "content_similarity": 0.304, + "left_pr_number": 66780, + "right_pr_number": 67036, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.337, - "size_similarity": 0.331 + "similarity": 0.364, + "size_similarity": 0.292 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.376, - "content_similarity": 0.254, - "left_pr_number": 66712, - "right_pr_number": 67701, + "breadth_similarity": 0.792, + "concentration_similarity": 0.958, + "content_similarity": 0.18, + "left_pr_number": 37305, + "right_pr_number": 66098, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/app-render.ts", + "ui/src/ui/app-view-state.ts", + "ui/src/ui/app.ts" ], - "similarity": 0.31, - "size_similarity": 0.46 + "similarity": 0.355, + "size_similarity": 0.676 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.635, - "content_similarity": 0.009, - "left_pr_number": 37063, - "right_pr_number": 66712, + "breadth_similarity": 0.535, + "concentration_similarity": 0.916, + "content_similarity": 0.271, + "left_pr_number": 53276, + "right_pr_number": 67036, "shared_directories": [ - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.269, - "size_similarity": 0.873 + "shared_filenames": [ + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts" + ], + "similarity": 0.352, + "size_similarity": 0.421 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.78, - "content_similarity": 0.174, - "left_pr_number": 64688, - "right_pr_number": 65004, + "breadth_similarity": 0.636, + "concentration_similarity": 0.849, + "content_similarity": 0.204, + "left_pr_number": 53276, + "right_pr_number": 53812, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "src/gateway", + "ui/src", + "src", + "ui" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts" + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts" ], - "similarity": 0.267, - "size_similarity": 0.459 + "similarity": 0.35, + "size_similarity": 0.672 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.847, - "content_similarity": 0.009, - "left_pr_number": 37063, - "right_pr_number": 64688, + "breadth_similarity": 0.694, + "concentration_similarity": 0.882, + "content_similarity": 0.265, + "left_pr_number": 65115, + "right_pr_number": 67036, "shared_directories": [ - "src" + "ui/src/ui/chat", + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.245, - "size_similarity": 0.893 + "shared_filenames": [ + "ui/src/ui/controllers/chat.ts" + ], + "similarity": 0.35, + "size_similarity": 0.342 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.627, - "content_similarity": 0.009, - "left_pr_number": 37063, - "right_pr_number": 65004, + "breadth_similarity": 0.711, + "concentration_similarity": 0.908, + "content_similarity": 0.153, + "left_pr_number": 53276, + "right_pr_number": 69740, "shared_directories": [ - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "src", + "ui" ], - "shared_filenames": [], - "similarity": 0.173, - "size_similarity": 0.514 + "shared_filenames": [ + "ui/src/ui/controllers/sessions.ts" + ], + "similarity": 0.345, + "size_similarity": 0.811 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.769, - "content_similarity": 0.009, - "left_pr_number": 37063, - "right_pr_number": 68174, + "breadth_similarity": 0.631, + "concentration_similarity": 0.931, + "content_similarity": 0.202, + "left_pr_number": 37305, + "right_pr_number": 53812, "shared_directories": [ - "src" + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/styles", + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [], - "similarity": 0.163, - "size_similarity": 0.373 + "shared_filenames": [ + "ui/src/ui/app-render.ts", + "ui/src/ui/app-view-state.ts", + "ui/src/ui/app.ts" + ], + "similarity": 0.339, + "size_similarity": 0.59 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.941, - "content_similarity": 0.008, - "left_pr_number": 37063, - "right_pr_number": 68177, + "breadth_similarity": 0.806, + "concentration_similarity": 0.982, + "content_similarity": 0.137, + "left_pr_number": 37305, + "right_pr_number": 65115, "shared_directories": [ - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.155, - "size_similarity": 0.261 + "similarity": 0.332, + "size_similarity": 0.712 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.742, - "content_similarity": 0.015, - "left_pr_number": 37063, - "right_pr_number": 67701, + "breadth_similarity": 0.622, + "concentration_similarity": 0.748, + "content_similarity": 0.184, + "left_pr_number": 53276, + "right_pr_number": 66780, "shared_directories": [ - "src/agents", - "src" + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts" + ], + "similarity": 0.332, + "size_similarity": 0.693 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.567, + "content_similarity": 0.159, + "left_pr_number": 66098, + "right_pr_number": 69519, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/app-render.ts", + "ui/src/ui/app-view-state.ts" + ], + "similarity": 0.328, + "size_similarity": 0.699 + }, + { + "breadth_similarity": 0.738, + "concentration_similarity": 0.863, + "content_similarity": 0.187, + "left_pr_number": 37305, + "right_pr_number": 67036, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.153, - "size_similarity": 0.401 + "similarity": 0.32, + "size_similarity": 0.48 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.885, - "content_similarity": 0.008, - "left_pr_number": 37063, - "right_pr_number": 68180, + "breadth_similarity": 0.83, + "concentration_similarity": 0.757, + "content_similarity": 0.166, + "left_pr_number": 53812, + "right_pr_number": 69740, "shared_directories": [ - "src" + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/styles", + "ui/src/ui", + "ui/src", + "src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/app-render.ts", + "ui/src/ui/app-view-state.ts" + ], + "similarity": 0.319, + "size_similarity": 0.545 + }, + { + "breadth_similarity": 0.861, + "concentration_similarity": 0.628, + "content_similarity": 0.131, + "left_pr_number": 65115, + "right_pr_number": 69519, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.143, - "size_similarity": 0.289 - } - ], - "pr_count": 9, - "pr_numbers": [ - 37063, - 64688, - 65004, - 65016, - 66712, - 67701, - 68174, - 68177, - 68180 + "similarity": 0.319, + "size_similarity": 0.736 + }, + { + "breadth_similarity": 0.676, + "concentration_similarity": 0.679, + "content_similarity": 0.177, + "left_pr_number": 53812, + "right_pr_number": 69519, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/styles", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/app-render.ts", + "ui/src/ui/app-view-state.ts" + ], + "similarity": 0.317, + "size_similarity": 0.61 + }, + { + "breadth_similarity": 0.95, + "concentration_similarity": 0.706, + "content_similarity": 0.126, + "left_pr_number": 65115, + "right_pr_number": 69740, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui", + "src/agents", + "ui/src", + "src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.317, + "size_similarity": 0.658 + }, + { + "breadth_similarity": 0.551, + "concentration_similarity": 0.933, + "content_similarity": 0.243, + "left_pr_number": 53812, + "right_pr_number": 67036, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/controllers/chat.ts", + "ui/src/ui/views/chat.ts" + ], + "similarity": 0.314, + "size_similarity": 0.283 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.645, + "content_similarity": 0.149, + "left_pr_number": 66098, + "right_pr_number": 69740, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/app-render.ts", + "ui/src/ui/app-view-state.ts" + ], + "similarity": 0.314, + "size_similarity": 0.625 + }, + { + "breadth_similarity": 0.8, + "concentration_similarity": 0.746, + "content_similarity": 0.175, + "left_pr_number": 67036, + "right_pr_number": 69519, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.309, + "size_similarity": 0.465 + }, + { + "breadth_similarity": 0.65, + "concentration_similarity": 0.824, + "content_similarity": 0.162, + "left_pr_number": 67036, + "right_pr_number": 69740, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.298, + "size_similarity": 0.52 + }, + { + "breadth_similarity": 0.746, + "concentration_similarity": 0.968, + "content_similarity": 0.103, + "left_pr_number": 37305, + "right_pr_number": 66780, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.286, + "size_similarity": 0.608 + }, + { + "breadth_similarity": 0.802, + "concentration_similarity": 0.578, + "content_similarity": 0.096, + "left_pr_number": 66780, + "right_pr_number": 69519, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.27, + "size_similarity": 0.628 + }, + { + "breadth_similarity": 0.879, + "concentration_similarity": 0.656, + "content_similarity": 0.093, + "left_pr_number": 66780, + "right_pr_number": 69740, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui", + "src/agents", + "ui/src", + "src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.27, + "size_similarity": 0.561 + } ], - "recent_pr_count": 5, + "pr_count": 9, + "pr_numbers": [ + 37305, + 53276, + 53812, + 65115, + 66098, + 66780, + 67036, + 69519, + 69740 + ], + "recent_pr_count": 4, "recent_pr_numbers": [ - 66712, - 67701, - 68174, - 68177, - 68180 + 66780, + 67036, + 69519, + 69740 ], - "representative_pr_number": 68177, - "representative_title": "fix(slack): prevent f.toLowerCase is not a function error (fixes #68168)", - "representative_url": "https://github.com/openclaw/openclaw/pull/68177", + "representative_pr_number": 69519, + "representative_title": "Sessions page: use numeric input for Limit field", + "representative_url": "https://github.com/openclaw/openclaw/pull/69519", "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui", + "ui/src/ui/views", "src", - "src/cron/isolated-agent", - "src/cron", - "src/acp", - "src/telegram", - "src/agents", - "src/slack/monitor", - "src/slack" + "ui/src/styles", + "src/gateway" ], "shared_filenames": [ - "src/cron/isolated-agent/delivery-dispatch.ts", - "src/acp/translator.ts", - "src/telegram/send.ts", - "src/slack/monitor/context.ts", - "src/cron/isolated-agent/delivery-dispatch.double-announce.test.ts", - "src/agents/subagent-announce.ts" + "ui/src/ui/controllers/chat.ts", + "ui/src/ui/controllers/chat.test.ts", + "ui/src/ui/app-view-state.ts", + "ui/src/ui/app-render.ts", + "ui/src/ui/controllers/sessions.ts", + "ui/src/styles/components.css", + "ui/src/ui/views/chat.ts", + "ui/src/ui/app.ts" ], - "summary": "9 open PRs share weighted file overlap around `src/cron/isolated-agent/delivery-dispatch.ts`, `src/acp/translator.ts`, `src/telegram/send.ts`; representative PR #68177.", - "title": "Scope: fix(slack): prevent f.toLowerCase is not a function error (fixes #68168)" + "summary": "9 open PRs share weighted file overlap around `ui/src/ui/controllers/chat.ts`, `ui/src/ui/controllers/chat.test.ts`, `ui/src/ui/app-view-state.ts`; representative PR #69519.", + "title": "Scope: Sessions page: use numeric input for Limit field" }, { "authors": [ - "SARAMALI15792", - "feniix", - "kagura-agent", - "rubencu", - "sahilsatralkar" + "Jimmy-xuzimo", + "bradfreels", + "lllyin" ], - "average_similarity": 0.422, - "cluster_id": "pr-scope-64597-8", + "average_similarity": 0.405, + "cluster_id": "pr-scope-64688-8", "kind": "pr_scope", - "last_activity_at": "2026-04-19T03:25:15Z", + "last_activity_at": "2026-04-21T12:01:52Z", "outside_window_prs": [ { - "additions": 248, - "author": "shad0wca7", - "changed_files": 7, - "created_at": "2026-04-11T02:17:51Z", - "deletions": 12, + "additions": 156, + "author": "Jimmy-xuzimo", + "changed_files": 4, + "created_at": "2026-04-11T07:04:03Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64597/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64597", + "files_url": "https://github.com/openclaw/openclaw/pull/64688/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64688", "merged": false, - "number": 64597, + "number": 64688, "state": "open", - "title": "fix: skip futile overflow truncation retries", - "updated_at": "2026-04-13T00:19:08Z" + "title": "fix(codex): remove invalid OAuth scopes model.request and api.responses.write", + "updated_at": "2026-04-12T14:46:27Z" }, { - "additions": 301, - "author": "nonzeroclaw", - "changed_files": 10, - "created_at": "2026-04-11T05:17:34Z", - "deletions": 194, + "additions": 69, + "author": "neo1027144-creator", + "changed_files": 2, + "created_at": "2026-04-11T20:30:52Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64656/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64656", + "files_url": "https://github.com/openclaw/openclaw/pull/65004/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65004", "merged": false, - "number": 64656, + "number": 65004, "state": "open", - "title": "fix: isolate auto-failover, split /new vs /reset LCM identity, add overflow circuit breaker", - "updated_at": "2026-04-11T07:13:08Z" + "title": "fix(cron): suppress trailing NO_REPLY in announce delivery path [AI-assisted]", + "updated_at": "2026-04-11T20:51:33Z" }, { - "additions": 88, - "author": "shad0wca7", + "additions": 113, + "author": "BKF-Gitty", "changed_files": 4, - "created_at": "2026-04-11T18:06:38Z", - "deletions": 7, + "created_at": "2026-04-11T21:37:23Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64956/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64956", + "files_url": "https://github.com/openclaw/openclaw/pull/65016/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65016", "merged": false, - "number": 64956, + "number": 65016, "state": "open", - "title": "fix: dedupe session summaries by session id", - "updated_at": "2026-04-13T00:22:35Z" + "title": "Fix/cron announce no reply", + "updated_at": "2026-04-12T19:34:35Z" + }, + { + "additions": 124, + "author": "jeffchen1981-fu", + "changed_files": 3, + "created_at": "2026-04-14T17:42:39Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66712/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66712", + "merged": false, + "number": 66712, + "state": "open", + "title": "feat(cron): add slot-level delivery dedup guard", + "updated_at": "2026-04-16T04:10:56Z" } ], "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.689, - "left_pr_number": 68575, - "right_pr_number": 68798, + "breadth_similarity": 0.917, + "concentration_similarity": 0.856, + "content_similarity": 0.645, + "left_pr_number": 67701, + "right_pr_number": 68180, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/acp", + "src/cron", + "src/telegram", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/acp/translator.ts", + "src/cron/isolated-agent/delivery-dispatch.ts", + "src/telegram/send.ts" ], - "similarity": 0.674, - "size_similarity": 0.445 + "similarity": 0.694, + "size_similarity": 0.719 }, { - "breadth_similarity": 0.35, - "concentration_similarity": 0.908, - "content_similarity": 0.42, - "left_pr_number": 67830, - "right_pr_number": 68798, + "breadth_similarity": 0.583, + "concentration_similarity": 0.992, + "content_similarity": 0.699, + "left_pr_number": 65004, + "right_pr_number": 66712, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.double-announce.test.ts", + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.516, - "size_similarity": 0.944 + "similarity": 0.685, + "size_similarity": 0.589 }, { - "breadth_similarity": 0.225, - "concentration_similarity": 0.908, - "content_similarity": 0.538, - "left_pr_number": 67830, - "right_pr_number": 68575, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.575, + "left_pr_number": 65004, + "right_pr_number": 69256, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.515, - "size_similarity": 0.472 + "similarity": 0.55, + "size_similarity": 0.151 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.566, - "content_similarity": 0.435, - "left_pr_number": 66537, - "right_pr_number": 68575, + "breadth_similarity": 0.25, + "concentration_similarity": 0.492, + "content_similarity": 0.635, + "left_pr_number": 65016, + "right_pr_number": 69256, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.512, - "size_similarity": 0.807 + "similarity": 0.507, + "size_similarity": 0.09 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.632, - "content_similarity": 0.455, - "left_pr_number": 64956, - "right_pr_number": 68575, + "breadth_similarity": 0.625, + "concentration_similarity": 0.5, + "content_similarity": 0.381, + "left_pr_number": 65016, + "right_pr_number": 66712, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.506, - "size_similarity": 0.709 + "similarity": 0.502, + "size_similarity": 0.984 }, { - "breadth_similarity": 0.738, - "concentration_similarity": 0.58, - "content_similarity": 0.361, - "left_pr_number": 64597, - "right_pr_number": 67830, + "breadth_similarity": 0.875, + "concentration_similarity": 0.995, + "content_similarity": 0.329, + "left_pr_number": 66712, + "right_pr_number": 69345, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.double-announce.test.ts", + "src/cron/isolated-agent/delivery-dispatch.ts" ], "similarity": 0.493, - "size_similarity": 0.915 + "size_similarity": 0.838 }, { - "breadth_similarity": 0.548, - "concentration_similarity": 0.922, - "content_similarity": 0.412, - "left_pr_number": 64597, - "right_pr_number": 66537, + "breadth_similarity": 0.375, + "concentration_similarity": 0.492, + "content_similarity": 0.472, + "left_pr_number": 65004, + "right_pr_number": 65016, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/auto-reply/reply", - "src/agents", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/auto-reply/reply/agent-runner-execution.test.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.485, - "size_similarity": 0.638 + "similarity": 0.482, + "size_similarity": 0.598 }, { - "breadth_similarity": 0.388, - "concentration_similarity": 0.658, - "content_similarity": 0.463, - "left_pr_number": 66537, - "right_pr_number": 67830, + "breadth_similarity": 0.8, + "concentration_similarity": 0.732, + "content_similarity": 0.445, + "left_pr_number": 64688, + "right_pr_number": 68180, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/acp", + "src/cron", + "src/telegram", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts" + "src/acp/translator.ts", + "src/cron/isolated-agent/delivery-dispatch.ts", + "src/telegram/send.ts" ], - "similarity": 0.484, - "size_similarity": 0.585 + "similarity": 0.467, + "size_similarity": 0.258 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.871, - "content_similarity": 0.459, - "left_pr_number": 66365, - "right_pr_number": 67830, + "breadth_similarity": 0.5, + "concentration_similarity": 0.986, + "content_similarity": 0.38, + "left_pr_number": 65004, + "right_pr_number": 69345, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.double-announce.test.ts", + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.47, - "size_similarity": 0.401 + "similarity": 0.439, + "size_similarity": 0.493 }, { - "breadth_similarity": 0.564, - "concentration_similarity": 0.878, - "content_similarity": 0.394, - "left_pr_number": 64597, - "right_pr_number": 64656, + "breadth_similarity": 0.75, + "concentration_similarity": 0.505, + "content_similarity": 0.299, + "left_pr_number": 65016, + "right_pr_number": 69345, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/auto-reply/reply", - "src/agents", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.455, - "size_similarity": 0.525 + "similarity": 0.433, + "size_similarity": 0.824 }, { - "breadth_similarity": 0.757, - "concentration_similarity": 0.702, - "content_similarity": 0.367, - "left_pr_number": 64656, - "right_pr_number": 67830, + "breadth_similarity": 0.417, + "concentration_similarity": 0.992, + "content_similarity": 0.466, + "left_pr_number": 66712, + "right_pr_number": 69256, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src/config", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.454, - "size_similarity": 0.574 + "similarity": 0.431, + "size_similarity": 0.089 }, { - "breadth_similarity": 0.31, - "concentration_similarity": 0.488, - "content_similarity": 0.421, - "left_pr_number": 64597, - "right_pr_number": 68575, + "breadth_similarity": 0.8, + "concentration_similarity": 0.98, + "content_similarity": 0.357, + "left_pr_number": 65016, + "right_pr_number": 68180, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.427, - "size_similarity": 0.515 + "similarity": 0.429, + "size_similarity": 0.336 }, { - "breadth_similarity": 0.452, - "concentration_similarity": 0.488, - "content_similarity": 0.316, - "left_pr_number": 64597, - "right_pr_number": 68798, + "breadth_similarity": 0.733, + "concentration_similarity": 0.589, + "content_similarity": 0.374, + "left_pr_number": 64688, + "right_pr_number": 67701, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/acp", + "src/cron", + "src/telegram", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/acp/translator.ts", + "src/cron/isolated-agent/delivery-dispatch.ts", + "src/telegram/send.ts" ], - "similarity": 0.42, - "size_similarity": 0.864 + "similarity": 0.418, + "size_similarity": 0.358 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.723, - "content_similarity": 0.389, - "left_pr_number": 64956, - "right_pr_number": 67830, + "breadth_similarity": 0.375, + "concentration_similarity": 0.986, + "content_similarity": 0.444, + "left_pr_number": 69256, + "right_pr_number": 69345, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.404, - "size_similarity": 0.335 + "similarity": 0.409, + "size_similarity": 0.074 }, { - "breadth_similarity": 0.455, - "concentration_similarity": 0.83, - "content_similarity": 0.3, - "left_pr_number": 64656, - "right_pr_number": 66365, + "breadth_similarity": 0.733, + "concentration_similarity": 0.877, + "content_similarity": 0.305, + "left_pr_number": 65016, + "right_pr_number": 67701, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/auto-reply/reply", + "src/cron/isolated-agent", "src/agents", - "src/auto-reply", + "src/cron", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.402, - "size_similarity": 0.699 + "similarity": 0.401, + "size_similarity": 0.467 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.566, - "content_similarity": 0.325, - "left_pr_number": 66537, - "right_pr_number": 68798, + "breadth_similarity": 1.0, + "concentration_similarity": 0.712, + "content_similarity": 0.209, + "left_pr_number": 64688, + "right_pr_number": 65016, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.401, - "size_similarity": 0.551 + "similarity": 0.397, + "size_similarity": 0.767 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.935, - "content_similarity": 0.256, - "left_pr_number": 64956, - "right_pr_number": 66537, + "breadth_similarity": 0.3, + "concentration_similarity": 0.512, + "content_similarity": 0.305, + "left_pr_number": 65004, + "right_pr_number": 68180, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.399, - "size_similarity": 0.572 + "similarity": 0.353, + "size_similarity": 0.562 }, { - "breadth_similarity": 0.343, - "concentration_similarity": 0.979, - "content_similarity": 0.4, - "left_pr_number": 64656, - "right_pr_number": 64956, + "breadth_similarity": 0.267, + "concentration_similarity": 0.368, + "content_similarity": 0.256, + "left_pr_number": 65004, + "right_pr_number": 67701, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.392, - "size_similarity": 0.192 + "similarity": 0.342, + "size_similarity": 0.781 }, { - "breadth_similarity": 0.552, - "concentration_similarity": 0.709, - "content_similarity": 0.316, - "left_pr_number": 64597, - "right_pr_number": 66365, + "breadth_similarity": 0.625, + "concentration_similarity": 0.788, + "content_similarity": 0.173, + "left_pr_number": 64688, + "right_pr_number": 66712, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/auto-reply/reply", - "src/agents", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.367, - "size_similarity": 0.367 + "similarity": 0.34, + "size_similarity": 0.78 }, { - "breadth_similarity": 0.594, - "concentration_similarity": 0.787, - "content_similarity": 0.333, - "left_pr_number": 66365, - "right_pr_number": 66537, + "breadth_similarity": 0.75, + "concentration_similarity": 0.793, + "content_similarity": 0.115, + "left_pr_number": 64688, + "right_pr_number": 69345, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/auto-reply/reply", - "src/agents", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/auto-reply/reply/agent-runner-execution.test.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.367, - "size_similarity": 0.234 + "similarity": 0.335, + "size_similarity": 0.931 }, { - "breadth_similarity": 0.619, - "concentration_similarity": 0.857, - "content_similarity": 0.295, - "left_pr_number": 64597, - "right_pr_number": 64956, + "breadth_similarity": 0.2, + "concentration_similarity": 0.512, + "content_similarity": 0.354, + "left_pr_number": 68180, + "right_pr_number": 69256, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.366, - "size_similarity": 0.365 + "similarity": 0.334, + "size_similarity": 0.268 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.632, - "content_similarity": 0.298, - "left_pr_number": 64956, - "right_pr_number": 68798, + "breadth_similarity": 0.5, + "concentration_similarity": 0.52, + "content_similarity": 0.296, + "left_pr_number": 66712, + "right_pr_number": 68180, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.362, - "size_similarity": 0.316 + "similarity": 0.333, + "size_similarity": 0.331 }, { - "breadth_similarity": 0.271, - "concentration_similarity": 0.61, - "content_similarity": 0.292, - "left_pr_number": 64656, - "right_pr_number": 68798, + "breadth_similarity": 0.45, + "concentration_similarity": 0.376, + "content_similarity": 0.249, + "left_pr_number": 66712, + "right_pr_number": 67701, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.353, - "size_similarity": 0.608 + "similarity": 0.307, + "size_similarity": 0.46 }, { - "breadth_similarity": 0.171, - "concentration_similarity": 0.61, - "content_similarity": 0.369, - "left_pr_number": 64656, - "right_pr_number": 68575, + "breadth_similarity": 0.183, + "concentration_similarity": 0.368, + "content_similarity": 0.298, + "left_pr_number": 67701, + "right_pr_number": 69256, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.346, - "size_similarity": 0.271 + "similarity": 0.274, + "size_similarity": 0.193 }, { - "breadth_similarity": 0.312, + "breadth_similarity": 0.375, "concentration_similarity": 0.78, - "content_similarity": 0.321, - "left_pr_number": 66365, - "right_pr_number": 68575, + "content_similarity": 0.178, + "left_pr_number": 64688, + "right_pr_number": 65004, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.324, - "size_similarity": 0.189 + "similarity": 0.27, + "size_similarity": 0.459 }, { - "breadth_similarity": 0.293, - "concentration_similarity": 0.956, - "content_similarity": 0.276, - "left_pr_number": 64656, - "right_pr_number": 66537, + "breadth_similarity": 0.6, + "concentration_similarity": 0.526, + "content_similarity": 0.195, + "left_pr_number": 68180, + "right_pr_number": 69345, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/auto-reply/reply", - "src/agents", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/auto-reply/reply/agent-runner-execution.test.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.321, - "size_similarity": 0.335 + "similarity": 0.264, + "size_similarity": 0.277 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.78, - "content_similarity": 0.252, - "left_pr_number": 66365, - "right_pr_number": 68798, + "breadth_similarity": 0.533, + "concentration_similarity": 0.382, + "content_similarity": 0.164, + "left_pr_number": 67701, + "right_pr_number": 69345, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.317, - "size_similarity": 0.425 + "similarity": 0.245, + "size_similarity": 0.385 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.852, - "content_similarity": 0.217, - "left_pr_number": 64956, - "right_pr_number": 66365, + "breadth_similarity": 0.25, + "concentration_similarity": 0.78, + "content_similarity": 0.207, + "left_pr_number": 64688, + "right_pr_number": 69256, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts" + "src/cron/isolated-agent/delivery-dispatch.ts" ], - "similarity": 0.277, - "size_similarity": 0.134 + "similarity": 0.219, + "size_similarity": 0.069 } ], "pr_count": 8, "pr_numbers": [ - 64597, - 64656, - 64956, - 66365, - 66537, - 67830, - 68575, - 68798 + 64688, + 65004, + 65016, + 66712, + 67701, + 68180, + 69256, + 69345 ], - "recent_pr_count": 5, + "recent_pr_count": 4, "recent_pr_numbers": [ - 66365, - 66537, - 67830, - 68575, - 68798 + 67701, + 68180, + 69256, + 69345 ], - "representative_pr_number": 67830, - "representative_title": "feat: send compaction start and completion notices", - "representative_url": "https://github.com/openclaw/openclaw/pull/67830", + "representative_pr_number": 65016, + "representative_title": "Fix/cron announce no reply", + "representative_url": "https://github.com/openclaw/openclaw/pull/65016", "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/cron/isolated-agent", + "src/cron", "src", - "src/agents/pi-embedded-runner", - "src/agents", - "src/agents/pi-embedded-runner/run", - "src/config" + "src/acp", + "src/telegram", + "src/agents" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.test.ts", - "src/auto-reply/reply/agent-runner-execution.ts", - "src/agents/pi-embedded-runner/run.ts" + "src/cron/isolated-agent/delivery-dispatch.ts", + "src/acp/translator.ts", + "src/telegram/send.ts", + "src/cron/isolated-agent/delivery-dispatch.double-announce.test.ts" ], - "summary": "8 open PRs share weighted file overlap around `src/auto-reply/reply/agent-runner-execution.test.ts`, `src/auto-reply/reply/agent-runner-execution.ts`, `src/agents/pi-embedded-runner/run.ts`; representative PR #67830.", - "title": "Scope: feat: send compaction start and completion notices" + "summary": "8 open PRs share weighted file overlap around `src/cron/isolated-agent/delivery-dispatch.ts`, `src/acp/translator.ts`, `src/telegram/send.ts`; representative PR #65016.", + "title": "Scope: Fix/cron announce no reply" }, { "authors": [ - "alexlomt", - "dlebee-agent", + "JoeshpCheung", + "lawrence3699", "lyfuci", - "onebluestone11", - "vincentkoc" + "rzyns" ], - "average_similarity": 0.647, - "cluster_id": "pr-scope-53807-7", + "average_similarity": 0.459, + "cluster_id": "pr-scope-63586-7", "kind": "pr_scope", - "last_activity_at": "2026-04-19T04:39:03Z", + "last_activity_at": "2026-04-21T13:57:12Z", "outside_window_prs": [ { - "additions": 440, - "author": "densmirnov", - "changed_files": 5, - "created_at": "2026-03-24T16:30:35Z", - "deletions": 19, + "additions": 136, + "author": "jepson-liu", + "changed_files": 2, + "created_at": "2026-04-09T06:30:21Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53807/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53807", + "files_url": "https://github.com/openclaw/openclaw/pull/63586/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63586", "merged": false, - "number": 53807, + "number": 63586, "state": "open", - "title": "fix: avoid inlining daemon secrets in generated systemd units", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(plugins): ignore non-allowlisted load errors #63575", + "updated_at": "2026-04-11T01:36:08Z" }, { - "additions": 158, - "author": "MoerAI", - "changed_files": 2, - "created_at": "2026-04-10T02:10:27Z", - "deletions": 1, + "additions": 592, + "author": "hxy91819", + "changed_files": 6, + "created_at": "2026-04-10T06:54:39Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64020/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64020", + "files_url": "https://github.com/openclaw/openclaw/pull/64154/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64154", "merged": false, - "number": 64020, + "number": 64154, "state": "open", - "title": "fix(daemon): derive XDG_RUNTIME_DIR/DBUS bus address for systemctl spawns (#63561)", - "updated_at": "2026-04-18T08:46:09Z" + "title": "Plugins: keep untrusted workspace channel shadows out of setup-time loads", + "updated_at": "2026-04-12T04:19:23Z" + }, + { + "additions": 10, + "author": "hteo1337", + "changed_files": 3, + "created_at": "2026-04-10T15:41:50Z", + "deletions": 12, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64388/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64388", + "merged": false, + "number": 64388, + "state": "open", + "title": "fix(plugins): auto-correct cache:false when activate:false instead of throwing", + "updated_at": "2026-04-11T11:53:58Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.848, - "left_pr_number": 64020, - "right_pr_number": 68293, + "content_similarity": 0.574, + "left_pr_number": 67892, + "right_pr_number": 68638, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.885, - "size_similarity": 0.941 + "similarity": 0.682, + "size_similarity": 0.983 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 0.962, - "content_similarity": 0.805, - "left_pr_number": 53807, - "right_pr_number": 67179, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.576, + "left_pr_number": 63586, + "right_pr_number": 68638, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.79, - "size_similarity": 0.745 + "similarity": 0.663, + "size_similarity": 0.844 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.81, - "left_pr_number": 64020, - "right_pr_number": 66735, + "breadth_similarity": 0.75, + "concentration_similarity": 0.992, + "content_similarity": 0.55, + "left_pr_number": 68389, + "right_pr_number": 68638, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.782, - "size_similarity": 0.432 + "similarity": 0.65, + "size_similarity": 0.937 }, { - "breadth_similarity": 0.7, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.757, - "left_pr_number": 53807, - "right_pr_number": 66735, + "content_similarity": 0.511, + "left_pr_number": 63586, + "right_pr_number": 67892, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.77, - "size_similarity": 0.802 + "similarity": 0.636, + "size_similarity": 0.858 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.962, - "content_similarity": 0.768, - "left_pr_number": 66735, - "right_pr_number": 67179, + "breadth_similarity": 0.583, + "concentration_similarity": 0.992, + "content_similarity": 0.514, + "left_pr_number": 67892, + "right_pr_number": 68389, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.762, - "size_similarity": 0.929 + "similarity": 0.611, + "size_similarity": 0.953 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.759, - "left_pr_number": 66735, - "right_pr_number": 68293, + "breadth_similarity": 0.583, + "concentration_similarity": 0.992, + "content_similarity": 0.491, + "left_pr_number": 63586, + "right_pr_number": 68389, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.75, - "size_similarity": 0.459 + "similarity": 0.587, + "size_similarity": 0.901 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.984, - "content_similarity": 0.735, - "left_pr_number": 53807, - "right_pr_number": 66444, - "shared_directories": [ - "src/daemon", - "src" + "concentration_similarity": 0.909, + "content_similarity": 0.503, + "left_pr_number": 64388, + "right_pr_number": 68638, + "shared_directories": [ + "src/plugins", + "src" ], "shared_filenames": [ - "src/daemon/systemd-unit.test.ts", - "src/daemon/systemd-unit.ts", - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.689, - "size_similarity": 0.338 + "similarity": 0.501, + "size_similarity": 0.185 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.991, - "content_similarity": 0.678, - "left_pr_number": 64020, - "right_pr_number": 68400, + "breadth_similarity": 1.0, + "concentration_similarity": 0.917, + "content_similarity": 0.463, + "left_pr_number": 64388, + "right_pr_number": 68389, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.673, - "size_similarity": 0.692 + "similarity": 0.496, + "size_similarity": 0.173 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.991, - "content_similarity": 0.681, - "left_pr_number": 68293, - "right_pr_number": 68400, + "breadth_similarity": 0.583, + "concentration_similarity": 0.909, + "content_similarity": 0.481, + "left_pr_number": 64388, + "right_pr_number": 67892, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.669, - "size_similarity": 0.651 + "similarity": 0.467, + "size_similarity": 0.182 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.991, - "content_similarity": 0.692, - "left_pr_number": 66735, - "right_pr_number": 68400, + "breadth_similarity": 0.583, + "concentration_similarity": 0.909, + "content_similarity": 0.465, + "left_pr_number": 63586, + "right_pr_number": 64388, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.624, - "size_similarity": 0.299 + "similarity": 0.453, + "size_similarity": 0.156 }, { - "breadth_similarity": 0.7, - "concentration_similarity": 1.0, - "content_similarity": 0.617, - "left_pr_number": 53807, - "right_pr_number": 64020, + "breadth_similarity": 0.292, + "concentration_similarity": 0.492, + "content_similarity": 0.491, + "left_pr_number": 64154, + "right_pr_number": 67892, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.604, - "size_similarity": 0.346 + "similarity": 0.428, + "size_similarity": 0.203 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.962, - "content_similarity": 0.636, - "left_pr_number": 64020, - "right_pr_number": 67179, + "breadth_similarity": 0.516, + "concentration_similarity": 0.527, + "content_similarity": 0.262, + "left_pr_number": 64154, + "right_pr_number": 69458, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.6, - "size_similarity": 0.465 + "similarity": 0.404, + "size_similarity": 0.951 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 0.978, - "content_similarity": 0.614, - "left_pr_number": 66444, - "right_pr_number": 67179, + "breadth_similarity": 0.148, + "concentration_similarity": 0.965, + "content_similarity": 0.425, + "left_pr_number": 67892, + "right_pr_number": 69458, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.6, - "size_similarity": 0.251 + "similarity": 0.39, + "size_similarity": 0.193 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.984, - "content_similarity": 0.654, - "left_pr_number": 66444, - "right_pr_number": 66735, + "breadth_similarity": 0.187, + "concentration_similarity": 0.965, + "content_similarity": 0.408, + "left_pr_number": 68638, + "right_pr_number": 69458, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.592, - "size_similarity": 0.271 + "similarity": 0.381, + "size_similarity": 0.189 }, { - "breadth_similarity": 0.7, - "concentration_similarity": 1.0, - "content_similarity": 0.585, - "left_pr_number": 53807, - "right_pr_number": 68293, + "breadth_similarity": 0.258, + "concentration_similarity": 0.973, + "content_similarity": 0.353, + "left_pr_number": 68389, + "right_pr_number": 69458, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.585, - "size_similarity": 0.368 + "similarity": 0.352, + "size_similarity": 0.202 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.991, - "content_similarity": 0.572, - "left_pr_number": 53807, - "right_pr_number": 68400, + "breadth_similarity": 0.375, + "concentration_similarity": 0.492, + "content_similarity": 0.369, + "left_pr_number": 64154, + "right_pr_number": 68638, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts", + "src/plugins/registry.ts" ], - "similarity": 0.561, - "size_similarity": 0.24 + "similarity": 0.351, + "size_similarity": 0.199 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.984, - "content_similarity": 0.608, - "left_pr_number": 66444, - "right_pr_number": 68293, + "breadth_similarity": 0.5, + "concentration_similarity": 0.5, + "content_similarity": 0.341, + "left_pr_number": 64154, + "right_pr_number": 68389, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.539, - "size_similarity": 0.124 + "similarity": 0.346, + "size_similarity": 0.213 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.993, - "content_similarity": 0.535, - "left_pr_number": 66444, - "right_pr_number": 68400, + "breadth_similarity": 0.148, + "concentration_similarity": 0.965, + "content_similarity": 0.353, + "left_pr_number": 63586, + "right_pr_number": 69458, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "CHANGELOG.md", - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.536, - "size_similarity": 0.081 + "similarity": 0.344, + "size_similarity": 0.225 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 0.971, - "content_similarity": 0.503, - "left_pr_number": 67179, - "right_pr_number": 68400, + "breadth_similarity": 0.258, + "concentration_similarity": 0.944, + "content_similarity": 0.339, + "left_pr_number": 64388, + "right_pr_number": 69458, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.532, - "size_similarity": 0.322 + "similarity": 0.315, + "size_similarity": 0.035 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.984, - "content_similarity": 0.591, - "left_pr_number": 64020, - "right_pr_number": 66444, + "breadth_similarity": 0.292, + "concentration_similarity": 0.492, + "content_similarity": 0.306, + "left_pr_number": 63586, + "right_pr_number": 64154, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.525, - "size_similarity": 0.117 + "similarity": 0.303, + "size_similarity": 0.236 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.962, - "content_similarity": 0.523, - "left_pr_number": 67179, - "right_pr_number": 68293, + "breadth_similarity": 0.5, + "concentration_similarity": 0.583, + "content_similarity": 0.279, + "left_pr_number": 64154, + "right_pr_number": 64388, "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts" ], - "similarity": 0.525, - "size_similarity": 0.494 + "similarity": 0.28, + "size_similarity": 0.037 } ], "pr_count": 7, "pr_numbers": [ - 53807, - 64020, - 66444, - 66735, - 67179, - 68293, - 68400 + 63586, + 64154, + 64388, + 67892, + 68389, + 68638, + 69458 ], - "recent_pr_count": 5, + "recent_pr_count": 4, "recent_pr_numbers": [ - 66444, - 66735, - 67179, - 68293, - 68400 + 67892, + 68389, + 68638, + 69458 ], - "representative_pr_number": 66735, - "representative_title": "fix(daemon): hand off systemd self-restarts", - "representative_url": "https://github.com/openclaw/openclaw/pull/66735", + "representative_pr_number": 68638, + "representative_title": "fix(loader): avoid memory and compaction side effects during non-activating loads", + "representative_url": "https://github.com/openclaw/openclaw/pull/68638", "shared_directories": [ - "src/daemon", + "src/plugins", "src" ], "shared_filenames": [ - "src/daemon/systemd.test.ts", - "src/daemon/systemd.ts", - "src/daemon/systemd-unit.test.ts", - "src/daemon/systemd-unit.ts", - "CHANGELOG.md" + "src/plugins/loader.test.ts", + "src/plugins/loader.ts", + "src/plugins/registry.ts" ], - "summary": "7 open PRs share weighted file overlap around `src/daemon/systemd.test.ts`, `src/daemon/systemd.ts`, `src/daemon/systemd-unit.test.ts`; representative PR #66735.", - "title": "Scope: fix(daemon): hand off systemd self-restarts" + "summary": "7 open PRs share weighted file overlap around `src/plugins/loader.test.ts`, `src/plugins/loader.ts`, `src/plugins/registry.ts`; representative PR #68638.", + "title": "Scope: fix(loader): avoid memory and compaction side effects during non-activating loads" }, { "authors": [ - "Magicray1217", - "g199209", - "jason-zimmer", - "joeyfrasier", - "zrt-ai-lab" + "Efan404", + "ScientificProgrammer", + "banddude", + "dyaskur" ], - "average_similarity": 0.493, - "cluster_id": "pr-scope-64842-7", + "average_similarity": 0.433, + "cluster_id": "pr-scope-35950-7", "kind": "pr_scope", - "last_activity_at": "2026-04-15T17:11:30Z", + "last_activity_at": "2026-04-20T05:40:30Z", "outside_window_prs": [ { "additions": 88, - "author": "bde1", - "changed_files": 3, - "created_at": "2026-04-11T14:50:02Z", - "deletions": 2, + "author": "TeirikangasAnfra", + "changed_files": 2, + "created_at": "2026-03-05T10:38:36Z", + "deletions": 33, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64842/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64842", + "files_url": "https://github.com/openclaw/openclaw/pull/35950/files", + "html_url": "https://github.com/openclaw/openclaw/pull/35950", "merged": false, - "number": 64842, + "number": 35950, "state": "open", - "title": "fix(tui): clear stale streaming status for completed unbound runs", - "updated_at": "2026-04-11T19:46:14Z" + "title": "fix(googlechat): delivery failures \u2014 typing cleanup, block dedup race, DM thread handling", + "updated_at": "2026-04-17T04:31:32Z" }, { - "additions": 6, - "author": "Yanhu007", - "changed_files": 1, - "created_at": "2026-04-11T15:17:19Z", - "deletions": 2, + "additions": 145, + "author": "MaxJinju", + "changed_files": 5, + "created_at": "2026-03-24T12:43:11Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64862/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64862", + "files_url": "https://github.com/openclaw/openclaw/pull/53676/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53676", "merged": false, - "number": 64862, + "number": 53676, "state": "open", - "title": "fix(tui): recover activity status when no runs are in flight", - "updated_at": "2026-04-11T15:21:23Z" + "title": "fix(googlechat): harden webhook auth matching and diagnostics", + "updated_at": "2026-03-24T20:15:29Z" + }, + { + "additions": 108, + "author": "colin-lgtm", + "changed_files": 19, + "created_at": "2026-04-12T21:59:13Z", + "deletions": 88, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65570/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65570", + "merged": false, + "number": 65570, + "state": "open", + "title": "fix(googlechat): resolve domexception startup crash and prevent silent text loss", + "updated_at": "2026-04-17T14:30:41Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.942, - "left_pr_number": 64862, - "right_pr_number": 67302, + "breadth_similarity": 0.5, + "concentration_similarity": 0.959, + "content_similarity": 0.966, + "left_pr_number": 35950, + "right_pr_number": 68614, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.884, - "size_similarity": 0.5 + "similarity": 0.856, + "size_similarity": 0.545 }, { - "breadth_similarity": 0.833, + "breadth_similarity": 0.8, "concentration_similarity": 1.0, - "content_similarity": 0.69, - "left_pr_number": 66192, - "right_pr_number": 66289, + "content_similarity": 0.584, + "left_pr_number": 53676, + "right_pr_number": 67221, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.test.ts", - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/auth.test.ts", + "extensions/googlechat/src/auth.ts" ], - "similarity": 0.756, - "size_similarity": 0.931 + "similarity": 0.669, + "size_similarity": 0.868 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.989, - "content_similarity": 0.635, - "left_pr_number": 64842, - "right_pr_number": 66192, + "breadth_similarity": 0.139, + "concentration_similarity": 0.833, + "content_similarity": 0.593, + "left_pr_number": 68614, + "right_pr_number": 68967, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.test.ts", - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.686, - "size_similarity": 0.891 + "similarity": 0.612, + "size_similarity": 0.946 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.945, - "content_similarity": 0.728, - "left_pr_number": 66146, - "right_pr_number": 66192, + "breadth_similarity": 0.278, + "concentration_similarity": 0.875, + "content_similarity": 0.577, + "left_pr_number": 35950, + "right_pr_number": 68967, "shared_directories": [ - "src/tui", + "extensions/googlechat/src", + "extensions/googlechat", + "extensions", "src" ], "shared_filenames": [ - "src/tui/tui-event-handlers.test.ts", - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.661, - "size_similarity": 0.306 + "similarity": 0.562, + "size_similarity": 0.576 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.989, - "content_similarity": 0.556, - "left_pr_number": 64842, - "right_pr_number": 66289, + "concentration_similarity": 0.959, + "content_similarity": 0.472, + "left_pr_number": 35950, + "right_pr_number": 67055, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.test.ts", - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.658, - "size_similarity": 0.957 + "similarity": 0.531, + "size_similarity": 0.521 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.957, - "content_similarity": 0.65, - "left_pr_number": 64842, - "right_pr_number": 66146, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.507, + "left_pr_number": 67055, + "right_pr_number": 68614, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.test.ts", - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.643, - "size_similarity": 0.273 + "similarity": 0.523, + "size_similarity": 0.284 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.945, - "content_similarity": 0.634, - "left_pr_number": 66146, - "right_pr_number": 66289, + "breadth_similarity": 0.065, + "concentration_similarity": 0.403, + "content_similarity": 0.434, + "left_pr_number": 65570, + "right_pr_number": 68614, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.test.ts", - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.609, - "size_similarity": 0.285 + "similarity": 0.463, + "size_similarity": 0.883 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.502, - "left_pr_number": 64862, - "right_pr_number": 66400, + "breadth_similarity": 0.13, + "concentration_similarity": 0.444, + "content_similarity": 0.429, + "left_pr_number": 35950, + "right_pr_number": 65570, "shared_directories": [ - "src/tui", + "extensions/googlechat/src", + "src/auto-reply/reply", + "extensions/googlechat", + "src/auto-reply", + "extensions", "src" ], "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.543, - "size_similarity": 0.444 + "similarity": 0.428, + "size_similarity": 0.617 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.667, "concentration_similarity": 1.0, - "content_similarity": 0.443, - "left_pr_number": 66400, - "right_pr_number": 67302, + "content_similarity": 0.251, + "left_pr_number": 67221, + "right_pr_number": 68614, "shared_directories": [ - "src/tui", - "src" - ], - "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], - "similarity": 0.469, - "size_similarity": 0.222 + "shared_filenames": [], + "similarity": 0.41, + "size_similarity": 0.784 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.945, - "content_similarity": 0.511, - "left_pr_number": 64862, - "right_pr_number": 66146, + "breadth_similarity": 0.6, + "concentration_similarity": 1.0, + "content_similarity": 0.276, + "left_pr_number": 53676, + "right_pr_number": 68614, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.45, - "size_similarity": 0.024 + "similarity": 0.405, + "size_similarity": 0.68 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 1.0, - "content_similarity": 0.423, - "left_pr_number": 64862, - "right_pr_number": 66289, + "breadth_similarity": 0.45, + "concentration_similarity": 0.959, + "content_similarity": 0.271, + "left_pr_number": 35950, + "right_pr_number": 53676, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.426, - "size_similarity": 0.085 + "similarity": 0.403, + "size_similarity": 0.801 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.945, - "content_similarity": 0.405, - "left_pr_number": 66146, - "right_pr_number": 66400, + "breadth_similarity": 0.468, + "concentration_similarity": 0.57, + "content_similarity": 0.264, + "left_pr_number": 65570, + "right_pr_number": 68967, "shared_directories": [ - "src/tui", + "extensions/googlechat/src", + "extensions/googlechat", + "docs", + "extensions", "src" ], "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.397, - "size_similarity": 0.055 + "similarity": 0.4, + "size_similarity": 0.933 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.945, - "content_similarity": 0.433, - "left_pr_number": 66146, - "right_pr_number": 67302, + "breadth_similarity": 0.583, + "concentration_similarity": 0.959, + "content_similarity": 0.247, + "left_pr_number": 35950, + "right_pr_number": 67221, "shared_directories": [ - "src/tui", - "src" - ], - "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], - "similarity": 0.394, - "size_similarity": 0.012 + "shared_filenames": [], + "similarity": 0.383, + "size_similarity": 0.695 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 1.0, - "content_similarity": 0.367, - "left_pr_number": 66289, - "right_pr_number": 67302, + "breadth_similarity": 0.194, + "concentration_similarity": 0.833, + "content_similarity": 0.344, + "left_pr_number": 67055, + "right_pr_number": 68967, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.38, - "size_similarity": 0.043 + "similarity": 0.347, + "size_similarity": 0.3 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.325, - "left_pr_number": 64862, - "right_pr_number": 66192, + "breadth_similarity": 0.361, + "concentration_similarity": 0.833, + "content_similarity": 0.23, + "left_pr_number": 53676, + "right_pr_number": 68967, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.364, - "size_similarity": 0.079 + "similarity": 0.346, + "size_similarity": 0.719 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.328, - "left_pr_number": 66192, - "right_pr_number": 67302, + "content_similarity": 0.222, + "left_pr_number": 67055, + "right_pr_number": 67221, "shared_directories": [ - "src/tui", - "src" - ], - "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], - "similarity": 0.361, - "size_similarity": 0.04 + "shared_filenames": [], + "similarity": 0.343, + "size_similarity": 0.362 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.989, - "content_similarity": 0.357, - "left_pr_number": 64842, - "right_pr_number": 64862, + "breadth_similarity": 0.7, + "concentration_similarity": 1.0, + "content_similarity": 0.221, + "left_pr_number": 53676, + "right_pr_number": 67055, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.355, - "size_similarity": 0.089 + "similarity": 0.338, + "size_similarity": 0.417 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.989, - "content_similarity": 0.358, - "left_pr_number": 64842, - "right_pr_number": 67302, + "breadth_similarity": 0.25, + "concentration_similarity": 0.833, + "content_similarity": 0.206, + "left_pr_number": 67221, + "right_pr_number": 68967, "shared_directories": [ - "src/tui", - "src" - ], - "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], - "similarity": 0.349, - "size_similarity": 0.044 + "shared_filenames": [], + "similarity": 0.335, + "size_similarity": 0.829 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.263, - "left_pr_number": 66289, - "right_pr_number": 66400, + "breadth_similarity": 0.117, + "concentration_similarity": 0.403, + "content_similarity": 0.126, + "left_pr_number": 65570, + "right_pr_number": 67221, "shared_directories": [ - "src/tui", - "src" - ], - "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], - "similarity": 0.346, - "size_similarity": 0.191 + "shared_filenames": [], + "similarity": 0.253, + "size_similarity": 0.888 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.21, - "left_pr_number": 66192, - "right_pr_number": 66400, + "breadth_similarity": 0.17, + "concentration_similarity": 0.403, + "content_similarity": 0.138, + "left_pr_number": 53676, + "right_pr_number": 65570, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.324, - "size_similarity": 0.178 + "similarity": 0.249, + "size_similarity": 0.77 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.989, - "content_similarity": 0.239, - "left_pr_number": 64842, - "right_pr_number": 66400, + "breadth_similarity": 0.091, + "concentration_similarity": 0.403, + "content_similarity": 0.232, + "left_pr_number": 65570, + "right_pr_number": 67055, "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions" ], "shared_filenames": [ - "src/tui/tui-event-handlers.ts" + "extensions/googlechat/src/monitor.ts" ], - "similarity": 0.305, - "size_similarity": 0.2 + "similarity": 0.24, + "size_similarity": 0.321 } ], "pr_count": 7, "pr_numbers": [ - 64842, - 64862, - 66146, - 66192, - 66289, - 66400, - 67302 + 35950, + 53676, + 65570, + 67055, + 67221, + 68614, + 68967 ], - "recent_pr_count": 5, + "recent_pr_count": 4, "recent_pr_numbers": [ - 66146, - 66192, - 66289, - 66400, - 67302 + 67055, + 67221, + 68614, + 68967 ], - "representative_pr_number": 66289, - "representative_title": "fix(tui): resolve streaming status stuck indefinitely after run completes", - "representative_url": "https://github.com/openclaw/openclaw/pull/66289", + "representative_pr_number": 68614, + "representative_title": "fix(googlechat): add timeout and fallback for deferred responses", + "representative_url": "https://github.com/openclaw/openclaw/pull/68614", "shared_directories": [ - "src/tui", - "src" + "extensions/googlechat/src", + "extensions/googlechat", + "extensions", + "src", + "src/auto-reply/reply", + "src/auto-reply", + "docs" ], "shared_filenames": [ - "src/tui/tui-event-handlers.ts", - "src/tui/tui-event-handlers.test.ts" + "extensions/googlechat/src/monitor.ts", + "extensions/googlechat/src/auth.test.ts", + "extensions/googlechat/src/auth.ts" ], - "summary": "7 open PRs share weighted file overlap around `src/tui/tui-event-handlers.ts`, `src/tui/tui-event-handlers.test.ts`; representative PR #66289.", - "title": "Scope: fix(tui): resolve streaming status stuck indefinitely after run completes" + "summary": "7 open PRs share weighted file overlap around `extensions/googlechat/src/monitor.ts`, `extensions/googlechat/src/auth.test.ts`, `extensions/googlechat/src/auth.ts`; representative PR #68614.", + "title": "Scope: fix(googlechat): add timeout and fallback for deferred responses" }, { "authors": [ - "manhhai999" + "Eruditi", + "Mlightsnow", + "xuanmingguo" ], - "average_similarity": 0.621, - "cluster_id": "pr-scope-66084-5", + "average_similarity": 0.525, + "cluster_id": "pr-scope-53762-6", "kind": "pr_scope", - "last_activity_at": "2026-04-17T20:43:28Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-21T15:21:51Z", + "outside_window_prs": [ + { + "additions": 59, + "author": "amitgaur", + "changed_files": 3, + "created_at": "2026-03-24T15:16:57Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53762/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53762", + "merged": false, + "number": 53762, + "state": "open", + "title": "fix(telegram): flush buffered final answer when reasoning delivery is skipped [AI-assisted]", + "updated_at": "2026-03-24T20:15:29Z" + }, + { + "additions": 34, + "author": "ShionEria", + "changed_files": 2, + "created_at": "2026-04-10T13:04:25Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64314/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64314", + "merged": false, + "number": 64314, + "state": "open", + "title": "fix(telegram): keep tool media after text preview", + "updated_at": "2026-04-10T13:05:32Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.978, - "concentration_similarity": 0.999, - "content_similarity": 0.997, - "left_pr_number": 66087, - "right_pr_number": 66431, + "breadth_similarity": 0.708, + "concentration_similarity": 0.699, + "content_similarity": 0.748, + "left_pr_number": 69652, + "right_pr_number": 69657, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", - "apps/macos/Sources/OpenClawProtocol", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", - "ui/src/i18n/locales", - "ui/src/styles/chat", - "ui/src/ui/chat", - "ui/src/ui/controllers", - "ui/src/ui/views", - "apps/macos/Sources" + "extensions/telegram/src", + "extensions/telegram", + "extensions", + "src" ], "shared_filenames": [ - "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift", - "docs/.generated/plugin-sdk-api-baseline.sha256", - "extensions/telegram/src/bot.ts", - "src/agents/bash-tools.exec-approval-request.test.ts", - "src/agents/bash-tools.exec-approval-request.ts", - "src/agents/bash-tools.exec-host-gateway.test.ts", - "src/agents/bash-tools.exec-host-gateway.ts", - "src/agents/bash-tools.exec-host-node.test.ts", - "src/agents/bash-tools.exec-host-node.ts" + "extensions/telegram/src/bot-message-dispatch.test.ts", + "extensions/telegram/src/bot-message-dispatch.ts" ], - "similarity": 0.995, - "size_similarity": 0.996 + "similarity": 0.731, + "size_similarity": 0.675 }, { - "breadth_similarity": 0.839, - "concentration_similarity": 0.977, - "content_similarity": 0.655, - "left_pr_number": 66087, - "right_pr_number": 66428, + "breadth_similarity": 0.75, + "concentration_similarity": 0.926, + "content_similarity": 0.687, + "left_pr_number": 69022, + "right_pr_number": 69652, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", - "apps/macos/Sources/OpenClawProtocol", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", - "ui/src/i18n/locales", - "ui/src/ui/controllers", - "ui/src/ui/views", - "apps/macos/Sources", - "apps/shared/OpenClawKit", - "extensions/telegram/src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift", - "extensions/telegram/src/bot.ts", - "src/agents/bash-tools.exec-approval-request.ts", - "src/auto-reply/commands-registry.shared.test.ts", - "src/auto-reply/commands-registry.shared.ts", - "src/cli/program/command-registry-core.ts", - "src/cli/program/command-registry.test.ts", - "src/cli/program/core-command-descriptors.ts", - "src/cli/program/register.status-health-sessions.test.ts" + "extensions/telegram/src/bot-message-dispatch.test.ts", + "extensions/telegram/src/bot-message-dispatch.ts" ], - "similarity": 0.738, - "size_similarity": 0.98 + "similarity": 0.712, + "size_similarity": 0.73 }, { - "breadth_similarity": 0.821, - "concentration_similarity": 0.976, - "content_similarity": 0.653, - "left_pr_number": 66428, - "right_pr_number": 66431, + "breadth_similarity": 0.542, + "concentration_similarity": 0.625, + "content_similarity": 0.569, + "left_pr_number": 69022, + "right_pr_number": 69657, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", - "apps/macos/Sources/OpenClawProtocol", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", - "ui/src/i18n/locales", - "ui/src/ui/controllers", - "ui/src/ui/views", - "apps/macos/Sources", - "apps/shared/OpenClawKit", - "extensions/telegram/src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift", - "extensions/telegram/src/bot.ts", - "src/agents/bash-tools.exec-approval-request.ts", - "src/auto-reply/commands-registry.shared.test.ts", - "src/auto-reply/commands-registry.shared.ts", - "src/cli/program/command-registry-core.ts", - "src/cli/program/command-registry.test.ts", - "src/cli/program/core-command-descriptors.ts", - "src/cli/program/register.status-health-sessions.test.ts" + "extensions/telegram/src/bot-message-dispatch.test.ts", + "extensions/telegram/src/bot-message-dispatch.ts" ], - "similarity": 0.734, - "size_similarity": 0.976 + "similarity": 0.623, + "size_similarity": 0.925 }, { - "breadth_similarity": 0.868, - "concentration_similarity": 0.77, - "content_similarity": 0.66, - "left_pr_number": 66419, - "right_pr_number": 66428, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.488, + "left_pr_number": 64314, + "right_pr_number": 69022, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", - "apps/macos/Sources/OpenClawProtocol", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", - "ui/src/i18n/.i18n", - "ui/src/i18n/lib", - "ui/src/i18n/locales", - "ui/src/i18n/test", - "ui/src/ui/controllers", - "ui/src/ui/views" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift", - "extensions/telegram/src/bot.ts", - "scripts/control-ui-i18n.ts", - "src/agents/bash-tools.exec-approval-request.ts", - "src/auto-reply/commands-registry.shared.test.ts", - "src/auto-reply/commands-registry.shared.ts", - "src/cli/program/command-registry-core.ts", - "src/cli/program/command-registry.test.ts", - "src/cli/program/core-command-descriptors.ts" + "extensions/telegram/src/bot-message-dispatch.test.ts" ], - "similarity": 0.628, - "size_similarity": 0.27 + "similarity": 0.614, + "size_similarity": 0.925 }, { - "breadth_similarity": 0.553, - "concentration_similarity": 0.873, - "content_similarity": 0.5, - "left_pr_number": 66084, - "right_pr_number": 66419, + "breadth_similarity": 0.75, + "concentration_similarity": 0.983, + "content_similarity": 0.523, + "left_pr_number": 53762, + "right_pr_number": 69022, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", - "apps/macos/Sources/OpenClawProtocol", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", - "ui/src/i18n/.i18n", - "ui/src/i18n/lib", - "ui/src/i18n/locales", - "ui/src/i18n/test", - "ui/src/ui/controllers", - "ui/src/ui/views" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift", - "extensions/telegram/src/bot.ts", - "scripts/control-ui-i18n.ts", - "src/agents/bash-tools.exec-approval-request.ts", - "src/auto-reply/commands-registry.shared.test.ts", - "src/auto-reply/commands-registry.shared.ts", - "src/cli/program/command-registry-core.ts", - "src/cli/program/command-registry.test.ts", - "src/cli/program/core-command-descriptors.ts" + "extensions/telegram/src/bot-message-dispatch.test.ts", + "extensions/telegram/src/bot-message-dispatch.ts" ], - "similarity": 0.598, - "size_similarity": 0.989 + "similarity": 0.584, + "size_similarity": 0.627 }, { - "breadth_similarity": 0.483, - "concentration_similarity": 0.897, - "content_similarity": 0.606, - "left_pr_number": 66084, - "right_pr_number": 66428, + "breadth_similarity": 0.583, + "concentration_similarity": 0.983, + "content_similarity": 0.514, + "left_pr_number": 53762, + "right_pr_number": 64314, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", - "apps/macos/Sources/OpenClawProtocol", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", - "ui/src/i18n/.i18n", - "ui/src/i18n/lib", - "ui/src/i18n/locales", - "ui/src/i18n/test", - "ui/src/ui/controllers", - "ui/src/ui/views" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift", - "extensions/telegram/src/bot.ts", - "scripts/control-ui-i18n.ts", - "src/agents/bash-tools.exec-approval-request.ts", - "src/auto-reply/commands-registry.shared.test.ts", - "src/auto-reply/commands-registry.shared.ts", - "src/cli/program/command-registry-core.ts", - "src/cli/program/command-registry.test.ts", - "src/cli/program/core-command-descriptors.ts" + "extensions/telegram/src/bot-message-dispatch.test.ts" ], - "similarity": 0.557, - "size_similarity": 0.267 + "similarity": 0.569, + "size_similarity": 0.678 }, { - "breadth_similarity": 0.593, - "concentration_similarity": 0.873, - "content_similarity": 0.59, - "left_pr_number": 66084, - "right_pr_number": 66431, + "breadth_similarity": 1.0, + "concentration_similarity": 0.943, + "content_similarity": 0.496, + "left_pr_number": 53762, + "right_pr_number": 69652, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", - "apps/macos/Sources/OpenClawProtocol", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", - "ui/src/i18n/locales", - "ui/src/styles/chat", - "ui/src/ui/chat", - "ui/src/ui/controllers", - "ui/src/ui/views", - "apps/macos/Sources" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift", - "docs/.generated/plugin-sdk-api-baseline.sha256", - "extensions/telegram/src/bot.ts", - "src/agents/bash-tools.exec-approval-request.test.ts", - "src/agents/bash-tools.exec-approval-request.ts", - "src/agents/bash-tools.exec-host-gateway.test.ts", - "src/agents/bash-tools.exec-host-gateway.ts", - "src/agents/bash-tools.exec-host-node.test.ts", - "src/agents/bash-tools.exec-host-node.ts" + "extensions/telegram/src/bot-message-dispatch.test.ts", + "extensions/telegram/src/bot-message-dispatch.ts" ], - "similarity": 0.557, - "size_similarity": 0.273 + "similarity": 0.563, + "size_similarity": 0.458 }, { - "breadth_similarity": 0.578, - "concentration_similarity": 0.874, - "content_similarity": 0.591, - "left_pr_number": 66084, - "right_pr_number": 66087, + "breadth_similarity": 0.583, + "concentration_similarity": 0.926, + "content_similarity": 0.456, + "left_pr_number": 64314, + "right_pr_number": 69652, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", - "apps/macos/Sources/OpenClawProtocol", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", - "ui/src/i18n/locales", - "ui/src/styles/chat", - "ui/src/ui/chat", - "ui/src/ui/controllers", - "ui/src/ui/views", - "apps/macos/Sources" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift", - "docs/.generated/plugin-sdk-api-baseline.sha256", - "extensions/telegram/src/bot.ts", - "src/agents/bash-tools.exec-approval-request.test.ts", - "src/agents/bash-tools.exec-approval-request.ts", - "src/agents/bash-tools.exec-host-gateway.test.ts", - "src/agents/bash-tools.exec-host-gateway.ts", - "src/agents/bash-tools.exec-host-node.test.ts", - "src/agents/bash-tools.exec-host-node.ts" + "extensions/telegram/src/bot-message-dispatch.test.ts" ], - "similarity": 0.556, - "size_similarity": 0.272 + "similarity": 0.525, + "size_similarity": 0.675 }, { - "breadth_similarity": 0.841, - "concentration_similarity": 0.746, - "content_similarity": 0.373, - "left_pr_number": 66087, - "right_pr_number": 66419, + "breadth_similarity": 0.708, + "concentration_similarity": 0.642, + "content_similarity": 0.41, + "left_pr_number": 53762, + "right_pr_number": 69657, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", - "apps/macos/Sources/OpenClawProtocol", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", - "ui/src/i18n/locales", - "ui/src/ui/controllers", - "ui/src/ui/views", - "apps/macos/Sources", - "apps/shared/OpenClawKit", - "extensions/telegram/src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift", - "extensions/telegram/src/bot.ts", - "src/agents/bash-tools.exec-approval-request.ts", - "src/auto-reply/commands-registry.shared.test.ts", - "src/auto-reply/commands-registry.shared.ts", - "src/cli/program/command-registry-core.ts", - "src/cli/program/command-registry.test.ts", - "src/cli/program/core-command-descriptors.ts", - "src/cli/program/register.status-health-sessions.test.ts" + "extensions/telegram/src/bot-message-dispatch.test.ts", + "extensions/telegram/src/bot-message-dispatch.ts" ], - "similarity": 0.423, - "size_similarity": 0.275 + "similarity": 0.492, + "size_similarity": 0.678 }, { - "breadth_similarity": 0.831, - "concentration_similarity": 0.746, - "content_similarity": 0.372, - "left_pr_number": 66419, - "right_pr_number": 66431, + "breadth_similarity": 0.417, + "concentration_similarity": 0.625, + "content_similarity": 0.378, + "left_pr_number": 64314, + "right_pr_number": 69657, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", - "apps/macos/Sources/OpenClawProtocol", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", - "ui/src/i18n/locales", - "ui/src/ui/controllers", - "ui/src/ui/views", - "apps/macos/Sources", - "apps/shared/OpenClawKit", - "extensions/telegram/src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift", - "extensions/telegram/src/bot.ts", - "src/agents/bash-tools.exec-approval-request.ts", - "src/auto-reply/commands-registry.shared.test.ts", - "src/auto-reply/commands-registry.shared.ts", - "src/cli/program/command-registry-core.ts", - "src/cli/program/command-registry.test.ts", - "src/cli/program/core-command-descriptors.ts", - "src/cli/program/register.status-health-sessions.test.ts" + "extensions/telegram/src/bot-message-dispatch.test.ts" ], - "similarity": 0.422, - "size_similarity": 0.276 + "similarity": 0.487, + "size_similarity": 1.0 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.983, + "content_similarity": 0.327, + "left_pr_number": 53762, + "right_pr_number": 66932, + "shared_directories": [ + "extensions/telegram/src", + "extensions/telegram", + "extensions" + ], + "shared_filenames": [ + "extensions/telegram/src/bot-message-dispatch.ts" + ], + "similarity": 0.441, + "size_similarity": 0.814 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.285, + "left_pr_number": 66932, + "right_pr_number": 69022, + "shared_directories": [ + "extensions/telegram/src", + "extensions/telegram", + "extensions" + ], + "shared_filenames": [ + "extensions/telegram/src/bot-message-dispatch.ts" + ], + "similarity": 0.432, + "size_similarity": 0.771 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.926, + "content_similarity": 0.294, + "left_pr_number": 66932, + "right_pr_number": 69652, + "shared_directories": [ + "extensions/telegram/src", + "extensions/telegram", + "extensions" + ], + "shared_filenames": [ + "extensions/telegram/src/bot-message-dispatch.ts" + ], + "similarity": 0.378, + "size_similarity": 0.562 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.16, + "left_pr_number": 64314, + "right_pr_number": 66932, + "shared_directories": [ + "extensions/telegram/src", + "extensions/telegram", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.362, + "size_similarity": 0.833 + }, + { + "breadth_similarity": 0.292, + "concentration_similarity": 0.625, + "content_similarity": 0.244, + "left_pr_number": 66932, + "right_pr_number": 69657, + "shared_directories": [ + "extensions/telegram/src", + "extensions/telegram", + "extensions" + ], + "shared_filenames": [ + "extensions/telegram/src/bot-message-dispatch.ts" + ], + "similarity": 0.356, + "size_similarity": 0.833 } ], - "pr_count": 5, + "pr_count": 6, "pr_numbers": [ - 66084, - 66087, - 66419, - 66428, - 66431 + 53762, + 64314, + 66932, + 69022, + 69652, + 69657 ], - "recent_pr_count": 5, + "recent_pr_count": 4, "recent_pr_numbers": [ - 66084, - 66087, - 66419, - 66428, - 66431 + 66932, + 69022, + 69652, + 69657 ], - "representative_pr_number": 66087, - "representative_title": "Integrate/release v2026.4.10 safe 20260412", - "representative_url": "https://github.com/openclaw/openclaw/pull/66087", + "representative_pr_number": 69022, + "representative_title": "Fix: apply humanDelay between Telegram streamed block replies (Resolves #68945)", + "representative_url": "https://github.com/openclaw/openclaw/pull/69022", "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", - "ui/src/i18n/locales", - "apps/macos/Sources/OpenClawProtocol", - "ui/src/ui/controllers", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", - "ui/src/ui/views", - "ui/src/i18n" + "extensions/telegram/src", + "extensions/telegram", + "extensions", + "src" ], "shared_filenames": [ - "src/auto-reply/commands-registry.shared.test.ts", - "src/commands/plans.test.ts", - "src/commands/plans.ts", - "src/gateway/server-methods/plans.test.ts", - "src/gateway/server-methods/plans.ts", - "src/gateway/server-methods/tools-catalog.test.ts", - "src/plans/plan-registry.summary.ts", - "src/plans/plan-registry.test.ts" + "extensions/telegram/src/bot-message-dispatch.ts", + "extensions/telegram/src/bot-message-dispatch.test.ts" ], - "summary": "5 open PRs share weighted file overlap around `src/auto-reply/commands-registry.shared.test.ts`, `src/commands/plans.test.ts`, `src/commands/plans.ts`; representative PR #66087.", - "title": "Scope: Integrate/release v2026.4.10 safe 20260412" + "summary": "6 open PRs share weighted file overlap around `extensions/telegram/src/bot-message-dispatch.ts`, `extensions/telegram/src/bot-message-dispatch.test.ts`; representative PR #69022.", + "title": "Scope: Fix: apply humanDelay between Telegram streamed block replies (Resolves #68945)" }, { "authors": [ - "central-hd-ytakeda", - "dorukardahan", - "estack-takeda-yorichika", - "stroupaloop" + "alexlomt", + "chrisabad", + "zqchris" ], - "average_similarity": 0.6, - "cluster_id": "pr-scope-65831-5", + "average_similarity": 0.509, + "cluster_id": "pr-scope-31909-6", "kind": "pr_scope", - "last_activity_at": "2026-04-19T01:21:48Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-19T17:26:47Z", + "outside_window_prs": [ + { + "additions": 255, + "author": "jduartedj", + "changed_files": 2, + "created_at": "2026-03-02T16:40:30Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/31909/files", + "html_url": "https://github.com/openclaw/openclaw/pull/31909", + "merged": false, + "number": 31909, + "state": "open", + "title": "fix(agents): ensure parallel tool results have correct parentId", + "updated_at": "2026-04-20T09:07:35Z" + }, + { + "additions": 105, + "author": "dashhuang", + "changed_files": 9, + "created_at": "2026-04-09T10:45:35Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/63696/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63696", + "merged": false, + "number": 63696, + "state": "open", + "title": "fix(agents): suppress duplicate user persistence on fallback retries", + "updated_at": "2026-04-12T11:00:40Z" + } + ], "pairwise": [ { "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 1.0, - "left_pr_number": 65831, - "right_pr_number": 65881, + "concentration_similarity": 0.958, + "content_similarity": 0.991, + "left_pr_number": 67962, + "right_pr_number": 68048, "shared_directories": [ - "src/agents/pi-embedded-runner/run", "src/agents/pi-embedded-runner", + "docs/.generated", "src/agents", - "src/plugins", + "src/config", + "docs", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/setup.ts", - "src/plugins/hook-before-agent-start.types.ts" + "docs/.generated/config-baseline.sha256", + "src/agents/pi-embedded-runner/tool-result-truncation.ts", + "src/agents/session-tool-result-guard-wrapper.ts", + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts", + "src/config/schema.base.generated.ts", + "src/config/schema.help.ts", + "src/config/schema.labels.ts", + "src/config/types.agent-defaults.ts", + "src/config/zod-schema.agent-runtime.ts" ], - "similarity": 1.0, - "size_similarity": 1.0 + "similarity": 0.975, + "size_similarity": 0.884 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 1.0, - "left_pr_number": 65831, - "right_pr_number": 67322, + "breadth_similarity": 0.225, + "concentration_similarity": 0.533, + "content_similarity": 0.629, + "left_pr_number": 31909, + "right_pr_number": 68048, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", "src/agents", - "src/plugins", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/setup.ts", - "src/plugins/hook-before-agent-start.types.ts" + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 1.0, - "size_similarity": 1.0 + "similarity": 0.598, + "size_similarity": 0.725 }, { "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 1.0, - "left_pr_number": 65881, - "right_pr_number": 67322, + "concentration_similarity": 0.947, + "content_similarity": 0.542, + "left_pr_number": 68372, + "right_pr_number": 69033, "shared_directories": [ - "src/agents/pi-embedded-runner/run", "src/agents/pi-embedded-runner", "src/agents", - "src/plugins", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/setup.ts", - "src/plugins/hook-before-agent-start.types.ts" + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 1.0, - "size_similarity": 1.0 + "similarity": 0.585, + "size_similarity": 0.386 }, { - "breadth_similarity": 0.522, - "concentration_similarity": 0.94, - "content_similarity": 0.569, - "left_pr_number": 68621, - "right_pr_number": 68734, + "breadth_similarity": 0.225, + "concentration_similarity": 0.49, + "content_similarity": 0.577, + "left_pr_number": 31909, + "right_pr_number": 67962, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", "src/agents", - "src/plugins", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/setup.test.ts", - "src/agents/pi-embedded-runner/run/setup.ts", - "src/plugins/hook-before-agent-start.types.ts", - "src/plugins/hooks.ts" + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 0.584, - "size_similarity": 0.576 + "similarity": 0.574, + "size_similarity": 0.821 }, { - "breadth_similarity": 0.688, - "concentration_similarity": 0.654, - "content_similarity": 0.52, - "left_pr_number": 65831, - "right_pr_number": 68734, + "breadth_similarity": 0.5, + "concentration_similarity": 0.757, + "content_similarity": 0.545, + "left_pr_number": 31909, + "right_pr_number": 69033, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", "src/agents", - "src/plugins", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/setup.ts", - "src/plugins/hook-before-agent-start.types.ts" + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 0.484, - "size_similarity": 0.122 + "similarity": 0.551, + "size_similarity": 0.547 }, { - "breadth_similarity": 0.688, - "concentration_similarity": 0.654, - "content_similarity": 0.52, - "left_pr_number": 65881, - "right_pr_number": 68734, + "breadth_similarity": 0.45, + "concentration_similarity": 0.829, + "content_similarity": 0.504, + "left_pr_number": 68048, + "right_pr_number": 68372, "shared_directories": [ - "src/agents/pi-embedded-runner/run", "src/agents/pi-embedded-runner", "src/agents", - "src/plugins", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/setup.ts", - "src/plugins/hook-before-agent-start.types.ts" + "src/agents/pi-embedded-runner/tool-result-truncation.ts", + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 0.484, - "size_similarity": 0.122 + "similarity": 0.462, + "size_similarity": 0.153 }, { - "breadth_similarity": 0.688, - "concentration_similarity": 0.654, - "content_similarity": 0.52, - "left_pr_number": 67322, - "right_pr_number": 68734, + "breadth_similarity": 0.45, + "concentration_similarity": 0.787, + "content_similarity": 0.5, + "left_pr_number": 67962, + "right_pr_number": 68372, "shared_directories": [ - "src/agents/pi-embedded-runner/run", "src/agents/pi-embedded-runner", "src/agents", - "src/plugins", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/setup.ts", - "src/plugins/hook-before-agent-start.types.ts" + "src/agents/pi-embedded-runner/tool-result-truncation.ts", + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 0.484, - "size_similarity": 0.122 + "similarity": 0.46, + "size_similarity": 0.173 }, { - "breadth_similarity": 0.33, - "concentration_similarity": 0.714, - "content_similarity": 0.345, - "left_pr_number": 65831, - "right_pr_number": 68621, + "breadth_similarity": 0.45, + "concentration_similarity": 0.733, + "content_similarity": 0.434, + "left_pr_number": 67962, + "right_pr_number": 69033, "shared_directories": [ - "src/agents/pi-embedded-runner/run", "src/agents/pi-embedded-runner", "src/agents", - "src/plugins", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/setup.ts", - "src/plugins/hook-before-agent-start.types.ts" + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 0.321, - "size_similarity": 0.071 + "similarity": 0.453, + "size_similarity": 0.449 }, { - "breadth_similarity": 0.33, - "concentration_similarity": 0.714, - "content_similarity": 0.345, - "left_pr_number": 65881, - "right_pr_number": 68621, + "breadth_similarity": 0.45, + "concentration_similarity": 0.775, + "content_similarity": 0.442, + "left_pr_number": 68048, + "right_pr_number": 69033, "shared_directories": [ - "src/agents/pi-embedded-runner/run", "src/agents/pi-embedded-runner", "src/agents", - "src/plugins", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/setup.ts", - "src/plugins/hook-before-agent-start.types.ts" + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 0.321, - "size_similarity": 0.071 + "similarity": 0.453, + "size_similarity": 0.397 }, { - "breadth_similarity": 0.33, - "concentration_similarity": 0.714, - "content_similarity": 0.345, - "left_pr_number": 67322, - "right_pr_number": 68621, + "breadth_similarity": 0.472, + "concentration_similarity": 0.89, + "content_similarity": 0.353, + "left_pr_number": 63696, + "right_pr_number": 69033, "shared_directories": [ - "src/agents/pi-embedded-runner/run", "src/agents/pi-embedded-runner", "src/agents", - "src/plugins", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/setup.ts", - "src/plugins/hook-before-agent-start.types.ts" - ], - "similarity": 0.321, - "size_similarity": 0.071 - } - ], - "pr_count": 5, - "pr_numbers": [ - 65831, - 65881, - 67322, - 68621, - 68734 - ], - "recent_pr_count": 5, - "recent_pr_numbers": [ - 65831, - 65881, - 67322, - 68621, - 68734 - ], - "representative_pr_number": 65831, - "representative_title": "feat(plugins): pass attachment metadata to before_model_resolve hook", - "representative_url": "https://github.com/openclaw/openclaw/pull/65831", - "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/plugins", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/plugins/hook-before-agent-start.types.ts", - "src/agents/pi-embedded-runner/run/setup.ts", - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/setup.test.ts", - "src/plugins/hooks.ts" - ], - "summary": "5 open PRs share weighted file overlap around `src/plugins/hook-before-agent-start.types.ts`, `src/agents/pi-embedded-runner/run/setup.ts`, `src/agents/pi-embedded-runner/run.ts`; representative PR #65831.", - "title": "Scope: feat(plugins): pass attachment metadata to before_model_resolve hook" - }, - { - "authors": [ - "100yenadmin" - ], - "average_similarity": 0.551, - "cluster_id": "pr-scope-66371-5", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T17:02:14Z", - "outside_window_prs": [], - "pairwise": [ - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.983, - "left_pr_number": 66372, - "right_pr_number": 66375, - "shared_directories": [ - "extensions/openai", - "extensions" - ], - "shared_filenames": [ - "extensions/openai/prompt-overlay.ts" + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 0.928, - "size_similarity": 0.6 + "similarity": 0.451, + "size_similarity": 0.75 }, { "breadth_similarity": 0.5, - "concentration_similarity": 0.891, - "content_similarity": 0.945, - "left_pr_number": 66371, - "right_pr_number": 66373, - "shared_directories": [ - "extensions/openai", - "extensions" - ], - "shared_filenames": [ - "extensions/openai/index.test.ts", - "extensions/openai/prompt-overlay.ts" - ], - "similarity": 0.878, - "size_similarity": 0.812 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.641, - "left_pr_number": 66371, - "right_pr_number": 66372, - "shared_directories": [ - "extensions/openai", - "extensions" - ], - "shared_filenames": [ - "extensions/openai/prompt-overlay.ts" - ], - "similarity": 0.617, - "size_similarity": 0.288 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.583, - "left_pr_number": 66371, - "right_pr_number": 66375, - "shared_directories": [ - "extensions/openai", - "extensions" - ], - "shared_filenames": [ - "extensions/openai/prompt-overlay.ts" - ], - "similarity": 0.559, - "size_similarity": 0.173 - }, - { - "breadth_similarity": 0.375, - "concentration_similarity": 0.891, - "content_similarity": 0.564, - "left_pr_number": 66372, - "right_pr_number": 66373, - "shared_directories": [ - "extensions/openai", - "extensions" - ], - "shared_filenames": [ - "extensions/openai/prompt-overlay.ts" - ], - "similarity": 0.512, - "size_similarity": 0.234 - }, - { - "breadth_similarity": 0.833, - "concentration_similarity": 0.914, - "content_similarity": 0.478, - "left_pr_number": 66373, - "right_pr_number": 67512, + "concentration_similarity": 0.704, + "content_similarity": 0.454, + "left_pr_number": 31909, + "right_pr_number": 68372, "shared_directories": [ - "extensions/openai", "src/agents", - "extensions", "src" ], "shared_filenames": [ - "extensions/openai/index.test.ts", - "extensions/openai/prompt-overlay.ts", - "src/agents/system-prompt-contribution.ts", - "src/agents/system-prompt.ts" + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 0.479, - "size_similarity": 0.102 + "similarity": 0.434, + "size_similarity": 0.211 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.891, - "content_similarity": 0.514, - "left_pr_number": 66373, - "right_pr_number": 66375, + "breadth_similarity": 0.236, + "concentration_similarity": 0.867, + "content_similarity": 0.435, + "left_pr_number": 31909, + "right_pr_number": 63696, "shared_directories": [ - "extensions/openai", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/openai/prompt-overlay.ts" + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 0.463, - "size_similarity": 0.141 + "similarity": 0.433, + "size_similarity": 0.41 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.804, - "content_similarity": 0.457, - "left_pr_number": 66371, - "right_pr_number": 67512, + "breadth_similarity": 0.95, + "concentration_similarity": 0.624, + "content_similarity": 0.363, + "left_pr_number": 63696, + "right_pr_number": 67962, "shared_directories": [ - "extensions/openai", - "extensions" + "src/agents/pi-embedded-runner", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/openai/index.test.ts", - "extensions/openai/prompt-overlay.ts" + "src/agents/session-tool-result-guard-wrapper.ts", + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 0.414, - "size_similarity": 0.083 + "similarity": 0.431, + "size_similarity": 0.337 }, { - "breadth_similarity": 0.333, - "concentration_similarity": 0.804, - "content_similarity": 0.374, - "left_pr_number": 66372, - "right_pr_number": 67512, + "breadth_similarity": 0.95, + "concentration_similarity": 0.666, + "content_similarity": 0.361, + "left_pr_number": 63696, + "right_pr_number": 68048, "shared_directories": [ - "extensions/openai", - "extensions" + "src/agents/pi-embedded-runner", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/openai/prompt-overlay.ts" + "src/agents/session-tool-result-guard-wrapper.ts", + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 0.339, - "size_similarity": 0.024 + "similarity": 0.426, + "size_similarity": 0.297 }, { - "breadth_similarity": 0.333, - "concentration_similarity": 0.804, - "content_similarity": 0.355, - "left_pr_number": 66375, - "right_pr_number": 67512, + "breadth_similarity": 0.472, + "concentration_similarity": 0.837, + "content_similarity": 0.26, + "left_pr_number": 63696, + "right_pr_number": 68372, "shared_directories": [ - "extensions/openai", - "extensions" + "src/agents/pi-embedded-runner", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/openai/prompt-overlay.ts" + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts" ], - "similarity": 0.325, - "size_similarity": 0.014 + "similarity": 0.348, + "size_similarity": 0.514 } ], - "pr_count": 5, + "pr_count": 6, "pr_numbers": [ - 66371, - 66372, - 66373, - 66375, - 67512 - ], - "recent_pr_count": 5, + 31909, + 63696, + 67962, + 68048, + 68372, + 69033 + ], + "recent_pr_count": 4, "recent_pr_numbers": [ - 66371, - 66372, - 66373, - 66375, - 67512 + 67962, + 68048, + 68372, + 69033 ], - "representative_pr_number": 66371, - "representative_title": "feat(openai): add mandatory tool-use categories for GPT-5 models [v3 1/6]", - "representative_url": "https://github.com/openclaw/openclaw/pull/66371", + "representative_pr_number": 68048, + "representative_title": "fix(agents): harden toolResult details persistence policy (stringify undefined + double-cap)", + "representative_url": "https://github.com/openclaw/openclaw/pull/68048", "shared_directories": [ - "extensions/openai", - "extensions", "src/agents", - "src" + "src", + "src/agents/pi-embedded-runner", + "docs/.generated", + "src/config", + "docs" ], "shared_filenames": [ - "extensions/openai/prompt-overlay.ts", - "extensions/openai/index.test.ts", - "src/agents/system-prompt-contribution.ts", - "src/agents/system-prompt.ts" + "src/agents/session-tool-result-guard.test.ts", + "src/agents/session-tool-result-guard.ts", + "src/agents/pi-embedded-runner/tool-result-truncation.ts", + "src/agents/session-tool-result-guard-wrapper.ts", + "src/config/types.agent-defaults.ts", + "docs/.generated/config-baseline.sha256", + "src/config/zod-schema.agent-runtime.ts", + "src/config/schema.labels.ts" ], - "summary": "5 open PRs share weighted file overlap around `extensions/openai/prompt-overlay.ts`, `extensions/openai/index.test.ts`, `src/agents/system-prompt-contribution.ts`; representative PR #66371.", - "title": "Scope: feat(openai): add mandatory tool-use categories for GPT-5 models [v3 1/6]" + "summary": "6 open PRs share weighted file overlap around `src/agents/session-tool-result-guard.test.ts`, `src/agents/session-tool-result-guard.ts`, `src/agents/pi-embedded-runner/tool-result-truncation.ts`; representative PR #68048.", + "title": "Scope: fix(agents): harden toolResult details persistence policy (stringify undefined + double-cap)" }, { "authors": [ - "chris-yyau", - "mm1ord", - "nikilster", - "tobemorelucky", - "ztexydt-cqh" + "91wan", + "ly85206559", + "miyago9267", + "srinivaspavan9" ], - "average_similarity": 0.449, - "cluster_id": "pr-scope-66653-5", + "average_similarity": 0.361, + "cluster_id": "pr-scope-48144-6", "kind": "pr_scope", - "last_activity_at": "2026-04-17T02:42:16Z", - "outside_window_prs": [], - "pairwise": [ - { - "breadth_similarity": 0.9, - "concentration_similarity": 0.827, - "content_similarity": 0.851, - "left_pr_number": 66882, - "right_pr_number": 67137, - "shared_directories": [ - "src/channels/plugins", - "src/channels", - "src/wizard", - "src" - ], - "shared_filenames": [ - "src/channels/plugins/setup-wizard-helpers.ts", - "src/channels/plugins/setup-wizard.ts", - "src/wizard/clack-prompter.test.ts", - "src/wizard/clack-prompter.ts" - ], - "similarity": 0.875, - "size_similarity": 0.985 - }, + "last_activity_at": "2026-04-21T15:13:51Z", + "outside_window_prs": [ { - "breadth_similarity": 0.5, - "concentration_similarity": 0.758, - "content_similarity": 0.765, - "left_pr_number": 66882, - "right_pr_number": 67693, - "shared_directories": [ - "src/wizard", - "src" - ], - "shared_filenames": [ - "src/wizard/clack-prompter.test.ts", - "src/wizard/clack-prompter.ts" - ], - "similarity": 0.683, - "size_similarity": 0.393 + "additions": 112, + "author": "imwyvern", + "changed_files": 2, + "created_at": "2026-03-16T10:46:33Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/48144/files", + "html_url": "https://github.com/openclaw/openclaw/pull/48144", + "merged": false, + "number": 48144, + "state": "open", + "title": "fix(ui): show current context tokens instead of cumulative in Control UI", + "updated_at": "2026-04-20T18:09:07Z" }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.585, - "content_similarity": 0.653, - "left_pr_number": 67137, - "right_pr_number": 67693, - "shared_directories": [ - "src/wizard", - "src" - ], - "shared_filenames": [ - "src/wizard/clack-prompter.test.ts", - "src/wizard/clack-prompter.ts" - ], - "similarity": 0.59, - "size_similarity": 0.387 - }, + "additions": 308, + "author": "fuller-stack-dev", + "changed_files": 5, + "created_at": "2026-03-24T15:57:25Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53776/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53776", + "merged": false, + "number": 53776, + "state": "open", + "title": "feat(ui): wire /steer slash command to sessions.steer RPC", + "updated_at": "2026-03-24T20:29:52Z" + } + ], + "pairwise": [ { - "breadth_similarity": 0.35, - "concentration_similarity": 0.522, - "content_similarity": 0.549, - "left_pr_number": 66653, - "right_pr_number": 67736, + "breadth_similarity": 0.367, + "concentration_similarity": 0.99, + "content_similarity": 0.751, + "left_pr_number": 48144, + "right_pr_number": 53776, "shared_directories": [ - "src/channels/plugins", - "src/channels", - "src" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/channels/plugins/setup-wizard-helpers.ts" + "ui/src/ui/chat/slash-command-executor.node.test.ts", + "ui/src/ui/chat/slash-command-executor.ts" ], - "similarity": 0.556, - "size_similarity": 0.739 + "similarity": 0.669, + "size_similarity": 0.379 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.758, - "content_similarity": 0.431, - "left_pr_number": 66882, - "right_pr_number": 67736, + "breadth_similarity": 0.875, + "concentration_similarity": 0.94, + "content_similarity": 0.699, + "left_pr_number": 68982, + "right_pr_number": 69689, "shared_directories": [ - "src/channels/plugins", - "src/channels", - "src" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/channels/plugins/setup-wizard-helpers.ts" + "ui/src/ui/chat/grouped-render.test.ts", + "ui/src/ui/chat/grouped-render.ts" ], - "similarity": 0.416, - "size_similarity": 0.258 + "similarity": 0.662, + "size_similarity": 0.254 }, { - "breadth_similarity": 0.9, - "concentration_similarity": 0.764, - "content_similarity": 0.299, - "left_pr_number": 66653, - "right_pr_number": 66882, + "breadth_similarity": 0.917, + "concentration_similarity": 0.994, + "content_similarity": 0.16, + "left_pr_number": 68045, + "right_pr_number": 69366, "shared_directories": [ - "src/channels/plugins", - "src/channels", - "src" + "ui/src/ui/chat", + "ui/src/ui", + "src/auto-reply", + "ui/src", + "src", + "ui" ], "shared_filenames": [ - "src/channels/plugins/setup-wizard-helpers.ts", - "src/channels/plugins/setup-wizard.ts" + "ui/src/ui/chat/grouped-render.ts" ], - "similarity": 0.39, - "size_similarity": 0.348 + "similarity": 0.387, + "size_similarity": 0.897 }, { "breadth_similarity": 1.0, - "concentration_similarity": 0.937, - "content_similarity": 0.26, - "left_pr_number": 66653, - "right_pr_number": 67137, - "shared_directories": [ - "src/channels/plugins", - "src/channels", - "src" - ], - "shared_filenames": [ - "src/channels/plugins/setup-wizard-helpers.ts", - "src/channels/plugins/setup-wizard.ts" - ], - "similarity": 0.382, - "size_similarity": 0.354 - }, - { - "breadth_similarity": 0.35, - "concentration_similarity": 0.585, - "content_similarity": 0.361, - "left_pr_number": 67137, - "right_pr_number": 67736, - "shared_directories": [ - "src/channels/plugins", - "src/channels", - "src" - ], - "shared_filenames": [ - "src/channels/plugins/setup-wizard-helpers.ts" - ], - "similarity": 0.356, - "size_similarity": 0.262 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.008, - "left_pr_number": 67693, - "right_pr_number": 67736, + "concentration_similarity": 0.613, + "content_similarity": 0.164, + "left_pr_number": 53776, + "right_pr_number": 69366, "shared_directories": [ - "src" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.145, - "size_similarity": 0.101 + "similarity": 0.371, + "size_similarity": 0.836 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.522, - "content_similarity": 0.004, - "left_pr_number": 66653, - "right_pr_number": 67693, + "breadth_similarity": 0.917, + "concentration_similarity": 0.62, + "content_similarity": 0.14, + "left_pr_number": 53776, + "right_pr_number": 68045, "shared_directories": [ - "src" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.095, - "size_similarity": 0.137 - } - ], - "pr_count": 5, - "pr_numbers": [ - 66653, - 66882, - 67137, - 67693, - 67736 - ], - "recent_pr_count": 5, - "recent_pr_numbers": [ - 66653, - 66882, - 67137, - 67693, - 67736 - ], - "representative_pr_number": 66882, - "representative_title": "fix(wizard): guard text-input prompts against undefined clack results", - "representative_url": "https://github.com/openclaw/openclaw/pull/66882", - "shared_directories": [ - "src", - "src/channels/plugins", - "src/channels", - "src/wizard" - ], - "shared_filenames": [ - "src/channels/plugins/setup-wizard-helpers.ts", - "src/wizard/clack-prompter.test.ts", - "src/wizard/clack-prompter.ts", - "src/channels/plugins/setup-wizard.ts" - ], - "summary": "5 open PRs share weighted file overlap around `src/channels/plugins/setup-wizard-helpers.ts`, `src/wizard/clack-prompter.test.ts`, `src/wizard/clack-prompter.ts`; representative PR #66882.", - "title": "Scope: fix(wizard): guard text-input prompts against undefined clack results" - }, - { - "authors": [ - "BunsDev", - "Mlightsnow", - "TOMUIV", - "d1rshan", - "ztexydt-cqh" - ], - "average_similarity": 0.445, - "cluster_id": "pr-scope-65332-5", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T15:57:16Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.36, + "size_similarity": 0.932 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.728, - "left_pr_number": 68005, - "right_pr_number": 68093, + "breadth_similarity": 0.667, + "concentration_similarity": 0.693, + "content_similarity": 0.224, + "left_pr_number": 68045, + "right_pr_number": 68982, "shared_directories": [ - "ui/src/ui/views", + "ui/src/ui/chat", "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [ - "ui/src/ui/views/config-form.render.ts", - "ui/src/ui/views/config.browser.test.ts" + "ui/src/ui/chat/grouped-render.ts" ], - "similarity": 0.794, - "size_similarity": 0.895 + "similarity": 0.346, + "size_similarity": 0.583 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.663, - "left_pr_number": 68071, - "right_pr_number": 68093, + "breadth_similarity": 0.5, + "concentration_similarity": 0.917, + "content_similarity": 0.199, + "left_pr_number": 48144, + "right_pr_number": 68982, "shared_directories": [ - "ui/src/ui/views", + "ui/src/ui/chat", "ui/src/ui", "ui/src", "ui" ], - "shared_filenames": [ - "ui/src/ui/views/config-form.render.ts" - ], - "similarity": 0.636, - "size_similarity": 0.312 + "shared_filenames": [], + "similarity": 0.34, + "size_similarity": 0.698 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.62, - "left_pr_number": 68005, - "right_pr_number": 68071, + "breadth_similarity": 0.733, + "concentration_similarity": 0.927, + "content_similarity": 0.198, + "left_pr_number": 53776, + "right_pr_number": 68982, "shared_directories": [ - "ui/src/ui/views", + "ui/src/ui/chat", "ui/src/ui", "ui/src", "ui" ], - "shared_filenames": [ - "ui/src/ui/views/config-form.render.ts" - ], - "similarity": 0.601, - "size_similarity": 0.279 + "shared_filenames": [], + "similarity": 0.34, + "size_similarity": 0.543 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.567, - "content_similarity": 0.322, - "left_pr_number": 68093, - "right_pr_number": 68178, + "breadth_similarity": 0.733, + "concentration_similarity": 0.687, + "content_similarity": 0.188, + "left_pr_number": 68982, + "right_pr_number": 69366, "shared_directories": [ - "ui/src/ui/views", + "ui/src/ui/chat", "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [ - "ui/src/ui/views/config.browser.test.ts" + "ui/src/ui/chat/grouped-render.ts" ], - "similarity": 0.407, - "size_similarity": 0.779 + "similarity": 0.337, + "size_similarity": 0.65 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.567, - "content_similarity": 0.326, - "left_pr_number": 68005, - "right_pr_number": 68178, + "breadth_similarity": 0.583, + "concentration_similarity": 0.977, + "content_similarity": 0.205, + "left_pr_number": 48144, + "right_pr_number": 69689, "shared_directories": [ - "ui/src/ui/views", + "ui/src/ui/chat", "ui/src/ui", "ui/src", "ui" ], - "shared_filenames": [ - "ui/src/ui/views/config.browser.test.ts" - ], - "similarity": 0.398, - "size_similarity": 0.698 + "shared_filenames": [], + "similarity": 0.305, + "size_similarity": 0.364 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.197, - "left_pr_number": 65332, - "right_pr_number": 68093, + "breadth_similarity": 0.633, + "concentration_similarity": 0.627, + "content_similarity": 0.226, + "left_pr_number": 69366, + "right_pr_number": 69689, "shared_directories": [ - "ui/src/ui/views", + "ui/src/ui/chat", "ui/src/ui", "ui/src", "ui" ], - "shared_filenames": [], - "similarity": 0.385, - "size_similarity": 0.649 + "shared_filenames": [ + "ui/src/ui/chat/grouped-render.ts" + ], + "similarity": 0.278, + "size_similarity": 0.165 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.196, - "left_pr_number": 65332, - "right_pr_number": 68005, + "breadth_similarity": 0.633, + "concentration_similarity": 0.986, + "content_similarity": 0.204, + "left_pr_number": 53776, + "right_pr_number": 69689, "shared_directories": [ - "ui/src/ui/views", + "ui/src/ui/chat", "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [], - "similarity": 0.374, - "size_similarity": 0.581 + "similarity": 0.276, + "size_similarity": 0.138 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.201, - "left_pr_number": 65332, - "right_pr_number": 68071, + "breadth_similarity": 0.583, + "concentration_similarity": 0.634, + "content_similarity": 0.216, + "left_pr_number": 68045, + "right_pr_number": 69689, "shared_directories": [ - "ui/src/ui/views", + "ui/src/ui/chat", "ui/src/ui", "ui/src", "ui" ], - "shared_filenames": [], - "similarity": 0.337, - "size_similarity": 0.48 + "shared_filenames": [ + "CHANGELOG.md", + "ui/src/ui/chat/grouped-render.ts" + ], + "similarity": 0.263, + "size_similarity": 0.148 }, { "breadth_similarity": 0.367, - "concentration_similarity": 0.567, - "content_similarity": 0.143, - "left_pr_number": 65332, - "right_pr_number": 68178, + "concentration_similarity": 0.604, + "content_similarity": 0.165, + "left_pr_number": 48144, + "right_pr_number": 69366, "shared_directories": [ - "ui/src/ui/views", + "ui/src/ui/chat", "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [], - "similarity": 0.29, - "size_similarity": 0.833 + "similarity": 0.25, + "size_similarity": 0.454 }, { - "breadth_similarity": 0.267, - "concentration_similarity": 0.567, - "content_similarity": 0.163, - "left_pr_number": 68071, - "right_pr_number": 68178, + "breadth_similarity": 0.333, + "concentration_similarity": 0.61, + "content_similarity": 0.14, + "left_pr_number": 48144, + "right_pr_number": 68045, "shared_directories": [ - "ui/src/ui/views", + "ui/src/ui/chat", "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [], - "similarity": 0.229, - "size_similarity": 0.4 + "similarity": 0.223, + "size_similarity": 0.407 } ], - "pr_count": 5, + "pr_count": 6, "pr_numbers": [ - 65332, - 68005, - 68071, - 68093, - 68178 + 48144, + 53776, + 68045, + 68982, + 69366, + 69689 ], - "recent_pr_count": 5, + "recent_pr_count": 4, "recent_pr_numbers": [ - 65332, - 68005, - 68071, - 68093, - 68178 + 68045, + 68982, + 69366, + 69689 ], - "representative_pr_number": 68093, - "representative_title": "Fix: dedupe section title/desc in single-section config view (Resolves #68003)", - "representative_url": "https://github.com/openclaw/openclaw/pull/68093", + "representative_pr_number": 68982, + "representative_title": "fix: stream reasoning in live chat", + "representative_url": "https://github.com/openclaw/openclaw/pull/68982", "shared_directories": [ - "ui/src/ui/views", + "ui/src/ui/chat", "ui/src/ui", "ui/src", - "ui" + "ui", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/ui/views/config-form.render.ts", - "ui/src/ui/views/config.browser.test.ts" + "ui/src/ui/chat/grouped-render.ts", + "ui/src/ui/chat/grouped-render.test.ts", + "ui/src/ui/chat/slash-command-executor.node.test.ts", + "ui/src/ui/chat/slash-command-executor.ts", + "CHANGELOG.md" ], - "summary": "5 open PRs share weighted file overlap around `ui/src/ui/views/config-form.render.ts`, `ui/src/ui/views/config.browser.test.ts`; representative PR #68093.", - "title": "Scope: Fix: dedupe section title/desc in single-section config view (Resolves #68003)" + "summary": "6 open PRs share weighted file overlap around `ui/src/ui/chat/grouped-render.ts`, `ui/src/ui/chat/grouped-render.test.ts`, `ui/src/ui/chat/slash-command-executor.node.test.ts`; representative PR #68982.", + "title": "Scope: fix: stream reasoning in live chat" }, { "authors": [ - "Bartok9", - "leaderlemon", - "neo1027144-creator", - "suboss87" + "kenrolzjc", + "moltar-bot", + "openperf", + "rmfalco89" ], - "average_similarity": 0.476, - "cluster_id": "pr-scope-59436-8", + "average_similarity": 0.621, + "cluster_id": "pr-scope-64516-5", "kind": "pr_scope", - "last_activity_at": "2026-04-19T00:33:48Z", + "last_activity_at": "2026-04-19T07:21:56Z", "outside_window_prs": [ { - "additions": 115, - "author": "coderredlab", - "changed_files": 1, - "created_at": "2026-04-02T05:04:23Z", - "deletions": 42, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/59436/files", - "html_url": "https://github.com/openclaw/openclaw/pull/59436", - "merged": false, - "number": 59436, - "state": "open", - "title": "perf(gateway): apply limit before building session rows and index child lookups", - "updated_at": "2026-04-18T09:17:05Z" - }, - { - "additions": 144, - "author": "neofdezf-cloud", + "additions": 17, + "author": "rmfalco89", "changed_files": 2, - "created_at": "2026-04-11T19:53:23Z", - "deletions": 1, + "created_at": "2026-04-10T22:16:32Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64988/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64988", + "files_url": "https://github.com/openclaw/openclaw/pull/64516/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64516", "merged": false, - "number": 64988, + "number": 64516, "state": "open", - "title": "feat(gateway): infer provider from configured model families", - "updated_at": "2026-04-11T20:03:48Z" + "title": "fix(heartbeat): make cron event wrapper neutral so models execute embedded steps", + "updated_at": "2026-04-14T00:08:40Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.987, + "left_pr_number": 64516, + "right_pr_number": 67262, + "shared_directories": [ + "src/infra", + "src" + ], + "shared_filenames": [ + "src/infra/heartbeat-events-filter.test.ts", + "src/infra/heartbeat-events-filter.ts" + ], + "similarity": 0.946, + "size_similarity": 0.696 }, { - "additions": 63, - "author": "w-sss", - "changed_files": 2, - "created_at": "2026-04-12T04:38:30Z", - "deletions": 5, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65178/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65178", - "merged": false, - "number": 65178, - "state": "open", - "title": "fix: case-insensitive model lookup for image support resolution", - "updated_at": "2026-04-12T04:42:48Z" - }, - { - "additions": 74, - "author": "hondaya01", - "changed_files": 2, - "created_at": "2026-04-12T06:40:40Z", - "deletions": 5, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65211/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65211", - "merged": false, - "number": 65211, - "state": "open", - "title": "fix: include user-configured provider models in gateway catalog for capability checks", - "updated_at": "2026-04-12T07:14:11Z" - } - ], - "pairwise": [ - { - "breadth_similarity": 1.0, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.899, - "left_pr_number": 65178, - "right_pr_number": 68047, + "content_similarity": 0.905, + "left_pr_number": 64516, + "right_pr_number": 66838, "shared_directories": [ - "src/gateway", + "src/infra", "src" ], "shared_filenames": [ - "src/gateway/session-utils.test.ts", - "src/gateway/session-utils.ts" + "src/infra/heartbeat-events-filter.test.ts", + "src/infra/heartbeat-events-filter.ts" ], - "similarity": 0.911, - "size_similarity": 0.882 + "similarity": 0.866, + "size_similarity": 0.657 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.875, - "content_similarity": 0.834, - "left_pr_number": 65178, - "right_pr_number": 67768, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.899, + "left_pr_number": 66838, + "right_pr_number": 67262, "shared_directories": [ - "src/gateway", + "src/infra", "src" ], "shared_filenames": [ - "src/gateway/session-utils.test.ts", - "src/gateway/session-utils.ts" + "src/infra/heartbeat-events-filter.test.ts", + "src/infra/heartbeat-events-filter.ts" ], - "similarity": 0.827, - "size_similarity": 0.941 + "similarity": 0.831, + "size_similarity": 0.457 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.875, - "content_similarity": 0.777, - "left_pr_number": 67768, - "right_pr_number": 68047, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.543, + "left_pr_number": 64516, + "right_pr_number": 67273, "shared_directories": [ - "src/gateway", + "src/infra", "src" ], "shared_filenames": [ - "src/gateway/session-utils.test.ts", - "src/gateway/session-utils.ts" + "src/infra/heartbeat-events-filter.test.ts", + "src/infra/heartbeat-events-filter.ts" ], - "similarity": 0.787, - "size_similarity": 0.938 + "similarity": 0.526, + "size_similarity": 0.144 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.875, "concentration_similarity": 1.0, - "content_similarity": 0.82, - "left_pr_number": 67766, - "right_pr_number": 68047, + "content_similarity": 0.495, + "left_pr_number": 66838, + "right_pr_number": 67273, "shared_directories": [ - "src/gateway", + "src/infra", "src" ], "shared_filenames": [ - "src/gateway/session-utils.test.ts", - "src/gateway/session-utils.ts" + "src/infra/heartbeat-events-filter.test.ts", + "src/infra/heartbeat-events-filter.ts" ], - "similarity": 0.774, - "size_similarity": 0.335 + "similarity": 0.517, + "size_similarity": 0.219 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.786, - "left_pr_number": 65178, - "right_pr_number": 67766, + "breadth_similarity": 0.417, + "concentration_similarity": 0.802, + "content_similarity": 0.591, + "left_pr_number": 64516, + "right_pr_number": 67059, "shared_directories": [ - "src/gateway", + "src/infra", "src" ], "shared_filenames": [ - "src/gateway/session-utils.test.ts", - "src/gateway/session-utils.ts" + "src/infra/heartbeat-events-filter.test.ts", + "src/infra/heartbeat-events-filter.ts" ], - "similarity": 0.757, - "size_similarity": 0.38 + "similarity": 0.515, + "size_similarity": 0.134 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.875, - "content_similarity": 0.753, - "left_pr_number": 67766, - "right_pr_number": 67768, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.531, + "left_pr_number": 67262, + "right_pr_number": 67273, "shared_directories": [ - "src/gateway", + "src/infra", "src" ], "shared_filenames": [ - "src/gateway/session-utils.test.ts", - "src/gateway/session-utils.ts" + "src/infra/heartbeat-events-filter.test.ts", + "src/infra/heartbeat-events-filter.ts" ], - "similarity": 0.683, - "size_similarity": 0.358 + "similarity": 0.512, + "size_similarity": 0.1 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.556, - "left_pr_number": 59436, - "right_pr_number": 66544, + "breadth_similarity": 0.417, + "concentration_similarity": 0.802, + "content_similarity": 0.583, + "left_pr_number": 67059, + "right_pr_number": 67262, "shared_directories": [ - "src/gateway", + "src/infra", "src" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "src/infra/heartbeat-events-filter.test.ts", + "src/infra/heartbeat-events-filter.ts" ], - "similarity": 0.544, - "size_similarity": 0.032 + "similarity": 0.504, + "size_similarity": 0.093 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.314, - "left_pr_number": 59436, - "right_pr_number": 64988, + "breadth_similarity": 0.5, + "concentration_similarity": 0.802, + "content_similarity": 0.539, + "left_pr_number": 66838, + "right_pr_number": 67059, "shared_directories": [ - "src/gateway", + "src/infra", "src" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "src/infra/heartbeat-events-filter.test.ts", + "src/infra/heartbeat-events-filter.ts" ], - "similarity": 0.483, - "size_similarity": 0.924 + "similarity": 0.498, + "size_similarity": 0.203 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.301, - "left_pr_number": 65211, - "right_pr_number": 68047, + "breadth_similarity": 0.583, + "concentration_similarity": 0.802, + "content_similarity": 0.371, + "left_pr_number": 67059, + "right_pr_number": 67273, "shared_directories": [ - "src/gateway", + "src/infra", "src" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "src/infra/heartbeat-events-filter.test.ts", + "src/infra/heartbeat-events-filter.ts", + "src/infra/heartbeat-runner.ts" ], - "similarity": 0.474, - "size_similarity": 0.759 - }, + "similarity": 0.497, + "size_similarity": 0.93 + } + ], + "pr_count": 5, + "pr_numbers": [ + 64516, + 66838, + 67059, + 67262, + 67273 + ], + "recent_pr_count": 4, + "recent_pr_numbers": [ + 66838, + 67059, + 67262, + 67273 + ], + "representative_pr_number": 64516, + "representative_title": "fix(heartbeat): make cron event wrapper neutral so models execute embedded steps", + "representative_url": "https://github.com/openclaw/openclaw/pull/64516", + "shared_directories": [ + "src/infra", + "src" + ], + "shared_filenames": [ + "src/infra/heartbeat-events-filter.test.ts", + "src/infra/heartbeat-events-filter.ts", + "src/infra/heartbeat-runner.ts" + ], + "summary": "5 open PRs share weighted file overlap around `src/infra/heartbeat-events-filter.test.ts`, `src/infra/heartbeat-events-filter.ts`, `src/infra/heartbeat-runner.ts`; representative PR #64516.", + "title": "Scope: fix(heartbeat): make cron event wrapper neutral so models execute embedded steps" + }, + { + "authors": [ + "MukundaKatta", + "jckm14", + "pfrederiksen", + "sharkqwy" + ], + "average_similarity": 0.579, + "cluster_id": "pr-scope-66696-5", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T17:28:47Z", + "outside_window_prs": [ { - "breadth_similarity": 0.75, + "additions": 14, + "author": "pfrederiksen", + "changed_files": 2, + "created_at": "2026-04-14T17:13:57Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66696/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66696", + "merged": false, + "number": 66696, + "state": "open", + "title": "Support Corepack-managed pnpm in pre-commit tooling", + "updated_at": "2026-04-14T17:30:06Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.407, - "left_pr_number": 59436, - "right_pr_number": 68047, + "content_similarity": 1.0, + "left_pr_number": 66753, + "right_pr_number": 69115, "shared_directories": [ - "src/gateway", - "src" + "git-hooks" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "git-hooks/pre-commit" ], - "similarity": 0.467, - "size_similarity": 0.382 + "similarity": 0.977, + "size_similarity": 0.85 }, { "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.361, - "left_pr_number": 64988, - "right_pr_number": 68047, + "concentration_similarity": 0.715, + "content_similarity": 0.931, + "left_pr_number": 66696, + "right_pr_number": 67870, "shared_directories": [ - "src/gateway", - "src" + "scripts/pre-commit", + "git-hooks", + "scripts" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "git-hooks/pre-commit", + "scripts/pre-commit/run-node-tool.sh" ], - "similarity": 0.465, - "size_similarity": 0.414 + "similarity": 0.885, + "size_similarity": 0.654 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.274, - "left_pr_number": 59436, - "right_pr_number": 67766, + "breadth_similarity": 0.5, + "concentration_similarity": 0.538, + "content_similarity": 0.65, + "left_pr_number": 66753, + "right_pr_number": 67870, "shared_directories": [ - "src/gateway", - "src" + "git-hooks" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "git-hooks/pre-commit" ], - "similarity": 0.449, - "size_similarity": 0.877 + "similarity": 0.647, + "size_similarity": 0.769 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.248, - "left_pr_number": 64988, - "right_pr_number": 67766, + "breadth_similarity": 0.5, + "concentration_similarity": 0.538, + "content_similarity": 0.651, + "left_pr_number": 67870, + "right_pr_number": 69115, "shared_directories": [ - "src/gateway", - "src" + "git-hooks" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "git-hooks/pre-commit" ], - "similarity": 0.445, - "size_similarity": 0.81 + "similarity": 0.631, + "size_similarity": 0.654 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.285, - "left_pr_number": 64988, - "right_pr_number": 65178, + "breadth_similarity": 0.5, + "concentration_similarity": 0.824, + "content_similarity": 0.382, + "left_pr_number": 66696, + "right_pr_number": 69115, "shared_directories": [ - "src/gateway", - "src" + "git-hooks" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "git-hooks/pre-commit" ], - "similarity": 0.42, - "size_similarity": 0.469 + "similarity": 0.508, + "size_similarity": 1.0 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.185, - "left_pr_number": 65178, - "right_pr_number": 65211, + "breadth_similarity": 0.5, + "concentration_similarity": 0.824, + "content_similarity": 0.386, + "left_pr_number": 66696, + "right_pr_number": 66753, "shared_directories": [ - "src/gateway", - "src" + "git-hooks" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "git-hooks/pre-commit" ], - "similarity": 0.409, - "size_similarity": 0.861 + "similarity": 0.489, + "size_similarity": 0.85 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.292, - "left_pr_number": 59436, - "right_pr_number": 65178, + "breadth_similarity": 0.5, + "concentration_similarity": 0.795, + "content_similarity": 0.434, + "left_pr_number": 66753, + "right_pr_number": 66776, "shared_directories": [ - "src/gateway", - "src" + "git-hooks" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "git-hooks/pre-commit" ], - "similarity": 0.395, - "size_similarity": 0.433 + "similarity": 0.462, + "size_similarity": 0.455 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.363, - "left_pr_number": 66544, - "right_pr_number": 68047, + "breadth_similarity": 0.5, + "concentration_similarity": 0.795, + "content_similarity": 0.434, + "left_pr_number": 66776, + "right_pr_number": 69115, "shared_directories": [ - "src/gateway", - "src" + "git-hooks" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "git-hooks/pre-commit" ], - "similarity": 0.391, - "size_similarity": 0.083 + "similarity": 0.452, + "size_similarity": 0.386 }, { "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.241, - "left_pr_number": 65211, - "right_pr_number": 67766, + "concentration_similarity": 0.743, + "content_similarity": 0.283, + "left_pr_number": 66776, + "right_pr_number": 67870, "shared_directories": [ - "src/gateway", - "src" + "git-hooks" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "git-hooks/pre-commit" ], - "similarity": 0.385, - "size_similarity": 0.441 + "similarity": 0.424, + "size_similarity": 0.591 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.253, - "left_pr_number": 59436, - "right_pr_number": 65211, + "breadth_similarity": 1.0, + "concentration_similarity": 0.972, + "content_similarity": 0.162, + "left_pr_number": 66696, + "right_pr_number": 66776, "shared_directories": [ - "src/gateway", - "src" + "git-hooks" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "git-hooks/pre-commit" ], - "similarity": 0.378, - "size_similarity": 0.503 - }, + "similarity": 0.32, + "size_similarity": 0.386 + } + ], + "pr_count": 5, + "pr_numbers": [ + 66696, + 66753, + 66776, + 67870, + 69115 + ], + "recent_pr_count": 4, + "recent_pr_numbers": [ + 66753, + 66776, + 67870, + 69115 + ], + "representative_pr_number": 67870, + "representative_title": "fix(pre-commit): support corepack-managed pnpm in hook tooling", + "representative_url": "https://github.com/openclaw/openclaw/pull/67870", + "shared_directories": [ + "git-hooks", + "scripts/pre-commit", + "scripts" + ], + "shared_filenames": [ + "git-hooks/pre-commit", + "scripts/pre-commit/run-node-tool.sh" + ], + "summary": "5 open PRs share weighted file overlap around `git-hooks/pre-commit`, `scripts/pre-commit/run-node-tool.sh`; representative PR #67870.", + "title": "Scope: fix(pre-commit): support corepack-managed pnpm in hook tooling" + }, + { + "authors": [ + "ACMILANTX", + "avirweb", + "sahilsatralkar" + ], + "average_similarity": 0.52, + "cluster_id": "pr-scope-64403-5", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T14:51:14Z", + "outside_window_prs": [ { - "breadth_similarity": 1.0, + "additions": 366, + "author": "ly85206559", + "changed_files": 5, + "created_at": "2026-04-10T16:30:53Z", + "deletions": 20, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64403/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64403", + "merged": false, + "number": 64403, + "state": "open", + "title": "fix(plugins): prefer CLI metadata for lazy primary commands", + "updated_at": "2026-04-21T11:16:10Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.7, "concentration_similarity": 1.0, - "content_similarity": 0.183, - "left_pr_number": 64988, - "right_pr_number": 65211, + "content_similarity": 0.85, + "left_pr_number": 64403, + "right_pr_number": 67063, "shared_directories": [ - "src/gateway", + "src/plugins", "src" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "src/plugins/cli-registry-loader.ts", + "src/plugins/cli.test.ts" ], - "similarity": 0.359, - "size_similarity": 0.545 + "similarity": 0.769, + "size_similarity": 0.363 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.321, - "left_pr_number": 64988, - "right_pr_number": 66544, + "breadth_similarity": 0.452, + "concentration_similarity": 0.907, + "content_similarity": 0.571, + "left_pr_number": 68654, + "right_pr_number": 69744, "shared_directories": [ - "src/gateway", + "src/plugins", "src" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "src/plugins/cli-registry-loader.test.ts", + "src/plugins/cli-registry-loader.ts" ], - "similarity": 0.355, - "size_similarity": 0.034 + "similarity": 0.617, + "size_similarity": 0.843 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.875, - "content_similarity": 0.266, - "left_pr_number": 64988, - "right_pr_number": 67768, + "breadth_similarity": 0.9, + "concentration_similarity": 1.0, + "content_similarity": 0.551, + "left_pr_number": 64403, + "right_pr_number": 68654, "shared_directories": [ - "src/gateway", + "src/plugins", "src" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "src/plugins/cli-registry-loader.ts", + "src/plugins/cli.test.ts", + "src/plugins/cli.ts" ], - "similarity": 0.355, - "size_similarity": 0.441 + "similarity": 0.607, + "size_similarity": 0.541 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.875, - "content_similarity": 0.256, - "left_pr_number": 59436, - "right_pr_number": 67768, + "breadth_similarity": 0.5, + "concentration_similarity": 0.516, + "content_similarity": 0.555, + "left_pr_number": 67063, + "right_pr_number": 68242, "shared_directories": [ - "src/gateway", + "src/plugins", "src" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "src/plugins/cli-registry-loader.ts", + "src/plugins/cli.test.ts" ], - "similarity": 0.326, - "size_similarity": 0.408 + "similarity": 0.559, + "size_similarity": 0.628 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.875, - "content_similarity": 0.136, - "left_pr_number": 65211, - "right_pr_number": 67768, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.457, + "left_pr_number": 67063, + "right_pr_number": 68654, "shared_directories": [ - "src/gateway", + "src/plugins", "src" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "src/plugins/cli-registry-loader.ts", + "src/plugins/cli.test.ts" ], - "similarity": 0.319, - "size_similarity": 0.81 + "similarity": 0.545, + "size_similarity": 0.67 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.261, - "left_pr_number": 65178, - "right_pr_number": 66544, + "breadth_similarity": 0.65, + "concentration_similarity": 0.516, + "content_similarity": 0.523, + "left_pr_number": 64403, + "right_pr_number": 68242, "shared_directories": [ - "src/gateway", + "src/plugins", "src" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "src/plugins/cli-registry-loader.ts", + "src/plugins/cli.test.ts" ], - "similarity": 0.318, - "size_similarity": 0.074 + "similarity": 0.544, + "size_similarity": 0.578 }, { "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.245, - "left_pr_number": 66544, - "right_pr_number": 67766, + "concentration_similarity": 0.516, + "content_similarity": 0.335, + "left_pr_number": 68242, + "right_pr_number": 68654, "shared_directories": [ - "src/gateway", + "src/plugins", "src" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "src/plugins/cli-registry-loader.ts", + "src/plugins/cli.test.ts" ], - "similarity": 0.3, - "size_similarity": 0.028 + "similarity": 0.476, + "size_similarity": 0.937 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.226, - "left_pr_number": 65211, - "right_pr_number": 66544, + "breadth_similarity": 0.524, + "concentration_similarity": 0.907, + "content_similarity": 0.303, + "left_pr_number": 64403, + "right_pr_number": 69744, "shared_directories": [ - "src/gateway", + "src/plugins", "src" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "src/plugins/cli-registry-loader.ts" ], - "similarity": 0.293, - "size_similarity": 0.063 + "similarity": 0.406, + "size_similarity": 0.642 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.875, - "content_similarity": 0.229, - "left_pr_number": 66544, - "right_pr_number": 67768, + "breadth_similarity": 0.619, + "concentration_similarity": 0.608, + "content_similarity": 0.171, + "left_pr_number": 68242, + "right_pr_number": 69744, "shared_directories": [ - "src/gateway", + "src/plugins", + "extensions", "src" ], "shared_filenames": [ - "src/gateway/session-utils.ts" + "src/plugins/cli-registry-loader.ts" ], - "similarity": 0.257, - "size_similarity": 0.078 + "similarity": 0.347, + "size_similarity": 0.899 + }, + { + "breadth_similarity": 0.31, + "concentration_similarity": 0.907, + "content_similarity": 0.245, + "left_pr_number": 67063, + "right_pr_number": 69744, + "shared_directories": [ + "src/plugins", + "src" + ], + "shared_filenames": [ + "src/plugins/cli-registry-loader.ts" + ], + "similarity": 0.333, + "size_similarity": 0.565 } ], - "pr_count": 8, + "pr_count": 5, "pr_numbers": [ - 59436, - 64988, - 65178, - 65211, - 66544, - 67766, - 67768, - 68047 + 64403, + 67063, + 68242, + 68654, + 69744 ], "recent_pr_count": 4, "recent_pr_numbers": [ - 66544, - 67766, - 67768, - 68047 + 67063, + 68242, + 68654, + 69744 ], - "representative_pr_number": 68047, - "representative_title": "fix(gateway): extend image-support name fallback to direct anthropic provider", - "representative_url": "https://github.com/openclaw/openclaw/pull/68047", + "representative_pr_number": 64403, + "representative_title": "fix(plugins): prefer CLI metadata for lazy primary commands", + "representative_url": "https://github.com/openclaw/openclaw/pull/64403", "shared_directories": [ - "src/gateway", - "src" + "src/plugins", + "src", + "extensions" ], "shared_filenames": [ - "src/gateway/session-utils.ts", - "src/gateway/session-utils.test.ts" + "src/plugins/cli-registry-loader.ts", + "src/plugins/cli.test.ts", + "src/plugins/cli-registry-loader.test.ts", + "src/plugins/cli.ts" ], - "summary": "8 open PRs share weighted file overlap around `src/gateway/session-utils.ts`, `src/gateway/session-utils.test.ts`; representative PR #68047.", - "title": "Scope: fix(gateway): extend image-support name fallback to direct anthropic provider" + "summary": "5 open PRs share weighted file overlap around `src/plugins/cli-registry-loader.ts`, `src/plugins/cli.test.ts`, `src/plugins/cli-registry-loader.test.ts`; representative PR #64403.", + "title": "Scope: fix(plugins): prefer CLI metadata for lazy primary commands" }, { "authors": [ - "BKF-Gitty", - "Gi99lin", - "damselem", - "skernelx" + "1aifanatic", + "igormf", + "nnish16", + "vvitovec" ], - "average_similarity": 0.446, - "cluster_id": "pr-scope-53281-8", + "average_similarity": 0.712, + "cluster_id": "pr-scope-67395-4", "kind": "pr_scope", - "last_activity_at": "2026-04-19T00:04:51Z", - "outside_window_prs": [ - { - "additions": 85, - "author": "mrbob-git", - "changed_files": 5, - "created_at": "2026-03-24T01:48:42Z", - "deletions": 8, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53281/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53281", - "merged": false, - "number": 53281, - "state": "open", - "title": "agents: clarify attachAs.mountPath guidance for subagent attachments", - "updated_at": "2026-03-24T20:15:31Z" - }, - { - "additions": 50, - "author": "w-sss", - "changed_files": 6, - "created_at": "2026-03-24T11:05:59Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53631/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53631", - "merged": false, - "number": 53631, - "state": "open", - "title": "fix(telegram): improve 403 bot not member/blocked error messages", - "updated_at": "2026-03-24T20:15:30Z" - }, - { - "additions": 36, - "author": "w-sss", - "changed_files": 5, - "created_at": "2026-03-24T11:06:07Z", - "deletions": 2, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53632/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53632", - "merged": false, - "number": 53632, - "state": "open", - "title": "fix(browser): add missing logWarn imports", - "updated_at": "2026-03-24T20:15:29Z" - }, - { - "additions": 77, - "author": "grtninja", - "changed_files": 11, - "created_at": "2026-04-11T11:50:44Z", - "deletions": 31, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64787/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64787", - "merged": false, - "number": 64787, - "state": "open", - "title": "fix: ignore auto-filled streamTo for subagent spawns", - "updated_at": "2026-04-13T19:57:19Z" - } - ], + "last_activity_at": "2026-04-18T01:39:27Z", + "outside_window_prs": [], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.977, - "left_pr_number": 65282, - "right_pr_number": 68397, + "content_similarity": 0.991, + "left_pr_number": 68106, + "right_pr_number": 68132, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/lobster/src", + "extensions/lobster", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.test.ts", - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/lobster/src/lobster-runner.test.ts", + "extensions/lobster/src/lobster-runner.ts" ], - "similarity": 0.911, - "size_similarity": 0.51 + "similarity": 0.897, + "size_similarity": 0.357 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.887, - "content_similarity": 0.578, - "left_pr_number": 66720, - "right_pr_number": 68397, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.798, + "left_pr_number": 68106, + "right_pr_number": 68313, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/lobster/src", + "extensions/lobster", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/lobster/src/lobster-runner.test.ts", + "extensions/lobster/src/lobster-runner.ts" ], - "similarity": 0.642, - "size_similarity": 0.79 + "similarity": 0.851, + "size_similarity": 0.95 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.887, - "content_similarity": 0.573, - "left_pr_number": 65282, - "right_pr_number": 66720, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.78, + "left_pr_number": 68132, + "right_pr_number": 68313, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/lobster/src", + "extensions/lobster", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/lobster/src/lobster-runner.test.ts", + "extensions/lobster/src/lobster-runner.ts" ], - "similarity": 0.581, - "size_similarity": 0.403 + "similarity": 0.747, + "size_similarity": 0.339 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.821, - "content_similarity": 0.509, - "left_pr_number": 53631, - "right_pr_number": 53632, + "breadth_similarity": 0.417, + "concentration_similarity": 0.851, + "content_similarity": 0.718, + "left_pr_number": 67395, + "right_pr_number": 68106, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/lobster/src", + "extensions/lobster", + "extensions" ], "shared_filenames": [ - "src/agents/subagent-announce.ts", - "src/agents/subagent-registry.ts", - "src/agents/subagent-registry.types.ts", - "src/agents/subagent-spawn.ts", - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/lobster/src/lobster-runner.test.ts", + "extensions/lobster/src/lobster-runner.ts" ], - "similarity": 0.58, - "size_similarity": 0.717 + "similarity": 0.596, + "size_similarity": 0.058 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.495, - "content_similarity": 0.62, - "left_pr_number": 53281, - "right_pr_number": 68397, + "breadth_similarity": 0.417, + "concentration_similarity": 0.851, + "content_similarity": 0.715, + "left_pr_number": 67395, + "right_pr_number": 68313, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/lobster/src", + "extensions/lobster", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.test.ts", - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/lobster/src/lobster-runner.test.ts", + "extensions/lobster/src/lobster-runner.ts" ], - "similarity": 0.575, - "size_similarity": 0.527 + "similarity": 0.593, + "size_similarity": 0.055 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.757, - "content_similarity": 0.441, - "left_pr_number": 66720, - "right_pr_number": 68726, + "breadth_similarity": 0.417, + "concentration_similarity": 0.851, + "content_similarity": 0.682, + "left_pr_number": 67395, + "right_pr_number": 68132, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/lobster/src", + "extensions/lobster", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/lobster/src/lobster-runner.test.ts", + "extensions/lobster/src/lobster-runner.ts" ], - "similarity": 0.555, - "size_similarity": 0.726 - }, + "similarity": 0.586, + "size_similarity": 0.163 + } + ], + "pr_count": 4, + "pr_numbers": [ + 67395, + 68106, + 68132, + 68313 + ], + "recent_pr_count": 4, + "recent_pr_numbers": [ + 67395, + 68106, + 68132, + 68313 + ], + "representative_pr_number": 68106, + "representative_title": "fix(lobster): surface workflow path errors", + "representative_url": "https://github.com/openclaw/openclaw/pull/68106", + "shared_directories": [ + "extensions/lobster/src", + "extensions/lobster", + "extensions" + ], + "shared_filenames": [ + "extensions/lobster/src/lobster-runner.test.ts", + "extensions/lobster/src/lobster-runner.ts" + ], + "summary": "4 open PRs share weighted file overlap around `extensions/lobster/src/lobster-runner.test.ts`, `extensions/lobster/src/lobster-runner.ts`; representative PR #68106.", + "title": "Scope: fix(lobster): surface workflow path errors" + }, + { + "authors": [ + "Kailigithub", + "frankhli843", + "neeravmakwana" + ], + "average_similarity": 0.555, + "cluster_id": "pr-scope-68193-4", + "kind": "pr_scope", + "last_activity_at": "2026-04-19T13:10:28Z", + "outside_window_prs": [], + "pairwise": [ { - "breadth_similarity": 0.7, - "concentration_similarity": 0.744, - "content_similarity": 0.504, - "left_pr_number": 53632, - "right_pr_number": 66720, + "breadth_similarity": 0.775, + "concentration_similarity": 0.974, + "content_similarity": 0.806, + "left_pr_number": 68193, + "right_pr_number": 68740, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/ollama/src", + "extensions/ollama", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/ollama/src/provider-models.test.ts", + "extensions/ollama/src/provider-models.ts" ], - "similarity": 0.552, - "size_similarity": 0.613 + "similarity": 0.786, + "size_similarity": 0.641 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.495, - "content_similarity": 0.602, - "left_pr_number": 53281, - "right_pr_number": 65282, + "breadth_similarity": 0.9, + "concentration_similarity": 0.95, + "content_similarity": 0.867, + "left_pr_number": 68349, + "right_pr_number": 68740, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/ollama/src", + "docs/providers", + "extensions/ollama", + "docs", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.test.ts", - "src/agents/tools/sessions-spawn-tool.ts" + "CHANGELOG.md", + "docs/providers/ollama.md", + "extensions/ollama/src/provider-models.test.ts", + "extensions/ollama/src/provider-models.ts" ], - "similarity": 0.523, - "size_similarity": 0.269 + "similarity": 0.78, + "size_similarity": 0.237 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.566, - "content_similarity": 0.436, - "left_pr_number": 53631, - "right_pr_number": 66720, + "breadth_similarity": 0.875, + "concentration_similarity": 0.975, + "content_similarity": 0.701, + "left_pr_number": 68193, + "right_pr_number": 68349, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/ollama/src", + "extensions/ollama", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/ollama/src/provider-models.test.ts", + "extensions/ollama/src/provider-models.ts" ], - "similarity": 0.512, - "size_similarity": 0.855 + "similarity": 0.683, + "size_similarity": 0.37 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.644, - "content_similarity": 0.364, - "left_pr_number": 68397, - "right_pr_number": 68726, + "breadth_similarity": 0.675, + "concentration_similarity": 0.6, + "content_similarity": 0.52, + "left_pr_number": 68193, + "right_pr_number": 68762, "shared_directories": [ - "src/agents/tools", - "src/agents", + "extensions/ollama/src", + "extensions/huggingface", + "extensions/ollama", + "src/plugins", + "extensions", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/huggingface/models.ts", + "extensions/ollama/src/provider-models.ts", + "src/plugins/provider-self-hosted-setup.ts" ], - "similarity": 0.5, - "size_similarity": 0.918 + "similarity": 0.478, + "size_similarity": 0.109 }, { - "breadth_similarity": 0.602, - "concentration_similarity": 0.978, - "content_similarity": 0.348, - "left_pr_number": 53281, - "right_pr_number": 64787, - "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "breadth_similarity": 0.875, + "concentration_similarity": 0.575, + "content_similarity": 0.265, + "left_pr_number": 68740, + "right_pr_number": 68762, + "shared_directories": [ + "extensions/ollama/src", + "extensions/ollama", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.test.ts", - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/ollama/src/provider-models.ts" ], - "similarity": 0.482, - "size_similarity": 0.861 + "similarity": 0.327, + "size_similarity": 0.171 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.644, - "content_similarity": 0.413, - "left_pr_number": 65282, - "right_pr_number": 68726, + "breadth_similarity": 0.8, + "concentration_similarity": 0.625, + "content_similarity": 0.23, + "left_pr_number": 68349, + "right_pr_number": 68762, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/ollama/src", + "extensions/ollama", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/ollama/src/provider-models.ts" ], - "similarity": 0.48, - "size_similarity": 0.556 - }, + "similarity": 0.278, + "size_similarity": 0.04 + } + ], + "pr_count": 4, + "pr_numbers": [ + 68193, + 68349, + 68740, + 68762 + ], + "recent_pr_count": 4, + "recent_pr_numbers": [ + 68193, + 68349, + 68740, + 68762 + ], + "representative_pr_number": 68193, + "representative_title": "feat(ollama): detect Gemma 4 as reasoning model and check capabilities", + "representative_url": "https://github.com/openclaw/openclaw/pull/68193", + "shared_directories": [ + "extensions/ollama/src", + "extensions/ollama", + "extensions", + "extensions/huggingface", + "docs/providers", + "src/plugins", + "docs", + "src" + ], + "shared_filenames": [ + "extensions/ollama/src/provider-models.ts", + "extensions/ollama/src/provider-models.test.ts", + "extensions/huggingface/models.ts", + "src/plugins/provider-self-hosted-setup.ts", + "docs/providers/ollama.md", + "CHANGELOG.md" + ], + "summary": "4 open PRs share weighted file overlap around `extensions/ollama/src/provider-models.ts`, `extensions/ollama/src/provider-models.test.ts`, `extensions/huggingface/models.ts`; representative PR #68193.", + "title": "Scope: feat(ollama): detect Gemma 4 as reasoning model and check capabilities" + }, + { + "authors": [ + "zeng269" + ], + "average_similarity": 0.518, + "cluster_id": "pr-scope-67331-4", + "kind": "pr_scope", + "last_activity_at": "2026-04-16T18:13:38Z", + "outside_window_prs": [], + "pairwise": [ { - "breadth_similarity": 0.216, - "concentration_similarity": 0.472, - "content_similarity": 0.502, - "left_pr_number": 64787, - "right_pr_number": 68397, + "breadth_similarity": 0.448, + "concentration_similarity": 0.886, + "content_similarity": 0.752, + "left_pr_number": 67332, + "right_pr_number": 67333, "shared_directories": [ + "src/agents/sandbox", "src/agents/tools", "src/agents", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.test.ts", - "src/agents/tools/sessions-spawn-tool.ts" + "src/agents/apply-patch.test.ts", + "src/agents/apply-patch.ts", + "src/agents/fs-permission-denied.test.ts", + "src/agents/fs-permission-denied.ts", + "src/agents/openclaw-tools.owner-authorization.test.ts", + "src/agents/openclaw-tools.ts", + "src/agents/pi-tools.read.ts", + "src/agents/pi-tools.workspace-paths.test.ts", + "src/agents/sandbox/fs-bridge-path-safety.ts", + "src/agents/sandbox/fs-bridge.ts" ], - "similarity": 0.465, - "size_similarity": 0.454 + "similarity": 0.702, + "size_similarity": 0.581 }, { - "breadth_similarity": 0.216, - "concentration_similarity": 0.472, - "content_similarity": 0.49, - "left_pr_number": 64787, - "right_pr_number": 65282, + "breadth_similarity": 0.583, + "concentration_similarity": 0.764, + "content_similarity": 0.652, + "left_pr_number": 67331, + "right_pr_number": 67332, "shared_directories": [ - "src/agents/tools", + "src/agents/sandbox", "src/agents", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.test.ts", - "src/agents/tools/sessions-spawn-tool.ts" + "src/agents/apply-patch.test.ts", + "src/agents/apply-patch.ts", + "src/agents/fs-permission-denied.test.ts", + "src/agents/fs-permission-denied.ts", + "src/agents/pi-tools.read.ts", + "src/agents/pi-tools.workspace-paths.test.ts", + "src/agents/sandbox/fs-bridge-path-safety.ts", + "src/agents/sandbox/fs-bridge.ts", + "src/agents/sandbox/remote-fs-bridge.ts" ], - "similarity": 0.423, - "size_similarity": 0.231 + "similarity": 0.615, + "size_similarity": 0.415 }, { - "breadth_similarity": 0.7, - "concentration_similarity": 0.987, - "content_similarity": 0.218, - "left_pr_number": 53632, - "right_pr_number": 68726, + "breadth_similarity": 0.764, + "concentration_similarity": 0.829, + "content_similarity": 0.624, + "left_pr_number": 67333, + "right_pr_number": 67345, "shared_directories": [ + "src/agents/sandbox", "src/agents/tools", "src/agents", - "src" + "src/commands", + "src/flows", + "test/fixtures", + "scripts", + "src", + "test" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "package.json", + "scripts/check-claw-code-parity-harness.mjs", + "src/agents/apply-patch.test.ts", + "src/agents/apply-patch.ts", + "src/agents/bash-tools.exec.ts", + "src/agents/bash-validation.test.ts", + "src/agents/bash-validation.ts", + "src/agents/fs-permission-denied.test.ts", + "src/agents/fs-permission-denied.ts", + "src/agents/openclaw-tools.owner-authorization.test.ts" ], - "similarity": 0.398, - "size_similarity": 0.844 + "similarity": 0.61, + "size_similarity": 0.364 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.632, - "content_similarity": 0.288, - "left_pr_number": 53632, - "right_pr_number": 68397, + "breadth_similarity": 0.326, + "concentration_similarity": 0.944, + "content_similarity": 0.486, + "left_pr_number": 67332, + "right_pr_number": 67345, "shared_directories": [ + "src/agents/sandbox", "src/agents/tools", "src/agents", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "src/agents/apply-patch.test.ts", + "src/agents/apply-patch.ts", + "src/agents/fs-permission-denied.test.ts", + "src/agents/fs-permission-denied.ts", + "src/agents/openclaw-tools.owner-authorization.test.ts", + "src/agents/openclaw-tools.ts", + "src/agents/pi-tools.read.ts", + "src/agents/pi-tools.workspace-paths.test.ts", + "src/agents/sandbox/fs-bridge-path-safety.ts", + "src/agents/sandbox/fs-bridge.ts" ], - "similarity": 0.395, - "size_similarity": 0.776 + "similarity": 0.452, + "size_similarity": 0.212 }, { - "breadth_similarity": 0.533, - "concentration_similarity": 0.608, - "content_similarity": 0.296, - "left_pr_number": 53281, - "right_pr_number": 66720, + "breadth_similarity": 0.252, + "concentration_similarity": 0.65, + "content_similarity": 0.497, + "left_pr_number": 67331, + "right_pr_number": 67333, "shared_directories": [ - "src/agents/tools", + "src/agents/sandbox", "src/agents", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "src/agents/apply-patch.test.ts", + "src/agents/apply-patch.ts", + "src/agents/fs-permission-denied.test.ts", + "src/agents/fs-permission-denied.ts", + "src/agents/pi-tools.read.ts", + "src/agents/pi-tools.workspace-paths.test.ts", + "src/agents/sandbox/fs-bridge-path-safety.ts", + "src/agents/sandbox/fs-bridge.ts", + "src/agents/sandbox/remote-fs-bridge.ts" ], - "similarity": 0.391, - "size_similarity": 0.667 + "similarity": 0.442, + "size_similarity": 0.241 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.632, - "content_similarity": 0.284, - "left_pr_number": 53632, - "right_pr_number": 65282, + "breadth_similarity": 0.188, + "concentration_similarity": 0.82, + "content_similarity": 0.304, + "left_pr_number": 67331, + "right_pr_number": 67345, "shared_directories": [ - "src/agents/tools", + "src/agents/sandbox", "src/agents", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "src/agents/apply-patch.test.ts", + "src/agents/apply-patch.ts", + "src/agents/fs-permission-denied.test.ts", + "src/agents/fs-permission-denied.ts", + "src/agents/pi-tools.read.ts", + "src/agents/pi-tools.workspace-paths.test.ts", + "src/agents/sandbox/fs-bridge-path-safety.ts", + "src/agents/sandbox/fs-bridge.ts", + "src/agents/sandbox/remote-fs-bridge.ts" ], - "similarity": 0.374, - "size_similarity": 0.658 - }, + "similarity": 0.286, + "size_similarity": 0.088 + } + ], + "pr_count": 4, + "pr_numbers": [ + 67331, + 67332, + 67333, + 67345 + ], + "recent_pr_count": 4, + "recent_pr_numbers": [ + 67331, + 67332, + 67333, + 67345 + ], + "representative_pr_number": 67332, + "representative_title": "agents: wire task/team tools with owner-only authorization", + "representative_url": "https://github.com/openclaw/openclaw/pull/67332", + "shared_directories": [ + "src/agents/sandbox", + "src/agents", + "src", + "src/agents/tools", + "test/fixtures", + "src/flows", + "src/commands", + "test" + ], + "shared_filenames": [ + "src/agents/fs-permission-denied.test.ts", + "src/agents/fs-permission-denied.ts", + "src/agents/pi-tools.workspace-paths.test.ts", + "src/agents/sandbox/fs-bridge-path-safety.ts", + "src/agents/apply-patch.test.ts", + "src/agents/apply-patch.ts", + "src/agents/sandbox/fs-bridge.ts", + "src/agents/sandbox/remote-fs-bridge.ts" + ], + "summary": "4 open PRs share weighted file overlap around `src/agents/fs-permission-denied.test.ts`, `src/agents/fs-permission-denied.ts`, `src/agents/pi-tools.workspace-paths.test.ts`; representative PR #67332.", + "title": "Scope: agents: wire task/team tools with owner-only authorization" + }, + { + "authors": [ + "oliviareid-svg", + "wirjo" + ], + "average_similarity": 0.497, + "cluster_id": "pr-scope-67341-4", + "kind": "pr_scope", + "last_activity_at": "2026-04-19T09:59:48Z", + "outside_window_prs": [], + "pairwise": [ { - "breadth_similarity": 0.333, - "concentration_similarity": 0.453, - "content_similarity": 0.249, - "left_pr_number": 53631, - "right_pr_number": 68397, + "breadth_similarity": 0.417, + "concentration_similarity": 0.95, + "content_similarity": 0.838, + "left_pr_number": 68725, + "right_pr_number": 68730, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/amazon-bedrock-mantle", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/amazon-bedrock-mantle/discovery.ts" ], - "similarity": 0.369, - "size_similarity": 0.925 + "similarity": 0.789, + "size_similarity": 0.755 }, { - "breadth_similarity": 0.917, - "concentration_similarity": 0.958, - "content_similarity": 0.194, - "left_pr_number": 53281, - "right_pr_number": 53631, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.389, + "left_pr_number": 68725, + "right_pr_number": 68903, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/amazon-bedrock-mantle", + "extensions" ], "shared_filenames": [ - "src/agents/subagent-spawn.ts", - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/amazon-bedrock-mantle/discovery.ts" ], - "similarity": 0.361, - "size_similarity": 0.57 + "similarity": 0.532, + "size_similarity": 0.981 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.808, - "content_similarity": 0.188, - "left_pr_number": 53631, - "right_pr_number": 68726, + "breadth_similarity": 0.625, + "concentration_similarity": 0.95, + "content_similarity": 0.427, + "left_pr_number": 68730, + "right_pr_number": 68903, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/amazon-bedrock-mantle", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/amazon-bedrock-mantle/discovery.test.ts", + "extensions/amazon-bedrock-mantle/discovery.ts" ], - "similarity": 0.349, - "size_similarity": 0.849 + "similarity": 0.52, + "size_similarity": 0.741 }, { - "breadth_similarity": 0.341, - "concentration_similarity": 0.585, - "content_similarity": 0.284, - "left_pr_number": 64787, - "right_pr_number": 66720, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.373, + "left_pr_number": 67341, + "right_pr_number": 68903, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" + "extensions/amazon-bedrock-mantle", + "extensions" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/amazon-bedrock-mantle/register.sync.runtime.ts" ], - "similarity": 0.348, - "size_similarity": 0.574 + "similarity": 0.478, + "size_similarity": 0.611 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 0.863, - "content_similarity": 0.224, - "left_pr_number": 53281, - "right_pr_number": 53632, + "breadth_similarity": 0.583, + "concentration_similarity": 0.95, + "content_similarity": 0.148, + "left_pr_number": 67341, + "right_pr_number": 68730, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/subagent-spawn.ts", - "src/agents/tools/sessions-spawn-tool.ts" + "extensions/amazon-bedrock-mantle", + "extensions" ], - "similarity": 0.345, - "size_similarity": 0.409 + "shared_filenames": [], + "similarity": 0.333, + "size_similarity": 0.825 }, { - "breadth_similarity": 0.333, - "concentration_similarity": 0.453, - "content_similarity": 0.246, - "left_pr_number": 53631, - "right_pr_number": 65282, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.159, + "left_pr_number": 67341, + "right_pr_number": 68725, "shared_directories": [ - "src/agents/tools", + "extensions/amazon-bedrock-mantle", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.33, + "size_similarity": 0.623 + } + ], + "pr_count": 4, + "pr_numbers": [ + 67341, + 68725, + 68730, + 68903 + ], + "recent_pr_count": 4, + "recent_pr_numbers": [ + 67341, + 68725, + 68730, + 68903 + ], + "representative_pr_number": 68725, + "representative_title": "feat(amazon-bedrock-mantle): add known context windows for open-weight Mantle models", + "representative_url": "https://github.com/openclaw/openclaw/pull/68725", + "shared_directories": [ + "extensions/amazon-bedrock-mantle", + "extensions" + ], + "shared_filenames": [ + "extensions/amazon-bedrock-mantle/discovery.ts", + "extensions/amazon-bedrock-mantle/discovery.test.ts", + "extensions/amazon-bedrock-mantle/register.sync.runtime.ts" + ], + "summary": "4 open PRs share weighted file overlap around `extensions/amazon-bedrock-mantle/discovery.ts`, `extensions/amazon-bedrock-mantle/discovery.test.ts`, `extensions/amazon-bedrock-mantle/register.sync.runtime.ts`; representative PR #68725.", + "title": "Scope: feat(amazon-bedrock-mantle): add known context windows for open-weight Mantle models" + }, + { + "authors": [ + "aboimpinto", + "anyech", + "jasonmakr", + "miyago9267" + ], + "average_similarity": 0.48, + "cluster_id": "pr-scope-67662-4", + "kind": "pr_scope", + "last_activity_at": "2026-04-19T05:53:26Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.339, + "concentration_similarity": 0.792, + "content_similarity": 0.702, + "left_pr_number": 67662, + "right_pr_number": 68420, + "shared_directories": [ + "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", + "src/agents/pi-embedded-runner/run.ts" ], - "similarity": 0.299, - "size_similarity": 0.472 + "similarity": 0.625, + "size_similarity": 0.396 }, { - "breadth_similarity": 0.648, - "concentration_similarity": 0.981, - "content_similarity": 0.145, - "left_pr_number": 53631, - "right_pr_number": 64787, + "breadth_similarity": 0.75, + "concentration_similarity": 0.599, + "content_similarity": 0.452, + "left_pr_number": 67662, + "right_pr_number": 68453, "shared_directories": [ - "src/agents/tools", + "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", + "src/agents/pi-embedded-runner/run.ts" ], - "similarity": 0.289, - "size_similarity": 0.491 + "similarity": 0.511, + "size_similarity": 0.599 }, { - "breadth_similarity": 0.533, - "concentration_similarity": 0.85, - "content_similarity": 0.163, - "left_pr_number": 53281, - "right_pr_number": 68726, + "breadth_similarity": 0.5, + "concentration_similarity": 0.878, + "content_similarity": 0.476, + "left_pr_number": 68453, + "right_pr_number": 68512, "shared_directories": [ - "src/agents/tools", + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", + "src/agents/pi-embedded-runner/run.ts", + "src/agents/pi-embedded-runner/run/incomplete-turn.ts" ], - "similarity": 0.283, - "size_similarity": 0.484 + "similarity": 0.482, + "size_similarity": 0.364 }, { - "breadth_similarity": 0.477, - "concentration_similarity": 0.841, - "content_similarity": 0.168, - "left_pr_number": 53632, - "right_pr_number": 64787, + "breadth_similarity": 0.464, + "concentration_similarity": 0.807, + "content_similarity": 0.403, + "left_pr_number": 68420, + "right_pr_number": 68453, "shared_directories": [ - "src/agents/tools", + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", + "src/agents/pi-embedded-runner/run.ts" ], - "similarity": 0.26, - "size_similarity": 0.352 + "similarity": 0.468, + "size_similarity": 0.661 }, { - "breadth_similarity": 0.341, - "concentration_similarity": 0.828, - "content_similarity": 0.16, - "left_pr_number": 64787, - "right_pr_number": 68726, + "breadth_similarity": 0.929, + "concentration_similarity": 0.685, + "content_similarity": 0.331, + "left_pr_number": 68420, + "right_pr_number": 68512, "shared_directories": [ - "src/agents/tools", + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts" + "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", + "src/agents/pi-embedded-runner/run.ts" ], - "similarity": 0.25, - "size_similarity": 0.417 + "similarity": 0.441, + "size_similarity": 0.551 + }, + { + "breadth_similarity": 0.375, + "concentration_similarity": 0.476, + "content_similarity": 0.367, + "left_pr_number": 67662, + "right_pr_number": 68512, + "shared_directories": [ + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", + "src/agents/pi-embedded-runner/run.ts" + ], + "similarity": 0.351, + "size_similarity": 0.218 } ], - "pr_count": 8, + "pr_count": 4, "pr_numbers": [ - 53281, - 53631, - 53632, - 64787, - 65282, - 66720, - 68397, - 68726 + 67662, + 68420, + 68453, + 68512 ], "recent_pr_count": 4, "recent_pr_numbers": [ - 65282, - 66720, - 68397, - 68726 + 67662, + 68420, + 68453, + 68512 ], - "representative_pr_number": 68397, - "representative_title": "fix(sessions_spawn): silently strip ACP-only fields for runtime=subagent", - "representative_url": "https://github.com/openclaw/openclaw/pull/68397", + "representative_pr_number": 68420, + "representative_title": "Agents/fallback: rotate to fallback model on incomplete-turn exits", + "representative_url": "https://github.com/openclaw/openclaw/pull/68420", "shared_directories": [ - "src/agents/tools", + "src/agents/pi-embedded-runner", "src/agents", - "src" + "src", + "src/agents/pi-embedded-runner/run" ], "shared_filenames": [ - "src/agents/tools/sessions-spawn-tool.ts", - "src/agents/tools/sessions-spawn-tool.test.ts", - "src/agents/subagent-spawn.ts", - "src/agents/subagent-registry.types.ts", - "src/agents/subagent-registry.ts", - "src/agents/subagent-announce.ts" + "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", + "src/agents/pi-embedded-runner/run.ts", + "src/agents/pi-embedded-runner/run/incomplete-turn.ts" ], - "summary": "8 open PRs share weighted file overlap around `src/agents/tools/sessions-spawn-tool.ts`, `src/agents/tools/sessions-spawn-tool.test.ts`, `src/agents/subagent-spawn.ts`; representative PR #68397.", - "title": "Scope: fix(sessions_spawn): silently strip ACP-only fields for runtime=subagent" + "summary": "4 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/run.incomplete-turn.test.ts`, `src/agents/pi-embedded-runner/run.ts`, `src/agents/pi-embedded-runner/run/incomplete-turn.ts`; representative PR #68420.", + "title": "Scope: Agents/fallback: rotate to fallback model on incomplete-turn exits" }, { "authors": [ - "Jay-ju", - "amittell", - "zhangyue19921010" + "kevinheneveld", + "moorsecopers99", + "rvajustin" ], - "average_similarity": 0.48, - "cluster_id": "pr-scope-63502-6", + "average_similarity": 0.444, + "cluster_id": "pr-scope-67208-4", "kind": "pr_scope", - "last_activity_at": "2026-04-17T12:56:15Z", - "outside_window_prs": [ - { - "additions": 136, - "author": "ddupg", - "changed_files": 4, - "created_at": "2026-04-09T02:49:41Z", - "deletions": 4, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63502/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63502", - "merged": false, - "number": 63502, - "state": "open", - "title": "feat(memory-lancedb): add cloud storage support to memory-lancedb", - "updated_at": "2026-04-13T03:44:40Z" - }, - { - "additions": 228, - "author": "l0cka", - "changed_files": 2, - "created_at": "2026-04-12T00:35:15Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65066/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65066", - "merged": false, - "number": 65066, - "state": "open", - "title": "fix(memory-lancedb): register runtime for doctor and status", - "updated_at": "2026-04-12T01:13:38Z" - } - ], + "last_activity_at": "2026-04-21T17:16:07Z", + "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.901, - "left_pr_number": 67952, - "right_pr_number": 68116, - "shared_directories": [ - "extensions/memory-lancedb", - "extensions" - ], - "shared_filenames": [ - "extensions/memory-lancedb/index.ts" - ], - "similarity": 0.928, - "size_similarity": 0.981 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.64, - "left_pr_number": 63502, - "right_pr_number": 65066, - "shared_directories": [ - "extensions/memory-lancedb", - "extensions" - ], - "shared_filenames": [ - "extensions/memory-lancedb/index.test.ts", - "extensions/memory-lancedb/index.ts" - ], - "similarity": 0.665, - "size_similarity": 0.614 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.559, - "left_pr_number": 65066, - "right_pr_number": 66913, + "breadth_similarity": 0.5, + "concentration_similarity": 0.537, + "content_similarity": 0.639, + "left_pr_number": 67208, + "right_pr_number": 67533, "shared_directories": [ - "extensions/memory-lancedb", - "extensions" + "src/gateway/server-methods", + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/memory-lancedb/index.test.ts", - "extensions/memory-lancedb/index.ts" + "src/gateway/server-methods/chat.ts", + "src/gateway/server-methods/server-methods.test.ts" ], "similarity": 0.605, - "size_similarity": 0.425 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.517, - "left_pr_number": 63502, - "right_pr_number": 66913, - "shared_directories": [ - "extensions/memory-lancedb", - "extensions" - ], - "shared_filenames": [ - "extensions/memory-lancedb/index.test.ts", - "extensions/memory-lancedb/index.ts" - ], - "similarity": 0.591, - "size_similarity": 0.693 + "size_similarity": 0.537 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.594, - "left_pr_number": 65066, - "right_pr_number": 67952, + "content_similarity": 0.466, + "left_pr_number": 67533, + "right_pr_number": 68235, "shared_directories": [ - "extensions/memory-lancedb", - "extensions" + "src/gateway/server-methods", + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/memory-lancedb/index.ts" + "src/gateway/server-methods/server-methods.test.ts" ], - "similarity": 0.576, - "size_similarity": 0.232 + "similarity": 0.528, + "size_similarity": 0.341 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.568, - "left_pr_number": 65066, - "right_pr_number": 68116, + "breadth_similarity": 0.268, + "concentration_similarity": 0.74, + "content_similarity": 0.567, + "left_pr_number": 67533, + "right_pr_number": 68262, "shared_directories": [ - "extensions/memory-lancedb", - "extensions" + "src/gateway/server-methods", + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/memory-lancedb/index.ts" + "src/gateway/server-methods/chat.ts", + "src/gateway/server-methods/server-methods.test.ts" ], - "similarity": 0.557, - "size_similarity": 0.228 + "similarity": 0.475, + "size_similarity": 0.096 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.331, - "left_pr_number": 63502, - "right_pr_number": 68060, + "breadth_similarity": 0.536, + "concentration_similarity": 0.797, + "content_similarity": 0.363, + "left_pr_number": 67208, + "right_pr_number": 68262, "shared_directories": [ - "extensions/memory-lancedb", - "extensions" + "src/gateway/server-methods", + "src/gateway", + "extensions", + "src" ], "shared_filenames": [ - "extensions/memory-lancedb/config.ts", - "extensions/memory-lancedb/index.ts" + "src/gateway/server-methods/chat.ts", + "src/gateway/server-methods/server-methods.test.ts" ], - "similarity": 0.422, - "size_similarity": 0.266 + "similarity": 0.374, + "size_similarity": 0.178 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 1.0, - "content_similarity": 0.343, - "left_pr_number": 63502, - "right_pr_number": 67952, + "breadth_similarity": 0.268, + "concentration_similarity": 0.74, + "content_similarity": 0.429, + "left_pr_number": 68235, + "right_pr_number": 68262, "shared_directories": [ - "extensions/memory-lancedb", - "extensions" + "src/gateway/server-methods", + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/memory-lancedb/index.ts" + "src/gateway/server-methods/server-methods.test.ts" ], - "similarity": 0.409, - "size_similarity": 0.379 + "similarity": 0.369, + "size_similarity": 0.033 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.261, - "left_pr_number": 65066, - "right_pr_number": 68060, + "breadth_similarity": 0.5, + "concentration_similarity": 0.537, + "content_similarity": 0.298, + "left_pr_number": 67208, + "right_pr_number": 68235, "shared_directories": [ - "extensions/memory-lancedb", - "extensions" + "src/gateway/server-methods", + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/memory-lancedb/index.ts" + "src/gateway/server-methods/server-methods.test.ts" ], - "similarity": 0.372, - "size_similarity": 0.433 - }, + "similarity": 0.313, + "size_similarity": 0.183 + } + ], + "pr_count": 4, + "pr_numbers": [ + 67208, + 67533, + 68235, + 68262 + ], + "recent_pr_count": 4, + "recent_pr_numbers": [ + 67208, + 67533, + 68235, + 68262 + ], + "representative_pr_number": 67533, + "representative_title": "fix(ui): render uploaded images in Control UI chat after history reload", + "representative_url": "https://github.com/openclaw/openclaw/pull/67533", + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src", + "extensions" + ], + "shared_filenames": [ + "src/gateway/server-methods/server-methods.test.ts", + "src/gateway/server-methods/chat.ts" + ], + "summary": "4 open PRs share weighted file overlap around `src/gateway/server-methods/server-methods.test.ts`, `src/gateway/server-methods/chat.ts`; representative PR #67533.", + "title": "Scope: fix(ui): render uploaded images in Control UI chat after history reload" + }, + { + "authors": [ + "Sanjays2402", + "kagura-agent", + "leochame", + "solomonneas" + ], + "average_similarity": 0.443, + "cluster_id": "pr-scope-67601-4", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T13:38:16Z", + "outside_window_prs": [], + "pairwise": [ { - "breadth_similarity": 0.625, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.287, - "left_pr_number": 63502, - "right_pr_number": 68116, + "content_similarity": 0.623, + "left_pr_number": 68534, + "right_pr_number": 68876, "shared_directories": [ - "extensions/memory-lancedb", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], "shared_filenames": [ - "extensions/memory-lancedb/index.ts" + "extensions/memory-core/src/dreaming-phases.test.ts", + "extensions/memory-core/src/dreaming-phases.ts" ], - "similarity": 0.369, - "size_similarity": 0.371 + "similarity": 0.646, + "size_similarity": 0.4 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.23, - "left_pr_number": 66913, - "right_pr_number": 68116, + "breadth_similarity": 0.292, + "concentration_similarity": 0.957, + "content_similarity": 0.432, + "left_pr_number": 67601, + "right_pr_number": 68534, "shared_directories": [ - "extensions/memory-lancedb", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], "shared_filenames": [ - "extensions/memory-lancedb/index.ts" + "extensions/memory-core/src/dreaming-phases.test.ts", + "extensions/memory-core/src/dreaming-phases.ts" ], - "similarity": 0.366, - "size_similarity": 0.536 + "similarity": 0.447, + "size_similarity": 0.453 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.226, - "left_pr_number": 66913, - "right_pr_number": 67952, + "breadth_similarity": 0.292, + "concentration_similarity": 0.957, + "content_similarity": 0.46, + "left_pr_number": 67601, + "right_pr_number": 68876, "shared_directories": [ - "extensions/memory-lancedb", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], "shared_filenames": [ - "extensions/memory-lancedb/index.ts" + "extensions/memory-core/src/dreaming-phases.test.ts", + "extensions/memory-core/src/dreaming-phases.ts" ], - "similarity": 0.365, - "size_similarity": 0.546 + "similarity": 0.426, + "size_similarity": 0.181 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 1.0, - "content_similarity": 0.322, - "left_pr_number": 68060, - "right_pr_number": 68116, + "breadth_similarity": 0.292, + "concentration_similarity": 0.957, + "content_similarity": 0.442, + "left_pr_number": 67601, + "right_pr_number": 68774, "shared_directories": [ - "extensions/memory-lancedb", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], "shared_filenames": [ - "extensions/memory-lancedb/index.ts" + "extensions/memory-core/src/short-term-promotion.test.ts", + "extensions/memory-core/src/short-term-promotion.ts" ], - "similarity": 0.353, - "size_similarity": 0.099 + "similarity": 0.419, + "size_similarity": 0.217 }, { - "breadth_similarity": 0.625, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.314, - "left_pr_number": 67952, - "right_pr_number": 68060, + "content_similarity": 0.159, + "left_pr_number": 68774, + "right_pr_number": 68876, "shared_directories": [ - "extensions/memory-lancedb", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [ - "extensions/memory-lancedb/index.ts" - ], - "similarity": 0.347, - "size_similarity": 0.101 + "shared_filenames": [], + "similarity": 0.386, + "size_similarity": 0.834 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.17, - "left_pr_number": 66913, - "right_pr_number": 68060, + "content_similarity": 0.162, + "left_pr_number": 68534, + "right_pr_number": 68774, "shared_directories": [ - "extensions/memory-lancedb", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [ - "extensions/memory-lancedb/index.ts" - ], - "similarity": 0.272, - "size_similarity": 0.184 + "shared_filenames": [], + "similarity": 0.336, + "size_similarity": 0.48 } ], - "pr_count": 6, + "pr_count": 4, "pr_numbers": [ - 63502, - 65066, - 66913, - 67952, - 68060, - 68116 + 67601, + 68534, + 68774, + 68876 ], "recent_pr_count": 4, "recent_pr_numbers": [ - 66913, - 67952, - 68060, - 68116 + 67601, + 68534, + 68774, + 68876 ], - "representative_pr_number": 65066, - "representative_title": "fix(memory-lancedb): register runtime for doctor and status", - "representative_url": "https://github.com/openclaw/openclaw/pull/65066", + "representative_pr_number": 68876, + "representative_title": "fix(memory): filter cron-triggered sessions and NO_REPLY sentinels from dreaming corpus (addresses #68449)", + "representative_url": "https://github.com/openclaw/openclaw/pull/68876", "shared_directories": [ - "extensions/memory-lancedb", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], "shared_filenames": [ - "extensions/memory-lancedb/index.ts", - "extensions/memory-lancedb/index.test.ts", - "extensions/memory-lancedb/config.ts" + "extensions/memory-core/src/dreaming-phases.test.ts", + "extensions/memory-core/src/dreaming-phases.ts", + "extensions/memory-core/src/short-term-promotion.test.ts", + "extensions/memory-core/src/short-term-promotion.ts" ], - "summary": "6 open PRs share weighted file overlap around `extensions/memory-lancedb/index.ts`, `extensions/memory-lancedb/index.test.ts`, `extensions/memory-lancedb/config.ts`; representative PR #65066.", - "title": "Scope: fix(memory-lancedb): register runtime for doctor and status" + "summary": "4 open PRs share weighted file overlap around `extensions/memory-core/src/dreaming-phases.test.ts`, `extensions/memory-core/src/dreaming-phases.ts`, `extensions/memory-core/src/short-term-promotion.test.ts`; representative PR #68876.", + "title": "Scope: fix(memory): filter cron-triggered sessions and NO_REPLY sentinels from dreaming corpus (addresses #68449)" }, { "authors": [ - "Angfr95", - "nir-insuretax" + "MoerAI", + "huiwen01", + "mvanhorn" ], - "average_similarity": 0.42, - "cluster_id": "pr-scope-63840-6", + "average_similarity": 0.424, + "cluster_id": "pr-scope-37545-12", "kind": "pr_scope", - "last_activity_at": "2026-04-16T13:44:49Z", + "last_activity_at": "2026-04-18T17:19:37Z", "outside_window_prs": [ { - "additions": 61, - "author": "zozo123", - "changed_files": 3, - "created_at": "2026-04-09T16:30:50Z", - "deletions": 3, + "additions": 558, + "author": "JinYang88", + "changed_files": 4, + "created_at": "2026-03-06T09:15:29Z", + "deletions": 121, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63840/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63840", + "files_url": "https://github.com/openclaw/openclaw/pull/37545/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37545", "merged": false, - "number": 63840, + "number": 37545, "state": "open", - "title": "fix(slack): preserve thread context for Agents & Assistants DM root messages", - "updated_at": "2026-04-12T08:04:11Z" + "title": "feat(feishu): add thinking panel with collapsible reasoning and tool tracking", + "updated_at": "2026-04-19T04:33:50Z" }, { - "additions": 58, - "author": "chen-zhang-cs-code", - "changed_files": 4, - "created_at": "2026-04-11T04:28:34Z", - "deletions": 10, + "additions": 68, + "author": "allan0509", + "changed_files": 1, + "created_at": "2026-03-24T08:04:03Z", + "deletions": 38, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64632/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64632", + "files_url": "https://github.com/openclaw/openclaw/pull/53534/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53534", "merged": false, - "number": 64632, + "number": 53534, "state": "open", - "title": "fix(slack): preserve media roots through custom invoke", - "updated_at": "2026-04-14T02:50:22Z" - } - ], - "pairwise": [ + "title": "fix(feishu): refine streaming card delivery", + "updated_at": "2026-03-24T20:15:30Z" + }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.967, - "content_similarity": 0.982, - "left_pr_number": 66342, - "right_pr_number": 66395, - "shared_directories": [ - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [ - "extensions/slack/src/monitor/provider.gateway-crash.test.ts", - "extensions/slack/src/monitor/provider.ts" - ], - "similarity": 0.939, - "size_similarity": 0.967 + "additions": 21, + "author": "rottenpen", + "changed_files": 3, + "created_at": "2026-03-24T16:11:29Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53787/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53787", + "merged": false, + "number": 53787, + "state": "open", + "title": "fix(feishu): guard against undefined receiveIdType in resolveFeishuSendTarget", + "updated_at": "2026-03-24T20:15:29Z" }, { - "breadth_similarity": 0.633, - "concentration_similarity": 0.586, - "content_similarity": 0.764, - "left_pr_number": 66395, - "right_pr_number": 66413, - "shared_directories": [ - "extensions/slack/src/monitor", - "extensions/slack/src", - "ui/src/ui", - "extensions/slack", - "ui/src", - "extensions", - "ui" - ], - "shared_filenames": [ - "extensions/slack/src/monitor/provider.gateway-crash.test.ts", - "extensions/slack/src/monitor/provider.ts", - "ui/src/ui/app-render.helpers.ts" - ], - "similarity": 0.713, - "size_similarity": 0.571 + "additions": 9, + "author": "Vicky-v7", + "changed_files": 1, + "created_at": "2026-03-26T04:47:46Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/54898/files", + "html_url": "https://github.com/openclaw/openclaw/pull/54898", + "merged": false, + "number": 54898, + "state": "open", + "title": "fix(feishu): strip leaked thinking content from streaming output", + "updated_at": "2026-04-21T13:30:13Z" }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.552, - "content_similarity": 0.75, - "left_pr_number": 66342, - "right_pr_number": 66413, - "shared_directories": [ - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [ - "extensions/slack/src/monitor/provider.gateway-crash.test.ts", - "extensions/slack/src/monitor/provider.ts" - ], - "similarity": 0.672, - "size_similarity": 0.552 + "additions": 154, + "author": "Vicky-v7", + "changed_files": 4, + "created_at": "2026-03-26T04:48:27Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/54899/files", + "html_url": "https://github.com/openclaw/openclaw/pull/54899", + "merged": false, + "number": 54899, + "state": "open", + "title": "fix(feishu): sanitize markdown in streaming cards to prevent truncation", + "updated_at": "2026-04-21T13:30:25Z" }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.975, - "content_similarity": 0.235, - "left_pr_number": 66395, - "right_pr_number": 67672, - "shared_directories": [ - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [ - "extensions/slack/src/monitor/provider.ts" - ], - "similarity": 0.399, - "size_similarity": 0.567 + "additions": 199, + "author": "Vicky-v7", + "changed_files": 4, + "created_at": "2026-04-02T15:43:51Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/59771/files", + "html_url": "https://github.com/openclaw/openclaw/pull/59771", + "merged": false, + "number": 59771, + "state": "open", + "title": "Fix Feishu streaming recovery after transient reply errors", + "updated_at": "2026-04-21T13:40:17Z" }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.998, - "content_similarity": 0.143, - "left_pr_number": 63840, - "right_pr_number": 66395, - "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.391, - "size_similarity": 0.938 + "additions": 111, + "author": "TaoXieSZ", + "changed_files": 7, + "created_at": "2026-04-10T02:21:25Z", + "deletions": 204, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64027/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64027", + "merged": false, + "number": 64027, + "state": "open", + "title": "feat(feishu): support in-place card content update on option click", + "updated_at": "2026-04-11T14:02:20Z" }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.899, - "content_similarity": 0.138, - "left_pr_number": 63840, - "right_pr_number": 64632, - "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions", - "src" - ], - "shared_filenames": [], - "similarity": 0.37, - "size_similarity": 0.941 + "additions": 75, + "author": "TaoXieSZ", + "changed_files": 3, + "created_at": "2026-04-11T12:55:33Z", + "deletions": 157, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64805/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64805", + "merged": false, + "number": 64805, + "state": "open", + "title": "feat(feishu): add token and context usage to streaming card footer", + "updated_at": "2026-04-11T14:08:30Z" }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.901, - "content_similarity": 0.143, - "left_pr_number": 64632, - "right_pr_number": 66395, - "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.365, - "size_similarity": 0.882 - }, + "additions": 1, + "author": "SARAMALI15792", + "changed_files": 1, + "created_at": "2026-04-13T19:50:45Z", + "deletions": 10, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66148/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66148", + "merged": false, + "number": 66148, + "state": "open", + "title": "fix(feishu): remove streaming card update throttle to prevent duplicates", + "updated_at": "2026-04-14T02:33:20Z" + } + ], + "pairwise": [ { - "breadth_similarity": 0.583, - "concentration_similarity": 0.941, - "content_similarity": 0.24, - "left_pr_number": 66342, - "right_pr_number": 67672, + "breadth_similarity": 0.714, + "concentration_similarity": 1.0, + "content_similarity": 0.872, + "left_pr_number": 64027, + "right_pr_number": 64805, "shared_directories": [ - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", + "extensions/feishu/src", + "extensions/feishu", "extensions" ], "shared_filenames": [ - "extensions/slack/src/monitor/provider.ts" + "extensions/feishu/src/bot.ts", + "extensions/feishu/src/monitor.comment.test.ts", + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.361, - "size_similarity": 0.586 + "similarity": 0.842, + "size_similarity": 0.737 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.969, - "content_similarity": 0.145, - "left_pr_number": 63840, - "right_pr_number": 66342, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.901, + "left_pr_number": 53534, + "right_pr_number": 66148, "shared_directories": [ - "extensions/slack/src", - "extensions/slack", + "extensions/feishu/src", + "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.345, - "size_similarity": 0.906 + "shared_filenames": [ + "extensions/feishu/src/streaming-card.ts" + ], + "similarity": 0.796, + "size_similarity": 0.104 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.868, - "content_similarity": 0.146, - "left_pr_number": 64632, - "right_pr_number": 66342, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.653, + "left_pr_number": 53534, + "right_pr_number": 54899, "shared_directories": [ - "extensions/slack/src", - "extensions/slack", + "extensions/feishu/src", + "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.323, - "size_similarity": 0.853 + "shared_filenames": [ + "extensions/feishu/src/streaming-card.ts" + ], + "similarity": 0.67, + "size_similarity": 0.671 }, { "breadth_similarity": 1.0, - "concentration_similarity": 0.972, - "content_similarity": 0.127, - "left_pr_number": 63840, - "right_pr_number": 67672, + "concentration_similarity": 1.0, + "content_similarity": 0.561, + "left_pr_number": 54899, + "right_pr_number": 59771, "shared_directories": [ - "extensions/slack/src", - "extensions/slack", + "extensions/feishu/src", + "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.317, - "size_similarity": 0.531 + "shared_filenames": [ + "extensions/feishu/src/reply-dispatcher.ts", + "extensions/feishu/src/streaming-card.ts" + ], + "similarity": 0.657, + "size_similarity": 0.763 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.926, - "content_similarity": 0.127, - "left_pr_number": 64632, - "right_pr_number": 67672, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.649, + "left_pr_number": 53534, + "right_pr_number": 59771, "shared_directories": [ - "extensions/slack/src", - "extensions/slack", + "extensions/feishu/src", + "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.298, - "size_similarity": 0.5 - }, - { - "breadth_similarity": 0.733, - "concentration_similarity": 0.685, - "content_similarity": 0.111, - "left_pr_number": 64632, - "right_pr_number": 66413, - "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions", - "src" + "shared_filenames": [ + "extensions/feishu/src/streaming-card.ts" ], - "shared_filenames": [], - "similarity": 0.282, - "size_similarity": 0.648 + "similarity": 0.643, + "size_similarity": 0.512 }, { - "breadth_similarity": 0.633, - "concentration_similarity": 0.611, - "content_similarity": 0.18, - "left_pr_number": 66413, - "right_pr_number": 67672, + "breadth_similarity": 0.875, + "concentration_similarity": 1.0, + "content_similarity": 0.651, + "left_pr_number": 67783, + "right_pr_number": 68107, "shared_directories": [ - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", + "extensions/feishu/src", + "extensions/feishu", "extensions" ], "shared_filenames": [ - "extensions/slack/src/monitor/provider.ts" - ], - "similarity": 0.268, - "size_similarity": 0.324 - }, - { - "breadth_similarity": 0.633, - "concentration_similarity": 0.584, - "content_similarity": 0.11, - "left_pr_number": 63840, - "right_pr_number": 66413, - "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions", - "src" + "extensions/feishu/src/bot.ts", + "extensions/feishu/src/reply-dispatcher.test.ts", + "extensions/feishu/src/reply-dispatcher.ts" ], - "shared_filenames": [], - "similarity": 0.261, - "size_similarity": 0.61 - } - ], - "pr_count": 6, - "pr_numbers": [ - 63840, - 64632, - 66342, - 66395, - 66413, - 67672 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 66342, - 66395, - 66413, - 67672 - ], - "representative_pr_number": 66395, - "representative_title": "Fix/disable refresh during active turn", - "representative_url": "https://github.com/openclaw/openclaw/pull/66395", - "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions", - "extensions/slack/src/monitor", - "src", - "ui/src/ui", - "ui/src", - "ui" - ], - "shared_filenames": [ - "extensions/slack/src/monitor/provider.ts", - "extensions/slack/src/monitor/provider.gateway-crash.test.ts", - "ui/src/ui/app-render.helpers.ts" - ], - "summary": "6 open PRs share weighted file overlap around `extensions/slack/src/monitor/provider.ts`, `extensions/slack/src/monitor/provider.gateway-crash.test.ts`, `ui/src/ui/app-render.helpers.ts`; representative PR #66395.", - "title": "Scope: Fix/disable refresh during active turn" - }, - { - "authors": [ - "a137460387", - "evandance", - "kagura-agent", - "laopuhuluwa" - ], - "average_similarity": 0.392, - "cluster_id": "pr-scope-53533-6", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T07:11:39Z", - "outside_window_prs": [ - { - "additions": 438, - "author": "allan0509", - "changed_files": 7, - "created_at": "2026-03-24T08:04:02Z", - "deletions": 5, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53533/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53533", - "merged": false, - "number": 53533, - "state": "open", - "title": "feat(feishu): surface connection health state", - "updated_at": "2026-03-24T20:15:30Z" + "similarity": 0.637, + "size_similarity": 0.29 }, { - "additions": 339, - "author": "Ricardo-M-L", - "changed_files": 5, - "created_at": "2026-04-11T13:26:42Z", - "deletions": 67, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64820/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64820", - "merged": false, - "number": 64820, - "state": "open", - "title": "fix(feishu): break circular module init causing ReferenceError on group mention", - "updated_at": "2026-04-11T13:45:22Z" - } - ], - "pairwise": [ - { - "breadth_similarity": 0.714, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.801, - "left_pr_number": 53533, - "right_pr_number": 68840, + "content_similarity": 0.518, + "left_pr_number": 54898, + "right_pr_number": 68491, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], "shared_filenames": [ - "extensions/feishu/src/monitor.transport.test.ts", - "extensions/feishu/src/monitor.transport.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.771, - "size_similarity": 0.589 + "similarity": 0.603, + "size_similarity": 0.6 }, { - "breadth_similarity": 0.7, - "concentration_similarity": 1.0, - "content_similarity": 0.285, - "left_pr_number": 64820, - "right_pr_number": 67269, + "breadth_similarity": 0.25, + "concentration_similarity": 0.991, + "content_similarity": 0.74, + "left_pr_number": 37545, + "right_pr_number": 54898, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], "shared_filenames": [ - "extensions/feishu/src/monitor.account.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.433, - "size_similarity": 0.759 + "similarity": 0.595, + "size_similarity": 0.015 }, { - "breadth_similarity": 0.643, - "concentration_similarity": 1.0, - "content_similarity": 0.264, - "left_pr_number": 53533, - "right_pr_number": 67269, + "breadth_similarity": 0.5, + "concentration_similarity": 0.991, + "content_similarity": 0.614, + "left_pr_number": 37545, + "right_pr_number": 64805, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], "shared_filenames": [ - "extensions/feishu/src/monitor.account.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.423, - "size_similarity": 0.828 + "similarity": 0.581, + "size_similarity": 0.342 }, { - "breadth_similarity": 0.857, - "concentration_similarity": 1.0, - "content_similarity": 0.201, - "left_pr_number": 53533, - "right_pr_number": 64820, + "breadth_similarity": 0.25, + "concentration_similarity": 0.991, + "content_similarity": 0.717, + "left_pr_number": 37545, + "right_pr_number": 68491, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], "shared_filenames": [ - "extensions/feishu/src/monitor.account.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.414, - "size_similarity": 0.916 + "similarity": 0.578, + "size_similarity": 0.009 }, { - "breadth_similarity": 0.786, + "breadth_similarity": 0.875, "concentration_similarity": 1.0, - "content_similarity": 0.241, - "left_pr_number": 53533, - "right_pr_number": 67466, + "content_similarity": 0.464, + "left_pr_number": 59771, + "right_pr_number": 68107, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], "shared_filenames": [ - "extensions/feishu/src/monitor.ts" + "extensions/feishu/src/reply-dispatcher.test.ts", + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.406, - "size_similarity": 0.725 + "similarity": 0.575, + "size_similarity": 0.749 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.15, - "left_pr_number": 67466, - "right_pr_number": 68514, + "content_similarity": 0.464, + "left_pr_number": 64805, + "right_pr_number": 68107, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.391, - "size_similarity": 0.91 + "shared_filenames": [ + "extensions/feishu/src/bot.ts", + "extensions/feishu/src/reply-dispatcher.ts" + ], + "similarity": 0.575, + "size_similarity": 0.668 }, { - "breadth_similarity": 0.9, + "breadth_similarity": 0.667, "concentration_similarity": 1.0, - "content_similarity": 0.157, - "left_pr_number": 64820, - "right_pr_number": 67466, + "content_similarity": 0.542, + "left_pr_number": 53787, + "right_pr_number": 68491, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.369, - "size_similarity": 0.791 + "shared_filenames": [ + "extensions/feishu/src/reply-dispatcher.ts" + ], + "similarity": 0.53, + "size_similarity": 0.231 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 1.0, - "content_similarity": 0.155, - "left_pr_number": 67466, - "right_pr_number": 68840, + "breadth_similarity": 0.5, + "concentration_similarity": 0.991, + "content_similarity": 0.56, + "left_pr_number": 37545, + "right_pr_number": 68107, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.368, - "size_similarity": 0.813 + "shared_filenames": [ + "extensions/feishu/src/reply-dispatcher.ts" + ], + "similarity": 0.526, + "size_similarity": 0.228 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 1.0, - "content_similarity": 0.138, - "left_pr_number": 68514, - "right_pr_number": 68840, + "breadth_similarity": 0.411, + "concentration_similarity": 0.991, + "content_similarity": 0.515, + "left_pr_number": 37545, + "right_pr_number": 64027, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.368, - "size_similarity": 0.894 + "shared_filenames": [ + "extensions/feishu/src/reply-dispatcher.ts" + ], + "similarity": 0.521, + "size_similarity": 0.464 }, { - "breadth_similarity": 0.9, + "breadth_similarity": 0.667, "concentration_similarity": 1.0, - "content_similarity": 0.14, - "left_pr_number": 64820, - "right_pr_number": 68514, + "content_similarity": 0.559, + "left_pr_number": 64805, + "right_pr_number": 68491, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.346, - "size_similarity": 0.719 + "shared_filenames": [ + "extensions/feishu/src/reply-dispatcher.ts" + ], + "similarity": 0.512, + "size_similarity": 0.026 }, { - "breadth_similarity": 0.8, + "breadth_similarity": 0.625, "concentration_similarity": 1.0, - "content_similarity": 0.145, - "left_pr_number": 64820, - "right_pr_number": 68840, + "content_similarity": 0.553, + "left_pr_number": 54899, + "right_pr_number": 66148, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.328, - "size_similarity": 0.643 + "shared_filenames": [ + "extensions/feishu/src/streaming-card.ts" + ], + "similarity": 0.51, + "size_similarity": 0.07 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.875, "concentration_similarity": 1.0, - "content_similarity": 0.158, - "left_pr_number": 67269, - "right_pr_number": 67466, + "content_similarity": 0.328, + "left_pr_number": 59771, + "right_pr_number": 64805, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.326, - "size_similarity": 0.6 + "shared_filenames": [ + "extensions/feishu/src/reply-dispatcher.ts" + ], + "similarity": 0.501, + "size_similarity": 0.892 }, { - "breadth_similarity": 0.786, + "breadth_similarity": 0.667, "concentration_similarity": 1.0, - "content_similarity": 0.138, - "left_pr_number": 53533, - "right_pr_number": 68514, + "content_similarity": 0.536, + "left_pr_number": 68107, + "right_pr_number": 68491, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.324, - "size_similarity": 0.659 + "shared_filenames": [ + "extensions/feishu/src/reply-dispatcher.ts" + ], + "similarity": 0.498, + "size_similarity": 0.039 }, { - "breadth_similarity": 0.833, + "breadth_similarity": 0.625, "concentration_similarity": 1.0, - "content_similarity": 0.146, - "left_pr_number": 67269, - "right_pr_number": 68840, + "content_similarity": 0.531, + "left_pr_number": 59771, + "right_pr_number": 66148, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.309, - "size_similarity": 0.488 + "shared_filenames": [ + "extensions/feishu/src/streaming-card.ts" + ], + "similarity": 0.492, + "size_similarity": 0.053 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.667, "concentration_similarity": 1.0, - "content_similarity": 0.141, - "left_pr_number": 67269, - "right_pr_number": 68514, + "content_similarity": 0.514, + "left_pr_number": 54898, + "right_pr_number": 64805, "shared_directories": [ "extensions/feishu/src", "extensions/feishu", "extensions" ], - "shared_filenames": [], - "similarity": 0.306, - "size_similarity": 0.546 - } - ], - "pr_count": 6, - "pr_numbers": [ - 53533, - 64820, - 67269, - 67466, - 68514, - 68840 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 67269, - 67466, - 68514, - 68840 - ], - "representative_pr_number": 53533, - "representative_title": "feat(feishu): surface connection health state", - "representative_url": "https://github.com/openclaw/openclaw/pull/53533", - "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" - ], - "shared_filenames": [ - "extensions/feishu/src/monitor.account.ts", - "extensions/feishu/src/monitor.transport.test.ts", - "extensions/feishu/src/monitor.transport.ts", - "extensions/feishu/src/monitor.ts" - ], - "summary": "6 open PRs share weighted file overlap around `extensions/feishu/src/monitor.account.ts`, `extensions/feishu/src/monitor.transport.test.ts`, `extensions/feishu/src/monitor.transport.ts`; representative PR #53533.", - "title": "Scope: feat(feishu): surface connection health state" - }, - { - "authors": [ - "100yenadmin", - "aayushprsingh", - "akashmahlaz", - "jiazhizhuo" - ], - "average_similarity": 0.371, - "cluster_id": "pr-scope-53884-6", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T17:04:26Z", - "outside_window_prs": [ - { - "additions": 597, - "author": "yanmwisa", - "changed_files": 9, - "created_at": "2026-03-24T18:38:38Z", - "deletions": 152, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53884/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53884", - "merged": false, - "number": 53884, - "state": "open", - "title": "feat(ui): redesign chat layout and update modal", - "updated_at": "2026-03-24T20:15:28Z" + "shared_filenames": [ + "extensions/feishu/src/reply-dispatcher.ts" + ], + "similarity": 0.483, + "size_similarity": 0.043 }, { - "additions": 984, - "author": "weak-fox", - "changed_files": 22, - "created_at": "2026-04-11T09:30:30Z", - "deletions": 64, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64736/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64736", - "merged": false, - "number": 64736, - "state": "open", - "title": "fix(ui): load runtime command catalog for slash autocomplete", - "updated_at": "2026-04-12T23:52:34Z" - } - ], - "pairwise": [ - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.921, - "content_similarity": 0.36, - "left_pr_number": 65258, - "right_pr_number": 67721, + "breadth_similarity": 0.714, + "concentration_similarity": 1.0, + "content_similarity": 0.409, + "left_pr_number": 64027, + "right_pr_number": 68107, "shared_directories": [ - "ui/src/styles/chat", - "ui/src/ui/chat", - "ui/src/ui/views", - "ui/src/styles", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "ui/src/styles/chat/layout.css", - "ui/src/ui/app-render.ts", - "ui/src/ui/app-tool-stream.ts", - "ui/src/ui/app-view-state.ts", - "ui/src/ui/app.ts", - "ui/src/ui/views/chat.ts" + "extensions/feishu/src/bot.ts", + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.486, - "size_similarity": 0.924 + "similarity": 0.482, + "size_similarity": 0.492 }, { - "breadth_similarity": 0.441, - "concentration_similarity": 0.982, - "content_similarity": 0.418, - "left_pr_number": 53884, - "right_pr_number": 65258, + "breadth_similarity": 0.875, + "concentration_similarity": 1.0, + "content_similarity": 0.405, + "left_pr_number": 64805, + "right_pr_number": 67783, "shared_directories": [ - "ui/src/styles/chat", - "ui/src/ui/chat", - "ui/src/ui/views", - "ui/src/styles", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "ui/src/styles/chat/grouped.css", - "ui/src/styles/chat/layout.css", - "ui/src/styles/components.css", - "ui/src/ui/app-render.ts", - "ui/src/ui/chat/grouped-render.ts", - "ui/src/ui/views/chat.ts" + "extensions/feishu/src/bot.ts", + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.435, - "size_similarity": 0.329 + "similarity": 0.45, + "size_similarity": 0.194 }, { - "breadth_similarity": 0.611, - "concentration_similarity": 0.897, - "content_similarity": 0.359, - "left_pr_number": 53884, - "right_pr_number": 68061, + "breadth_similarity": 0.625, + "concentration_similarity": 0.991, + "content_similarity": 0.461, + "left_pr_number": 37545, + "right_pr_number": 67783, "shared_directories": [ - "ui/src/styles", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "ui/src/styles/components.css" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.398, - "size_similarity": 0.27 + "similarity": 0.445, + "size_similarity": 0.066 }, { - "breadth_similarity": 0.65, - "concentration_similarity": 0.995, - "content_similarity": 0.199, - "left_pr_number": 67579, - "right_pr_number": 67721, + "breadth_similarity": 0.625, + "concentration_similarity": 0.991, + "content_similarity": 0.408, + "left_pr_number": 37545, + "right_pr_number": 59771, "shared_directories": [ - "ui/src/styles", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "ui/src/ui/app-render.ts", - "ui/src/ui/app-view-state.ts", - "ui/src/ui/app.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.396, - "size_similarity": 0.948 + "similarity": 0.443, + "size_similarity": 0.305 }, { - "breadth_similarity": 0.698, - "concentration_similarity": 0.902, - "content_similarity": 0.326, - "left_pr_number": 53884, - "right_pr_number": 67721, + "breadth_similarity": 0.571, + "concentration_similarity": 1.0, + "content_similarity": 0.473, + "left_pr_number": 64027, + "right_pr_number": 68491, "shared_directories": [ - "ui/src/styles/chat", - "ui/src/ui/chat", - "ui/src/ui/views", - "ui/src/styles", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "ui/src/styles/chat/layout.css", - "ui/src/ui/app-render.ts", - "ui/src/ui/views/chat.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.389, - "size_similarity": 0.304 + "similarity": 0.441, + "size_similarity": 0.019 }, { - "breadth_similarity": 0.544, - "concentration_similarity": 0.922, - "content_similarity": 0.308, - "left_pr_number": 64736, - "right_pr_number": 65258, + "breadth_similarity": 0.875, + "concentration_similarity": 1.0, + "content_similarity": 0.215, + "left_pr_number": 54899, + "right_pr_number": 68107, "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "ui/src/ui/app-gateway.node.test.ts", - "ui/src/ui/app-gateway.ts", - "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/app-render.ts", - "ui/src/ui/app-view-state.ts", - "ui/src/ui/app.ts", - "ui/src/ui/views/chat.test.ts", - "ui/src/ui/views/chat.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.385, - "size_similarity": 0.46 + "similarity": 0.435, + "size_similarity": 0.981 }, { - "breadth_similarity": 0.325, - "concentration_similarity": 0.916, - "content_similarity": 0.225, - "left_pr_number": 65258, - "right_pr_number": 67579, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.355, + "left_pr_number": 59771, + "right_pr_number": 67783, "shared_directories": [ - "ui/src/styles", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "ui/src/styles/layout.css", - "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/app-render.ts", - "ui/src/ui/app-view-state.ts", - "ui/src/ui/app.ts" + "extensions/feishu/src/reply-dispatcher.test.ts", + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.382, - "size_similarity": 0.974 + "similarity": 0.431, + "size_similarity": 0.217 }, { - "breadth_similarity": 0.812, - "concentration_similarity": 0.999, - "content_similarity": 0.173, - "left_pr_number": 67579, - "right_pr_number": 68061, + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.434, + "left_pr_number": 54898, + "right_pr_number": 68107, "shared_directories": [ - "ui/src/styles", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "shared_filenames": [], - "similarity": 0.378, - "size_similarity": 0.841 + "shared_filenames": [ + "extensions/feishu/src/reply-dispatcher.ts" + ], + "similarity": 0.43, + "size_similarity": 0.065 }, { - "breadth_similarity": 0.764, - "concentration_similarity": 0.842, - "content_similarity": 0.275, - "left_pr_number": 64736, - "right_pr_number": 67721, + "breadth_similarity": 0.786, + "concentration_similarity": 1.0, + "content_similarity": 0.282, + "left_pr_number": 59771, + "right_pr_number": 64027, "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "ui/src/ui/app-render.ts", - "ui/src/ui/app-view-state.ts", - "ui/src/ui/app.ts", - "ui/src/ui/chat/slash-command-executor.ts", - "ui/src/ui/chat/slash-commands.ts", - "ui/src/ui/types.ts", - "ui/src/ui/views/chat.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.375, - "size_similarity": 0.425 + "similarity": 0.424, + "size_similarity": 0.657 }, { - "breadth_similarity": 0.278, - "concentration_similarity": 0.915, - "content_similarity": 0.24, - "left_pr_number": 65258, - "right_pr_number": 68061, + "breadth_similarity": 0.875, + "concentration_similarity": 1.0, + "content_similarity": 0.254, + "left_pr_number": 54899, + "right_pr_number": 64805, "shared_directories": [ - "ui/src/styles", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "ui/src/styles/components.css" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.364, - "size_similarity": 0.819 + "similarity": 0.417, + "size_similarity": 0.681 }, { - "breadth_similarity": 0.556, - "concentration_similarity": 0.994, - "content_similarity": 0.16, - "left_pr_number": 67721, - "right_pr_number": 68061, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.422, + "left_pr_number": 54898, + "right_pr_number": 59771, "shared_directories": [ - "ui/src/styles", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "shared_filenames": [], - "similarity": 0.35, - "size_similarity": 0.886 + "shared_filenames": [ + "extensions/feishu/src/reply-dispatcher.ts" + ], + "similarity": 0.415, + "size_similarity": 0.048 }, { - "breadth_similarity": 0.538, - "concentration_similarity": 0.94, - "content_similarity": 0.18, - "left_pr_number": 53884, - "right_pr_number": 64736, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.416, + "left_pr_number": 59771, + "right_pr_number": 68491, "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "ui/src/ui/app-render.ts", - "ui/src/ui/views/chat.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.334, - "size_similarity": 0.715 + "similarity": 0.408, + "size_similarity": 0.029 }, { - "breadth_similarity": 0.778, - "concentration_similarity": 0.897, - "content_similarity": 0.224, - "left_pr_number": 53884, - "right_pr_number": 67579, + "breadth_similarity": 0.786, + "concentration_similarity": 1.0, + "content_similarity": 0.369, + "left_pr_number": 64027, + "right_pr_number": 67783, "shared_directories": [ - "ui/src/styles", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "ui/src/ui/app-render.ts" + "extensions/feishu/src/bot.ts", + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.328, - "size_similarity": 0.321 + "similarity": 0.408, + "size_similarity": 0.143 }, { - "breadth_similarity": 0.682, - "concentration_similarity": 0.837, - "content_similarity": 0.196, - "left_pr_number": 64736, - "right_pr_number": 67579, + "breadth_similarity": 0.571, + "concentration_similarity": 1.0, + "content_similarity": 0.415, + "left_pr_number": 54898, + "right_pr_number": 64027, "shared_directories": [ - "ui/src/ui/controllers", - "ui/src/ui", - "ui/src", - "ui" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/app-render.ts", - "ui/src/ui/app-view-state.ts", - "ui/src/ui/app.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.314, - "size_similarity": 0.449 + "similarity": 0.402, + "size_similarity": 0.032 }, { - "breadth_similarity": 0.614, - "concentration_similarity": 0.837, - "content_similarity": 0.123, - "left_pr_number": 64736, - "right_pr_number": 68061, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.362, + "left_pr_number": 54898, + "right_pr_number": 67783, "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui" - ], - "shared_filenames": [], - "similarity": 0.246, - "size_similarity": 0.377 - } - ], - "pr_count": 6, - "pr_numbers": [ - 53884, - 64736, - 65258, - 67579, - 67721, - 68061 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 65258, - 67579, - 67721, - 68061 - ], - "representative_pr_number": 65258, - "representative_title": "Improve control UI chat and task UX", - "representative_url": "https://github.com/openclaw/openclaw/pull/65258", - "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui", - "ui/src/styles", - "ui/src/ui/chat", - "ui/src/ui/views", - "ui/src/styles/chat", - "ui/src/ui/controllers" - ], - "shared_filenames": [ - "ui/src/ui/app-render.ts", - "ui/src/ui/views/chat.ts", - "ui/src/ui/app-view-state.ts", - "ui/src/ui/app.ts", - "ui/src/styles/chat/layout.css", - "ui/src/styles/components.css", - "ui/src/ui/app-render.helpers.ts", - "ui/src/ui/app-tool-stream.ts" - ], - "summary": "6 open PRs share weighted file overlap around `ui/src/ui/app-render.ts`, `ui/src/ui/views/chat.ts`, `ui/src/ui/app-view-state.ts`; representative PR #65258.", - "title": "Scope: Improve control UI chat and task UX" - }, - { - "authors": [ - "jack-ra", - "joeia26", - "kindomLee", - "sercada" - ], - "average_similarity": 0.708, - "cluster_id": "pr-scope-63656-5", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T15:35:00Z", - "outside_window_prs": [ - { - "additions": 89, - "author": "eyev0", - "changed_files": 5, - "created_at": "2026-04-09T09:16:53Z", - "deletions": 5, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63656/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63656", - "merged": false, - "number": 63656, - "state": "open", - "title": "fix(acp): route /acp lifecycle commands to local handlers", - "updated_at": "2026-04-13T11:51:53Z" - } - ], - "pairwise": [ + "extensions/feishu/src", + "extensions/feishu", + "extensions" + ], + "shared_filenames": [ + "extensions/feishu/src/reply-dispatcher.ts" + ], + "similarity": 0.399, + "size_similarity": 0.222 + }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.977, - "left_pr_number": 65248, - "right_pr_number": 68407, + "content_similarity": 0.316, + "left_pr_number": 53787, + "right_pr_number": 68107, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", - "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.899, - "size_similarity": 0.436 + "similarity": 0.396, + "size_similarity": 0.168 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.667, "concentration_similarity": 1.0, - "content_similarity": 0.886, - "left_pr_number": 65248, - "right_pr_number": 66407, + "content_similarity": 0.315, + "left_pr_number": 53787, + "right_pr_number": 54898, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", - "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.823, - "size_similarity": 0.517 + "similarity": 0.395, + "size_similarity": 0.385 }, { - "breadth_similarity": 0.65, - "concentration_similarity": 0.819, - "content_similarity": 0.837, - "left_pr_number": 63656, - "right_pr_number": 66407, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.32, + "left_pr_number": 53787, + "right_pr_number": 64805, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/commands-acp.test.ts", - "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", - "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.785, - "size_similarity": 0.623 + "similarity": 0.39, + "size_similarity": 0.112 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.819, - "content_similarity": 0.809, - "left_pr_number": 63656, - "right_pr_number": 65248, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.146, + "left_pr_number": 54898, + "right_pr_number": 66148, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", - "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "similarity": 0.776, - "size_similarity": 0.83 + "shared_filenames": [], + "similarity": 0.389, + "size_similarity": 0.909 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.868, - "left_pr_number": 66407, - "right_pr_number": 68407, + "breadth_similarity": 0.5, + "concentration_similarity": 0.991, + "content_similarity": 0.4, + "left_pr_number": 37545, + "right_pr_number": 53787, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", - "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.766, - "size_similarity": 0.225 + "similarity": 0.385, + "size_similarity": 0.038 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.819, - "content_similarity": 0.804, - "left_pr_number": 63656, - "right_pr_number": 68407, + "breadth_similarity": 0.875, + "concentration_similarity": 1.0, + "content_similarity": 0.218, + "left_pr_number": 53787, + "right_pr_number": 67783, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", - "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.703, - "size_similarity": 0.362 + "similarity": 0.377, + "size_similarity": 0.578 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.51, - "content_similarity": 0.638, - "left_pr_number": 68407, - "right_pr_number": 68617, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.357, + "left_pr_number": 54898, + "right_pr_number": 54899, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", - "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.634, - "size_similarity": 0.694 + "similarity": 0.372, + "size_similarity": 0.063 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.51, - "content_similarity": 0.607, - "left_pr_number": 65248, - "right_pr_number": 68617, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.333, + "left_pr_number": 67783, + "right_pr_number": 68491, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", - "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.603, - "size_similarity": 0.628 + "similarity": 0.365, + "size_similarity": 0.133 }, { - "breadth_similarity": 0.8, - "concentration_similarity": 0.691, - "content_similarity": 0.521, - "left_pr_number": 63656, - "right_pr_number": 68617, + "breadth_similarity": 0.625, + "concentration_similarity": 0.991, + "content_similarity": 0.306, + "left_pr_number": 37545, + "right_pr_number": 54899, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", - "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.558, - "size_similarity": 0.521 + "similarity": 0.361, + "size_similarity": 0.233 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.51, - "content_similarity": 0.565, - "left_pr_number": 66407, - "right_pr_number": 68617, + "breadth_similarity": 0.786, + "concentration_similarity": 1.0, + "content_similarity": 0.223, + "left_pr_number": 54899, + "right_pr_number": 64027, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", - "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.532, - "size_similarity": 0.325 - } - ], - "pr_count": 5, - "pr_numbers": [ - 63656, - 65248, - 66407, - 68407, - 68617 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 65248, - 66407, - 68407, - 68617 - ], - "representative_pr_number": 65248, - "representative_title": "fix(acp): bypass bound slash commands to local handlers", - "representative_url": "https://github.com/openclaw/openclaw/pull/65248", - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", - "src/auto-reply/reply/dispatch-acp-command-bypass.ts", - "src/auto-reply/reply/commands-acp.test.ts" - ], - "summary": "5 open PRs share weighted file overlap around `src/auto-reply/reply/dispatch-acp-command-bypass.test.ts`, `src/auto-reply/reply/dispatch-acp-command-bypass.ts`, `src/auto-reply/reply/commands-acp.test.ts`; representative PR #65248.", - "title": "Scope: fix(acp): bypass bound slash commands to local handlers" - }, - { - "authors": [ - "Tuarisa", - "sagarpswc", - "sahilsatralkar", - "zhanggpcsu" - ], - "average_similarity": 0.622, - "cluster_id": "pr-scope-53738-5", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T08:55:49Z", - "outside_window_prs": [ - { - "additions": 44, - "author": "Lanfei", - "changed_files": 7, - "created_at": "2026-03-24T14:21:16Z", - "deletions": 20, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53738/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53738", - "merged": false, - "number": 53738, - "state": "open", - "title": "fix(media-tools): apply models.providers baseUrl override in image and pdf tools", - "updated_at": "2026-03-24T20:15:29Z" - } - ], - "pairwise": [ + "similarity": 0.36, + "size_similarity": 0.502 + }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.986, - "content_similarity": 0.928, - "left_pr_number": 66622, - "right_pr_number": 67326, + "breadth_similarity": 0.875, + "concentration_similarity": 1.0, + "content_similarity": 0.256, + "left_pr_number": 53787, + "right_pr_number": 59771, "shared_directories": [ - "src/media-understanding", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/media-understanding/image.test.ts", - "src/media-understanding/image.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.831, - "size_similarity": 0.493 + "similarity": 0.336, + "size_similarity": 0.126 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.905, - "left_pr_number": 67326, - "right_pr_number": 68243, + "content_similarity": 0.149, + "left_pr_number": 66148, + "right_pr_number": 68491, "shared_directories": [ - "src/media-understanding", - "src" - ], - "shared_filenames": [ - "src/media-understanding/image.test.ts", - "src/media-understanding/image.ts" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "similarity": 0.815, - "size_similarity": 0.211 + "shared_filenames": [], + "similarity": 0.336, + "size_similarity": 0.545 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.986, - "content_similarity": 0.837, - "left_pr_number": 66622, - "right_pr_number": 68243, + "breadth_similarity": 0.714, + "concentration_similarity": 1.0, + "content_similarity": 0.28, + "left_pr_number": 53787, + "right_pr_number": 64027, "shared_directories": [ - "src/media-understanding", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/media-understanding/image.test.ts", - "src/media-understanding/image.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.758, - "size_similarity": 0.429 + "similarity": 0.33, + "size_similarity": 0.083 }, { "breadth_similarity": 1.0, - "concentration_similarity": 0.643, - "content_similarity": 0.647, - "left_pr_number": 65837, - "right_pr_number": 66622, + "concentration_similarity": 1.0, + "content_similarity": 0.193, + "left_pr_number": 54899, + "right_pr_number": 67783, "shared_directories": [ - "src/media-understanding", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/media-understanding/image.test.ts", - "src/media-understanding/image.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.676, - "size_similarity": 0.605 + "similarity": 0.327, + "size_similarity": 0.285 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.629, - "content_similarity": 0.612, - "left_pr_number": 65837, - "right_pr_number": 68243, + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.145, + "left_pr_number": 53534, + "right_pr_number": 68107, "shared_directories": [ - "src/media-understanding", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "shared_filenames": [ - "src/media-understanding/image.test.ts", - "src/media-understanding/image.ts" + "shared_filenames": [], + "similarity": 0.321, + "size_similarity": 0.684 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.17, + "left_pr_number": 53534, + "right_pr_number": 64805, + "shared_directories": [ + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "similarity": 0.625, - "size_similarity": 0.708 + "shared_filenames": [], + "similarity": 0.304, + "size_similarity": 0.457 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.629, - "content_similarity": 0.638, - "left_pr_number": 65837, - "right_pr_number": 67326, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.241, + "left_pr_number": 54899, + "right_pr_number": 68491, "shared_directories": [ - "src/media-understanding", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/media-understanding/image.test.ts", - "src/media-understanding/image.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.581, - "size_similarity": 0.299 + "similarity": 0.287, + "size_similarity": 0.038 }, { - "breadth_similarity": 0.464, - "concentration_similarity": 0.902, - "content_similarity": 0.51, - "left_pr_number": 53738, - "right_pr_number": 65837, + "breadth_similarity": 0.875, + "concentration_similarity": 1.0, + "content_similarity": 0.174, + "left_pr_number": 53787, + "right_pr_number": 54899, "shared_directories": [ - "src/agents/tools", - "src/agents", - "src/media-understanding", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/tools/media-tool-shared.ts", - "src/media-understanding/image.test.ts", - "src/media-understanding/image.ts" + "extensions/feishu/src/reply-dispatcher.ts" ], - "similarity": 0.556, - "size_similarity": 0.719 + "similarity": 0.284, + "size_similarity": 0.165 }, { - "breadth_similarity": 0.268, - "concentration_similarity": 0.531, - "content_similarity": 0.407, - "left_pr_number": 53738, - "right_pr_number": 68243, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.138, + "left_pr_number": 53534, + "right_pr_number": 67783, "shared_directories": [ - "src/media-understanding", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "shared_filenames": [ - "src/media-understanding/image.test.ts", - "src/media-understanding/image.ts" + "shared_filenames": [], + "similarity": 0.273, + "size_similarity": 0.425 + }, + { + "breadth_similarity": 0.571, + "concentration_similarity": 1.0, + "content_similarity": 0.162, + "left_pr_number": 53534, + "right_pr_number": 64027, + "shared_directories": [ + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "similarity": 0.486, - "size_similarity": 0.984 + "shared_filenames": [], + "similarity": 0.271, + "size_similarity": 0.337 }, { - "breadth_similarity": 0.464, - "concentration_similarity": 0.545, - "content_similarity": 0.469, - "left_pr_number": 53738, - "right_pr_number": 66622, + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.127, + "left_pr_number": 53787, + "right_pr_number": 66148, "shared_directories": [ - "src/media-understanding", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "shared_filenames": [ - "src/media-understanding/image.test.ts", - "src/media-understanding/image.ts" + "shared_filenames": [], + "similarity": 0.269, + "size_similarity": 0.423 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.149, + "left_pr_number": 53534, + "right_pr_number": 54898, + "shared_directories": [ + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "similarity": 0.467, - "size_similarity": 0.435 + "shared_filenames": [], + "similarity": 0.268, + "size_similarity": 0.094 }, { - "breadth_similarity": 0.268, - "concentration_similarity": 0.531, - "content_similarity": 0.486, - "left_pr_number": 53738, - "right_pr_number": 67326, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.152, + "left_pr_number": 53534, + "right_pr_number": 68491, "shared_directories": [ - "src/media-understanding", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "shared_filenames": [ - "src/media-understanding/image.test.ts", - "src/media-understanding/image.ts" + "shared_filenames": [], + "similarity": 0.265, + "size_similarity": 0.057 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.129, + "left_pr_number": 53534, + "right_pr_number": 53787, + "shared_directories": [ + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "similarity": 0.426, - "size_similarity": 0.215 + "shared_filenames": [], + "similarity": 0.244, + "size_similarity": 0.245 + }, + { + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.136, + "left_pr_number": 66148, + "right_pr_number": 67783, + "shared_directories": [ + "extensions/feishu/src", + "extensions/feishu", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.244, + "size_similarity": 0.244 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.167, + "left_pr_number": 64805, + "right_pr_number": 66148, + "shared_directories": [ + "extensions/feishu/src", + "extensions/feishu", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.24, + "size_similarity": 0.047 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.142, + "left_pr_number": 66148, + "right_pr_number": 68107, + "shared_directories": [ + "extensions/feishu/src", + "extensions/feishu", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.227, + "size_similarity": 0.071 + }, + { + "breadth_similarity": 0.571, + "concentration_similarity": 1.0, + "content_similarity": 0.159, + "left_pr_number": 64027, + "right_pr_number": 66148, + "shared_directories": [ + "extensions/feishu/src", + "extensions/feishu", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.224, + "size_similarity": 0.035 + }, + { + "breadth_similarity": 0.25, + "concentration_similarity": 0.991, + "content_similarity": 0.166, + "left_pr_number": 37545, + "right_pr_number": 53534, + "shared_directories": [ + "extensions/feishu/src", + "extensions/feishu", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.214, + "size_similarity": 0.156 + }, + { + "breadth_similarity": 0.25, + "concentration_similarity": 0.991, + "content_similarity": 0.162, + "left_pr_number": 37545, + "right_pr_number": 66148, + "shared_directories": [ + "extensions/feishu/src", + "extensions/feishu", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.191, + "size_similarity": 0.016 } ], - "pr_count": 5, + "pr_count": 12, "pr_numbers": [ - 53738, - 65837, - 66622, - 67326, - 68243 + 37545, + 53534, + 53787, + 54898, + 54899, + 59771, + 64027, + 64805, + 66148, + 67783, + 68107, + 68491 ], - "recent_pr_count": 4, + "recent_pr_count": 3, "recent_pr_numbers": [ - 65837, - 66622, - 67326, - 68243 + 67783, + 68107, + 68491 ], - "representative_pr_number": 66622, - "representative_title": "fix #66486: fix(image): prepare dynamic models before image tool registry lookup", - "representative_url": "https://github.com/openclaw/openclaw/pull/66622", + "representative_pr_number": 59771, + "representative_title": "Fix Feishu streaming recovery after transient reply errors", + "representative_url": "https://github.com/openclaw/openclaw/pull/59771", "shared_directories": [ - "src/media-understanding", - "src", - "src/agents/tools", - "src/agents" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/media-understanding/image.test.ts", - "src/media-understanding/image.ts", - "src/agents/tools/media-tool-shared.ts" + "extensions/feishu/src/reply-dispatcher.ts", + "extensions/feishu/src/streaming-card.ts", + "extensions/feishu/src/bot.ts", + "extensions/feishu/src/reply-dispatcher.test.ts", + "extensions/feishu/src/monitor.comment.test.ts" ], - "summary": "5 open PRs share weighted file overlap around `src/media-understanding/image.test.ts`, `src/media-understanding/image.ts`, `src/agents/tools/media-tool-shared.ts`; representative PR #66622.", - "title": "Scope: fix #66486: fix(image): prepare dynamic models before image tool registry lookup" + "summary": "12 open PRs share weighted file overlap around `extensions/feishu/src/reply-dispatcher.ts`, `extensions/feishu/src/streaming-card.ts`, `extensions/feishu/src/bot.ts`; representative PR #59771.", + "title": "Scope: Fix Feishu streaming recovery after transient reply errors" }, { "authors": [ - "kenrolzjc", - "moltar-bot", - "openperf", - "rmfalco89" + "Bartok9", + "leaderlemon", + "neo1027144-creator" ], - "average_similarity": 0.62, - "cluster_id": "pr-scope-64516-5", + "average_similarity": 0.45, + "cluster_id": "pr-scope-37639-10", "kind": "pr_scope", - "last_activity_at": "2026-04-17T23:40:48Z", + "last_activity_at": "2026-04-17T08:44:36Z", "outside_window_prs": [ { - "additions": 17, - "author": "rmfalco89", + "additions": 41, + "author": "epanonymous", + "changed_files": 4, + "created_at": "2026-03-06T10:30:26Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37639/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37639", + "merged": false, + "number": 37639, + "state": "open", + "title": "feat: expose background exec processes in sessions.list", + "updated_at": "2026-04-20T04:36:26Z" + }, + { + "additions": 25, + "author": "SeashoreShi", + "changed_files": 1, + "created_at": "2026-03-25T12:11:07Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/54449/files", + "html_url": "https://github.com/openclaw/openclaw/pull/54449", + "merged": false, + "number": 54449, + "state": "open", + "title": "fix(gateway): avoid stale terminal subagent status in disk-merged session views", + "updated_at": "2026-04-21T09:26:18Z" + }, + { + "additions": 115, + "author": "coderredlab", + "changed_files": 1, + "created_at": "2026-04-02T05:04:23Z", + "deletions": 42, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/59436/files", + "html_url": "https://github.com/openclaw/openclaw/pull/59436", + "merged": false, + "number": 59436, + "state": "open", + "title": "perf(gateway): apply limit before building session rows and index child lookups", + "updated_at": "2026-04-19T10:31:11Z" + }, + { + "additions": 144, + "author": "neofdezf-cloud", "changed_files": 2, - "created_at": "2026-04-10T22:16:32Z", - "deletions": 6, + "created_at": "2026-04-11T19:53:23Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64516/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64516", + "files_url": "https://github.com/openclaw/openclaw/pull/64988/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64988", "merged": false, - "number": 64516, + "number": 64988, "state": "open", - "title": "fix(heartbeat): make cron event wrapper neutral so models execute embedded steps", - "updated_at": "2026-04-14T00:08:40Z" + "title": "feat(gateway): infer provider from configured model families", + "updated_at": "2026-04-11T20:03:48Z" + }, + { + "additions": 63, + "author": "w-sss", + "changed_files": 2, + "created_at": "2026-04-12T04:38:30Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65178/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65178", + "merged": false, + "number": 65178, + "state": "open", + "title": "fix: case-insensitive model lookup for image support resolution", + "updated_at": "2026-04-12T04:42:48Z" + }, + { + "additions": 74, + "author": "hondaya01", + "changed_files": 2, + "created_at": "2026-04-12T06:40:40Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65211/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65211", + "merged": false, + "number": 65211, + "state": "open", + "title": "fix: include user-configured provider models in gateway catalog for capability checks", + "updated_at": "2026-04-12T07:14:11Z" + }, + { + "additions": 4, + "author": "suboss87", + "changed_files": 1, + "created_at": "2026-04-14T12:46:21Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66544/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66544", + "merged": false, + "number": 66544, + "state": "open", + "title": "fix(gateway): exclude heartbeat sender ID from session display name", + "updated_at": "2026-04-19T00:33:48Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.987, - "left_pr_number": 64516, - "right_pr_number": 67262, + "content_similarity": 0.899, + "left_pr_number": 65178, + "right_pr_number": 68047, "shared_directories": [ - "src/infra", + "src/gateway", "src" ], "shared_filenames": [ - "src/infra/heartbeat-events-filter.test.ts", - "src/infra/heartbeat-events-filter.ts" + "src/gateway/session-utils.test.ts", + "src/gateway/session-utils.ts" ], - "similarity": 0.945, - "size_similarity": 0.696 + "similarity": 0.912, + "size_similarity": 0.882 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.905, - "left_pr_number": 64516, - "right_pr_number": 66838, + "breadth_similarity": 0.583, + "concentration_similarity": 0.875, + "content_similarity": 0.838, + "left_pr_number": 65178, + "right_pr_number": 67768, "shared_directories": [ - "src/infra", + "src/gateway", "src" ], "shared_filenames": [ - "src/infra/heartbeat-events-filter.test.ts", - "src/infra/heartbeat-events-filter.ts" + "src/gateway/session-utils.test.ts", + "src/gateway/session-utils.ts" ], - "similarity": 0.865, - "size_similarity": 0.657 + "similarity": 0.83, + "size_similarity": 0.941 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.898, - "left_pr_number": 66838, - "right_pr_number": 67262, + "breadth_similarity": 0.583, + "concentration_similarity": 0.875, + "content_similarity": 0.78, + "left_pr_number": 67768, + "right_pr_number": 68047, "shared_directories": [ - "src/infra", + "src/gateway", "src" ], "shared_filenames": [ - "src/infra/heartbeat-events-filter.test.ts", - "src/infra/heartbeat-events-filter.ts" + "src/gateway/session-utils.test.ts", + "src/gateway/session-utils.ts" ], - "similarity": 0.831, - "size_similarity": 0.457 + "similarity": 0.789, + "size_similarity": 0.938 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.537, - "left_pr_number": 64516, - "right_pr_number": 67273, + "content_similarity": 0.821, + "left_pr_number": 67766, + "right_pr_number": 68047, "shared_directories": [ - "src/infra", + "src/gateway", "src" ], "shared_filenames": [ - "src/infra/heartbeat-events-filter.test.ts", - "src/infra/heartbeat-events-filter.ts" + "src/gateway/session-utils.test.ts", + "src/gateway/session-utils.ts" ], - "similarity": 0.522, - "size_similarity": 0.144 + "similarity": 0.775, + "size_similarity": 0.335 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.802, - "content_similarity": 0.591, - "left_pr_number": 64516, - "right_pr_number": 67059, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.786, + "left_pr_number": 65178, + "right_pr_number": 67766, "shared_directories": [ - "src/infra", + "src/gateway", "src" ], "shared_filenames": [ - "src/infra/heartbeat-events-filter.test.ts", - "src/infra/heartbeat-events-filter.ts" + "src/gateway/session-utils.test.ts", + "src/gateway/session-utils.ts" ], - "similarity": 0.516, - "size_similarity": 0.134 + "similarity": 0.757, + "size_similarity": 0.38 }, { - "breadth_similarity": 0.875, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.49, - "left_pr_number": 66838, - "right_pr_number": 67273, + "content_similarity": 0.748, + "left_pr_number": 54449, + "right_pr_number": 59436, "shared_directories": [ - "src/infra", + "src/gateway", "src" ], "shared_filenames": [ - "src/infra/heartbeat-events-filter.test.ts", - "src/infra/heartbeat-events-filter.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.513, - "size_similarity": 0.219 + "similarity": 0.701, + "size_similarity": 0.185 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.583, + "concentration_similarity": 0.875, + "content_similarity": 0.757, + "left_pr_number": 67766, + "right_pr_number": 67768, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/session-utils.test.ts", + "src/gateway/session-utils.ts" + ], + "similarity": 0.686, + "size_similarity": 0.358 + }, + { + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.525, - "left_pr_number": 67262, - "right_pr_number": 67273, + "content_similarity": 0.596, + "left_pr_number": 54449, + "right_pr_number": 66544, "shared_directories": [ - "src/infra", + "src/gateway", "src" ], "shared_filenames": [ - "src/infra/heartbeat-events-filter.test.ts", - "src/infra/heartbeat-events-filter.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.508, - "size_similarity": 0.1 + "similarity": 0.593, + "size_similarity": 0.172 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.802, - "content_similarity": 0.583, - "left_pr_number": 67059, - "right_pr_number": 67262, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.572, + "left_pr_number": 59436, + "right_pr_number": 66544, "shared_directories": [ - "src/infra", + "src/gateway", "src" ], "shared_filenames": [ - "src/infra/heartbeat-events-filter.test.ts", - "src/infra/heartbeat-events-filter.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.504, - "size_similarity": 0.093 + "similarity": 0.555, + "size_similarity": 0.032 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.802, - "content_similarity": 0.539, - "left_pr_number": 66838, - "right_pr_number": 67059, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.32, + "left_pr_number": 59436, + "right_pr_number": 64988, "shared_directories": [ - "src/infra", + "src/gateway", "src" ], "shared_filenames": [ - "src/infra/heartbeat-events-filter.test.ts", - "src/infra/heartbeat-events-filter.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.498, - "size_similarity": 0.203 + "similarity": 0.488, + "size_similarity": 0.924 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.802, - "content_similarity": 0.366, - "left_pr_number": 67059, - "right_pr_number": 67273, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.3, + "left_pr_number": 65211, + "right_pr_number": 68047, "shared_directories": [ - "src/infra", + "src/gateway", "src" ], "shared_filenames": [ - "src/infra/heartbeat-events-filter.test.ts", - "src/infra/heartbeat-events-filter.ts", - "src/infra/heartbeat-runner.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.494, - "size_similarity": 0.93 - } - ], - "pr_count": 5, - "pr_numbers": [ - 64516, - 66838, - 67059, - 67262, - 67273 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 66838, - 67059, - 67262, - 67273 - ], - "representative_pr_number": 64516, - "representative_title": "fix(heartbeat): make cron event wrapper neutral so models execute embedded steps", - "representative_url": "https://github.com/openclaw/openclaw/pull/64516", - "shared_directories": [ - "src/infra", - "src" - ], - "shared_filenames": [ - "src/infra/heartbeat-events-filter.test.ts", - "src/infra/heartbeat-events-filter.ts", - "src/infra/heartbeat-runner.ts" - ], - "summary": "5 open PRs share weighted file overlap around `src/infra/heartbeat-events-filter.test.ts`, `src/infra/heartbeat-events-filter.ts`, `src/infra/heartbeat-runner.ts`; representative PR #64516.", - "title": "Scope: fix(heartbeat): make cron event wrapper neutral so models execute embedded steps" - }, - { - "authors": [ - "Joel-Claw", - "samzong", - "tars90percent" - ], - "average_similarity": 0.585, - "cluster_id": "pr-scope-63783-5", - "kind": "pr_scope", - "last_activity_at": "2026-04-16T15:30:55Z", - "outside_window_prs": [ - { - "additions": 277, - "author": "helloworldtang", - "changed_files": 3, - "created_at": "2026-04-09T14:32:28Z", - "deletions": 14, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63783/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63783", - "merged": false, - "number": 63783, - "state": "open", - "title": "fix(webchat): preserve image attachments for text-only models", - "updated_at": "2026-04-18T07:30:18Z" - } - ], - "pairwise": [ + "similarity": 0.474, + "size_similarity": 0.759 + }, { - "breadth_similarity": 0.714, - "concentration_similarity": 0.787, - "content_similarity": 0.572, - "left_pr_number": 63783, - "right_pr_number": 67634, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.415, + "left_pr_number": 59436, + "right_pr_number": 68047, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/chat-attachments.test.ts", - "src/gateway/chat-attachments.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.645, - "size_similarity": 0.893 + "similarity": 0.473, + "size_similarity": 0.382 }, { - "breadth_similarity": 0.762, - "concentration_similarity": 0.93, - "content_similarity": 0.549, - "left_pr_number": 66613, - "right_pr_number": 67634, + "breadth_similarity": 0.292, + "concentration_similarity": 0.886, + "content_similarity": 0.417, + "left_pr_number": 37639, + "right_pr_number": 54449, "shared_directories": [ - "src/gateway/server-methods", "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/chat-attachments.test.ts", - "src/gateway/chat-attachments.ts", - "src/gateway/server-node-events.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.643, - "size_similarity": 0.905 + "similarity": 0.464, + "size_similarity": 0.659 }, { - "breadth_similarity": 0.333, - "concentration_similarity": 0.895, - "content_similarity": 0.701, - "left_pr_number": 65911, - "right_pr_number": 66613, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.358, + "left_pr_number": 64988, + "right_pr_number": 68047, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/chat-attachments.test.ts", - "src/gateway/chat-attachments.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.642, - "size_similarity": 0.485 + "similarity": 0.463, + "size_similarity": 0.414 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.612, - "content_similarity": 0.676, - "left_pr_number": 63783, - "right_pr_number": 65911, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.279, + "left_pr_number": 59436, + "right_pr_number": 67766, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/chat-attachments.test.ts", - "src/gateway/chat-attachments.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.636, - "size_similarity": 0.491 + "similarity": 0.452, + "size_similarity": 0.877 }, { - "breadth_similarity": 0.393, - "concentration_similarity": 0.825, - "content_similarity": 0.688, - "left_pr_number": 65911, - "right_pr_number": 67634, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.353, + "left_pr_number": 54449, + "right_pr_number": 68047, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/chat-attachments.test.ts", - "src/gateway/chat-attachments.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.628, - "size_similarity": 0.439 + "similarity": 0.445, + "size_similarity": 0.483 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.656, - "content_similarity": 0.7, - "left_pr_number": 66613, - "right_pr_number": 67572, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.245, + "left_pr_number": 64988, + "right_pr_number": 67766, "shared_directories": [ - "src/gateway/server-methods", "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/chat-attachments.test.ts", - "src/gateway/chat-attachments.ts", - "src/gateway/server-methods/chat.directive-tags.test.ts", - "src/gateway/server-node-events.test.ts", - "src/gateway/server-node-events.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.604, - "size_similarity": 0.207 + "similarity": 0.443, + "size_similarity": 0.81 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.717, - "content_similarity": 0.508, - "left_pr_number": 63783, - "right_pr_number": 66613, + "breadth_similarity": 0.417, + "concentration_similarity": 0.886, + "content_similarity": 0.335, + "left_pr_number": 37639, + "right_pr_number": 68047, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/chat-attachments.test.ts", - "src/gateway/chat-attachments.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.598, - "size_similarity": 0.986 + "similarity": 0.431, + "size_similarity": 0.733 }, { - "breadth_similarity": 0.433, - "concentration_similarity": 0.726, - "content_similarity": 0.609, - "left_pr_number": 67572, - "right_pr_number": 67634, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.281, + "left_pr_number": 64988, + "right_pr_number": 65178, "shared_directories": [ - "src/gateway/server-methods", "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/chat-attachments.test.ts", - "src/gateway/chat-attachments.ts", - "src/gateway/server-methods/agent.ts", - "src/gateway/server-methods/chat.ts", - "src/gateway/server-node-events.runtime.ts", - "src/gateway/server-node-events.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.54, - "size_similarity": 0.229 + "similarity": 0.417, + "size_similarity": 0.469 }, { - "breadth_similarity": 0.167, - "concentration_similarity": 0.551, - "content_similarity": 0.593, - "left_pr_number": 65911, - "right_pr_number": 67572, + "breadth_similarity": 0.292, + "concentration_similarity": 0.886, + "content_similarity": 0.43, + "left_pr_number": 37639, + "right_pr_number": 59436, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/chat-attachments.test.ts", - "src/gateway/chat-attachments.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.474, - "size_similarity": 0.1 + "similarity": 0.416, + "size_similarity": 0.28 }, { - "breadth_similarity": 0.3, - "concentration_similarity": 0.939, - "content_similarity": 0.475, - "left_pr_number": 63783, - "right_pr_number": 67572, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.183, + "left_pr_number": 65178, + "right_pr_number": 65211, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/chat-attachments.test.ts", - "src/gateway/chat-attachments.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.44, - "size_similarity": 0.204 - } - ], - "pr_count": 5, - "pr_numbers": [ - 63783, - 65911, - 66613, - 67572, - 67634 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 65911, - 66613, - 67572, - 67634 - ], - "representative_pr_number": 66613, - "representative_title": "fix(gateway): fail loud on all attachment parse failures (#48123)", - "representative_url": "https://github.com/openclaw/openclaw/pull/66613", - "shared_directories": [ - "src/gateway", - "src", - "src/gateway/server-methods" - ], - "shared_filenames": [ - "src/gateway/chat-attachments.test.ts", - "src/gateway/chat-attachments.ts", - "src/gateway/server-node-events.ts", - "src/gateway/server-node-events.runtime.ts", - "src/gateway/server-node-events.test.ts", - "src/gateway/server-methods/chat.directive-tags.test.ts", - "src/gateway/server-methods/agent.ts", - "src/gateway/server-methods/chat.ts" - ], - "summary": "5 open PRs share weighted file overlap around `src/gateway/chat-attachments.test.ts`, `src/gateway/chat-attachments.ts`, `src/gateway/server-node-events.ts`; representative PR #66613.", - "title": "Scope: fix(gateway): fail loud on all attachment parse failures (#48123)" - }, - { - "authors": [ - "briandevans", - "dkaygithub", - "draix", - "duqaXxX" - ], - "average_similarity": 0.467, - "cluster_id": "pr-scope-64660-5", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T02:10:15Z", - "outside_window_prs": [ + "similarity": 0.407, + "size_similarity": 0.861 + }, { - "additions": 404, - "author": "gzsiang", - "changed_files": 9, - "created_at": "2026-04-11T05:24:38Z", - "deletions": 8, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64660/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64660", - "merged": false, - "number": 64660, - "state": "open", - "title": "fix(agents): support local LLM tool calls and streaming usage via OpenAI-compatible endpoints", - "updated_at": "2026-04-14T04:09:42Z" - } - ], - "pairwise": [ + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.299, + "left_pr_number": 54449, + "right_pr_number": 65178, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/session-utils.ts" + ], + "similarity": 0.398, + "size_similarity": 0.426 + }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.721, - "content_similarity": 0.743, - "left_pr_number": 67203, - "right_pr_number": 68418, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.298, + "left_pr_number": 59436, + "right_pr_number": 65178, "shared_directories": [ - "src/agents", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/openai-transport-stream.test.ts", - "src/agents/openai-transport-stream.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.763, - "size_similarity": 0.792 + "similarity": 0.398, + "size_similarity": 0.433 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.998, - "content_similarity": 0.523, - "left_pr_number": 66949, - "right_pr_number": 68418, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.371, + "left_pr_number": 66544, + "right_pr_number": 68047, "shared_directories": [ - "src/agents", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/openai-transport-stream.test.ts", - "src/agents/openai-transport-stream.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.593, - "size_similarity": 0.761 + "similarity": 0.397, + "size_similarity": 0.083 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.842, - "content_similarity": 0.384, - "left_pr_number": 64660, - "right_pr_number": 68418, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.239, + "left_pr_number": 65211, + "right_pr_number": 67766, "shared_directories": [ - "src/agents", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/openai-transport-stream.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.497, - "size_similarity": 0.909 + "similarity": 0.383, + "size_similarity": 0.441 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.719, - "content_similarity": 0.386, - "left_pr_number": 66949, - "right_pr_number": 67203, + "concentration_similarity": 1.0, + "content_similarity": 0.257, + "left_pr_number": 59436, + "right_pr_number": 65211, "shared_directories": [ - "src/agents", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/openai-transport-stream.test.ts", - "src/agents/openai-transport-stream.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.471, - "size_similarity": 0.603 + "similarity": 0.381, + "size_similarity": 0.503 }, { - "breadth_similarity": 0.303, - "concentration_similarity": 0.77, - "content_similarity": 0.387, - "left_pr_number": 66871, - "right_pr_number": 68418, + "breadth_similarity": 0.417, + "concentration_similarity": 0.886, + "content_similarity": 0.279, + "left_pr_number": 37639, + "right_pr_number": 65178, "shared_directories": [ - "src/agents", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/openai-transport-stream.test.ts", - "src/agents/openai-transport-stream.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.433, - "size_similarity": 0.618 + "similarity": 0.378, + "size_similarity": 0.647 }, { - "breadth_similarity": 0.265, - "concentration_similarity": 0.768, - "content_similarity": 0.406, - "left_pr_number": 66871, - "right_pr_number": 66949, + "breadth_similarity": 0.708, + "concentration_similarity": 0.989, + "content_similarity": 0.213, + "left_pr_number": 37639, + "right_pr_number": 67768, "shared_directories": [ - "src/agents", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/openai-transport-stream.test.ts", - "src/agents/openai-transport-stream.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.42, - "size_similarity": 0.471 + "similarity": 0.372, + "size_similarity": 0.688 }, { - "breadth_similarity": 0.348, - "concentration_similarity": 0.951, - "content_similarity": 0.309, - "left_pr_number": 66871, - "right_pr_number": 67203, + "breadth_similarity": 0.292, + "concentration_similarity": 0.886, + "content_similarity": 0.385, + "left_pr_number": 37639, + "right_pr_number": 66544, "shared_directories": [ - "src/agents", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/openai-transport-stream.test.ts", - "src/agents/openai-transport-stream.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.416, - "size_similarity": 0.78 + "similarity": 0.36, + "size_similarity": 0.114 }, { - "breadth_similarity": 0.389, - "concentration_similarity": 0.84, - "content_similarity": 0.289, - "left_pr_number": 64660, - "right_pr_number": 66949, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.258, + "left_pr_number": 54449, + "right_pr_number": 65211, "shared_directories": [ - "src/agents", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/openai-transport-stream.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.387, - "size_similarity": 0.692 + "similarity": 0.36, + "size_similarity": 0.367 }, { - "breadth_similarity": 0.556, - "concentration_similarity": 0.879, - "content_similarity": 0.179, - "left_pr_number": 64660, - "right_pr_number": 67203, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.183, + "left_pr_number": 64988, + "right_pr_number": 65211, "shared_directories": [ - "src/agents", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/openai-transport-stream.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.356, - "size_similarity": 0.871 + "similarity": 0.36, + "size_similarity": 0.545 }, { - "breadth_similarity": 0.659, - "concentration_similarity": 0.928, - "content_similarity": 0.167, - "left_pr_number": 64660, - "right_pr_number": 66871, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.326, + "left_pr_number": 64988, + "right_pr_number": 66544, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/openai-transport-stream.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.331, - "size_similarity": 0.68 - } - ], - "pr_count": 5, - "pr_numbers": [ - 64660, - 66871, - 66949, - 67203, - 68418 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 66871, - 66949, - 67203, - 68418 - ], - "representative_pr_number": 68418, - "representative_title": "fix(agents): unpack typed-block delta.content arrays in openai-completions stream", - "representative_url": "https://github.com/openclaw/openclaw/pull/68418", - "shared_directories": [ - "src/agents", - "src", - "src/agents/pi-embedded-runner" - ], - "shared_filenames": [ - "src/agents/openai-transport-stream.ts", - "src/agents/openai-transport-stream.test.ts" - ], - "summary": "5 open PRs share weighted file overlap around `src/agents/openai-transport-stream.ts`, `src/agents/openai-transport-stream.test.ts`; representative PR #68418.", - "title": "Scope: fix(agents): unpack typed-block delta.content arrays in openai-completions stream" - }, - { - "authors": [ - "lml2468", - "ly85206559", - "zeolenon", - "zhanggpcsu" - ], - "average_similarity": 0.405, - "cluster_id": "pr-scope-53561-5", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T12:56:33Z", - "outside_window_prs": [ + "similarity": 0.359, + "size_similarity": 0.034 + }, { - "additions": 244, - "author": "VirtueeeS", - "changed_files": 4, - "created_at": "2026-03-24T09:07:24Z", - "deletions": 119, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53561/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53561", - "merged": false, - "number": 53561, - "state": "open", - "title": "fix gateway connect handshake timeout", - "updated_at": "2026-03-24T20:15:30Z" - } - ], - "pairwise": [ + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.282, + "left_pr_number": 54449, + "right_pr_number": 64988, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/session-utils.ts" + ], + "similarity": 0.352, + "size_similarity": 0.2 + }, { - "breadth_similarity": 0.65, - "concentration_similarity": 0.987, - "content_similarity": 0.61, - "left_pr_number": 53561, - "right_pr_number": 65641, + "breadth_similarity": 0.583, + "concentration_similarity": 0.875, + "content_similarity": 0.263, + "left_pr_number": 64988, + "right_pr_number": 67768, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/call.test.ts", - "src/gateway/client.test.ts", - "src/gateway/client.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.607, - "size_similarity": 0.435 + "similarity": 0.352, + "size_similarity": 0.441 }, { - "breadth_similarity": 0.25, - "concentration_similarity": 0.756, - "content_similarity": 0.706, - "left_pr_number": 66276, - "right_pr_number": 66435, + "breadth_similarity": 0.417, + "concentration_similarity": 0.886, + "content_similarity": 0.241, + "left_pr_number": 37639, + "right_pr_number": 65211, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/call.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.562, - "size_similarity": 0.035 + "similarity": 0.338, + "size_similarity": 0.557 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.769, - "content_similarity": 0.445, - "left_pr_number": 65641, - "right_pr_number": 66276, + "concentration_similarity": 1.0, + "content_similarity": 0.265, + "left_pr_number": 54449, + "right_pr_number": 67766, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/call.test.ts", - "src/gateway/call.ts", - "src/gateway/client.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.543, - "size_similarity": 0.786 + "similarity": 0.335, + "size_similarity": 0.162 }, { - "breadth_similarity": 0.714, - "concentration_similarity": 0.854, - "content_similarity": 0.427, - "left_pr_number": 66276, - "right_pr_number": 66297, + "breadth_similarity": 0.417, + "concentration_similarity": 0.875, + "content_similarity": 0.263, + "left_pr_number": 59436, + "right_pr_number": 67768, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/call.test.ts", - "src/gateway/call.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.462, - "size_similarity": 0.329 + "similarity": 0.33, + "size_similarity": 0.408 }, { - "breadth_similarity": 0.512, - "concentration_similarity": 0.914, - "content_similarity": 0.445, - "left_pr_number": 65641, - "right_pr_number": 66297, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.267, + "left_pr_number": 65178, + "right_pr_number": 66544, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/call.test.ts", - "src/gateway/call.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.447, - "size_similarity": 0.259 + "similarity": 0.323, + "size_similarity": 0.074 }, { - "breadth_similarity": 0.35, - "concentration_similarity": 0.987, - "content_similarity": 0.446, - "left_pr_number": 65641, - "right_pr_number": 66435, + "breadth_similarity": 0.583, + "concentration_similarity": 0.875, + "content_similarity": 0.136, + "left_pr_number": 65211, + "right_pr_number": 67768, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/call.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.403, - "size_similarity": 0.044 + "similarity": 0.319, + "size_similarity": 0.81 }, { - "breadth_similarity": 0.202, - "concentration_similarity": 0.902, - "content_similarity": 0.413, - "left_pr_number": 66297, - "right_pr_number": 66435, + "breadth_similarity": 0.417, + "concentration_similarity": 0.875, + "content_similarity": 0.224, + "left_pr_number": 54449, + "right_pr_number": 67768, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/call.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.356, - "size_similarity": 0.011 + "similarity": 0.31, + "size_similarity": 0.453 }, { - "breadth_similarity": 0.31, - "concentration_similarity": 0.902, - "content_similarity": 0.188, - "left_pr_number": 53561, - "right_pr_number": 66297, + "breadth_similarity": 0.417, + "concentration_similarity": 0.886, + "content_similarity": 0.253, + "left_pr_number": 37639, + "right_pr_number": 64988, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/call.test.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.297, - "size_similarity": 0.594 + "similarity": 0.309, + "size_similarity": 0.303 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.756, - "content_similarity": 0.085, - "left_pr_number": 53561, - "right_pr_number": 66276, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.25, + "left_pr_number": 66544, + "right_pr_number": 67766, "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/call.test.ts", - "src/gateway/client.ts" + "src/gateway/session-utils.ts" ], - "similarity": 0.23, - "size_similarity": 0.554 + "similarity": 0.304, + "size_similarity": 0.028 }, { - "breadth_similarity": 0.625, + "breadth_similarity": 0.417, + "concentration_similarity": 0.886, + "content_similarity": 0.249, + "left_pr_number": 37639, + "right_pr_number": 67766, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/session-utils.ts" + ], + "similarity": 0.297, + "size_similarity": 0.246 + }, + { + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.044, - "left_pr_number": 53561, - "right_pr_number": 66435, + "content_similarity": 0.23, + "left_pr_number": 65211, + "right_pr_number": 66544, "shared_directories": [ "src/gateway", "src" ], - "shared_filenames": [], - "similarity": 0.146, - "size_similarity": 0.019 + "shared_filenames": [ + "src/gateway/session-utils.ts" + ], + "similarity": 0.296, + "size_similarity": 0.063 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.875, + "content_similarity": 0.235, + "left_pr_number": 66544, + "right_pr_number": 67768, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/session-utils.ts" + ], + "similarity": 0.262, + "size_similarity": 0.078 } ], - "pr_count": 5, + "pr_count": 10, "pr_numbers": [ - 53561, - 65641, - 66276, - 66297, - 66435 + 37639, + 54449, + 59436, + 64988, + 65178, + 65211, + 66544, + 67766, + 67768, + 68047 ], - "recent_pr_count": 4, + "recent_pr_count": 3, "recent_pr_numbers": [ - 65641, - 66276, - 66297, - 66435 + 67766, + 67768, + 68047 ], - "representative_pr_number": 65641, - "representative_title": "Improve local gateway RPC diagnostics", - "representative_url": "https://github.com/openclaw/openclaw/pull/65641", + "representative_pr_number": 68047, + "representative_title": "fix(gateway): extend image-support name fallback to direct anthropic provider", + "representative_url": "https://github.com/openclaw/openclaw/pull/68047", "shared_directories": [ "src/gateway", "src" ], "shared_filenames": [ - "src/gateway/call.test.ts", - "src/gateway/call.ts", - "src/gateway/client.ts", - "src/gateway/client.test.ts" + "src/gateway/session-utils.ts", + "src/gateway/session-utils.test.ts" ], - "summary": "5 open PRs share weighted file overlap around `src/gateway/call.test.ts`, `src/gateway/call.ts`, `src/gateway/client.ts`; representative PR #65641.", - "title": "Scope: Improve local gateway RPC diagnostics" + "summary": "10 open PRs share weighted file overlap around `src/gateway/session-utils.ts`, `src/gateway/session-utils.test.ts`; representative PR #68047.", + "title": "Scope: fix(gateway): extend image-support name fallback to direct anthropic provider" }, { "authors": [ - "EronFan", - "hchen13", - "neeravmakwana", - "rmfalco89" + "Sanjays2402", + "skernelx", + "vvitovec" ], - "average_similarity": 0.405, - "cluster_id": "pr-scope-57422-5", + "average_similarity": 0.467, + "cluster_id": "pr-scope-53281-9", "kind": "pr_scope", - "last_activity_at": "2026-04-17T23:45:04Z", + "last_activity_at": "2026-04-21T03:54:13Z", "outside_window_prs": [ { - "additions": 417, - "author": "sinogello", - "changed_files": 7, - "created_at": "2026-03-30T02:46:42Z", - "deletions": 26, + "additions": 85, + "author": "mrbob-git", + "changed_files": 5, + "created_at": "2026-03-24T01:48:42Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/57422/files", - "html_url": "https://github.com/openclaw/openclaw/pull/57422", + "files_url": "https://github.com/openclaw/openclaw/pull/53281/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53281", "merged": false, - "number": 57422, + "number": 53281, "state": "open", - "title": "telegram: improve polling outage detection and recovery after network loss", - "updated_at": "2026-04-18T10:15:43Z" + "title": "agents: clarify attachAs.mountPath guidance for subagent attachments", + "updated_at": "2026-03-24T20:15:31Z" + }, + { + "additions": 50, + "author": "w-sss", + "changed_files": 6, + "created_at": "2026-03-24T11:05:59Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53631/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53631", + "merged": false, + "number": 53631, + "state": "open", + "title": "fix(telegram): improve 403 bot not member/blocked error messages", + "updated_at": "2026-03-24T20:15:30Z" + }, + { + "additions": 36, + "author": "w-sss", + "changed_files": 5, + "created_at": "2026-03-24T11:06:07Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53632/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53632", + "merged": false, + "number": 53632, + "state": "open", + "title": "fix(browser): add missing logWarn imports", + "updated_at": "2026-03-24T20:15:29Z" + }, + { + "additions": 77, + "author": "grtninja", + "changed_files": 11, + "created_at": "2026-04-11T11:50:44Z", + "deletions": 31, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64787/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64787", + "merged": false, + "number": 64787, + "state": "open", + "title": "fix: ignore auto-filled streamTo for subagent spawns", + "updated_at": "2026-04-13T19:57:19Z" + }, + { + "additions": 12, + "author": "damselem", + "changed_files": 2, + "created_at": "2026-04-12T09:37:25Z", + "deletions": 13, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65282/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65282", + "merged": false, + "number": 65282, + "state": "open", + "title": "fix(agents): ignore ACP-only streamTo on subagent sessions_spawn", + "updated_at": "2026-04-13T18:32:22Z" + }, + { + "additions": 61, + "author": "Gi99lin", + "changed_files": 2, + "created_at": "2026-04-14T17:56:46Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66720/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66720", + "merged": false, + "number": 66720, + "state": "open", + "title": "fix: strip runtime-specific properties from sessions_spawn tool schema for provider compatibility", + "updated_at": "2026-04-15T08:41:26Z" } ], "pairwise": [ { - "breadth_similarity": 0.292, - "concentration_similarity": 0.833, - "content_similarity": 0.577, - "left_pr_number": 66889, - "right_pr_number": 67083, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.946, + "left_pr_number": 69170, + "right_pr_number": 69203, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/telegram/src/fetch.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.606, - "size_similarity": 0.878 + "similarity": 0.937, + "size_similarity": 0.833 }, { - "breadth_similarity": 0.652, - "concentration_similarity": 0.997, - "content_similarity": 0.498, - "left_pr_number": 57422, - "right_pr_number": 68128, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.893, + "left_pr_number": 68397, + "right_pr_number": 69203, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/telegram/src/fetch.test.ts", - "extensions/telegram/src/fetch.ts", - "extensions/telegram/src/monitor.test.ts", - "extensions/telegram/src/polling-session.ts", - "extensions/telegram/src/polling-transport-state.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.581, - "size_similarity": 0.781 + "similarity": 0.817, + "size_similarity": 0.283 }, { - "breadth_similarity": 0.536, - "concentration_similarity": 0.991, - "content_similarity": 0.445, - "left_pr_number": 57422, - "right_pr_number": 66837, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.845, + "left_pr_number": 68397, + "right_pr_number": 69170, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/telegram/src/polling-session.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.56, - "size_similarity": 0.971 + "similarity": 0.792, + "size_similarity": 0.34 }, { - "breadth_similarity": 0.682, - "concentration_similarity": 0.846, - "content_similarity": 0.411, - "left_pr_number": 66889, - "right_pr_number": 68128, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.705, + "left_pr_number": 65282, + "right_pr_number": 68397, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "CHANGELOG.md", - "extensions/telegram/src/fetch.test.ts", - "extensions/telegram/src/fetch.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.408, - "size_similarity": 0.063 + "similarity": 0.714, + "size_similarity": 0.472 }, { - "breadth_similarity": 0.212, - "concentration_similarity": 0.988, - "content_similarity": 0.46, - "left_pr_number": 67083, - "right_pr_number": 68128, + "breadth_similarity": 0.75, + "concentration_similarity": 0.887, + "content_similarity": 0.625, + "left_pr_number": 66720, + "right_pr_number": 68397, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/telegram/src/fetch.ts" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.404, - "size_similarity": 0.072 + "similarity": 0.685, + "size_similarity": 0.855 }, { - "breadth_similarity": 0.348, - "concentration_similarity": 0.988, - "content_similarity": 0.263, - "left_pr_number": 66837, - "right_pr_number": 68128, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.518, + "left_pr_number": 65282, + "right_pr_number": 69170, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/telegram/src/polling-session.test.ts", - "extensions/telegram/src/polling-session.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.382, - "size_similarity": 0.758 + "similarity": 0.621, + "size_similarity": 0.72 }, { - "breadth_similarity": 0.321, - "concentration_similarity": 0.991, - "content_similarity": 0.35, - "left_pr_number": 57422, - "right_pr_number": 67083, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.52, + "left_pr_number": 65282, + "right_pr_number": 69203, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/telegram/src/fetch.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.34, - "size_similarity": 0.093 + "similarity": 0.604, + "size_similarity": 0.6 }, { - "breadth_similarity": 0.619, - "concentration_similarity": 0.842, - "content_similarity": 0.309, - "left_pr_number": 57422, - "right_pr_number": 66889, + "breadth_similarity": 0.75, + "concentration_similarity": 0.887, + "content_similarity": 0.573, + "left_pr_number": 65282, + "right_pr_number": 66720, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/telegram/src/fetch.test.ts", - "extensions/telegram/src/fetch.ts" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.333, - "size_similarity": 0.081 + "similarity": 0.581, + "size_similarity": 0.403 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 1.0, - "content_similarity": 0.157, - "left_pr_number": 66837, - "right_pr_number": 67083, + "breadth_similarity": 0.75, + "concentration_similarity": 0.821, + "content_similarity": 0.503, + "left_pr_number": 53631, + "right_pr_number": 53632, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.237, - "size_similarity": 0.095 - }, - { - "breadth_similarity": 0.667, - "concentration_similarity": 0.833, - "content_similarity": 0.114, - "left_pr_number": 66837, - "right_pr_number": 66889, - "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "shared_filenames": [ + "src/agents/subagent-announce.ts", + "src/agents/subagent-registry.ts", + "src/agents/subagent-registry.types.ts", + "src/agents/subagent-spawn.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "shared_filenames": [], - "similarity": 0.2, - "size_similarity": 0.084 - } - ], - "pr_count": 5, - "pr_numbers": [ - 57422, - 66837, - 66889, - 67083, - 68128 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 66837, - 66889, - 67083, - 68128 - ], - "representative_pr_number": 57422, - "representative_title": "telegram: improve polling outage detection and recovery after network loss", - "representative_url": "https://github.com/openclaw/openclaw/pull/57422", - "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" - ], - "shared_filenames": [ - "extensions/telegram/src/fetch.ts", - "extensions/telegram/src/fetch.test.ts", - "extensions/telegram/src/polling-session.ts", - "extensions/telegram/src/monitor.test.ts", - "extensions/telegram/src/polling-transport-state.ts", - "extensions/telegram/src/polling-session.test.ts", - "CHANGELOG.md" - ], - "summary": "5 open PRs share weighted file overlap around `extensions/telegram/src/fetch.ts`, `extensions/telegram/src/fetch.test.ts`, `extensions/telegram/src/polling-session.ts`; representative PR #57422.", - "title": "Scope: telegram: improve polling outage detection and recovery after network loss" - }, - { - "authors": [ - "1aifanatic", - "igormf", - "nnish16", - "vvitovec" - ], - "average_similarity": 0.713, - "cluster_id": "pr-scope-67395-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T01:39:27Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.576, + "size_similarity": 0.717 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.991, - "left_pr_number": 68106, - "right_pr_number": 68132, + "breadth_similarity": 0.7, + "concentration_similarity": 0.744, + "content_similarity": 0.507, + "left_pr_number": 53632, + "right_pr_number": 66720, "shared_directories": [ - "extensions/lobster/src", - "extensions/lobster", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/lobster/src/lobster-runner.test.ts", - "extensions/lobster/src/lobster-runner.ts" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.897, - "size_similarity": 0.357 + "similarity": 0.554, + "size_similarity": 0.613 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.8, - "left_pr_number": 68106, - "right_pr_number": 68313, + "breadth_similarity": 0.367, + "concentration_similarity": 0.495, + "content_similarity": 0.602, + "left_pr_number": 53281, + "right_pr_number": 65282, "shared_directories": [ - "extensions/lobster/src", - "extensions/lobster", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/lobster/src/lobster-runner.test.ts", - "extensions/lobster/src/lobster-runner.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.852, - "size_similarity": 0.95 + "similarity": 0.523, + "size_similarity": 0.269 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.781, - "left_pr_number": 68132, - "right_pr_number": 68313, + "breadth_similarity": 0.5, + "concentration_similarity": 0.566, + "content_similarity": 0.442, + "left_pr_number": 53631, + "right_pr_number": 66720, "shared_directories": [ - "extensions/lobster/src", - "extensions/lobster", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/lobster/src/lobster-runner.test.ts", - "extensions/lobster/src/lobster-runner.ts" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.748, - "size_similarity": 0.339 + "similarity": 0.516, + "size_similarity": 0.855 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.851, - "content_similarity": 0.72, - "left_pr_number": 67395, - "right_pr_number": 68106, + "breadth_similarity": 0.602, + "concentration_similarity": 0.978, + "content_similarity": 0.348, + "left_pr_number": 53281, + "right_pr_number": 64787, "shared_directories": [ - "extensions/lobster/src", - "extensions/lobster", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/lobster/src/lobster-runner.test.ts", - "extensions/lobster/src/lobster-runner.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.597, - "size_similarity": 0.058 + "similarity": 0.482, + "size_similarity": 0.861 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.851, - "content_similarity": 0.716, - "left_pr_number": 67395, - "right_pr_number": 68313, + "breadth_similarity": 0.367, + "concentration_similarity": 0.495, + "content_similarity": 0.459, + "left_pr_number": 53281, + "right_pr_number": 68397, "shared_directories": [ - "extensions/lobster/src", - "extensions/lobster", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/lobster/src/lobster-runner.test.ts", - "extensions/lobster/src/lobster-runner.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.594, - "size_similarity": 0.055 + "similarity": 0.468, + "size_similarity": 0.57 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.851, - "content_similarity": 0.684, - "left_pr_number": 67395, - "right_pr_number": 68132, + "breadth_similarity": 0.75, + "concentration_similarity": 0.887, + "content_similarity": 0.413, + "left_pr_number": 66720, + "right_pr_number": 69203, "shared_directories": [ - "extensions/lobster/src", - "extensions/lobster", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/lobster/src/lobster-runner.test.ts", - "extensions/lobster/src/lobster-runner.ts" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.587, - "size_similarity": 0.163 - } - ], - "pr_count": 4, - "pr_numbers": [ - 67395, - 68106, - 68132, - 68313 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 67395, - 68106, - 68132, - 68313 - ], - "representative_pr_number": 68106, - "representative_title": "fix(lobster): surface workflow path errors", - "representative_url": "https://github.com/openclaw/openclaw/pull/68106", - "shared_directories": [ - "extensions/lobster/src", - "extensions/lobster", - "extensions" - ], - "shared_filenames": [ - "extensions/lobster/src/lobster-runner.test.ts", - "extensions/lobster/src/lobster-runner.ts" - ], - "summary": "4 open PRs share weighted file overlap around `extensions/lobster/src/lobster-runner.test.ts`, `extensions/lobster/src/lobster-runner.ts`; representative PR #68106.", - "title": "Scope: fix(lobster): surface workflow path errors" - }, - { - "authors": [ - "MukundaKatta", - "mrlane2k", - "neeravmakwana" - ], - "average_similarity": 0.688, - "cluster_id": "pr-scope-66742-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T09:35:19Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.445, + "size_similarity": 0.242 + }, { - "breadth_similarity": 0.708, - "concentration_similarity": 0.974, - "content_similarity": 0.935, - "left_pr_number": 66742, - "right_pr_number": 66770, + "breadth_similarity": 0.75, + "concentration_similarity": 0.887, + "content_similarity": 0.387, + "left_pr_number": 66720, + "right_pr_number": 69170, "shared_directories": [ - "src/hooks", - "src/plugins", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/hooks/message-hook-mappers.test.ts", - "src/hooks/message-hook-mappers.ts", - "src/plugins/hook-message.types.ts" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.849, - "size_similarity": 0.5 + "similarity": 0.434, + "size_similarity": 0.29 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.942, - "content_similarity": 0.75, - "left_pr_number": 66770, - "right_pr_number": 66910, + "breadth_similarity": 0.45, + "concentration_similarity": 0.632, + "content_similarity": 0.348, + "left_pr_number": 53632, + "right_pr_number": 68397, "shared_directories": [ - "src/hooks", - "src/plugins", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/hooks/message-hook-mappers.test.ts", - "src/hooks/message-hook-mappers.ts", - "src/plugins/hook-message.types.ts" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.719, - "size_similarity": 0.398 + "similarity": 0.428, + "size_similarity": 0.717 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.895, - "content_similarity": 0.71, - "left_pr_number": 66742, - "right_pr_number": 67884, + "breadth_similarity": 0.216, + "concentration_similarity": 0.472, + "content_similarity": 0.433, + "left_pr_number": 64787, + "right_pr_number": 68397, "shared_directories": [ - "src/hooks", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/hooks/message-hook-mappers.test.ts", - "src/hooks/message-hook-mappers.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.682, - "size_similarity": 0.658 + "similarity": 0.422, + "size_similarity": 0.491 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.921, - "content_similarity": 0.73, - "left_pr_number": 66770, - "right_pr_number": 67884, + "breadth_similarity": 0.216, + "concentration_similarity": 0.472, + "content_similarity": 0.486, + "left_pr_number": 64787, + "right_pr_number": 65282, "shared_directories": [ - "src/hooks", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/hooks/message-hook-mappers.test.ts", - "src/hooks/message-hook-mappers.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.665, - "size_similarity": 0.329 + "similarity": 0.42, + "size_similarity": 0.231 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 0.916, - "content_similarity": 0.651, - "left_pr_number": 66742, - "right_pr_number": 66910, + "breadth_similarity": 0.333, + "concentration_similarity": 0.453, + "content_similarity": 0.303, + "left_pr_number": 53631, + "right_pr_number": 68397, "shared_directories": [ - "src/hooks", - "src/plugins", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/hooks/message-hook-mappers.test.ts", - "src/hooks/message-hook-mappers.ts", - "src/plugins/hook-message.types.ts" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.615, - "size_similarity": 0.199 + "similarity": 0.418, + "size_similarity": 1.0 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.979, - "content_similarity": 0.688, - "left_pr_number": 66910, - "right_pr_number": 67884, + "breadth_similarity": 0.367, + "concentration_similarity": 0.495, + "content_similarity": 0.442, + "left_pr_number": 53281, + "right_pr_number": 69170, "shared_directories": [ - "src/hooks", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/hooks/message-hook-mappers.test.ts", - "src/hooks/message-hook-mappers.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.6, - "size_similarity": 0.131 - } - ], - "pr_count": 4, - "pr_numbers": [ - 66742, - 66770, - 66910, - 67884 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 66742, - 66770, - 66910, - 67884 - ], - "representative_pr_number": 66770, - "representative_title": "feat(plugin-sdk): expose messageId on plugin message_sent hook event", - "representative_url": "https://github.com/openclaw/openclaw/pull/66770", - "shared_directories": [ - "src/hooks", - "src", - "src/plugins" - ], - "shared_filenames": [ - "src/hooks/message-hook-mappers.test.ts", - "src/hooks/message-hook-mappers.ts", - "src/plugins/hook-message.types.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/hooks/message-hook-mappers.test.ts`, `src/hooks/message-hook-mappers.ts`, `src/plugins/hook-message.types.ts`; representative PR #66770.", - "title": "Scope: feat(plugin-sdk): expose messageId on plugin message_sent hook event" - }, - { - "authors": [ - "Kailigithub", - "frankhli843", - "neeravmakwana" - ], - "average_similarity": 0.556, - "cluster_id": "pr-scope-68193-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T06:41:39Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.4, + "size_similarity": 0.194 + }, { - "breadth_similarity": 0.775, - "concentration_similarity": 0.974, - "content_similarity": 0.808, - "left_pr_number": 68193, - "right_pr_number": 68740, + "breadth_similarity": 0.367, + "concentration_similarity": 0.495, + "content_similarity": 0.442, + "left_pr_number": 53281, + "right_pr_number": 69203, "shared_directories": [ - "extensions/ollama/src", - "extensions/ollama", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/ollama/src/provider-models.test.ts", - "extensions/ollama/src/provider-models.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.788, - "size_similarity": 0.641 + "similarity": 0.395, + "size_similarity": 0.161 }, { - "breadth_similarity": 0.9, - "concentration_similarity": 0.95, - "content_similarity": 0.866, - "left_pr_number": 68349, - "right_pr_number": 68740, + "breadth_similarity": 0.533, + "concentration_similarity": 0.608, + "content_similarity": 0.298, + "left_pr_number": 53281, + "right_pr_number": 66720, "shared_directories": [ - "extensions/ollama/src", - "docs/providers", - "extensions/ollama", - "docs", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "CHANGELOG.md", - "docs/providers/ollama.md", - "extensions/ollama/src/provider-models.test.ts", - "extensions/ollama/src/provider-models.ts" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.779, - "size_similarity": 0.237 + "similarity": 0.392, + "size_similarity": 0.667 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.975, - "content_similarity": 0.701, - "left_pr_number": 68193, - "right_pr_number": 68349, + "breadth_similarity": 0.45, + "concentration_similarity": 0.632, + "content_similarity": 0.287, + "left_pr_number": 53632, + "right_pr_number": 65282, "shared_directories": [ - "extensions/ollama/src", - "extensions/ollama", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/ollama/src/provider-models.test.ts", - "extensions/ollama/src/provider-models.ts" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.682, - "size_similarity": 0.37 + "similarity": 0.376, + "size_similarity": 0.658 }, { - "breadth_similarity": 0.675, - "concentration_similarity": 0.6, - "content_similarity": 0.516, - "left_pr_number": 68193, - "right_pr_number": 68762, + "breadth_similarity": 0.917, + "concentration_similarity": 0.958, + "content_similarity": 0.194, + "left_pr_number": 53281, + "right_pr_number": 53631, "shared_directories": [ - "extensions/ollama/src", - "extensions/huggingface", - "extensions/ollama", - "src/plugins", - "extensions", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "extensions/huggingface/models.ts", - "extensions/ollama/src/provider-models.ts", - "src/plugins/provider-self-hosted-setup.ts" + "src/agents/subagent-spawn.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.475, - "size_similarity": 0.109 + "similarity": 0.361, + "size_similarity": 0.57 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.575, - "content_similarity": 0.27, - "left_pr_number": 68740, - "right_pr_number": 68762, + "breadth_similarity": 0.341, + "concentration_similarity": 0.585, + "content_similarity": 0.284, + "left_pr_number": 64787, + "right_pr_number": 66720, "shared_directories": [ - "extensions/ollama/src", - "extensions/ollama", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/ollama/src/provider-models.ts" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.331, - "size_similarity": 0.171 + "similarity": 0.348, + "size_similarity": 0.574 }, { - "breadth_similarity": 0.8, - "concentration_similarity": 0.625, - "content_similarity": 0.236, - "left_pr_number": 68349, - "right_pr_number": 68762, + "breadth_similarity": 0.216, + "concentration_similarity": 0.472, + "content_similarity": 0.399, + "left_pr_number": 64787, + "right_pr_number": 69203, "shared_directories": [ - "extensions/ollama/src", - "extensions/ollama", - "extensions" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/ollama/src/provider-models.ts" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.282, - "size_similarity": 0.04 - } - ], - "pr_count": 4, - "pr_numbers": [ - 68193, - 68349, - 68740, - 68762 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 68193, - 68349, - 68740, - 68762 - ], - "representative_pr_number": 68193, - "representative_title": "feat(ollama): detect Gemma 4 as reasoning model and check capabilities", - "representative_url": "https://github.com/openclaw/openclaw/pull/68193", - "shared_directories": [ - "extensions/ollama/src", - "extensions/ollama", - "extensions", - "extensions/huggingface", - "docs/providers", - "src/plugins", - "docs", - "src" - ], - "shared_filenames": [ - "extensions/ollama/src/provider-models.ts", - "extensions/ollama/src/provider-models.test.ts", - "extensions/huggingface/models.ts", - "src/plugins/provider-self-hosted-setup.ts", - "docs/providers/ollama.md", - "CHANGELOG.md" - ], - "summary": "4 open PRs share weighted file overlap around `extensions/ollama/src/provider-models.ts`, `extensions/ollama/src/provider-models.test.ts`, `extensions/huggingface/models.ts`; representative PR #68193.", - "title": "Scope: feat(ollama): detect Gemma 4 as reasoning model and check capabilities" - }, - { - "authors": [ - "MukundaKatta", - "pfrederiksen", - "sharkqwy" - ], - "average_similarity": 0.542, - "cluster_id": "pr-scope-66696-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T15:43:25Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.345, + "size_similarity": 0.139 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.715, - "content_similarity": 0.928, - "left_pr_number": 66696, - "right_pr_number": 67870, - "shared_directories": [ - "scripts/pre-commit", - "git-hooks", - "scripts" + "breadth_similarity": 0.833, + "concentration_similarity": 0.863, + "content_similarity": 0.223, + "left_pr_number": 53281, + "right_pr_number": 53632, + "shared_directories": [ + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "git-hooks/pre-commit", - "scripts/pre-commit/run-node-tool.sh" + "src/agents/subagent-spawn.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.884, - "size_similarity": 0.654 + "similarity": 0.344, + "size_similarity": 0.409 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.538, - "content_similarity": 0.658, - "left_pr_number": 66753, - "right_pr_number": 67870, + "breadth_similarity": 0.216, + "concentration_similarity": 0.472, + "content_similarity": 0.388, + "left_pr_number": 64787, + "right_pr_number": 69170, "shared_directories": [ - "git-hooks" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "git-hooks/pre-commit" + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.653, - "size_similarity": 0.769 + "similarity": 0.342, + "size_similarity": 0.167 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.824, - "content_similarity": 0.392, - "left_pr_number": 66696, - "right_pr_number": 66753, + "breadth_similarity": 0.45, + "concentration_similarity": 0.632, + "content_similarity": 0.293, + "left_pr_number": 53632, + "right_pr_number": 69203, "shared_directories": [ - "git-hooks" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "git-hooks/pre-commit" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.493, - "size_similarity": 0.85 + "similarity": 0.341, + "size_similarity": 0.395 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.795, - "content_similarity": 0.442, - "left_pr_number": 66753, - "right_pr_number": 66776, + "breadth_similarity": 0.45, + "concentration_similarity": 0.632, + "content_similarity": 0.274, + "left_pr_number": 53632, + "right_pr_number": 69170, "shared_directories": [ - "git-hooks" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "git-hooks/pre-commit" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.467, - "size_similarity": 0.455 + "similarity": 0.339, + "size_similarity": 0.474 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.743, - "content_similarity": 0.292, - "left_pr_number": 66776, - "right_pr_number": 67870, + "breadth_similarity": 0.333, + "concentration_similarity": 0.453, + "content_similarity": 0.25, + "left_pr_number": 53631, + "right_pr_number": 65282, "shared_directories": [ - "git-hooks" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "git-hooks/pre-commit" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.43, - "size_similarity": 0.591 + "similarity": 0.302, + "size_similarity": 0.472 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.972, - "content_similarity": 0.167, - "left_pr_number": 66696, - "right_pr_number": 66776, + "breadth_similarity": 0.648, + "concentration_similarity": 0.981, + "content_similarity": 0.146, + "left_pr_number": 53631, + "right_pr_number": 64787, "shared_directories": [ - "git-hooks" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "git-hooks/pre-commit" + "src/agents/tools/sessions-spawn-tool.ts" ], - "similarity": 0.323, - "size_similarity": 0.386 + "similarity": 0.29, + "size_similarity": 0.491 + }, + { + "breadth_similarity": 0.333, + "concentration_similarity": 0.453, + "content_similarity": 0.255, + "left_pr_number": 53631, + "right_pr_number": 69203, + "shared_directories": [ + "src/agents/tools", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/tools/sessions-spawn-tool.ts" + ], + "similarity": 0.277, + "size_similarity": 0.283 + }, + { + "breadth_similarity": 0.333, + "concentration_similarity": 0.453, + "content_similarity": 0.239, + "left_pr_number": 53631, + "right_pr_number": 69170, + "shared_directories": [ + "src/agents/tools", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/tools/sessions-spawn-tool.ts" + ], + "similarity": 0.274, + "size_similarity": 0.34 + }, + { + "breadth_similarity": 0.477, + "concentration_similarity": 0.841, + "content_similarity": 0.168, + "left_pr_number": 53632, + "right_pr_number": 64787, + "shared_directories": [ + "src/agents/tools", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/tools/sessions-spawn-tool.ts" + ], + "similarity": 0.26, + "size_similarity": 0.352 } ], - "pr_count": 4, + "pr_count": 9, "pr_numbers": [ - 66696, - 66753, - 66776, - 67870 + 53281, + 53631, + 53632, + 64787, + 65282, + 66720, + 68397, + 69170, + 69203 ], - "recent_pr_count": 4, + "recent_pr_count": 3, "recent_pr_numbers": [ - 66696, - 66753, - 66776, - 67870 + 68397, + 69170, + 69203 ], - "representative_pr_number": 67870, - "representative_title": "fix(pre-commit): support corepack-managed pnpm in hook tooling", - "representative_url": "https://github.com/openclaw/openclaw/pull/67870", + "representative_pr_number": 68397, + "representative_title": "fix(sessions_spawn): silently strip ACP-only fields for runtime=subagent", + "representative_url": "https://github.com/openclaw/openclaw/pull/68397", "shared_directories": [ - "git-hooks", - "scripts/pre-commit", - "scripts" + "src/agents/tools", + "src/agents", + "src" ], "shared_filenames": [ - "git-hooks/pre-commit", - "scripts/pre-commit/run-node-tool.sh" + "src/agents/tools/sessions-spawn-tool.ts", + "src/agents/tools/sessions-spawn-tool.test.ts", + "src/agents/subagent-spawn.ts", + "src/agents/subagent-registry.types.ts", + "src/agents/subagent-registry.ts", + "src/agents/subagent-announce.ts" ], - "summary": "4 open PRs share weighted file overlap around `git-hooks/pre-commit`, `scripts/pre-commit/run-node-tool.sh`; representative PR #67870.", - "title": "Scope: fix(pre-commit): support corepack-managed pnpm in hook tooling" + "summary": "9 open PRs share weighted file overlap around `src/agents/tools/sessions-spawn-tool.ts`, `src/agents/tools/sessions-spawn-tool.test.ts`, `src/agents/subagent-spawn.ts`; representative PR #68397.", + "title": "Scope: fix(sessions_spawn): silently strip ACP-only fields for runtime=subagent" }, { "authors": [ - "Lidang-Jiang", - "SimbaKingjoe", - "quengh" + "Lucenx9", + "jguin", + "nufnaf" ], - "average_similarity": 0.539, - "cluster_id": "pr-scope-66285-4", + "average_similarity": 0.4, + "cluster_id": "pr-scope-53782-9", "kind": "pr_scope", - "last_activity_at": "2026-04-19T06:24:54Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-19T10:53:22Z", + "outside_window_prs": [ + { + "additions": 85, + "author": "ernestodeoliveira", + "changed_files": 2, + "created_at": "2026-03-24T16:05:18Z", + "deletions": 10, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53782/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53782", + "merged": false, + "number": 53782, + "state": "open", + "title": "fix(discord): graceful degradation when account missing Message Content Intent", + "updated_at": "2026-03-24T20:15:29Z" + }, + { + "additions": 110, + "author": "qinyao-he", + "changed_files": 3, + "created_at": "2026-04-07T20:16:08Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/62689/files", + "html_url": "https://github.com/openclaw/openclaw/pull/62689", + "merged": false, + "number": 62689, + "state": "open", + "title": "[AI-assisted] fix(discord): normalize channel: prefix in ACP thread binding REST lookups", + "updated_at": "2026-04-11T03:55:40Z" + }, + { + "additions": 62, + "author": "whydoineedausername-huh", + "changed_files": 2, + "created_at": "2026-04-10T18:14:16Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64446/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64446", + "merged": false, + "number": 64446, + "state": "open", + "title": "fix(discord): normalize explicit parent channel ids for child bindings", + "updated_at": "2026-04-10T19:15:29Z" + }, + { + "additions": 65, + "author": "BenediktSchackenberg", + "changed_files": 3, + "created_at": "2026-04-11T10:57:21Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64768/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64768", + "merged": false, + "number": 64768, + "state": "open", + "title": "fix(discord): disconnect gateway before missing-id startup throw", + "updated_at": "2026-04-11T11:14:32Z" + }, + { + "additions": 33, + "author": "janicduplessis", + "changed_files": 2, + "created_at": "2026-04-12T02:54:34Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65123/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65123", + "merged": false, + "number": 65123, + "state": "open", + "title": "fix(discord): preserve explicit target kind when parsing recipients", + "updated_at": "2026-04-13T01:59:39Z" + }, + { + "additions": 62, + "author": "Hou-Yufan", + "changed_files": 2, + "created_at": "2026-04-12T15:18:31Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65421/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65421", + "merged": false, + "number": 65421, + "state": "open", + "title": "fix(discord): add message_sending plugin hook to reply delivery path", + "updated_at": "2026-04-13T02:18:32Z" + } + ], "pairwise": [ { - "breadth_similarity": 1.0, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.54, - "left_pr_number": 68773, - "right_pr_number": 68837, + "content_similarity": 0.826, + "left_pr_number": 67665, + "right_pr_number": 67867, "shared_directories": [ - "extensions/active-memory", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/active-memory/index.test.ts", - "extensions/active-memory/index.ts" + "extensions/discord/src/monitor/thread-bindings.discord-api.test.ts", + "extensions/discord/src/monitor/thread-bindings.discord-api.ts" ], - "similarity": 0.606, - "size_similarity": 0.52 + "similarity": 0.832, + "size_similarity": 0.8 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 1.0, - "content_similarity": 0.59, - "left_pr_number": 66285, - "right_pr_number": 67977, + "breadth_similarity": 0.583, + "concentration_similarity": 0.684, + "content_similarity": 0.822, + "left_pr_number": 62689, + "right_pr_number": 67665, "shared_directories": [ - "extensions/active-memory", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/active-memory/index.test.ts", - "extensions/active-memory/index.ts", - "extensions/active-memory/openclaw.plugin.json" + "extensions/discord/src/monitor/thread-bindings.discord-api.test.ts", + "extensions/discord/src/monitor/thread-bindings.discord-api.ts" ], - "similarity": 0.584, - "size_similarity": 0.223 + "similarity": 0.721, + "size_similarity": 0.351 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.53, - "left_pr_number": 67977, - "right_pr_number": 68837, + "breadth_similarity": 0.75, + "concentration_similarity": 0.684, + "content_similarity": 0.687, + "left_pr_number": 62689, + "right_pr_number": 67867, "shared_directories": [ - "extensions/active-memory", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/active-memory/index.test.ts", - "extensions/active-memory/index.ts" + "extensions/discord/src/monitor/thread-bindings.discord-api.test.ts", + "extensions/discord/src/monitor/thread-bindings.discord-api.ts" ], - "similarity": 0.517, - "size_similarity": 0.082 + "similarity": 0.656, + "size_similarity": 0.439 }, { - "breadth_similarity": 0.833, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.513, - "left_pr_number": 67977, - "right_pr_number": 68773, + "content_similarity": 0.575, + "left_pr_number": 53782, + "right_pr_number": 65123, "shared_directories": [ - "extensions/active-memory", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/active-memory/index.test.ts", - "extensions/active-memory/index.ts" + "extensions/discord/src/channel.test.ts", + "extensions/discord/src/channel.ts" ], - "similarity": 0.516, - "size_similarity": 0.157 + "similarity": 0.606, + "size_similarity": 0.358 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.467, - "left_pr_number": 66285, - "right_pr_number": 68837, + "content_similarity": 0.309, + "left_pr_number": 64446, + "right_pr_number": 67867, "shared_directories": [ - "extensions/active-memory", + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/active-memory/index.test.ts", - "extensions/active-memory/index.ts" + "extensions/discord/src/monitor/thread-bindings.manager.ts" ], - "similarity": 0.507, - "size_similarity": 0.366 + "similarity": 0.469, + "size_similarity": 0.794 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.393, - "left_pr_number": 66285, - "right_pr_number": 68773, + "breadth_similarity": 0.583, + "concentration_similarity": 0.684, + "content_similarity": 0.355, + "left_pr_number": 53782, + "right_pr_number": 62689, "shared_directories": [ - "extensions/active-memory", + "extensions/discord/src", + "extensions/discord", "extensions" ], "shared_filenames": [ - "extensions/active-memory/index.test.ts", - "extensions/active-memory/index.ts" + "extensions/discord/src/channel.test.ts" ], - "similarity": 0.506, - "size_similarity": 0.704 - } - ], - "pr_count": 4, - "pr_numbers": [ - 66285, - 67977, - 68773, - 68837 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 66285, - 67977, - 68773, - 68837 - ], - "representative_pr_number": 68837, - "representative_title": "fix(active-memory): skip non-string entries in pluginConfig.agents du\u2026", - "representative_url": "https://github.com/openclaw/openclaw/pull/68837", - "shared_directories": [ - "extensions/active-memory", - "extensions" - ], - "shared_filenames": [ - "extensions/active-memory/index.test.ts", - "extensions/active-memory/index.ts", - "extensions/active-memory/openclaw.plugin.json" - ], - "summary": "4 open PRs share weighted file overlap around `extensions/active-memory/index.test.ts`, `extensions/active-memory/index.ts`, `extensions/active-memory/openclaw.plugin.json`; representative PR #68837.", - "title": "Scope: fix(active-memory): skip non-string entries in pluginConfig.agents du\u2026" - }, - { - "authors": [ - "YangManBOBO", - "bobgee00001-beep", - "ryanngit", - "zhouhe-xydt" - ], - "average_similarity": 0.534, - "cluster_id": "pr-scope-65419-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T10:13:57Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.466, + "size_similarity": 0.833 + }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.901, - "left_pr_number": 67644, - "right_pr_number": 67924, + "content_similarity": 0.206, + "left_pr_number": 67665, + "right_pr_number": 68922, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/bash-tools.exec.script-preflight.test.ts", - "src/agents/bash-tools.exec.ts" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.891, - "size_similarity": 0.738 + "shared_filenames": [], + "similarity": 0.441, + "size_similarity": 0.976 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.499, - "left_pr_number": 65419, - "right_pr_number": 67924, + "content_similarity": 0.192, + "left_pr_number": 64446, + "right_pr_number": 64768, "shared_directories": [ - "src/agents", - "src" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "shared_filenames": [ - "src/agents/bash-tools.exec.script-preflight.test.ts", - "src/agents/bash-tools.exec.ts" + "shared_filenames": [], + "similarity": 0.411, + "size_similarity": 0.955 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.984, + "content_similarity": 0.189, + "left_pr_number": 64446, + "right_pr_number": 65421, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.556, - "size_similarity": 0.379 + "shared_filenames": [], + "similarity": 0.407, + "size_similarity": 1.0 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.488, - "left_pr_number": 65419, - "right_pr_number": 67644, + "content_similarity": 0.203, + "left_pr_number": 64768, + "right_pr_number": 67867, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/bash-tools.exec.script-preflight.test.ts", - "src/agents/bash-tools.exec.ts" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.533, - "size_similarity": 0.28 + "shared_filenames": [], + "similarity": 0.406, + "size_similarity": 0.758 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.301, - "left_pr_number": 66101, - "right_pr_number": 67644, + "content_similarity": 0.206, + "left_pr_number": 67867, + "right_pr_number": 68922, "shared_directories": [ - "src/agents", - "src" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.4, + "size_similarity": 0.82 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.684, + "content_similarity": 0.373, + "left_pr_number": 62689, + "right_pr_number": 65123, + "shared_directories": [ + "extensions/discord/src", + "extensions/discord", + "extensions" ], "shared_filenames": [ - "src/agents/bash-tools.exec.ts" + "extensions/discord/src/channel.test.ts" ], - "similarity": 0.489, - "size_similarity": 0.857 + "similarity": 0.398, + "size_similarity": 0.298 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.984, + "content_similarity": 0.195, + "left_pr_number": 64768, + "right_pr_number": 65421, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.387, + "size_similarity": 0.955 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.284, - "left_pr_number": 66101, - "right_pr_number": 67924, + "content_similarity": 0.195, + "left_pr_number": 64446, + "right_pr_number": 68922, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/bash-tools.exec.ts" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.444, - "size_similarity": 0.633 + "shared_filenames": [], + "similarity": 0.384, + "size_similarity": 0.651 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.147, - "left_pr_number": 65419, - "right_pr_number": 66101, + "content_similarity": 0.197, + "left_pr_number": 64446, + "right_pr_number": 67665, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/bash-tools.exec.ts" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.289, - "size_similarity": 0.24 - } - ], - "pr_count": 4, - "pr_numbers": [ - 65419, - 66101, - 67644, - 67924 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 65419, - 66101, - 67644, - 67924 - ], - "representative_pr_number": 67644, - "representative_title": "fix: avoid python preflight false positives for $ tokens in string literals", - "representative_url": "https://github.com/openclaw/openclaw/pull/67644", - "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/bash-tools.exec.ts", - "src/agents/bash-tools.exec.script-preflight.test.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/agents/bash-tools.exec.ts`, `src/agents/bash-tools.exec.script-preflight.test.ts`; representative PR #67644.", - "title": "Scope: fix: avoid python preflight false positives for $ tokens in string literals" - }, - { - "authors": [ - "zeng269" - ], - "average_similarity": 0.518, - "cluster_id": "pr-scope-67331-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-16T18:13:38Z", - "outside_window_prs": [], - "pairwise": [ + "shared_filenames": [], + "similarity": 0.383, + "size_similarity": 0.635 + }, { - "breadth_similarity": 0.448, - "concentration_similarity": 0.886, - "content_similarity": 0.752, - "left_pr_number": 67332, - "right_pr_number": 67333, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.14, + "left_pr_number": 65123, + "right_pr_number": 67665, "shared_directories": [ - "src/agents/sandbox", - "src/agents/tools", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/apply-patch.test.ts", - "src/agents/apply-patch.ts", - "src/agents/fs-permission-denied.test.ts", - "src/agents/fs-permission-denied.ts", - "src/agents/openclaw-tools.owner-authorization.test.ts", - "src/agents/openclaw-tools.ts", - "src/agents/pi-tools.read.ts", - "src/agents/pi-tools.workspace-paths.test.ts", - "src/agents/sandbox/fs-bridge-path-safety.ts", - "src/agents/sandbox/fs-bridge.ts" + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.702, - "size_similarity": 0.581 + "shared_filenames": [], + "similarity": 0.375, + "size_similarity": 0.85 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.764, - "content_similarity": 0.652, - "left_pr_number": 67331, - "right_pr_number": 67332, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.138, + "left_pr_number": 65123, + "right_pr_number": 68922, "shared_directories": [ - "src/agents/sandbox", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/apply-patch.test.ts", - "src/agents/apply-patch.ts", - "src/agents/fs-permission-denied.test.ts", - "src/agents/fs-permission-denied.ts", - "src/agents/pi-tools.read.ts", - "src/agents/pi-tools.workspace-paths.test.ts", - "src/agents/sandbox/fs-bridge-path-safety.ts", - "src/agents/sandbox/fs-bridge.ts", - "src/agents/sandbox/remote-fs-bridge.ts" + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.615, - "size_similarity": 0.415 + "shared_filenames": [], + "similarity": 0.371, + "size_similarity": 0.829 }, { - "breadth_similarity": 0.764, - "concentration_similarity": 0.829, - "content_similarity": 0.624, - "left_pr_number": 67333, - "right_pr_number": 67345, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.203, + "left_pr_number": 64768, + "right_pr_number": 67665, "shared_directories": [ - "src/agents/sandbox", - "src/agents/tools", - "src/agents", - "src/commands", - "src/flows", - "test/fixtures", - "scripts", - "src", - "test" - ], - "shared_filenames": [ - "package.json", - "scripts/check-claw-code-parity-harness.mjs", - "src/agents/apply-patch.test.ts", - "src/agents/apply-patch.ts", - "src/agents/bash-tools.exec.ts", - "src/agents/bash-validation.test.ts", - "src/agents/bash-validation.ts", - "src/agents/fs-permission-denied.test.ts", - "src/agents/fs-permission-denied.ts", - "src/agents/openclaw-tools.owner-authorization.test.ts" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.609, - "size_similarity": 0.364 + "shared_filenames": [], + "similarity": 0.367, + "size_similarity": 0.606 }, { - "breadth_similarity": 0.326, - "concentration_similarity": 0.944, - "content_similarity": 0.486, - "left_pr_number": 67332, - "right_pr_number": 67345, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.201, + "left_pr_number": 64768, + "right_pr_number": 68922, "shared_directories": [ - "src/agents/sandbox", - "src/agents/tools", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/apply-patch.test.ts", - "src/agents/apply-patch.ts", - "src/agents/fs-permission-denied.test.ts", - "src/agents/fs-permission-denied.ts", - "src/agents/openclaw-tools.owner-authorization.test.ts", - "src/agents/openclaw-tools.ts", - "src/agents/pi-tools.read.ts", - "src/agents/pi-tools.workspace-paths.test.ts", - "src/agents/sandbox/fs-bridge-path-safety.ts", - "src/agents/sandbox/fs-bridge.ts" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.452, - "size_similarity": 0.212 + "shared_filenames": [], + "similarity": 0.367, + "size_similarity": 0.621 }, { - "breadth_similarity": 0.252, - "concentration_similarity": 0.65, - "content_similarity": 0.497, - "left_pr_number": 67331, - "right_pr_number": 67333, + "breadth_similarity": 0.583, + "concentration_similarity": 0.984, + "content_similarity": 0.2, + "left_pr_number": 65421, + "right_pr_number": 67867, "shared_directories": [ - "src/agents/sandbox", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/apply-patch.test.ts", - "src/agents/apply-patch.ts", - "src/agents/fs-permission-denied.test.ts", - "src/agents/fs-permission-denied.ts", - "src/agents/pi-tools.read.ts", - "src/agents/pi-tools.workspace-paths.test.ts", - "src/agents/sandbox/fs-bridge-path-safety.ts", - "src/agents/sandbox/fs-bridge.ts", - "src/agents/sandbox/remote-fs-bridge.ts" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.442, - "size_similarity": 0.241 + "shared_filenames": [], + "similarity": 0.366, + "size_similarity": 0.794 }, { - "breadth_similarity": 0.188, - "concentration_similarity": 0.82, - "content_similarity": 0.305, - "left_pr_number": 67331, - "right_pr_number": 67345, + "breadth_similarity": 0.75, + "concentration_similarity": 0.984, + "content_similarity": 0.198, + "left_pr_number": 65421, + "right_pr_number": 68922, "shared_directories": [ - "src/agents/sandbox", - "src/agents", - "src" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "shared_filenames": [ - "src/agents/apply-patch.test.ts", - "src/agents/apply-patch.ts", - "src/agents/fs-permission-denied.test.ts", - "src/agents/fs-permission-denied.ts", - "src/agents/pi-tools.read.ts", - "src/agents/pi-tools.workspace-paths.test.ts", - "src/agents/sandbox/fs-bridge-path-safety.ts", - "src/agents/sandbox/fs-bridge.ts", - "src/agents/sandbox/remote-fs-bridge.ts" + "shared_filenames": [], + "similarity": 0.36, + "size_similarity": 0.651 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.984, + "content_similarity": 0.2, + "left_pr_number": 65421, + "right_pr_number": 67665, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.286, - "size_similarity": 0.088 - } - ], - "pr_count": 4, - "pr_numbers": [ - 67331, - 67332, - 67333, - 67345 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 67331, - 67332, - 67333, - 67345 - ], - "representative_pr_number": 67332, - "representative_title": "agents: wire task/team tools with owner-only authorization", - "representative_url": "https://github.com/openclaw/openclaw/pull/67332", - "shared_directories": [ - "src/agents/sandbox", - "src/agents", - "src", - "src/agents/tools", - "test/fixtures", - "src/flows", - "src/commands", - "test" - ], - "shared_filenames": [ - "src/agents/fs-permission-denied.test.ts", - "src/agents/fs-permission-denied.ts", - "src/agents/pi-tools.workspace-paths.test.ts", - "src/agents/sandbox/fs-bridge-path-safety.ts", - "src/agents/apply-patch.test.ts", - "src/agents/apply-patch.ts", - "src/agents/sandbox/fs-bridge.ts", - "src/agents/sandbox/remote-fs-bridge.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/agents/fs-permission-denied.test.ts`, `src/agents/fs-permission-denied.ts`, `src/agents/pi-tools.workspace-paths.test.ts`; representative PR #67332.", - "title": "Scope: agents: wire task/team tools with owner-only authorization" - }, - { - "authors": [ - "Kailigithub", - "MoerAI", - "armorbreak001", - "gaineyllc" - ], - "average_similarity": 0.493, - "cluster_id": "pr-scope-66482-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T01:05:18Z", - "outside_window_prs": [], - "pairwise": [ + "shared_filenames": [], + "similarity": 0.359, + "size_similarity": 0.635 + }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.834, - "left_pr_number": 66482, - "right_pr_number": 68749, + "content_similarity": 0.14, + "left_pr_number": 53782, + "right_pr_number": 64446, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/openai-completions-compat.ts" + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.75, - "size_similarity": 0.111 + "shared_filenames": [], + "similarity": 0.347, + "size_similarity": 0.663 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.539, - "left_pr_number": 68711, - "right_pr_number": 68749, + "content_similarity": 0.144, + "left_pr_number": 53782, + "right_pr_number": 64768, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/openai-completions-compat.ts" + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.506, - "size_similarity": 0.021 + "shared_filenames": [], + "similarity": 0.339, + "size_similarity": 0.695 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.8, - "content_similarity": 0.547, - "left_pr_number": 68711, - "right_pr_number": 68742, + "breadth_similarity": 0.833, + "concentration_similarity": 0.7, + "content_similarity": 0.189, + "left_pr_number": 62689, + "right_pr_number": 65421, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/openai-completions-compat.test.ts", - "src/agents/openai-completions-compat.ts" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.505, - "size_similarity": 0.213 + "shared_filenames": [], + "similarity": 0.334, + "size_similarity": 0.553 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.48, - "left_pr_number": 66482, - "right_pr_number": 68711, + "content_similarity": 0.14, + "left_pr_number": 65123, + "right_pr_number": 67867, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/openai-completions-compat.ts" + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.49, - "size_similarity": 0.191 + "shared_filenames": [], + "similarity": 0.333, + "size_similarity": 0.68 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.8, - "content_similarity": 0.251, - "left_pr_number": 66482, - "right_pr_number": 68742, + "breadth_similarity": 0.75, + "concentration_similarity": 0.684, + "content_similarity": 0.192, + "left_pr_number": 62689, + "right_pr_number": 64768, "shared_directories": [ - "src/agents", - "src" + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "shared_filenames": [ - "src/agents/openai-completions-compat.ts" + "shared_filenames": [], + "similarity": 0.331, + "size_similarity": 0.579 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.132, + "left_pr_number": 64446, + "right_pr_number": 65123, + "shared_directories": [ + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.388, - "size_similarity": 0.9 + "shared_filenames": [], + "similarity": 0.324, + "size_similarity": 0.54 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.8, - "content_similarity": 0.328, - "left_pr_number": 68742, - "right_pr_number": 68749, + "breadth_similarity": 0.75, + "concentration_similarity": 0.984, + "content_similarity": 0.142, + "left_pr_number": 53782, + "right_pr_number": 65421, "shared_directories": [ - "src/agents", - "src" + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "shared_filenames": [ - "src/agents/openai-completions-compat.ts" + "shared_filenames": [], + "similarity": 0.323, + "size_similarity": 0.663 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.148, + "left_pr_number": 53782, + "right_pr_number": 67665, + "shared_directories": [ + "extensions/discord/src", + "extensions/discord", + "extensions" ], - "similarity": 0.322, - "size_similarity": 0.1 + "shared_filenames": [], + "similarity": 0.317, + "size_similarity": 0.421 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.146, + "left_pr_number": 53782, + "right_pr_number": 68922, + "shared_directories": [ + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.317, + "size_similarity": 0.432 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.148, + "left_pr_number": 53782, + "right_pr_number": 67867, + "shared_directories": [ + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.316, + "size_similarity": 0.526 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.684, + "content_similarity": 0.186, + "left_pr_number": 62689, + "right_pr_number": 64446, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.306, + "size_similarity": 0.553 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.137, + "left_pr_number": 64768, + "right_pr_number": 65123, + "shared_directories": [ + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.306, + "size_similarity": 0.515 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.984, + "content_similarity": 0.134, + "left_pr_number": 65123, + "right_pr_number": 65421, + "shared_directories": [ + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.299, + "size_similarity": 0.54 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.684, + "content_similarity": 0.195, + "left_pr_number": 62689, + "right_pr_number": 68922, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.283, + "size_similarity": 0.36 } ], - "pr_count": 4, + "pr_count": 9, "pr_numbers": [ - 66482, - 68711, - 68742, - 68749 + 53782, + 62689, + 64446, + 64768, + 65123, + 65421, + 67665, + 67867, + 68922 ], - "recent_pr_count": 4, + "recent_pr_count": 3, "recent_pr_numbers": [ - 66482, - 68711, - 68742, - 68749 + 67665, + 67867, + 68922 ], - "representative_pr_number": 66482, - "representative_title": "fix(agents): use max_tokens instead of max_completion_tokens for non-OpenAI providers (#65603)", - "representative_url": "https://github.com/openclaw/openclaw/pull/66482", + "representative_pr_number": 67665, + "representative_title": "fix(discord): normalize prefixed conversation ids in resolveChannelIdForBinding", + "representative_url": "https://github.com/openclaw/openclaw/pull/67665", "shared_directories": [ - "src/agents", - "src" + "extensions/discord/src", + "extensions/discord", + "extensions", + "extensions/discord/src/monitor" ], "shared_filenames": [ - "src/agents/openai-completions-compat.ts", - "src/agents/openai-completions-compat.test.ts" + "extensions/discord/src/monitor/thread-bindings.discord-api.ts", + "extensions/discord/src/channel.test.ts", + "extensions/discord/src/monitor/thread-bindings.discord-api.test.ts", + "extensions/discord/src/monitor/thread-bindings.manager.ts", + "extensions/discord/src/channel.ts" ], - "summary": "4 open PRs share weighted file overlap around `src/agents/openai-completions-compat.ts`, `src/agents/openai-completions-compat.test.ts`; representative PR #66482.", - "title": "Scope: fix(agents): use max_tokens instead of max_completion_tokens for non-OpenAI providers (#65603)" + "summary": "9 open PRs share weighted file overlap around `extensions/discord/src/monitor/thread-bindings.discord-api.ts`, `extensions/discord/src/channel.test.ts`, `extensions/discord/src/monitor/thread-bindings.discord-api.test.ts`; representative PR #67665.", + "title": "Scope: fix(discord): normalize prefixed conversation ids in resolveChannelIdForBinding" }, { "authors": [ - "aboimpinto", - "anyech", - "jasonmakr", - "miyago9267" + "imadal1n" ], - "average_similarity": 0.474, - "cluster_id": "pr-scope-67662-4", + "average_similarity": 0.621, + "cluster_id": "pr-scope-65017-8", "kind": "pr_scope", - "last_activity_at": "2026-04-19T05:53:26Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-20T17:00:23Z", + "outside_window_prs": [ + { + "additions": 105, + "author": "imadal1n", + "changed_files": 3, + "created_at": "2026-04-11T21:51:49Z", + "deletions": 11, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65017/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65017", + "merged": false, + "number": 65017, + "state": "open", + "title": "fix(memory-core): refresh qmd session exports on transcript updates", + "updated_at": "2026-04-11T22:25:55Z" + }, + { + "additions": 62, + "author": "ccage-simp", + "changed_files": 2, + "created_at": "2026-04-12T17:18:49Z", + "deletions": 27, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65481/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65481", + "merged": false, + "number": 65481, + "state": "open", + "title": "fix(memory-qmd): prefer --mask for collection patterns", + "updated_at": "2026-04-12T19:35:38Z" + }, + { + "additions": 116, + "author": "jochenfrey", + "changed_files": 1, + "created_at": "2026-04-12T20:42:30Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65547/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65547", + "merged": false, + "number": 65547, + "state": "open", + "title": "test(memory-qmd): verify extraCollections pattern reaches qmd collection add CLI args", + "updated_at": "2026-04-12T20:45:59Z" + }, + { + "additions": 75, + "author": "shawnduggan", + "changed_files": 2, + "created_at": "2026-04-13T11:36:13Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65914/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65914", + "merged": false, + "number": 65914, + "state": "open", + "title": "fix(memory): respect qmd status timeout and skip checkpoint exports", + "updated_at": "2026-04-13T11:40:55Z" + }, + { + "additions": 36, + "author": "seank-com", + "changed_files": 4, + "created_at": "2026-04-14T01:38:34Z", + "deletions": 34, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66259/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66259", + "merged": false, + "number": 66259, + "state": "open", + "title": "fix(memory): prefer --mask for qmd collection add compatibility", + "updated_at": "2026-04-19T17:15:36Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.339, - "concentration_similarity": 0.792, - "content_similarity": 0.691, - "left_pr_number": 67662, - "right_pr_number": 68420, + "breadth_similarity": 1.0, + "concentration_similarity": 0.994, + "content_similarity": 0.793, + "left_pr_number": 65017, + "right_pr_number": 67404, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "src/plugin-sdk", + "extensions", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", - "src/agents/pi-embedded-runner/run.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts", + "src/plugin-sdk/agent-harness.ts" ], - "similarity": 0.617, - "size_similarity": 0.396 + "similarity": 0.833, + "size_similarity": 0.853 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.599, - "content_similarity": 0.448, - "left_pr_number": 67662, - "right_pr_number": 68453, + "concentration_similarity": 1.0, + "content_similarity": 0.8, + "left_pr_number": 65547, + "right_pr_number": 67805, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", - "src/agents/pi-embedded-runner/run.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts" ], - "similarity": 0.508, - "size_similarity": 0.599 + "similarity": 0.794, + "size_similarity": 0.725 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.878, - "content_similarity": 0.47, - "left_pr_number": 68453, - "right_pr_number": 68512, + "breadth_similarity": 0.583, + "concentration_similarity": 0.957, + "content_similarity": 0.666, + "left_pr_number": 65017, + "right_pr_number": 65481, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/incomplete-turn.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" ], - "similarity": 0.478, - "size_similarity": 0.364 + "similarity": 0.687, + "size_similarity": 0.767 }, { - "breadth_similarity": 0.464, - "concentration_similarity": 0.807, - "content_similarity": 0.4, - "left_pr_number": 68420, - "right_pr_number": 68453, + "breadth_similarity": 0.583, + "concentration_similarity": 0.963, + "content_similarity": 0.638, + "left_pr_number": 67404, + "right_pr_number": 67805, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", - "src/agents/pi-embedded-runner/run.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" ], - "similarity": 0.466, - "size_similarity": 0.661 + "similarity": 0.681, + "size_similarity": 0.85 }, { - "breadth_similarity": 0.929, - "concentration_similarity": 0.685, - "content_similarity": 0.318, - "left_pr_number": 68420, - "right_pr_number": 68512, + "breadth_similarity": 0.583, + "concentration_similarity": 0.957, + "content_similarity": 0.664, + "left_pr_number": 65017, + "right_pr_number": 67805, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", - "src/agents/pi-embedded-runner/run.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" ], - "similarity": 0.432, - "size_similarity": 0.551 + "similarity": 0.679, + "size_similarity": 0.725 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.476, - "content_similarity": 0.354, - "left_pr_number": 67662, - "right_pr_number": 68512, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.566, + "left_pr_number": 65481, + "right_pr_number": 65914, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", - "src/agents/pi-embedded-runner/run.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" ], - "similarity": 0.342, - "size_similarity": 0.218 - } - ], - "pr_count": 4, - "pr_numbers": [ - 67662, - 68420, - 68453, - 68512 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 67662, - 68420, - 68453, - 68512 - ], - "representative_pr_number": 68420, - "representative_title": "Agents/fallback: rotate to fallback model on incomplete-turn exits", - "representative_url": "https://github.com/openclaw/openclaw/pull/68420", - "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src", - "src/agents/pi-embedded-runner/run" - ], - "shared_filenames": [ - "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/incomplete-turn.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/run.incomplete-turn.test.ts`, `src/agents/pi-embedded-runner/run.ts`, `src/agents/pi-embedded-runner/run/incomplete-turn.ts`; representative PR #68420.", - "title": "Scope: Agents/fallback: rotate to fallback model on incomplete-turn exits" - }, - { - "authors": [ - "1bcMax", - "kevinheneveld", - "moorsecopers99" - ], - "average_similarity": 0.441, - "cluster_id": "pr-scope-65370-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T01:42:30Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.676, + "size_similarity": 0.865 + }, { - "breadth_similarity": 0.633, - "concentration_similarity": 0.659, - "content_similarity": 0.686, - "left_pr_number": 67208, - "right_pr_number": 67533, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.616, + "left_pr_number": 65481, + "right_pr_number": 66259, "shared_directories": [ - "ui/src/ui/chat", - "src/gateway/server-methods", - "ui/src/ui", - "src/gateway", - "ui/src", - "src", - "ui" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/gateway/server-methods/chat.ts", - "src/gateway/server-methods/server-methods.test.ts", - "ui/src/ui/chat/grouped-render.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" ], - "similarity": 0.664, - "size_similarity": 0.585 + "similarity": 0.674, + "size_similarity": 0.787 }, { - "breadth_similarity": 0.633, - "concentration_similarity": 0.984, - "content_similarity": 0.533, - "left_pr_number": 67533, - "right_pr_number": 68262, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.625, + "left_pr_number": 65547, + "right_pr_number": 65914, "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/gateway/server-methods/chat.ts", - "src/gateway/server-methods/server-methods.test.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts" ], - "similarity": 0.517, - "size_similarity": 0.207 + "similarity": 0.662, + "size_similarity": 0.664 }, { "breadth_similarity": 1.0, - "concentration_similarity": 0.644, - "content_similarity": 0.366, - "left_pr_number": 67208, - "right_pr_number": 68262, + "concentration_similarity": 1.0, + "content_similarity": 0.624, + "left_pr_number": 65914, + "right_pr_number": 67805, "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/gateway/server-methods/chat.ts", - "src/gateway/server-methods/server-methods.test.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" ], - "similarity": 0.441, - "size_similarity": 0.354 + "similarity": 0.659, + "size_similarity": 0.481 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 0.662, - "content_similarity": 0.369, - "left_pr_number": 65370, - "right_pr_number": 67533, + "breadth_similarity": 0.583, + "concentration_similarity": 0.963, + "content_similarity": 0.646, + "left_pr_number": 65481, + "right_pr_number": 67404, "shared_directories": [ - "ui/src/ui/chat", - "src/gateway/server-methods", - "ui/src/ui", - "src/gateway", - "ui/src", - "src", - "ui" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/gateway/server-methods/chat.ts", - "ui/src/ui/chat/grouped-render.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" ], - "similarity": 0.43, - "size_similarity": 0.369 + "similarity": 0.657, + "size_similarity": 0.654 }, { - "breadth_similarity": 0.8, - "concentration_similarity": 0.997, - "content_similarity": 0.253, - "left_pr_number": 65370, - "right_pr_number": 67208, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.583, + "left_pr_number": 65481, + "right_pr_number": 65547, "shared_directories": [ - "ui/src/ui/chat", - "src/gateway/server-methods", - "ui/src/ui", - "src/gateway", - "ui/src", - "src", - "ui" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/gateway/server-methods/chat.ts", - "ui/src/ui/chat/grouped-render.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts" ], - "similarity": 0.339, - "size_similarity": 0.216 + "similarity": 0.648, + "size_similarity": 0.767 }, { - "breadth_similarity": 0.8, - "concentration_similarity": 0.647, - "content_similarity": 0.19, - "left_pr_number": 65370, - "right_pr_number": 68262, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.546, + "left_pr_number": 65914, + "right_pr_number": 66259, "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/gateway/server-methods/chat.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" ], - "similarity": 0.257, - "size_similarity": 0.076 - } - ], - "pr_count": 4, - "pr_numbers": [ - 65370, - 67208, - 67533, - 68262 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 65370, - 67208, - 67533, - 68262 - ], - "representative_pr_number": 67533, - "representative_title": "fix(ui): render uploaded images in Control UI chat after history reload", - "representative_url": "https://github.com/openclaw/openclaw/pull/67533", - "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", - "src", - "ui/src/ui/chat", - "ui/src/ui", - "ui/src", - "ui" - ], - "shared_filenames": [ - "src/gateway/server-methods/chat.ts", - "src/gateway/server-methods/server-methods.test.ts", - "ui/src/ui/chat/grouped-render.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/gateway/server-methods/chat.ts`, `src/gateway/server-methods/server-methods.test.ts`, `ui/src/ui/chat/grouped-render.ts`; representative PR #67533.", - "title": "Scope: fix(ui): render uploaded images in Control UI chat after history reload" - }, - { - "authors": [ - "HaseebDev", - "kagura-agent", - "tianhaocui", - "vvitovec" - ], - "average_similarity": 0.435, - "cluster_id": "pr-scope-68792-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T07:11:44Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.643, + "size_similarity": 0.909 + }, { - "breadth_similarity": 0.833, - "concentration_similarity": 0.898, - "content_similarity": 0.679, - "left_pr_number": 68817, - "right_pr_number": 68819, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.578, + "left_pr_number": 65481, + "right_pr_number": 67805, "shared_directories": [ - "src/process/supervisor/adapters", - "src/process/supervisor", - "src/process", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/process/supervisor/adapters/child.ts", - "src/process/windows-command.test.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" ], - "similarity": 0.61, - "size_similarity": 0.044 + "similarity": 0.638, + "size_similarity": 0.556 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.625, "concentration_similarity": 1.0, - "content_similarity": 0.546, - "left_pr_number": 68792, - "right_pr_number": 68849, + "content_similarity": 0.565, + "left_pr_number": 65547, + "right_pr_number": 66259, "shared_directories": [ - "src/process/supervisor/adapters", - "src/process/supervisor", - "src/process", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/process/supervisor/adapters/child.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts" ], - "similarity": 0.526, - "size_similarity": 0.125 + "similarity": 0.598, + "size_similarity": 0.603 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.857, - "content_similarity": 0.499, - "left_pr_number": 68817, - "right_pr_number": 68849, + "breadth_similarity": 0.583, + "concentration_similarity": 0.957, + "content_similarity": 0.556, + "left_pr_number": 65017, + "right_pr_number": 65914, "shared_directories": [ - "src/process/supervisor/adapters", - "src/process/supervisor", - "src/process", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/process/supervisor/adapters/child.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" ], - "similarity": 0.463, - "size_similarity": 0.143 + "similarity": 0.595, + "size_similarity": 0.664 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.857, - "content_similarity": 0.3, - "left_pr_number": 68792, - "right_pr_number": 68817, + "breadth_similarity": 0.417, + "concentration_similarity": 0.957, + "content_similarity": 0.507, + "left_pr_number": 65017, + "right_pr_number": 65547, "shared_directories": [ - "src/process/supervisor/adapters", - "src/process/supervisor", - "src/process", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/process/supervisor/adapters/child.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts" ], - "similarity": 0.459, - "size_similarity": 0.875 + "similarity": 0.594, + "size_similarity": 1.0 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.96, - "content_similarity": 0.29, - "left_pr_number": 68819, - "right_pr_number": 68849, + "breadth_similarity": 0.583, + "concentration_similarity": 0.963, + "content_similarity": 0.566, + "left_pr_number": 65914, + "right_pr_number": 67404, "shared_directories": [ - "src/process/supervisor/adapters", - "src/process/supervisor", - "src/process", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/process/supervisor/adapters/child.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" ], - "similarity": 0.294, - "size_similarity": 0.006 + "similarity": 0.588, + "size_similarity": 0.566 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.96, - "content_similarity": 0.204, - "left_pr_number": 68792, - "right_pr_number": 68819, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.499, + "left_pr_number": 65914, + "right_pr_number": 68590, "shared_directories": [ - "src/process/supervisor/adapters", - "src/process/supervisor", - "src/process", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/process/supervisor/adapters/child.ts" + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" ], - "similarity": 0.257, - "size_similarity": 0.05 - } - ], - "pr_count": 4, - "pr_numbers": [ - 68792, - 68817, - 68819, - 68849 - ], - "recent_pr_count": 4, - "recent_pr_numbers": [ - 68792, - 68817, - 68819, - 68849 - ], - "representative_pr_number": 68817, - "representative_title": "fix: add claude, codex, hermes to Windows .cmd shim allowlist", - "representative_url": "https://github.com/openclaw/openclaw/pull/68817", - "shared_directories": [ - "src/process/supervisor/adapters", - "src/process/supervisor", - "src/process", - "src" - ], - "shared_filenames": [ - "src/process/supervisor/adapters/child.ts", - "src/process/windows-command.test.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/process/supervisor/adapters/child.ts`, `src/process/windows-command.test.ts`; representative PR #68817.", - "title": "Scope: fix: add claude, codex, hermes to Windows .cmd shim allowlist" - }, - { - "authors": [ - "altierac", - "imadal1n", - "neo1027144-creator", - "sqsge" - ], - "average_similarity": 0.368, - "cluster_id": "pr-scope-65992-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T07:17:16Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.585, + "size_similarity": 0.571 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.208, - "left_pr_number": 65992, - "right_pr_number": 67403, + "breadth_similarity": 0.417, + "concentration_similarity": 0.963, + "content_similarity": 0.52, + "left_pr_number": 65547, + "right_pr_number": 67404, "shared_directories": [ - "extensions/memory-wiki/src", - "extensions/memory-wiki", + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.41, - "size_similarity": 0.765 + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts" + ], + "similarity": 0.582, + "size_similarity": 0.853 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.215, - "left_pr_number": 67403, - "right_pr_number": 67711, + "content_similarity": 0.557, + "left_pr_number": 66259, + "right_pr_number": 67805, "shared_directories": [ - "extensions/memory-wiki/src", - "extensions/memory-wiki", + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.383, - "size_similarity": 0.551 + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" + ], + "similarity": 0.58, + "size_similarity": 0.438 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.221, - "left_pr_number": 67711, - "right_pr_number": 68852, + "content_similarity": 0.55, + "left_pr_number": 67805, + "right_pr_number": 68590, "shared_directories": [ - "extensions/memory-wiki/src", - "extensions/memory-wiki", + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.378, - "size_similarity": 0.492 + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" + ], + "similarity": 0.576, + "size_similarity": 0.275 + }, + { + "breadth_similarity": 0.625, + "concentration_similarity": 0.957, + "content_similarity": 0.503, + "left_pr_number": 65017, + "right_pr_number": 66259, + "shared_directories": [ + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" + ], + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" + ], + "similarity": 0.553, + "size_similarity": 0.603 + }, + { + "breadth_similarity": 0.625, + "concentration_similarity": 0.963, + "content_similarity": 0.513, + "left_pr_number": 66259, + "right_pr_number": 67404, + "shared_directories": [ + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" + ], + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" + ], + "similarity": 0.547, + "size_similarity": 0.515 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.217, - "left_pr_number": 65992, - "right_pr_number": 67711, + "content_similarity": 0.46, + "left_pr_number": 65481, + "right_pr_number": 68590, "shared_directories": [ - "extensions/memory-wiki/src", - "extensions/memory-wiki", + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.365, - "size_similarity": 0.421 + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" + ], + "similarity": 0.546, + "size_similarity": 0.494 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.583, + "concentration_similarity": 0.963, + "content_similarity": 0.558, + "left_pr_number": 67404, + "right_pr_number": 68590, + "shared_directories": [ + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" + ], + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" + ], + "similarity": 0.545, + "size_similarity": 0.324 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.957, + "content_similarity": 0.53, + "left_pr_number": 65017, + "right_pr_number": 68590, + "shared_directories": [ + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" + ], + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" + ], + "similarity": 0.534, + "size_similarity": 0.379 + }, + { + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.212, - "left_pr_number": 67403, - "right_pr_number": 68852, + "content_similarity": 0.441, + "left_pr_number": 66259, + "right_pr_number": 68590, "shared_directories": [ - "extensions/memory-wiki/src", - "extensions/memory-wiki", + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.339, - "size_similarity": 0.271 + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" + ], + "similarity": 0.528, + "size_similarity": 0.629 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.214, - "left_pr_number": 65992, - "right_pr_number": 68852, + "content_similarity": 0.445, + "left_pr_number": 65547, + "right_pr_number": 68590, "shared_directories": [ - "extensions/memory-wiki/src", - "extensions/memory-wiki", + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.331, - "size_similarity": 0.207 + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts" + ], + "similarity": 0.494, + "size_similarity": 0.379 } ], - "pr_count": 4, + "pr_count": 8, "pr_numbers": [ - 65992, - 67403, - 67711, - 68852 + 65017, + 65481, + 65547, + 65914, + 66259, + 67404, + 67805, + 68590 ], - "recent_pr_count": 4, + "recent_pr_count": 3, "recent_pr_numbers": [ - 65992, - 67403, - 67711, - 68852 + 67404, + 67805, + 68590 ], - "representative_pr_number": 67403, - "representative_title": "fix(memory-wiki): support token-overlap search for multi-term queries", - "representative_url": "https://github.com/openclaw/openclaw/pull/67403", + "representative_pr_number": 67805, + "representative_title": "fix(memory-core): fall back when mcporter query returns no results", + "representative_url": "https://github.com/openclaw/openclaw/pull/67805", "shared_directories": [ - "extensions/memory-wiki/src", - "extensions/memory-wiki", - "extensions" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", + "src/plugin-sdk", + "src" ], - "shared_filenames": [], - "summary": "4 open PRs cluster in `extensions/memory-wiki/src`, `extensions/memory-wiki`, `extensions` with similar change breadth; representative PR #67403.", - "title": "Scope: fix(memory-wiki): support token-overlap search for multi-term queries" + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts", + "src/plugin-sdk/agent-harness.ts" + ], + "summary": "8 open PRs share weighted file overlap around `extensions/memory-core/src/memory/qmd-manager.test.ts`, `extensions/memory-core/src/memory/qmd-manager.ts`, `src/plugin-sdk/agent-harness.ts`; representative PR #67805.", + "title": "Scope: fix(memory-core): fall back when mcporter query returns no results" }, { "authors": [ - "MoerAI", - "huiwen01", - "mvanhorn" + "Phymath", + "ayeshakhalid192007-dev", + "nakamotoliu" ], - "average_similarity": 0.514, - "cluster_id": "pr-scope-36032-10", + "average_similarity": 0.371, + "cluster_id": "pr-scope-64470-7", "kind": "pr_scope", - "last_activity_at": "2026-04-18T17:19:37Z", + "last_activity_at": "2026-04-21T14:56:06Z", "outside_window_prs": [ { - "additions": 133, - "author": "godisawake", - "changed_files": 2, - "created_at": "2026-03-05T11:43:27Z", - "deletions": 63, + "additions": 11, + "author": "ClawdiaHedgehog", + "changed_files": 1, + "created_at": "2026-04-10T19:11:45Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36032/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36032", + "files_url": "https://github.com/openclaw/openclaw/pull/64470/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64470", "merged": false, - "number": 36032, + "number": 64470, "state": "open", - "title": "fix(feishu): deliver block-only replies via onIdle fallback", - "updated_at": "2026-04-17T04:31:57Z" + "title": "fix(browser): set DISPLAY env var for WSL2 Chrome launches", + "updated_at": "2026-04-11T02:33:01Z" }, { - "additions": 12, - "author": "Mickey0811", + "additions": 122, + "author": "navarrotech", "changed_files": 2, - "created_at": "2026-03-06T00:29:10Z", - "deletions": 6, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36909/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36909", - "merged": false, - "number": 36909, - "state": "open", - "title": "feishu: prevent duplicate streaming cards for multi-payload final replies", - "updated_at": "2026-04-18T04:24:04Z" - }, - { - "additions": 558, - "author": "JinYang88", - "changed_files": 4, - "created_at": "2026-03-06T09:15:29Z", - "deletions": 121, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37545/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37545", - "merged": false, - "number": 37545, - "state": "open", - "title": "feat(feishu): add thinking panel with collapsible reasoning and tool tracking", - "updated_at": "2026-04-19T04:33:50Z" - }, - { - "additions": 21, - "author": "rottenpen", - "changed_files": 3, - "created_at": "2026-03-24T16:11:29Z", + "created_at": "2026-04-11T01:26:28Z", "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53787/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53787", - "merged": false, - "number": 53787, - "state": "open", - "title": "fix(feishu): guard against undefined receiveIdType in resolveFeishuSendTarget", - "updated_at": "2026-03-24T20:15:29Z" - }, - { - "additions": 9, - "author": "Vicky-v7", - "changed_files": 1, - "created_at": "2026-03-26T04:47:46Z", - "deletions": 1, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54898/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54898", + "files_url": "https://github.com/openclaw/openclaw/pull/64573/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64573", "merged": false, - "number": 54898, + "number": 64573, "state": "open", - "title": "fix(feishu): strip leaked thinking content from streaming output", - "updated_at": "2026-04-17T17:14:10Z" + "title": "fix(browser): inject DISPLAY=:0 fallback when spawning Chrome on Linux", + "updated_at": "2026-04-12T01:10:22Z" }, { - "additions": 111, - "author": "TaoXieSZ", - "changed_files": 7, - "created_at": "2026-04-10T02:21:25Z", - "deletions": 204, + "additions": 50, + "author": "TOMUIV", + "changed_files": 2, + "created_at": "2026-04-12T11:48:50Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64027/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64027", + "files_url": "https://github.com/openclaw/openclaw/pull/65324/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65324", "merged": false, - "number": 64027, + "number": 65324, "state": "open", - "title": "feat(feishu): support in-place card content update on option click", - "updated_at": "2026-04-11T14:02:20Z" + "title": "fix(browser): set DISPLAY env for Chrome in WSL2", + "updated_at": "2026-04-12T11:51:48Z" }, { - "additions": 75, - "author": "TaoXieSZ", + "additions": 125, + "author": "coygeek", "changed_files": 3, - "created_at": "2026-04-11T12:55:33Z", - "deletions": 157, + "created_at": "2026-04-13T01:32:57Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64805/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64805", + "files_url": "https://github.com/openclaw/openclaw/pull/65639/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65639", "merged": false, - "number": 64805, + "number": 65639, "state": "open", - "title": "feat(feishu): add token and context usage to streaming card footer", - "updated_at": "2026-04-11T14:08:30Z" + "title": "fix: scope browser auth to active gateway mode", + "updated_at": "2026-04-13T03:42:08Z" } ], "pairwise": [ { - "breadth_similarity": 0.714, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.873, - "left_pr_number": 64027, - "right_pr_number": 64805, + "content_similarity": 0.556, + "left_pr_number": 64470, + "right_pr_number": 64573, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], "shared_filenames": [ - "extensions/feishu/src/bot.ts", - "extensions/feishu/src/monitor.comment.test.ts", - "extensions/feishu/src/reply-dispatcher.ts" + "extensions/browser/src/browser/chrome.ts" ], - "similarity": 0.843, - "size_similarity": 0.737 + "similarity": 0.527, + "size_similarity": 0.087 }, { "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.795, - "left_pr_number": 36909, - "right_pr_number": 67783, + "content_similarity": 0.458, + "left_pr_number": 64470, + "right_pr_number": 65324, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.test.ts", - "extensions/feishu/src/reply-dispatcher.ts" + "extensions/browser/src/browser/chrome.ts" ], - "similarity": 0.741, - "size_similarity": 0.4 + "similarity": 0.479, + "size_similarity": 0.22 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.871, - "left_pr_number": 36032, - "right_pr_number": 68491, + "content_similarity": 0.252, + "left_pr_number": 64573, + "right_pr_number": 65639, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.739, - "size_similarity": 0.031 + "shared_filenames": [], + "similarity": 0.458, + "size_similarity": 0.992 }, { - "breadth_similarity": 0.833, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.652, - "left_pr_number": 36032, - "right_pr_number": 68107, + "content_similarity": 0.338, + "left_pr_number": 64573, + "right_pr_number": 65324, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.test.ts", - "extensions/feishu/src/reply-dispatcher.ts" + "extensions/browser/src/browser/chrome.ts" ], - "similarity": 0.708, - "size_similarity": 0.791 + "similarity": 0.446, + "size_similarity": 0.394 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.991, - "content_similarity": 0.821, - "left_pr_number": 36032, - "right_pr_number": 37545, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.258, + "left_pr_number": 64573, + "right_pr_number": 67748, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.705, - "size_similarity": 0.289 + "shared_filenames": [], + "similarity": 0.438, + "size_similarity": 0.718 }, { "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.605, - "left_pr_number": 36032, - "right_pr_number": 64805, + "content_similarity": 0.241, + "left_pr_number": 67748, + "right_pr_number": 69733, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.684, - "size_similarity": 0.845 + "shared_filenames": [], + "similarity": 0.438, + "size_similarity": 0.903 }, { - "breadth_similarity": 0.875, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.643, - "left_pr_number": 67783, - "right_pr_number": 68107, + "content_similarity": 0.244, + "left_pr_number": 65639, + "right_pr_number": 67748, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/bot.ts", - "extensions/feishu/src/reply-dispatcher.test.ts", - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.631, - "size_similarity": 0.29 + "shared_filenames": [], + "similarity": 0.411, + "size_similarity": 0.712 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.667, - "left_pr_number": 36032, - "right_pr_number": 36909, + "content_similarity": 0.235, + "left_pr_number": 65639, + "right_pr_number": 69733, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.test.ts", - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.63, - "size_similarity": 0.092 + "shared_filenames": [], + "similarity": 0.411, + "size_similarity": 0.643 }, { "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.66, - "left_pr_number": 36909, - "right_pr_number": 68107, + "content_similarity": 0.249, + "left_pr_number": 64573, + "right_pr_number": 69733, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.test.ts", - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.613, - "size_similarity": 0.116 + "shared_filenames": [], + "similarity": 0.405, + "size_similarity": 0.648 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.511, - "left_pr_number": 54898, - "right_pr_number": 68491, - "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" - ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.598, - "size_similarity": 0.6 - }, - { - "breadth_similarity": 0.25, - "concentration_similarity": 0.991, - "content_similarity": 0.737, - "left_pr_number": 37545, - "right_pr_number": 54898, + "content_similarity": 0.255, + "left_pr_number": 65324, + "right_pr_number": 67748, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.592, - "size_similarity": 0.015 + "shared_filenames": [], + "similarity": 0.371, + "size_similarity": 0.282 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.582, - "left_pr_number": 36909, - "right_pr_number": 68491, + "content_similarity": 0.248, + "left_pr_number": 65324, + "right_pr_number": 65639, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.582, - "size_similarity": 0.333 + "shared_filenames": [], + "similarity": 0.367, + "size_similarity": 0.397 }, { - "breadth_similarity": 0.25, - "concentration_similarity": 0.991, - "content_similarity": 0.716, - "left_pr_number": 37545, - "right_pr_number": 68491, + "breadth_similarity": 0.168, + "concentration_similarity": 0.898, + "content_similarity": 0.259, + "left_pr_number": 69228, + "right_pr_number": 69733, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "extensions/browser/src/browser/chrome.internal.test.ts" ], - "similarity": 0.577, - "size_similarity": 0.009 + "similarity": 0.358, + "size_similarity": 0.772 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.991, - "content_similarity": 0.605, - "left_pr_number": 37545, - "right_pr_number": 64805, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.245, + "left_pr_number": 65324, + "right_pr_number": 69733, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.574, - "size_similarity": 0.342 + "shared_filenames": [], + "similarity": 0.343, + "size_similarity": 0.255 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.458, - "left_pr_number": 64805, - "right_pr_number": 68107, + "breadth_similarity": 0.145, + "concentration_similarity": 0.898, + "content_similarity": 0.269, + "left_pr_number": 64573, + "right_pr_number": 69228, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], "shared_filenames": [ - "extensions/feishu/src/bot.ts", - "extensions/feishu/src/reply-dispatcher.ts" + "extensions/browser/src/browser/chrome.ts" ], - "similarity": 0.571, - "size_similarity": 0.668 + "similarity": 0.323, + "size_similarity": 0.5 }, { - "breadth_similarity": 0.643, - "concentration_similarity": 1.0, - "content_similarity": 0.517, - "left_pr_number": 36032, - "right_pr_number": 64027, + "breadth_similarity": 0.145, + "concentration_similarity": 0.898, + "content_similarity": 0.226, + "left_pr_number": 67748, + "right_pr_number": 69228, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.57, - "size_similarity": 0.622 + "shared_filenames": [], + "similarity": 0.322, + "size_similarity": 0.697 }, { "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.56, - "left_pr_number": 36032, - "right_pr_number": 54898, + "content_similarity": 0.256, + "left_pr_number": 64470, + "right_pr_number": 67748, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.524, - "size_similarity": 0.051 + "shared_filenames": [], + "similarity": 0.313, + "size_similarity": 0.062 }, { "breadth_similarity": 0.667, "concentration_similarity": 1.0, - "content_similarity": 0.532, - "left_pr_number": 53787, - "right_pr_number": 68491, - "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" - ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.523, - "size_similarity": 0.231 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.991, - "content_similarity": 0.554, - "left_pr_number": 37545, - "right_pr_number": 68107, + "content_similarity": 0.249, + "left_pr_number": 64470, + "right_pr_number": 65639, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.521, - "size_similarity": 0.228 + "shared_filenames": [], + "similarity": 0.304, + "size_similarity": 0.087 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.667, "concentration_similarity": 1.0, - "content_similarity": 0.511, - "left_pr_number": 36032, - "right_pr_number": 67783, + "content_similarity": 0.246, + "left_pr_number": 64470, + "right_pr_number": 69733, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.test.ts", - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.517, - "size_similarity": 0.23 + "shared_filenames": [], + "similarity": 0.297, + "size_similarity": 0.056 }, { - "breadth_similarity": 0.411, - "concentration_similarity": 0.991, - "content_similarity": 0.508, - "left_pr_number": 37545, - "right_pr_number": 64027, + "breadth_similarity": 0.168, + "concentration_similarity": 0.898, + "content_similarity": 0.22, + "left_pr_number": 65639, + "right_pr_number": 69228, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" - ], - "similarity": 0.515, - "size_similarity": 0.464 + "shared_filenames": [], + "similarity": 0.29, + "size_similarity": 0.496 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 1.0, - "content_similarity": 0.554, - "left_pr_number": 64805, - "right_pr_number": 68491, + "breadth_similarity": 0.145, + "concentration_similarity": 0.898, + "content_similarity": 0.237, + "left_pr_number": 65324, + "right_pr_number": 69228, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "extensions/browser/src/browser/chrome.ts" ], - "similarity": 0.509, - "size_similarity": 0.026 + "similarity": 0.255, + "size_similarity": 0.197 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 1.0, - "content_similarity": 0.535, - "left_pr_number": 68107, - "right_pr_number": 68491, + "breadth_similarity": 0.123, + "concentration_similarity": 0.898, + "content_similarity": 0.259, + "left_pr_number": 64470, + "right_pr_number": 69228, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", "extensions" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "extensions/browser/src/browser/chrome.ts" ], - "similarity": 0.497, - "size_similarity": 0.039 - }, - { - "breadth_similarity": 0.833, + "similarity": 0.245, + "size_similarity": 0.043 + } + ], + "pr_count": 7, + "pr_numbers": [ + 64470, + 64573, + 65324, + 65639, + 67748, + 69228, + 69733 + ], + "recent_pr_count": 3, + "recent_pr_numbers": [ + 67748, + 69228, + 69733 + ], + "representative_pr_number": 64573, + "representative_title": "fix(browser): inject DISPLAY=:0 fallback when spawning Chrome on Linux", + "representative_url": "https://github.com/openclaw/openclaw/pull/64573", + "shared_directories": [ + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", + "extensions" + ], + "shared_filenames": [ + "extensions/browser/src/browser/chrome.ts", + "extensions/browser/src/browser/chrome.internal.test.ts" + ], + "summary": "7 open PRs share weighted file overlap around `extensions/browser/src/browser/chrome.ts`, `extensions/browser/src/browser/chrome.internal.test.ts`; representative PR #64573.", + "title": "Scope: fix(browser): inject DISPLAY=:0 fallback when spawning Chrome on Linux" + }, + { + "authors": [ + "alexlomt", + "dlebee-agent", + "lyfuci" + ], + "average_similarity": 0.611, + "cluster_id": "pr-scope-53807-6", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T01:03:59Z", + "outside_window_prs": [ + { + "additions": 440, + "author": "densmirnov", + "changed_files": 5, + "created_at": "2026-03-24T16:30:35Z", + "deletions": 19, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53807/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53807", + "merged": false, + "number": 53807, + "state": "open", + "title": "fix: avoid inlining daemon secrets in generated systemd units", + "updated_at": "2026-03-24T20:15:28Z" + }, + { + "additions": 158, + "author": "MoerAI", + "changed_files": 2, + "created_at": "2026-04-10T02:10:27Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64020/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64020", + "merged": false, + "number": 64020, + "state": "open", + "title": "fix(daemon): derive XDG_RUNTIME_DIR/DBUS bus address for systemctl spawns (#63561)", + "updated_at": "2026-04-18T08:46:09Z" + }, + { + "additions": 1098, + "author": "vincentkoc", + "changed_files": 5, + "created_at": "2026-04-14T09:14:04Z", + "deletions": 262, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66444/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66444", + "merged": false, + "number": 66444, + "state": "open", + "title": "fix(systemd): reconcile managed-env unit migrations", + "updated_at": "2026-04-14T09:19:48Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.468, - "left_pr_number": 36032, - "right_pr_number": 53787, + "content_similarity": 0.84, + "left_pr_number": 64020, + "right_pr_number": 68293, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.481, - "size_similarity": 0.133 + "similarity": 0.879, + "size_similarity": 0.941 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.349, - "left_pr_number": 36909, - "right_pr_number": 53787, + "breadth_similarity": 0.75, + "concentration_similarity": 0.984, + "content_similarity": 0.733, + "left_pr_number": 53807, + "right_pr_number": 66444, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd-unit.test.ts", + "src/daemon/systemd-unit.ts", + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.481, - "size_similarity": 0.692 + "similarity": 0.688, + "size_similarity": 0.338 }, { - "breadth_similarity": 0.714, - "concentration_similarity": 1.0, - "content_similarity": 0.405, - "left_pr_number": 64027, - "right_pr_number": 68107, + "breadth_similarity": 0.542, + "concentration_similarity": 0.767, + "content_similarity": 0.648, + "left_pr_number": 53807, + "right_pr_number": 66735, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/bot.ts", - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.479, - "size_similarity": 0.492 + "similarity": 0.677, + "size_similarity": 0.871 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 1.0, - "content_similarity": 0.505, - "left_pr_number": 54898, - "right_pr_number": 64805, + "breadth_similarity": 0.45, + "concentration_similarity": 0.991, + "content_similarity": 0.673, + "left_pr_number": 64020, + "right_pr_number": 68400, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.477, - "size_similarity": 0.043 + "similarity": 0.67, + "size_similarity": 0.692 }, { - "breadth_similarity": 0.375, + "breadth_similarity": 0.45, "concentration_similarity": 0.991, - "content_similarity": 0.528, - "left_pr_number": 36909, - "right_pr_number": 37545, + "content_similarity": 0.68, + "left_pr_number": 68293, + "right_pr_number": 68400, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.461, - "size_similarity": 0.027 + "similarity": 0.668, + "size_similarity": 0.651 }, { - "breadth_similarity": 0.875, + "breadth_similarity": 0.7, "concentration_similarity": 1.0, - "content_similarity": 0.404, - "left_pr_number": 64805, - "right_pr_number": 67783, + "content_similarity": 0.611, + "left_pr_number": 53807, + "right_pr_number": 64020, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/bot.ts", - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.449, - "size_similarity": 0.194 + "similarity": 0.6, + "size_similarity": 0.346 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.991, - "content_similarity": 0.46, - "left_pr_number": 37545, - "right_pr_number": 67783, + "breadth_similarity": 0.292, + "concentration_similarity": 0.767, + "content_similarity": 0.686, + "left_pr_number": 64020, + "right_pr_number": 66735, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.444, - "size_similarity": 0.066 + "similarity": 0.593, + "size_similarity": 0.302 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 0.7, "concentration_similarity": 1.0, - "content_similarity": 0.335, - "left_pr_number": 36909, - "right_pr_number": 54898, + "content_similarity": 0.582, + "left_pr_number": 53807, + "right_pr_number": 68293, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.443, - "size_similarity": 0.556 + "similarity": 0.583, + "size_similarity": 0.368 }, { - "breadth_similarity": 0.571, - "concentration_similarity": 1.0, - "content_similarity": 0.47, - "left_pr_number": 64027, - "right_pr_number": 68491, + "breadth_similarity": 0.292, + "concentration_similarity": 0.767, + "content_similarity": 0.64, + "left_pr_number": 66735, + "right_pr_number": 68293, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.439, - "size_similarity": 0.019 + "similarity": 0.564, + "size_similarity": 0.321 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 1.0, - "content_similarity": 0.429, - "left_pr_number": 54898, - "right_pr_number": 68107, + "breadth_similarity": 0.75, + "concentration_similarity": 0.991, + "content_similarity": 0.565, + "left_pr_number": 53807, + "right_pr_number": 68400, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.427, - "size_similarity": 0.065 + "similarity": 0.556, + "size_similarity": 0.24 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.394, - "left_pr_number": 36909, - "right_pr_number": 64805, + "breadth_similarity": 0.667, + "concentration_similarity": 0.783, + "content_similarity": 0.554, + "left_pr_number": 66444, + "right_pr_number": 66735, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.421, - "size_similarity": 0.078 + "similarity": 0.552, + "size_similarity": 0.388 }, { - "breadth_similarity": 0.786, - "concentration_similarity": 1.0, - "content_similarity": 0.37, - "left_pr_number": 64027, - "right_pr_number": 67783, + "breadth_similarity": 0.667, + "concentration_similarity": 0.776, + "content_similarity": 0.575, + "left_pr_number": 66735, + "right_pr_number": 68400, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/bot.ts", - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.409, - "size_similarity": 0.143 + "similarity": 0.539, + "size_similarity": 0.209 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 1.0, - "content_similarity": 0.361, - "left_pr_number": 54898, - "right_pr_number": 67783, + "breadth_similarity": 0.45, + "concentration_similarity": 0.984, + "content_similarity": 0.608, + "left_pr_number": 66444, + "right_pr_number": 68293, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.399, - "size_similarity": 0.222 + "similarity": 0.538, + "size_similarity": 0.124 }, { - "breadth_similarity": 0.571, - "concentration_similarity": 1.0, - "content_similarity": 0.406, - "left_pr_number": 54898, - "right_pr_number": 64027, + "breadth_similarity": 1.0, + "concentration_similarity": 0.993, + "content_similarity": 0.534, + "left_pr_number": 66444, + "right_pr_number": 68400, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "CHANGELOG.md", + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.396, - "size_similarity": 0.032 + "similarity": 0.535, + "size_similarity": 0.081 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.311, - "left_pr_number": 53787, - "right_pr_number": 68107, + "breadth_similarity": 0.45, + "concentration_similarity": 0.984, + "content_similarity": 0.587, + "left_pr_number": 64020, + "right_pr_number": 66444, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/daemon", + "src" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts" ], - "similarity": 0.393, - "size_similarity": 0.168 + "similarity": 0.523, + "size_similarity": 0.117 + } + ], + "pr_count": 6, + "pr_numbers": [ + 53807, + 64020, + 66444, + 66735, + 68293, + 68400 + ], + "recent_pr_count": 3, + "recent_pr_numbers": [ + 66735, + 68293, + 68400 + ], + "representative_pr_number": 64020, + "representative_title": "fix(daemon): derive XDG_RUNTIME_DIR/DBUS bus address for systemctl spawns (#63561)", + "representative_url": "https://github.com/openclaw/openclaw/pull/64020", + "shared_directories": [ + "src/daemon", + "src" + ], + "shared_filenames": [ + "src/daemon/systemd.test.ts", + "src/daemon/systemd.ts", + "src/daemon/systemd-unit.test.ts", + "src/daemon/systemd-unit.ts", + "CHANGELOG.md" + ], + "summary": "6 open PRs share weighted file overlap around `src/daemon/systemd.test.ts`, `src/daemon/systemd.ts`, `src/daemon/systemd-unit.test.ts`; representative PR #64020.", + "title": "Scope: fix(daemon): derive XDG_RUNTIME_DIR/DBUS bus address for systemctl spawns (#63561)" + }, + { + "authors": [ + "Mlightsnow", + "d1rshan", + "ztexydt-cqh" + ], + "average_similarity": 0.434, + "cluster_id": "pr-scope-53663-6", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T03:44:49Z", + "outside_window_prs": [ + { + "additions": 116, + "author": "BlocksecPHD", + "changed_files": 4, + "created_at": "2026-03-24T12:22:08Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53663/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53663", + "merged": false, + "number": 53663, + "state": "open", + "title": "fix(ui): prevent skills search autofill", + "updated_at": "2026-03-24T20:15:29Z" }, { - "breadth_similarity": 0.667, + "additions": 114, + "author": "Mehulupase01", + "changed_files": 2, + "created_at": "2026-04-11T23:56:45Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65051/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65051", + "merged": false, + "number": 65051, + "state": "open", + "title": "Fix workspace skill grouping in Control Panel", + "updated_at": "2026-04-12T00:02:43Z" + }, + { + "additions": 47, + "author": "TOMUIV", + "changed_files": 2, + "created_at": "2026-04-12T11:55:53Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65332/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65332", + "merged": false, + "number": 65332, + "state": "open", + "title": "fix(ui): handle null/undefined value in renderMapField", + "updated_at": "2026-04-12T12:36:15Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.305, - "left_pr_number": 53787, - "right_pr_number": 54898, + "content_similarity": 0.67, + "left_pr_number": 53663, + "right_pr_number": 65051, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "ui/src/ui/views/skills.browser.test.ts" ], - "similarity": 0.388, - "size_similarity": 0.385 + "similarity": 0.744, + "size_similarity": 1.0 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.312, - "left_pr_number": 53787, - "right_pr_number": 64805, + "content_similarity": 0.711, + "left_pr_number": 68005, + "right_pr_number": 68093, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "ui/src/ui/views/config-form.render.ts", + "ui/src/ui/views/config.browser.test.ts" ], - "similarity": 0.385, - "size_similarity": 0.112 + "similarity": 0.736, + "size_similarity": 0.588 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.991, - "content_similarity": 0.393, - "left_pr_number": 37545, - "right_pr_number": 53787, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.66, + "left_pr_number": 68071, + "right_pr_number": 68093, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "ui/src/ui/views/config-form.render.ts" ], - "similarity": 0.38, - "size_similarity": 0.038 + "similarity": 0.634, + "size_similarity": 0.312 }, { - "breadth_similarity": 0.875, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.218, - "left_pr_number": 53787, - "right_pr_number": 67783, + "content_similarity": 0.541, + "left_pr_number": 68005, + "right_pr_number": 68071, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "ui/src/ui/views/config-form.render.ts" + ], + "similarity": 0.532, + "size_similarity": 0.183 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.198, + "left_pr_number": 65051, + "right_pr_number": 68005, + "shared_directories": [ + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.423, + "size_similarity": 0.893 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.205, + "left_pr_number": 53663, + "right_pr_number": 68005, + "shared_directories": [ + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.402, + "size_similarity": 0.893 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.198, + "left_pr_number": 65051, + "right_pr_number": 68093, + "shared_directories": [ + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.387, + "size_similarity": 0.658 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.185, + "left_pr_number": 65332, + "right_pr_number": 68093, + "shared_directories": [ + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], + "shared_filenames": [], "similarity": 0.377, - "size_similarity": 0.578 + "size_similarity": 0.649 }, { - "breadth_similarity": 0.625, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.338, - "left_pr_number": 67783, - "right_pr_number": 68491, + "content_similarity": 0.205, + "left_pr_number": 53663, + "right_pr_number": 68093, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "shared_filenames": [], + "similarity": 0.367, + "size_similarity": 0.658 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.179, + "left_pr_number": 65051, + "right_pr_number": 65332, + "shared_directories": [ + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.369, - "size_similarity": 0.133 + "shared_filenames": [], + "similarity": 0.339, + "size_similarity": 0.427 }, { - "breadth_similarity": 0.643, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.341, - "left_pr_number": 36909, - "right_pr_number": 64027, + "content_similarity": 0.185, + "left_pr_number": 65332, + "right_pr_number": 68005, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "shared_filenames": [], + "similarity": 0.337, + "size_similarity": 0.382 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.187, + "left_pr_number": 65332, + "right_pr_number": 68071, + "shared_directories": [ + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.361, - "size_similarity": 0.057 + "shared_filenames": [], + "similarity": 0.328, + "size_similarity": 0.48 }, { - "breadth_similarity": 0.714, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.273, - "left_pr_number": 53787, - "right_pr_number": 64027, + "content_similarity": 0.185, + "left_pr_number": 53663, + "right_pr_number": 65332, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts" + "shared_filenames": [], + "similarity": 0.318, + "size_similarity": 0.427 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.2, + "left_pr_number": 65051, + "right_pr_number": 68071, + "shared_directories": [ + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.325, - "size_similarity": 0.083 + "shared_filenames": [], + "similarity": 0.296, + "size_similarity": 0.205 + }, + { + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.207, + "left_pr_number": 53663, + "right_pr_number": 68071, + "shared_directories": [ + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.288, + "size_similarity": 0.205 } ], - "pr_count": 10, + "pr_count": 6, "pr_numbers": [ - 36032, - 36909, - 37545, - 53787, - 54898, - 64027, - 64805, - 67783, - 68107, - 68491 + 53663, + 65051, + 65332, + 68005, + 68071, + 68093 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 67783, - 68107, - 68491 + 68005, + 68071, + 68093 ], - "representative_pr_number": 36032, - "representative_title": "fix(feishu): deliver block-only replies via onIdle fallback", - "representative_url": "https://github.com/openclaw/openclaw/pull/36032", + "representative_pr_number": 68093, + "representative_title": "Fix: dedupe section title/desc in single-section config view (Resolves #68003)", + "representative_url": "https://github.com/openclaw/openclaw/pull/68093", "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/feishu/src/reply-dispatcher.ts", - "extensions/feishu/src/reply-dispatcher.test.ts", - "extensions/feishu/src/bot.ts", - "extensions/feishu/src/monitor.comment.test.ts" + "ui/src/ui/views/config-form.render.ts", + "ui/src/ui/views/skills.browser.test.ts", + "ui/src/ui/views/config.browser.test.ts" ], - "summary": "10 open PRs share weighted file overlap around `extensions/feishu/src/reply-dispatcher.ts`, `extensions/feishu/src/reply-dispatcher.test.ts`, `extensions/feishu/src/bot.ts`; representative PR #36032.", - "title": "Scope: fix(feishu): deliver block-only replies via onIdle fallback" + "summary": "6 open PRs share weighted file overlap around `ui/src/ui/views/config-form.render.ts`, `ui/src/ui/views/skills.browser.test.ts`, `ui/src/ui/views/config.browser.test.ts`; representative PR #68093.", + "title": "Scope: Fix: dedupe section title/desc in single-section config view (Resolves #68003)" }, { "authors": [ - "ericyoshida", - "nxmxbbd", - "stanleeyY" + "harinwu-netizen", + "longle325", + "rarest" ], - "average_similarity": 0.455, - "cluster_id": "pr-scope-53369-7", + "average_similarity": 0.395, + "cluster_id": "pr-scope-38228-6", "kind": "pr_scope", - "last_activity_at": "2026-04-18T07:31:24Z", + "last_activity_at": "2026-04-21T09:03:50Z", "outside_window_prs": [ { - "additions": 298, - "author": "joe2643", - "changed_files": 5, - "created_at": "2026-03-24T03:51:24Z", - "deletions": 6, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53369/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53369", - "merged": false, - "number": 53369, - "state": "open", - "title": "feat(whatsapp): support native @mentions in outbound group replies", - "updated_at": "2026-03-24T20:15:31Z" - }, - { - "additions": 70, - "author": "joe2643", - "changed_files": 4, - "created_at": "2026-03-24T18:05:58Z", - "deletions": 8, + "additions": 7, + "author": "haroldfabla2-hue", + "changed_files": 1, + "created_at": "2026-03-06T17:36:37Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53867/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53867", + "files_url": "https://github.com/openclaw/openclaw/pull/38228/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38228", "merged": false, - "number": 53867, + "number": 38228, "state": "open", - "title": "fix(whatsapp): reply-to-bot detection with WhatsApp LID identifiers", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix: extract text from array content in tool cards", + "updated_at": "2026-04-21T04:29:42Z" }, { - "additions": 519, - "author": "joe2643", - "changed_files": 14, - "created_at": "2026-03-24T18:17:29Z", - "deletions": 24, + "additions": 9, + "author": "echoito", + "changed_files": 1, + "created_at": "2026-03-06T18:54:43Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53874/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53874", + "files_url": "https://github.com/openclaw/openclaw/pull/38271/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38271", "merged": false, - "number": 53874, + "number": 38271, "state": "open", - "title": "feat(whatsapp): outbound @mentions, reply media injection, and LID reply-to-bot E164 fix", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(webchat): extract text from array-shaped tool result content", + "updated_at": "2026-04-21T04:30:13Z" }, { - "additions": 268, - "author": "AytuncYildizli", - "changed_files": 2, - "created_at": "2026-03-24T22:38:42Z", - "deletions": 16, + "additions": 5, + "author": "WuKongAI-CMU", + "changed_files": 1, + "created_at": "2026-04-13T06:14:51Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54038/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54038", + "files_url": "https://github.com/openclaw/openclaw/pull/65750/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65750", "merged": false, - "number": 54038, + "number": 65750, "state": "open", - "title": "fix(whatsapp): pre-transcribe inbound voice notes before bootstrap", - "updated_at": "2026-03-24T22:42:34Z" + "title": "fix(control-ui): stop reloading history after clear (#65719)", + "updated_at": "2026-04-13T06:16:29Z" } ], "pairwise": [ { - "breadth_similarity": 0.345, - "concentration_similarity": 0.777, - "content_similarity": 0.753, - "left_pr_number": 53369, - "right_pr_number": 53874, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.997, + "left_pr_number": 38228, + "right_pr_number": 38271, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "src/auto-reply/reply", - "extensions/whatsapp", - "src/auto-reply", - "extensions", - "src" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts", - "extensions/whatsapp/src/inbound/outbound-mentions.test.ts", - "extensions/whatsapp/src/inbound/outbound-mentions.ts", - "extensions/whatsapp/src/inbound/send-api.ts", - "src/auto-reply/reply/groups.ts" + "ui/src/ui/chat/tool-cards.ts" ], - "similarity": 0.684, - "size_similarity": 0.56 + "similarity": 0.965, + "size_similarity": 0.778 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.69, - "content_similarity": 0.57, - "left_pr_number": 54038, - "right_pr_number": 67842, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.442, + "left_pr_number": 67259, + "right_pr_number": 69634, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "ui/src/ui/chat/grouped-render.ts" ], - "similarity": 0.582, - "size_similarity": 0.655 + "similarity": 0.52, + "size_similarity": 0.4 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.9, - "content_similarity": 0.458, - "left_pr_number": 65759, - "right_pr_number": 67842, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.193, + "left_pr_number": 38228, + "right_pr_number": 67259, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" - ], - "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.564, - "size_similarity": 0.819 + "shared_filenames": [], + "similarity": 0.392, + "size_similarity": 0.714 }, { - "breadth_similarity": 0.65, - "concentration_similarity": 0.907, - "content_similarity": 0.444, - "left_pr_number": 53369, - "right_pr_number": 67842, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.196, + "left_pr_number": 38271, + "right_pr_number": 67184, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "src/auto-reply/reply", - "extensions/whatsapp", - "src/auto-reply", - "extensions", - "src" - ], - "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.513, - "size_similarity": 0.612 + "shared_filenames": [], + "similarity": 0.383, + "size_similarity": 0.643 }, { - "breadth_similarity": 0.25, - "concentration_similarity": 0.887, - "content_similarity": 0.597, - "left_pr_number": 66061, - "right_pr_number": 67842, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.197, + "left_pr_number": 38271, + "right_pr_number": 67259, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" - ], - "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.495, - "size_similarity": 0.048 + "shared_filenames": [], + "similarity": 0.371, + "size_similarity": 0.556 }, { - "breadth_similarity": 0.7, - "concentration_similarity": 0.597, - "content_similarity": 0.356, - "left_pr_number": 53369, - "right_pr_number": 54038, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.128, + "left_pr_number": 38228, + "right_pr_number": 65750, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" - ], - "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.49, - "size_similarity": 0.934 + "shared_filenames": [], + "similarity": 0.368, + "size_similarity": 0.857 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.998, - "content_similarity": 0.428, - "left_pr_number": 53867, - "right_pr_number": 67842, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.133, + "left_pr_number": 65750, + "right_pr_number": 67259, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" - ], - "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.487, - "size_similarity": 0.419 + "shared_filenames": [], + "similarity": 0.368, + "size_similarity": 0.833 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.591, - "content_similarity": 0.368, - "left_pr_number": 54038, - "right_pr_number": 65759, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.192, + "left_pr_number": 38228, + "right_pr_number": 67184, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" - ], - "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.482, - "size_similarity": 0.799 + "shared_filenames": [], + "similarity": 0.359, + "size_similarity": 0.5 }, { - "breadth_similarity": 0.9, - "concentration_similarity": 0.993, - "content_similarity": 0.326, - "left_pr_number": 53369, - "right_pr_number": 65759, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.201, + "left_pr_number": 67184, + "right_pr_number": 67259, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" - ], - "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.48, - "size_similarity": 0.747 + "shared_filenames": [], + "similarity": 0.344, + "size_similarity": 0.357 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.885, - "content_similarity": 0.522, - "left_pr_number": 53867, - "right_pr_number": 66061, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.13, + "left_pr_number": 38271, + "right_pr_number": 65750, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "shared_filenames": [], + "similarity": 0.341, + "size_similarity": 0.667 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.177, + "left_pr_number": 38228, + "right_pr_number": 69634, + "shared_directories": [ + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.464, - "size_similarity": 0.115 + "shared_filenames": [], + "similarity": 0.317, + "size_similarity": 0.286 }, { - "breadth_similarity": 0.476, - "concentration_similarity": 0.87, - "content_similarity": 0.438, - "left_pr_number": 53874, - "right_pr_number": 67842, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.181, + "left_pr_number": 38271, + "right_pr_number": 69634, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "src/auto-reply/reply", - "extensions/whatsapp", - "src/auto-reply", - "extensions", - "src" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "shared_filenames": [], + "similarity": 0.31, + "size_similarity": 0.222 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.133, + "left_pr_number": 65750, + "right_pr_number": 67184, + "shared_directories": [ + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.449, - "size_similarity": 0.343 + "shared_filenames": [], + "similarity": 0.307, + "size_similarity": 0.429 }, { "breadth_similarity": 1.0, - "concentration_similarity": 0.898, - "content_similarity": 0.331, - "left_pr_number": 53867, - "right_pr_number": 65759, + "concentration_similarity": 1.0, + "content_similarity": 0.184, + "left_pr_number": 67184, + "right_pr_number": 69634, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.3, + "size_similarity": 0.143 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.122, + "left_pr_number": 65750, + "right_pr_number": 69634, + "shared_directories": [ + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.286, + "size_similarity": 0.333 + } + ], + "pr_count": 6, + "pr_numbers": [ + 38228, + 38271, + 65750, + 67184, + 67259, + 69634 + ], + "recent_pr_count": 3, + "recent_pr_numbers": [ + 67184, + 67259, + 69634 + ], + "representative_pr_number": 38228, + "representative_title": "fix: extract text from array content in tool cards", + "representative_url": "https://github.com/openclaw/openclaw/pull/38228", + "shared_directories": [ + "ui/src/ui", + "ui/src", + "ui", + "ui/src/ui/chat" + ], + "shared_filenames": [ + "ui/src/ui/chat/tool-cards.ts", + "ui/src/ui/chat/grouped-render.ts" + ], + "summary": "6 open PRs share weighted file overlap around `ui/src/ui/chat/tool-cards.ts`, `ui/src/ui/chat/grouped-render.ts`; representative PR #38228.", + "title": "Scope: fix: extract text from array content in tool cards" + }, + { + "authors": [ + "armorbreak001", + "nnish16", + "sk7n4k3d" + ], + "average_similarity": 0.653, + "cluster_id": "pr-scope-53383-5", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T00:45:35Z", + "outside_window_prs": [ + { + "additions": 1, + "author": "gigamonster256", + "changed_files": 1, + "created_at": "2026-03-24T04:36:54Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53383/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53383", + "merged": false, + "number": 53383, + "state": "open", + "title": "fix: zsh compdef directive on first line", + "updated_at": "2026-03-24T20:15:31Z" + }, + { + "additions": 17, + "author": "EdenKangdw", + "changed_files": 2, + "created_at": "2026-04-10T20:20:11Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64490/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64490", + "merged": false, + "number": 64490, + "state": "open", + "title": "CLI: escape zsh completion descriptions", + "updated_at": "2026-04-11T01:16:20Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.981, + "left_pr_number": 69305, + "right_pr_number": 69352, + "shared_directories": [ + "src/cli", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "src/cli/completion-cli.test.ts", + "src/cli/completion-cli.ts" ], - "similarity": 0.428, - "size_similarity": 0.344 + "similarity": 0.961, + "size_similarity": 0.832 }, { - "breadth_similarity": 0.35, - "concentration_similarity": 0.98, - "content_similarity": 0.48, - "left_pr_number": 53369, - "right_pr_number": 66061, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.95, + "left_pr_number": 64490, + "right_pr_number": 69352, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cli", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "src/cli/completion-cli.test.ts", + "src/cli/completion-cli.ts" ], - "similarity": 0.425, - "size_similarity": 0.03 + "similarity": 0.852, + "size_similarity": 0.245 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.987, - "content_similarity": 0.47, - "left_pr_number": 65759, - "right_pr_number": 66061, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.905, + "left_pr_number": 64490, + "right_pr_number": 69305, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cli", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "src/cli/completion-cli.test.ts", + "src/cli/completion-cli.ts" ], - "similarity": 0.422, - "size_similarity": 0.04 + "similarity": 0.814, + "size_similarity": 0.204 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.577, - "content_similarity": 0.463, - "left_pr_number": 54038, - "right_pr_number": 66061, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.724, + "left_pr_number": 64490, + "right_pr_number": 69509, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cli", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "src/cli/completion-cli.ts" ], - "similarity": 0.408, - "size_similarity": 0.032 + "similarity": 0.765, + "size_similarity": 0.885 }, { - "breadth_similarity": 0.9, - "concentration_similarity": 0.904, - "content_similarity": 0.326, - "left_pr_number": 53369, - "right_pr_number": 53867, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.742, + "left_pr_number": 69305, + "right_pr_number": 69509, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cli", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "src/cli/completion-cli.ts" ], - "similarity": 0.402, - "size_similarity": 0.257 + "similarity": 0.679, + "size_similarity": 0.23 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.693, - "content_similarity": 0.351, - "left_pr_number": 53867, - "right_pr_number": 54038, + "concentration_similarity": 1.0, + "content_similarity": 0.731, + "left_pr_number": 69352, + "right_pr_number": 69509, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cli", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "src/cli/completion-cli.ts" ], - "similarity": 0.397, - "size_similarity": 0.275 + "similarity": 0.678, + "size_similarity": 0.277 }, { - "breadth_similarity": 0.238, - "concentration_similarity": 0.821, - "content_similarity": 0.336, - "left_pr_number": 53874, - "right_pr_number": 54038, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.484, + "left_pr_number": 53383, + "right_pr_number": 69509, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cli", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "src/cli/completion-cli.ts" ], - "similarity": 0.378, - "size_similarity": 0.523 + "similarity": 0.506, + "size_similarity": 0.115 }, { - "breadth_similarity": 0.31, - "concentration_similarity": 0.872, - "content_similarity": 0.359, - "left_pr_number": 53867, - "right_pr_number": 53874, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.491, + "left_pr_number": 53383, + "right_pr_number": 69305, "shared_directories": [ - "extensions/whatsapp/src/auto-reply/monitor", - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cli", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/extract.ts", - "extensions/whatsapp/src/inbound/monitor.ts", - "extensions/whatsapp/src/inbound/types.ts" + "src/cli/completion-cli.ts" ], - "similarity": 0.347, - "size_similarity": 0.144 + "similarity": 0.473, + "size_similarity": 0.027 }, { - "breadth_similarity": 0.31, - "concentration_similarity": 0.77, - "content_similarity": 0.291, - "left_pr_number": 53874, - "right_pr_number": 65759, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.399, + "left_pr_number": 53383, + "right_pr_number": 64490, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cli", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "src/cli/completion-cli.ts" ], - "similarity": 0.336, - "size_similarity": 0.418 + "similarity": 0.424, + "size_similarity": 0.13 }, { - "breadth_similarity": 0.119, - "concentration_similarity": 0.757, - "content_similarity": 0.396, - "left_pr_number": 53874, - "right_pr_number": 66061, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.361, + "left_pr_number": 53383, + "right_pr_number": 69352, "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cli", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts" + "src/cli/completion-cli.ts" ], - "similarity": 0.329, - "size_similarity": 0.017 + "similarity": 0.383, + "size_similarity": 0.032 } ], - "pr_count": 7, + "pr_count": 5, "pr_numbers": [ - 53369, - 53867, - 53874, - 54038, - 65759, - 66061, - 67842 + 53383, + 64490, + 69305, + 69352, + 69509 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 65759, - 66061, - 67842 + 69305, + 69352, + 69509 ], - "representative_pr_number": 67842, - "representative_title": "Fix/message tool description user facing", - "representative_url": "https://github.com/openclaw/openclaw/pull/67842", + "representative_pr_number": 69305, + "representative_title": "CLI: complete positional args in zsh completion", + "representative_url": "https://github.com/openclaw/openclaw/pull/69305", "shared_directories": [ - "extensions/whatsapp/src/inbound", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", - "src/auto-reply/reply", - "src/auto-reply", - "src", - "extensions/whatsapp/src/auto-reply/monitor" + "src/cli", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/inbound/monitor.ts", - "extensions/whatsapp/src/inbound/outbound-mentions.test.ts", - "extensions/whatsapp/src/inbound/outbound-mentions.ts", - "src/auto-reply/reply/groups.ts", - "extensions/whatsapp/src/inbound/send-api.ts", - "extensions/whatsapp/src/inbound/types.ts", - "extensions/whatsapp/src/inbound/extract.ts" + "src/cli/completion-cli.ts", + "src/cli/completion-cli.test.ts" ], - "summary": "7 open PRs share weighted file overlap around `extensions/whatsapp/src/inbound/monitor.ts`, `extensions/whatsapp/src/inbound/outbound-mentions.test.ts`, `extensions/whatsapp/src/inbound/outbound-mentions.ts`; representative PR #67842.", - "title": "Scope: Fix/message tool description user facing" + "summary": "5 open PRs share weighted file overlap around `src/cli/completion-cli.ts`, `src/cli/completion-cli.test.ts`; representative PR #69305.", + "title": "Scope: CLI: complete positional args in zsh completion" }, { "authors": [ - "JoeshpCheung", - "lawrence3699", - "lyfuci" + "cgdusek", + "clemenshelm", + "ztexydt-cqh" ], - "average_similarity": 0.56, - "cluster_id": "pr-scope-63586-6", + "average_similarity": 0.532, + "cluster_id": "pr-scope-19328-5", "kind": "pr_scope", - "last_activity_at": "2026-04-19T04:38:57Z", + "last_activity_at": "2026-04-20T08:08:54Z", "outside_window_prs": [ { - "additions": 136, - "author": "jepson-liu", - "changed_files": 2, - "created_at": "2026-04-09T06:30:21Z", - "deletions": 5, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63586/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63586", - "merged": false, - "number": 63586, - "state": "open", - "title": "fix(plugins): ignore non-allowlisted load errors #63575", - "updated_at": "2026-04-11T01:36:08Z" - }, - { - "additions": 10, - "author": "hteo1337", + "additions": 660, + "author": "CodeReclaimers", "changed_files": 3, - "created_at": "2026-04-10T15:41:50Z", - "deletions": 12, + "created_at": "2026-02-17T17:50:44Z", + "deletions": 84, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64388/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64388", + "files_url": "https://github.com/openclaw/openclaw/pull/19328/files", + "html_url": "https://github.com/openclaw/openclaw/pull/19328", "merged": false, - "number": 64388, + "number": 19328, "state": "open", - "title": "fix(plugins): auto-correct cache:false when activate:false instead of throwing", - "updated_at": "2026-04-11T11:53:58Z" + "title": "Fix: preserve modelOverride in agent handler (#5369)", + "updated_at": "2026-04-17T20:29:07Z" }, { - "additions": 173, - "author": "chen-zhang-cs-code", - "changed_files": 4, - "created_at": "2026-04-11T02:32:33Z", - "deletions": 46, + "additions": 138, + "author": "cds-1993", + "changed_files": 3, + "created_at": "2026-03-24T08:04:29Z", + "deletions": 11, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64601/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64601", + "files_url": "https://github.com/openclaw/openclaw/pull/53538/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53538", "merged": false, - "number": 64601, + "number": 53538, "state": "open", - "title": "fix(plugins): load bundled setup entries in setup-runtime", - "updated_at": "2026-04-14T09:18:56Z" + "title": "fix(gateway): skip delivery error for bestEffortDeliver when no external channels configured", + "updated_at": "2026-03-24T20:15:30Z" } ], "pairwise": [ { "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.569, - "left_pr_number": 67892, - "right_pr_number": 68638, + "content_similarity": 0.554, + "left_pr_number": 19328, + "right_pr_number": 69010, "shared_directories": [ - "src/plugins", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" + "src/gateway/server-methods/agent.test.ts", + "src/gateway/server-methods/agent.ts" ], - "similarity": 0.679, - "size_similarity": 0.983 + "similarity": 0.621, + "size_similarity": 0.667 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.574, - "left_pr_number": 63586, - "right_pr_number": 68638, + "breadth_similarity": 0.583, + "concentration_similarity": 0.982, + "content_similarity": 0.558, + "left_pr_number": 67586, + "right_pr_number": 69010, "shared_directories": [ - "src/plugins", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" + "src/gateway/server-methods/agent.test.ts", + "src/gateway/server-methods/agent.ts" ], - "similarity": 0.662, - "size_similarity": 0.844 + "similarity": 0.615, + "size_similarity": 0.776 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.992, - "content_similarity": 0.551, - "left_pr_number": 68389, - "right_pr_number": 68638, + "breadth_similarity": 1.0, + "concentration_similarity": 0.918, + "content_similarity": 0.57, + "left_pr_number": 53538, + "right_pr_number": 67586, "shared_directories": [ - "src/plugins", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" + "src/gateway/server-methods/agent.test.ts", + "src/gateway/server-methods/agent.ts" ], - "similarity": 0.651, - "size_similarity": 0.937 + "similarity": 0.603, + "size_similarity": 0.387 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.503, - "left_pr_number": 63586, - "right_pr_number": 67892, + "breadth_similarity": 0.583, + "concentration_similarity": 0.899, + "content_similarity": 0.594, + "left_pr_number": 53538, + "right_pr_number": 69010, "shared_directories": [ - "src/plugins", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" + "src/gateway/server-methods/agent.test.ts", + "src/gateway/server-methods/agent.ts" ], - "similarity": 0.631, - "size_similarity": 0.858 + "similarity": 0.564, + "size_similarity": 0.3 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.992, - "content_similarity": 0.509, - "left_pr_number": 67892, - "right_pr_number": 68389, + "breadth_similarity": 0.75, + "concentration_similarity": 0.899, + "content_similarity": 0.584, + "left_pr_number": 19328, + "right_pr_number": 53538, "shared_directories": [ - "src/plugins", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" + "src/gateway/server-methods/agent.test.ts", + "src/gateway/server-methods/agent.ts" ], - "similarity": 0.607, - "size_similarity": 0.953 + "similarity": 0.558, + "size_similarity": 0.2 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.992, - "content_similarity": 0.488, - "left_pr_number": 63586, - "right_pr_number": 68389, + "breadth_similarity": 0.75, + "concentration_similarity": 0.982, + "content_similarity": 0.467, + "left_pr_number": 19328, + "right_pr_number": 67586, "shared_directories": [ - "src/plugins", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" - ], - "similarity": 0.585, - "size_similarity": 0.901 - }, - { - "breadth_similarity": 0.625, - "concentration_similarity": 0.95, - "content_similarity": 0.538, - "left_pr_number": 64601, - "right_pr_number": 68638, - "shared_directories": [ - "src/plugins", - "src" - ], - "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" - ], - "similarity": 0.568, - "size_similarity": 0.543 - }, - { - "breadth_similarity": 0.875, - "concentration_similarity": 0.958, - "content_similarity": 0.487, - "left_pr_number": 64601, - "right_pr_number": 68389, - "shared_directories": [ - "src/plugins", - "src" - ], - "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" - ], - "similarity": 0.563, - "size_similarity": 0.58 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.95, - "content_similarity": 0.485, - "left_pr_number": 63586, - "right_pr_number": 64601, - "shared_directories": [ - "src/plugins", - "src" - ], - "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" - ], - "similarity": 0.533, - "size_similarity": 0.644 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.95, - "content_similarity": 0.502, - "left_pr_number": 64601, - "right_pr_number": 67892, - "shared_directories": [ - "src/plugins", - "src" - ], - "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" + "src/gateway/server-methods/agent.test.ts", + "src/gateway/server-methods/agent.ts" ], - "similarity": 0.532, - "size_similarity": 0.553 + "similarity": 0.529, + "size_similarity": 0.517 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.909, - "content_similarity": 0.504, - "left_pr_number": 64388, - "right_pr_number": 68638, - "shared_directories": [ - "src/plugins", - "src" - ], - "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" - ], - "similarity": 0.501, - "size_similarity": 0.185 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 0.917, - "content_similarity": 0.462, - "left_pr_number": 64388, - "right_pr_number": 68389, + "concentration_similarity": 0.943, + "content_similarity": 0.55, + "left_pr_number": 69010, + "right_pr_number": 69139, "shared_directories": [ - "src/plugins", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" + "src/gateway/server-methods/agent.test.ts" ], - "similarity": 0.495, - "size_similarity": 0.173 + "similarity": 0.518, + "size_similarity": 0.071 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.959, - "content_similarity": 0.463, - "left_pr_number": 64388, - "right_pr_number": 64601, + "breadth_similarity": 0.833, + "concentration_similarity": 0.956, + "content_similarity": 0.471, + "left_pr_number": 53538, + "right_pr_number": 69139, "shared_directories": [ - "src/plugins", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" + "src/gateway/server-methods/agent.test.ts" ], - "similarity": 0.475, - "size_similarity": 0.1 + "similarity": 0.496, + "size_similarity": 0.235 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.909, - "content_similarity": 0.475, - "left_pr_number": 64388, - "right_pr_number": 67892, + "breadth_similarity": 0.833, + "concentration_similarity": 0.961, + "content_similarity": 0.434, + "left_pr_number": 67586, + "right_pr_number": 69139, "shared_directories": [ - "src/plugins", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" + "src/gateway/server-methods/agent.test.ts" ], - "similarity": 0.464, - "size_similarity": 0.182 + "similarity": 0.449, + "size_similarity": 0.091 }, { "breadth_similarity": 0.583, - "concentration_similarity": 0.909, - "content_similarity": 0.462, - "left_pr_number": 63586, - "right_pr_number": 64388, + "concentration_similarity": 0.943, + "content_similarity": 0.362, + "left_pr_number": 19328, + "right_pr_number": 69139, "shared_directories": [ - "src/plugins", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" + "src/gateway/server-methods/agent.test.ts" ], - "similarity": 0.451, - "size_similarity": 0.156 + "similarity": 0.366, + "size_similarity": 0.047 } ], - "pr_count": 6, + "pr_count": 5, "pr_numbers": [ - 63586, - 64388, - 64601, - 67892, - 68389, - 68638 + 19328, + 53538, + 67586, + 69010, + 69139 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 67892, - 68389, - 68638 + 67586, + 69010, + 69139 ], - "representative_pr_number": 68638, - "representative_title": "fix(loader): avoid memory and compaction side effects during non-activating loads", - "representative_url": "https://github.com/openclaw/openclaw/pull/68638", + "representative_pr_number": 69010, + "representative_title": "fix(gateway): prefer current route delivery context", + "representative_url": "https://github.com/openclaw/openclaw/pull/69010", "shared_directories": [ - "src/plugins", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/plugins/loader.test.ts", - "src/plugins/loader.ts" + "src/gateway/server-methods/agent.test.ts", + "src/gateway/server-methods/agent.ts" ], - "summary": "6 open PRs share weighted file overlap around `src/plugins/loader.test.ts`, `src/plugins/loader.ts`; representative PR #68638.", - "title": "Scope: fix(loader): avoid memory and compaction side effects during non-activating loads" + "summary": "5 open PRs share weighted file overlap around `src/gateway/server-methods/agent.test.ts`, `src/gateway/server-methods/agent.ts`; representative PR #69010.", + "title": "Scope: fix(gateway): prefer current route delivery context" }, { "authors": [ - "Efan404", - "ScientificProgrammer", - "banddude" + "SharkeyDev", + "YangManBOBO", + "zhouhe-xydt" ], - "average_similarity": 0.457, - "cluster_id": "pr-scope-35950-6", + "average_similarity": 0.46, + "cluster_id": "pr-scope-65419-5", "kind": "pr_scope", - "last_activity_at": "2026-04-18T15:32:54Z", + "last_activity_at": "2026-04-21T02:45:07Z", "outside_window_prs": [ { - "additions": 88, - "author": "TeirikangasAnfra", + "additions": 46, + "author": "ryanngit", "changed_files": 2, - "created_at": "2026-03-05T10:38:36Z", - "deletions": 33, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/35950/files", - "html_url": "https://github.com/openclaw/openclaw/pull/35950", - "merged": false, - "number": 35950, - "state": "open", - "title": "fix(googlechat): delivery failures \u2014 typing cleanup, block dedup race, DM thread handling", - "updated_at": "2026-04-17T04:31:32Z" - }, - { - "additions": 145, - "author": "MaxJinju", - "changed_files": 5, - "created_at": "2026-03-24T12:43:11Z", - "deletions": 6, + "created_at": "2026-04-12T15:15:52Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53676/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53676", + "files_url": "https://github.com/openclaw/openclaw/pull/65419/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65419", "merged": false, - "number": 53676, + "number": 65419, "state": "open", - "title": "fix(googlechat): harden webhook auth matching and diagnostics", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(exec): skip script preflight validation when elevated=full", + "updated_at": "2026-04-12T15:19:32Z" }, { - "additions": 31, - "author": "Yanhu007", - "changed_files": 1, - "created_at": "2026-04-12T00:10:24Z", - "deletions": 13, + "additions": 196, + "author": "bobgee00001-beep", + "changed_files": 2, + "created_at": "2026-04-13T18:14:21Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65058/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65058", + "files_url": "https://github.com/openclaw/openclaw/pull/66101/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66101", "merged": false, - "number": 65058, + "number": 66101, "state": "open", - "title": "fix(googlechat): accept add-on space lifecycle payload variants", - "updated_at": "2026-04-12T00:12:31Z" + "title": "Allow main host-level OpenClaw self-inspection", + "updated_at": "2026-04-13T18:21:56Z" } ], "pairwise": [ { - "breadth_similarity": 0.5, - "concentration_similarity": 0.959, - "content_similarity": 0.965, - "left_pr_number": 35950, - "right_pr_number": 68614, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.899, + "left_pr_number": 67644, + "right_pr_number": 67924, "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/googlechat/src/monitor.ts" + "src/agents/bash-tools.exec.script-preflight.test.ts", + "src/agents/bash-tools.exec.ts" ], - "similarity": 0.857, - "size_similarity": 0.558 + "similarity": 0.89, + "size_similarity": 0.738 }, { - "breadth_similarity": 0.8, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.591, - "left_pr_number": 53676, - "right_pr_number": 67221, + "content_similarity": 0.499, + "left_pr_number": 65419, + "right_pr_number": 67924, "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/googlechat/src/auth.test.ts", - "extensions/googlechat/src/auth.ts" + "src/agents/bash-tools.exec.script-preflight.test.ts", + "src/agents/bash-tools.exec.ts" ], - "similarity": 0.674, - "size_similarity": 0.868 + "similarity": 0.556, + "size_similarity": 0.379 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.959, - "content_similarity": 0.48, - "left_pr_number": 35950, - "right_pr_number": 67055, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.487, + "left_pr_number": 65419, + "right_pr_number": 67644, "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/googlechat/src/monitor.ts" + "src/agents/bash-tools.exec.script-preflight.test.ts", + "src/agents/bash-tools.exec.ts" ], - "similarity": 0.537, - "size_similarity": 0.521 + "similarity": 0.533, + "size_similarity": 0.28 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.526, - "left_pr_number": 67055, - "right_pr_number": 68614, + "content_similarity": 0.288, + "left_pr_number": 66101, + "right_pr_number": 67644, "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/googlechat/src/monitor.ts" + "src/agents/bash-tools.exec.ts" ], - "similarity": 0.537, - "size_similarity": 0.29 + "similarity": 0.48, + "size_similarity": 0.857 }, { - "breadth_similarity": 0.6, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.525, - "left_pr_number": 53676, - "right_pr_number": 65058, + "content_similarity": 0.272, + "left_pr_number": 66101, + "right_pr_number": 67924, "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/googlechat/src/monitor-webhook.ts" - ], - "similarity": 0.521, - "size_similarity": 0.291 - }, - { - "breadth_similarity": 0.667, - "concentration_similarity": 1.0, - "content_similarity": 0.261, - "left_pr_number": 67221, - "right_pr_number": 68614, - "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents/bash-tools.exec.ts" ], - "shared_filenames": [], - "similarity": 0.42, - "size_similarity": 0.802 + "similarity": 0.435, + "size_similarity": 0.633 }, { - "breadth_similarity": 0.6, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.285, - "left_pr_number": 53676, - "right_pr_number": 68614, + "content_similarity": 0.247, + "left_pr_number": 67924, + "right_pr_number": 69549, "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/googlechat/src/monitor.ts" + "src/agents/bash-tools.exec.ts" ], - "similarity": 0.414, - "size_similarity": 0.696 + "similarity": 0.365, + "size_similarity": 0.282 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.959, - "content_similarity": 0.278, - "left_pr_number": 35950, - "right_pr_number": 53676, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.261, + "left_pr_number": 67644, + "right_pr_number": 69549, "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/googlechat/src/monitor.ts" + "src/agents/bash-tools.exec.ts" ], - "similarity": 0.408, - "size_similarity": 0.801 + "similarity": 0.364, + "size_similarity": 0.208 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.232, - "left_pr_number": 65058, - "right_pr_number": 67055, + "content_similarity": 0.128, + "left_pr_number": 65419, + "right_pr_number": 69549, "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.392, - "size_similarity": 0.698 - }, - { - "breadth_similarity": 0.583, - "concentration_similarity": 0.959, - "content_similarity": 0.254, - "left_pr_number": 35950, - "right_pr_number": 67221, - "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "shared_filenames": [ + "src/agents/bash-tools.exec.ts" ], - "shared_filenames": [], - "similarity": 0.389, - "size_similarity": 0.695 + "similarity": 0.351, + "size_similarity": 0.745 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.261, - "left_pr_number": 65058, - "right_pr_number": 68614, + "content_similarity": 0.234, + "left_pr_number": 66101, + "right_pr_number": 69549, "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.363, - "size_similarity": 0.203 - }, - { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.232, - "left_pr_number": 67055, - "right_pr_number": 67221, - "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "shared_filenames": [ + "src/agents/bash-tools.exec.ts" ], - "shared_filenames": [], - "similarity": 0.35, - "size_similarity": 0.362 + "similarity": 0.34, + "size_similarity": 0.179 }, { - "breadth_similarity": 0.7, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.231, - "left_pr_number": 53676, - "right_pr_number": 67055, + "content_similarity": 0.14, + "left_pr_number": 65419, + "right_pr_number": 66101, "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/googlechat/src/monitor.ts" - ], - "similarity": 0.344, - "size_similarity": 0.417 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.959, - "content_similarity": 0.255, - "left_pr_number": 35950, - "right_pr_number": 65058, - "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.331, - "size_similarity": 0.364 - }, - { - "breadth_similarity": 0.667, - "concentration_similarity": 1.0, - "content_similarity": 0.245, - "left_pr_number": 65058, - "right_pr_number": 67221, - "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents/bash-tools.exec.ts" ], - "shared_filenames": [], - "similarity": 0.326, - "size_similarity": 0.253 + "similarity": 0.284, + "size_similarity": 0.24 } ], - "pr_count": 6, + "pr_count": 5, "pr_numbers": [ - 35950, - 53676, - 65058, - 67055, - 67221, - 68614 + 65419, + 66101, + 67644, + 67924, + 69549 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 67055, - 67221, - 68614 + 67644, + 67924, + 69549 ], - "representative_pr_number": 68614, - "representative_title": "fix(googlechat): add timeout and fallback for deferred responses", - "representative_url": "https://github.com/openclaw/openclaw/pull/68614", + "representative_pr_number": 67644, + "representative_title": "fix: avoid python preflight false positives for $ tokens in string literals", + "representative_url": "https://github.com/openclaw/openclaw/pull/67644", "shared_directories": [ - "extensions/googlechat/src", - "extensions/googlechat", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/googlechat/src/monitor.ts", - "extensions/googlechat/src/auth.test.ts", - "extensions/googlechat/src/auth.ts", - "extensions/googlechat/src/monitor-webhook.ts" + "src/agents/bash-tools.exec.ts", + "src/agents/bash-tools.exec.script-preflight.test.ts" ], - "summary": "6 open PRs share weighted file overlap around `extensions/googlechat/src/monitor.ts`, `extensions/googlechat/src/auth.test.ts`, `extensions/googlechat/src/auth.ts`; representative PR #68614.", - "title": "Scope: fix(googlechat): add timeout and fallback for deferred responses" + "summary": "5 open PRs share weighted file overlap around `src/agents/bash-tools.exec.ts`, `src/agents/bash-tools.exec.script-preflight.test.ts`; representative PR #67644.", + "title": "Scope: fix: avoid python preflight false positives for $ tokens in string literals" }, { "authors": [ - "bek91", - "mrlane2k", - "yangxiyucs" + "MonkeyLeeT", + "altaywtf", + "sk7n4k3d" ], - "average_similarity": 0.441, - "cluster_id": "pr-scope-50200-6", + "average_similarity": 0.416, + "cluster_id": "pr-scope-53620-5", "kind": "pr_scope", - "last_activity_at": "2026-04-17T00:42:52Z", + "last_activity_at": "2026-04-21T16:26:35Z", "outside_window_prs": [ { - "additions": 99, - "author": "smartchainark", - "changed_files": 5, - "created_at": "2026-03-19T04:32:52Z", - "deletions": 1, + "additions": 42, + "author": "lupuletic", + "changed_files": 4, + "created_at": "2026-03-24T10:41:27Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/50200/files", - "html_url": "https://github.com/openclaw/openclaw/pull/50200", + "files_url": "https://github.com/openclaw/openclaw/pull/53620/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53620", "merged": false, - "number": 50200, + "number": 53620, "state": "open", - "title": "fix(slack): fetch fresh download URL via files.info for DM file attachments", - "updated_at": "2026-04-17T16:49:00Z" + "title": "fix(docker): ensure /home/node exists before USER switch", + "updated_at": "2026-03-24T20:15:29Z" }, { - "additions": 133, - "author": "hanamizuki", - "changed_files": 7, - "created_at": "2026-03-24T06:32:38Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53467/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53467", - "merged": false, - "number": 53467, - "state": "open", - "title": "feat(slack): add ignoreOtherMentions channel config", - "updated_at": "2026-04-17T16:06:02Z" - }, - { - "additions": 117, - "author": "deucemask", - "changed_files": 10, - "created_at": "2026-03-24T21:21:28Z", - "deletions": 19, + "additions": 129, + "author": "tomcatzh", + "changed_files": 5, + "created_at": "2026-03-28T06:58:07Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53966/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53966", + "files_url": "https://github.com/openclaw/openclaw/pull/56242/files", + "html_url": "https://github.com/openclaw/openclaw/pull/56242", "merged": false, - "number": 53966, + "number": 56242, "state": "open", - "title": "fix(slack): include API error details in log messages", - "updated_at": "2026-03-24T21:25:57Z" + "title": "fix: add CJK error patterns to failover classification", + "updated_at": "2026-04-20T15:45:53Z" } ], "pairwise": [ { - "breadth_similarity": 0.875, - "concentration_similarity": 1.0, - "content_similarity": 0.693, - "left_pr_number": 65731, - "right_pr_number": 65980, - "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare-content.ts", - "extensions/slack/src/monitor/message-handler/prepare.test.ts", - "extensions/slack/src/monitor/message-handler/prepare.ts" - ], - "similarity": 0.707, - "size_similarity": 0.562 - }, - { - "breadth_similarity": 0.411, - "concentration_similarity": 0.816, - "content_similarity": 0.49, - "left_pr_number": 53467, - "right_pr_number": 65731, - "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.test.ts", - "extensions/slack/src/monitor/message-handler/prepare.ts" - ], - "similarity": 0.561, - "size_similarity": 0.904 - }, - { - "breadth_similarity": 0.339, - "concentration_similarity": 0.816, - "content_similarity": 0.52, - "left_pr_number": 53467, - "right_pr_number": 65980, - "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.test.ts", - "extensions/slack/src/monitor/message-handler/prepare.ts" - ], - "similarity": 0.532, - "size_similarity": 0.621 - }, - { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.339, - "left_pr_number": 65980, - "right_pr_number": 67872, - "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.ts" - ], - "similarity": 0.495, - "size_similarity": 0.831 - }, - { - "breadth_similarity": 0.268, - "concentration_similarity": 0.816, - "content_similarity": 0.413, - "left_pr_number": 53467, - "right_pr_number": 67872, + "breadth_similarity": 0.417, + "concentration_similarity": 0.822, + "content_similarity": 0.646, + "left_pr_number": 53620, + "right_pr_number": 68700, "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.ts" + "src/agents/failover-error.test.ts", + "src/agents/failover-error.ts" ], - "similarity": 0.469, - "size_similarity": 0.747 + "similarity": 0.656, + "size_similarity": 0.804 }, { - "breadth_similarity": 0.65, - "concentration_similarity": 0.95, - "content_similarity": 0.319, - "left_pr_number": 50200, - "right_pr_number": 65731, + "breadth_similarity": 0.8, + "concentration_similarity": 0.96, + "content_similarity": 0.593, + "left_pr_number": 56242, + "right_pr_number": 69677, "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/agents/pi-embedded-helpers", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare-content.ts", - "extensions/slack/src/monitor/message-handler/prepare.ts" + "CHANGELOG.md", + "src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts", + "src/agents/pi-embedded-helpers/failover-matches.ts" ], - "similarity": 0.458, - "size_similarity": 0.813 + "similarity": 0.591, + "size_similarity": 0.318 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.328, - "left_pr_number": 65731, - "right_pr_number": 67872, + "breadth_similarity": 0.367, + "concentration_similarity": 0.841, + "content_similarity": 0.63, + "left_pr_number": 67024, + "right_pr_number": 68700, "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.ts" + "src/agents/failover-error.test.ts", + "src/agents/failover-error.ts" ], - "similarity": 0.456, - "size_similarity": 0.676 + "similarity": 0.557, + "size_similarity": 0.247 }, { - "breadth_similarity": 0.725, - "concentration_similarity": 0.926, - "content_similarity": 0.218, - "left_pr_number": 53467, - "right_pr_number": 53966, + "breadth_similarity": 0.9, + "concentration_similarity": 0.981, + "content_similarity": 0.526, + "left_pr_number": 53620, + "right_pr_number": 67024, "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.ts" + "src/agents/failover-error.test.ts", + "src/agents/failover-error.ts" ], - "similarity": 0.422, - "size_similarity": 1.0 + "similarity": 0.537, + "size_similarity": 0.198 }, { - "breadth_similarity": 0.55, - "concentration_similarity": 0.95, - "content_similarity": 0.345, - "left_pr_number": 50200, - "right_pr_number": 65980, + "breadth_similarity": 1.0, + "concentration_similarity": 0.802, + "content_similarity": 0.291, + "left_pr_number": 56242, + "right_pr_number": 67024, "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/agents/pi-embedded-helpers", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare-content.ts", - "extensions/slack/src/monitor/message-handler/prepare.ts" + "CHANGELOG.md", + "src/agents/failover-error.test.ts", + "src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts" ], - "similarity": 0.413, - "size_similarity": 0.457 + "similarity": 0.429, + "size_similarity": 0.568 }, { - "breadth_similarity": 0.607, - "concentration_similarity": 0.866, - "content_similarity": 0.258, - "left_pr_number": 50200, - "right_pr_number": 53467, + "breadth_similarity": 0.9, + "concentration_similarity": 0.821, + "content_similarity": 0.264, + "left_pr_number": 53620, + "right_pr_number": 56242, "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.ts" + "src/agents/failover-error.test.ts" ], - "similarity": 0.395, - "size_similarity": 0.735 + "similarity": 0.368, + "size_similarity": 0.349 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.95, - "content_similarity": 0.267, - "left_pr_number": 50200, - "right_pr_number": 67872, + "breadth_similarity": 0.875, + "concentration_similarity": 0.861, + "content_similarity": 0.023, + "left_pr_number": 53620, + "right_pr_number": 69677, "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.ts" + "src/agents", + "src" ], - "similarity": 0.362, - "size_similarity": 0.549 + "shared_filenames": [], + "similarity": 0.283, + "size_similarity": 0.911 }, { - "breadth_similarity": 0.267, - "concentration_similarity": 0.743, - "content_similarity": 0.251, - "left_pr_number": 53966, - "right_pr_number": 67872, + "breadth_similarity": 0.8, + "concentration_similarity": 0.842, + "content_similarity": 0.187, + "left_pr_number": 67024, + "right_pr_number": 69677, "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/agents/pi-embedded-helpers", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.ts" + "CHANGELOG.md", + "src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts" ], - "similarity": 0.352, - "size_similarity": 0.747 + "similarity": 0.28, + "size_similarity": 0.181 }, { "breadth_similarity": 0.367, - "concentration_similarity": 0.743, - "content_similarity": 0.202, - "left_pr_number": 53966, - "right_pr_number": 65731, - "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.ts" - ], - "similarity": 0.351, - "size_similarity": 0.904 - }, - { - "breadth_similarity": 0.583, - "concentration_similarity": 0.793, - "content_similarity": 0.182, - "left_pr_number": 50200, - "right_pr_number": 53966, + "concentration_similarity": 0.643, + "content_similarity": 0.167, + "left_pr_number": 56242, + "right_pr_number": 68700, "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.ts" + "src/agents/failover-error.test.ts" ], - "similarity": 0.336, - "size_similarity": 0.735 + "similarity": 0.251, + "size_similarity": 0.434 }, { - "breadth_similarity": 0.317, - "concentration_similarity": 0.743, - "content_similarity": 0.21, - "left_pr_number": 53966, - "right_pr_number": 65980, + "breadth_similarity": 0.5, + "concentration_similarity": 0.683, + "content_similarity": 0.026, + "left_pr_number": 68700, + "right_pr_number": 69677, "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.ts" + "src/agents", + "src" ], - "similarity": 0.309, - "size_similarity": 0.621 + "shared_filenames": [], + "similarity": 0.212, + "size_similarity": 0.732 } ], - "pr_count": 6, + "pr_count": 5, "pr_numbers": [ - 50200, - 53467, - 53966, - 65731, - 65980, - 67872 + 53620, + 56242, + 67024, + 68700, + 69677 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 65731, - 65980, - 67872 + 67024, + 68700, + 69677 ], - "representative_pr_number": 65731, - "representative_title": "Slack: Annotate inbound Slack mentions in raw bodies", - "representative_url": "https://github.com/openclaw/openclaw/pull/65731", + "representative_pr_number": 53620, + "representative_title": "fix(docker): ensure /home/node exists before USER switch", + "representative_url": "https://github.com/openclaw/openclaw/pull/53620", "shared_directories": [ - "extensions/slack/src/monitor/message-handler", - "extensions/slack/src/monitor", - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/agents", + "src", + "src/agents/pi-embedded-helpers" ], "shared_filenames": [ - "extensions/slack/src/monitor/message-handler/prepare.ts", - "extensions/slack/src/monitor/message-handler/prepare-content.ts", - "extensions/slack/src/monitor/message-handler/prepare.test.ts" + "src/agents/failover-error.test.ts", + "src/agents/failover-error.ts", + "src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts", + "CHANGELOG.md", + "src/agents/pi-embedded-helpers/failover-matches.ts" ], - "summary": "6 open PRs share weighted file overlap around `extensions/slack/src/monitor/message-handler/prepare.ts`, `extensions/slack/src/monitor/message-handler/prepare-content.ts`, `extensions/slack/src/monitor/message-handler/prepare.test.ts`; representative PR #65731.", - "title": "Scope: Slack: Annotate inbound Slack mentions in raw bodies" + "summary": "5 open PRs share weighted file overlap around `src/agents/failover-error.test.ts`, `src/agents/failover-error.ts`, `src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts`; representative PR #53620.", + "title": "Scope: fix(docker): ensure /home/node exists before USER switch" }, { "authors": [ - "acinader", - "nighting0615", - "oinoom" + "haishmg", + "liemrich", + "masatohoshino" ], - "average_similarity": 0.706, - "cluster_id": "pr-scope-62938-5", + "average_similarity": 0.408, + "cluster_id": "pr-scope-62305-5", "kind": "pr_scope", - "last_activity_at": "2026-04-18T18:50:10Z", + "last_activity_at": "2026-04-21T12:22:12Z", "outside_window_prs": [ { - "additions": 138, - "author": "allensu0314", - "changed_files": 2, - "created_at": "2026-04-08T04:54:02Z", - "deletions": 25, + "additions": 475, + "author": "mcaxtr", + "changed_files": 17, + "created_at": "2026-04-07T04:56:38Z", + "deletions": 47, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/62938/files", - "html_url": "https://github.com/openclaw/openclaw/pull/62938", + "files_url": "https://github.com/openclaw/openclaw/pull/62305/files", + "html_url": "https://github.com/openclaw/openclaw/pull/62305", "merged": false, - "number": 62938, + "number": 62305, "state": "open", - "title": "fix(exec-approvals): respect OPENCLAW_STATE_DIR for store paths", - "updated_at": "2026-04-12T15:00:18Z" + "title": "feat(whatsapp): wire replyToMode with quoted message delivery", + "updated_at": "2026-04-21T17:59:47Z" }, { - "additions": 71, - "author": "FunJim", - "changed_files": 2, - "created_at": "2026-04-11T05:49:55Z", - "deletions": 17, + "additions": 631, + "author": "rogerdigital", + "changed_files": 6, + "created_at": "2026-04-10T05:45:13Z", + "deletions": 25, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64663/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64663", + "files_url": "https://github.com/openclaw/openclaw/pull/64120/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64120", "merged": false, - "number": 64663, + "number": 64120, "state": "open", - "title": "fix: allow symlinked OPENCLAW_HOME in exec approvals path check", - "updated_at": "2026-04-13T13:46:48Z" + "title": "WhatsApp: add preflight audio transcription for DM voice notes", + "updated_at": "2026-04-19T08:32:11Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.956, - "left_pr_number": 64663, - "right_pr_number": 68417, + "breadth_similarity": 0.418, + "concentration_similarity": 0.488, + "content_similarity": 0.518, + "left_pr_number": 62305, + "right_pr_number": 67477, "shared_directories": [ - "src/infra", + "extensions/whatsapp/src/auto-reply/monitor", + "extensions/whatsapp/src/auto-reply", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions", "src" ], "shared_filenames": [ - "src/infra/exec-approvals-store.test.ts", - "src/infra/exec-approvals.ts" + "extensions/whatsapp/src/auto-reply/deliver-reply.test.ts", + "extensions/whatsapp/src/auto-reply/deliver-reply.ts", + "extensions/whatsapp/src/auto-reply/monitor/inbound-dispatch.ts" ], - "similarity": 0.955, - "size_similarity": 0.907 + "similarity": 0.573, + "size_similarity": 0.965 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.897, - "left_pr_number": 62938, - "right_pr_number": 68417, + "breadth_similarity": 0.7, + "concentration_similarity": 0.396, + "content_similarity": 0.476, + "left_pr_number": 67477, + "right_pr_number": 68744, "shared_directories": [ - "src/infra", + "extensions/whatsapp/src/auto-reply", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions", "src" ], "shared_filenames": [ - "src/infra/exec-approvals-store.test.ts", - "src/infra/exec-approvals.ts" + "extensions/whatsapp/src/auto-reply/deliver-reply.test.ts", + "extensions/whatsapp/src/auto-reply/deliver-reply.ts" ], - "similarity": 0.867, - "size_similarity": 0.595 + "similarity": 0.536, + "size_similarity": 0.755 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.943, - "content_similarity": 0.833, - "left_pr_number": 65736, - "right_pr_number": 66404, + "breadth_similarity": 0.594, + "concentration_similarity": 0.908, + "content_similarity": 0.4, + "left_pr_number": 62305, + "right_pr_number": 68744, "shared_directories": [ - "src/infra", + "extensions/whatsapp/src/auto-reply", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions", "src" ], "shared_filenames": [ - "src/infra/exec-approvals-store.test.ts", - "src/infra/exec-approvals.ts" + "extensions/whatsapp/src/auto-reply/deliver-reply.test.ts", + "extensions/whatsapp/src/auto-reply/deliver-reply.ts", + "extensions/whatsapp/src/outbound-base.test.ts", + "extensions/whatsapp/src/outbound-base.ts", + "extensions/whatsapp/src/send.ts" ], - "similarity": 0.817, - "size_similarity": 0.745 + "similarity": 0.494, + "size_similarity": 0.728 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.819, - "left_pr_number": 62938, - "right_pr_number": 64663, + "breadth_similarity": 0.858, + "concentration_similarity": 0.834, + "content_similarity": 0.219, + "left_pr_number": 62305, + "right_pr_number": 69297, "shared_directories": [ - "src/infra", + "extensions/whatsapp/src/auto-reply/monitor", + "extensions/whatsapp/src/auto-reply", + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "src/config", + "extensions", "src" ], "shared_filenames": [ - "src/infra/exec-approvals-store.test.ts", - "src/infra/exec-approvals.ts" + "src/config/bundled-channel-config-metadata.generated.ts", + "src/config/types.whatsapp.ts", + "src/config/zod-schema.providers-whatsapp.ts" ], - "similarity": 0.804, - "size_similarity": 0.54 + "similarity": 0.418, + "size_similarity": 0.916 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.943, - "content_similarity": 0.784, - "left_pr_number": 62938, - "right_pr_number": 66404, + "breadth_similarity": 0.5, + "concentration_similarity": 0.98, + "content_similarity": 0.267, + "left_pr_number": 64120, + "right_pr_number": 67477, "shared_directories": [ - "src/infra", - "src" - ], - "shared_filenames": [ - "src/infra/exec-approvals-store.test.ts", - "src/infra/exec-approvals.ts" + "extensions/whatsapp/src/auto-reply/monitor", + "extensions/whatsapp/src/auto-reply", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" ], - "similarity": 0.686, - "size_similarity": 0.215 + "shared_filenames": [], + "similarity": 0.41, + "size_similarity": 0.825 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.724, - "left_pr_number": 62938, - "right_pr_number": 65736, + "breadth_similarity": 0.383, + "concentration_similarity": 0.654, + "content_similarity": 0.204, + "left_pr_number": 67477, + "right_pr_number": 69297, "shared_directories": [ - "src/infra", + "extensions/whatsapp/src/auto-reply/monitor", + "extensions/whatsapp/src/auto-reply", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions", "src" ], - "shared_filenames": [ - "src/infra/exec-approvals-store.test.ts", - "src/infra/exec-approvals.ts" - ], - "similarity": 0.683, - "size_similarity": 0.288 + "shared_filenames": [], + "similarity": 0.356, + "size_similarity": 0.949 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.529, - "left_pr_number": 65736, - "right_pr_number": 68417, + "breadth_similarity": 0.467, + "concentration_similarity": 0.375, + "content_similarity": 0.186, + "left_pr_number": 64120, + "right_pr_number": 68744, "shared_directories": [ - "src/infra", - "src" - ], - "shared_filenames": [ - "src/infra/exec-approvals-store.test.ts", - "src/infra/exec-approvals.ts" + "extensions/whatsapp/src/auto-reply", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" ], - "similarity": 0.577, - "size_similarity": 0.485 + "shared_filenames": [], + "similarity": 0.333, + "size_similarity": 0.915 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.518, - "left_pr_number": 64663, - "right_pr_number": 65736, + "breadth_similarity": 0.283, + "concentration_similarity": 0.633, + "content_similarity": 0.203, + "left_pr_number": 64120, + "right_pr_number": 69297, "shared_directories": [ - "src/infra", - "src" - ], - "shared_filenames": [ - "src/infra/exec-approvals-store.test.ts", - "src/infra/exec-approvals.ts" + "extensions/whatsapp/src/auto-reply/monitor", + "extensions/whatsapp/src/auto-reply", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" ], - "similarity": 0.576, - "size_similarity": 0.534 + "shared_filenames": [], + "similarity": 0.332, + "size_similarity": 0.869 }, { "breadth_similarity": 0.583, - "concentration_similarity": 0.943, - "content_similarity": 0.557, - "left_pr_number": 66404, - "right_pr_number": 68417, + "concentration_similarity": 0.742, + "content_similarity": 0.156, + "left_pr_number": 68744, + "right_pr_number": 69297, "shared_directories": [ - "src/infra", + "extensions/whatsapp/src/auto-reply", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions", "src" ], - "shared_filenames": [ - "src/infra/exec-approvals-store.test.ts", - "src/infra/exec-approvals.ts" - ], - "similarity": 0.549, - "size_similarity": 0.361 + "shared_filenames": [], + "similarity": 0.324, + "size_similarity": 0.795 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.943, - "content_similarity": 0.546, - "left_pr_number": 64663, - "right_pr_number": 66404, + "breadth_similarity": 0.276, + "concentration_similarity": 0.467, + "content_similarity": 0.188, + "left_pr_number": 62305, + "right_pr_number": 64120, "shared_directories": [ - "src/infra", - "src" - ], - "shared_filenames": [ - "src/infra/exec-approvals-store.test.ts", - "src/infra/exec-approvals.ts" + "extensions/whatsapp/src/auto-reply/monitor", + "extensions/whatsapp/src/auto-reply", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" ], - "similarity": 0.547, - "size_similarity": 0.398 + "shared_filenames": [], + "similarity": 0.302, + "size_similarity": 0.796 } ], "pr_count": 5, "pr_numbers": [ - 62938, - 64663, - 65736, - 66404, - 68417 + 62305, + 64120, + 67477, + 68744, + 69297 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 65736, - 66404, - 68417 + 67477, + 68744, + 69297 ], - "representative_pr_number": 62938, - "representative_title": "fix(exec-approvals): respect OPENCLAW_STATE_DIR for store paths", - "representative_url": "https://github.com/openclaw/openclaw/pull/62938", + "representative_pr_number": 67477, + "representative_title": "fix(whatsapp): emit hooks for auto-replies", + "representative_url": "https://github.com/openclaw/openclaw/pull/67477", "shared_directories": [ - "src/infra", - "src" + "extensions/whatsapp/src/auto-reply", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions", + "extensions/whatsapp/src/auto-reply/monitor", + "src", + "extensions/whatsapp/src/inbound", + "src/config" ], "shared_filenames": [ - "src/infra/exec-approvals-store.test.ts", - "src/infra/exec-approvals.ts" + "extensions/whatsapp/src/auto-reply/deliver-reply.ts", + "extensions/whatsapp/src/auto-reply/deliver-reply.test.ts", + "extensions/whatsapp/src/outbound-base.test.ts", + "extensions/whatsapp/src/outbound-base.ts", + "extensions/whatsapp/src/send.ts", + "extensions/whatsapp/src/auto-reply/monitor/inbound-dispatch.ts", + "src/config/types.whatsapp.ts", + "src/config/zod-schema.providers-whatsapp.ts" ], - "summary": "5 open PRs share weighted file overlap around `src/infra/exec-approvals-store.test.ts`, `src/infra/exec-approvals.ts`; representative PR #62938.", - "title": "Scope: fix(exec-approvals): respect OPENCLAW_STATE_DIR for store paths" + "summary": "5 open PRs share weighted file overlap around `extensions/whatsapp/src/auto-reply/deliver-reply.ts`, `extensions/whatsapp/src/auto-reply/deliver-reply.test.ts`, `extensions/whatsapp/src/outbound-base.test.ts`; representative PR #67477.", + "title": "Scope: fix(whatsapp): emit hooks for auto-replies" }, { "authors": [ - "evgyur", - "johnturek", - "yozu" + "a137460387", + "laopuhuluwa", + "tianhaocui" ], - "average_similarity": 0.542, - "cluster_id": "pr-scope-36246-5", + "average_similarity": 0.376, + "cluster_id": "pr-scope-53533-5", "kind": "pr_scope", - "last_activity_at": "2026-04-18T20:17:12Z", + "last_activity_at": "2026-04-20T06:19:28Z", "outside_window_prs": [ { - "additions": 52, - "author": "zer0index", - "changed_files": 3, - "created_at": "2026-03-05T14:18:55Z", - "deletions": 2, + "additions": 438, + "author": "allan0509", + "changed_files": 7, + "created_at": "2026-03-24T08:04:02Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36246/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36246", + "files_url": "https://github.com/openclaw/openclaw/pull/53533/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53533", "merged": false, - "number": 36246, + "number": 53533, "state": "open", - "title": "Discord: fix inlineButtons capability to emit Components v2 guidance instead of Telegram button format", - "updated_at": "2026-04-17T04:33:05Z" + "title": "feat(feishu): surface connection health state", + "updated_at": "2026-03-24T20:15:30Z" }, { - "additions": 13, - "author": "2233admin", - "changed_files": 2, - "created_at": "2026-03-05T19:48:38Z", - "deletions": 5, + "additions": 339, + "author": "Ricardo-M-L", + "changed_files": 5, + "created_at": "2026-04-11T13:26:42Z", + "deletions": 67, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36639/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36639", + "files_url": "https://github.com/openclaw/openclaw/pull/64820/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64820", "merged": false, - "number": 36639, + "number": 64820, "state": "open", - "title": "fix(agents): make reasoning line static to preserve prompt cache", - "updated_at": "2026-04-18T04:23:03Z" + "title": "fix(feishu): break circular module init causing ReferenceError on group mention", + "updated_at": "2026-04-11T13:45:22Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, + "breadth_similarity": 0.571, "concentration_similarity": 1.0, - "content_similarity": 0.744, - "left_pr_number": 36639, - "right_pr_number": 65777, + "content_similarity": 0.621, + "left_pr_number": 53533, + "right_pr_number": 68865, "shared_directories": [ - "src/agents", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/system-prompt.test.ts", - "src/agents/system-prompt.ts" + "extensions/feishu/src/monitor.transport.ts" ], - "similarity": 0.813, - "size_similarity": 0.947 + "similarity": 0.581, + "size_similarity": 0.262 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.759, - "content_similarity": 0.776, - "left_pr_number": 36246, - "right_pr_number": 65777, + "breadth_similarity": 0.7, + "concentration_similarity": 1.0, + "content_similarity": 0.294, + "left_pr_number": 64820, + "right_pr_number": 67269, "shared_directories": [ - "src/agents", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/system-prompt.test.ts", - "src/agents/system-prompt.ts" + "extensions/feishu/src/monitor.account.ts" ], - "similarity": 0.692, - "size_similarity": 0.352 + "similarity": 0.439, + "size_similarity": 0.759 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.759, - "content_similarity": 0.672, - "left_pr_number": 36246, - "right_pr_number": 36639, + "breadth_similarity": 0.643, + "concentration_similarity": 1.0, + "content_similarity": 0.263, + "left_pr_number": 53533, + "right_pr_number": 67269, "shared_directories": [ - "src/agents", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/system-prompt.test.ts", - "src/agents/system-prompt.ts" + "extensions/feishu/src/monitor.account.ts" ], - "similarity": 0.617, - "size_similarity": 0.333 + "similarity": 0.423, + "size_similarity": 0.828 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.912, - "content_similarity": 0.549, - "left_pr_number": 65777, - "right_pr_number": 68687, + "breadth_similarity": 0.857, + "concentration_similarity": 1.0, + "content_similarity": 0.201, + "left_pr_number": 53533, + "right_pr_number": 64820, "shared_directories": [ - "src/agents", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/system-prompt.test.ts", - "src/agents/system-prompt.ts" + "extensions/feishu/src/monitor.account.ts" ], - "similarity": 0.572, - "size_similarity": 0.559 + "similarity": 0.414, + "size_similarity": 0.916 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.847, - "content_similarity": 0.42, - "left_pr_number": 36246, - "right_pr_number": 68687, + "breadth_similarity": 0.786, + "concentration_similarity": 1.0, + "content_similarity": 0.237, + "left_pr_number": 53533, + "right_pr_number": 67466, "shared_directories": [ - "src/agents", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/system-prompt.test.ts", - "src/agents/system-prompt.ts" + "extensions/feishu/src/monitor.ts" ], - "similarity": 0.531, - "size_similarity": 0.63 + "similarity": 0.403, + "size_similarity": 0.725 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.912, - "content_similarity": 0.418, - "left_pr_number": 36639, - "right_pr_number": 68687, + "breadth_similarity": 0.9, + "concentration_similarity": 1.0, + "content_similarity": 0.157, + "left_pr_number": 64820, + "right_pr_number": 67466, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/system-prompt.test.ts", - "src/agents/system-prompt.ts" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "similarity": 0.476, - "size_similarity": 0.529 + "shared_filenames": [], + "similarity": 0.368, + "size_similarity": 0.791 }, { - "breadth_similarity": 0.633, - "concentration_similarity": 0.807, - "content_similarity": 0.337, - "left_pr_number": 36246, - "right_pr_number": 66312, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.157, + "left_pr_number": 67269, + "right_pr_number": 67466, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/system-prompt.test.ts", - "src/agents/system-prompt.ts" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "similarity": 0.456, - "size_similarity": 0.778 + "shared_filenames": [], + "similarity": 0.325, + "size_similarity": 0.6 }, { - "breadth_similarity": 0.633, - "concentration_similarity": 0.959, - "content_similarity": 0.319, - "left_pr_number": 66312, - "right_pr_number": 68687, + "breadth_similarity": 0.625, + "concentration_similarity": 1.0, + "content_similarity": 0.16, + "left_pr_number": 67466, + "right_pr_number": 68865, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/system-prompt.test.ts", - "src/agents/system-prompt.ts" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "similarity": 0.456, - "size_similarity": 0.81 + "shared_filenames": [], + "similarity": 0.279, + "size_similarity": 0.361 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.952, - "content_similarity": 0.371, - "left_pr_number": 36639, - "right_pr_number": 66312, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.152, + "left_pr_number": 67269, + "right_pr_number": 68865, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/system-prompt.test.ts", - "src/agents/system-prompt.ts" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "similarity": 0.408, - "size_similarity": 0.429 + "shared_filenames": [], + "similarity": 0.264, + "size_similarity": 0.217 }, { - "breadth_similarity": 0.367, - "concentration_similarity": 0.952, - "content_similarity": 0.357, - "left_pr_number": 65777, - "right_pr_number": 66312, + "breadth_similarity": 0.6, + "concentration_similarity": 1.0, + "content_similarity": 0.152, + "left_pr_number": 64820, + "right_pr_number": 68865, "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/system-prompt.test.ts", - "src/agents/system-prompt.ts" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], - "similarity": 0.402, - "size_similarity": 0.452 + "shared_filenames": [], + "similarity": 0.26, + "size_similarity": 0.286 } ], "pr_count": 5, "pr_numbers": [ - 36246, - 36639, - 65777, - 66312, - 68687 + 53533, + 64820, + 67269, + 67466, + 68865 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 65777, - 66312, - 68687 + 67269, + 67466, + 68865 ], - "representative_pr_number": 65777, - "representative_title": "fix(prompt): preserve IDENTITY defaults in system prompt", - "representative_url": "https://github.com/openclaw/openclaw/pull/65777", + "representative_pr_number": 53533, + "representative_title": "feat(feishu): surface connection health state", + "representative_url": "https://github.com/openclaw/openclaw/pull/53533", "shared_directories": [ - "src/agents", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/system-prompt.test.ts", - "src/agents/system-prompt.ts" + "extensions/feishu/src/monitor.account.ts", + "extensions/feishu/src/monitor.transport.ts", + "extensions/feishu/src/monitor.ts" ], - "summary": "5 open PRs share weighted file overlap around `src/agents/system-prompt.test.ts`, `src/agents/system-prompt.ts`; representative PR #65777.", - "title": "Scope: fix(prompt): preserve IDENTITY defaults in system prompt" + "summary": "5 open PRs share weighted file overlap around `extensions/feishu/src/monitor.account.ts`, `extensions/feishu/src/monitor.transport.ts`, `extensions/feishu/src/monitor.ts`; representative PR #53533.", + "title": "Scope: feat(feishu): surface connection health state" }, { "authors": [ - "ayeshakhalid192007-dev", - "coder999999999", - "hclsys" + "717986230" ], - "average_similarity": 0.536, - "cluster_id": "pr-scope-64539-5", + "average_similarity": 0.647, + "cluster_id": "pr-scope-65675-4", "kind": "pr_scope", - "last_activity_at": "2026-04-18T12:28:47Z", + "last_activity_at": "2026-04-20T07:50:31Z", "outside_window_prs": [ { - "additions": 100, - "author": "ShionEria", + "additions": 3, + "author": "717986230", "changed_files": 2, - "created_at": "2026-04-10T23:44:38Z", + "created_at": "2026-04-13T03:04:28Z", "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64539/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64539", - "merged": false, - "number": 64539, - "state": "open", - "title": "fix(reply): allow OpenClaw tmp media in normalizer", - "updated_at": "2026-04-11T00:34:49Z" - }, - { - "additions": 160, - "author": "Ricardo-M-L", - "changed_files": 2, - "created_at": "2026-04-11T15:29:20Z", - "deletions": 16, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64872/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64872", + "files_url": "https://github.com/openclaw/openclaw/pull/65675/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65675", "merged": false, - "number": 64872, + "number": 65675, "state": "open", - "title": "fix: convert local media paths to gateway URLs in WhatsApp reply pipeline", - "updated_at": "2026-04-11T15:34:43Z" + "title": "docs: add 2MB size limit note for avatar images", + "updated_at": "2026-04-20T06:22:05Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.885, - "left_pr_number": 64539, - "right_pr_number": 64872, + "breadth_similarity": 0.775, + "concentration_similarity": 0.921, + "content_similarity": 0.924, + "left_pr_number": 69257, + "right_pr_number": 69259, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "docs/cli", + "docs/gateway", + "skills/gog", + "docs", + "skills" ], "shared_filenames": [ - "src/auto-reply/reply/reply-media-paths.test.ts", - "src/auto-reply/reply/reply-media-paths.ts" + "docs/cli/agents.md", + "docs/cli/config.md", + "docs/gateway/configuration-reference.md", + "skills/gog/SKILL.md" ], - "similarity": 0.856, - "size_similarity": 0.58 + "similarity": 0.904, + "size_similarity": 0.894 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.691, - "left_pr_number": 64872, - "right_pr_number": 66085, + "breadth_similarity": 0.708, + "concentration_similarity": 0.799, + "content_similarity": 0.883, + "left_pr_number": 69231, + "right_pr_number": 69257, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "docs/cli", + "docs/gateway", + "docs" ], "shared_filenames": [ - "src/auto-reply/reply/reply-media-paths.test.ts", - "src/auto-reply/reply/reply-media-paths.ts" + "docs/cli/agents.md", + "docs/cli/config.md", + "docs/gateway/configuration-reference.md" ], - "similarity": 0.729, - "size_similarity": 0.746 + "similarity": 0.847, + "size_similarity": 0.786 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.662, - "left_pr_number": 64539, - "right_pr_number": 66085, + "breadth_similarity": 0.55, + "concentration_similarity": 0.72, + "content_similarity": 0.816, + "left_pr_number": 69231, + "right_pr_number": 69259, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "docs/cli", + "docs/gateway", + "docs" ], "shared_filenames": [ - "src/auto-reply/reply/reply-media-paths.test.ts", - "src/auto-reply/reply/reply-media-paths.ts" + "docs/cli/agents.md", + "docs/cli/config.md", + "docs/gateway/configuration-reference.md" ], - "similarity": 0.662, - "size_similarity": 0.432 + "similarity": 0.768, + "size_similarity": 0.702 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.795, - "content_similarity": 0.674, - "left_pr_number": 64872, - "right_pr_number": 68542, + "breadth_similarity": 0.833, + "concentration_similarity": 0.661, + "content_similarity": 0.528, + "left_pr_number": 65675, + "right_pr_number": 69231, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "docs/cli", + "docs/gateway", + "docs" ], "shared_filenames": [ - "src/auto-reply/reply/reply-media-paths.test.ts", - "src/auto-reply/reply/reply-media-paths.ts" + "docs/cli/agents.md", + "docs/gateway/configuration-reference.md" ], - "similarity": 0.603, - "size_similarity": 0.222 + "similarity": 0.509, + "size_similarity": 0.152 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.531, - "left_pr_number": 66085, - "right_pr_number": 68111, + "breadth_similarity": 0.583, + "concentration_similarity": 0.862, + "content_similarity": 0.467, + "left_pr_number": 65675, + "right_pr_number": 69257, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "docs/cli", + "docs/gateway", + "docs" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner.media-paths.test.ts" + "docs/cli/agents.md", + "docs/gateway/configuration-reference.md" ], - "similarity": 0.593, - "size_similarity": 0.47 + "similarity": 0.446, + "size_similarity": 0.119 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.795, - "content_similarity": 0.589, - "left_pr_number": 64539, - "right_pr_number": 68542, + "breadth_similarity": 0.45, + "concentration_similarity": 0.94, + "content_similarity": 0.431, + "left_pr_number": 65675, + "right_pr_number": 69259, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "docs/cli", + "docs/gateway", + "docs" ], "shared_filenames": [ - "src/auto-reply/reply/reply-media-paths.test.ts", - "src/auto-reply/reply/reply-media-paths.ts" + "docs/cli/agents.md", + "docs/gateway/configuration-reference.md" ], - "similarity": 0.568, - "size_similarity": 0.382 + "similarity": 0.41, + "size_similarity": 0.106 + } + ], + "pr_count": 4, + "pr_numbers": [ + 65675, + 69231, + 69257, + 69259 + ], + "recent_pr_count": 3, + "recent_pr_numbers": [ + 69231, + 69257, + 69259 + ], + "representative_pr_number": 69257, + "representative_title": "docs: add gog tasks commands to SKILL.md", + "representative_url": "https://github.com/openclaw/openclaw/pull/69257", + "shared_directories": [ + "docs/cli", + "docs/gateway", + "docs", + "skills/gog", + "skills" + ], + "shared_filenames": [ + "docs/cli/agents.md", + "docs/gateway/configuration-reference.md", + "docs/cli/config.md", + "skills/gog/SKILL.md" + ], + "summary": "4 open PRs share weighted file overlap around `docs/cli/agents.md`, `docs/gateway/configuration-reference.md`, `docs/cli/config.md`; representative PR #69257.", + "title": "Scope: docs: add gog tasks commands to SKILL.md" + }, + { + "authors": [ + "SimbaKingjoe", + "quengh" + ], + "average_similarity": 0.54, + "cluster_id": "pr-scope-66285-4", + "kind": "pr_scope", + "last_activity_at": "2026-04-19T06:24:54Z", + "outside_window_prs": [ + { + "additions": 65, + "author": "Lidang-Jiang", + "changed_files": 4, + "created_at": "2026-04-14T02:24:39Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66285/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66285", + "merged": false, + "number": 66285, + "state": "open", + "title": "fix: support explicit active-memory chat types", + "updated_at": "2026-04-14T02:29:43Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.542, + "left_pr_number": 68773, + "right_pr_number": 68837, + "shared_directories": [ + "extensions/active-memory", + "extensions" + ], + "shared_filenames": [ + "extensions/active-memory/index.test.ts", + "extensions/active-memory/index.ts" + ], + "similarity": 0.607, + "size_similarity": 0.52 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.795, - "content_similarity": 0.513, - "left_pr_number": 66085, - "right_pr_number": 68542, + "breadth_similarity": 0.875, + "concentration_similarity": 1.0, + "content_similarity": 0.591, + "left_pr_number": 66285, + "right_pr_number": 67977, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/active-memory", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/reply-media-paths.test.ts", - "src/auto-reply/reply/reply-media-paths.ts" + "extensions/active-memory/index.test.ts", + "extensions/active-memory/index.ts", + "extensions/active-memory/openclaw.plugin.json" ], - "similarity": 0.499, - "size_similarity": 0.165 + "similarity": 0.585, + "size_similarity": 0.223 }, { "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.092, - "left_pr_number": 64539, - "right_pr_number": 68111, + "content_similarity": 0.532, + "left_pr_number": 67977, + "right_pr_number": 68837, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/active-memory", + "extensions" ], - "shared_filenames": [], - "similarity": 0.336, - "size_similarity": 0.919 + "shared_filenames": [ + "extensions/active-memory/index.test.ts", + "extensions/active-memory/index.ts" + ], + "similarity": 0.518, + "size_similarity": 0.082 }, { "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.092, - "left_pr_number": 64872, - "right_pr_number": 68111, + "content_similarity": 0.514, + "left_pr_number": 67977, + "right_pr_number": 68773, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/active-memory", + "extensions" ], - "shared_filenames": [], - "similarity": 0.292, - "size_similarity": 0.631 + "shared_filenames": [ + "extensions/active-memory/index.test.ts", + "extensions/active-memory/index.ts" + ], + "similarity": 0.517, + "size_similarity": 0.157 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.795, - "content_similarity": 0.078, - "left_pr_number": 68111, - "right_pr_number": 68542, + "concentration_similarity": 1.0, + "content_similarity": 0.468, + "left_pr_number": 66285, + "right_pr_number": 68837, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/active-memory", + "extensions" ], - "shared_filenames": [], - "similarity": 0.222, - "size_similarity": 0.351 + "shared_filenames": [ + "extensions/active-memory/index.test.ts", + "extensions/active-memory/index.ts" + ], + "similarity": 0.508, + "size_similarity": 0.366 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.395, + "left_pr_number": 66285, + "right_pr_number": 68773, + "shared_directories": [ + "extensions/active-memory", + "extensions" + ], + "shared_filenames": [ + "extensions/active-memory/index.test.ts", + "extensions/active-memory/index.ts" + ], + "similarity": 0.507, + "size_similarity": 0.704 } ], - "pr_count": 5, + "pr_count": 4, "pr_numbers": [ - 64539, - 64872, - 66085, - 68111, - 68542 + 66285, + 67977, + 68773, + 68837 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 66085, - 68111, - 68542 + 67977, + 68773, + 68837 ], - "representative_pr_number": 66085, - "representative_title": "fix(reply): harden preferred tmp media allowlist", - "representative_url": "https://github.com/openclaw/openclaw/pull/66085", + "representative_pr_number": 68837, + "representative_title": "fix(active-memory): skip non-string entries in pluginConfig.agents du\u2026", + "representative_url": "https://github.com/openclaw/openclaw/pull/68837", "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/active-memory", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/reply-media-paths.test.ts", - "src/auto-reply/reply/reply-media-paths.ts", - "src/auto-reply/reply/agent-runner.media-paths.test.ts" + "extensions/active-memory/index.test.ts", + "extensions/active-memory/index.ts", + "extensions/active-memory/openclaw.plugin.json" ], - "summary": "5 open PRs share weighted file overlap around `src/auto-reply/reply/reply-media-paths.test.ts`, `src/auto-reply/reply/reply-media-paths.ts`, `src/auto-reply/reply/agent-runner.media-paths.test.ts`; representative PR #66085.", - "title": "Scope: fix(reply): harden preferred tmp media allowlist" + "summary": "4 open PRs share weighted file overlap around `extensions/active-memory/index.test.ts`, `extensions/active-memory/index.ts`, `extensions/active-memory/openclaw.plugin.json`; representative PR #68837.", + "title": "Scope: fix(active-memory): skip non-string entries in pluginConfig.agents du\u2026" }, { "authors": [ - "IshanDaga", - "alex-latitude", - "zoneblaze" + "CCcassiusdjs", + "chinar-amrutkar", + "frankhli843" ], - "average_similarity": 0.457, - "cluster_id": "pr-scope-53752-5", + "average_similarity": 0.413, + "cluster_id": "pr-scope-66277-4", "kind": "pr_scope", - "last_activity_at": "2026-04-18T17:57:29Z", + "last_activity_at": "2026-04-20T01:28:54Z", "outside_window_prs": [ { - "additions": 36, - "author": "lixuankai", - "changed_files": 2, - "created_at": "2026-03-24T14:55:52Z", - "deletions": 8, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53752/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53752", - "merged": false, - "number": 53752, - "state": "open", - "title": "feat(android): Multiple nodes session context isolated from each other", - "updated_at": "2026-03-24T20:15:29Z" - }, - { - "additions": 39, - "author": "MayankSharma-ops", - "changed_files": 2, - "created_at": "2026-04-10T18:02:08Z", - "deletions": 1, + "additions": 250, + "author": "neeravmakwana", + "changed_files": 3, + "created_at": "2026-04-14T02:00:08Z", + "deletions": 20, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64440/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64440", + "files_url": "https://github.com/openclaw/openclaw/pull/66277/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66277", "merged": false, - "number": 64440, + "number": 66277, "state": "open", - "title": "fix(android): normalize IPv6 host input in manual gateway URLs", - "updated_at": "2026-04-10T18:04:24Z" + "title": "fix(channels): guard broken bundled channel loads", + "updated_at": "2026-04-14T02:16:33Z" } ], "pairwise": [ { - "breadth_similarity": 0.375, - "concentration_similarity": 0.755, - "content_similarity": 0.728, - "left_pr_number": 64440, - "right_pr_number": 66123, + "breadth_similarity": 0.583, + "concentration_similarity": 0.618, + "content_similarity": 0.788, + "left_pr_number": 69049, + "right_pr_number": 69140, "shared_directories": [ - "apps/android/app/src/main/java/ai/openclaw/app/ui", - "apps/android/app/src/test/java/ai/openclaw/app/ui", - "apps/android/app/src/main/java/ai/openclaw/app", - "apps/android/app/src/test/java/ai/openclaw/app", - "apps/android/app/src/main/java/ai/openclaw", - "apps/android/app/src/test/java/ai/openclaw", - "apps/android/app/src/main/java/ai", - "apps/android/app/src/test/java/ai", - "apps/android/app/src/main/java", - "apps/android/app/src/test/java" + "src/channels/plugins", + "src/channels", + "src" ], "shared_filenames": [ - "apps/android/app/src/main/java/ai/openclaw/app/ui/GatewayConfigResolver.kt", - "apps/android/app/src/test/java/ai/openclaw/app/ui/GatewayConfigResolverTest.kt" + "src/channels/plugins/bundled.null-safe-load.test.ts", + "src/channels/plugins/bundled.ts" ], - "similarity": 0.632, - "size_similarity": 0.315 + "similarity": 0.738, + "size_similarity": 0.648 }, { - "breadth_similarity": 0.533, - "concentration_similarity": 0.632, - "content_similarity": 0.597, - "left_pr_number": 53752, - "right_pr_number": 66179, + "breadth_similarity": 0.833, + "concentration_similarity": 0.528, + "content_similarity": 0.319, + "left_pr_number": 66277, + "right_pr_number": 67380, "shared_directories": [ - "apps/android/app/src/main/java/ai/openclaw/app", - "apps/android/app/src/main/java/ai/openclaw", - "apps/android/app/src/main/java/ai", - "apps/android/app/src/main/java", - "apps/android/app/src/main", - "apps/android/app/src", - "apps/android/app", - "apps/android", - "apps" + "src/channels/plugins", + "src/channels", + "src" ], "shared_filenames": [ - "apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt" + "src/channels/plugins/bundled.ts" ], - "similarity": 0.563, - "size_similarity": 0.4 + "similarity": 0.368, + "size_similarity": 0.233 }, { - "breadth_similarity": 0.688, - "concentration_similarity": 0.871, - "content_similarity": 0.407, - "left_pr_number": 66123, - "right_pr_number": 66179, + "breadth_similarity": 0.75, + "concentration_similarity": 0.524, + "content_similarity": 0.255, + "left_pr_number": 67380, + "right_pr_number": 69049, "shared_directories": [ - "apps/android/app/src/main/java/ai/openclaw/app/ui", - "apps/android/app/src/main/java/ai/openclaw/app", - "apps/android/app/src/main/java/ai/openclaw", - "apps/android/app/src/main/java/ai", - "apps/android/app/src/main/java", - "apps/android/app/src/main", - "apps/android/app/src", - "apps/android/app", - "apps/android", - "apps" + "src/channels/plugins", + "src/channels", + "src" ], - "shared_filenames": [], - "similarity": 0.527, - "size_similarity": 0.866 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 0.748, - "content_similarity": 0.351, - "left_pr_number": 53752, - "right_pr_number": 64440, - "shared_directories": [ - "apps/android/app/src/main/java/ai/openclaw/app", - "apps/android/app/src/main/java/ai/openclaw", - "apps/android/app/src/main/java/ai", - "apps/android/app/src/main/java", - "apps/android/app/src/main", - "apps/android/app/src", - "apps/android/app", - "apps/android", - "apps" + "shared_filenames": [ + "src/channels/plugins/bundled.ts" ], - "shared_filenames": [], - "similarity": 0.519, - "size_similarity": 0.909 + "similarity": 0.368, + "size_similarity": 0.589 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.977, - "content_similarity": 0.507, - "left_pr_number": 53752, - "right_pr_number": 68276, + "breadth_similarity": 1.0, + "concentration_similarity": 0.622, + "content_similarity": 0.18, + "left_pr_number": 66277, + "right_pr_number": 69140, "shared_directories": [ - "apps/android/app/src/main/java/ai/openclaw/app/chat", - "apps/android/app/src/main/java/ai/openclaw/app", - "apps/android/app/src/main/java/ai/openclaw", - "apps/android/app/src/main/java/ai", - "apps/android/app/src/main/java", - "apps/android/app/src/main", - "apps/android/app/src", - "apps/android/app", - "apps/android", - "apps" + "src/channels/plugins", + "src/channels", + "src" ], "shared_filenames": [ - "apps/android/app/src/main/java/ai/openclaw/app/chat/ChatController.kt" - ], - "similarity": 0.488, - "size_similarity": 0.227 - }, - { - "breadth_similarity": 0.533, - "concentration_similarity": 0.884, - "content_similarity": 0.376, - "left_pr_number": 64440, - "right_pr_number": 66179, - "shared_directories": [ - "apps/android/app/src/main/java/ai/openclaw/app/ui", - "apps/android/app/src/main/java/ai/openclaw/app", - "apps/android/app/src/main/java/ai/openclaw", - "apps/android/app/src/main/java/ai", - "apps/android/app/src/main/java", - "apps/android/app/src/main", - "apps/android/app/src", - "apps/android/app", - "apps/android", - "apps" + "src/channels/plugins/bundled.ts" ], - "shared_filenames": [], - "similarity": 0.415, - "size_similarity": 0.364 + "similarity": 0.349, + "size_similarity": 0.611 }, { - "breadth_similarity": 0.267, - "concentration_similarity": 0.609, - "content_similarity": 0.469, - "left_pr_number": 66179, - "right_pr_number": 68276, + "breadth_similarity": 0.583, + "concentration_similarity": 0.996, + "content_similarity": 0.243, + "left_pr_number": 66277, + "right_pr_number": 69049, "shared_directories": [ - "apps/android/app/src/main/java/ai/openclaw/app", - "apps/android/app/src/main/java/ai/openclaw", - "apps/android/app/src/main/java/ai", - "apps/android/app/src/main/java", - "apps/android/app/src/main", - "apps/android/app/src", - "apps/android/app", - "apps/android", - "apps" + "src/channels/plugins", + "src/channels", + "src" ], - "shared_filenames": [], - "similarity": 0.399, - "size_similarity": 0.091 - }, - { - "breadth_similarity": 0.375, - "concentration_similarity": 0.503, - "content_similarity": 0.376, - "left_pr_number": 53752, - "right_pr_number": 66123, - "shared_directories": [ - "apps/android/app/src/main/java/ai/openclaw/app", - "apps/android/app/src/main/java/ai/openclaw", - "apps/android/app/src/main/java/ai", - "apps/android/app/src/main/java", - "apps/android/app/src/main", - "apps/android/app/src", - "apps/android/app", - "apps/android", - "apps" + "shared_filenames": [ + "src/channels/plugins/bundled.ts" ], - "shared_filenames": [], - "similarity": 0.378, - "size_similarity": 0.346 + "similarity": 0.338, + "size_similarity": 0.396 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.725, - "content_similarity": 0.325, - "left_pr_number": 64440, - "right_pr_number": 68276, + "breadth_similarity": 0.833, + "concentration_similarity": 0.906, + "content_similarity": 0.185, + "left_pr_number": 67380, + "right_pr_number": 69140, "shared_directories": [ - "apps/android/app/src/main/java/ai/openclaw/app", - "apps/android/app/src/main/java/ai/openclaw", - "apps/android/app/src/main/java/ai", - "apps/android/app/src/main/java", - "apps/android/app/src/main", - "apps/android/app/src", - "apps/android/app", - "apps/android", - "apps" + "src/channels/plugins", + "src/channels", + "src" ], - "shared_filenames": [], - "similarity": 0.351, - "size_similarity": 0.25 - }, - { - "breadth_similarity": 0.188, - "concentration_similarity": 0.48, - "content_similarity": 0.349, - "left_pr_number": 66123, - "right_pr_number": 68276, - "shared_directories": [ - "apps/android/app/src/main/java/ai/openclaw/app", - "apps/android/app/src/main/java/ai/openclaw", - "apps/android/app/src/main/java/ai", - "apps/android/app/src/main/java", - "apps/android/app/src/main", - "apps/android/app/src", - "apps/android/app", - "apps/android", - "apps" + "shared_filenames": [ + "src/channels/plugins/bundled.ts" ], - "shared_filenames": [], - "similarity": 0.299, - "size_similarity": 0.079 + "similarity": 0.316, + "size_similarity": 0.382 } ], - "pr_count": 5, + "pr_count": 4, "pr_numbers": [ - 53752, - 64440, - 66123, - 66179, - 68276 + 66277, + 67380, + 69049, + 69140 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 66123, - 66179, - 68276 + 67380, + 69049, + 69140 ], - "representative_pr_number": 53752, - "representative_title": "feat(android): Multiple nodes session context isolated from each other", - "representative_url": "https://github.com/openclaw/openclaw/pull/53752", + "representative_pr_number": 69049, + "representative_title": "fix(channels): null-check loadChannelPlugin result in bundled loader", + "representative_url": "https://github.com/openclaw/openclaw/pull/69049", "shared_directories": [ - "apps/android/app/src/main/java/ai/openclaw/app", - "apps/android/app/src/main/java/ai/openclaw", - "apps/android/app/src/main/java/ai", - "apps/android/app/src/main/java", - "apps/android/app/src/main", - "apps/android/app/src", - "apps/android/app", - "apps/android" + "src/channels/plugins", + "src/channels", + "src" ], "shared_filenames": [ - "apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt", - "apps/android/app/src/main/java/ai/openclaw/app/chat/ChatController.kt", - "apps/android/app/src/main/java/ai/openclaw/app/ui/GatewayConfigResolver.kt", - "apps/android/app/src/test/java/ai/openclaw/app/ui/GatewayConfigResolverTest.kt" + "src/channels/plugins/bundled.ts", + "src/channels/plugins/bundled.null-safe-load.test.ts" ], - "summary": "5 open PRs share weighted file overlap around `apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt`, `apps/android/app/src/main/java/ai/openclaw/app/chat/ChatController.kt`, `apps/android/app/src/main/java/ai/openclaw/app/ui/GatewayConfigResolver.kt`; representative PR #53752.", - "title": "Scope: feat(android): Multiple nodes session context isolated from each other" + "summary": "4 open PRs share weighted file overlap around `src/channels/plugins/bundled.ts`, `src/channels/plugins/bundled.null-safe-load.test.ts`; representative PR #69049.", + "title": "Scope: fix(channels): null-check loadChannelPlugin result in bundled loader" }, { "authors": [ - "bohell", - "coygeek", - "neeravmakwana" + "Jimmy-xuzimo", + "jacko2bot" ], - "average_similarity": 0.435, - "cluster_id": "pr-scope-53604-5", + "average_similarity": 0.404, + "cluster_id": "pr-scope-65167-4", "kind": "pr_scope", - "last_activity_at": "2026-04-19T00:37:56Z", + "last_activity_at": "2026-04-18T14:55:53Z", "outside_window_prs": [ { - "additions": 188, - "author": "Qinsam", - "changed_files": 4, - "created_at": "2026-03-24T10:04:00Z", + "additions": 137, + "author": "w-sss", + "changed_files": 2, + "created_at": "2026-04-12T04:16:50Z", "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53604/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53604", + "files_url": "https://github.com/openclaw/openclaw/pull/65167/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65167", "merged": false, - "number": 53604, + "number": 65167, "state": "open", - "title": "fix(mattermost): detect stale websocket after bot disable/enable cycle", - "updated_at": "2026-03-24T20:15:30Z" - }, + "title": "fix: dispatch plugin hooks (before_prompt_build, agent_end) in cli-runner", + "updated_at": "2026-04-12T09:37:12Z" + } + ], + "pairwise": [ { - "additions": 106, - "author": "coygeek", - "changed_files": 9, - "created_at": "2026-04-11T00:08:56Z", - "deletions": 32, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64546/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64546", - "merged": false, - "number": 64546, - "state": "open", - "title": "fix: Mattermost interaction token forgeable via hardcoded HMAC...", - "updated_at": "2026-04-11T00:12:09Z" - } - ], - "pairwise": [ - { - "breadth_similarity": 0.833, - "concentration_similarity": 0.92, - "content_similarity": 0.89, - "left_pr_number": 65648, - "right_pr_number": 65655, + "breadth_similarity": 0.708, + "concentration_similarity": 0.991, + "content_similarity": 0.552, + "left_pr_number": 67707, + "right_pr_number": 67708, "shared_directories": [ - "extensions/mattermost/src/mattermost", - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "src/agents", + "src/browser", + "src" ], "shared_filenames": [ - "extensions/mattermost/src/mattermost/monitor-slash.test.ts", - "extensions/mattermost/src/mattermost/monitor-slash.ts", - "extensions/mattermost/src/mattermost/slash-http.send-config.test.ts", - "extensions/mattermost/src/mattermost/slash-http.test.ts", - "extensions/mattermost/src/mattermost/slash-http.ts", - "extensions/mattermost/src/mattermost/slash-state.ts" + "src/agents/cli-runner.ts", + "src/browser/chrome.executables.ts" ], - "similarity": 0.885, - "size_similarity": 0.888 + "similarity": 0.588, + "size_similarity": 0.545 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 1.0, - "content_similarity": 0.633, - "left_pr_number": 53604, - "right_pr_number": 68737, + "breadth_similarity": 0.583, + "concentration_similarity": 0.564, + "content_similarity": 0.374, + "left_pr_number": 65167, + "right_pr_number": 67707, "shared_directories": [ - "extensions/mattermost/src/mattermost", - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/mattermost/src/mattermost/monitor-websocket.ts" + "src/agents/cli-runner.ts" ], - "similarity": 0.585, - "size_similarity": 0.195 + "similarity": 0.408, + "size_similarity": 0.396 }, { - "breadth_similarity": 0.944, - "concentration_similarity": 0.846, - "content_similarity": 0.241, - "left_pr_number": 64546, - "right_pr_number": 65648, + "breadth_similarity": 0.236, + "concentration_similarity": 0.867, + "content_similarity": 0.45, + "left_pr_number": 65167, + "right_pr_number": 68388, "shared_directories": [ - "extensions/mattermost/src/mattermost", - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.427, - "size_similarity": 0.812 - }, - { - "breadth_similarity": 0.778, - "concentration_similarity": 0.927, - "content_similarity": 0.227, - "left_pr_number": 64546, - "right_pr_number": 65655, - "shared_directories": [ - "extensions/mattermost/src/mattermost", - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "shared_filenames": [ + "src/agents/cli-runner.ts" ], - "shared_filenames": [], - "similarity": 0.42, - "size_similarity": 0.914 + "similarity": 0.406, + "size_similarity": 0.164 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.994, - "content_similarity": 0.261, - "left_pr_number": 53604, - "right_pr_number": 65648, + "breadth_similarity": 0.417, + "concentration_similarity": 0.554, + "content_similarity": 0.277, + "left_pr_number": 65167, + "right_pr_number": 67708, "shared_directories": [ - "extensions/mattermost/src/mattermost", - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.417, - "size_similarity": 0.895 + "shared_filenames": [ + "src/agents/cli-runner.ts" + ], + "similarity": 0.372, + "size_similarity": 0.727 }, { - "breadth_similarity": 0.472, - "concentration_similarity": 0.841, - "content_similarity": 0.273, - "left_pr_number": 53604, - "right_pr_number": 64546, + "breadth_similarity": 0.417, + "concentration_similarity": 0.697, + "content_similarity": 0.371, + "left_pr_number": 67707, + "right_pr_number": 68388, "shared_directories": [ - "extensions/mattermost/src/mattermost", - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/mattermost/src/mattermost/monitor.ts" + "src/agents/cli-runner.ts" ], - "similarity": 0.39, - "size_similarity": 0.726 + "similarity": 0.346, + "size_similarity": 0.065 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.914, - "content_similarity": 0.246, - "left_pr_number": 53604, - "right_pr_number": 65655, + "breadth_similarity": 0.597, + "concentration_similarity": 0.687, + "content_similarity": 0.275, + "left_pr_number": 67708, + "right_pr_number": 68388, "shared_directories": [ - "extensions/mattermost/src/mattermost", - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.379, - "size_similarity": 0.795 - }, + "shared_filenames": [ + "src/agents/cli-runner.ts" + ], + "similarity": 0.304, + "size_similarity": 0.119 + } + ], + "pr_count": 4, + "pr_numbers": [ + 65167, + 67707, + 67708, + 68388 + ], + "recent_pr_count": 3, + "recent_pr_numbers": [ + 67707, + 67708, + 68388 + ], + "representative_pr_number": 67707, + "representative_title": "fix(browser): expand tilde in browser.executablePath (fixes #67264)", + "representative_url": "https://github.com/openclaw/openclaw/pull/67707", + "shared_directories": [ + "src/agents", + "src", + "src/browser" + ], + "shared_filenames": [ + "src/agents/cli-runner.ts", + "src/browser/chrome.executables.ts" + ], + "summary": "4 open PRs share weighted file overlap around `src/agents/cli-runner.ts`, `src/browser/chrome.executables.ts`; representative PR #67707.", + "title": "Scope: fix(browser): expand tilde in browser.executablePath (fixes #67264)" + }, + { + "authors": [ + "MukundaKatta", + "mrlane2k" + ], + "average_similarity": 0.732, + "cluster_id": "pr-scope-66742-3", + "kind": "pr_scope", + "last_activity_at": "2026-04-18T09:35:19Z", + "outside_window_prs": [], + "pairwise": [ { - "breadth_similarity": 0.312, - "concentration_similarity": 0.994, - "content_similarity": 0.254, - "left_pr_number": 65648, - "right_pr_number": 68737, + "breadth_similarity": 0.708, + "concentration_similarity": 0.974, + "content_similarity": 0.936, + "left_pr_number": 66742, + "right_pr_number": 66770, "shared_directories": [ - "extensions/mattermost/src/mattermost", - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "src/hooks", + "src/plugins", + "src" ], - "shared_filenames": [], - "similarity": 0.291, - "size_similarity": 0.218 + "shared_filenames": [ + "src/hooks/message-hook-mappers.test.ts", + "src/hooks/message-hook-mappers.ts", + "src/plugins/hook-message.types.ts" + ], + "similarity": 0.85, + "size_similarity": 0.5 }, { - "breadth_similarity": 0.306, - "concentration_similarity": 0.841, - "content_similarity": 0.243, - "left_pr_number": 64546, - "right_pr_number": 68737, + "breadth_similarity": 0.417, + "concentration_similarity": 0.895, + "content_similarity": 0.71, + "left_pr_number": 66742, + "right_pr_number": 67884, "shared_directories": [ - "extensions/mattermost/src/mattermost", - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "src/hooks", + "src" ], - "shared_filenames": [], - "similarity": 0.283, - "size_similarity": 0.268 + "shared_filenames": [ + "src/hooks/message-hook-mappers.test.ts", + "src/hooks/message-hook-mappers.ts" + ], + "similarity": 0.682, + "size_similarity": 0.658 }, { - "breadth_similarity": 0.229, - "concentration_similarity": 0.914, - "content_similarity": 0.239, - "left_pr_number": 65655, - "right_pr_number": 68737, + "breadth_similarity": 0.583, + "concentration_similarity": 0.921, + "content_similarity": 0.728, + "left_pr_number": 66770, + "right_pr_number": 67884, "shared_directories": [ - "extensions/mattermost/src/mattermost", - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "src/hooks", + "src" ], - "shared_filenames": [], - "similarity": 0.273, - "size_similarity": 0.245 + "shared_filenames": [ + "src/hooks/message-hook-mappers.test.ts", + "src/hooks/message-hook-mappers.ts" + ], + "similarity": 0.663, + "size_similarity": 0.329 } ], - "pr_count": 5, + "pr_count": 3, "pr_numbers": [ - 53604, - 64546, - 65648, - 65655, - 68737 + 66742, + 66770, + 67884 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 65648, - 65655, - 68737 + 66742, + 66770, + 67884 ], - "representative_pr_number": 65648, - "representative_title": "fix(mattermost): harden native slash command callbacks", - "representative_url": "https://github.com/openclaw/openclaw/pull/65648", + "representative_pr_number": 66742, + "representative_title": "Plugins: expose native messageId on message_sent hook event", + "representative_url": "https://github.com/openclaw/openclaw/pull/66742", "shared_directories": [ - "extensions/mattermost/src/mattermost", - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "src/hooks", + "src", + "src/plugins" ], "shared_filenames": [ - "extensions/mattermost/src/mattermost/monitor-slash.ts", - "extensions/mattermost/src/mattermost/slash-http.test.ts", - "extensions/mattermost/src/mattermost/slash-http.ts", - "extensions/mattermost/src/mattermost/slash-state.ts", - "extensions/mattermost/src/mattermost/monitor-slash.test.ts", - "extensions/mattermost/src/mattermost/monitor-websocket.ts", - "extensions/mattermost/src/mattermost/slash-http.send-config.test.ts", - "extensions/mattermost/src/mattermost/monitor.ts" + "src/hooks/message-hook-mappers.test.ts", + "src/hooks/message-hook-mappers.ts", + "src/plugins/hook-message.types.ts" ], - "summary": "5 open PRs share weighted file overlap around `extensions/mattermost/src/mattermost/monitor-slash.ts`, `extensions/mattermost/src/mattermost/slash-http.test.ts`, `extensions/mattermost/src/mattermost/slash-http.ts`; representative PR #65648.", - "title": "Scope: fix(mattermost): harden native slash command callbacks" + "summary": "3 open PRs share weighted file overlap around `src/hooks/message-hook-mappers.test.ts`, `src/hooks/message-hook-mappers.ts`, `src/plugins/hook-message.types.ts`; representative PR #66742.", + "title": "Scope: Plugins: expose native messageId on message_sent hook event" }, { "authors": [ - "Phymath", - "TOMUIV", - "sebykrueger" + "chris-yyau", + "nikilster", + "tobemorelucky" ], - "average_similarity": 0.412, - "cluster_id": "pr-scope-64470-5", + "average_similarity": 0.716, + "cluster_id": "pr-scope-66882-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T08:52:07Z", - "outside_window_prs": [ - { - "additions": 11, - "author": "ClawdiaHedgehog", - "changed_files": 1, - "created_at": "2026-04-10T19:11:45Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64470/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64470", - "merged": false, - "number": 64470, - "state": "open", - "title": "fix(browser): set DISPLAY env var for WSL2 Chrome launches", - "updated_at": "2026-04-11T02:33:01Z" - }, - { - "additions": 122, - "author": "navarrotech", - "changed_files": 2, - "created_at": "2026-04-11T01:26:28Z", - "deletions": 5, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64573/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64573", - "merged": false, - "number": 64573, - "state": "open", - "title": "fix(browser): inject DISPLAY=:0 fallback when spawning Chrome on Linux", - "updated_at": "2026-04-12T01:10:22Z" - } - ], + "last_activity_at": "2026-04-16T14:52:46Z", + "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.555, - "left_pr_number": 64470, - "right_pr_number": 64573, + "breadth_similarity": 0.9, + "concentration_similarity": 0.827, + "content_similarity": 0.851, + "left_pr_number": 66882, + "right_pr_number": 67137, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/channels/plugins", + "src/channels", + "src/wizard", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser/chrome.ts" + "src/channels/plugins/setup-wizard-helpers.ts", + "src/channels/plugins/setup-wizard.ts", + "src/wizard/clack-prompter.test.ts", + "src/wizard/clack-prompter.ts" ], - "similarity": 0.527, - "size_similarity": 0.087 + "similarity": 0.875, + "size_similarity": 0.985 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.551, - "left_pr_number": 64573, - "right_pr_number": 67939, + "breadth_similarity": 0.5, + "concentration_similarity": 0.758, + "content_similarity": 0.767, + "left_pr_number": 66882, + "right_pr_number": 67693, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/wizard", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser/chrome.ts" + "src/wizard/clack-prompter.test.ts", + "src/wizard/clack-prompter.ts" ], - "similarity": 0.512, - "size_similarity": 0.008 + "similarity": 0.684, + "size_similarity": 0.393 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.461, - "left_pr_number": 64470, - "right_pr_number": 65324, + "breadth_similarity": 0.45, + "concentration_similarity": 0.585, + "content_similarity": 0.654, + "left_pr_number": 67137, + "right_pr_number": 67693, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/wizard", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser/chrome.ts" + "src/wizard/clack-prompter.test.ts", + "src/wizard/clack-prompter.ts" ], - "similarity": 0.48, - "size_similarity": 0.22 - }, + "similarity": 0.59, + "size_similarity": 0.387 + } + ], + "pr_count": 3, + "pr_numbers": [ + 66882, + 67137, + 67693 + ], + "recent_pr_count": 3, + "recent_pr_numbers": [ + 66882, + 67137, + 67693 + ], + "representative_pr_number": 66882, + "representative_title": "fix(wizard): guard text-input prompts against undefined clack results", + "representative_url": "https://github.com/openclaw/openclaw/pull/66882", + "shared_directories": [ + "src/wizard", + "src", + "src/channels/plugins", + "src/channels" + ], + "shared_filenames": [ + "src/wizard/clack-prompter.test.ts", + "src/wizard/clack-prompter.ts", + "src/channels/plugins/setup-wizard.ts", + "src/channels/plugins/setup-wizard-helpers.ts" + ], + "summary": "3 open PRs share weighted file overlap around `src/wizard/clack-prompter.test.ts`, `src/wizard/clack-prompter.ts`, `src/channels/plugins/setup-wizard.ts`; representative PR #66882.", + "title": "Scope: fix(wizard): guard text-input prompts against undefined clack results" + }, + { + "authors": [ + "Magicray1217", + "nnish16", + "oliviareid-svg" + ], + "average_similarity": 0.684, + "cluster_id": "pr-scope-66928-3", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T05:22:12Z", + "outside_window_prs": [], + "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.415, - "left_pr_number": 64470, - "right_pr_number": 67939, + "content_similarity": 0.951, + "left_pr_number": 66986, + "right_pr_number": 69602, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/gateway/server-methods", + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser/chrome.ts" + "src/gateway/server-methods/skills.ts", + "src/gateway/server-methods/skills.update.normalizes-api-key.test.ts" ], - "similarity": 0.454, - "size_similarity": 0.091 + "similarity": 0.865, + "size_similarity": 0.328 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.34, - "left_pr_number": 64573, - "right_pr_number": 65324, + "content_similarity": 0.658, + "left_pr_number": 66928, + "right_pr_number": 66986, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/gateway/server-methods", + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser/chrome.ts" + "src/gateway/server-methods/skills.ts" ], - "similarity": 0.447, - "size_similarity": 0.394 + "similarity": 0.643, + "size_similarity": 0.383 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.269, - "left_pr_number": 64573, - "right_pr_number": 67748, + "content_similarity": 0.57, + "left_pr_number": 66928, + "right_pr_number": 69602, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/gateway/server-methods", + "src/gateway", + "src" ], - "shared_filenames": [], - "similarity": 0.446, - "size_similarity": 0.718 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.266, - "left_pr_number": 65324, - "right_pr_number": 67748, - "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "shared_filenames": [ + "src/gateway/server-methods/skills.ts" ], - "shared_filenames": [], - "similarity": 0.379, - "size_similarity": 0.282 - }, + "similarity": 0.543, + "size_similarity": 0.126 + } + ], + "pr_count": 3, + "pr_numbers": [ + 66928, + 66986, + 69602 + ], + "recent_pr_count": 3, + "recent_pr_numbers": [ + 66928, + 66986, + 69602 + ], + "representative_pr_number": 66986, + "representative_title": "fix: mask secrets in skills.update response", + "representative_url": "https://github.com/openclaw/openclaw/pull/66986", + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/skills.ts", + "src/gateway/server-methods/skills.update.normalizes-api-key.test.ts" + ], + "summary": "3 open PRs share weighted file overlap around `src/gateway/server-methods/skills.ts`, `src/gateway/server-methods/skills.update.normalizes-api-key.test.ts`; representative PR #66986.", + "title": "Scope: fix: mask secrets in skills.update response" + }, + { + "authors": [ + "OwenYWT", + "hyspacex", + "neeravmakwana" + ], + "average_similarity": 0.672, + "cluster_id": "pr-scope-69152-3", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T16:25:48Z", + "outside_window_prs": [], + "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.268, - "left_pr_number": 64470, - "right_pr_number": 67748, + "breadth_similarity": 0.83, + "concentration_similarity": 0.965, + "content_similarity": 0.803, + "left_pr_number": 69152, + "right_pr_number": 69222, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", + "extensions/ollama/src", + "docs/help", + "docs/providers", + "docs/tools", + "extensions/ollama", + "docs", "extensions" ], - "shared_filenames": [], - "similarity": 0.322, - "size_similarity": 0.062 + "shared_filenames": [ + "CHANGELOG.md", + "docs/help/faq.md", + "docs/providers/ollama.md", + "docs/tools/ollama-search.md", + "docs/tools/web.md", + "extensions/ollama/src/web-search-provider.test.ts", + "extensions/ollama/src/web-search-provider.ts", + "extensions/ollama/web-search-contract-api.ts" + ], + "similarity": 0.755, + "size_similarity": 0.408 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.238, - "left_pr_number": 65324, - "right_pr_number": 67939, + "breadth_similarity": 0.174, + "concentration_similarity": 0.788, + "content_similarity": 0.761, + "left_pr_number": 69152, + "right_pr_number": 69178, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", + "extensions/ollama/src", + "extensions/ollama", "extensions" ], "shared_filenames": [ - "extensions/browser/src/browser/chrome.ts" + "extensions/ollama/src/web-search-provider.test.ts", + "extensions/ollama/src/web-search-provider.ts" ], - "similarity": 0.295, - "size_similarity": 0.02 + "similarity": 0.657, + "size_similarity": 0.449 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.184, - "left_pr_number": 67748, - "right_pr_number": 67939, + "breadth_similarity": 0.163, + "concentration_similarity": 0.753, + "content_similarity": 0.749, + "left_pr_number": 69178, + "right_pr_number": 69222, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", + "extensions/ollama/src", + "extensions/ollama", "extensions" ], - "shared_filenames": [], - "similarity": 0.254, - "size_similarity": 0.006 + "shared_filenames": [ + "extensions/ollama/src/web-search-provider.test.ts", + "extensions/ollama/src/web-search-provider.ts" + ], + "similarity": 0.606, + "size_similarity": 0.183 } ], - "pr_count": 5, + "pr_count": 3, "pr_numbers": [ - 64470, - 64573, - 65324, - 67748, - 67939 + 69152, + 69178, + 69222 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 65324, - 67748, - 67939 + 69152, + 69178, + 69222 ], - "representative_pr_number": 64573, - "representative_title": "fix(browser): inject DISPLAY=:0 fallback when spawning Chrome on Linux", - "representative_url": "https://github.com/openclaw/openclaw/pull/64573", + "representative_pr_number": 69152, + "representative_title": "Ollama/web-search: route bundled provider at Ollama Cloud (#69132)", + "representative_url": "https://github.com/openclaw/openclaw/pull/69152", "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "extensions/ollama/src", + "extensions/ollama", + "extensions", + "docs/help", + "docs/providers", + "docs/tools", + "docs" ], "shared_filenames": [ - "extensions/browser/src/browser/chrome.ts" + "extensions/ollama/src/web-search-provider.test.ts", + "extensions/ollama/src/web-search-provider.ts", + "docs/tools/ollama-search.md", + "extensions/ollama/web-search-contract-api.ts", + "docs/tools/web.md", + "docs/providers/ollama.md", + "docs/help/faq.md", + "CHANGELOG.md" ], - "summary": "5 open PRs share weighted file overlap around `extensions/browser/src/browser/chrome.ts`; representative PR #64573.", - "title": "Scope: fix(browser): inject DISPLAY=:0 fallback when spawning Chrome on Linux" + "summary": "3 open PRs share weighted file overlap around `extensions/ollama/src/web-search-provider.test.ts`, `extensions/ollama/src/web-search-provider.ts`, `docs/tools/ollama-search.md`; representative PR #69152.", + "title": "Scope: Ollama/web-search: route bundled provider at Ollama Cloud (#69132)" }, { "authors": [ - "Tianworld", - "devsehyeon", - "stanleeyY" + "LightDriverCS", + "everySympathy", + "imadal1n" ], - "average_similarity": 0.399, - "cluster_id": "pr-scope-64734-5", + "average_similarity": 0.621, + "cluster_id": "pr-scope-68121-3", "kind": "pr_scope", - "last_activity_at": "2026-04-15T13:52:10Z", - "outside_window_prs": [ - { - "additions": 16, - "author": "hanamizuki", - "changed_files": 2, - "created_at": "2026-04-11T09:20:29Z", - "deletions": 7, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64734/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64734", - "merged": false, - "number": 64734, - "state": "open", - "title": "fix(discord): raise thread title timeout and tokens to fit reasoning models", - "updated_at": "2026-04-11T09:26:39Z" - }, - { - "additions": 11, - "author": "Yanhu007", - "changed_files": 1, - "created_at": "2026-04-11T15:17:30Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64863/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64863", - "merged": false, - "number": 64863, - "state": "open", - "title": "fix(discord): recognize voice messages as audio by filename extension", - "updated_at": "2026-04-11T15:18:39Z" - } - ], + "last_activity_at": "2026-04-19T01:42:32Z", + "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.75, + "breadth_similarity": 0.875, "concentration_similarity": 1.0, - "content_similarity": 0.722, - "left_pr_number": 64863, - "right_pr_number": 67215, + "content_similarity": 0.589, + "left_pr_number": 68334, + "right_pr_number": 68586, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/plugins", + "src" ], "shared_filenames": [ - "extensions/discord/src/monitor/message-utils.ts" + "src/plugins/memory-state.test.ts", + "src/plugins/memory-state.ts" ], - "similarity": 0.702, - "size_similarity": 0.478 + "similarity": 0.65, + "size_similarity": 0.667 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.187, - "left_pr_number": 64734, - "right_pr_number": 67215, + "content_similarity": 0.518, + "left_pr_number": 68121, + "right_pr_number": 68586, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/plugins", + "src" ], - "shared_filenames": [], - "similarity": 0.431, - "size_similarity": 1.0 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.2, - "left_pr_number": 64863, - "right_pr_number": 66005, - "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "shared_filenames": [ + "src/plugins/memory-state.test.ts", + "src/plugins/memory-state.ts" ], - "shared_filenames": [], - "similarity": 0.426, - "size_similarity": 0.909 + "similarity": 0.614, + "size_similarity": 0.845 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.18, - "left_pr_number": 64734, - "right_pr_number": 66059, + "content_similarity": 0.544, + "left_pr_number": 68121, + "right_pr_number": 68334, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/plugins", + "src" ], - "shared_filenames": [], - "similarity": 0.409, - "size_similarity": 0.885 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.177, - "left_pr_number": 66059, - "right_pr_number": 67215, - "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "shared_filenames": [ + "src/plugins/memory-state.test.ts", + "src/plugins/memory-state.ts" ], - "shared_filenames": [], - "similarity": 0.407, - "size_similarity": 0.885 - }, + "similarity": 0.599, + "size_similarity": 0.563 + } + ], + "pr_count": 3, + "pr_numbers": [ + 68121, + 68334, + 68586 + ], + "recent_pr_count": 3, + "recent_pr_numbers": [ + 68121, + 68334, + 68586 + ], + "representative_pr_number": 68586, + "representative_title": "fix(memory-core): resolve runtime artifacts before wiki bridge status", + "representative_url": "https://github.com/openclaw/openclaw/pull/68586", + "shared_directories": [ + "src/plugins", + "src" + ], + "shared_filenames": [ + "src/plugins/memory-state.test.ts", + "src/plugins/memory-state.ts" + ], + "summary": "3 open PRs share weighted file overlap around `src/plugins/memory-state.test.ts`, `src/plugins/memory-state.ts`; representative PR #68586.", + "title": "Scope: fix(memory-core): resolve runtime artifacts before wiki bridge status" + }, + { + "authors": [ + "Linux2010" + ], + "average_similarity": 0.554, + "cluster_id": "pr-scope-67958-3", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T15:34:21Z", + "outside_window_prs": [], + "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.191, - "left_pr_number": 64734, - "right_pr_number": 64863, + "breadth_similarity": 0.792, + "concentration_similarity": 0.765, + "content_similarity": 0.94, + "left_pr_number": 67958, + "right_pr_number": 68130, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "extensions/ollama/src", + "extensions/ollama", + "src/agents", + "extensions", + "src" ], - "shared_filenames": [], - "similarity": 0.331, - "size_similarity": 0.478 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.198, - "left_pr_number": 64734, - "right_pr_number": 66005, - "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "shared_filenames": [ + "extensions/ollama/index.test.ts", + "extensions/ollama/src/provider-models.ts", + "extensions/ollama/src/stream.ts", + "src/agents/model-auth-env-vars.test.ts", + "src/agents/model-auth-env-vars.ts" ], - "shared_filenames": [], - "similarity": 0.329, - "size_similarity": 0.435 + "similarity": 0.853, + "size_similarity": 0.52 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.195, - "left_pr_number": 66005, - "right_pr_number": 67215, + "breadth_similarity": 0.292, + "concentration_similarity": 0.57, + "content_similarity": 0.497, + "left_pr_number": 68010, + "right_pr_number": 68130, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.327, - "size_similarity": 0.435 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.182, - "left_pr_number": 64863, - "right_pr_number": 66059, - "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "shared_filenames": [ + "src/agents/model-auth-env-vars.test.ts", + "src/agents/model-auth-env-vars.ts" ], - "shared_filenames": [], - "similarity": 0.316, - "size_similarity": 0.423 + "similarity": 0.449, + "size_similarity": 0.29 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.188, - "left_pr_number": 66005, - "right_pr_number": 66059, + "breadth_similarity": 0.367, + "concentration_similarity": 0.805, + "content_similarity": 0.372, + "left_pr_number": 67958, + "right_pr_number": 68010, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.314, - "size_similarity": 0.385 + "shared_filenames": [ + "src/agents/model-auth-env-vars.test.ts", + "src/agents/model-auth-env-vars.ts" + ], + "similarity": 0.36, + "size_similarity": 0.151 } ], - "pr_count": 5, + "pr_count": 3, "pr_numbers": [ - 64734, - 64863, - 66005, - 66059, - 67215 + 67958, + 68010, + 68130 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 66005, - 66059, - 67215 + 67958, + 68010, + 68130 ], - "representative_pr_number": 67215, - "representative_title": "fix(discord): preserve embed URLs when message content is empty", - "representative_url": "https://github.com/openclaw/openclaw/pull/67215", + "representative_pr_number": 68130, + "representative_title": "fix: reduce log level for narrative session cleanup scope failures", + "representative_url": "https://github.com/openclaw/openclaw/pull/68130", "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", + "src/agents", + "src", + "extensions/ollama/src", + "extensions/ollama", "extensions" ], "shared_filenames": [ - "extensions/discord/src/monitor/message-utils.ts" + "src/agents/model-auth-env-vars.test.ts", + "src/agents/model-auth-env-vars.ts", + "extensions/ollama/index.test.ts", + "extensions/ollama/src/provider-models.ts", + "extensions/ollama/src/stream.ts" ], - "summary": "5 open PRs share weighted file overlap around `extensions/discord/src/monitor/message-utils.ts`; representative PR #67215.", - "title": "Scope: fix(discord): preserve embed URLs when message content is empty" + "summary": "3 open PRs share weighted file overlap around `src/agents/model-auth-env-vars.test.ts`, `src/agents/model-auth-env-vars.ts`, `extensions/ollama/index.test.ts`; representative PR #68130.", + "title": "Scope: fix: reduce log level for narrative session cleanup scope failures" }, { "authors": [ - "hxy91819", - "shaun0927", - "xinmotlanthua" + "mcaxtr" ], - "average_similarity": 0.364, - "cluster_id": "pr-scope-53511-5", + "average_similarity": 0.502, + "cluster_id": "pr-scope-67816-3", "kind": "pr_scope", - "last_activity_at": "2026-04-19T06:20:01Z", - "outside_window_prs": [ - { - "additions": 47, - "author": "hongsw", - "changed_files": 2, - "created_at": "2026-03-24T07:32:06Z", - "deletions": 13, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53511/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53511", - "merged": false, - "number": 53511, - "state": "open", - "title": "fix(talk): prevent double TTS playback when system voice times out", - "updated_at": "2026-03-24T20:15:30Z" - }, - { - "additions": 207, - "author": "hongsw", - "changed_files": 8, - "created_at": "2026-03-24T08:48:51Z", - "deletions": 16, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53553/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53553", - "merged": false, - "number": 53553, - "state": "open", - "title": "fix(talk): Talk Mode TTS improvements for CJK languages", - "updated_at": "2026-03-24T20:15:30Z" - } - ], + "last_activity_at": "2026-04-19T18:10:29Z", + "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.625, - "concentration_similarity": 0.698, - "content_similarity": 0.639, - "left_pr_number": 53511, - "right_pr_number": 53553, + "breadth_similarity": 0.746, + "concentration_similarity": 0.908, + "content_similarity": 0.862, + "left_pr_number": 67818, + "right_pr_number": 67820, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawKit", - "apps/macos/Sources/OpenClaw", - "apps/shared/OpenClawKit/Sources", - "apps/macos/Sources", - "apps/shared/OpenClawKit", - "apps/macos", - "apps/shared", - "apps" + "extensions/whatsapp/src", + "src/channels/plugins", + "src/gateway/server-methods", + "extensions/whatsapp", + "src/channels", + "src/gateway", + "extensions", + "src" ], "shared_filenames": [ - "apps/macos/Sources/OpenClaw/TalkModeRuntime.swift", - "apps/shared/OpenClawKit/Sources/OpenClawKit/TalkSystemSpeechSynthesizer.swift" + "extensions/whatsapp/login-qr-runtime.ts", + "extensions/whatsapp/src/agent-tools-login.test.ts", + "extensions/whatsapp/src/agent-tools-login.ts", + "extensions/whatsapp/src/channel.runtime.ts", + "extensions/whatsapp/src/channel.ts", + "extensions/whatsapp/src/login-qr.ts", + "src/channels/plugins/types.adapters.ts", + "src/gateway/server-methods/web.test.ts", + "src/gateway/server-methods/web.ts" ], - "similarity": 0.585, - "size_similarity": 0.269 + "similarity": 0.805, + "size_similarity": 0.548 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.866, - "content_similarity": 0.281, - "left_pr_number": 66321, - "right_pr_number": 68835, + "breadth_similarity": 0.8, + "concentration_similarity": 0.607, + "content_similarity": 0.242, + "left_pr_number": 67816, + "right_pr_number": 67820, "shared_directories": [ - "apps/macos/Sources/OpenClaw", - "apps/macos/Tests/OpenClawIPCTests", - "apps/macos/Sources", - "apps/macos/Tests", - "apps/macos", - "apps" - ], - "shared_filenames": [], - "similarity": 0.482, - "size_similarity": 0.95 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.991, - "content_similarity": 0.303, - "left_pr_number": 66321, - "right_pr_number": 68186, - "shared_directories": [ - "apps/macos/Sources/OpenClaw", - "apps/macos/Tests/OpenClawIPCTests", - "apps/macos/Sources", - "apps/macos/Tests", - "apps/macos", - "apps" - ], - "shared_filenames": [], - "similarity": 0.381, - "size_similarity": 0.465 - }, - { - "breadth_similarity": 0.625, - "concentration_similarity": 0.803, - "content_similarity": 0.222, - "left_pr_number": 53553, - "right_pr_number": 68835, - "shared_directories": [ - "apps/macos/Sources/OpenClaw", - "apps/macos/Sources", - "apps/macos", - "apps" - ], - "shared_filenames": [], - "similarity": 0.373, - "size_similarity": 0.767 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.875, - "content_similarity": 0.277, - "left_pr_number": 68186, - "right_pr_number": 68835, - "shared_directories": [ - "apps/macos/Sources/OpenClaw", - "apps/macos/Tests/OpenClawIPCTests", - "apps/macos/Sources", - "apps/macos/Tests", - "apps/macos", - "apps" - ], - "shared_filenames": [], - "similarity": 0.354, - "size_similarity": 0.442 - }, - { - "breadth_similarity": 0.625, - "concentration_similarity": 0.937, - "content_similarity": 0.17, - "left_pr_number": 53553, - "right_pr_number": 66321, - "shared_directories": [ - "apps/macos/Sources/OpenClaw", - "apps/macos/Sources", - "apps/macos", - "apps" - ], - "shared_filenames": [], - "similarity": 0.349, - "size_similarity": 0.807 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 0.895, - "content_similarity": 0.179, - "left_pr_number": 53511, - "right_pr_number": 68835, - "shared_directories": [ - "apps/macos/Sources/OpenClaw", - "apps/macos/Sources", - "apps/macos", - "apps" + "extensions/whatsapp/src", + "src/channels/plugins", + "extensions/whatsapp", + "src/channels", + "extensions", + "src" ], - "shared_filenames": [], - "similarity": 0.322, - "size_similarity": 0.351 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.928, - "content_similarity": 0.168, - "left_pr_number": 53553, - "right_pr_number": 68186, - "shared_directories": [ - "apps/macos/Sources/OpenClaw", - "apps/macos/Sources", - "apps/macos", - "apps" + "shared_filenames": [ + "extensions/whatsapp/src/channel.ts", + "extensions/whatsapp/src/status-issues.test.ts", + "extensions/whatsapp/src/status-issues.ts" ], - "shared_filenames": [], - "similarity": 0.301, - "size_similarity": 0.576 + "similarity": 0.403, + "size_similarity": 0.823 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.761, - "content_similarity": 0.139, - "left_pr_number": 53511, - "right_pr_number": 66321, + "breadth_similarity": 0.721, + "concentration_similarity": 0.515, + "content_similarity": 0.145, + "left_pr_number": 67816, + "right_pr_number": 67818, "shared_directories": [ - "apps/macos/Sources/OpenClaw", - "apps/macos/Sources", - "apps/macos", - "apps" + "extensions/whatsapp/src", + "src/channels/plugins", + "extensions/whatsapp", + "src/channels", + "extensions", + "src" ], - "shared_filenames": [], - "similarity": 0.286, - "size_similarity": 0.333 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.77, - "content_similarity": 0.138, - "left_pr_number": 53511, - "right_pr_number": 68186, - "shared_directories": [ - "apps/macos/Sources/OpenClaw", - "apps/macos/Sources", - "apps/macos", - "apps" + "shared_filenames": [ + "extensions/whatsapp/src/channel.ts" ], - "shared_filenames": [], - "similarity": 0.208, - "size_similarity": 0.155 + "similarity": 0.299, + "size_similarity": 0.665 } ], - "pr_count": 5, + "pr_count": 3, "pr_numbers": [ - 53511, - 53553, - 66321, - 68186, - 68835 + 67816, + 67818, + 67820 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 66321, - 68186, - 68835 + 67816, + 67818, + 67820 ], - "representative_pr_number": 53553, - "representative_title": "fix(talk): Talk Mode TTS improvements for CJK languages", - "representative_url": "https://github.com/openclaw/openclaw/pull/53553", + "representative_pr_number": 67820, + "representative_title": "fix(whatsapp): reuse active QR and preserve runtime warnings", + "representative_url": "https://github.com/openclaw/openclaw/pull/67820", "shared_directories": [ - "apps/macos/Sources/OpenClaw", - "apps/macos/Sources", - "apps/macos", - "apps", - "apps/macos/Tests/OpenClawIPCTests", - "apps/macos/Tests", - "apps/shared/OpenClawKit/Sources/OpenClawKit", - "apps/shared/OpenClawKit/Sources" + "extensions/whatsapp/src", + "src/channels/plugins", + "extensions/whatsapp", + "src/channels", + "extensions", + "src", + "src/gateway/server-methods", + "src/gateway" ], "shared_filenames": [ - "apps/shared/OpenClawKit/Sources/OpenClawKit/TalkSystemSpeechSynthesizer.swift", - "apps/macos/Sources/OpenClaw/TalkModeRuntime.swift" + "extensions/whatsapp/src/channel.ts", + "extensions/whatsapp/login-qr-runtime.ts", + "extensions/whatsapp/src/agent-tools-login.test.ts", + "extensions/whatsapp/src/agent-tools-login.ts", + "extensions/whatsapp/src/channel.runtime.ts", + "extensions/whatsapp/src/status-issues.test.ts", + "extensions/whatsapp/src/status-issues.ts", + "src/gateway/server-methods/web.test.ts" ], - "summary": "5 open PRs share weighted file overlap around `apps/shared/OpenClawKit/Sources/OpenClawKit/TalkSystemSpeechSynthesizer.swift`, `apps/macos/Sources/OpenClaw/TalkModeRuntime.swift`; representative PR #53553.", - "title": "Scope: fix(talk): Talk Mode TTS improvements for CJK languages" + "summary": "3 open PRs share weighted file overlap around `extensions/whatsapp/src/channel.ts`, `extensions/whatsapp/login-qr-runtime.ts`, `extensions/whatsapp/src/agent-tools-login.test.ts`; representative PR #67820.", + "title": "Scope: fix(whatsapp): reuse active QR and preserve runtime warnings" }, { "authors": [ "Kailigithub", "armorbreak001", - "tianhaocui" + "gaineyllc" ], - "average_similarity": 0.657, - "cluster_id": "pr-scope-53682-4", + "average_similarity": 0.448, + "cluster_id": "pr-scope-68711-3", "kind": "pr_scope", - "last_activity_at": "2026-04-19T07:11:18Z", - "outside_window_prs": [ - { - "additions": 2, - "author": "jarvisgebbie79-prog", - "changed_files": 1, - "created_at": "2026-03-24T12:53:35Z", - "deletions": 1, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53682/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53682", - "merged": false, - "number": 53682, - "state": "open", - "title": "fix: preserve approved heredoc commands on gateway exec", - "updated_at": "2026-03-24T20:15:29Z" - } - ], + "last_activity_at": "2026-04-19T01:05:18Z", + "outside_window_prs": [], "pairwise": [ - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.998, - "left_pr_number": 68754, - "right_pr_number": 68824, - "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/bash-tools.exec-host-gateway.ts" - ], - "similarity": 0.959, - "size_similarity": 0.733 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.875, - "left_pr_number": 68754, - "right_pr_number": 68854, - "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/bash-tools.exec-host-gateway.ts" - ], - "similarity": 0.87, - "size_similarity": 0.882 - }, { "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.88, - "left_pr_number": 68824, - "right_pr_number": 68854, - "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/bash-tools.exec-host-gateway.ts" - ], - "similarity": 0.838, - "size_similarity": 0.647 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.393, - "left_pr_number": 53682, - "right_pr_number": 68754, + "content_similarity": 0.546, + "left_pr_number": 68711, + "right_pr_number": 68749, "shared_directories": [ "src/agents", "src" ], "shared_filenames": [ - "src/agents/bash-tools.exec-host-gateway.ts" + "src/agents/openai-completions-compat.ts" ], - "similarity": 0.455, - "size_similarity": 0.2 + "similarity": 0.51, + "size_similarity": 0.021 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.375, - "left_pr_number": 53682, - "right_pr_number": 68824, + "breadth_similarity": 0.5, + "concentration_similarity": 0.8, + "content_similarity": 0.551, + "left_pr_number": 68711, + "right_pr_number": 68742, "shared_directories": [ "src/agents", "src" ], "shared_filenames": [ - "src/agents/bash-tools.exec-host-gateway.ts" + "src/agents/openai-completions-compat.test.ts", + "src/agents/openai-completions-compat.ts" ], - "similarity": 0.453, - "size_similarity": 0.273 + "similarity": 0.508, + "size_similarity": 0.213 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.309, - "left_pr_number": 53682, - "right_pr_number": 68854, + "breadth_similarity": 0.375, + "concentration_similarity": 0.8, + "content_similarity": 0.333, + "left_pr_number": 68742, + "right_pr_number": 68749, "shared_directories": [ "src/agents", "src" ], "shared_filenames": [ - "src/agents/bash-tools.exec-host-gateway.ts" + "src/agents/openai-completions-compat.ts" ], - "similarity": 0.367, - "size_similarity": 0.176 + "similarity": 0.326, + "size_similarity": 0.1 } ], - "pr_count": 4, + "pr_count": 3, "pr_numbers": [ - 53682, - 68754, - 68824, - 68854 + 68711, + 68742, + 68749 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 68754, - 68824, - 68854 + 68711, + 68742, + 68749 ], - "representative_pr_number": 68754, - "representative_title": "fix: remove unconditional heredoc approval in allowlist mode", - "representative_url": "https://github.com/openclaw/openclaw/pull/68754", + "representative_pr_number": 68711, + "representative_title": "fix(openai-completions): enable streaming usage for vLLM + local OpenAI-compat servers", + "representative_url": "https://github.com/openclaw/openclaw/pull/68711", "shared_directories": [ "src/agents", "src" ], "shared_filenames": [ - "src/agents/bash-tools.exec-host-gateway.ts" + "src/agents/openai-completions-compat.ts", + "src/agents/openai-completions-compat.test.ts" ], - "summary": "4 open PRs share weighted file overlap around `src/agents/bash-tools.exec-host-gateway.ts`; representative PR #68754.", - "title": "Scope: fix: remove unconditional heredoc approval in allowlist mode" + "summary": "3 open PRs share weighted file overlap around `src/agents/openai-completions-compat.ts`, `src/agents/openai-completions-compat.test.ts`; representative PR #68711.", + "title": "Scope: fix(openai-completions): enable streaming usage for vLLM + local OpenAI-compat servers" }, { "authors": [ - "SARAMALI15792", - "alexlomt", - "aryankinha" + "Eruditi", + "ImortalMask" ], - "average_similarity": 0.588, - "cluster_id": "pr-scope-53997-4", + "average_similarity": 0.433, + "cluster_id": "pr-scope-67103-3", "kind": "pr_scope", - "last_activity_at": "2026-04-19T06:43:41Z", - "outside_window_prs": [ - { - "additions": 1043, - "author": "god59081", - "changed_files": 5, - "created_at": "2026-03-24T21:53:10Z", - "deletions": 37, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53997/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53997", - "merged": false, - "number": 53997, - "state": "open", - "title": "acpx: add terminal-truth artifacts and strict terminal states", - "updated_at": "2026-03-24T23:46:44Z" - } - ], + "last_activity_at": "2026-04-21T15:23:27Z", + "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.2, - "concentration_similarity": 0.771, - "content_similarity": 0.804, - "left_pr_number": 66457, - "right_pr_number": 68741, + "breadth_similarity": 0.583, + "concentration_similarity": 0.995, + "content_similarity": 0.647, + "left_pr_number": 67103, + "right_pr_number": 69635, "shared_directories": [ - "extensions/acpx/src", - "extensions/acpx", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/acpx/src/runtime.test.ts", - "extensions/acpx/src/runtime.ts" + "ui/src/ui/markdown.test.ts", + "ui/src/ui/markdown.ts" ], - "similarity": 0.713, - "size_similarity": 0.607 + "similarity": 0.575, + "size_similarity": 0.091 }, { - "breadth_similarity": 0.31, - "concentration_similarity": 0.604, - "content_similarity": 0.703, - "left_pr_number": 68741, - "right_pr_number": 68834, + "breadth_similarity": 0.268, + "concentration_similarity": 0.6, + "content_similarity": 0.427, + "left_pr_number": 69635, + "right_pr_number": 69751, "shared_directories": [ - "extensions/acpx/src", - "extensions/acpx", - "extensions" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/acpx/src/runtime.test.ts", - "extensions/acpx/src/runtime.ts" + "ui/src/ui/markdown.test.ts", + "ui/src/ui/markdown.ts" ], - "similarity": 0.67, - "size_similarity": 0.779 + "similarity": 0.399, + "size_similarity": 0.286 }, { - "breadth_similarity": 0.65, - "concentration_similarity": 0.833, - "content_similarity": 0.573, - "left_pr_number": 66457, - "right_pr_number": 68834, + "breadth_similarity": 0.464, + "concentration_similarity": 0.605, + "content_similarity": 0.286, + "left_pr_number": 67103, + "right_pr_number": 69751, "shared_directories": [ - "extensions/acpx/src", - "extensions/acpx", - "extensions", - "src" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/acpx/src/runtime.test.ts", - "extensions/acpx/src/runtime.ts" + "ui/src/ui/markdown.test.ts", + "ui/src/ui/markdown.ts" ], - "similarity": 0.579, - "size_similarity": 0.473 - }, + "similarity": 0.324, + "size_similarity": 0.318 + } + ], + "pr_count": 3, + "pr_numbers": [ + 67103, + 69635, + 69751 + ], + "recent_pr_count": 3, + "recent_pr_numbers": [ + 67103, + 69635, + 69751 + ], + "representative_pr_number": 69635, + "representative_title": "fix(ui): preserve raw code text in code-block copy button", + "representative_url": "https://github.com/openclaw/openclaw/pull/69635", + "shared_directories": [ + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/markdown.test.ts", + "ui/src/ui/markdown.ts" + ], + "summary": "3 open PRs share weighted file overlap around `ui/src/ui/markdown.test.ts`, `ui/src/ui/markdown.ts`; representative PR #69635.", + "title": "Scope: fix(ui): preserve raw code text in code-block copy button" + }, + { + "authors": [ + "CYXCAT", + "MukundaKatta", + "nightq" + ], + "average_similarity": 0.37, + "cluster_id": "pr-scope-66727-3", + "kind": "pr_scope", + "last_activity_at": "2026-04-18T09:29:02Z", + "outside_window_prs": [], + "pairwise": [ { - "breadth_similarity": 0.367, - "concentration_similarity": 0.553, - "content_similarity": 0.634, - "left_pr_number": 53997, - "right_pr_number": 68741, + "breadth_similarity": 0.375, + "concentration_similarity": 0.667, + "content_similarity": 0.469, + "left_pr_number": 66754, + "right_pr_number": 67007, "shared_directories": [ - "extensions/acpx/src", - "extensions/acpx", - "extensions" + "src/terminal", + "src" ], "shared_filenames": [ - "extensions/acpx/src/runtime.test.ts", - "extensions/acpx/src/runtime.ts" + "src/terminal/links.test.ts" ], - "similarity": 0.551, - "size_similarity": 0.285 + "similarity": 0.412, + "size_similarity": 0.083 }, { - "breadth_similarity": 0.55, - "concentration_similarity": 0.782, - "content_similarity": 0.523, - "left_pr_number": 53997, - "right_pr_number": 66457, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.131, + "left_pr_number": 66727, + "right_pr_number": 66754, "shared_directories": [ - "extensions/acpx/src", - "extensions/acpx", - "extensions" - ], - "shared_filenames": [ - "extensions/acpx/src/runtime.test.ts", - "extensions/acpx/src/runtime.ts" + "src/terminal", + "src" ], - "similarity": 0.53, - "size_similarity": 0.469 + "shared_filenames": [], + "similarity": 0.354, + "size_similarity": 0.75 }, { - "breadth_similarity": 0.857, - "concentration_similarity": 0.949, - "content_similarity": 0.459, - "left_pr_number": 53997, - "right_pr_number": 68834, + "breadth_similarity": 0.375, + "concentration_similarity": 0.667, + "content_similarity": 0.366, + "left_pr_number": 66727, + "right_pr_number": 67007, "shared_directories": [ - "extensions/acpx/src", - "extensions/acpx", - "extensions" + "src/terminal", + "src" ], "shared_filenames": [ - "extensions/acpx/src/runtime.test.ts", - "extensions/acpx/src/runtime.ts" + "src/terminal/links.ts" ], - "similarity": 0.488, - "size_similarity": 0.222 + "similarity": 0.344, + "size_similarity": 0.111 } ], - "pr_count": 4, + "pr_count": 3, "pr_numbers": [ - 53997, - 66457, - 68741, - 68834 + 66727, + 66754, + 67007 ], "recent_pr_count": 3, "recent_pr_numbers": [ - 66457, - 68741, - 68834 + 66727, + 66754, + 67007 ], - "representative_pr_number": 68741, - "representative_title": "fix(acpx): avoid per-session MCP on openclaw bridge", - "representative_url": "https://github.com/openclaw/openclaw/pull/68741", + "representative_pr_number": 66754, + "representative_title": "fix(terminal): guard formatDocsLink against undefined path", + "representative_url": "https://github.com/openclaw/openclaw/pull/66754", "shared_directories": [ - "extensions/acpx/src", - "extensions/acpx", - "extensions", + "src/terminal", "src" ], "shared_filenames": [ - "extensions/acpx/src/runtime.ts", - "extensions/acpx/src/runtime.test.ts" + "src/terminal/links.ts", + "src/terminal/links.test.ts" ], - "summary": "4 open PRs share weighted file overlap around `extensions/acpx/src/runtime.ts`, `extensions/acpx/src/runtime.test.ts`; representative PR #68741.", - "title": "Scope: fix(acpx): avoid per-session MCP on openclaw bridge" + "summary": "3 open PRs share weighted file overlap around `src/terminal/links.ts`, `src/terminal/links.test.ts`; representative PR #66754.", + "title": "Scope: fix(terminal): guard formatDocsLink against undefined path" }, { "authors": [ - "avirweb", - "sahilsatralkar" + "iteemoo6", + "jarimustonen", + "wAnyBug-Com" ], - "average_similarity": 0.586, - "cluster_id": "pr-scope-64403-4", + "average_similarity": 0.355, + "cluster_id": "pr-scope-67554-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T18:44:33Z", - "outside_window_prs": [ + "last_activity_at": "2026-04-21T12:37:10Z", + "outside_window_prs": [], + "pairwise": [ { - "additions": 366, - "author": "ly85206559", - "changed_files": 5, - "created_at": "2026-04-10T16:30:53Z", - "deletions": 20, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64403/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64403", - "merged": false, - "number": 64403, - "state": "open", - "title": "fix(plugins): prefer CLI metadata for lazy primary commands", - "updated_at": "2026-04-17T15:04:12Z" + "breadth_similarity": 1.0, + "concentration_similarity": 0.816, + "content_similarity": 0.336, + "left_pr_number": 69637, + "right_pr_number": 69658, + "shared_directories": [ + "docs/reference/templates", + "docs/concepts", + "docs/gateway", + "docs/reference", + "docs" + ], + "shared_filenames": [ + "docs/concepts/agent-workspace.md", + "docs/gateway/heartbeat.md" + ], + "similarity": 0.439, + "size_similarity": 0.419 + }, + { + "breadth_similarity": 0.633, + "concentration_similarity": 0.865, + "content_similarity": 0.148, + "left_pr_number": 67554, + "right_pr_number": 69637, + "shared_directories": [ + "docs/reference/templates", + "docs/reference", + "docs" + ], + "shared_filenames": [], + "similarity": 0.351, + "size_similarity": 0.943 + }, + { + "breadth_similarity": 0.633, + "concentration_similarity": 0.681, + "content_similarity": 0.161, + "left_pr_number": 67554, + "right_pr_number": 69658, + "shared_directories": [ + "docs/reference/templates", + "docs/reference", + "docs" + ], + "shared_filenames": [], + "similarity": 0.277, + "size_similarity": 0.445 + } + ], + "pr_count": 3, + "pr_numbers": [ + 67554, + 69637, + 69658 + ], + "recent_pr_count": 3, + "recent_pr_numbers": [ + 67554, + 69637, + 69658 + ], + "representative_pr_number": 69637, + "representative_title": "docs: add PENDING.md workspace pattern for durable commitment tracking", + "representative_url": "https://github.com/openclaw/openclaw/pull/69637", + "shared_directories": [ + "docs/reference/templates", + "docs/reference", + "docs", + "docs/concepts", + "docs/gateway" + ], + "shared_filenames": [ + "docs/concepts/agent-workspace.md", + "docs/gateway/heartbeat.md" + ], + "summary": "3 open PRs share weighted file overlap around `docs/concepts/agent-workspace.md`, `docs/gateway/heartbeat.md`; representative PR #69637.", + "title": "Scope: docs: add PENDING.md workspace pattern for durable commitment tracking" + }, + { + "authors": [ + "Magicray1217", + "jpruit20" + ], + "average_similarity": 0.522, + "cluster_id": "pr-scope-37593-11", + "kind": "pr_scope", + "last_activity_at": "2026-04-19T16:54:36Z", + "outside_window_prs": [ + { + "additions": 33, + "author": "manusjs", + "changed_files": 2, + "created_at": "2026-03-06T10:01:09Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37593/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37593", + "merged": false, + "number": 37593, + "state": "open", + "title": "fix(tui): use case-insensitive session key comparison for chat events", + "updated_at": "2026-04-20T04:36:03Z" + }, + { + "additions": 51, + "author": "severecold", + "changed_files": 2, + "created_at": "2026-03-06T16:21:32Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38131/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38131", + "merged": false, + "number": 38131, + "state": "open", + "title": "fix tui missing live replies when session key is absent", + "updated_at": "2026-04-21T04:29:16Z" + }, + { + "additions": 361, + "author": "sahilsatralkar", + "changed_files": 5, + "created_at": "2026-04-07T16:50:21Z", + "deletions": 22, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/62602/files", + "html_url": "https://github.com/openclaw/openclaw/pull/62602", + "merged": false, + "number": 62602, + "state": "open", + "title": "fix:(tui) reset stale streaming state after event gaps", + "updated_at": "2026-04-21T08:33:22Z" + }, + { + "additions": 88, + "author": "bde1", + "changed_files": 3, + "created_at": "2026-04-11T14:50:02Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64842/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64842", + "merged": false, + "number": 64842, + "state": "open", + "title": "fix(tui): clear stale streaming status for completed unbound runs", + "updated_at": "2026-04-11T19:46:14Z" + }, + { + "additions": 6, + "author": "Yanhu007", + "changed_files": 1, + "created_at": "2026-04-11T15:17:19Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64862/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64862", + "merged": false, + "number": 64862, + "state": "open", + "title": "fix(tui): recover activity status when no runs are in flight", + "updated_at": "2026-04-11T15:21:23Z" + }, + { + "additions": 253, + "author": "joeyfrasier", + "changed_files": 3, + "created_at": "2026-04-13T19:49:43Z", + "deletions": 77, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66146/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66146", + "merged": false, + "number": 66146, + "state": "open", + "title": "fix(agents): forward model maxTokens as default stream option", + "updated_at": "2026-04-13T19:57:34Z" + }, + { + "additions": 99, + "author": "jason-zimmer", + "changed_files": 2, + "created_at": "2026-04-13T22:47:59Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66192/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66192", + "merged": false, + "number": 66192, + "state": "open", + "title": "fix(tui): reset activity after late terminal events", + "updated_at": "2026-04-14T21:36:34Z" + }, + { + "additions": 94, + "author": "zrt-ai-lab", + "changed_files": 3, + "created_at": "2026-04-14T02:47:26Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66289/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66289", + "merged": false, + "number": 66289, + "state": "open", + "title": "fix(tui): resolve streaming status stuck indefinitely after run completes", + "updated_at": "2026-04-14T03:55:46Z" + }, + { + "additions": 15, + "author": "g199209", + "changed_files": 2, + "created_at": "2026-04-14T07:33:12Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66400/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66400", + "merged": false, + "number": 66400, + "state": "open", + "title": "fix(tui): tool events dropped when arriving before chat delta", + "updated_at": "2026-04-14T07:44:42Z" } ], "pairwise": [ { - "breadth_similarity": 0.7, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.854, - "left_pr_number": 64403, - "right_pr_number": 67063, + "content_similarity": 0.941, + "left_pr_number": 64862, + "right_pr_number": 67302, "shared_directories": [ - "src/plugins", + "src/tui", "src" ], "shared_filenames": [ - "src/plugins/cli-registry-loader.ts", - "src/plugins/cli.test.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.772, - "size_similarity": 0.363 + "similarity": 0.884, + "size_similarity": 0.5 }, { - "breadth_similarity": 0.9, - "concentration_similarity": 1.0, - "content_similarity": 0.551, - "left_pr_number": 64403, - "right_pr_number": 68654, + "breadth_similarity": 0.55, + "concentration_similarity": 0.945, + "content_similarity": 0.744, + "left_pr_number": 62602, + "right_pr_number": 66146, "shared_directories": [ - "src/plugins", + "src/tui", "src" ], "shared_filenames": [ - "src/plugins/cli-registry-loader.ts", - "src/plugins/cli.test.ts", - "src/plugins/cli.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.607, - "size_similarity": 0.541 + "similarity": 0.752, + "size_similarity": 0.862 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.516, - "content_similarity": 0.56, - "left_pr_number": 67063, - "right_pr_number": 68242, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.681, + "left_pr_number": 66192, + "right_pr_number": 66289, "shared_directories": [ - "src/plugins", + "src/tui", "src" ], "shared_filenames": [ - "src/plugins/cli-registry-loader.ts", - "src/plugins/cli.test.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.562, - "size_similarity": 0.628 + "similarity": 0.749, + "size_similarity": 0.931 }, { - "breadth_similarity": 0.65, - "concentration_similarity": 0.516, - "content_similarity": 0.531, - "left_pr_number": 64403, - "right_pr_number": 68242, + "breadth_similarity": 0.7, + "concentration_similarity": 1.0, + "content_similarity": 0.837, + "left_pr_number": 62602, + "right_pr_number": 66192, "shared_directories": [ - "src/plugins", + "src/tui", "src" ], "shared_filenames": [ - "src/plugins/cli-registry-loader.ts", - "src/plugins/cli.test.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.549, - "size_similarity": 0.578 + "similarity": 0.745, + "size_similarity": 0.264 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.457, - "left_pr_number": 67063, - "right_pr_number": 68654, + "breadth_similarity": 0.583, + "concentration_similarity": 0.989, + "content_similarity": 0.617, + "left_pr_number": 64842, + "right_pr_number": 66192, "shared_directories": [ - "src/plugins", + "src/tui", "src" ], "shared_filenames": [ - "src/plugins/cli-registry-loader.ts", - "src/plugins/cli.test.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.546, - "size_similarity": 0.67 + "similarity": 0.674, + "size_similarity": 0.891 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.516, - "content_similarity": 0.339, - "left_pr_number": 68242, - "right_pr_number": 68654, + "breadth_similarity": 0.8, + "concentration_similarity": 1.0, + "content_similarity": 0.718, + "left_pr_number": 62602, + "right_pr_number": 66289, "shared_directories": [ - "src/plugins", + "src/tui", "src" ], "shared_filenames": [ - "src/plugins/cli-registry-loader.ts", - "src/plugins/cli.test.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts", + "src/tui/tui.ts" ], - "similarity": 0.479, - "size_similarity": 0.937 - } - ], - "pr_count": 4, - "pr_numbers": [ - 64403, - 67063, - 68242, - 68654 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 67063, - 68242, - 68654 - ], - "representative_pr_number": 64403, - "representative_title": "fix(plugins): prefer CLI metadata for lazy primary commands", - "representative_url": "https://github.com/openclaw/openclaw/pull/64403", - "shared_directories": [ - "src/plugins", - "src" - ], - "shared_filenames": [ - "src/plugins/cli-registry-loader.ts", - "src/plugins/cli.test.ts", - "src/plugins/cli.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/plugins/cli-registry-loader.ts`, `src/plugins/cli.test.ts`, `src/plugins/cli.ts`; representative PR #64403.", - "title": "Scope: fix(plugins): prefer CLI metadata for lazy primary commands" - }, - { - "authors": [ - "CharlesMcquade", - "GaosCode", - "neeravmakwana" - ], - "average_similarity": 0.557, - "cluster_id": "pr-scope-37409-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-14T03:33:14Z", - "outside_window_prs": [ - { - "additions": 89, - "author": "Pter61", - "changed_files": 21, - "created_at": "2026-03-06T07:25:10Z", - "deletions": 24, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37409/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37409", - "merged": false, - "number": 37409, - "state": "open", - "title": "OpenAI: complete GPT-5.4 support, thinking docs, and Codex 1M metadata", - "updated_at": "2026-04-19T04:32:58Z" - } - ], - "pairwise": [ + "similarity": 0.669, + "size_similarity": 0.245 + }, { "breadth_similarity": 0.583, - "concentration_similarity": 0.994, - "content_similarity": 0.725, - "left_pr_number": 66275, - "right_pr_number": 66305, + "concentration_similarity": 0.945, + "content_similarity": 0.721, + "left_pr_number": 66146, + "right_pr_number": 66192, "shared_directories": [ - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/model-catalog.test.ts", - "src/agents/model-catalog.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.76, - "size_similarity": 0.964 + "similarity": 0.657, + "size_similarity": 0.306 }, { "breadth_similarity": 0.583, - "concentration_similarity": 0.994, - "content_similarity": 0.771, - "left_pr_number": 66072, - "right_pr_number": 66275, + "concentration_similarity": 0.945, + "content_similarity": 0.765, + "left_pr_number": 37593, + "right_pr_number": 66146, "shared_directories": [ - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/model-catalog.test.ts", - "src/agents/model-catalog.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.738, - "size_similarity": 0.6 + "similarity": 0.656, + "size_similarity": 0.103 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.641, - "left_pr_number": 66072, - "right_pr_number": 66305, + "content_similarity": 0.651, + "left_pr_number": 64862, + "right_pr_number": 69026, "shared_directories": [ - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/model-catalog.test.ts", - "src/agents/model-catalog.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.685, - "size_similarity": 0.578 + "similarity": 0.648, + "size_similarity": 0.444 }, { - "breadth_similarity": 0.093, - "concentration_similarity": 0.513, - "content_similarity": 0.432, - "left_pr_number": 37409, - "right_pr_number": 66305, + "breadth_similarity": 0.75, + "concentration_similarity": 0.989, + "content_similarity": 0.536, + "left_pr_number": 64842, + "right_pr_number": 66289, "shared_directories": [ - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/model-catalog.test.ts", - "src/agents/model-catalog.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.439, - "size_similarity": 0.681 + "similarity": 0.643, + "size_similarity": 0.957 }, { - "breadth_similarity": 0.162, - "concentration_similarity": 0.52, - "content_similarity": 0.348, - "left_pr_number": 37409, - "right_pr_number": 66275, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.626, + "left_pr_number": 37593, + "right_pr_number": 66192, "shared_directories": [ - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/model-catalog.test.ts", - "src/agents/model-catalog.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.392, - "size_similarity": 0.706 + "similarity": 0.638, + "size_similarity": 0.337 }, { - "breadth_similarity": 0.093, - "concentration_similarity": 0.513, - "content_similarity": 0.24, - "left_pr_number": 37409, - "right_pr_number": 66072, + "breadth_similarity": 1.0, + "concentration_similarity": 0.957, + "content_similarity": 0.639, + "left_pr_number": 64842, + "right_pr_number": 66146, "shared_directories": [ - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/model-catalog.test.ts", - "src/agents/model-catalog.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.33, - "size_similarity": 0.85 - } - ], - "pr_count": 4, - "pr_numbers": [ - 37409, - 66072, - 66275, - 66305 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 66072, - 66275, - 66305 - ], - "representative_pr_number": 66275, - "representative_title": "fix(gateway): include configured custom provider models", - "representative_url": "https://github.com/openclaw/openclaw/pull/66275", - "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/model-catalog.test.ts", - "src/agents/model-catalog.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/agents/model-catalog.test.ts`, `src/agents/model-catalog.ts`; representative PR #66275.", - "title": "Scope: fix(gateway): include configured custom provider models" - }, - { - "authors": [ - "chrisabad", - "zqchris" - ], - "average_similarity": 0.525, - "cluster_id": "pr-scope-63696-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T02:41:46Z", - "outside_window_prs": [ - { - "additions": 105, - "author": "dashhuang", - "changed_files": 9, - "created_at": "2026-04-09T10:45:35Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63696/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63696", - "merged": false, - "number": 63696, - "state": "open", - "title": "fix(agents): suppress duplicate user persistence on fallback retries", - "updated_at": "2026-04-12T11:00:40Z" - } - ], - "pairwise": [ + "similarity": 0.636, + "size_similarity": 0.273 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.958, - "content_similarity": 0.991, - "left_pr_number": 67962, - "right_pr_number": 68048, + "breadth_similarity": 0.583, + "concentration_similarity": 0.989, + "content_similarity": 0.627, + "left_pr_number": 38131, + "right_pr_number": 64842, "shared_directories": [ - "src/agents/pi-embedded-runner", - "docs/.generated", - "src/agents", - "src/config", - "docs", + "src/tui", "src" ], "shared_filenames": [ - "docs/.generated/config-baseline.sha256", - "src/agents/pi-embedded-runner/tool-result-truncation.ts", - "src/agents/session-tool-result-guard-wrapper.ts", - "src/agents/session-tool-result-guard.test.ts", - "src/agents/session-tool-result-guard.ts", - "src/config/schema.base.generated.ts", - "src/config/schema.help.ts", - "src/config/schema.labels.ts", - "src/config/types.agent-defaults.ts", - "src/config/zod-schema.agent-runtime.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.974, - "size_similarity": 0.884 + "similarity": 0.635, + "size_similarity": 0.589 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.829, - "content_similarity": 0.513, - "left_pr_number": 68048, - "right_pr_number": 68372, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.54, + "left_pr_number": 37593, + "right_pr_number": 38131, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/tool-result-truncation.ts", - "src/agents/session-tool-result-guard.test.ts", - "src/agents/session-tool-result-guard.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.468, - "size_similarity": 0.153 + "similarity": 0.624, + "size_similarity": 0.642 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.787, - "content_similarity": 0.51, - "left_pr_number": 67962, - "right_pr_number": 68372, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.655, + "left_pr_number": 67302, + "right_pr_number": 69026, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/tool-result-truncation.ts", - "src/agents/session-tool-result-guard.test.ts", - "src/agents/session-tool-result-guard.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.467, - "size_similarity": 0.173 + "similarity": 0.617, + "size_similarity": 0.222 }, { - "breadth_similarity": 0.95, - "concentration_similarity": 0.624, - "content_similarity": 0.378, - "left_pr_number": 63696, - "right_pr_number": 67962, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.553, + "left_pr_number": 38131, + "right_pr_number": 66192, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/session-tool-result-guard-wrapper.ts", - "src/agents/session-tool-result-guard.test.ts", - "src/agents/session-tool-result-guard.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.441, - "size_similarity": 0.337 + "similarity": 0.616, + "size_similarity": 0.525 }, { - "breadth_similarity": 0.95, - "concentration_similarity": 0.666, - "content_similarity": 0.376, - "left_pr_number": 63696, - "right_pr_number": 68048, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.556, + "left_pr_number": 38131, + "right_pr_number": 66289, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/session-tool-result-guard-wrapper.ts", - "src/agents/session-tool-result-guard.test.ts", - "src/agents/session-tool-result-guard.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.436, - "size_similarity": 0.297 + "similarity": 0.607, + "size_similarity": 0.564 }, { - "breadth_similarity": 0.472, - "concentration_similarity": 0.837, - "content_similarity": 0.278, - "left_pr_number": 63696, - "right_pr_number": 68372, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.612, + "left_pr_number": 66192, + "right_pr_number": 69026, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/session-tool-result-guard.test.ts", - "src/agents/session-tool-result-guard.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.361, - "size_similarity": 0.514 - } - ], - "pr_count": 4, - "pr_numbers": [ - 63696, - 67962, - 68048, - 68372 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 67962, - 68048, - 68372 - ], - "representative_pr_number": 67962, - "representative_title": "feat(agents): add tool-result details persistence policy (full/truncated/none)", - "representative_url": "https://github.com/openclaw/openclaw/pull/67962", - "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src", - "docs/.generated", - "src/config", - "docs" - ], - "shared_filenames": [ - "src/agents/session-tool-result-guard.test.ts", - "src/agents/session-tool-result-guard.ts", - "src/agents/pi-embedded-runner/tool-result-truncation.ts", - "src/agents/session-tool-result-guard-wrapper.ts", - "docs/.generated/config-baseline.sha256", - "src/config/types.agent-defaults.ts", - "src/config/zod-schema.agent-runtime.ts", - "src/config/schema.labels.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/agents/session-tool-result-guard.test.ts`, `src/agents/session-tool-result-guard.ts`, `src/agents/pi-embedded-runner/tool-result-truncation.ts`; representative PR #67962.", - "title": "Scope: feat(agents): add tool-result details persistence policy (full/truncated/none)" - }, - { - "authors": [ - "alchip", - "sharkqwy" - ], - "average_similarity": 0.464, - "cluster_id": "pr-scope-63666-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T02:50:22Z", - "outside_window_prs": [ - { - "additions": 27, - "author": "alchip", - "changed_files": 1, - "created_at": "2026-04-09T09:39:38Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63666/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63666", - "merged": false, - "number": 63666, - "state": "open", - "title": "test(imessage): cover reflected assistant-content inbound drop", - "updated_at": "2026-04-14T07:35:11Z" - } - ], - "pairwise": [ + "similarity": 0.605, + "size_similarity": 0.178 + }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.69, - "content_similarity": 0.801, - "left_pr_number": 67910, - "right_pr_number": 67923, + "breadth_similarity": 0.75, + "concentration_similarity": 0.945, + "content_similarity": 0.624, + "left_pr_number": 66146, + "right_pr_number": 66289, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/tui", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/cli.runtime.ts", - "extensions/memory-core/src/cli.test.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.747, - "size_similarity": 0.621 + "similarity": 0.602, + "size_similarity": 0.285 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.516, - "content_similarity": 0.658, - "left_pr_number": 63666, - "right_pr_number": 67929, + "breadth_similarity": 0.7, + "concentration_similarity": 1.0, + "content_similarity": 0.667, + "left_pr_number": 62602, + "right_pr_number": 69026, "shared_directories": [ - "extensions/imessage/src/monitor", - "extensions/imessage/src", - "extensions/imessage", - "extensions" + "src/tui", + "src" ], "shared_filenames": [ - "extensions/imessage/src/monitor/inbound-processing.test.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.579, - "size_similarity": 0.422 + "similarity": 0.594, + "size_similarity": 0.047 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.69, - "content_similarity": 0.604, - "left_pr_number": 63666, - "right_pr_number": 67923, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.418, + "left_pr_number": 66400, + "right_pr_number": 69026, "shared_directories": [ - "extensions/imessage/src/monitor", - "extensions/imessage/src", - "extensions/imessage", - "extensions" + "src/tui", + "src" ], "shared_filenames": [ - "extensions/imessage/src/monitor/inbound-processing.test.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.545, - "size_similarity": 0.31 + "similarity": 0.593, + "size_similarity": 1.0 }, { - "breadth_similarity": 0.708, - "concentration_similarity": 0.826, - "content_similarity": 0.398, - "left_pr_number": 67923, - "right_pr_number": 67929, + "breadth_similarity": 0.583, + "concentration_similarity": 0.989, + "content_similarity": 0.606, + "left_pr_number": 37593, + "right_pr_number": 64842, "shared_directories": [ - "extensions/imessage/src/monitor", - "extensions/imessage/src", - "extensions/imessage", - "extensions" + "src/tui", + "src" ], "shared_filenames": [ - "extensions/imessage/src/monitor/inbound-processing.test.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.501, - "size_similarity": 0.736 + "similarity": 0.588, + "size_similarity": 0.378 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.014, - "left_pr_number": 63666, - "right_pr_number": 67910, + "content_similarity": 0.509, + "left_pr_number": 37593, + "right_pr_number": 69026, "shared_directories": [ - "extensions" + "src/tui", + "src" ], - "shared_filenames": [], - "similarity": 0.21, - "size_similarity": 0.5 + "shared_filenames": [ + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" + ], + "similarity": 0.586, + "size_similarity": 0.529 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.516, - "content_similarity": 0.009, - "left_pr_number": 67910, - "right_pr_number": 67929, + "breadth_similarity": 0.583, + "concentration_similarity": 0.945, + "content_similarity": 0.659, + "left_pr_number": 66146, + "right_pr_number": 69026, "shared_directories": [ - "extensions" + "src/tui", + "src" ], - "shared_filenames": [], - "similarity": 0.201, - "size_similarity": 0.844 - } - ], - "pr_count": 4, - "pr_numbers": [ - 63666, - 67910, - 67923, - 67929 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 67910, - 67923, - 67929 - ], - "representative_pr_number": 67923, - "representative_title": "fix(memory-core): show light-only dreaming state in memory status", - "representative_url": "https://github.com/openclaw/openclaw/pull/67923", - "shared_directories": [ - "extensions", - "extensions/imessage/src/monitor", - "extensions/imessage/src", - "extensions/imessage", - "extensions/memory-core/src", - "extensions/memory-core" - ], - "shared_filenames": [ - "extensions/imessage/src/monitor/inbound-processing.test.ts", - "extensions/memory-core/src/cli.runtime.ts", - "extensions/memory-core/src/cli.test.ts" - ], - "summary": "4 open PRs share weighted file overlap around `extensions/imessage/src/monitor/inbound-processing.test.ts`, `extensions/memory-core/src/cli.runtime.ts`, `extensions/memory-core/src/cli.test.ts`; representative PR #67923.", - "title": "Scope: fix(memory-core): show light-only dreaming state in memory status" - }, - { - "authors": [ - "Jimmy-xuzimo", - "jacko2bot" - ], - "average_similarity": 0.408, - "cluster_id": "pr-scope-65167-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T14:55:53Z", - "outside_window_prs": [ - { - "additions": 137, - "author": "w-sss", - "changed_files": 2, - "created_at": "2026-04-12T04:16:50Z", - "deletions": 2, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65167/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65167", - "merged": false, - "number": 65167, - "state": "open", - "title": "fix: dispatch plugin hooks (before_prompt_build, agent_end) in cli-runner", - "updated_at": "2026-04-12T09:37:12Z" - } - ], - "pairwise": [ + "shared_filenames": [ + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" + ], + "similarity": 0.575, + "size_similarity": 0.055 + }, { - "breadth_similarity": 0.708, - "concentration_similarity": 0.991, - "content_similarity": 0.555, - "left_pr_number": 67707, - "right_pr_number": 67708, + "breadth_similarity": 0.583, + "concentration_similarity": 0.945, + "content_similarity": 0.628, + "left_pr_number": 38131, + "right_pr_number": 66146, "shared_directories": [ - "src/agents", - "src/browser", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/cli-runner.ts", - "src/browser/chrome.executables.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.59, - "size_similarity": 0.545 + "similarity": 0.569, + "size_similarity": 0.161 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.564, - "content_similarity": 0.381, - "left_pr_number": 65167, - "right_pr_number": 67707, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.54, + "left_pr_number": 37593, + "right_pr_number": 66289, "shared_directories": [ - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/cli-runner.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.413, - "size_similarity": 0.396 + "similarity": 0.566, + "size_similarity": 0.362 }, { - "breadth_similarity": 0.236, - "concentration_similarity": 0.867, - "content_similarity": 0.457, - "left_pr_number": 65167, - "right_pr_number": 68388, + "breadth_similarity": 0.7, + "concentration_similarity": 1.0, + "content_similarity": 0.58, + "left_pr_number": 38131, + "right_pr_number": 62602, "shared_directories": [ - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/cli-runner.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.411, - "size_similarity": 0.164 + "similarity": 0.547, + "size_similarity": 0.138 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.554, - "content_similarity": 0.283, - "left_pr_number": 65167, - "right_pr_number": 67708, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.494, + "left_pr_number": 38131, + "right_pr_number": 69026, "shared_directories": [ - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/cli-runner.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.377, - "size_similarity": 0.727 + "similarity": 0.547, + "size_similarity": 0.34 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.697, - "content_similarity": 0.377, - "left_pr_number": 67707, - "right_pr_number": 68388, + "breadth_similarity": 0.55, + "concentration_similarity": 0.989, + "content_similarity": 0.574, + "left_pr_number": 62602, + "right_pr_number": 64842, "shared_directories": [ - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/cli-runner.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.35, - "size_similarity": 0.065 + "similarity": 0.542, + "size_similarity": 0.235 }, { - "breadth_similarity": 0.597, - "concentration_similarity": 0.687, - "content_similarity": 0.28, - "left_pr_number": 67708, - "right_pr_number": 68388, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.489, + "left_pr_number": 64862, + "right_pr_number": 66400, "shared_directories": [ - "src/agents", + "src/tui", "src" ], "shared_filenames": [ - "src/agents/cli-runner.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.308, - "size_similarity": 0.119 - } - ], - "pr_count": 4, - "pr_numbers": [ - 65167, - 67707, - 67708, - 68388 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 67707, - 67708, - 68388 - ], - "representative_pr_number": 67707, - "representative_title": "fix(browser): expand tilde in browser.executablePath (fixes #67264)", - "representative_url": "https://github.com/openclaw/openclaw/pull/67707", - "shared_directories": [ - "src/agents", - "src", - "src/browser" - ], - "shared_filenames": [ - "src/agents/cli-runner.ts", - "src/browser/chrome.executables.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/agents/cli-runner.ts`, `src/browser/chrome.executables.ts`; representative PR #67707.", - "title": "Scope: fix(browser): expand tilde in browser.executablePath (fixes #67264)" - }, - { - "authors": [ - "Lellansin", - "Nimraakram22", - "foxer0952" - ], - "average_similarity": 0.403, - "cluster_id": "pr-scope-36006-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T10:37:24Z", - "outside_window_prs": [ - { - "additions": 55, - "author": "jamalx31", - "changed_files": 7, - "created_at": "2026-03-05T11:27:21Z", - "deletions": 2, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36006/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36006", - "merged": false, - "number": 36006, - "state": "open", - "title": "feat: preserve custom fields on user messages in JSONL session transcripts", - "updated_at": "2026-04-17T04:31:48Z" - } - ], - "pairwise": [ + "similarity": 0.534, + "size_similarity": 0.444 + }, { - "breadth_similarity": 0.31, - "concentration_similarity": 0.74, - "content_similarity": 0.52, - "left_pr_number": 36006, - "right_pr_number": 68302, + "breadth_similarity": 0.7, + "concentration_similarity": 1.0, + "content_similarity": 0.554, + "left_pr_number": 37593, + "right_pr_number": 62602, "shared_directories": [ - "src/gateway", + "src/tui", "src" ], "shared_filenames": [ - "src/gateway/openai-http.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.553, - "size_similarity": 0.807 + "similarity": 0.521, + "size_similarity": 0.089 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.773, - "content_similarity": 0.382, - "left_pr_number": 66278, - "right_pr_number": 68435, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.482, + "left_pr_number": 66289, + "right_pr_number": 69026, "shared_directories": [ - "src/gateway", + "src/tui", "src" ], "shared_filenames": [ - "src/gateway/openai-http.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.444, - "size_similarity": 0.64 + "similarity": 0.499, + "size_similarity": 0.191 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 0.882, - "content_similarity": 0.396, - "left_pr_number": 68302, - "right_pr_number": 68435, + "breadth_similarity": 0.583, + "concentration_similarity": 0.989, + "content_similarity": 0.507, + "left_pr_number": 64842, + "right_pr_number": 69026, "shared_directories": [ - "src/gateway", + "src/tui", "src" ], "shared_filenames": [ - "src/gateway/openai-http.ts" + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.393, - "size_similarity": 0.034 + "similarity": 0.493, + "size_similarity": 0.2 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.891, - "content_similarity": 0.356, - "left_pr_number": 66278, - "right_pr_number": 68302, + "concentration_similarity": 1.0, + "content_similarity": 0.431, + "left_pr_number": 66400, + "right_pr_number": 67302, "shared_directories": [ - "src/gateway", + "src/tui", "src" ], "shared_filenames": [ - "src/gateway/openai-http.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.377, - "size_similarity": 0.054 + "similarity": 0.46, + "size_similarity": 0.222 }, { - "breadth_similarity": 0.595, - "concentration_similarity": 0.858, - "content_similarity": 0.332, - "left_pr_number": 36006, - "right_pr_number": 68435, + "breadth_similarity": 0.417, + "concentration_similarity": 0.945, + "content_similarity": 0.513, + "left_pr_number": 64862, + "right_pr_number": 66146, "shared_directories": [ - "src/gateway", + "src/tui", "src" ], "shared_filenames": [ - "src/gateway/openai-http.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.341, - "size_similarity": 0.043 + "similarity": 0.451, + "size_similarity": 0.024 }, { - "breadth_similarity": 0.226, - "concentration_similarity": 0.632, - "content_similarity": 0.354, - "left_pr_number": 36006, - "right_pr_number": 66278, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.429, + "left_pr_number": 38131, + "right_pr_number": 64862, "shared_directories": [ - "src/gateway", + "src/tui", "src" ], "shared_filenames": [ - "src/gateway/openai-http.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.312, - "size_similarity": 0.067 - } - ], - "pr_count": 4, - "pr_numbers": [ - 36006, - 66278, - 68302, - 68435 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 66278, - 68302, - 68435 - ], - "representative_pr_number": 68302, - "representative_title": "Fix/systemd restart exit null", - "representative_url": "https://github.com/openclaw/openclaw/pull/68302", - "shared_directories": [ - "src/gateway", - "src" - ], - "shared_filenames": [ - "src/gateway/openai-http.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/gateway/openai-http.ts`; representative PR #68302.", - "title": "Scope: Fix/systemd restart exit null" - }, - { - "authors": [ - "JeevaByte", - "Rohan5commit", - "VACInc" - ], - "average_similarity": 0.381, - "cluster_id": "pr-scope-64650-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T23:56:30Z", - "outside_window_prs": [ + "similarity": 0.448, + "size_similarity": 0.151 + }, { - "additions": 238, - "author": "chen-zhang-cs-code", - "changed_files": 11, - "created_at": "2026-04-11T05:01:08Z", - "deletions": 24, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64650/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64650", - "merged": false, - "number": 64650, - "state": "open", - "title": "fix(telegram): honor channel-level topic prompts in multi-account mode", - "updated_at": "2026-04-19T06:31:43Z" - } - ], - "pairwise": [ + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.341, + "left_pr_number": 38131, + "right_pr_number": 66400, + "shared_directories": [ + "src/tui", + "src" + ], + "shared_filenames": [ + "src/tui/tui-event-handlers.ts" + ], + "similarity": 0.44, + "size_similarity": 0.34 + }, { - "breadth_similarity": 0.864, - "concentration_similarity": 0.984, - "content_similarity": 0.348, - "left_pr_number": 64650, - "right_pr_number": 66247, + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.42, + "left_pr_number": 64862, + "right_pr_number": 66289, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/tui", + "src" ], "shared_filenames": [ - "extensions/telegram/src/bot.create-telegram-bot.test.ts", - "extensions/telegram/src/bot.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.486, - "size_similarity": 0.714 + "similarity": 0.423, + "size_similarity": 0.085 }, { - "breadth_similarity": 0.47, - "concentration_similarity": 0.989, - "content_similarity": 0.365, - "left_pr_number": 64650, - "right_pr_number": 66041, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.358, + "left_pr_number": 37593, + "right_pr_number": 64862, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/tui", + "src" ], "shared_filenames": [ - "extensions/telegram/src/bot-message-context.ts", - "extensions/telegram/src/bot.create-telegram-bot.test.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.373, - "size_similarity": 0.141 + "similarity": 0.411, + "size_similarity": 0.235 }, { - "breadth_similarity": 0.864, - "concentration_similarity": 0.933, - "content_similarity": 0.28, - "left_pr_number": 66247, - "right_pr_number": 68325, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.365, + "left_pr_number": 37593, + "right_pr_number": 67302, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions", + "src/tui", "src" ], "shared_filenames": [ - "extensions/telegram/src/bot.create-telegram-bot.test-harness.ts", - "extensions/telegram/src/bot.create-telegram-bot.test.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.362, - "size_similarity": 0.223 + "similarity": 0.398, + "size_similarity": 0.118 }, { - "breadth_similarity": 0.47, - "concentration_similarity": 0.905, - "content_similarity": 0.281, - "left_pr_number": 66041, - "right_pr_number": 68325, + "breadth_similarity": 0.583, + "concentration_similarity": 0.945, + "content_similarity": 0.403, + "left_pr_number": 66146, + "right_pr_number": 66400, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "docs", - "extensions" + "src/tui", + "src" ], "shared_filenames": [ - "extensions/telegram/src/bot.create-telegram-bot.test.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.356, - "size_similarity": 0.451 + "similarity": 0.396, + "size_similarity": 0.055 }, { - "breadth_similarity": 0.521, - "concentration_similarity": 0.973, - "content_similarity": 0.34, - "left_pr_number": 66041, - "right_pr_number": 66247, + "breadth_similarity": 0.417, + "concentration_similarity": 0.945, + "content_similarity": 0.434, + "left_pr_number": 66146, + "right_pr_number": 67302, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/tui", + "src" ], "shared_filenames": [ - "extensions/telegram/src/bot.create-telegram-bot.test.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.354, - "size_similarity": 0.101 + "similarity": 0.394, + "size_similarity": 0.012 }, { "breadth_similarity": 1.0, - "concentration_similarity": 0.916, - "content_similarity": 0.228, - "left_pr_number": 64650, - "right_pr_number": 68325, + "concentration_similarity": 1.0, + "content_similarity": 0.214, + "left_pr_number": 37593, + "right_pr_number": 66400, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/tui", + "src" ], "shared_filenames": [ - "extensions/telegram/src/bot.create-telegram-bot.test.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.353, - "size_similarity": 0.313 - } - ], - "pr_count": 4, - "pr_numbers": [ - 64650, - 66041, - 66247, - 68325 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 66041, - 66247, - 68325 - ], - "representative_pr_number": 64650, - "representative_title": "fix(telegram): honor channel-level topic prompts in multi-account mode", - "representative_url": "https://github.com/openclaw/openclaw/pull/64650", - "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions", - "docs", - "src" - ], - "shared_filenames": [ - "extensions/telegram/src/bot.create-telegram-bot.test.ts", - "extensions/telegram/src/bot-message-context.ts", - "extensions/telegram/src/bot.create-telegram-bot.test-harness.ts", - "extensions/telegram/src/bot.ts" - ], - "summary": "4 open PRs share weighted file overlap around `extensions/telegram/src/bot.create-telegram-bot.test.ts`, `extensions/telegram/src/bot-message-context.ts`, `extensions/telegram/src/bot.create-telegram-bot.test-harness.ts`; representative PR #64650.", - "title": "Scope: fix(telegram): honor channel-level topic prompts in multi-account mode" - }, - { - "authors": [ - "Rohan5commit", - "chen-zhang-cs-code", - "zexho994" - ], - "average_similarity": 0.364, - "cluster_id": "pr-scope-37170-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T07:20:46Z", - "outside_window_prs": [ - { - "additions": 138, - "author": "tommygeoco", - "changed_files": 2, - "created_at": "2026-03-06T04:16:47Z", - "deletions": 2, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37170/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37170", - "merged": false, - "number": 37170, - "state": "open", - "title": "CLI: return final cron entry for --expect-final", - "updated_at": "2026-04-19T04:31:42Z" - } - ], - "pairwise": [ + "similarity": 0.379, + "size_similarity": 0.529 + }, { - "breadth_similarity": 0.136, - "concentration_similarity": 0.691, + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, "content_similarity": 0.363, - "left_pr_number": 37170, - "right_pr_number": 67677, + "left_pr_number": 66289, + "right_pr_number": 67302, "shared_directories": [ - "src/cli/cron-cli", - "src/cli", + "src/tui", "src" ], "shared_filenames": [ - "src/cli/cron-cli.test.ts", - "src/cli/cron-cli/register.cron-simple.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.442, - "size_similarity": 0.933 + "similarity": 0.377, + "size_similarity": 0.043 }, { - "breadth_similarity": 0.7, - "concentration_similarity": 0.907, - "content_similarity": 0.312, - "left_pr_number": 37170, - "right_pr_number": 68858, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.325, + "left_pr_number": 64862, + "right_pr_number": 66192, "shared_directories": [ - "src/cli/cron-cli", - "src/cli", + "src/tui", "src" ], "shared_filenames": [ - "src/cli/cron-cli.test.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.438, - "size_similarity": 0.693 + "similarity": 0.364, + "size_similarity": 0.079 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.328, + "left_pr_number": 66192, + "right_pr_number": 67302, + "shared_directories": [ + "src/tui", + "src" + ], + "shared_filenames": [ + "src/tui/tui-event-handlers.ts" + ], + "similarity": 0.361, + "size_similarity": 0.04 + }, + { + "breadth_similarity": 0.6, + "concentration_similarity": 1.0, + "content_similarity": 0.35, + "left_pr_number": 62602, + "right_pr_number": 64862, + "shared_directories": [ + "src/tui", + "src" + ], + "shared_filenames": [ + "src/tui/tui-event-handlers.ts" + ], + "similarity": 0.358, + "size_similarity": 0.021 }, { "breadth_similarity": 0.417, - "concentration_similarity": 0.97, - "content_similarity": 0.273, - "left_pr_number": 66023, - "right_pr_number": 68858, + "concentration_similarity": 0.989, + "content_similarity": 0.353, + "left_pr_number": 64842, + "right_pr_number": 64862, "shared_directories": [ - "src/cli/cron-cli", - "src/cli", + "src/tui", "src" ], "shared_filenames": [ - "src/cli/cron-cli.test.ts", - "src/cli/cron-cli/register.cron-add.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.381, - "size_similarity": 0.66 + "similarity": 0.351, + "size_similarity": 0.089 }, { - "breadth_similarity": 0.513, - "concentration_similarity": 0.628, - "content_similarity": 0.185, - "left_pr_number": 66023, - "right_pr_number": 67677, + "breadth_similarity": 0.417, + "concentration_similarity": 0.989, + "content_similarity": 0.354, + "left_pr_number": 64842, + "right_pr_number": 67302, "shared_directories": [ - "src/gateway/protocol/schema", - "src/cli/cron-cli", - "src/cron/service", - "src/gateway/protocol", - "src/cli", - "src/cron", - "src/gateway", + "src/tui", "src" ], "shared_filenames": [ - "src/cli/cron-cli.test.ts", - "src/gateway/protocol/cron-validators.test.ts", - "src/gateway/protocol/schema/cron.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.359, - "size_similarity": 0.98 + "similarity": 0.346, + "size_similarity": 0.044 }, { - "breadth_similarity": 0.267, - "concentration_similarity": 0.937, - "content_similarity": 0.152, - "left_pr_number": 37170, - "right_pr_number": 66023, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.291, + "left_pr_number": 38131, + "right_pr_number": 67302, "shared_directories": [ - "src/cli/cron-cli", - "src/cli", + "src/tui", "src" ], "shared_filenames": [ - "src/cli/cron-cli.test.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.323, - "size_similarity": 0.952 + "similarity": 0.34, + "size_similarity": 0.075 }, { - "breadth_similarity": 0.215, - "concentration_similarity": 0.598, - "content_similarity": 0.131, - "left_pr_number": 67677, - "right_pr_number": 68858, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.253, + "left_pr_number": 66289, + "right_pr_number": 66400, "shared_directories": [ - "src/cli/cron-cli", - "src/cli", + "src/tui", "src" ], "shared_filenames": [ - "src/cli/cron-cli.test.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.24, - "size_similarity": 0.647 - } - ], - "pr_count": 4, - "pr_numbers": [ - 37170, - 66023, - 67677, - 68858 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 66023, - 67677, - 68858 - ], - "representative_pr_number": 37170, - "representative_title": "CLI: return final cron entry for --expect-final", - "representative_url": "https://github.com/openclaw/openclaw/pull/37170", - "shared_directories": [ - "src/cli/cron-cli", - "src/cli", - "src", - "src/gateway/protocol/schema", - "src/cron/service", - "src/gateway/protocol", - "src/cron", - "src/gateway" - ], - "shared_filenames": [ - "src/cli/cron-cli.test.ts", - "src/cli/cron-cli/register.cron-simple.ts", - "src/gateway/protocol/cron-validators.test.ts", - "src/cli/cron-cli/register.cron-add.ts", - "src/gateway/protocol/schema/cron.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/cli/cron-cli.test.ts`, `src/cli/cron-cli/register.cron-simple.ts`, `src/gateway/protocol/cron-validators.test.ts`; representative PR #37170.", - "title": "Scope: CLI: return final cron entry for --expect-final" - }, - { - "authors": [ - "Linux2010" - ], - "average_similarity": 0.955, - "cluster_id": "pr-scope-67958-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T13:54:02Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.339, + "size_similarity": 0.191 + }, { - "breadth_similarity": 0.9, - "concentration_similarity": 0.994, - "content_similarity": 0.994, - "left_pr_number": 67958, - "right_pr_number": 68010, + "breadth_similarity": 0.7, + "concentration_similarity": 1.0, + "content_similarity": 0.278, + "left_pr_number": 62602, + "right_pr_number": 66400, "shared_directories": [ - "extensions/ollama/src", - "extensions/ollama", - "src/agents", - "extensions", + "src/tui", "src" ], "shared_filenames": [ - "extensions/ollama/index.test.ts", - "extensions/ollama/src/stream.ts", - "src/agents/model-auth-env-vars.test.ts", - "src/agents/model-auth-env-vars.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.984, - "size_similarity": 0.99 + "similarity": 0.322, + "size_similarity": 0.047 }, { - "breadth_similarity": 0.792, - "concentration_similarity": 0.958, - "content_similarity": 0.973, - "left_pr_number": 67958, - "right_pr_number": 68130, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.204, + "left_pr_number": 66192, + "right_pr_number": 66400, "shared_directories": [ - "extensions/ollama/src", - "extensions/ollama", - "src/agents", - "extensions", + "src/tui", "src" ], "shared_filenames": [ - "extensions/ollama/index.test.ts", - "extensions/ollama/src/provider-models.ts", - "extensions/ollama/src/stream.ts", - "src/agents/model-auth-env-vars.test.ts", - "src/agents/model-auth-env-vars.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.948, - "size_similarity": 0.932 + "similarity": 0.319, + "size_similarity": 0.178 }, { - "breadth_similarity": 0.708, - "concentration_similarity": 0.952, - "content_similarity": 0.966, - "left_pr_number": 68010, - "right_pr_number": 68130, + "breadth_similarity": 0.6, + "concentration_similarity": 1.0, + "content_similarity": 0.293, + "left_pr_number": 62602, + "right_pr_number": 67302, "shared_directories": [ - "extensions/ollama/src", - "extensions/ollama", - "src/agents", - "extensions", + "src/tui", "src" ], "shared_filenames": [ - "extensions/ollama/index.test.ts", - "extensions/ollama/src/stream.ts", - "src/agents/model-auth-env-vars.test.ts", - "src/agents/model-auth-env-vars.ts" + "src/tui/tui-event-handlers.ts" ], - "similarity": 0.933, - "size_similarity": 0.923 + "similarity": 0.316, + "size_similarity": 0.01 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.989, + "content_similarity": 0.229, + "left_pr_number": 64842, + "right_pr_number": 66400, + "shared_directories": [ + "src/tui", + "src" + ], + "shared_filenames": [ + "src/tui/tui-event-handlers.ts" + ], + "similarity": 0.298, + "size_similarity": 0.2 } ], - "pr_count": 3, + "pr_count": 11, "pr_numbers": [ - 67958, - 68010, - 68130 + 37593, + 38131, + 62602, + 64842, + 64862, + 66146, + 66192, + 66289, + 66400, + 67302, + 69026 ], - "recent_pr_count": 3, + "recent_pr_count": 2, "recent_pr_numbers": [ - 67958, - 68010, - 68130 + 67302, + 69026 ], - "representative_pr_number": 67958, - "representative_title": "fix: omit think parameter for Ollama models without thinking support", - "representative_url": "https://github.com/openclaw/openclaw/pull/67958", + "representative_pr_number": 69026, + "representative_title": "fix(tui): raise streaming watchdog threshold to 120s and suppress false-positive warning", + "representative_url": "https://github.com/openclaw/openclaw/pull/69026", "shared_directories": [ - "extensions/ollama/src", - "extensions/ollama", - "src/agents", - "extensions", + "src/tui", "src" ], "shared_filenames": [ - "extensions/ollama/index.test.ts", - "src/agents/model-auth-env-vars.test.ts", - "src/agents/model-auth-env-vars.ts", - "extensions/ollama/src/stream.ts", - "extensions/ollama/src/provider-models.ts" + "src/tui/tui-event-handlers.ts", + "src/tui/tui-event-handlers.test.ts", + "src/tui/tui.ts" ], - "summary": "3 open PRs share weighted file overlap around `extensions/ollama/index.test.ts`, `src/agents/model-auth-env-vars.test.ts`, `src/agents/model-auth-env-vars.ts`; representative PR #67958.", - "title": "Scope: fix: omit think parameter for Ollama models without thinking support" + "summary": "11 open PRs share weighted file overlap around `src/tui/tui-event-handlers.ts`, `src/tui/tui-event-handlers.test.ts`, `src/tui/tui.ts`; representative PR #69026.", + "title": "Scope: fix(tui): raise streaming watchdog threshold to 120s and suppress false-positive warning" }, { "authors": [ - "sudie-codes" + "claytonlin1110", + "neilofneils404" ], - "average_similarity": 0.867, - "cluster_id": "pr-scope-66208-3", + "average_similarity": 0.443, + "cluster_id": "pr-scope-37418-7", "kind": "pr_scope", - "last_activity_at": "2026-04-13T23:30:52Z", - "outside_window_prs": [], - "pairwise": [ + "last_activity_at": "2026-04-20T18:32:23Z", + "outside_window_prs": [ { - "breadth_similarity": 0.879, - "concentration_similarity": 0.996, - "content_similarity": 0.904, - "left_pr_number": 66208, - "right_pr_number": 66209, + "additions": 167, + "author": "FuzzyFade", + "changed_files": 3, + "created_at": "2026-03-06T07:37:51Z", + "deletions": 29, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37418/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37418", + "merged": false, + "number": 37418, + "state": "open", + "title": "feat: enable prompt caching for custom providers using anthropic-mess\u2026", + "updated_at": "2026-04-19T04:33:02Z" + }, + { + "additions": 42, + "author": "samyzhh", + "changed_files": 1, + "created_at": "2026-03-24T01:01:35Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53266/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53266", + "merged": false, + "number": 53266, + "state": "open", + "title": "feat(openai): inject stream_options to enable usage tracking for comp\u2026", + "updated_at": "2026-03-24T20:15:32Z" + }, + { + "additions": 72, + "author": "stayrascal", + "changed_files": 4, + "created_at": "2026-03-24T13:43:31Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53717/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53717", + "merged": false, + "number": 53717, + "state": "open", + "title": "feat: support OpenAI Responses API for non-openai providers", + "updated_at": "2026-03-24T20:15:29Z" + }, + { + "additions": 118, + "author": "sasan1200", + "changed_files": 3, + "created_at": "2026-03-24T17:04:06Z", + "deletions": 9, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53819/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53819", + "merged": false, + "number": 53819, + "state": "open", + "title": "Agents: enable Codex parallel tool calls", + "updated_at": "2026-03-24T20:15:28Z" + }, + { + "additions": 29, + "author": "JanPlessow", + "changed_files": 1, + "created_at": "2026-04-11T13:03:55Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64813/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64813", + "merged": false, + "number": 64813, + "state": "open", + "title": "feat: pass `user` field through to API request body", + "updated_at": "2026-04-11T13:07:28Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.528, + "left_pr_number": 53266, + "right_pr_number": 64813, "shared_directories": [ - "extensions/m365/src", - "extensions/msteams/src", - "src/agents/tools", - "src/channels/plugins", - "docs/.generated", - "extensions/m365", - "extensions/msteams", - "scripts/lib", + "src/agents/pi-embedded-runner", "src/agents", - "src/channels" + "src" ], "shared_filenames": [ - ".github/labeler.yml", - "docs/.generated/plugin-sdk-api-baseline.sha256", - "extensions/m365/api.ts", - "extensions/m365/index.ts", - "extensions/m365/openclaw.plugin.json", - "extensions/m365/package.json", - "extensions/m365/runtime-api.ts", - "extensions/m365/src/approval-actions.test.ts", - "extensions/m365/src/approval-actions.ts", - "extensions/m365/src/config.test.ts" + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.883, - "size_similarity": 0.752 + "similarity": 0.624, + "size_similarity": 0.69 }, { - "breadth_similarity": 0.89, - "concentration_similarity": 0.897, - "content_similarity": 0.889, - "left_pr_number": 66209, - "right_pr_number": 66210, + "breadth_similarity": 0.875, + "concentration_similarity": 1.0, + "content_similarity": 0.557, + "left_pr_number": 53717, + "right_pr_number": 53819, "shared_directories": [ - "extensions/m365/src", - "extensions/msteams/src", - "src/agents/tools", - "src/channels/plugins", - "docs/.generated", - "extensions/m365", - "extensions/msteams", - "scripts/lib", + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", "src/agents", - "src/channels" + "src" ], "shared_filenames": [ - ".github/labeler.yml", - "docs/.generated/plugin-sdk-api-baseline.sha256", - "extensions/m365/api.ts", - "extensions/m365/index.ts", - "extensions/m365/openclaw.plugin.json", - "extensions/m365/package.json", - "extensions/m365/runtime-api.ts", - "extensions/m365/src/approval-actions.test.ts", - "extensions/m365/src/approval-actions.ts", - "extensions/m365/src/config.test.ts" + "src/agents/pi-embedded-runner-extraparams.test.ts", + "src/agents/pi-embedded-runner/extra-params.ts", + "src/agents/pi-embedded-runner/run/attempt.ts" ], - "similarity": 0.874, - "size_similarity": 0.788 + "similarity": 0.618, + "size_similarity": 0.606 }, { - "breadth_similarity": 0.934, - "concentration_similarity": 0.901, - "content_similarity": 0.802, - "left_pr_number": 66208, - "right_pr_number": 66210, + "breadth_similarity": 0.667, + "concentration_similarity": 0.796, + "content_similarity": 0.657, + "left_pr_number": 53819, + "right_pr_number": 67843, "shared_directories": [ - "extensions/m365/src", - "extensions/msteams/src", - "src/agents/tools", - "src/channels/plugins", - "docs/.generated", - "extensions/m365", - "extensions/msteams", - "scripts/lib", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner-extraparams.test.ts", + "src/agents/pi-embedded-runner/extra-params.ts" + ], + "similarity": 0.609, + "size_similarity": 0.283 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 0.944, + "content_similarity": 0.505, + "left_pr_number": 37418, + "right_pr_number": 53819, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", "src/agents", - "src/channels" + "src" ], "shared_filenames": [ - ".github/labeler.yml", - "docs/.generated/plugin-sdk-api-baseline.sha256", - "extensions/m365/api.ts", - "extensions/m365/index.ts", - "extensions/m365/openclaw.plugin.json", - "extensions/m365/package.json", - "extensions/m365/runtime-api.ts", - "extensions/m365/src/approval-actions.test.ts", - "extensions/m365/src/approval-actions.ts", - "extensions/m365/src/config.test.ts" + "src/agents/pi-embedded-runner-extraparams.test.ts", + "src/agents/pi-embedded-runner/extra-params.ts", + "src/agents/pi-embedded-runner/run/attempt.ts" ], - "similarity": 0.843, - "size_similarity": 0.955 - } - ], - "pr_count": 3, - "pr_numbers": [ - 66208, - 66209, - 66210 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 66208, - 66209, - 66210 - ], - "representative_pr_number": 66209, - "representative_title": "feat(m365): add Outlook triage approvals", - "representative_url": "https://github.com/openclaw/openclaw/pull/66209", - "shared_directories": [ - "extensions/m365/src", - "extensions/msteams/src", - "src/channels/plugins", - "src/agents/tools", - "extensions/m365", - "extensions/msteams", - "scripts/lib", - "src/channels" - ], - "shared_filenames": [ - "extensions/m365/api.ts", - "extensions/m365/index.ts", - "extensions/m365/openclaw.plugin.json", - "extensions/m365/package.json", - "extensions/m365/runtime-api.ts", - "extensions/m365/src/approval-actions.test.ts", - "extensions/m365/src/approval-actions.ts", - "extensions/m365/src/config.test.ts" - ], - "summary": "3 open PRs share weighted file overlap around `extensions/m365/api.ts`, `extensions/m365/index.ts`, `extensions/m365/openclaw.plugin.json`; representative PR #66209.", - "title": "Scope: feat(m365): add Outlook triage approvals" - }, - { - "authors": [ - "AstronautGumbo", - "skylee-01", - "vincentkoc" - ], - "average_similarity": 0.86, - "cluster_id": "pr-scope-66447-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T13:11:18Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.598, + "size_similarity": 0.648 + }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.995, - "content_similarity": 0.953, - "left_pr_number": 68072, - "right_pr_number": 68565, + "breadth_similarity": 0.875, + "concentration_similarity": 0.943, + "content_similarity": 0.501, + "left_pr_number": 37418, + "right_pr_number": 53717, "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/transport-message-transform.test.ts", - "src/agents/transport-message-transform.ts" + "src/agents/pi-embedded-runner-extraparams.test.ts", + "src/agents/pi-embedded-runner/extra-params.ts", + "src/agents/pi-embedded-runner/run/attempt.ts" ], - "similarity": 0.883, - "size_similarity": 0.716 + "similarity": 0.544, + "size_similarity": 0.393 }, { "breadth_similarity": 0.583, - "concentration_similarity": 0.991, - "content_similarity": 0.924, - "left_pr_number": 66447, - "right_pr_number": 68072, + "concentration_similarity": 0.796, + "content_similarity": 0.477, + "left_pr_number": 53717, + "right_pr_number": 67843, "shared_directories": [ + "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/transport-message-transform.test.ts", - "src/agents/transport-message-transform.ts" + "src/agents/pi-embedded-runner-extraparams.test.ts", + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.863, - "size_similarity": 0.725 + "similarity": 0.502, + "size_similarity": 0.468 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.996, - "content_similarity": 0.864, - "left_pr_number": 66447, - "right_pr_number": 68565, + "breadth_similarity": 0.5, + "concentration_similarity": 0.849, + "content_similarity": 0.444, + "left_pr_number": 37418, + "right_pr_number": 69342, "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "CHANGELOG.md", - "src/agents/transport-message-transform.test.ts", - "src/agents/transport-message-transform.ts" + "src/agents/pi-embedded-runner-extraparams.test.ts", + "src/agents/pi-embedded-runner/extra-params.ts", + "src/agents/pi-embedded-runner/run/attempt.ts" ], - "similarity": 0.833, - "size_similarity": 0.519 - } - ], - "pr_count": 3, - "pr_numbers": [ - 66447, - 68072, - 68565 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 66447, - 68072, - 68565 - ], - "representative_pr_number": 68072, - "representative_title": "fix(agents): normalize assistant content before transport iteration", - "representative_url": "https://github.com/openclaw/openclaw/pull/68072", - "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/transport-message-transform.test.ts", - "src/agents/transport-message-transform.ts", - "CHANGELOG.md" - ], - "summary": "3 open PRs share weighted file overlap around `src/agents/transport-message-transform.test.ts`, `src/agents/transport-message-transform.ts`, `CHANGELOG.md`; representative PR #68072.", - "title": "Scope: fix(agents): normalize assistant content before transport iteration" - }, - { - "authors": [ - "Bartok9", - "WuKongAI-CMU", - "zhouhe-xydt" - ], - "average_similarity": 0.822, - "cluster_id": "pr-scope-65778-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-14T18:20:54Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.501, + "size_similarity": 0.649 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.941, - "left_pr_number": 65778, - "right_pr_number": 65805, + "breadth_similarity": 0.5, + "concentration_similarity": 0.793, + "content_similarity": 0.486, + "left_pr_number": 53819, + "right_pr_number": 69342, "shared_directories": [ - "src/agents/command", + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/command/attempt-execution.helpers.ts", - "src/agents/command/attempt-execution.test.ts" + "src/agents/pi-embedded-runner-extraparams.test.ts", + "src/agents/pi-embedded-runner/extra-params.ts", + "src/agents/pi-embedded-runner/run/attempt.ts" ], - "similarity": 0.842, - "size_similarity": 0.222 + "similarity": 0.493, + "size_similarity": 0.421 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.923, - "content_similarity": 0.92, - "left_pr_number": 65805, - "right_pr_number": 66029, + "breadth_similarity": 0.667, + "concentration_similarity": 0.739, + "content_similarity": 0.483, + "left_pr_number": 37418, + "right_pr_number": 67843, "shared_directories": [ - "src/agents/command", + "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/command/attempt-execution.helpers.ts", - "src/agents/command/attempt-execution.test.ts" + "src/agents/pi-embedded-runner-extraparams.test.ts", + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.821, - "size_similarity": 0.481 + "similarity": 0.469, + "size_similarity": 0.184 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.923, - "content_similarity": 0.899, - "left_pr_number": 65778, - "right_pr_number": 66029, + "breadth_similarity": 0.333, + "concentration_similarity": 0.74, + "content_similarity": 0.442, + "left_pr_number": 53266, + "right_pr_number": 53819, "shared_directories": [ - "src/agents/command", + "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/command/attempt-execution.helpers.ts", - "src/agents/command/attempt-execution.test.ts" + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.803, - "size_similarity": 0.462 - } - ], - "pr_count": 3, - "pr_numbers": [ - 65778, - 65805, - 66029 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 65778, - 65805, - 66029 - ], - "representative_pr_number": 65805, - "representative_title": "fix(fallback): preserve original prompt in resolveFallbackRetryPrompt", - "representative_url": "https://github.com/openclaw/openclaw/pull/65805", - "shared_directories": [ - "src/agents/command", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/command/attempt-execution.helpers.ts", - "src/agents/command/attempt-execution.test.ts" - ], - "summary": "3 open PRs share weighted file overlap around `src/agents/command/attempt-execution.helpers.ts`, `src/agents/command/attempt-execution.test.ts`; representative PR #65805.", - "title": "Scope: fix(fallback): preserve original prompt in resolveFallbackRetryPrompt" - }, - { - "authors": [ - "LightDriverCS", - "everySympathy", - "imadal1n" - ], - "average_similarity": 0.621, - "cluster_id": "pr-scope-68121-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T01:42:32Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.429, + "size_similarity": 0.331 + }, { - "breadth_similarity": 0.875, - "concentration_similarity": 1.0, - "content_similarity": 0.586, - "left_pr_number": 68334, - "right_pr_number": 68586, + "breadth_similarity": 0.542, + "concentration_similarity": 0.793, + "content_similarity": 0.411, + "left_pr_number": 53717, + "right_pr_number": 69342, "shared_directories": [ - "src/plugins", + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", "src" ], "shared_filenames": [ - "src/plugins/memory-state.test.ts", - "src/plugins/memory-state.ts" + "src/agents/pi-embedded-runner-extraparams.test.ts", + "src/agents/pi-embedded-runner/extra-params.ts", + "src/agents/pi-embedded-runner/run/attempt.ts" ], - "similarity": 0.648, - "size_similarity": 0.667 + "similarity": 0.42, + "size_similarity": 0.255 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.522, - "left_pr_number": 68121, - "right_pr_number": 68586, + "breadth_similarity": 0.292, + "concentration_similarity": 0.74, + "content_similarity": 0.376, + "left_pr_number": 53717, + "right_pr_number": 64813, "shared_directories": [ - "src/plugins", + "src/agents/pi-embedded-runner", + "src/agents", "src" ], "shared_filenames": [ - "src/plugins/memory-state.test.ts", - "src/plugins/memory-state.ts" + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.617, - "size_similarity": 0.845 + "similarity": 0.386, + "size_similarity": 0.377 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.544, - "left_pr_number": 68121, - "right_pr_number": 68334, + "breadth_similarity": 0.292, + "concentration_similarity": 0.74, + "content_similarity": 0.325, + "left_pr_number": 53266, + "right_pr_number": 53717, "shared_directories": [ - "src/plugins", + "src/agents/pi-embedded-runner", + "src/agents", "src" ], "shared_filenames": [ - "src/plugins/memory-state.test.ts", - "src/plugins/memory-state.ts" + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.598, - "size_similarity": 0.563 - } - ], - "pr_count": 3, - "pr_numbers": [ - 68121, - 68334, - 68586 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 68121, - 68334, - 68586 - ], - "representative_pr_number": 68586, - "representative_title": "fix(memory-core): resolve runtime artifacts before wiki bridge status", - "representative_url": "https://github.com/openclaw/openclaw/pull/68586", - "shared_directories": [ - "src/plugins", - "src" - ], - "shared_filenames": [ - "src/plugins/memory-state.test.ts", - "src/plugins/memory-state.ts" - ], - "summary": "3 open PRs share weighted file overlap around `src/plugins/memory-state.test.ts`, `src/plugins/memory-state.ts`; representative PR #68586.", - "title": "Scope: fix(memory-core): resolve runtime artifacts before wiki bridge status" - }, - { - "authors": [ - "yfge" - ], - "average_similarity": 0.581, - "cluster_id": "pr-scope-66511-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T08:17:37Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.375, + "size_similarity": 0.545 + }, { - "breadth_similarity": 0.933, - "concentration_similarity": 0.912, - "content_similarity": 0.614, - "left_pr_number": 66552, - "right_pr_number": 68465, + "breadth_similarity": 0.167, + "concentration_similarity": 0.533, + "content_similarity": 0.434, + "left_pr_number": 53266, + "right_pr_number": 69342, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "extensions/ollama/src", "src/agents/pi-embedded-runner", - "extensions/ollama", "src/agents", - "src/config", - "extensions", - "memory", "src" ], "shared_filenames": [ - "HEARTBEAT.md", - "SOUL.md", - "TOOLS.md", - "extensions/ollama/src/stream-runtime.test.ts", - "extensions/ollama/src/stream.ts", - "src/agents/pi-embedded-runner/run/incomplete-turn.ts", - "src/config/plugin-auto-enable.channels.test.ts", - "src/config/plugin-auto-enable.prefer-over.ts" + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.699, - "size_similarity": 0.868 + "similarity": 0.368, + "size_similarity": 0.139 }, { - "breadth_similarity": 0.31, - "concentration_similarity": 0.664, - "content_similarity": 0.688, - "left_pr_number": 66511, - "right_pr_number": 68465, + "breadth_similarity": 0.333, + "concentration_similarity": 0.74, + "content_similarity": 0.375, + "left_pr_number": 53819, + "right_pr_number": 64813, "shared_directories": [ - "extensions/ollama/src", - "extensions/ollama", - "src/config", - "extensions", + "src/agents/pi-embedded-runner", + "src/agents", "src" ], "shared_filenames": [ - "extensions/ollama/src/stream-runtime.test.ts", - "extensions/ollama/src/stream.ts", - "src/config/plugin-auto-enable.channels.test.ts", - "src/config/plugin-auto-enable.prefer-over.ts", - "src/config/plugin-auto-enable.shared.ts" + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.596, - "size_similarity": 0.335 + "similarity": 0.367, + "size_similarity": 0.228 }, { - "breadth_similarity": 0.335, - "concentration_similarity": 0.576, - "content_similarity": 0.466, - "left_pr_number": 66511, - "right_pr_number": 66552, + "breadth_similarity": 0.333, + "concentration_similarity": 0.589, + "content_similarity": 0.402, + "left_pr_number": 67843, + "right_pr_number": 69342, "shared_directories": [ - "extensions/ollama/src", - "extensions/ollama", - "src/config", - "extensions", + "src/agents/pi-embedded-runner", + "src/agents", "src" ], "shared_filenames": [ - "extensions/ollama/src/stream-runtime.test.ts", - "extensions/ollama/src/stream.ts", - "src/config/plugin-auto-enable.channels.test.ts", - "src/config/plugin-auto-enable.prefer-over.ts" + "src/agents/pi-embedded-runner-extraparams.test.ts", + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.446, - "size_similarity": 0.386 - } - ], - "pr_count": 3, - "pr_numbers": [ - 66511, - 66552, - 68465 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 66511, - 66552, - 68465 - ], - "representative_pr_number": 68465, - "representative_title": "fix(whatsapp): support silentErrorReplies parity", - "representative_url": "https://github.com/openclaw/openclaw/pull/68465", - "shared_directories": [ - "extensions/ollama/src", - "extensions/ollama", - "src/config", - "extensions", - "src", - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents" - ], - "shared_filenames": [ - "extensions/ollama/src/stream-runtime.test.ts", - "src/config/plugin-auto-enable.channels.test.ts", - "src/config/plugin-auto-enable.prefer-over.ts", - "extensions/ollama/src/stream.ts", - "HEARTBEAT.md", - "SOUL.md", - "TOOLS.md", - "src/config/plugin-auto-enable.shared.ts" - ], - "summary": "3 open PRs share weighted file overlap around `extensions/ollama/src/stream-runtime.test.ts`, `src/config/plugin-auto-enable.channels.test.ts`, `src/config/plugin-auto-enable.prefer-over.ts`; representative PR #68465.", - "title": "Scope: fix(whatsapp): support silentErrorReplies parity" - }, - { - "authors": [ - "nightq", - "shaun0927", - "steipete" - ], - "average_similarity": 0.538, - "cluster_id": "pr-scope-65841-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T10:55:56Z", - "outside_window_prs": [], - "pairwise": [ - { - "breadth_similarity": 0.875, - "concentration_similarity": 0.805, - "content_similarity": 0.707, - "left_pr_number": 67660, - "right_pr_number": 68077, - "shared_directories": [ - "extensions/msteams/src", - "extensions/msteams", - "extensions" - ], - "shared_filenames": [ - "extensions/msteams/src/setup-surface.test.ts", - "extensions/msteams/src/setup-surface.ts" - ], - "similarity": 0.67, - "size_similarity": 0.32 + "similarity": 0.362, + "size_similarity": 0.119 }, { - "breadth_similarity": 0.65, - "concentration_similarity": 0.751, - "content_similarity": 0.451, - "left_pr_number": 65841, - "right_pr_number": 67660, + "breadth_similarity": 0.333, + "concentration_similarity": 0.684, + "content_similarity": 0.358, + "left_pr_number": 37418, + "right_pr_number": 64813, "shared_directories": [ - "extensions/msteams/src", - "extensions/msteams", - "extensions" + "src/agents/pi-embedded-runner", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/msteams/src/setup-surface.test.ts", - "extensions/msteams/src/setup-surface.ts" + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.489, - "size_similarity": 0.469 + "similarity": 0.341, + "size_similarity": 0.148 }, { - "breadth_similarity": 0.7, - "concentration_similarity": 0.946, - "content_similarity": 0.45, - "left_pr_number": 65841, - "right_pr_number": 68077, + "breadth_similarity": 0.5, + "concentration_similarity": 0.944, + "content_similarity": 0.152, + "left_pr_number": 53266, + "right_pr_number": 67843, "shared_directories": [ - "extensions/msteams/src", - "extensions/msteams", - "extensions" + "src/agents/pi-embedded-runner", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/msteams/src/setup-surface.test.ts", - "extensions/msteams/src/setup-surface.ts" + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.455, - "size_similarity": 0.15 - } - ], - "pr_count": 3, - "pr_numbers": [ - 65841, - 67660, - 68077 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 65841, - 67660, - 68077 - ], - "representative_pr_number": 67660, - "representative_title": "fix(msteams): use explorer.exe for delegated OAuth on win32", - "representative_url": "https://github.com/openclaw/openclaw/pull/67660", - "shared_directories": [ - "extensions/msteams/src", - "extensions/msteams", - "extensions" - ], - "shared_filenames": [ - "extensions/msteams/src/setup-surface.test.ts", - "extensions/msteams/src/setup-surface.ts" - ], - "summary": "3 open PRs share weighted file overlap around `extensions/msteams/src/setup-surface.test.ts`, `extensions/msteams/src/setup-surface.ts`; representative PR #67660.", - "title": "Scope: fix(msteams): use explorer.exe for delegated OAuth on win32" - }, - { - "authors": [ - "Rohan5commit", - "WuKongAI-CMU", - "xinmotlanthua" - ], - "average_similarity": 0.533, - "cluster_id": "pr-scope-66054-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-14T04:10:45Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.332, + "size_similarity": 0.857 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.989, - "left_pr_number": 66054, - "right_pr_number": 66310, + "breadth_similarity": 0.333, + "concentration_similarity": 0.684, + "content_similarity": 0.324, + "left_pr_number": 37418, + "right_pr_number": 53266, "shared_directories": [ - "src/cron/service", - "src/cron", + "src/agents/pi-embedded-runner", + "src/agents", "src" ], "shared_filenames": [ - "src/cron/service/ops.ts" + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.893, - "size_similarity": 0.333 + "similarity": 0.326, + "size_similarity": 0.214 }, { "breadth_similarity": 0.5, - "concentration_similarity": 0.923, - "content_similarity": 0.337, - "left_pr_number": 66054, - "right_pr_number": 66063, + "concentration_similarity": 0.944, + "content_similarity": 0.144, + "left_pr_number": 64813, + "right_pr_number": 67843, "shared_directories": [ - "src/cron/service", - "src/cron", + "src/agents/pi-embedded-runner", + "src/agents", "src" ], "shared_filenames": [ - "src/cron/service/ops.ts" + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.367, - "size_similarity": 0.231 + "similarity": 0.319, + "size_similarity": 0.806 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.923, - "content_similarity": 0.333, - "left_pr_number": 66063, - "right_pr_number": 66310, + "breadth_similarity": 0.167, + "concentration_similarity": 0.533, + "content_similarity": 0.369, + "left_pr_number": 64813, + "right_pr_number": 69342, "shared_directories": [ - "src/cron/service", - "src/cron", + "src/agents/pi-embedded-runner", + "src/agents", "src" ], "shared_filenames": [ - "src/cron/service/ops.ts" + "src/agents/pi-embedded-runner/extra-params.ts" ], - "similarity": 0.341, - "size_similarity": 0.077 + "similarity": 0.316, + "size_similarity": 0.096 } ], - "pr_count": 3, + "pr_count": 7, "pr_numbers": [ - 66054, - 66063, - 66310 + 37418, + 53266, + 53717, + 53819, + 64813, + 67843, + 69342 ], - "recent_pr_count": 3, + "recent_pr_count": 2, "recent_pr_numbers": [ - 66054, - 66063, - 66310 + 67843, + 69342 ], - "representative_pr_number": 66054, - "representative_title": "fix(cron): guard against missing job.state in start() (#66016)", - "representative_url": "https://github.com/openclaw/openclaw/pull/66054", + "representative_pr_number": 53819, + "representative_title": "Agents: enable Codex parallel tool calls", + "representative_url": "https://github.com/openclaw/openclaw/pull/53819", "shared_directories": [ - "src/cron/service", - "src/cron", - "src" + "src/agents/pi-embedded-runner", + "src/agents", + "src", + "src/agents/pi-embedded-runner/run" ], "shared_filenames": [ - "src/cron/service/ops.ts" + "src/agents/pi-embedded-runner/extra-params.ts", + "src/agents/pi-embedded-runner-extraparams.test.ts", + "src/agents/pi-embedded-runner/run/attempt.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/cron/service/ops.ts`; representative PR #66054.", - "title": "Scope: fix(cron): guard against missing job.state in start() (#66016)" + "summary": "7 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/extra-params.ts`, `src/agents/pi-embedded-runner-extraparams.test.ts`, `src/agents/pi-embedded-runner/run/attempt.ts`; representative PR #53819.", + "title": "Scope: Agents: enable Codex parallel tool calls" }, { "authors": [ - "0riginal-claw", - "Schnitzel", - "hansolo949" + "KimHyeongRae0", + "isopenclaw" ], - "average_similarity": 0.516, - "cluster_id": "pr-scope-66271-3", + "average_similarity": 0.44, + "cluster_id": "pr-scope-60428-7", "kind": "pr_scope", - "last_activity_at": "2026-04-18T18:26:44Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-21T10:11:47Z", + "outside_window_prs": [ + { + "additions": 25, + "author": "Thom-320", + "changed_files": 2, + "created_at": "2026-04-03T16:52:27Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/60428/files", + "html_url": "https://github.com/openclaw/openclaw/pull/60428", + "merged": false, + "number": 60428, + "state": "open", + "title": "fix(tasks): clamp createdAt when startedAt is already known", + "updated_at": "2026-04-17T21:23:42Z" + }, + { + "additions": 397, + "author": "richardclawbot", + "changed_files": 12, + "created_at": "2026-04-10T17:07:12Z", + "deletions": 14, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64416/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64416", + "merged": false, + "number": 64416, + "state": "open", + "title": "fix(acp): normalize completion delivery guidance", + "updated_at": "2026-04-11T06:50:44Z" + }, + { + "additions": 327, + "author": "neofdezf-cloud", + "changed_files": 7, + "created_at": "2026-04-11T17:14:48Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64934/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64934", + "merged": false, + "number": 64934, + "state": "open", + "title": "feat(tasks): add intermediate active task states", + "updated_at": "2026-04-11T17:48:52Z" + }, + { + "additions": 323, + "author": "richardclawbot", + "changed_files": 4, + "created_at": "2026-04-11T21:19:41Z", + "deletions": 23, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65013/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65013", + "merged": false, + "number": 65013, + "state": "open", + "title": "fix(tasks): silence acp child-session completion banners", + "updated_at": "2026-04-12T03:04:11Z" + }, + { + "additions": 938, + "author": "richardclawbot", + "changed_files": 12, + "created_at": "2026-04-12T07:52:20Z", + "deletions": 35, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65242/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65242", + "merged": false, + "number": 65242, + "state": "open", + "title": "fix: CompletionDeliveryGate to prevent duplicate ACP completion delivery", + "updated_at": "2026-04-12T11:51:58Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.7, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.683, - "left_pr_number": 66271, - "right_pr_number": 67037, + "content_similarity": 0.906, + "left_pr_number": 60428, + "right_pr_number": 69356, "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui" + "src/tasks", + "src" ], "shared_filenames": [ - "ui/src/ui/app-gateway.sessions.node.test.ts", - "ui/src/ui/app-gateway.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.636, - "size_similarity": 0.253 + "similarity": 0.838, + "size_similarity": 0.356 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.778, - "content_similarity": 0.598, - "left_pr_number": 66271, - "right_pr_number": 66485, + "breadth_similarity": 0.786, + "concentration_similarity": 1.0, + "content_similarity": 0.425, + "left_pr_number": 64934, + "right_pr_number": 65013, "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui" + "src/tasks", + "src" ], "shared_filenames": [ - "ui/src/ui/app-gateway.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.567, - "size_similarity": 0.229 + "similarity": 0.571, + "size_similarity": 0.962 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.778, - "content_similarity": 0.362, - "left_pr_number": 66485, - "right_pr_number": 67037, + "breadth_similarity": 0.417, + "concentration_similarity": 0.588, + "content_similarity": 0.609, + "left_pr_number": 67463, + "right_pr_number": 69356, "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui" + "src/tasks", + "src" ], "shared_filenames": [ - "ui/src/ui/app-gateway.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.346, - "size_similarity": 0.058 - } - ], - "pr_count": 3, - "pr_numbers": [ - 66271, - 66485, - 67037 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 66271, - 66485, - 67037 - ], - "representative_pr_number": 66271, - "representative_title": "Control UI: avoid chat flicker on session reload", - "representative_url": "https://github.com/openclaw/openclaw/pull/66271", - "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui" - ], - "shared_filenames": [ - "ui/src/ui/app-gateway.ts", - "ui/src/ui/app-gateway.sessions.node.test.ts" - ], - "summary": "3 open PRs share weighted file overlap around `ui/src/ui/app-gateway.ts`, `ui/src/ui/app-gateway.sessions.node.test.ts`; representative PR #66271.", - "title": "Scope: Control UI: avoid chat flicker on session reload" - }, - { - "authors": [ - "amittell", - "chinar-amrutkar", - "defonota3box" - ], - "average_similarity": 0.506, - "cluster_id": "pr-scope-66197-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-16T04:59:43Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.571, + "size_similarity": 0.493 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.778, - "left_pr_number": 66197, - "right_pr_number": 67354, + "breadth_similarity": 0.333, + "concentration_similarity": 0.767, + "content_similarity": 0.621, + "left_pr_number": 65013, + "right_pr_number": 65242, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/tasks", + "src" ], "shared_filenames": [ - "extensions/telegram/src/bot-message-context.session.ts" + "src/tasks/task-executor-policy.test.ts", + "src/tasks/task-executor-policy.ts", + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.79, - "size_similarity": 0.636 + "similarity": 0.559, + "size_similarity": 0.356 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.147, - "left_pr_number": 66912, - "right_pr_number": 67354, + "breadth_similarity": 0.417, + "concentration_similarity": 0.588, + "content_similarity": 0.637, + "left_pr_number": 60428, + "right_pr_number": 67463, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/tasks", + "src" ], - "shared_filenames": [], - "similarity": 0.403, - "size_similarity": 1.0 + "shared_filenames": [ + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" + ], + "similarity": 0.544, + "size_similarity": 0.176 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.643, "concentration_similarity": 1.0, - "content_similarity": 0.113, - "left_pr_number": 66197, - "right_pr_number": 66912, + "content_similarity": 0.526, + "left_pr_number": 64934, + "right_pr_number": 69356, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/tasks", + "src" ], - "shared_filenames": [], - "similarity": 0.325, - "size_similarity": 0.636 - } - ], - "pr_count": 3, - "pr_numbers": [ - 66197, - 66912, - 67354 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 66197, - 66912, - 67354 - ], - "representative_pr_number": 67354, - "representative_title": "Fix/telegram session label", - "representative_url": "https://github.com/openclaw/openclaw/pull/67354", - "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" - ], - "shared_filenames": [ - "extensions/telegram/src/bot-message-context.session.ts" - ], - "summary": "3 open PRs share weighted file overlap around `extensions/telegram/src/bot-message-context.session.ts`; representative PR #67354.", - "title": "Scope: Fix/telegram session label" - }, - { - "authors": [ - "armorbreak001", - "imadal1n" - ], - "average_similarity": 0.483, - "cluster_id": "pr-scope-67468-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T16:03:22Z", - "outside_window_prs": [], - "pairwise": [ + "shared_filenames": [ + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" + ], + "similarity": 0.515, + "size_similarity": 0.219 + }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.531, - "content_similarity": 0.7, - "left_pr_number": 67468, - "right_pr_number": 67501, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.501, + "left_pr_number": 65013, + "right_pr_number": 69356, "shared_directories": [ - "src/agents", + "src/tasks", "src" ], "shared_filenames": [ - "src/agents/bash-tools.exec-runtime.test.ts", - "src/agents/bash-tools.exec.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.698, - "size_similarity": 0.816 + "similarity": 0.507, + "size_similarity": 0.211 }, { - "breadth_similarity": 0.243, - "concentration_similarity": 0.483, - "content_similarity": 0.378, - "left_pr_number": 67468, - "right_pr_number": 68567, + "breadth_similarity": 0.643, + "concentration_similarity": 1.0, + "content_similarity": 0.528, + "left_pr_number": 60428, + "right_pr_number": 64934, "shared_directories": [ - "src/agents", + "src/tasks", "src" ], "shared_filenames": [ - "src/agents/bash-tools.exec-runtime.test.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.422, - "size_similarity": 0.725 + "similarity": 0.496, + "size_similarity": 0.078 }, { - "breadth_similarity": 0.414, - "concentration_similarity": 0.952, - "content_similarity": 0.219, - "left_pr_number": 67501, - "right_pr_number": 68567, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.472, + "left_pr_number": 60428, + "right_pr_number": 65013, "shared_directories": [ - "src/agents", - "extensions", + "src/tasks", "src" ], "shared_filenames": [ - "src/agents/bash-tools.exec-runtime.test.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.331, - "size_similarity": 0.592 - } - ], - "pr_count": 3, - "pr_numbers": [ - 67468, - 67501, - 68567 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 67468, - 67501, - 68567 - ], - "representative_pr_number": 67468, - "representative_title": "fix(exec): do not resolve auto exec host to sandbox when mode is off (fixes #58885)", - "representative_url": "https://github.com/openclaw/openclaw/pull/67468", - "shared_directories": [ - "src/agents", - "src", - "extensions" - ], - "shared_filenames": [ - "src/agents/bash-tools.exec-runtime.test.ts", - "src/agents/bash-tools.exec.ts" - ], - "summary": "3 open PRs share weighted file overlap around `src/agents/bash-tools.exec-runtime.test.ts`, `src/agents/bash-tools.exec.ts`; representative PR #67468.", - "title": "Scope: fix(exec): do not resolve auto exec host to sandbox when mode is off (fixes #58885)" - }, - { - "authors": [ - "ZehanXu-Doncic", - "armorbreak001", - "jensenwang560-blip" - ], - "average_similarity": 0.466, - "cluster_id": "pr-scope-65783-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T06:42:33Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.467, + "size_similarity": 0.075 + }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.746, - "content_similarity": 0.693, - "left_pr_number": 65783, - "right_pr_number": 65796, + "breadth_similarity": 0.458, + "concentration_similarity": 0.487, + "content_similarity": 0.335, + "left_pr_number": 64416, + "right_pr_number": 64934, "shared_directories": [ - "extensions/memory-core/src/memory", - "packages/memory-host-sdk/src/host", - "extensions/memory-core/src", - "packages/memory-host-sdk/src", - "extensions/memory-core", - "packages/memory-host-sdk", - "extensions", - "packages" + "src/tasks", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/memory/manager-embedding-ops.ts", - "packages/memory-host-sdk/src/host/internal.test.ts", - "packages/memory-host-sdk/src/host/internal.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts", + "src/tasks/task-registry.types.ts" ], - "similarity": 0.642, - "size_similarity": 0.212 + "similarity": 0.426, + "size_similarity": 0.81 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.923, - "content_similarity": 0.315, - "left_pr_number": 65783, - "right_pr_number": 68822, + "breadth_similarity": 0.667, + "concentration_similarity": 0.588, + "content_similarity": 0.348, + "left_pr_number": 65013, + "right_pr_number": 67463, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/tasks", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/memory/manager-embedding-ops.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.446, - "size_similarity": 0.61 + "similarity": 0.404, + "size_similarity": 0.428 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.822, - "content_similarity": 0.168, - "left_pr_number": 65796, - "right_pr_number": 68822, + "breadth_similarity": 0.452, + "concentration_similarity": 0.588, + "content_similarity": 0.374, + "left_pr_number": 64934, + "right_pr_number": 67463, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/tasks", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/memory/manager-embedding-ops.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.311, - "size_similarity": 0.348 - } - ], - "pr_count": 3, - "pr_numbers": [ - 65783, - 65796, - 68822 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 65783, - 65796, - 68822 - ], - "representative_pr_number": 65783, - "representative_title": "fix(memory): preserve surrogate pairs in chunker; sanitize embed inputs", - "representative_url": "https://github.com/openclaw/openclaw/pull/65783", - "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", - "extensions", - "packages/memory-host-sdk/src/host", - "packages/memory-host-sdk/src", - "packages/memory-host-sdk", - "packages" - ], - "shared_filenames": [ - "extensions/memory-core/src/memory/manager-embedding-ops.ts", - "packages/memory-host-sdk/src/host/internal.test.ts", - "packages/memory-host-sdk/src/host/internal.ts" - ], - "summary": "3 open PRs share weighted file overlap around `extensions/memory-core/src/memory/manager-embedding-ops.ts`, `packages/memory-host-sdk/src/host/internal.test.ts`, `packages/memory-host-sdk/src/host/internal.ts`; representative PR #65783.", - "title": "Scope: fix(memory): preserve surrogate pairs in chunker; sanitize embed inputs" - }, - { - "authors": [ - "nxmxbbd", - "samrusani" - ], - "average_similarity": 0.46, - "cluster_id": "pr-scope-65425-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-13T06:51:45Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.403, + "size_similarity": 0.444 + }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.7, - "content_similarity": 0.689, - "left_pr_number": 65425, - "right_pr_number": 65435, + "breadth_similarity": 0.333, + "concentration_similarity": 0.487, + "content_similarity": 0.289, + "left_pr_number": 64416, + "right_pr_number": 65013, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", - "extensions", + "src/tasks", "src" ], "shared_filenames": [ - "extensions/memory-core/src/memory/index.test.ts", - "extensions/memory-core/src/memory/manager-search.test.ts", - "extensions/memory-core/src/memory/manager.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.676, - "size_similarity": 0.557 + "similarity": 0.386, + "size_similarity": 0.842 }, { "breadth_similarity": 1.0, - "concentration_similarity": 0.872, - "content_similarity": 0.174, - "left_pr_number": 65425, - "right_pr_number": 65755, + "concentration_similarity": 0.72, + "content_similarity": 0.249, + "left_pr_number": 64416, + "right_pr_number": 65242, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", - "extensions", + "src/agents", + "src/tasks", "src" ], - "shared_filenames": [], - "similarity": 0.385, - "size_similarity": 0.798 + "shared_filenames": [ + "src/agents/acp-spawn.ts", + "src/agents/subagent-announce.ts", + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" + ], + "similarity": 0.374, + "size_similarity": 0.422 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.828, - "content_similarity": 0.141, - "left_pr_number": 65435, - "right_pr_number": 65755, + "breadth_similarity": 0.458, + "concentration_similarity": 0.767, + "content_similarity": 0.293, + "left_pr_number": 64934, + "right_pr_number": 65242, "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", - "extensions", + "src/tasks", "src" ], - "shared_filenames": [], - "similarity": 0.32, - "size_similarity": 0.698 - } - ], - "pr_count": 3, - "pr_numbers": [ - 65425, - 65435, - 65755 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 65425, - 65435, - 65755 - ], - "representative_pr_number": 65425, - "representative_title": "Allow zero group chat history limit", - "representative_url": "https://github.com/openclaw/openclaw/pull/65425", - "shared_directories": [ - "extensions/memory-core/src/memory", - "extensions/memory-core/src", - "extensions/memory-core", - "extensions", - "src" - ], - "shared_filenames": [ - "extensions/memory-core/src/memory/manager-search.test.ts", - "extensions/memory-core/src/memory/index.test.ts", - "extensions/memory-core/src/memory/manager.ts" - ], - "summary": "3 open PRs share weighted file overlap around `extensions/memory-core/src/memory/manager-search.test.ts`, `extensions/memory-core/src/memory/index.test.ts`, `extensions/memory-core/src/memory/manager.ts`; representative PR #65425.", - "title": "Scope: Allow zero group chat history limit" - }, - { - "authors": [ - "jalehman", - "kagura-agent", - "leochame" - ], - "average_similarity": 0.396, - "cluster_id": "pr-scope-67601-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T07:05:33Z", - "outside_window_prs": [], - "pairwise": [ - { - "breadth_similarity": 0.292, - "concentration_similarity": 0.957, - "content_similarity": 0.445, - "left_pr_number": 67601, - "right_pr_number": 68534, - "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" - ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-phases.test.ts", - "extensions/memory-core/src/dreaming-phases.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.454, - "size_similarity": 0.432 + "similarity": 0.341, + "size_similarity": 0.342 }, { - "breadth_similarity": 0.472, - "concentration_similarity": 0.656, - "content_similarity": 0.307, - "left_pr_number": 67601, - "right_pr_number": 67833, + "breadth_similarity": 0.667, + "concentration_similarity": 0.899, + "content_similarity": 0.237, + "left_pr_number": 64416, + "right_pr_number": 67463, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "src/gateway", - "extensions", + "src/tasks", "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming-phases.test.ts", - "extensions/memory-core/src/dreaming-phases.ts", - "extensions/memory-core/src/dreaming-shared.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.387, - "size_similarity": 0.616 + "similarity": 0.331, + "size_similarity": 0.36 }, { - "breadth_similarity": 0.139, - "concentration_similarity": 0.613, - "content_similarity": 0.373, - "left_pr_number": 67833, - "right_pr_number": 68534, + "breadth_similarity": 0.25, + "concentration_similarity": 0.487, + "content_similarity": 0.34, + "left_pr_number": 64416, + "right_pr_number": 69356, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" - ], - "shared_filenames": [ - "extensions/memory-core/src/dreaming-phases.test.ts", - "extensions/memory-core/src/dreaming-phases.ts" + "src/tasks", + "src" ], - "similarity": 0.346, - "size_similarity": 0.266 - } - ], - "pr_count": 3, - "pr_numbers": [ - 67601, - 67833, - 68534 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 67601, - 67833, - 68534 - ], - "representative_pr_number": 67601, - "representative_title": "fix(memory-core): stop dreaming from promoting transport metadata", - "representative_url": "https://github.com/openclaw/openclaw/pull/67601", - "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions", - "src/gateway", - "src" - ], - "shared_filenames": [ - "extensions/memory-core/src/dreaming-phases.test.ts", - "extensions/memory-core/src/dreaming-phases.ts", - "extensions/memory-core/src/dreaming-shared.ts" - ], - "summary": "3 open PRs share weighted file overlap around `extensions/memory-core/src/dreaming-phases.test.ts`, `extensions/memory-core/src/dreaming-phases.ts`, `extensions/memory-core/src/dreaming-shared.ts`; representative PR #67601.", - "title": "Scope: fix(memory-core): stop dreaming from promoting transport metadata" - }, - { - "authors": [ - "fangguisheng520", - "michaelhughes2501", - "yananli199307-dev" - ], - "average_similarity": 0.383, - "cluster_id": "pr-scope-65739-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T01:52:23Z", - "outside_window_prs": [], - "pairwise": [ - { - "breadth_similarity": 0.852, - "concentration_similarity": 0.862, - "content_similarity": 0.282, - "left_pr_number": 65739, - "right_pr_number": 68345, - "shared_directories": [], "shared_filenames": [ - "pnpm-lock.yaml" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.445, - "size_similarity": 0.795 + "similarity": 0.314, + "size_similarity": 0.178 }, { - "breadth_similarity": 0.63, - "concentration_similarity": 0.898, - "content_similarity": 0.307, - "left_pr_number": 66960, - "right_pr_number": 68345, + "breadth_similarity": 0.25, + "concentration_similarity": 0.767, + "content_similarity": 0.332, + "left_pr_number": 65242, + "right_pr_number": 69356, "shared_directories": [ - "ui" + "src/tasks", + "src" ], "shared_filenames": [ - "pnpm-lock.yaml" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.383, - "size_similarity": 0.404 + "similarity": 0.307, + "size_similarity": 0.075 }, { - "breadth_similarity": 0.684, - "concentration_similarity": 0.76, - "content_similarity": 0.237, - "left_pr_number": 65739, - "right_pr_number": 66960, - "shared_directories": [], - "shared_filenames": [ - "pnpm-lock.yaml" - ], - "similarity": 0.321, - "size_similarity": 0.322 - } - ], - "pr_count": 3, - "pr_numbers": [ - 65739, - 66960, - 68345 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 65739, - 66960, - 68345 - ], - "representative_pr_number": 68345, - "representative_title": "Modify several web pages by hard-coding the language into multiple la\u2026", - "representative_url": "https://github.com/openclaw/openclaw/pull/68345", - "shared_directories": [ - "ui" - ], - "shared_filenames": [ - "pnpm-lock.yaml" - ], - "summary": "3 open PRs share weighted file overlap around `pnpm-lock.yaml`; representative PR #68345.", - "title": "Scope: Modify several web pages by hard-coding the language into multiple la\u2026" - }, - { - "authors": [ - "GaosCode", - "fangweili", - "lml2468" - ], - "average_similarity": 0.38, - "cluster_id": "pr-scope-65979-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-16T00:35:32Z", - "outside_window_prs": [], - "pairwise": [ - { - "breadth_similarity": 0.857, - "concentration_similarity": 0.847, - "content_similarity": 0.287, - "left_pr_number": 65979, - "right_pr_number": 65989, + "breadth_similarity": 0.25, + "concentration_similarity": 0.487, + "content_similarity": 0.341, + "left_pr_number": 60428, + "right_pr_number": 64416, "shared_directories": [ - "src/cli/cron-cli", - "src/cron/service", - "src/cli", - "src/cron", + "src/tasks", "src" ], "shared_filenames": [ - "src/cli/cron-cli/shared.test.ts", - "src/cli/cron-cli/shared.ts", - "src/cron/service/store.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.441, - "size_similarity": 0.751 + "similarity": 0.298, + "size_similarity": 0.063 }, { - "breadth_similarity": 0.929, - "concentration_similarity": 0.944, - "content_similarity": 0.134, - "left_pr_number": 65979, - "right_pr_number": 67429, + "breadth_similarity": 0.667, + "concentration_similarity": 0.821, + "content_similarity": 0.235, + "left_pr_number": 65242, + "right_pr_number": 67463, "shared_directories": [ - "src/cron/service", - "src/cron", + "src/tasks", "src" ], "shared_filenames": [ - "src/cron/service/jobs.ts" + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" ], - "similarity": 0.355, - "size_similarity": 0.813 + "similarity": 0.295, + "size_similarity": 0.152 }, { - "breadth_similarity": 0.917, - "concentration_similarity": 0.903, - "content_similarity": 0.095, - "left_pr_number": 65989, - "right_pr_number": 67429, + "breadth_similarity": 0.25, + "concentration_similarity": 0.767, + "content_similarity": 0.313, + "left_pr_number": 60428, + "right_pr_number": 65242, "shared_directories": [ - "src/cron/service", - "src/cron", + "src/tasks", "src" ], - "shared_filenames": [], - "similarity": 0.342, - "size_similarity": 0.924 + "shared_filenames": [ + "src/tasks/task-registry.test.ts", + "src/tasks/task-registry.ts" + ], + "similarity": 0.286, + "size_similarity": 0.027 } ], - "pr_count": 3, + "pr_count": 7, "pr_numbers": [ - 65979, - 65989, - 67429 + 60428, + 64416, + 64934, + 65013, + 65242, + 67463, + 69356 ], - "recent_pr_count": 3, + "recent_pr_count": 2, "recent_pr_numbers": [ - 65979, - 65989, - 67429 + 67463, + 69356 ], - "representative_pr_number": 65979, - "representative_title": "fix(cron): normalize missing persisted job state", - "representative_url": "https://github.com/openclaw/openclaw/pull/65979", + "representative_pr_number": 69356, + "representative_title": "fix(tasks): clamp createdAt to startedAt on task creation (#69229)", + "representative_url": "https://github.com/openclaw/openclaw/pull/69356", "shared_directories": [ - "src/cron/service", - "src/cron", + "src/tasks", "src", - "src/cli/cron-cli", - "src/cli" + "src/agents" ], "shared_filenames": [ - "src/cli/cron-cli/shared.test.ts", - "src/cli/cron-cli/shared.ts", - "src/cron/service/store.ts", - "src/cron/service/jobs.ts" + "src/tasks/task-registry.ts", + "src/tasks/task-registry.test.ts", + "src/tasks/task-executor-policy.test.ts", + "src/tasks/task-executor-policy.ts", + "src/tasks/task-registry.types.ts", + "src/agents/acp-spawn.ts", + "src/agents/subagent-announce.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/cli/cron-cli/shared.test.ts`, `src/cli/cron-cli/shared.ts`, `src/cron/service/store.ts`; representative PR #65979.", - "title": "Scope: fix(cron): normalize missing persisted job state" + "summary": "7 open PRs share weighted file overlap around `src/tasks/task-registry.ts`, `src/tasks/task-registry.test.ts`, `src/tasks/task-executor-policy.test.ts`; representative PR #69356.", + "title": "Scope: fix(tasks): clamp createdAt to startedAt on task creation (#69229)" }, { "authors": [ - "CYXCAT", - "MukundaKatta", - "nightq" + "SARAMALI15792", + "kagura-agent" ], - "average_similarity": 0.368, - "cluster_id": "pr-scope-66727-3", + "average_similarity": 0.404, + "cluster_id": "pr-scope-64597-7", "kind": "pr_scope", - "last_activity_at": "2026-04-18T09:29:02Z", - "outside_window_prs": [], - "pairwise": [ - { - "breadth_similarity": 0.375, - "concentration_similarity": 0.667, - "content_similarity": 0.466, - "left_pr_number": 66754, - "right_pr_number": 67007, - "shared_directories": [ - "src/terminal", - "src" - ], - "shared_filenames": [ - "src/terminal/links.test.ts" - ], - "similarity": 0.41, - "size_similarity": 0.083 - }, + "last_activity_at": "2026-04-19T03:25:15Z", + "outside_window_prs": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.127, - "left_pr_number": 66727, - "right_pr_number": 66754, - "shared_directories": [ - "src/terminal", - "src" - ], - "shared_filenames": [], - "similarity": 0.352, - "size_similarity": 0.75 - }, - { - "breadth_similarity": 0.375, - "concentration_similarity": 0.667, - "content_similarity": 0.364, - "left_pr_number": 66727, - "right_pr_number": 67007, - "shared_directories": [ - "src/terminal", - "src" - ], - "shared_filenames": [ - "src/terminal/links.ts" - ], - "similarity": 0.343, - "size_similarity": 0.111 - } - ], - "pr_count": 3, - "pr_numbers": [ - 66727, - 66754, - 67007 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 66727, - 66754, - 67007 - ], - "representative_pr_number": 66754, - "representative_title": "fix(terminal): guard formatDocsLink against undefined path", - "representative_url": "https://github.com/openclaw/openclaw/pull/66754", - "shared_directories": [ - "src/terminal", - "src" - ], - "shared_filenames": [ - "src/terminal/links.ts", - "src/terminal/links.test.ts" - ], - "summary": "3 open PRs share weighted file overlap around `src/terminal/links.ts`, `src/terminal/links.test.ts`; representative PR #66754.", - "title": "Scope: fix(terminal): guard formatDocsLink against undefined path" - }, - { - "authors": [ - "1aifanatic", - "mjdacs", - "p3nchan" - ], - "average_similarity": 0.365, - "cluster_id": "pr-scope-66795-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T22:37:16Z", - "outside_window_prs": [], - "pairwise": [ - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.14, - "left_pr_number": 66795, - "right_pr_number": 68306, - "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.381, - "size_similarity": 0.882 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.13, - "left_pr_number": 67782, - "right_pr_number": 68306, - "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.36, - "size_similarity": 0.791 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.143, - "left_pr_number": 66795, - "right_pr_number": 67782, - "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.355, - "size_similarity": 0.697 - } - ], - "pr_count": 3, - "pr_numbers": [ - 66795, - 67782, - 68306 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 66795, - 67782, - 68306 - ], - "representative_pr_number": 68306, - "representative_title": "fix(telegram): reject zero and negative replyToMessageId values", - "representative_url": "https://github.com/openclaw/openclaw/pull/68306", - "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" - ], - "shared_filenames": [], - "summary": "3 open PRs cluster in `extensions/telegram/src`, `extensions/telegram`, `extensions` with similar change breadth; representative PR #68306.", - "title": "Scope: fix(telegram): reject zero and negative replyToMessageId values" - }, - { - "authors": [ - "coletebou", - "defonota3box" - ], - "average_similarity": 0.349, - "cluster_id": "pr-scope-66108-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-13T23:00:36Z", - "outside_window_prs": [], - "pairwise": [ - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.205, - "left_pr_number": 66108, - "right_pr_number": 66120, - "shared_directories": [ - "extensions/bluebubbles/src", - "extensions/bluebubbles", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.365, - "size_similarity": 0.48 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.19, - "left_pr_number": 66120, - "right_pr_number": 66200, - "shared_directories": [ - "extensions/bluebubbles/src", - "extensions/bluebubbles", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.358, - "size_similarity": 0.5 + "additions": 248, + "author": "shad0wca7", + "changed_files": 7, + "created_at": "2026-04-11T02:17:51Z", + "deletions": 12, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64597/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64597", + "merged": false, + "number": 64597, + "state": "open", + "title": "fix: skip futile overflow truncation retries", + "updated_at": "2026-04-13T00:19:08Z" }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.195, - "left_pr_number": 66108, - "right_pr_number": 66200, - "shared_directories": [ - "extensions/bluebubbles/src", - "extensions/bluebubbles", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.323, - "size_similarity": 0.24 - } - ], - "pr_count": 3, - "pr_numbers": [ - 66108, - 66120, - 66200 - ], - "recent_pr_count": 3, - "recent_pr_numbers": [ - 66108, - 66120, - 66200 - ], - "representative_pr_number": 66120, - "representative_title": "fix(bluebubbles): accept updated-message events carrying attachments", - "representative_url": "https://github.com/openclaw/openclaw/pull/66120", - "shared_directories": [ - "extensions/bluebubbles/src", - "extensions/bluebubbles", - "extensions" - ], - "shared_filenames": [], - "summary": "3 open PRs cluster in `extensions/bluebubbles/src`, `extensions/bluebubbles`, `extensions` with similar change breadth; representative PR #66120.", - "title": "Scope: fix(bluebubbles): accept updated-message events carrying attachments" - }, - { - "authors": [ - "isopenclaw", - "richardclawbot" - ], - "average_similarity": 0.414, - "cluster_id": "pr-scope-60428-6", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T08:09:11Z", - "outside_window_prs": [ - { - "additions": 25, - "author": "Thom-320", - "changed_files": 2, - "created_at": "2026-04-03T16:52:27Z", - "deletions": 1, + "additions": 301, + "author": "nonzeroclaw", + "changed_files": 10, + "created_at": "2026-04-11T05:17:34Z", + "deletions": 194, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/60428/files", - "html_url": "https://github.com/openclaw/openclaw/pull/60428", + "files_url": "https://github.com/openclaw/openclaw/pull/64656/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64656", "merged": false, - "number": 60428, + "number": 64656, "state": "open", - "title": "fix(tasks): clamp createdAt when startedAt is already known", - "updated_at": "2026-04-17T21:23:42Z" + "title": "fix: isolate auto-failover, split /new vs /reset LCM identity, add overflow circuit breaker", + "updated_at": "2026-04-11T07:13:08Z" }, { - "additions": 397, - "author": "richardclawbot", - "changed_files": 12, - "created_at": "2026-04-10T17:07:12Z", - "deletions": 14, + "additions": 88, + "author": "shad0wca7", + "changed_files": 4, + "created_at": "2026-04-11T18:06:38Z", + "deletions": 7, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64416/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64416", + "files_url": "https://github.com/openclaw/openclaw/pull/64956/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64956", "merged": false, - "number": 64416, + "number": 64956, "state": "open", - "title": "fix(acp): normalize completion delivery guidance", - "updated_at": "2026-04-11T06:50:44Z" + "title": "fix: dedupe session summaries by session id", + "updated_at": "2026-04-13T00:22:35Z" }, { - "additions": 327, - "author": "neofdezf-cloud", - "changed_files": 7, - "created_at": "2026-04-11T17:14:48Z", - "deletions": 6, + "additions": 628, + "author": "rubencu", + "changed_files": 16, + "created_at": "2026-04-14T05:29:39Z", + "deletions": 80, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64934/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64934", + "files_url": "https://github.com/openclaw/openclaw/pull/66365/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66365", "merged": false, - "number": 64934, + "number": 66365, "state": "open", - "title": "feat(tasks): add intermediate active task states", - "updated_at": "2026-04-11T17:48:52Z" + "title": "fix: keep typing alive through long quiet phases", + "updated_at": "2026-04-14T05:52:11Z" }, { - "additions": 323, - "author": "richardclawbot", - "changed_files": 4, - "created_at": "2026-04-11T21:19:41Z", - "deletions": 23, + "additions": 166, + "author": "sahilsatralkar", + "changed_files": 3, + "created_at": "2026-04-14T12:26:35Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65013/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65013", + "files_url": "https://github.com/openclaw/openclaw/pull/66537/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66537", "merged": false, - "number": 65013, + "number": 66537, "state": "open", - "title": "fix(tasks): silence acp child-session completion banners", - "updated_at": "2026-04-12T03:04:11Z" + "title": "Fix: Issue 66397 silent final answer loss", + "updated_at": "2026-04-15T09:51:28Z" } ], "pairwise": [ { - "breadth_similarity": 0.786, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.432, - "left_pr_number": 64934, - "right_pr_number": 65013, + "content_similarity": 0.689, + "left_pr_number": 68575, + "right_pr_number": 68798, "shared_directories": [ - "src/tasks", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.576, - "size_similarity": 0.962 + "similarity": 0.674, + "size_similarity": 0.445 }, { - "breadth_similarity": 0.333, - "concentration_similarity": 0.767, - "content_similarity": 0.622, - "left_pr_number": 65013, - "right_pr_number": 65242, + "breadth_similarity": 0.5, + "concentration_similarity": 0.632, + "content_similarity": 0.461, + "left_pr_number": 64956, + "right_pr_number": 68575, "shared_directories": [ - "src/tasks", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-executor-policy.test.ts", - "src/tasks/task-executor-policy.ts", - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.561, - "size_similarity": 0.356 + "similarity": 0.51, + "size_similarity": 0.709 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.588, - "content_similarity": 0.643, - "left_pr_number": 60428, - "right_pr_number": 67463, + "breadth_similarity": 0.583, + "concentration_similarity": 0.566, + "content_similarity": 0.428, + "left_pr_number": 66537, + "right_pr_number": 68575, "shared_directories": [ - "src/tasks", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/auto-reply/reply/agent-runner-execution.test.ts" ], - "similarity": 0.548, - "size_similarity": 0.176 + "similarity": 0.507, + "size_similarity": 0.807 }, { - "breadth_similarity": 0.643, - "concentration_similarity": 1.0, - "content_similarity": 0.531, - "left_pr_number": 60428, - "right_pr_number": 64934, + "breadth_similarity": 0.548, + "concentration_similarity": 0.922, + "content_similarity": 0.409, + "left_pr_number": 64597, + "right_pr_number": 66537, "shared_directories": [ - "src/tasks", + "src/agents/pi-embedded-runner", + "src/auto-reply/reply", + "src/agents", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/agents/pi-embedded-runner/run.ts", + "src/auto-reply/reply/agent-runner-execution.test.ts" ], - "similarity": 0.497, - "size_similarity": 0.078 + "similarity": 0.483, + "size_similarity": 0.638 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.474, - "left_pr_number": 60428, - "right_pr_number": 65013, + "breadth_similarity": 0.564, + "concentration_similarity": 0.878, + "content_similarity": 0.399, + "left_pr_number": 64597, + "right_pr_number": 64656, "shared_directories": [ - "src/tasks", + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/auto-reply/reply", + "src/agents", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/agents/pi-embedded-runner/run.ts", + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.468, - "size_similarity": 0.075 + "similarity": 0.459, + "size_similarity": 0.525 }, { - "breadth_similarity": 0.458, - "concentration_similarity": 0.487, - "content_similarity": 0.338, - "left_pr_number": 64416, - "right_pr_number": 64934, + "breadth_similarity": 0.31, + "concentration_similarity": 0.488, + "content_similarity": 0.426, + "left_pr_number": 64597, + "right_pr_number": 68575, "shared_directories": [ - "src/tasks", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts", - "src/tasks/task-registry.types.ts" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.428, - "size_similarity": 0.81 + "similarity": 0.431, + "size_similarity": 0.515 }, { "breadth_similarity": 0.452, - "concentration_similarity": 0.588, - "content_similarity": 0.379, - "left_pr_number": 64934, - "right_pr_number": 67463, + "concentration_similarity": 0.488, + "content_similarity": 0.32, + "left_pr_number": 64597, + "right_pr_number": 68798, "shared_directories": [ - "src/tasks", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.407, - "size_similarity": 0.444 + "similarity": 0.423, + "size_similarity": 0.864 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 0.588, - "content_similarity": 0.353, - "left_pr_number": 65013, - "right_pr_number": 67463, + "breadth_similarity": 0.455, + "concentration_similarity": 0.83, + "content_similarity": 0.3, + "left_pr_number": 64656, + "right_pr_number": 66365, "shared_directories": [ - "src/tasks", + "src/agents/pi-embedded-runner", + "src/auto-reply/reply", + "src/agents", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/agents/pi-embedded-runner/run.ts", + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.407, - "size_similarity": 0.428 + "similarity": 0.402, + "size_similarity": 0.699 }, { - "breadth_similarity": 0.333, - "concentration_similarity": 0.487, - "content_similarity": 0.293, - "left_pr_number": 64416, - "right_pr_number": 65013, + "breadth_similarity": 0.875, + "concentration_similarity": 0.935, + "content_similarity": 0.256, + "left_pr_number": 64956, + "right_pr_number": 66537, "shared_directories": [ - "src/tasks", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/auto-reply/reply/agent-runner-execution.test.ts" ], - "similarity": 0.389, - "size_similarity": 0.842 + "similarity": 0.399, + "size_similarity": 0.572 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.72, - "content_similarity": 0.251, - "left_pr_number": 64416, - "right_pr_number": 65242, + "breadth_similarity": 0.625, + "concentration_similarity": 0.566, + "content_similarity": 0.32, + "left_pr_number": 66537, + "right_pr_number": 68798, "shared_directories": [ - "src/agents", - "src/tasks", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/agents/acp-spawn.ts", - "src/agents/subagent-announce.ts", - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/auto-reply/reply/agent-runner-execution.test.ts" ], - "similarity": 0.375, - "size_similarity": 0.422 + "similarity": 0.398, + "size_similarity": 0.551 }, { - "breadth_similarity": 0.458, - "concentration_similarity": 0.767, - "content_similarity": 0.299, - "left_pr_number": 64934, - "right_pr_number": 65242, + "breadth_similarity": 0.343, + "concentration_similarity": 0.979, + "content_similarity": 0.402, + "left_pr_number": 64656, + "right_pr_number": 64956, "shared_directories": [ - "src/tasks", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.345, - "size_similarity": 0.342 + "similarity": 0.393, + "size_similarity": 0.192 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 0.899, - "content_similarity": 0.239, - "left_pr_number": 64416, - "right_pr_number": 67463, + "breadth_similarity": 0.619, + "concentration_similarity": 0.857, + "content_similarity": 0.303, + "left_pr_number": 64597, + "right_pr_number": 64956, "shared_directories": [ - "src/tasks", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.333, - "size_similarity": 0.36 + "similarity": 0.372, + "size_similarity": 0.365 }, { - "breadth_similarity": 0.25, - "concentration_similarity": 0.487, - "content_similarity": 0.342, - "left_pr_number": 60428, - "right_pr_number": 64416, + "breadth_similarity": 0.552, + "concentration_similarity": 0.709, + "content_similarity": 0.32, + "left_pr_number": 64597, + "right_pr_number": 66365, "shared_directories": [ - "src/tasks", + "src/agents/pi-embedded-runner", + "src/auto-reply/reply", + "src/agents", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/agents/pi-embedded-runner/run.ts", + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.298, - "size_similarity": 0.063 + "similarity": 0.37, + "size_similarity": 0.367 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 0.821, - "content_similarity": 0.239, - "left_pr_number": 65242, - "right_pr_number": 67463, + "breadth_similarity": 0.75, + "concentration_similarity": 0.632, + "content_similarity": 0.302, + "left_pr_number": 64956, + "right_pr_number": 68798, "shared_directories": [ - "src/tasks", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.298, - "size_similarity": 0.152 + "similarity": 0.365, + "size_similarity": 0.316 }, { - "breadth_similarity": 0.25, - "concentration_similarity": 0.767, - "content_similarity": 0.315, - "left_pr_number": 60428, - "right_pr_number": 65242, + "breadth_similarity": 0.594, + "concentration_similarity": 0.787, + "content_similarity": 0.327, + "left_pr_number": 66365, + "right_pr_number": 66537, "shared_directories": [ - "src/tasks", + "src/agents/pi-embedded-runner", + "src/auto-reply/reply", + "src/agents", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/tasks/task-registry.test.ts", - "src/tasks/task-registry.ts" + "src/agents/pi-embedded-runner/run.ts", + "src/auto-reply/reply/agent-runner-execution.test.ts" ], - "similarity": 0.288, - "size_similarity": 0.027 - } - ], - "pr_count": 6, - "pr_numbers": [ - 60428, - 64416, - 64934, - 65013, - 65242, - 67463 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 65242, - 67463 - ], - "representative_pr_number": 65013, - "representative_title": "fix(tasks): silence acp child-session completion banners", - "representative_url": "https://github.com/openclaw/openclaw/pull/65013", - "shared_directories": [ - "src/tasks", - "src", - "src/agents" - ], - "shared_filenames": [ - "src/tasks/task-registry.ts", - "src/tasks/task-registry.test.ts", - "src/tasks/task-executor-policy.test.ts", - "src/tasks/task-executor-policy.ts", - "src/tasks/task-registry.types.ts", - "src/agents/acp-spawn.ts", - "src/agents/subagent-announce.ts" - ], - "summary": "6 open PRs share weighted file overlap around `src/tasks/task-registry.ts`, `src/tasks/task-registry.test.ts`, `src/tasks/task-executor-policy.test.ts`; representative PR #65013.", - "title": "Scope: fix(tasks): silence acp child-session completion banners" - }, - { - "authors": [ - "imanewstudent", - "skolez" - ], - "average_similarity": 0.495, - "cluster_id": "pr-scope-37055-5", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T22:20:44Z", - "outside_window_prs": [ - { - "additions": 32, - "author": "FangHaoming", - "changed_files": 3, - "created_at": "2026-03-06T02:54:46Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37055/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37055", - "merged": false, - "number": 37055, - "state": "open", - "title": "fix(gateway): add --allow-unconfigured flag and improve control UI or\u2026", - "updated_at": "2026-04-18T04:24:54Z" - }, - { - "additions": 4, - "author": "nathandrewes", - "changed_files": 1, - "created_at": "2026-03-24T06:22:34Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53459/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53459", - "merged": false, - "number": 53459, - "state": "open", - "title": "fix(config): replace hardcoded API keys with env var substitution", - "updated_at": "2026-03-24T20:15:30Z" + "similarity": 0.363, + "size_similarity": 0.234 }, { - "additions": 5, - "author": "jlapenna", - "changed_files": 2, - "created_at": "2026-04-10T20:04:49Z", - "deletions": 4, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64485/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64485", - "merged": false, - "number": 64485, - "state": "open", - "title": "fix(docker): add config dir defaults to prevent broken volume mounts", - "updated_at": "2026-04-18T20:31:19Z" - } - ], - "pairwise": [ - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.973, - "left_pr_number": 53459, - "right_pr_number": 65894, - "shared_directories": [], - "shared_filenames": [ - "docker-compose.yml" + "breadth_similarity": 0.271, + "concentration_similarity": 0.61, + "content_similarity": 0.291, + "left_pr_number": 64656, + "right_pr_number": 68798, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" ], - "similarity": 0.868, - "size_similarity": 0.25 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.908, - "left_pr_number": 53459, - "right_pr_number": 64485, - "shared_directories": [], "shared_filenames": [ - "docker-compose.yml" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.828, - "size_similarity": 0.444 + "similarity": 0.352, + "size_similarity": 0.608 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.872, - "left_pr_number": 64485, - "right_pr_number": 65894, - "shared_directories": [], + "breadth_similarity": 0.171, + "concentration_similarity": 0.61, + "content_similarity": 0.367, + "left_pr_number": 64656, + "right_pr_number": 68575, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], "shared_filenames": [ - "docker-compose.yml" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.752, - "size_similarity": 0.111 + "similarity": 0.345, + "size_similarity": 0.271 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.841, - "content_similarity": 0.489, - "left_pr_number": 37055, - "right_pr_number": 68702, + "breadth_similarity": 0.312, + "concentration_similarity": 0.78, + "content_similarity": 0.322, + "left_pr_number": 66365, + "right_pr_number": 68575, "shared_directories": [ - "docs/install", - "docs" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "docker-compose.yml", - "docs/install/docker.md" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.625, - "size_similarity": 0.943 + "similarity": 0.324, + "size_similarity": 0.189 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.788, - "content_similarity": 0.375, - "left_pr_number": 64485, - "right_pr_number": 68702, - "shared_directories": [], - "shared_filenames": [ - "CHANGELOG.md", - "docker-compose.yml" + "breadth_similarity": 0.293, + "concentration_similarity": 0.956, + "content_similarity": 0.271, + "left_pr_number": 64656, + "right_pr_number": 66537, + "shared_directories": [ + "src/agents/pi-embedded-runner", + "src/auto-reply/reply", + "src/agents", + "src/auto-reply", + "src" ], - "similarity": 0.401, - "size_similarity": 0.273 - }, - { - "breadth_similarity": 0.417, - "concentration_similarity": 0.788, - "content_similarity": 0.401, - "left_pr_number": 53459, - "right_pr_number": 68702, - "shared_directories": [], "shared_filenames": [ - "docker-compose.yml" + "src/agents/pi-embedded-runner/run.ts", + "src/auto-reply/reply/agent-runner-execution.test.ts" ], - "similarity": 0.38, - "size_similarity": 0.121 + "similarity": 0.317, + "size_similarity": 0.335 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.788, - "content_similarity": 0.385, - "left_pr_number": 65894, - "right_pr_number": 68702, - "shared_directories": [], - "shared_filenames": [ - "docker-compose.yml" + "breadth_similarity": 0.375, + "concentration_similarity": 0.78, + "content_similarity": 0.252, + "left_pr_number": 66365, + "right_pr_number": 68798, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" ], - "similarity": 0.355, - "size_similarity": 0.03 - }, - { - "breadth_similarity": 0.583, - "concentration_similarity": 0.629, - "content_similarity": 0.194, - "left_pr_number": 37055, - "right_pr_number": 64485, - "shared_directories": [], "shared_filenames": [ - "docker-compose.yml" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.264, - "size_similarity": 0.257 + "similarity": 0.317, + "size_similarity": 0.425 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.629, - "content_similarity": 0.217, - "left_pr_number": 37055, - "right_pr_number": 53459, - "shared_directories": [], - "shared_filenames": [ - "docker-compose.yml" + "breadth_similarity": 0.625, + "concentration_similarity": 0.852, + "content_similarity": 0.22, + "left_pr_number": 64956, + "right_pr_number": 66365, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" ], - "similarity": 0.242, - "size_similarity": 0.114 - }, - { - "breadth_similarity": 0.417, - "concentration_similarity": 0.629, - "content_similarity": 0.223, - "left_pr_number": 37055, - "right_pr_number": 65894, - "shared_directories": [], "shared_filenames": [ - "docker-compose.yml" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.233, - "size_similarity": 0.029 + "similarity": 0.28, + "size_similarity": 0.134 } ], - "pr_count": 5, + "pr_count": 7, "pr_numbers": [ - 37055, - 53459, - 64485, - 65894, - 68702 + 64597, + 64656, + 64956, + 66365, + 66537, + 68575, + 68798 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65894, - 68702 + 68575, + 68798 ], - "representative_pr_number": 53459, - "representative_title": "fix(config): replace hardcoded API keys with env var substitution", - "representative_url": "https://github.com/openclaw/openclaw/pull/53459", + "representative_pr_number": 68575, + "representative_title": "fix(telegram): reset sessions after unrecoverable context overflow", + "representative_url": "https://github.com/openclaw/openclaw/pull/68575", "shared_directories": [ - "docs/install", - "docs" + "src/auto-reply/reply", + "src/auto-reply", + "src", + "src/agents/pi-embedded-runner", + "src/agents", + "src/agents/pi-embedded-runner/run" ], "shared_filenames": [ - "docker-compose.yml", - "docs/install/docker.md", - "CHANGELOG.md" + "src/auto-reply/reply/agent-runner-execution.test.ts", + "src/auto-reply/reply/agent-runner-execution.ts", + "src/agents/pi-embedded-runner/run.ts" ], - "summary": "5 open PRs share weighted file overlap around `docker-compose.yml`, `docs/install/docker.md`, `CHANGELOG.md`; representative PR #53459.", - "title": "Scope: fix(config): replace hardcoded API keys with env var substitution" + "summary": "7 open PRs share weighted file overlap around `src/auto-reply/reply/agent-runner-execution.test.ts`, `src/auto-reply/reply/agent-runner-execution.ts`, `src/agents/pi-embedded-runner/run.ts`; representative PR #68575.", + "title": "Scope: fix(telegram): reset sessions after unrecoverable context overflow" }, { "authors": [ - "defonota3box", - "liuchuanjie" + "acinader", + "nnish16" ], - "average_similarity": 0.463, - "cluster_id": "pr-scope-49145-5", + "average_similarity": 0.648, + "cluster_id": "pr-scope-62938-6", "kind": "pr_scope", - "last_activity_at": "2026-04-14T11:51:42Z", + "last_activity_at": "2026-04-21T14:08:35Z", "outside_window_prs": [ { - "additions": 223, - "author": "ebeuvaliers", - "changed_files": 7, - "created_at": "2026-03-17T16:48:40Z", - "deletions": 5, + "additions": 138, + "author": "allensu0314", + "changed_files": 2, + "created_at": "2026-04-08T04:54:02Z", + "deletions": 25, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/49145/files", - "html_url": "https://github.com/openclaw/openclaw/pull/49145", + "files_url": "https://github.com/openclaw/openclaw/pull/62938/files", + "html_url": "https://github.com/openclaw/openclaw/pull/62938", "merged": false, - "number": 49145, + "number": 62938, "state": "open", - "title": "feat(signal): reliable reply context, reaction wake, and quoted replies (v2)", - "updated_at": "2026-04-19T07:20:17Z" + "title": "fix(exec-approvals): respect OPENCLAW_STATE_DIR for store paths", + "updated_at": "2026-04-12T15:00:18Z" }, { - "additions": 16, - "author": "svv2014", + "additions": 71, + "author": "FunJim", + "changed_files": 2, + "created_at": "2026-04-11T05:49:55Z", + "deletions": 17, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64663/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64663", + "merged": false, + "number": 64663, + "state": "open", + "title": "fix: allow symlinked OPENCLAW_HOME in exec approvals path check", + "updated_at": "2026-04-13T13:46:48Z" + }, + { + "additions": 46, + "author": "oinoom", "changed_files": 3, - "created_at": "2026-03-29T04:14:49Z", - "deletions": 2, + "created_at": "2026-04-13T05:43:01Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/56791/files", - "html_url": "https://github.com/openclaw/openclaw/pull/56791", + "files_url": "https://github.com/openclaw/openclaw/pull/65736/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65736", "merged": false, - "number": 56791, + "number": 65736, "state": "open", - "title": "fix(signal): forward quote metadata to agent context", - "updated_at": "2026-04-18T13:55:16Z" + "title": "fix(exec): respect OPENCLAW_STATE_DIR for exec approvals", + "updated_at": "2026-04-13T05:52:32Z" }, { - "additions": 539, - "author": "pritchie", - "changed_files": 6, - "created_at": "2026-03-30T15:59:52Z", - "deletions": 22, + "additions": 30, + "author": "nighting0615", + "changed_files": 3, + "created_at": "2026-04-14T07:39:00Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/57806/files", - "html_url": "https://github.com/openclaw/openclaw/pull/57806", + "files_url": "https://github.com/openclaw/openclaw/pull/66404/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66404", "merged": false, - "number": 57806, + "number": 66404, "state": "open", - "title": "Signal quote reply", - "updated_at": "2026-04-18T17:29:22Z" + "title": "fix(exec-approvals): honor OPENCLAW_STATE_DIR for default host paths", + "updated_at": "2026-04-14T07:43:47Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.647, - "left_pr_number": 66198, - "right_pr_number": 66521, + "content_similarity": 0.958, + "left_pr_number": 64663, + "right_pr_number": 68417, "shared_directories": [ - "extensions/signal/src/monitor", - "extensions/signal/src", - "extensions/signal", - "extensions" + "src/infra", + "src" ], "shared_filenames": [ - "extensions/signal/src/monitor/event-handler.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.753, - "size_similarity": 1.0 + "similarity": 0.957, + "size_similarity": 0.907 }, { - "breadth_similarity": 0.667, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.618, - "left_pr_number": 56791, - "right_pr_number": 66198, + "content_similarity": 0.897, + "left_pr_number": 62938, + "right_pr_number": 68417, "shared_directories": [ - "extensions/signal/src/monitor", - "extensions/signal/src", - "extensions/signal", - "extensions" + "src/infra", + "src" ], "shared_filenames": [ - "extensions/signal/src/monitor/event-handler.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.657, - "size_similarity": 0.722 + "similarity": 0.867, + "size_similarity": 0.595 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 1.0, - "content_similarity": 0.603, - "left_pr_number": 56791, - "right_pr_number": 66521, + "breadth_similarity": 0.75, + "concentration_similarity": 0.943, + "content_similarity": 0.831, + "left_pr_number": 65736, + "right_pr_number": 66404, "shared_directories": [ - "extensions/signal/src/monitor", - "extensions/signal/src", - "extensions/signal", - "extensions" + "src/infra", + "src" ], "shared_filenames": [ - "extensions/signal/src/monitor/event-handler.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.647, - "size_similarity": 0.722 + "similarity": 0.816, + "size_similarity": 0.745 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.932, - "content_similarity": 0.471, - "left_pr_number": 56791, - "right_pr_number": 57806, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.821, + "left_pr_number": 62938, + "right_pr_number": 64663, "shared_directories": [ - "extensions/signal/src/monitor", - "extensions/signal/src", - "extensions/signal", - "extensions" + "src/infra", + "src" ], "shared_filenames": [ - "extensions/signal/src/monitor/event-handler.ts", - "extensions/signal/src/monitor/event-handler.types.ts", - "extensions/signal/src/monitor/inbound-context.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.423, - "size_similarity": 0.032 + "similarity": 0.806, + "size_similarity": 0.54 }, { - "breadth_similarity": 0.929, - "concentration_similarity": 0.998, - "content_similarity": 0.275, - "left_pr_number": 49145, - "right_pr_number": 57806, + "breadth_similarity": 0.583, + "concentration_similarity": 0.943, + "content_similarity": 0.784, + "left_pr_number": 62938, + "right_pr_number": 66404, "shared_directories": [ - "extensions/signal/src/monitor", - "extensions/signal/src", - "extensions/signal", - "extensions", + "src/infra", "src" ], "shared_filenames": [ - "extensions/signal/src/monitor/event-handler.ts", - "extensions/signal/src/monitor/event-handler.types.ts" - ], - "similarity": 0.396, - "size_similarity": 0.406 - }, - { - "breadth_similarity": 0.25, - "concentration_similarity": 0.932, - "content_similarity": 0.427, - "left_pr_number": 57806, - "right_pr_number": 66198, - "shared_directories": [ - "extensions/signal/src/monitor", - "extensions/signal/src", - "extensions/signal", - "extensions" - ], - "shared_filenames": [ - "extensions/signal/src/monitor/event-handler.ts" - ], - "similarity": 0.374, - "size_similarity": 0.023 - }, - { - "breadth_similarity": 0.25, - "concentration_similarity": 0.932, - "content_similarity": 0.404, - "left_pr_number": 57806, - "right_pr_number": 66521, - "shared_directories": [ - "extensions/signal/src/monitor", - "extensions/signal/src", - "extensions/signal", - "extensions" - ], - "shared_filenames": [ - "extensions/signal/src/monitor/event-handler.ts" - ], - "similarity": 0.358, - "size_similarity": 0.023 - }, - { - "breadth_similarity": 0.381, - "concentration_similarity": 0.934, - "content_similarity": 0.362, - "left_pr_number": 49145, - "right_pr_number": 56791, - "shared_directories": [ - "extensions/signal/src/monitor", - "extensions/signal/src", - "extensions/signal", - "extensions" - ], - "shared_filenames": [ - "extensions/signal/src/monitor/event-handler.ts", - "extensions/signal/src/monitor/event-handler.types.ts" - ], - "similarity": 0.35, - "size_similarity": 0.079 - }, - { - "breadth_similarity": 0.238, - "concentration_similarity": 0.934, - "content_similarity": 0.371, - "left_pr_number": 49145, - "right_pr_number": 66198, - "shared_directories": [ - "extensions/signal/src/monitor", - "extensions/signal/src", - "extensions/signal", - "extensions" - ], - "shared_filenames": [ - "extensions/signal/src/monitor/event-handler.ts" - ], - "similarity": 0.339, - "size_similarity": 0.057 - }, - { - "breadth_similarity": 0.238, - "concentration_similarity": 0.934, - "content_similarity": 0.361, - "left_pr_number": 49145, - "right_pr_number": 66521, - "shared_directories": [ - "extensions/signal/src/monitor", - "extensions/signal/src", - "extensions/signal", - "extensions" - ], - "shared_filenames": [ - "extensions/signal/src/monitor/event-handler.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.332, - "size_similarity": 0.057 - } - ], - "pr_count": 5, - "pr_numbers": [ - 49145, - 56791, - 57806, - 66198, - 66521 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 66198, - 66521 - ], - "representative_pr_number": 66198, - "representative_title": "security: wrap Signal inbound DM body via wrapExternalContent", - "representative_url": "https://github.com/openclaw/openclaw/pull/66198", - "shared_directories": [ - "extensions/signal/src/monitor", - "extensions/signal/src", - "extensions/signal", - "extensions", - "src" - ], - "shared_filenames": [ - "extensions/signal/src/monitor/event-handler.ts", - "extensions/signal/src/monitor/event-handler.types.ts", - "extensions/signal/src/monitor/inbound-context.ts" - ], - "summary": "5 open PRs share weighted file overlap around `extensions/signal/src/monitor/event-handler.ts`, `extensions/signal/src/monitor/event-handler.types.ts`, `extensions/signal/src/monitor/inbound-context.ts`; representative PR #66198.", - "title": "Scope: security: wrap Signal inbound DM body via wrapExternalContent" - }, - { - "authors": [ - "draix", - "wyyis" - ], - "average_similarity": 0.461, - "cluster_id": "pr-scope-37549-5", - "kind": "pr_scope", - "last_activity_at": "2026-04-15T13:40:21Z", - "outside_window_prs": [ - { - "additions": 56, - "author": "lishuaigit", - "changed_files": 4, - "created_at": "2026-03-06T09:19:25Z", - "deletions": 5, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37549/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37549", - "merged": false, - "number": 37549, - "state": "open", - "title": "fix(logging): subsystem loggers now follow root logger rotation", - "updated_at": "2026-04-19T04:33:57Z" - }, - { - "additions": 75, - "author": "MoerAI", - "changed_files": 2, - "created_at": "2026-04-07T09:45:07Z", - "deletions": 10, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/62415/files", - "html_url": "https://github.com/openclaw/openclaw/pull/62415", - "merged": false, - "number": 62415, - "state": "open", - "title": "fix(logging): refresh subsystem file logger on parent date-roll rebuild (#62381)", - "updated_at": "2026-04-18T08:38:24Z" + "similarity": 0.687, + "size_similarity": 0.215 }, { - "additions": 137, - "author": "monsonego", - "changed_files": 3, - "created_at": "2026-04-07T12:27:51Z", - "deletions": 9, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/62482/files", - "html_url": "https://github.com/openclaw/openclaw/pull/62482", - "merged": false, - "number": 62482, - "state": "open", - "title": "fix: refresh subsystem file loggers across daily log rollovers [AI-assisted]", - "updated_at": "2026-04-12T13:28:19Z" - } - ], - "pairwise": [ - { - "breadth_similarity": 0.75, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.893, - "left_pr_number": 37549, - "right_pr_number": 62415, + "content_similarity": 0.722, + "left_pr_number": 62938, + "right_pr_number": 65736, "shared_directories": [ - "src/logging", + "src/infra", "src" ], "shared_filenames": [ - "src/logging/subsystem.test.ts", - "src/logging/subsystem.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.858, - "size_similarity": 0.718 + "similarity": 0.682, + "size_similarity": 0.288 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.548, - "left_pr_number": 62415, - "right_pr_number": 65804, + "breadth_similarity": 0.417, + "concentration_similarity": 0.724, + "content_similarity": 0.55, + "left_pr_number": 68417, + "right_pr_number": 69732, "shared_directories": [ - "src/logging", + "src/infra", "src" ], "shared_filenames": [ - "src/logging/subsystem.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.546, - "size_similarity": 0.247 + "similarity": 0.598, + "size_similarity": 0.897 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 1.0, - "content_similarity": 0.515, - "left_pr_number": 37549, - "right_pr_number": 65804, + "breadth_similarity": 0.417, + "concentration_similarity": 0.724, + "content_similarity": 0.611, + "left_pr_number": 62938, + "right_pr_number": 69732, "shared_directories": [ - "src/logging", + "src/infra", "src" ], "shared_filenames": [ - "src/logging/subsystem.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.525, - "size_similarity": 0.344 + "similarity": 0.586, + "size_similarity": 0.534 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.918, - "content_similarity": 0.464, - "left_pr_number": 62482, - "right_pr_number": 65804, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.525, + "left_pr_number": 65736, + "right_pr_number": 68417, "shared_directories": [ - "src/logging", + "src/infra", "src" ], "shared_filenames": [ - "src/logging/subsystem.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.434, - "size_similarity": 0.144 + "similarity": 0.574, + "size_similarity": 0.485 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.918, - "content_similarity": 0.308, - "left_pr_number": 62415, - "right_pr_number": 62482, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.512, + "left_pr_number": 64663, + "right_pr_number": 65736, "shared_directories": [ - "src/logging", + "src/infra", "src" ], "shared_filenames": [ - "src/logging/subsystem.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.407, - "size_similarity": 0.582 + "similarity": 0.572, + "size_similarity": 0.534 }, { - "breadth_similarity": 0.65, - "concentration_similarity": 0.987, - "content_similarity": 0.329, - "left_pr_number": 37549, - "right_pr_number": 67206, + "breadth_similarity": 0.583, + "concentration_similarity": 0.943, + "content_similarity": 0.555, + "left_pr_number": 66404, + "right_pr_number": 68417, "shared_directories": [ - "src/logging", + "src/infra", "src" ], "shared_filenames": [ - "src/logging/logger.ts", - "src/logging/state.ts", - "src/logging/subsystem.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.403, - "size_similarity": 0.389 + "similarity": 0.548, + "size_similarity": 0.361 }, { - "breadth_similarity": 0.8, - "concentration_similarity": 0.931, - "content_similarity": 0.191, - "left_pr_number": 62482, - "right_pr_number": 67206, + "breadth_similarity": 0.583, + "concentration_similarity": 0.943, + "content_similarity": 0.542, + "left_pr_number": 64663, + "right_pr_number": 66404, "shared_directories": [ - "src/logging", + "src/infra", "src" ], "shared_filenames": [ - "src/logging/subsystem.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.4, - "size_similarity": 0.93 + "similarity": 0.544, + "size_similarity": 0.398 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.918, - "content_similarity": 0.294, - "left_pr_number": 37549, - "right_pr_number": 62482, + "breadth_similarity": 0.417, + "concentration_similarity": 0.724, + "content_similarity": 0.444, + "left_pr_number": 64663, + "right_pr_number": 69732, "shared_directories": [ - "src/logging", + "src/infra", "src" ], "shared_filenames": [ - "src/logging/subsystem.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.377, - "size_similarity": 0.418 + "similarity": 0.537, + "size_similarity": 0.989 }, { - "breadth_similarity": 0.35, - "concentration_similarity": 0.987, - "content_similarity": 0.329, - "left_pr_number": 65804, - "right_pr_number": 67206, + "breadth_similarity": 0.708, + "concentration_similarity": 0.781, + "content_similarity": 0.446, + "left_pr_number": 66404, + "right_pr_number": 69732, "shared_directories": [ - "src/logging", + "src/infra", "src" ], "shared_filenames": [ - "src/logging/subsystem.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.335, - "size_similarity": 0.134 + "similarity": 0.482, + "size_similarity": 0.402 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.987, - "content_similarity": 0.218, - "left_pr_number": 62415, - "right_pr_number": 67206, + "breadth_similarity": 0.542, + "concentration_similarity": 0.724, + "content_similarity": 0.413, + "left_pr_number": 65736, + "right_pr_number": 69732, "shared_directories": [ - "src/logging", + "src/infra", "src" ], "shared_filenames": [ - "src/logging/subsystem.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "similarity": 0.328, - "size_similarity": 0.541 + "similarity": 0.46, + "size_similarity": 0.54 } ], - "pr_count": 5, + "pr_count": 6, "pr_numbers": [ - 37549, - 62415, - 62482, - 65804, - 67206 + 62938, + 64663, + 65736, + 66404, + 68417, + 69732 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65804, - 67206 + 68417, + 69732 ], - "representative_pr_number": 37549, - "representative_title": "fix(logging): subsystem loggers now follow root logger rotation", - "representative_url": "https://github.com/openclaw/openclaw/pull/37549", + "representative_pr_number": 62938, + "representative_title": "fix(exec-approvals): respect OPENCLAW_STATE_DIR for store paths", + "representative_url": "https://github.com/openclaw/openclaw/pull/62938", "shared_directories": [ - "src/logging", + "src/infra", "src" ], "shared_filenames": [ - "src/logging/subsystem.ts", - "src/logging/state.ts", - "src/logging/subsystem.test.ts", - "src/logging/logger.ts" + "src/infra/exec-approvals-store.test.ts", + "src/infra/exec-approvals.ts" ], - "summary": "5 open PRs share weighted file overlap around `src/logging/subsystem.ts`, `src/logging/state.ts`, `src/logging/subsystem.test.ts`; representative PR #37549.", - "title": "Scope: fix(logging): subsystem loggers now follow root logger rotation" + "summary": "6 open PRs share weighted file overlap around `src/infra/exec-approvals-store.test.ts`, `src/infra/exec-approvals.ts`; representative PR #62938.", + "title": "Scope: fix(exec-approvals): respect OPENCLAW_STATE_DIR for store paths" }, { "authors": [ - "ggzeng", - "hxy91819" + "bohell", + "hieptuanle" ], - "average_similarity": 0.443, - "cluster_id": "pr-scope-63679-5", + "average_similarity": 0.408, + "cluster_id": "pr-scope-53604-6", "kind": "pr_scope", - "last_activity_at": "2026-04-15T11:39:33Z", + "last_activity_at": "2026-04-21T08:37:33Z", "outside_window_prs": [ { - "additions": 52, - "author": "ggzeng", - "changed_files": 6, - "created_at": "2026-04-09T09:58:18Z", - "deletions": 13, + "additions": 188, + "author": "Qinsam", + "changed_files": 4, + "created_at": "2026-03-24T10:04:00Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63679/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63679", + "files_url": "https://github.com/openclaw/openclaw/pull/53604/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53604", "merged": false, - "number": 63679, + "number": 53604, "state": "open", - "title": "fix: make readQaScenarioPack return null instead of throwing when files are missing", - "updated_at": "2026-04-10T17:15:30Z" + "title": "fix(mattermost): detect stale websocket after bot disable/enable cycle", + "updated_at": "2026-03-24T20:15:30Z" }, { - "additions": 111, - "author": "LiuHuaize", - "changed_files": 2, - "created_at": "2026-04-10T05:26:49Z", - "deletions": 12, + "additions": 106, + "author": "coygeek", + "changed_files": 9, + "created_at": "2026-04-11T00:08:56Z", + "deletions": 32, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64109/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64109", + "files_url": "https://github.com/openclaw/openclaw/pull/64546/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64546", "merged": false, - "number": 64109, + "number": 64546, "state": "open", - "title": "fix(qa-lab): avoid completion-cache install crash", - "updated_at": "2026-04-11T03:49:59Z" + "title": "fix: Mattermost interaction token forgeable via hardcoded HMAC...", + "updated_at": "2026-04-11T00:12:09Z" }, { - "additions": 69, - "author": "navarrotech", - "changed_files": 2, - "created_at": "2026-04-11T02:16:08Z", - "deletions": 1, + "additions": 148, + "author": "neeravmakwana", + "changed_files": 8, + "created_at": "2026-04-13T01:51:26Z", + "deletions": 22, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64594/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64594", + "files_url": "https://github.com/openclaw/openclaw/pull/65648/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65648", "merged": false, - "number": 64594, + "number": 65648, "state": "open", - "title": "fix(qa-lab): do not crash CLI startup when qa scenario pack is absent", - "updated_at": "2026-04-12T01:10:17Z" + "title": "fix(mattermost): harden native slash command callbacks", + "updated_at": "2026-04-13T02:48:40Z" + }, + { + "additions": 119, + "author": "coygeek", + "changed_files": 8, + "created_at": "2026-04-13T02:08:19Z", + "deletions": 32, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65655/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65655", + "merged": false, + "number": 65655, + "state": "open", + "title": "fix: harden Mattermost slash callback auth", + "updated_at": "2026-04-13T02:11:39Z" } ], "pairwise": [ { - "breadth_similarity": 0.625, - "concentration_similarity": 0.73, - "content_similarity": 0.892, - "left_pr_number": 63679, - "right_pr_number": 66749, + "breadth_similarity": 0.833, + "concentration_similarity": 0.92, + "content_similarity": 0.889, + "left_pr_number": 65648, + "right_pr_number": 65655, "shared_directories": [ - "extensions/qa-lab/src", - "extensions/qa-lab", + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", "extensions" ], "shared_filenames": [ - "extensions/qa-lab/src/lab-server.ts", - "extensions/qa-lab/src/qa-agent-bootstrap.ts", - "extensions/qa-lab/src/qa-agent-workspace.ts", - "extensions/qa-lab/src/scenario-catalog.test.ts", - "extensions/qa-lab/src/scenario-catalog.ts", - "extensions/qa-lab/src/suite.ts" + "extensions/mattermost/src/mattermost/monitor-slash.test.ts", + "extensions/mattermost/src/mattermost/monitor-slash.ts", + "extensions/mattermost/src/mattermost/slash-http.send-config.test.ts", + "extensions/mattermost/src/mattermost/slash-http.test.ts", + "extensions/mattermost/src/mattermost/slash-http.ts", + "extensions/mattermost/src/mattermost/slash-state.ts" ], - "similarity": 0.833, - "size_similarity": 0.73 + "similarity": 0.885, + "size_similarity": 0.888 }, { - "breadth_similarity": 0.667, + "breadth_similarity": 0.625, "concentration_similarity": 1.0, - "content_similarity": 0.509, - "left_pr_number": 63679, - "right_pr_number": 64594, + "content_similarity": 0.629, + "left_pr_number": 53604, + "right_pr_number": 68737, "shared_directories": [ - "extensions/qa-lab/src", - "extensions/qa-lab", + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", "extensions" ], "shared_filenames": [ - "extensions/qa-lab/src/scenario-catalog.test.ts", - "extensions/qa-lab/src/scenario-catalog.ts" + "extensions/mattermost/src/mattermost/monitor-websocket.ts" ], - "similarity": 0.612, - "size_similarity": 0.929 + "similarity": 0.583, + "size_similarity": 0.2 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.73, - "content_similarity": 0.454, - "left_pr_number": 64594, - "right_pr_number": 66749, + "breadth_similarity": 0.944, + "concentration_similarity": 0.846, + "content_similarity": 0.24, + "left_pr_number": 64546, + "right_pr_number": 65648, "shared_directories": [ - "extensions/qa-lab/src", - "extensions/qa-lab", + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", "extensions" ], - "shared_filenames": [ - "extensions/qa-lab/src/scenario-catalog.test.ts", - "extensions/qa-lab/src/scenario-catalog.ts" - ], - "similarity": 0.51, - "size_similarity": 0.787 + "shared_filenames": [], + "similarity": 0.426, + "size_similarity": 0.812 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.202, - "left_pr_number": 64594, - "right_pr_number": 67142, + "breadth_similarity": 0.778, + "concentration_similarity": 0.927, + "content_similarity": 0.226, + "left_pr_number": 64546, + "right_pr_number": 65655, "shared_directories": [ - "extensions/qa-lab/src", - "extensions/qa-lab", + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", "extensions" ], "shared_filenames": [], - "similarity": 0.409, - "size_similarity": 0.787 + "similarity": 0.419, + "size_similarity": 0.914 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.191, - "left_pr_number": 64109, - "right_pr_number": 67142, + "breadth_similarity": 0.5, + "concentration_similarity": 0.994, + "content_similarity": 0.261, + "left_pr_number": 53604, + "right_pr_number": 65648, "shared_directories": [ - "extensions/qa-lab/src", - "extensions/qa-lab", + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", "extensions" ], "shared_filenames": [], - "similarity": 0.392, - "size_similarity": 0.724 + "similarity": 0.417, + "size_similarity": 0.895 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.205, - "left_pr_number": 64109, - "right_pr_number": 64594, + "content_similarity": 0.274, + "left_pr_number": 68737, + "right_pr_number": 69038, "shared_directories": [ - "extensions/qa-lab/src", - "extensions/qa-lab", + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.409, + "size_similarity": 0.447 + }, + { + "breadth_similarity": 0.312, + "concentration_similarity": 0.994, + "content_similarity": 0.427, + "left_pr_number": 65648, + "right_pr_number": 69038, + "shared_directories": [ + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", + "extensions" + ], + "shared_filenames": [ + "extensions/mattermost/src/mattermost/slash-state.ts" + ], + "similarity": 0.395, + "size_similarity": 0.1 + }, + { + "breadth_similarity": 0.472, + "concentration_similarity": 0.841, + "content_similarity": 0.272, + "left_pr_number": 53604, + "right_pr_number": 64546, + "shared_directories": [ + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", + "extensions" + ], + "shared_filenames": [ + "extensions/mattermost/src/mattermost/monitor.ts" + ], + "similarity": 0.388, + "size_similarity": 0.726 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.914, + "content_similarity": 0.246, + "left_pr_number": 53604, + "right_pr_number": 65655, + "shared_directories": [ + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", "extensions" ], "shared_filenames": [], "similarity": 0.379, - "size_similarity": 0.569 + "size_similarity": 0.795 }, { - "breadth_similarity": 0.667, + "breadth_similarity": 0.229, + "concentration_similarity": 0.914, + "content_similarity": 0.413, + "left_pr_number": 65655, + "right_pr_number": 69038, + "shared_directories": [ + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", + "extensions" + ], + "shared_filenames": [ + "extensions/mattermost/src/mattermost/slash-state.ts" + ], + "similarity": 0.374, + "size_similarity": 0.113 + }, + { + "breadth_similarity": 0.625, "concentration_similarity": 1.0, - "content_similarity": 0.176, - "left_pr_number": 63679, - "right_pr_number": 67142, + "content_similarity": 0.283, + "left_pr_number": 53604, + "right_pr_number": 69038, "shared_directories": [ - "extensions/qa-lab/src", - "extensions/qa-lab", + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", "extensions" ], "shared_filenames": [], - "similarity": 0.35, - "size_similarity": 0.73 + "similarity": 0.324, + "size_similarity": 0.089 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.73, - "content_similarity": 0.157, - "left_pr_number": 66749, - "right_pr_number": 67142, + "breadth_similarity": 0.312, + "concentration_similarity": 0.994, + "content_similarity": 0.252, + "left_pr_number": 65648, + "right_pr_number": 68737, "shared_directories": [ - "extensions/qa-lab/src", - "extensions/qa-lab", + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", "extensions" ], "shared_filenames": [], - "similarity": 0.334, - "size_similarity": 1.0 + "similarity": 0.291, + "size_similarity": 0.224 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 1.0, - "content_similarity": 0.179, - "left_pr_number": 63679, - "right_pr_number": 64109, + "breadth_similarity": 0.306, + "concentration_similarity": 0.841, + "content_similarity": 0.24, + "left_pr_number": 64546, + "right_pr_number": 68737, "shared_directories": [ - "extensions/qa-lab/src", - "extensions/qa-lab", + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", "extensions" ], "shared_filenames": [], - "similarity": 0.321, - "size_similarity": 0.528 + "similarity": 0.282, + "size_similarity": 0.275 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.73, - "content_similarity": 0.16, - "left_pr_number": 64109, - "right_pr_number": 66749, + "breadth_similarity": 0.306, + "concentration_similarity": 0.841, + "content_similarity": 0.26, + "left_pr_number": 64546, + "right_pr_number": 69038, "shared_directories": [ - "extensions/qa-lab/src", - "extensions/qa-lab", + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", "extensions" ], "shared_filenames": [], - "similarity": 0.294, - "size_similarity": 0.724 + "similarity": 0.273, + "size_similarity": 0.123 + }, + { + "breadth_similarity": 0.229, + "concentration_similarity": 0.914, + "content_similarity": 0.237, + "left_pr_number": 65655, + "right_pr_number": 68737, + "shared_directories": [ + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.272, + "size_similarity": 0.252 } ], - "pr_count": 5, + "pr_count": 6, "pr_numbers": [ - 63679, - 64109, - 64594, - 66749, - 67142 + 53604, + 64546, + 65648, + 65655, + 68737, + 69038 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66749, - 67142 + 68737, + 69038 ], - "representative_pr_number": 63679, - "representative_title": "fix: make readQaScenarioPack return null instead of throwing when files are missing", - "representative_url": "https://github.com/openclaw/openclaw/pull/63679", + "representative_pr_number": 65648, + "representative_title": "fix(mattermost): harden native slash command callbacks", + "representative_url": "https://github.com/openclaw/openclaw/pull/65648", "shared_directories": [ - "extensions/qa-lab/src", - "extensions/qa-lab", + "extensions/mattermost/src/mattermost", + "extensions/mattermost/src", + "extensions/mattermost", "extensions" ], "shared_filenames": [ - "extensions/qa-lab/src/scenario-catalog.ts", - "extensions/qa-lab/src/scenario-catalog.test.ts", - "extensions/qa-lab/src/qa-agent-bootstrap.ts", - "extensions/qa-lab/src/qa-agent-workspace.ts", - "extensions/qa-lab/src/lab-server.ts", - "extensions/qa-lab/src/suite.ts" + "extensions/mattermost/src/mattermost/slash-state.ts", + "extensions/mattermost/src/mattermost/monitor-slash.ts", + "extensions/mattermost/src/mattermost/slash-http.test.ts", + "extensions/mattermost/src/mattermost/monitor-slash.test.ts", + "extensions/mattermost/src/mattermost/slash-http.send-config.test.ts", + "extensions/mattermost/src/mattermost/slash-http.ts", + "extensions/mattermost/src/mattermost/monitor-websocket.ts", + "extensions/mattermost/src/mattermost/monitor.ts" ], - "summary": "5 open PRs share weighted file overlap around `extensions/qa-lab/src/scenario-catalog.ts`, `extensions/qa-lab/src/scenario-catalog.test.ts`, `extensions/qa-lab/src/qa-agent-bootstrap.ts`; representative PR #63679.", - "title": "Scope: fix: make readQaScenarioPack return null instead of throwing when files are missing" + "summary": "6 open PRs share weighted file overlap around `extensions/mattermost/src/mattermost/slash-state.ts`, `extensions/mattermost/src/mattermost/monitor-slash.ts`, `extensions/mattermost/src/mattermost/slash-http.test.ts`; representative PR #65648.", + "title": "Scope: fix(mattermost): harden native slash command callbacks" }, { "authors": [ - "henkterharmsel", - "rocklobster-ai" + "VACInc", + "henkterharmsel" ], - "average_similarity": 0.535, - "cluster_id": "pr-scope-36619-4", + "average_similarity": 0.402, + "cluster_id": "pr-scope-37863-6", "kind": "pr_scope", - "last_activity_at": "2026-04-18T12:57:11Z", + "last_activity_at": "2026-04-21T16:02:00Z", "outside_window_prs": [ { - "additions": 12, - "author": "yashmakhija", + "additions": 39, + "author": "matt-from-uk", + "changed_files": 2, + "created_at": "2026-03-06T13:44:27Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37863/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37863", + "merged": false, + "number": 37863, + "state": "open", + "title": "fix(sessions): preserve idle reset timestamp in updateLastRoute", + "updated_at": "2026-04-20T04:38:16Z" + }, + { + "additions": 6, + "author": "Erik-Huang", "changed_files": 1, - "created_at": "2026-03-05T19:26:24Z", - "deletions": 12, + "created_at": "2026-03-06T18:43:17Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36619/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36619", + "files_url": "https://github.com/openclaw/openclaw/pull/38268/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38268", "merged": false, - "number": 36619, + "number": 38268, "state": "open", - "title": "fix(sessions): always cleanup archived files in base sessions directory", - "updated_at": "2026-04-18T04:22:46Z" + "title": "fix(sessions): updateLastRoute should not bump updatedAt", + "updated_at": "2026-04-21T04:30:09Z" }, { - "additions": 17, - "author": "neocody", - "changed_files": 2, - "created_at": "2026-03-05T19:34:31Z", - "deletions": 0, + "additions": 448, + "author": "ryanfrigo", + "changed_files": 3, + "created_at": "2026-03-06T19:49:50Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36629/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36629", + "files_url": "https://github.com/openclaw/openclaw/pull/38297/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38297", "merged": false, - "number": 36629, + "number": 38297, "state": "open", - "title": "fix(sessions): always cleanup .deleted files during maintenance", - "updated_at": "2026-04-18T04:22:55Z" + "title": "feat: write-behind session store with optional filesystem lock bypass", + "updated_at": "2026-04-21T04:30:27Z" + }, + { + "additions": 86, + "author": "rocklobster-ai", + "changed_files": 3, + "created_at": "2026-04-13T21:52:33Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66174/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66174", + "merged": false, + "number": 66174, + "state": "open", + "title": "Fix session transcript path canonicalization on save", + "updated_at": "2026-04-13T21:59:13Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.843, - "left_pr_number": 36619, + "content_similarity": 0.509, + "left_pr_number": 66174, + "right_pr_number": 69772, + "shared_directories": [ + "src/config/sessions", + "src/config", + "src" + ], + "shared_filenames": [ + "src/config/sessions/store.pruning.integration.test.ts", + "src/config/sessions/store.ts" + ], + "similarity": 0.584, + "size_similarity": 0.518 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.414, + "left_pr_number": 38268, "right_pr_number": 68554, "shared_directories": [ "src/config/sessions", @@ -24719,15 +23854,15 @@ "shared_filenames": [ "src/config/sessions/store.ts" ], - "similarity": 0.784, - "size_similarity": 0.292 + "similarity": 0.571, + "size_similarity": 0.875 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.529, - "content_similarity": 0.655, - "left_pr_number": 36619, - "right_pr_number": 36629, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.539, + "left_pr_number": 37863, + "right_pr_number": 38268, "shared_directories": [ "src/config/sessions", "src/config", @@ -24736,15 +23871,15 @@ "shared_filenames": [ "src/config/sessions/store.ts" ], - "similarity": 0.641, - "size_similarity": 0.708 + "similarity": 0.529, + "size_similarity": 0.178 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.529, - "content_similarity": 0.561, - "left_pr_number": 36629, - "right_pr_number": 68554, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.489, + "left_pr_number": 38297, + "right_pr_number": 66174, "shared_directories": [ "src/config/sessions", "src/config", @@ -24753,14 +23888,31 @@ "shared_filenames": [ "src/config/sessions/store.ts" ], - "similarity": 0.531, - "size_similarity": 0.412 + "similarity": 0.521, + "size_similarity": 0.192 }, { "breadth_similarity": 0.667, "concentration_similarity": 1.0, - "content_similarity": 0.513, - "left_pr_number": 36619, + "content_similarity": 0.432, + "left_pr_number": 38268, + "right_pr_number": 38297, + "shared_directories": [ + "src/config/sessions", + "src/config", + "src" + ], + "shared_filenames": [ + "src/config/sessions/store.ts" + ], + "similarity": 0.422, + "size_similarity": 0.018 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.4, + "left_pr_number": 38268, "right_pr_number": 66174, "shared_directories": [ "src/config/sessions", @@ -24770,13 +23922,30 @@ "shared_filenames": [ "src/config/sessions/store.ts" ], - "similarity": 0.517, - "size_similarity": 0.276 + "similarity": 0.411, + "size_similarity": 0.092 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.284, + "left_pr_number": 37863, + "right_pr_number": 66174, + "shared_directories": [ + "src/config/sessions", + "src/config", + "src" + ], + "shared_filenames": [ + "src/config/sessions/store.ts" + ], + "similarity": 0.41, + "size_similarity": 0.517 }, { "breadth_similarity": 0.667, "concentration_similarity": 1.0, - "content_similarity": 0.406, + "content_similarity": 0.399, "left_pr_number": 66174, "right_pr_number": 68554, "shared_directories": [ @@ -24787,15 +23956,15 @@ "shared_filenames": [ "src/config/sessions/store.ts" ], - "similarity": 0.413, + "similarity": 0.408, "size_similarity": 0.08 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.529, - "content_similarity": 0.299, - "left_pr_number": 36629, - "right_pr_number": 66174, + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.393, + "left_pr_number": 38297, + "right_pr_number": 68554, "shared_directories": [ "src/config/sessions", "src/config", @@ -24804,1336 +23973,1632 @@ "shared_filenames": [ "src/config/sessions/store.ts" ], - "similarity": 0.323, - "size_similarity": 0.195 + "similarity": 0.394, + "size_similarity": 0.015 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.291, + "left_pr_number": 37863, + "right_pr_number": 38297, + "shared_directories": [ + "src/config/sessions", + "src/config", + "src" + ], + "shared_filenames": [ + "src/config/sessions/store.ts" + ], + "similarity": 0.352, + "size_similarity": 0.099 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.285, + "left_pr_number": 37863, + "right_pr_number": 68554, + "shared_directories": [ + "src/config/sessions", + "src/config", + "src" + ], + "shared_filenames": [ + "src/config/sessions/store.ts" + ], + "similarity": 0.348, + "size_similarity": 0.156 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.159, + "left_pr_number": 38297, + "right_pr_number": 69772, + "shared_directories": [ + "src/config/sessions", + "src/config", + "src" + ], + "shared_filenames": [ + "src/config/sessions/store.ts" + ], + "similarity": 0.317, + "size_similarity": 0.371 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.17, + "left_pr_number": 37863, + "right_pr_number": 69772, + "shared_directories": [ + "src/config/sessions", + "src/config", + "src" + ], + "shared_filenames": [ + "src/config/sessions/store.ts" + ], + "similarity": 0.293, + "size_similarity": 0.268 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.157, + "left_pr_number": 38268, + "right_pr_number": 69772, + "shared_directories": [ + "src/config/sessions", + "src/config", + "src" + ], + "shared_filenames": [ + "src/config/sessions/store.ts" + ], + "similarity": 0.233, + "size_similarity": 0.048 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.156, + "left_pr_number": 68554, + "right_pr_number": 69772, + "shared_directories": [ + "src/config/sessions", + "src/config", + "src" + ], + "shared_filenames": [ + "src/config/sessions/store.ts" + ], + "similarity": 0.232, + "size_similarity": 0.042 } ], - "pr_count": 4, + "pr_count": 6, "pr_numbers": [ - 36619, - 36629, + 37863, + 38268, + 38297, 66174, - 68554 + 68554, + 69772 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66174, - 68554 + 68554, + 69772 ], - "representative_pr_number": 36619, - "representative_title": "fix(sessions): always cleanup archived files in base sessions directory", - "representative_url": "https://github.com/openclaw/openclaw/pull/36619", + "representative_pr_number": 66174, + "representative_title": "Fix session transcript path canonicalization on save", + "representative_url": "https://github.com/openclaw/openclaw/pull/66174", "shared_directories": [ "src/config/sessions", "src/config", "src" ], "shared_filenames": [ - "src/config/sessions/store.ts" + "src/config/sessions/store.ts", + "src/config/sessions/store.pruning.integration.test.ts" ], - "summary": "4 open PRs share weighted file overlap around `src/config/sessions/store.ts`; representative PR #36619.", - "title": "Scope: fix(sessions): always cleanup archived files in base sessions directory" + "summary": "6 open PRs share weighted file overlap around `src/config/sessions/store.ts`, `src/config/sessions/store.pruning.integration.test.ts`; representative PR #66174.", + "title": "Scope: Fix session transcript path canonicalization on save" }, { "authors": [ - "javierdici", - "pandego" + "MonkeyLeeT", + "mrlane2k" ], - "average_similarity": 0.508, - "cluster_id": "pr-scope-50483-4", + "average_similarity": 0.375, + "cluster_id": "pr-scope-50200-6", "kind": "pr_scope", - "last_activity_at": "2026-04-18T16:36:29Z", + "last_activity_at": "2026-04-21T16:25:03Z", "outside_window_prs": [ { - "additions": 403, - "author": "eulicesl", - "changed_files": 6, - "created_at": "2026-03-19T15:11:39Z", - "deletions": 17, + "additions": 99, + "author": "smartchainark", + "changed_files": 5, + "created_at": "2026-03-19T04:32:52Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/50483/files", - "html_url": "https://github.com/openclaw/openclaw/pull/50483", + "files_url": "https://github.com/openclaw/openclaw/pull/50200/files", + "html_url": "https://github.com/openclaw/openclaw/pull/50200", "merged": false, - "number": 50483, + "number": 50200, "state": "open", - "title": "fix(ios): stabilize chat streaming layout and session flow", - "updated_at": "2026-04-17T17:08:24Z" + "title": "fix(slack): fetch fresh download URL via files.info for DM file attachments", + "updated_at": "2026-04-17T16:49:00Z" }, { - "additions": 1690, - "author": "kakahu2015", - "changed_files": 17, - "created_at": "2026-04-09T10:47:43Z", - "deletions": 504, + "additions": 133, + "author": "hanamizuki", + "changed_files": 7, + "created_at": "2026-03-24T06:32:38Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63697/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63697", + "files_url": "https://github.com/openclaw/openclaw/pull/53467/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53467", "merged": false, - "number": 63697, + "number": 53467, "state": "open", - "title": "[codex] iOS Chat: route slash commands through gateway", - "updated_at": "2026-04-11T14:40:53Z" + "title": "feat(slack): add ignoreOtherMentions channel config", + "updated_at": "2026-04-17T16:06:02Z" + }, + { + "additions": 176, + "author": "yozu", + "changed_files": 8, + "created_at": "2026-04-13T03:38:55Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65691/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65691", + "merged": false, + "number": 65691, + "state": "open", + "title": "feat(slack): add message search support via search.messages API", + "updated_at": "2026-04-14T11:18:06Z" + }, + { + "additions": 216, + "author": "yangxiyucs", + "changed_files": 3, + "created_at": "2026-04-13T14:23:50Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65980/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65980", + "merged": false, + "number": 65980, + "state": "open", + "title": "fix(slack): render inbound user mentions in message bodies", + "updated_at": "2026-04-14T11:45:14Z" } ], "pairwise": [ { - "breadth_similarity": 0.833, - "concentration_similarity": 0.908, - "content_similarity": 0.695, - "left_pr_number": 50483, - "right_pr_number": 65689, - "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI", - "apps/shared/OpenClawKit/Tests/OpenClawKitTests", - "apps/shared/OpenClawKit/Sources", - "apps/shared/OpenClawKit/Tests", - "apps/shared/OpenClawKit", - "apps/shared", - "apps" + "breadth_similarity": 0.339, + "concentration_similarity": 0.816, + "content_similarity": 0.525, + "left_pr_number": 53467, + "right_pr_number": 65980, + "shared_directories": [ + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" ], "shared_filenames": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift", - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift", - "apps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatViewModelTests.swift" + "extensions/slack/src/monitor/message-handler/prepare.test.ts", + "extensions/slack/src/monitor/message-handler/prepare.ts" ], - "similarity": 0.65, - "size_similarity": 0.236 + "similarity": 0.535, + "size_similarity": 0.621 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.807, - "content_similarity": 0.566, - "left_pr_number": 65689, - "right_pr_number": 68641, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.337, + "left_pr_number": 65980, + "right_pr_number": 67872, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI", - "apps/shared/OpenClawKit/Tests/OpenClawKitTests", - "apps/shared/OpenClawKit/Sources", - "apps/shared/OpenClawKit/Tests", - "apps/shared/OpenClawKit", - "apps/shared", - "apps" + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" ], "shared_filenames": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatModels.swift" + "extensions/slack/src/monitor/message-handler/prepare.ts" ], - "similarity": 0.602, - "size_similarity": 0.516 + "similarity": 0.494, + "size_similarity": 0.831 }, { - "breadth_similarity": 0.343, - "concentration_similarity": 0.905, - "content_similarity": 0.566, - "left_pr_number": 50483, - "right_pr_number": 63697, + "breadth_similarity": 0.268, + "concentration_similarity": 0.816, + "content_similarity": 0.416, + "left_pr_number": 53467, + "right_pr_number": 67872, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI", - "apps/shared/OpenClawKit/Tests/OpenClawKitTests", - "apps/shared/OpenClawKit/Sources", - "apps/shared/OpenClawKit/Tests", - "apps/shared/OpenClawKit", - "apps/shared", - "apps" + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" ], "shared_filenames": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift", - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift", - "apps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatViewModelTests.swift" + "extensions/slack/src/monitor/message-handler/prepare.ts" ], - "similarity": 0.505, - "size_similarity": 0.191 + "similarity": 0.471, + "size_similarity": 0.747 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.899, - "content_similarity": 0.408, - "left_pr_number": 50483, - "right_pr_number": 68641, + "breadth_similarity": 0.55, + "concentration_similarity": 0.95, + "content_similarity": 0.344, + "left_pr_number": 50200, + "right_pr_number": 65980, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI", - "apps/shared/OpenClawKit/Tests/OpenClawKitTests", - "apps/shared/OpenClawKit/Sources", - "apps/shared/OpenClawKit/Tests", - "apps/shared/OpenClawKit", - "apps/shared", - "apps" + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" ], "shared_filenames": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatModels.swift" + "extensions/slack/src/monitor/message-handler/prepare-content.ts", + "extensions/slack/src/monitor/message-handler/prepare.ts" ], - "similarity": 0.474, + "similarity": 0.412, "size_similarity": 0.457 }, { - "breadth_similarity": 0.284, - "concentration_similarity": 0.813, - "content_similarity": 0.476, - "left_pr_number": 63697, - "right_pr_number": 65689, + "breadth_similarity": 0.607, + "concentration_similarity": 0.866, + "content_similarity": 0.259, + "left_pr_number": 50200, + "right_pr_number": 53467, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI", - "apps/shared/OpenClawKit/Tests/OpenClawKitTests", - "apps/shared/OpenClawKit/Sources", - "apps/shared/OpenClawKit/Tests", - "apps/shared/OpenClawKit", - "apps/shared", - "apps" + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" ], "shared_filenames": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift", - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift", - "apps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatViewModelTests.swift" + "extensions/slack/src/monitor/message-handler/prepare.ts" ], - "similarity": 0.409, - "size_similarity": 0.045 + "similarity": 0.395, + "size_similarity": 0.735 }, { - "breadth_similarity": 0.255, - "concentration_similarity": 0.994, - "content_similarity": 0.457, - "left_pr_number": 63697, - "right_pr_number": 68641, + "breadth_similarity": 0.7, + "concentration_similarity": 1.0, + "content_similarity": 0.144, + "left_pr_number": 67872, + "right_pr_number": 69429, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI", - "apps/shared/OpenClawKit/Tests/OpenClawKitTests", - "apps/shared/OpenClawKit/Sources", - "apps/shared/OpenClawKit/Tests", - "apps/shared/OpenClawKit", - "apps/shared", - "apps" - ], - "shared_filenames": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift" + "extensions/slack/src", + "extensions/slack", + "extensions" ], - "similarity": 0.408, - "size_similarity": 0.088 - } - ], - "pr_count": 4, - "pr_numbers": [ - 50483, - 63697, - 65689, - 68641 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 65689, - 68641 - ], - "representative_pr_number": 65689, - "representative_title": "Render provider errors in chat history", - "representative_url": "https://github.com/openclaw/openclaw/pull/65689", - "shared_directories": [ - "apps/shared/OpenClawKit/Tests/OpenClawKitTests", - "apps/shared/OpenClawKit/Sources/OpenClawChatUI", - "apps/shared/OpenClawKit/Tests", - "apps/shared/OpenClawKit/Sources", - "apps/shared/OpenClawKit", - "apps/shared", - "apps" - ], - "shared_filenames": [ - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift", - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift", - "apps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatViewModelTests.swift", - "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift" - ], - "summary": "4 open PRs share weighted file overlap around `apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatModels.swift`, `apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift`, `apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift`; representative PR #65689.", - "title": "Scope: Render provider errors in chat history" - }, - { - "authors": [ - "poiskgit", - "xuanmingguo" - ], - "average_similarity": 0.485, - "cluster_id": "pr-scope-53762-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T15:29:06Z", - "outside_window_prs": [ - { - "additions": 59, - "author": "amitgaur", - "changed_files": 3, - "created_at": "2026-03-24T15:16:57Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53762/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53762", - "merged": false, - "number": 53762, - "state": "open", - "title": "fix(telegram): flush buffered final answer when reasoning delivery is skipped [AI-assisted]", - "updated_at": "2026-03-24T20:15:29Z" + "shared_filenames": [], + "similarity": 0.37, + "size_similarity": 0.995 }, { - "additions": 34, - "author": "ShionEria", - "changed_files": 2, - "created_at": "2026-04-10T13:04:25Z", - "deletions": 6, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64314/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64314", - "merged": false, - "number": 64314, - "state": "open", - "title": "fix(telegram): keep tool media after text preview", - "updated_at": "2026-04-10T13:05:32Z" - } - ], - "pairwise": [ - { - "breadth_similarity": 0.583, - "concentration_similarity": 0.983, - "content_similarity": 0.542, - "left_pr_number": 53762, - "right_pr_number": 64314, + "breadth_similarity": 0.45, + "concentration_similarity": 0.95, + "content_similarity": 0.265, + "left_pr_number": 50200, + "right_pr_number": 67872, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", "extensions" ], "shared_filenames": [ - "extensions/telegram/src/bot-message-dispatch.test.ts" + "extensions/slack/src/monitor/message-handler/prepare.ts" ], - "similarity": 0.589, - "size_similarity": 0.678 + "similarity": 0.36, + "size_similarity": 0.549 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.983, - "content_similarity": 0.603, - "left_pr_number": 53762, - "right_pr_number": 68067, + "breadth_similarity": 0.8, + "concentration_similarity": 1.0, + "content_similarity": 0.145, + "left_pr_number": 65980, + "right_pr_number": 69429, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", + "extensions/slack/src", + "extensions/slack", "extensions" ], - "shared_filenames": [ - "extensions/telegram/src/bot-message-dispatch.test.ts", - "extensions/telegram/src/bot-message-dispatch.ts" - ], - "similarity": 0.576, - "size_similarity": 0.203 + "shared_filenames": [], + "similarity": 0.356, + "size_similarity": 0.826 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.521, - "left_pr_number": 64314, - "right_pr_number": 68067, + "breadth_similarity": 0.562, + "concentration_similarity": 0.966, + "content_similarity": 0.147, + "left_pr_number": 65691, + "right_pr_number": 69429, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", + "extensions/slack/src", + "extensions/slack", "extensions" ], - "shared_filenames": [ - "extensions/telegram/src/bot-message-dispatch.test.ts" - ], - "similarity": 0.518, - "size_similarity": 0.137 + "shared_filenames": [], + "similarity": 0.355, + "size_similarity": 0.983 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.983, - "content_similarity": 0.331, - "left_pr_number": 53762, - "right_pr_number": 66932, + "breadth_similarity": 0.375, + "concentration_similarity": 0.966, + "content_similarity": 0.137, + "left_pr_number": 65691, + "right_pr_number": 67872, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", + "extensions/slack/src", + "extensions/slack", "extensions" ], - "shared_filenames": [ - "extensions/telegram/src/bot-message-dispatch.ts" + "shared_filenames": [], + "similarity": 0.329, + "size_similarity": 0.978 + }, + { + "breadth_similarity": 0.688, + "concentration_similarity": 0.85, + "content_similarity": 0.133, + "left_pr_number": 53467, + "right_pr_number": 65691, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions", + "src" ], - "similarity": 0.444, - "size_similarity": 0.814 + "shared_filenames": [], + "similarity": 0.319, + "size_similarity": 0.764 }, { - "breadth_similarity": 0.667, - "concentration_similarity": 1.0, - "content_similarity": 0.406, - "left_pr_number": 66932, - "right_pr_number": 68067, + "breadth_similarity": 0.438, + "concentration_similarity": 0.966, + "content_similarity": 0.139, + "left_pr_number": 65691, + "right_pr_number": 65980, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", + "extensions/slack/src", + "extensions/slack", "extensions" ], - "shared_filenames": [ - "extensions/telegram/src/bot-message-dispatch.ts" + "shared_filenames": [], + "similarity": 0.311, + "size_similarity": 0.813 + }, + { + "breadth_similarity": 0.812, + "concentration_similarity": 0.984, + "content_similarity": 0.134, + "left_pr_number": 50200, + "right_pr_number": 65691, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" ], - "similarity": 0.426, - "size_similarity": 0.165 + "shared_filenames": [], + "similarity": 0.309, + "size_similarity": 0.562 }, { "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.152, - "left_pr_number": 64314, - "right_pr_number": 66932, + "concentration_similarity": 0.95, + "content_similarity": 0.141, + "left_pr_number": 50200, + "right_pr_number": 69429, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", + "extensions/slack/src", + "extensions/slack", "extensions" ], "shared_filenames": [], - "similarity": 0.356, - "size_similarity": 0.833 + "similarity": 0.304, + "size_similarity": 0.552 + }, + { + "breadth_similarity": 0.482, + "concentration_similarity": 0.816, + "content_similarity": 0.139, + "left_pr_number": 53467, + "right_pr_number": 69429, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.299, + "size_similarity": 0.751 } ], - "pr_count": 4, + "pr_count": 6, "pr_numbers": [ - 53762, - 64314, - 66932, - 68067 + 50200, + 53467, + 65691, + 65980, + 67872, + 69429 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66932, - 68067 + 67872, + 69429 ], - "representative_pr_number": 53762, - "representative_title": "fix(telegram): flush buffered final answer when reasoning delivery is skipped [AI-assisted]", - "representative_url": "https://github.com/openclaw/openclaw/pull/53762", + "representative_pr_number": 65980, + "representative_title": "fix(slack): render inbound user mentions in message bodies", + "representative_url": "https://github.com/openclaw/openclaw/pull/65980", "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "extensions/slack/src", + "extensions/slack", + "extensions", + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "src" ], "shared_filenames": [ - "extensions/telegram/src/bot-message-dispatch.ts", - "extensions/telegram/src/bot-message-dispatch.test.ts" + "extensions/slack/src/monitor/message-handler/prepare.ts", + "extensions/slack/src/monitor/message-handler/prepare-content.ts", + "extensions/slack/src/monitor/message-handler/prepare.test.ts" ], - "summary": "4 open PRs share weighted file overlap around `extensions/telegram/src/bot-message-dispatch.ts`, `extensions/telegram/src/bot-message-dispatch.test.ts`; representative PR #53762.", - "title": "Scope: fix(telegram): flush buffered final answer when reasoning delivery is skipped [AI-assisted]" + "summary": "6 open PRs share weighted file overlap around `extensions/slack/src/monitor/message-handler/prepare.ts`, `extensions/slack/src/monitor/message-handler/prepare-content.ts`, `extensions/slack/src/monitor/message-handler/prepare.test.ts`; representative PR #65980.", + "title": "Scope: fix(slack): render inbound user mentions in message bodies" }, { "authors": [ - "plgonzalezrx8" + "jack-ra", + "joeia26" ], - "average_similarity": 0.482, - "cluster_id": "pr-scope-65124-4", + "average_similarity": 0.708, + "cluster_id": "pr-scope-63656-5", "kind": "pr_scope", - "last_activity_at": "2026-04-17T02:23:56Z", + "last_activity_at": "2026-04-21T06:49:58Z", "outside_window_prs": [ { - "additions": 1, - "author": "mr-kelly", - "changed_files": 1, - "created_at": "2026-04-12T02:56:34Z", - "deletions": 0, + "additions": 89, + "author": "eyev0", + "changed_files": 5, + "created_at": "2026-04-09T09:16:53Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65124/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65124", + "files_url": "https://github.com/openclaw/openclaw/pull/63656/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63656", "merged": false, - "number": 65124, + "number": 63656, "state": "open", - "title": "fix: [Bug]: Completion cache update failed due to missing qa/scenarios/index.md in npm package", - "updated_at": "2026-04-12T03:02:38Z" + "title": "fix(acp): route /acp lifecycle commands to local handlers", + "updated_at": "2026-04-13T11:51:53Z" }, { - "additions": 1, - "author": "mr-kelly", - "changed_files": 1, - "created_at": "2026-04-12T02:58:12Z", - "deletions": 1, + "additions": 70, + "author": "sercada", + "changed_files": 2, + "created_at": "2026-04-12T08:11:04Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65128/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65128", + "files_url": "https://github.com/openclaw/openclaw/pull/65248/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65248", "merged": false, - "number": 65128, + "number": 65248, "state": "open", - "title": "fix: [Bug]: Browser tool SSRF policy blocks all hostname URLs", - "updated_at": "2026-04-12T03:01:28Z" + "title": "fix(acp): bypass bound slash commands to local handlers", + "updated_at": "2026-04-12T14:27:05Z" + }, + { + "additions": 138, + "author": "kindomLee", + "changed_files": 4, + "created_at": "2026-04-14T07:46:43Z", + "deletions": 13, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66407/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66407", + "merged": false, + "number": 66407, + "state": "open", + "title": "fix(acp): bypass ACP dispatch for /acp text commands in bound threads", + "updated_at": "2026-04-21T06:49:55Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.986, - "left_pr_number": 65124, - "right_pr_number": 65128, + "content_similarity": 0.977, + "left_pr_number": 65248, + "right_pr_number": 68407, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser/navigation-guard.ts" + "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", + "src/auto-reply/reply/dispatch-acp-command-bypass.ts" ], - "similarity": 0.915, - "size_similarity": 0.5 + "similarity": 0.899, + "size_similarity": 0.436 }, { - "breadth_similarity": 0.633, - "concentration_similarity": 0.857, - "content_similarity": 0.609, - "left_pr_number": 67654, - "right_pr_number": 67862, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.886, + "left_pr_number": 65248, + "right_pr_number": 66407, "shared_directories": [ - "extensions/browser/src/browser/routes", - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser/navigation-guard.test.ts", - "extensions/browser/src/browser/navigation-guard.ts", - "extensions/browser/src/browser/routes/tabs.attach-only.test.ts" + "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", + "src/auto-reply/reply/dispatch-acp-command-bypass.ts" ], - "similarity": 0.575, - "size_similarity": 0.286 + "similarity": 0.823, + "size_similarity": 0.517 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.857, - "content_similarity": 0.49, - "left_pr_number": 65128, - "right_pr_number": 67654, + "breadth_similarity": 0.65, + "concentration_similarity": 0.819, + "content_similarity": 0.838, + "left_pr_number": 63656, + "right_pr_number": 66407, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser/navigation-guard.ts" + "src/auto-reply/reply/commands-acp.test.ts", + "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", + "src/auto-reply/reply/dispatch-acp-command-bypass.ts" ], - "similarity": 0.449, - "size_similarity": 0.143 + "similarity": 0.786, + "size_similarity": 0.623 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.857, - "content_similarity": 0.456, - "left_pr_number": 65124, - "right_pr_number": 67654, + "breadth_similarity": 0.45, + "concentration_similarity": 0.819, + "content_similarity": 0.809, + "left_pr_number": 63656, + "right_pr_number": 65248, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser/navigation-guard.ts" + "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", + "src/auto-reply/reply/dispatch-acp-command-bypass.ts" ], - "similarity": 0.414, - "size_similarity": 0.071 + "similarity": 0.777, + "size_similarity": 0.83 }, { - "breadth_similarity": 0.267, - "concentration_similarity": 0.714, - "content_similarity": 0.3, - "left_pr_number": 65128, - "right_pr_number": 67862, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.868, + "left_pr_number": 66407, + "right_pr_number": 68407, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser/navigation-guard.ts" + "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", + "src/auto-reply/reply/dispatch-acp-command-bypass.ts" ], - "similarity": 0.279, - "size_similarity": 0.041 + "similarity": 0.766, + "size_similarity": 0.225 }, { - "breadth_similarity": 0.267, - "concentration_similarity": 0.714, - "content_similarity": 0.279, - "left_pr_number": 65124, - "right_pr_number": 67862, + "breadth_similarity": 0.45, + "concentration_similarity": 0.819, + "content_similarity": 0.804, + "left_pr_number": 63656, + "right_pr_number": 68407, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser/navigation-guard.ts" + "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", + "src/auto-reply/reply/dispatch-acp-command-bypass.ts" ], - "similarity": 0.261, - "size_similarity": 0.02 + "similarity": 0.703, + "size_similarity": 0.362 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.51, + "content_similarity": 0.638, + "left_pr_number": 68407, + "right_pr_number": 68617, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", + "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + ], + "similarity": 0.635, + "size_similarity": 0.694 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.51, + "content_similarity": 0.607, + "left_pr_number": 65248, + "right_pr_number": 68617, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", + "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + ], + "similarity": 0.603, + "size_similarity": 0.628 + }, + { + "breadth_similarity": 0.8, + "concentration_similarity": 0.691, + "content_similarity": 0.522, + "left_pr_number": 63656, + "right_pr_number": 68617, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", + "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + ], + "similarity": 0.558, + "size_similarity": 0.521 + }, + { + "breadth_similarity": 0.625, + "concentration_similarity": 0.51, + "content_similarity": 0.566, + "left_pr_number": 66407, + "right_pr_number": 68617, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", + "src/auto-reply/reply/dispatch-acp-command-bypass.ts" + ], + "similarity": 0.533, + "size_similarity": 0.325 } ], - "pr_count": 4, + "pr_count": 5, "pr_numbers": [ - 65124, - 65128, - 67654, - 67862 + 63656, + 65248, + 66407, + 68407, + 68617 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67654, - 67862 + 68407, + 68617 ], - "representative_pr_number": 65128, - "representative_title": "fix: [Bug]: Browser tool SSRF policy blocks all hostname URLs", - "representative_url": "https://github.com/openclaw/openclaw/pull/65128", + "representative_pr_number": 65248, + "representative_title": "fix(acp): bypass bound slash commands to local handlers", + "representative_url": "https://github.com/openclaw/openclaw/pull/65248", "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions", - "extensions/browser/src/browser/routes" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser/navigation-guard.ts", - "extensions/browser/src/browser/routes/tabs.attach-only.test.ts", - "extensions/browser/src/browser/navigation-guard.test.ts" + "src/auto-reply/reply/dispatch-acp-command-bypass.test.ts", + "src/auto-reply/reply/dispatch-acp-command-bypass.ts", + "src/auto-reply/reply/commands-acp.test.ts" ], - "summary": "4 open PRs share weighted file overlap around `extensions/browser/src/browser/navigation-guard.ts`, `extensions/browser/src/browser/routes/tabs.attach-only.test.ts`, `extensions/browser/src/browser/navigation-guard.test.ts`; representative PR #65128.", - "title": "Scope: fix: [Bug]: Browser tool SSRF policy blocks all hostname URLs" + "summary": "5 open PRs share weighted file overlap around `src/auto-reply/reply/dispatch-acp-command-bypass.test.ts`, `src/auto-reply/reply/dispatch-acp-command-bypass.ts`, `src/auto-reply/reply/commands-acp.test.ts`; representative PR #65248.", + "title": "Scope: fix(acp): bypass bound slash commands to local handlers" }, { "authors": [ - "mofolo", - "yozu" + "Joel-Claw", + "samzong" ], - "average_similarity": 0.479, - "cluster_id": "pr-scope-64657-4", + "average_similarity": 0.564, + "cluster_id": "pr-scope-63783-5", "kind": "pr_scope", - "last_activity_at": "2026-04-17T23:43:03Z", + "last_activity_at": "2026-04-21T07:31:02Z", "outside_window_prs": [ { - "additions": 2162, - "author": "jaredar1232", - "changed_files": 11, - "created_at": "2026-04-11T05:23:35Z", - "deletions": 1, + "additions": 277, + "author": "helloworldtang", + "changed_files": 3, + "created_at": "2026-04-09T14:32:28Z", + "deletions": 14, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64657/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64657", + "files_url": "https://github.com/openclaw/openclaw/pull/63783/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63783", "merged": false, - "number": 64657, + "number": 63783, "state": "open", - "title": "Slack: route subagent completion messages to originating thread", - "updated_at": "2026-04-13T03:36:38Z" + "title": "fix(webchat): preserve image attachments for text-only models", + "updated_at": "2026-04-20T00:25:34Z" }, { - "additions": 158, - "author": "Yanhu007", - "changed_files": 4, - "created_at": "2026-04-11T15:17:42Z", - "deletions": 1, + "additions": 122, + "author": "tars90percent", + "changed_files": 2, + "created_at": "2026-04-13T11:28:23Z", + "deletions": 21, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64864/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64864", + "files_url": "https://github.com/openclaw/openclaw/pull/65911/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65911", "merged": false, - "number": 64864, + "number": 65911, "state": "open", - "title": "fix(slack): route subagent completion messages back to originating thread", - "updated_at": "2026-04-11T15:21:23Z" + "title": "fix(gateway): save web UI images to disk for non-vision models", + "updated_at": "2026-04-13T11:36:19Z" + }, + { + "additions": 242, + "author": "samzong", + "changed_files": 6, + "created_at": "2026-04-14T14:40:28Z", + "deletions": 53, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66613/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66613", + "merged": false, + "number": 66613, + "state": "open", + "title": "fix(gateway): fail loud on all attachment parse failures (#48123)", + "updated_at": "2026-04-15T01:13:44Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 0.999, - "content_similarity": 1.0, - "left_pr_number": 64864, - "right_pr_number": 67536, + "breadth_similarity": 0.333, + "concentration_similarity": 0.895, + "content_similarity": 0.704, + "left_pr_number": 65911, + "right_pr_number": 66613, "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/slack/api.ts", - "extensions/slack/index.ts", - "extensions/slack/src/subagent-hooks.test.ts", - "extensions/slack/src/subagent-hooks.ts" + "src/gateway/chat-attachments.test.ts", + "src/gateway/chat-attachments.ts" ], - "similarity": 0.998, - "size_similarity": 0.987 + "similarity": 0.644, + "size_similarity": 0.485 }, { - "breadth_similarity": 0.382, - "concentration_similarity": 0.951, - "content_similarity": 0.526, - "left_pr_number": 64657, - "right_pr_number": 64864, + "breadth_similarity": 0.583, + "concentration_similarity": 0.612, + "content_similarity": 0.676, + "left_pr_number": 63783, + "right_pr_number": 65911, "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/slack/index.ts", - "extensions/slack/src/subagent-hooks.test.ts", - "extensions/slack/src/subagent-hooks.ts" + "src/gateway/chat-attachments.test.ts", + "src/gateway/chat-attachments.ts" ], - "similarity": 0.465, - "size_similarity": 0.074 + "similarity": 0.636, + "size_similarity": 0.491 }, { - "breadth_similarity": 0.382, - "concentration_similarity": 0.95, - "content_similarity": 0.525, - "left_pr_number": 64657, - "right_pr_number": 67536, + "breadth_similarity": 0.5, + "concentration_similarity": 0.656, + "content_similarity": 0.701, + "left_pr_number": 66613, + "right_pr_number": 67572, "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/gateway/server-methods", + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/slack/index.ts", - "extensions/slack/src/subagent-hooks.test.ts", - "extensions/slack/src/subagent-hooks.ts" + "src/gateway/chat-attachments.test.ts", + "src/gateway/chat-attachments.ts", + "src/gateway/server-methods/chat.directive-tags.test.ts", + "src/gateway/server-node-events.test.ts", + "src/gateway/server-node-events.ts" ], - "similarity": 0.464, - "size_similarity": 0.073 + "similarity": 0.604, + "size_similarity": 0.207 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.939, - "content_similarity": 0.155, - "left_pr_number": 64864, - "right_pr_number": 65691, + "breadth_similarity": 0.583, + "concentration_similarity": 0.717, + "content_similarity": 0.51, + "left_pr_number": 63783, + "right_pr_number": 66613, "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/gateway", + "src" ], - "shared_filenames": [], - "similarity": 0.364, - "size_similarity": 0.893 + "shared_filenames": [ + "src/gateway/chat-attachments.test.ts", + "src/gateway/chat-attachments.ts" + ], + "similarity": 0.599, + "size_similarity": 0.986 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.938, - "content_similarity": 0.154, - "left_pr_number": 65691, - "right_pr_number": 67536, + "breadth_similarity": 0.714, + "concentration_similarity": 0.965, + "content_similarity": 0.52, + "left_pr_number": 63783, + "right_pr_number": 67634, "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/gateway", + "src" ], - "shared_filenames": [], - "similarity": 0.362, - "size_similarity": 0.882 + "shared_filenames": [ + "src/gateway/chat-attachments.test.ts", + "src/gateway/chat-attachments.ts" + ], + "similarity": 0.577, + "size_similarity": 0.619 }, { - "breadth_similarity": 0.564, - "concentration_similarity": 0.988, - "content_similarity": 0.149, - "left_pr_number": 64657, - "right_pr_number": 65691, + "breadth_similarity": 0.762, + "concentration_similarity": 0.752, + "content_similarity": 0.503, + "left_pr_number": 66613, + "right_pr_number": 67634, "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions", + "src/gateway/server-methods", + "src/gateway", "src" ], - "shared_filenames": [], - "similarity": 0.222, - "size_similarity": 0.082 + "shared_filenames": [ + "src/gateway/chat-attachments.test.ts", + "src/gateway/chat-attachments.ts", + "src/gateway/server-node-events.ts" + ], + "similarity": 0.56, + "size_similarity": 0.628 + }, + { + "breadth_similarity": 0.393, + "concentration_similarity": 0.647, + "content_similarity": 0.622, + "left_pr_number": 65911, + "right_pr_number": 67634, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/chat-attachments.test.ts", + "src/gateway/chat-attachments.ts" + ], + "similarity": 0.552, + "size_similarity": 0.304 + }, + { + "breadth_similarity": 0.433, + "concentration_similarity": 0.904, + "content_similarity": 0.581, + "left_pr_number": 67572, + "right_pr_number": 67634, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/chat-attachments.test.ts", + "src/gateway/chat-attachments.ts", + "src/gateway/server-methods/agent.ts", + "src/gateway/server-methods/chat.ts", + "src/gateway/server-node-events.runtime.ts", + "src/gateway/server-node-events.ts" + ], + "similarity": 0.544, + "size_similarity": 0.33 + }, + { + "breadth_similarity": 0.167, + "concentration_similarity": 0.551, + "content_similarity": 0.598, + "left_pr_number": 65911, + "right_pr_number": 67572, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/chat-attachments.test.ts", + "src/gateway/chat-attachments.ts" + ], + "similarity": 0.478, + "size_similarity": 0.1 + }, + { + "breadth_similarity": 0.3, + "concentration_similarity": 0.939, + "content_similarity": 0.48, + "left_pr_number": 63783, + "right_pr_number": 67572, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/chat-attachments.test.ts", + "src/gateway/chat-attachments.ts" + ], + "similarity": 0.443, + "size_similarity": 0.204 } ], - "pr_count": 4, + "pr_count": 5, "pr_numbers": [ - 64657, - 64864, - 65691, - 67536 + 63783, + 65911, + 66613, + 67572, + 67634 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65691, - 67536 + 67572, + 67634 ], - "representative_pr_number": 64864, - "representative_title": "fix(slack): route subagent completion messages back to originating thread", - "representative_url": "https://github.com/openclaw/openclaw/pull/64864", + "representative_pr_number": 66613, + "representative_title": "fix(gateway): fail loud on all attachment parse failures (#48123)", + "representative_url": "https://github.com/openclaw/openclaw/pull/66613", "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions", - "src" + "src/gateway", + "src", + "src/gateway/server-methods" ], "shared_filenames": [ - "extensions/slack/index.ts", - "extensions/slack/src/subagent-hooks.test.ts", - "extensions/slack/src/subagent-hooks.ts", - "extensions/slack/api.ts" + "src/gateway/chat-attachments.test.ts", + "src/gateway/chat-attachments.ts", + "src/gateway/server-node-events.ts", + "src/gateway/server-node-events.runtime.ts", + "src/gateway/server-node-events.test.ts", + "src/gateway/server-methods/chat.directive-tags.test.ts", + "src/gateway/server-methods/agent.ts", + "src/gateway/server-methods/chat.ts" ], - "summary": "4 open PRs share weighted file overlap around `extensions/slack/index.ts`, `extensions/slack/src/subagent-hooks.test.ts`, `extensions/slack/src/subagent-hooks.ts`; representative PR #64864.", - "title": "Scope: fix(slack): route subagent completion messages back to originating thread" + "summary": "5 open PRs share weighted file overlap around `src/gateway/chat-attachments.test.ts`, `src/gateway/chat-attachments.ts`, `src/gateway/server-node-events.ts`; representative PR #66613.", + "title": "Scope: fix(gateway): fail loud on all attachment parse failures (#48123)" }, { "authors": [ - "OwenYWT", - "coder999999999" + "kaseonedge", + "richardclawbot" ], - "average_similarity": 0.463, - "cluster_id": "pr-scope-63581-4", + "average_similarity": 0.511, + "cluster_id": "pr-scope-52747-5", "kind": "pr_scope", - "last_activity_at": "2026-04-18T02:56:27Z", + "last_activity_at": "2026-04-21T09:13:06Z", "outside_window_prs": [ { - "additions": 19, - "author": "drvoss", - "changed_files": 2, - "created_at": "2026-04-09T06:04:09Z", - "deletions": 1, + "additions": 942, + "author": "imwyvern", + "changed_files": 41, + "created_at": "2026-03-23T09:03:54Z", + "deletions": 556, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63581/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63581", + "files_url": "https://github.com/openclaw/openclaw/pull/52747/files", + "html_url": "https://github.com/openclaw/openclaw/pull/52747", "merged": false, - "number": 63581, + "number": 52747, "state": "open", - "title": "imessage: strip NUL bytes from echo-cache text normalization", - "updated_at": "2026-04-12T01:53:31Z" + "title": "fix(acp): time out stuck session lane tasks", + "updated_at": "2026-04-19T16:38:00Z" }, { - "additions": 98, - "author": "swang430", - "changed_files": 2, - "created_at": "2026-04-12T05:48:53Z", - "deletions": 2, + "additions": 404, + "author": "eyev0", + "changed_files": 4, + "created_at": "2026-04-09T15:07:18Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/63793/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63793", + "merged": false, + "number": 63793, + "state": "open", + "title": "fix(acp): fail fast on dead spawns and recover stale disconnects", + "updated_at": "2026-04-13T11:51:53Z" + }, + { + "additions": 360, + "author": "SARAMALI15792", + "changed_files": 4, + "created_at": "2026-04-13T01:37:11Z", + "deletions": 59, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65194/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65194", + "files_url": "https://github.com/openclaw/openclaw/pull/65640/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65640", "merged": false, - "number": 65194, + "number": 65640, "state": "open", - "title": "fix(imessage): avoid duplicate default monitor startup", - "updated_at": "2026-04-12T07:45:12Z" + "title": "fix(acp): persistent session recovery for --bind here sessions", + "updated_at": "2026-04-13T02:22:06Z" } ], "pairwise": [ { - "breadth_similarity": 0.45, - "concentration_similarity": 0.741, - "content_similarity": 0.839, - "left_pr_number": 65194, - "right_pr_number": 65383, + "breadth_similarity": 0.833, + "concentration_similarity": 0.994, + "content_similarity": 0.596, + "left_pr_number": 63793, + "right_pr_number": 65640, "shared_directories": [ - "extensions/imessage/src", - "extensions/imessage", - "extensions" + "src/acp/control-plane", + "src/auto-reply/reply", + "src/acp", + "src/auto-reply", + "src" ], "shared_filenames": [ - "extensions/imessage/src/accounts.test.ts", - "extensions/imessage/src/accounts.ts" + "src/acp/control-plane/manager.core.ts", + "src/acp/control-plane/manager.test.ts" ], - "similarity": 0.774, - "size_similarity": 0.699 + "similarity": 0.698, + "size_similarity": 0.981 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.806, - "left_pr_number": 63581, - "right_pr_number": 66169, + "breadth_similarity": 0.536, + "concentration_similarity": 0.803, + "content_similarity": 0.517, + "left_pr_number": 65640, + "right_pr_number": 69328, "shared_directories": [ - "extensions/imessage/src/monitor", - "extensions/imessage/src", - "extensions/imessage", - "extensions" + "src/acp/control-plane", + "src/acp", + "src" ], "shared_filenames": [ - "extensions/imessage/src/monitor/echo-cache.ts", - "extensions/imessage/src/monitor/monitor-provider.echo-cache.test.ts" - ], - "similarity": 0.723, - "size_similarity": 0.171 + "src/acp/control-plane/manager.core.ts", + "src/acp/control-plane/manager.test.ts" + ], + "similarity": 0.555, + "size_similarity": 0.661 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.205, - "left_pr_number": 65194, - "right_pr_number": 66169, + "breadth_similarity": 0.661, + "concentration_similarity": 0.796, + "content_similarity": 0.497, + "left_pr_number": 63793, + "right_pr_number": 69328, "shared_directories": [ - "extensions/imessage/src", - "extensions/imessage", - "extensions" + "src/acp/control-plane", + "src/acp", + "src" ], - "shared_filenames": [], - "similarity": 0.405, - "size_similarity": 0.855 + "shared_filenames": [ + "src/acp/control-plane/manager.core.ts", + "src/acp/control-plane/manager.test.ts" + ], + "similarity": 0.551, + "size_similarity": 0.648 }, { - "breadth_similarity": 0.55, - "concentration_similarity": 0.741, - "content_similarity": 0.174, - "left_pr_number": 65383, - "right_pr_number": 66169, + "breadth_similarity": 0.252, + "concentration_similarity": 0.989, + "content_similarity": 0.622, + "left_pr_number": 52747, + "right_pr_number": 69542, "shared_directories": [ - "extensions/imessage/src", - "extensions/imessage", - "extensions" + "src/acp/control-plane", + "src/acp", + "src/config", + "src" ], - "shared_filenames": [], - "similarity": 0.337, - "size_similarity": 0.818 + "shared_filenames": [ + "src/acp/control-plane/manager.core.ts", + "src/config/schema.base.generated.ts", + "src/config/schema.help.ts", + "src/config/schema.labels.ts", + "src/config/types.acp.ts", + "src/config/zod-schema.ts" + ], + "similarity": 0.527, + "size_similarity": 0.111 }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.16, "concentration_similarity": 1.0, - "content_similarity": 0.199, - "left_pr_number": 63581, - "right_pr_number": 65194, + "content_similarity": 0.565, + "left_pr_number": 52747, + "right_pr_number": 65640, "shared_directories": [ - "extensions/imessage/src", - "extensions/imessage", - "extensions" + "src/acp/control-plane", + "src/acp", + "src" ], - "shared_filenames": [], - "similarity": 0.319, - "size_similarity": 0.2 + "shared_filenames": [ + "src/acp/control-plane/manager.core.ts", + "src/acp/control-plane/manager.test.ts" + ], + "similarity": 0.504, + "size_similarity": 0.28 }, { - "breadth_similarity": 0.45, - "concentration_similarity": 0.741, - "content_similarity": 0.169, - "left_pr_number": 63581, - "right_pr_number": 65383, + "breadth_similarity": 0.619, + "concentration_similarity": 0.99, + "content_similarity": 0.456, + "left_pr_number": 65640, + "right_pr_number": 69542, "shared_directories": [ - "extensions/imessage/src", - "extensions/imessage", - "extensions" + "src/acp/control-plane", + "src/acp", + "src" ], - "shared_filenames": [], - "similarity": 0.221, - "size_similarity": 0.14 + "shared_filenames": [ + "src/acp/control-plane/manager.core.ts" + ], + "similarity": 0.49, + "size_similarity": 0.399 + }, + { + "breadth_similarity": 0.215, + "concentration_similarity": 0.993, + "content_similarity": 0.488, + "left_pr_number": 52747, + "right_pr_number": 63793, + "shared_directories": [ + "src/acp/control-plane", + "src/acp", + "src" + ], + "shared_filenames": [ + "src/acp/control-plane/manager.core.ts", + "src/acp/control-plane/manager.test.ts" + ], + "similarity": 0.454, + "size_similarity": 0.274 + }, + { + "breadth_similarity": 0.308, + "concentration_similarity": 0.803, + "content_similarity": 0.454, + "left_pr_number": 52747, + "right_pr_number": 69328, + "shared_directories": [ + "src/acp/control-plane", + "src/acp", + "src" + ], + "shared_filenames": [ + "src/acp/control-plane/manager.core.ts", + "src/acp/control-plane/manager.test.ts" + ], + "similarity": 0.453, + "size_similarity": 0.423 + }, + { + "breadth_similarity": 0.786, + "concentration_similarity": 0.996, + "content_similarity": 0.372, + "left_pr_number": 63793, + "right_pr_number": 69542, + "shared_directories": [ + "src/acp/control-plane", + "src/acp", + "src" + ], + "shared_filenames": [ + "src/acp/control-plane/manager.core.ts" + ], + "similarity": 0.45, + "size_similarity": 0.406 + }, + { + "breadth_similarity": 0.875, + "concentration_similarity": 0.793, + "content_similarity": 0.373, + "left_pr_number": 69328, + "right_pr_number": 69542, + "shared_directories": [ + "src/acp/control-plane", + "src/acp", + "src" + ], + "shared_filenames": [ + "src/acp/control-plane/manager.core.ts" + ], + "similarity": 0.428, + "size_similarity": 0.263 } ], - "pr_count": 4, + "pr_count": 5, "pr_numbers": [ - 63581, - 65194, - 65383, - 66169 + 52747, + 63793, + 65640, + 69328, + 69542 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65383, - 66169 + 69328, + 69542 ], - "representative_pr_number": 65194, - "representative_title": "fix(imessage): avoid duplicate default monitor startup", - "representative_url": "https://github.com/openclaw/openclaw/pull/65194", + "representative_pr_number": 65640, + "representative_title": "fix(acp): persistent session recovery for --bind here sessions", + "representative_url": "https://github.com/openclaw/openclaw/pull/65640", "shared_directories": [ - "extensions/imessage/src", - "extensions/imessage", - "extensions", - "extensions/imessage/src/monitor" + "src/acp/control-plane", + "src/acp", + "src", + "src/auto-reply/reply", + "src/config", + "src/auto-reply" ], "shared_filenames": [ - "extensions/imessage/src/accounts.test.ts", - "extensions/imessage/src/accounts.ts", - "extensions/imessage/src/monitor/echo-cache.ts", - "extensions/imessage/src/monitor/monitor-provider.echo-cache.test.ts" + "src/acp/control-plane/manager.core.ts", + "src/acp/control-plane/manager.test.ts", + "src/config/types.acp.ts", + "src/config/zod-schema.ts", + "src/config/schema.labels.ts", + "src/config/schema.help.ts", + "src/config/schema.base.generated.ts" ], - "summary": "4 open PRs share weighted file overlap around `extensions/imessage/src/accounts.test.ts`, `extensions/imessage/src/accounts.ts`, `extensions/imessage/src/monitor/echo-cache.ts`; representative PR #65194.", - "title": "Scope: fix(imessage): avoid duplicate default monitor startup" + "summary": "5 open PRs share weighted file overlap around `src/acp/control-plane/manager.core.ts`, `src/acp/control-plane/manager.test.ts`, `src/config/types.acp.ts`; representative PR #65640.", + "title": "Scope: fix(acp): persistent session recovery for --bind here sessions" }, { "authors": [ - "nightq", - "xinmotlanthua" + "ggzeng", + "hxy91819" ], "average_similarity": 0.439, - "cluster_id": "pr-scope-63644-4", + "cluster_id": "pr-scope-63679-5", "kind": "pr_scope", - "last_activity_at": "2026-04-18T05:47:09Z", + "last_activity_at": "2026-04-15T11:39:33Z", "outside_window_prs": [ { - "additions": 10, - "author": "macdao", - "changed_files": 3, - "created_at": "2026-04-09T08:45:01Z", - "deletions": 2, + "additions": 52, + "author": "ggzeng", + "changed_files": 6, + "created_at": "2026-04-09T09:58:18Z", + "deletions": 13, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63644/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63644", + "files_url": "https://github.com/openclaw/openclaw/pull/63679/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63679", "merged": false, - "number": 63644, + "number": 63679, "state": "open", - "title": "fix(ui): fix iPhone Safari chat layout and input zoom", - "updated_at": "2026-04-10T09:35:37Z" + "title": "fix: make readQaScenarioPack return null instead of throwing when files are missing", + "updated_at": "2026-04-10T17:15:30Z" }, { - "additions": 7, - "author": "NianJiuZst", + "additions": 111, + "author": "LiuHuaize", "changed_files": 2, - "created_at": "2026-04-11T06:14:28Z", - "deletions": 2, + "created_at": "2026-04-10T05:26:49Z", + "deletions": 12, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64673/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64673", + "files_url": "https://github.com/openclaw/openclaw/pull/64109/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64109", "merged": false, - "number": 64673, + "number": 64109, "state": "open", - "title": "fix(ui): set input font-size to 16px to prevent iOS Safari auto-zoom on focus", - "updated_at": "2026-04-11T06:43:05Z" + "title": "fix(qa-lab): avoid completion-cache install crash", + "updated_at": "2026-04-11T03:49:59Z" + }, + { + "additions": 69, + "author": "navarrotech", + "changed_files": 2, + "created_at": "2026-04-11T02:16:08Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64594/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64594", + "merged": false, + "number": 64594, + "state": "open", + "title": "fix(qa-lab): do not crash CLI startup when qa scenario pack is absent", + "updated_at": "2026-04-12T01:10:17Z" } ], "pairwise": [ { - "breadth_similarity": 0.833, - "concentration_similarity": 0.722, - "content_similarity": 0.494, - "left_pr_number": 63644, - "right_pr_number": 64673, + "breadth_similarity": 0.625, + "concentration_similarity": 0.73, + "content_similarity": 0.892, + "left_pr_number": 63679, + "right_pr_number": 66749, "shared_directories": [ - "ui/src/styles/chat", - "ui/src/styles", - "ui/src", - "ui" + "extensions/qa-lab/src", + "extensions/qa-lab", + "extensions" ], "shared_filenames": [ - "ui/src/styles/chat/layout.css" + "extensions/qa-lab/src/lab-server.ts", + "extensions/qa-lab/src/qa-agent-bootstrap.ts", + "extensions/qa-lab/src/qa-agent-workspace.ts", + "extensions/qa-lab/src/scenario-catalog.test.ts", + "extensions/qa-lab/src/scenario-catalog.ts", + "extensions/qa-lab/src/suite.ts" ], - "similarity": 0.578, - "size_similarity": 0.75 + "similarity": 0.833, + "size_similarity": 0.73 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.778, - "content_similarity": 0.39, - "left_pr_number": 64673, - "right_pr_number": 68422, + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.505, + "left_pr_number": 63679, + "right_pr_number": 64594, "shared_directories": [ - "ui/src/styles/chat", - "ui/src/styles", - "ui/src", - "ui" + "extensions/qa-lab/src", + "extensions/qa-lab", + "extensions" ], "shared_filenames": [ - "ui/src/styles/chat/layout.css" + "extensions/qa-lab/src/scenario-catalog.test.ts", + "extensions/qa-lab/src/scenario-catalog.ts" ], - "similarity": 0.484, - "size_similarity": 0.818 + "similarity": 0.609, + "size_similarity": 0.929 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.5, - "content_similarity": 0.369, - "left_pr_number": 63644, - "right_pr_number": 68422, + "breadth_similarity": 0.375, + "concentration_similarity": 0.73, + "content_similarity": 0.45, + "left_pr_number": 64594, + "right_pr_number": 66749, "shared_directories": [ - "ui/src/styles/chat", - "ui/src/styles", - "ui/src", - "ui" + "extensions/qa-lab/src", + "extensions/qa-lab", + "extensions" ], "shared_filenames": [ - "ui/src/styles/chat/layout.css" + "extensions/qa-lab/src/scenario-catalog.test.ts", + "extensions/qa-lab/src/scenario-catalog.ts" ], - "similarity": 0.463, - "size_similarity": 0.917 + "similarity": 0.507, + "size_similarity": 0.787 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.209, - "left_pr_number": 66311, - "right_pr_number": 68422, + "content_similarity": 0.193, + "left_pr_number": 64594, + "right_pr_number": 67142, "shared_directories": [ - "ui/src/styles/chat", - "ui/src/styles", - "ui/src", - "ui" + "extensions/qa-lab/src", + "extensions/qa-lab", + "extensions" ], "shared_filenames": [], - "similarity": 0.446, - "size_similarity": 1.0 + "similarity": 0.403, + "size_similarity": 0.787 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.778, - "content_similarity": 0.175, - "left_pr_number": 64673, - "right_pr_number": 66311, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.183, + "left_pr_number": 64109, + "right_pr_number": 67142, "shared_directories": [ - "ui/src/styles/chat", - "ui/src/styles", - "ui/src", - "ui" + "extensions/qa-lab/src", + "extensions/qa-lab", + "extensions" ], "shared_filenames": [], - "similarity": 0.334, - "size_similarity": 0.818 + "similarity": 0.387, + "size_similarity": 0.724 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.5, - "content_similarity": 0.179, - "left_pr_number": 63644, - "right_pr_number": 66311, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.196, + "left_pr_number": 64109, + "right_pr_number": 64594, "shared_directories": [ - "ui/src/styles/chat", - "ui/src/styles", - "ui/src", - "ui" + "extensions/qa-lab/src", + "extensions/qa-lab", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.373, + "size_similarity": 0.569 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.169, + "left_pr_number": 63679, + "right_pr_number": 67142, + "shared_directories": [ + "extensions/qa-lab/src", + "extensions/qa-lab", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.345, + "size_similarity": 0.73 + }, + { + "breadth_similarity": 0.375, + "concentration_similarity": 0.73, + "content_similarity": 0.151, + "left_pr_number": 66749, + "right_pr_number": 67142, + "shared_directories": [ + "extensions/qa-lab/src", + "extensions/qa-lab", + "extensions" ], "shared_filenames": [], "similarity": 0.33, - "size_similarity": 0.917 + "size_similarity": 1.0 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.172, + "left_pr_number": 63679, + "right_pr_number": 64109, + "shared_directories": [ + "extensions/qa-lab/src", + "extensions/qa-lab", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.316, + "size_similarity": 0.528 + }, + { + "breadth_similarity": 0.375, + "concentration_similarity": 0.73, + "content_similarity": 0.153, + "left_pr_number": 64109, + "right_pr_number": 66749, + "shared_directories": [ + "extensions/qa-lab/src", + "extensions/qa-lab", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.29, + "size_similarity": 0.724 } ], - "pr_count": 4, + "pr_count": 5, "pr_numbers": [ - 63644, - 64673, - 66311, - 68422 + 63679, + 64109, + 64594, + 66749, + 67142 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66311, - 68422 + 66749, + 67142 ], - "representative_pr_number": 64673, - "representative_title": "fix(ui): set input font-size to 16px to prevent iOS Safari auto-zoom on focus", - "representative_url": "https://github.com/openclaw/openclaw/pull/64673", + "representative_pr_number": 63679, + "representative_title": "fix: make readQaScenarioPack return null instead of throwing when files are missing", + "representative_url": "https://github.com/openclaw/openclaw/pull/63679", "shared_directories": [ - "ui/src/styles/chat", - "ui/src/styles", - "ui/src", - "ui" + "extensions/qa-lab/src", + "extensions/qa-lab", + "extensions" ], "shared_filenames": [ - "ui/src/styles/chat/layout.css" + "extensions/qa-lab/src/scenario-catalog.ts", + "extensions/qa-lab/src/scenario-catalog.test.ts", + "extensions/qa-lab/src/qa-agent-bootstrap.ts", + "extensions/qa-lab/src/qa-agent-workspace.ts", + "extensions/qa-lab/src/lab-server.ts", + "extensions/qa-lab/src/suite.ts" ], - "summary": "4 open PRs share weighted file overlap around `ui/src/styles/chat/layout.css`; representative PR #64673.", - "title": "Scope: fix(ui): set input font-size to 16px to prevent iOS Safari auto-zoom on focus" + "summary": "5 open PRs share weighted file overlap around `extensions/qa-lab/src/scenario-catalog.ts`, `extensions/qa-lab/src/scenario-catalog.test.ts`, `extensions/qa-lab/src/qa-agent-bootstrap.ts`; representative PR #63679.", + "title": "Scope: fix: make readQaScenarioPack return null instead of throwing when files are missing" }, { "authors": [ - "Bartok9", - "zoneblaze" + "EpaL", + "stainlu" ], - "average_similarity": 0.439, - "cluster_id": "pr-scope-36650-4", + "average_similarity": 0.425, + "cluster_id": "pr-scope-64380-5", "kind": "pr_scope", - "last_activity_at": "2026-04-18T17:58:17Z", + "last_activity_at": "2026-04-20T18:12:59Z", "outside_window_prs": [ { - "additions": 77, - "author": "mattkgross", - "changed_files": 3, - "created_at": "2026-03-05T19:57:03Z", - "deletions": 6, + "additions": 149, + "author": "liaoyupeng", + "changed_files": 4, + "created_at": "2026-04-10T15:22:56Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36650/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36650", + "files_url": "https://github.com/openclaw/openclaw/pull/64380/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64380", "merged": false, - "number": 36650, + "number": 64380, "state": "open", - "title": "fix(sessions): preserve activity timestamps in updateLastRoute", - "updated_at": "2026-04-18T04:23:04Z" + "title": "Agents/CLI backends: exclude inbound-meta from CLI session-reuse hash", + "updated_at": "2026-04-10T15:27:32Z" }, { - "additions": 57, - "author": "cedillarack", - "changed_files": 2, - "created_at": "2026-04-10T22:18:01Z", - "deletions": 4, + "additions": 486, + "author": "zomars", + "changed_files": 5, + "created_at": "2026-04-10T15:58:48Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64518/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64518", + "files_url": "https://github.com/openclaw/openclaw/pull/64393/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64393", "merged": false, - "number": 64518, + "number": 64393, "state": "open", - "title": "fix: clear model/provider override on /new and /reset", - "updated_at": "2026-04-10T22:39:06Z" - } - ], - "pairwise": [ - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.575, - "left_pr_number": 64518, - "right_pr_number": 68202, - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/session.test.ts", - "src/auto-reply/reply/session.ts" - ], - "similarity": 0.676, - "size_similarity": 0.824 - }, - { - "breadth_similarity": 0.583, - "concentration_similarity": 0.506, - "content_similarity": 0.371, - "left_pr_number": 36650, - "right_pr_number": 68202, - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/session.test.ts" - ], - "similarity": 0.477, - "size_similarity": 0.892 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.403, - "left_pr_number": 67591, - "right_pr_number": 68202, - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/session.ts" - ], - "similarity": 0.462, - "size_similarity": 0.365 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.343, - "left_pr_number": 64518, - "right_pr_number": 67591, - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/session.ts" - ], - "similarity": 0.431, - "size_similarity": 0.443 - }, - { - "breadth_similarity": 0.583, - "concentration_similarity": 0.506, - "content_similarity": 0.331, - "left_pr_number": 36650, - "right_pr_number": 64518, - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/session.test.ts" - ], - "similarity": 0.425, - "size_similarity": 0.735 - }, - { - "breadth_similarity": 0.417, - "concentration_similarity": 0.506, - "content_similarity": 0.062, - "left_pr_number": 36650, - "right_pr_number": 67591, - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [], - "similarity": 0.159, - "size_similarity": 0.325 - } - ], - "pr_count": 4, - "pr_numbers": [ - 36650, - 64518, - 67591, - 68202 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 67591, - 68202 - ], - "representative_pr_number": 68202, - "representative_title": "fix(session): only persist user-selected auth profile overrides across /new and /reset", - "representative_url": "https://github.com/openclaw/openclaw/pull/68202", - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/session.test.ts", - "src/auto-reply/reply/session.ts" - ], - "summary": "4 open PRs share weighted file overlap around `src/auto-reply/reply/session.test.ts`, `src/auto-reply/reply/session.ts`; representative PR #68202.", - "title": "Scope: fix(session): only persist user-selected auth profile overrides across /new and /reset" - }, - { - "authors": [ - "EpaL", - "marinosabijan" - ], - "average_similarity": 0.425, - "cluster_id": "pr-scope-64380-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T21:48:44Z", - "outside_window_prs": [ - { - "additions": 149, - "author": "liaoyupeng", - "changed_files": 4, - "created_at": "2026-04-10T15:22:56Z", - "deletions": 2, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64380/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64380", - "merged": false, - "number": 64380, - "state": "open", - "title": "Agents/CLI backends: exclude inbound-meta from CLI session-reuse hash", - "updated_at": "2026-04-10T15:27:32Z" - }, - { - "additions": 486, - "author": "zomars", - "changed_files": 5, - "created_at": "2026-04-10T15:58:48Z", - "deletions": 2, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64393/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64393", - "merged": false, - "number": 64393, - "state": "open", - "title": "fix(cli): exclude loopback overlay from mcpConfigHash", - "updated_at": "2026-04-10T17:30:12Z" + "title": "fix(cli): exclude loopback overlay from mcpConfigHash", + "updated_at": "2026-04-10T17:30:12Z" + }, + { + "additions": 282, + "author": "marinosabijan", + "changed_files": 6, + "created_at": "2026-04-12T14:52:36Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65409/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65409", + "merged": false, + "number": 65409, + "state": "open", + "title": "Populate codex-cli tool entries in system prompt report", + "updated_at": "2026-04-13T05:32:52Z" } ], "pairwise": [ { "breadth_similarity": 0.917, "concentration_similarity": 0.785, - "content_similarity": 0.649, + "content_similarity": 0.639, "left_pr_number": 64393, "right_pr_number": 65409, "shared_directories": [ @@ -26146,13 +25611,31 @@ "src/agents/cli-runner/bundle-mcp.ts", "src/agents/cli-runner/prepare.ts" ], - "similarity": 0.674, + "similarity": 0.667, "size_similarity": 0.592 }, + { + "breadth_similarity": 0.708, + "concentration_similarity": 0.691, + "content_similarity": 0.649, + "left_pr_number": 64380, + "right_pr_number": 69236, + "shared_directories": [ + "src/agents/cli-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/cli-runner/prepare.ts", + "src/agents/cli-session.test.ts" + ], + "similarity": 0.657, + "size_similarity": 0.649 + }, { "breadth_similarity": 0.708, "concentration_similarity": 0.944, - "content_similarity": 0.63, + "content_similarity": 0.625, "left_pr_number": 64380, "right_pr_number": 68686, "shared_directories": [ @@ -26165,13 +25648,31 @@ "src/agents/cli-session.test.ts", "src/agents/cli-session.ts" ], - "similarity": 0.628, + "similarity": 0.624, "size_similarity": 0.457 }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.635, + "content_similarity": 0.422, + "left_pr_number": 68686, + "right_pr_number": 69236, + "shared_directories": [ + "src/agents/cli-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/cli-runner/prepare.ts", + "src/agents/cli-session.test.ts" + ], + "similarity": 0.483, + "size_similarity": 0.704 + }, { "breadth_similarity": 0.733, "concentration_similarity": 0.968, - "content_similarity": 0.315, + "content_similarity": 0.312, "left_pr_number": 64380, "right_pr_number": 64393, "shared_directories": [ @@ -26184,13 +25685,13 @@ "src/agents/cli-session.test.ts", "src/agents/cli-session.ts" ], - "similarity": 0.388, + "similarity": 0.387, "size_similarity": 0.309 }, { "breadth_similarity": 0.8, "concentration_similarity": 0.912, - "content_similarity": 0.341, + "content_similarity": 0.34, "left_pr_number": 64393, "right_pr_number": 68686, "shared_directories": [ @@ -26203,13 +25704,31 @@ "src/agents/cli-session.test.ts", "src/agents/cli-session.ts" ], - "similarity": 0.386, + "similarity": 0.385, "size_similarity": 0.141 }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 0.723, + "content_similarity": 0.273, + "left_pr_number": 64393, + "right_pr_number": 69236, + "shared_directories": [ + "src/agents/cli-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/cli-runner/prepare.ts", + "src/agents/cli-session.test.ts" + ], + "similarity": 0.324, + "size_similarity": 0.201 + }, { "breadth_similarity": 0.667, "concentration_similarity": 0.753, - "content_similarity": 0.113, + "content_similarity": 0.112, "left_pr_number": 64380, "right_pr_number": 65409, "shared_directories": [ @@ -26220,13 +25739,30 @@ "shared_filenames": [ "src/agents/cli-runner/prepare.ts" ], - "similarity": 0.262, + "similarity": 0.261, "size_similarity": 0.522 }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.938, + "content_similarity": 0.109, + "left_pr_number": 65409, + "right_pr_number": 69236, + "shared_directories": [ + "src/agents/cli-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/cli-runner/prepare.ts" + ], + "similarity": 0.249, + "size_similarity": 0.339 + }, { "breadth_similarity": 0.75, "concentration_similarity": 0.697, - "content_similarity": 0.098, + "content_similarity": 0.097, "left_pr_number": 65409, "right_pr_number": 68686, "shared_directories": [ @@ -26237,25 +25773,26 @@ "shared_filenames": [ "src/agents/cli-runner/prepare.ts" ], - "similarity": 0.214, + "similarity": 0.213, "size_similarity": 0.239 } ], - "pr_count": 4, + "pr_count": 5, "pr_numbers": [ 64380, 64393, 65409, - 68686 + 68686, + 69236 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65409, - 68686 + 68686, + 69236 ], - "representative_pr_number": 64393, - "representative_title": "fix(cli): exclude loopback overlay from mcpConfigHash", - "representative_url": "https://github.com/openclaw/openclaw/pull/64393", + "representative_pr_number": 64380, + "representative_title": "Agents/CLI backends: exclude inbound-meta from CLI session-reuse hash", + "representative_url": "https://github.com/openclaw/openclaw/pull/64380", "shared_directories": [ "src/agents/cli-runner", "src/agents", @@ -26268,5409 +25805,7052 @@ "src/agents/cli-runner/bundle-mcp.test.ts", "src/agents/cli-runner/bundle-mcp.ts" ], - "summary": "4 open PRs share weighted file overlap around `src/agents/cli-runner/prepare.ts`, `src/agents/cli-session.test.ts`, `src/agents/cli-session.ts`; representative PR #64393.", - "title": "Scope: fix(cli): exclude loopback overlay from mcpConfigHash" + "summary": "5 open PRs share weighted file overlap around `src/agents/cli-runner/prepare.ts`, `src/agents/cli-session.test.ts`, `src/agents/cli-session.ts`; representative PR #64380.", + "title": "Scope: Agents/CLI backends: exclude inbound-meta from CLI session-reuse hash" }, { "authors": [ - "1aifanatic", - "YoungMoneyInvestments" + "MoerAI", + "huangzynn" ], - "average_similarity": 0.406, - "cluster_id": "pr-scope-53635-4", + "average_similarity": 0.414, + "cluster_id": "pr-scope-59219-5", "kind": "pr_scope", - "last_activity_at": "2026-04-18T19:26:06Z", + "last_activity_at": "2026-04-21T10:56:19Z", "outside_window_prs": [ { - "additions": 82, - "author": "w-sss", - "changed_files": 7, - "created_at": "2026-03-24T11:06:49Z", - "deletions": 1, + "additions": 197, + "author": "luoxiao6645", + "changed_files": 6, + "created_at": "2026-04-01T19:24:36Z", + "deletions": 46, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53635/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53635", - "merged": true, - "number": 53635, + "files_url": "https://github.com/openclaw/openclaw/pull/59219/files", + "html_url": "https://github.com/openclaw/openclaw/pull/59219", + "merged": false, + "number": 59219, "state": "open", - "title": "fix(telegram): improve error messages for 403 bot not member errors", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix[Bug]: [skills] Skipping skill path error triggered on officially installed skills via clawhub (WSL Environment)", + "updated_at": "2026-04-17T05:08:55Z" }, { - "additions": 36, - "author": "web3blind", + "additions": 43, + "author": "Bartok9", "changed_files": 2, - "created_at": "2026-04-11T08:30:07Z", - "deletions": 4, + "created_at": "2026-04-10T08:38:06Z", + "deletions": 25, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64717/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64717", + "files_url": "https://github.com/openclaw/openclaw/pull/64198/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64198", "merged": false, - "number": 64717, + "number": 64198, "state": "open", - "title": "fix(telegram): respect configured text chunk limit", - "updated_at": "2026-04-11T08:43:53Z" + "title": "fix(skills): sort available_skills alphabetically for prompt cache stability", + "updated_at": "2026-04-11T08:37:29Z" + }, + { + "additions": 29, + "author": "MoerAI", + "changed_files": 2, + "created_at": "2026-04-10T09:27:41Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64215/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64215", + "merged": false, + "number": 64215, + "state": "open", + "title": "fix(skills): sort available_skills alphabetically for deterministic prompt ordering (#64167)", + "updated_at": "2026-04-10T09:33:20Z" } ], "pairwise": [ { - "breadth_similarity": 0.243, - "concentration_similarity": 0.94, - "content_similarity": 0.51, - "left_pr_number": 53635, - "right_pr_number": 64717, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.666, + "left_pr_number": 64198, + "right_pr_number": 64215, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/skills", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/telegram/src/send.test.ts", - "extensions/telegram/src/send.ts" + "src/agents/skills/compact-format.test.ts", + "src/agents/skills/workspace.ts" ], - "similarity": 0.501, - "size_similarity": 0.482 + "similarity": 0.693, + "size_similarity": 0.515 }, { - "breadth_similarity": 0.171, - "concentration_similarity": 0.895, - "content_similarity": 0.541, - "left_pr_number": 64717, - "right_pr_number": 68350, + "breadth_similarity": 0.583, + "concentration_similarity": 0.837, + "content_similarity": 0.468, + "left_pr_number": 64198, + "right_pr_number": 69663, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/skills", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/telegram/src/send.test.ts", - "extensions/telegram/src/send.ts" + "src/agents/skills/workspace.ts" ], - "similarity": 0.447, - "size_similarity": 0.045 + "similarity": 0.507, + "size_similarity": 0.527 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.406, - "left_pr_number": 64717, - "right_pr_number": 68304, + "breadth_similarity": 0.5, + "concentration_similarity": 0.71, + "content_similarity": 0.465, + "left_pr_number": 59219, + "right_pr_number": 69663, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/skills", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/telegram/src/send.ts" + "src/agents/skills.loadworkspaceskillentries.test.ts", + "src/agents/skills/workspace.ts" ], - "similarity": 0.431, - "size_similarity": 0.15 + "similarity": 0.491, + "size_similarity": 0.531 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.955, - "content_similarity": 0.406, - "left_pr_number": 53635, - "right_pr_number": 68350, + "concentration_similarity": 0.593, + "content_similarity": 0.344, + "left_pr_number": 64198, + "right_pr_number": 67480, "shared_directories": [ - "extensions/telegram/src", - "src/infra/outbound", - "extensions/telegram", - "src/infra", - "extensions", + "src/agents/skills", + "src/agents", "src" ], "shared_filenames": [ - "extensions/telegram/src/send.test.ts", - "extensions/telegram/src/send.ts" + "src/agents/skills/workspace.ts" ], - "similarity": 0.421, - "size_similarity": 0.094 + "similarity": 0.465, + "size_similarity": 0.794 }, { - "breadth_similarity": 0.136, - "concentration_similarity": 0.895, - "content_similarity": 0.461, - "left_pr_number": 68304, - "right_pr_number": 68350, + "breadth_similarity": 0.292, + "concentration_similarity": 0.547, + "content_similarity": 0.52, + "left_pr_number": 59219, + "right_pr_number": 64198, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/skills", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/telegram/src/send.ts" + "src/agents/skills/workspace.ts" ], - "similarity": 0.382, - "size_similarity": 0.007 + "similarity": 0.462, + "size_similarity": 0.28 }, { - "breadth_similarity": 0.171, - "concentration_similarity": 0.94, - "content_similarity": 0.252, - "left_pr_number": 53635, - "right_pr_number": 68304, + "breadth_similarity": 0.417, + "concentration_similarity": 0.955, + "content_similarity": 0.385, + "left_pr_number": 59219, + "right_pr_number": 67480, "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/agents/skills", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/telegram/src/send.ts" + "src/agents/skills/workspace.ts" ], - "similarity": 0.251, - "size_similarity": 0.072 - } - ], - "pr_count": 4, - "pr_numbers": [ - 53635, - 64717, - 68304, - 68350 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 68304, - 68350 - ], - "representative_pr_number": 64717, - "representative_title": "fix(telegram): respect configured text chunk limit", - "representative_url": "https://github.com/openclaw/openclaw/pull/64717", - "shared_directories": [ - "extensions/telegram/src", - "extensions/telegram", - "extensions", - "src/infra/outbound", - "src/infra", - "src" - ], - "shared_filenames": [ - "extensions/telegram/src/send.ts", - "extensions/telegram/src/send.test.ts" - ], - "summary": "4 open PRs share weighted file overlap around `extensions/telegram/src/send.ts`, `extensions/telegram/src/send.test.ts`; representative PR #64717.", - "title": "Scope: fix(telegram): respect configured text chunk limit" - }, - { - "authors": [ - "jinon86" - ], - "average_similarity": 0.391, - "cluster_id": "pr-scope-63377-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T22:42:25Z", - "outside_window_prs": [ - { - "additions": 24, - "author": "zozo123", - "changed_files": 2, - "created_at": "2026-04-08T21:32:34Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63377/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63377", - "merged": false, - "number": 63377, - "state": "open", - "title": "fix: Clarify sessions_send schema field guidance for sessionKey/label", - "updated_at": "2026-04-12T07:48:08Z" + "similarity": 0.392, + "size_similarity": 0.222 }, { - "additions": 4, - "author": "Yanhu007", - "changed_files": 1, - "created_at": "2026-04-11T14:55:29Z", - "deletions": 1, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64846/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64846", - "merged": false, - "number": 64846, - "state": "open", - "title": "fix(tools): tolerate duplicate sessionKey/label in sessions_send", - "updated_at": "2026-04-11T14:57:45Z" - } - ], - "pairwise": [ - { - "breadth_similarity": 0.444, - "concentration_similarity": 0.823, - "content_similarity": 0.644, - "left_pr_number": 68622, - "right_pr_number": 68624, + "breadth_similarity": 0.833, + "concentration_similarity": 0.755, + "content_similarity": 0.237, + "left_pr_number": 67480, + "right_pr_number": 69663, "shared_directories": [ - "src/agents/tools", - "docs/.generated", + "src/agents/skills", "src/agents", - "src/plugin-sdk", - "src/plugins", - "docs", "src" ], "shared_filenames": [ - "docs/.generated/plugin-sdk-api-baseline.sha256", - "src/agents/openclaw-tools.sessions.test.ts", - "src/agents/tools/sessions-send-tool.ts", - "src/plugin-sdk/core.ts", - "src/plugins/hook-types.ts", - "src/plugins/hooks.ts" + "src/agents/skills/workspace.ts" ], - "similarity": 0.612, - "size_similarity": 0.504 + "similarity": 0.35, + "size_similarity": 0.419 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.815, - "content_similarity": 0.445, - "left_pr_number": 63377, - "right_pr_number": 64846, + "breadth_similarity": 0.75, + "concentration_similarity": 0.593, + "content_similarity": 0.159, + "left_pr_number": 64215, + "right_pr_number": 67480, "shared_directories": [ - "src/agents/tools", + "src/agents/skills", "src/agents", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-send-tool.ts" - ], - "similarity": 0.43, - "size_similarity": 0.185 - }, - { - "breadth_similarity": 0.183, - "concentration_similarity": 0.465, - "content_similarity": 0.54, - "left_pr_number": 64846, - "right_pr_number": 68622, - "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/tools/sessions-send-tool.ts" - ], - "similarity": 0.421, - "size_similarity": 0.01 - }, - { - "breadth_similarity": 0.367, - "concentration_similarity": 0.651, - "content_similarity": 0.429, - "left_pr_number": 63377, - "right_pr_number": 68622, - "shared_directories": [ - "src/agents/tools", - "src/agents", - "docs", - "src" - ], - "shared_filenames": [ - "src/agents/tools/sessions-send-tool.ts" + "src/agents/skills/workspace.ts" ], - "similarity": 0.377, - "size_similarity": 0.053 + "similarity": 0.313, + "size_similarity": 0.648 }, { - "breadth_similarity": 0.083, - "concentration_similarity": 0.288, - "content_similarity": 0.348, - "left_pr_number": 64846, - "right_pr_number": 68624, + "breadth_similarity": 0.583, + "concentration_similarity": 0.837, + "content_similarity": 0.178, + "left_pr_number": 64215, + "right_pr_number": 69663, "shared_directories": [ - "src/agents/tools", + "src/agents/skills", "src/agents", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-send-tool.ts" + "src/agents/skills/workspace.ts" ], - "similarity": 0.267, - "size_similarity": 0.005 + "similarity": 0.266, + "size_similarity": 0.271 }, { - "breadth_similarity": 0.167, - "concentration_similarity": 0.473, - "content_similarity": 0.277, - "left_pr_number": 63377, - "right_pr_number": 68624, + "breadth_similarity": 0.292, + "concentration_similarity": 0.547, + "content_similarity": 0.177, + "left_pr_number": 59219, + "right_pr_number": 64215, "shared_directories": [ - "src/agents/tools", + "src/agents/skills", "src/agents", - "docs", "src" ], "shared_filenames": [ - "src/agents/tools/sessions-send-tool.ts" + "src/agents/skills/workspace.ts" ], - "similarity": 0.238, - "size_similarity": 0.027 + "similarity": 0.202, + "size_similarity": 0.144 } ], - "pr_count": 4, + "pr_count": 5, "pr_numbers": [ - 63377, - 64846, - 68622, - 68624 + 59219, + 64198, + 64215, + 67480, + 69663 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 68622, - 68624 + 67480, + 69663 ], - "representative_pr_number": 68622, - "representative_title": "Plugins: add sessions_send delegation hook", - "representative_url": "https://github.com/openclaw/openclaw/pull/68622", + "representative_pr_number": 64198, + "representative_title": "fix(skills): sort available_skills alphabetically for prompt cache stability", + "representative_url": "https://github.com/openclaw/openclaw/pull/64198", "shared_directories": [ - "src/agents/tools", + "src/agents/skills", "src/agents", - "src", - "docs", - "docs/.generated", - "src/plugin-sdk", - "src/plugins" + "src" ], "shared_filenames": [ - "src/agents/tools/sessions-send-tool.ts", - "src/agents/openclaw-tools.sessions.test.ts", - "src/plugin-sdk/core.ts", - "src/plugins/hook-types.ts", - "docs/.generated/plugin-sdk-api-baseline.sha256", - "src/plugins/hooks.ts" + "src/agents/skills/workspace.ts", + "src/agents/skills.loadworkspaceskillentries.test.ts", + "src/agents/skills/compact-format.test.ts" ], - "summary": "4 open PRs share weighted file overlap around `src/agents/tools/sessions-send-tool.ts`, `src/agents/openclaw-tools.sessions.test.ts`, `src/plugin-sdk/core.ts`; representative PR #68622.", - "title": "Scope: Plugins: add sessions_send delegation hook" + "summary": "5 open PRs share weighted file overlap around `src/agents/skills/workspace.ts`, `src/agents/skills.loadworkspaceskillentries.test.ts`, `src/agents/skills/compact-format.test.ts`; representative PR #64198.", + "title": "Scope: fix(skills): sort available_skills alphabetically for prompt cache stability" }, { "authors": [ - "Yellowfish23", - "liemrich" + "obviyus", + "stainlu" ], - "average_similarity": 0.369, - "cluster_id": "pr-scope-53299-4", + "average_similarity": 0.403, + "cluster_id": "pr-scope-58992-5", "kind": "pr_scope", - "last_activity_at": "2026-04-16T05:04:03Z", + "last_activity_at": "2026-04-21T15:44:10Z", "outside_window_prs": [ { - "additions": 272, - "author": "ishanShahzad", + "additions": 73, + "author": "Starhappysh", + "changed_files": 2, + "created_at": "2026-04-01T12:04:36Z", + "deletions": 35, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/58992/files", + "html_url": "https://github.com/openclaw/openclaw/pull/58992", + "merged": false, + "number": 58992, + "state": "open", + "title": "fix(cron): clear stale model state on new isolated sessions", + "updated_at": "2026-04-17T20:53:36Z" + }, + { + "additions": 31, + "author": "addelh", "changed_files": 2, - "created_at": "2026-03-24T02:12:56Z", + "created_at": "2026-04-11T07:50:02Z", "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53299/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53299", + "files_url": "https://github.com/openclaw/openclaw/pull/64708/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64708", "merged": false, - "number": 53299, + "number": 64708, "state": "open", - "title": "fix(whatsapp): skip fromMe messages in group auto-reply to prevent echo loops", - "updated_at": "2026-03-24T20:15:31Z" + "title": "fix: preserve Telegram topic thread IDs for cron delivery", + "updated_at": "2026-04-11T07:57:57Z" }, { - "additions": 402, - "author": "rogerdigital", - "changed_files": 5, - "created_at": "2026-04-10T05:45:13Z", - "deletions": 6, + "additions": 69, + "author": "srinivaspavan9", + "changed_files": 2, + "created_at": "2026-04-13T01:31:31Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64120/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64120", + "files_url": "https://github.com/openclaw/openclaw/pull/65638/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65638", "merged": false, - "number": 64120, + "number": 65638, "state": "open", - "title": "WhatsApp: add preflight audio transcription for DM voice notes", - "updated_at": "2026-04-18T10:44:43Z" + "title": "fix(cron): preserve all fields in announce delivery by removing summarization instruction", + "updated_at": "2026-04-13T01:33:58Z" } ], "pairwise": [ { - "breadth_similarity": 0.7, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.336, - "left_pr_number": 53299, - "right_pr_number": 64120, + "content_similarity": 0.575, + "left_pr_number": 65638, + "right_pr_number": 69771, "shared_directories": [ - "extensions/whatsapp/src/auto-reply/monitor", - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cron/isolated-agent", + "src/cron", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/auto-reply/monitor/on-message.ts" + "src/cron/isolated-agent/run.message-tool-policy.test.ts", + "src/cron/isolated-agent/run.ts" ], - "similarity": 0.455, - "size_similarity": 0.669 - }, - { - "breadth_similarity": 0.567, - "concentration_similarity": 0.98, - "content_similarity": 0.249, - "left_pr_number": 64120, - "right_pr_number": 67477, - "shared_directories": [ - "extensions/whatsapp/src/auto-reply/monitor", - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.393, - "size_similarity": 0.754 + "similarity": 0.689, + "size_similarity": 0.914 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.141, - "left_pr_number": 64120, - "right_pr_number": 66863, + "content_similarity": 0.672, + "left_pr_number": 58992, + "right_pr_number": 64708, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cron/isolated-agent", + "src/cron", + "src" ], - "shared_filenames": [], - "similarity": 0.366, - "size_similarity": 0.782 - }, - { - "breadth_similarity": 0.7, - "concentration_similarity": 1.0, - "content_similarity": 0.142, - "left_pr_number": 53299, - "right_pr_number": 66863, - "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "shared_filenames": [ + "src/cron/isolated-agent/delivery-target.ts" ], - "shared_filenames": [], - "similarity": 0.348, - "size_similarity": 0.856 + "similarity": 0.665, + "size_similarity": 0.296 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.98, - "content_similarity": 0.251, - "left_pr_number": 53299, - "right_pr_number": 67477, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.139, + "left_pr_number": 58992, + "right_pr_number": 69276, "shared_directories": [ - "extensions/whatsapp/src/auto-reply/monitor", - "extensions/whatsapp/src/auto-reply", - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cron/isolated-agent", + "src/cron", + "src" ], "shared_filenames": [], - "similarity": 0.342, - "size_similarity": 0.505 + "similarity": 0.393, + "size_similarity": 0.972 }, { - "breadth_similarity": 0.567, - "concentration_similarity": 0.98, - "content_similarity": 0.162, - "left_pr_number": 66863, - "right_pr_number": 67477, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.148, + "left_pr_number": 58992, + "right_pr_number": 65638, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cron/isolated-agent", + "src/cron", + "src" ], "shared_filenames": [], - "similarity": 0.308, - "size_similarity": 0.59 - } - ], - "pr_count": 4, - "pr_numbers": [ - 53299, - 64120, - 66863, - 67477 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 66863, - 67477 - ], - "representative_pr_number": 64120, - "representative_title": "WhatsApp: add preflight audio transcription for DM voice notes", - "representative_url": "https://github.com/openclaw/openclaw/pull/64120", - "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions", - "extensions/whatsapp/src/auto-reply/monitor", - "extensions/whatsapp/src/auto-reply" - ], - "shared_filenames": [ - "extensions/whatsapp/src/auto-reply/monitor/on-message.ts" - ], - "summary": "4 open PRs share weighted file overlap around `extensions/whatsapp/src/auto-reply/monitor/on-message.ts`; representative PR #64120.", - "title": "Scope: WhatsApp: add preflight audio transcription for DM voice notes" - }, - { - "authors": [ - "batmanhz", - "nxmxbbd" - ], - "average_similarity": 0.363, - "cluster_id": "pr-scope-53918-4", - "kind": "pr_scope", - "last_activity_at": "2026-04-14T07:24:40Z", - "outside_window_prs": [ - { - "additions": 103, - "author": "yhyatt", - "changed_files": 2, - "created_at": "2026-03-24T19:30:29Z", - "deletions": 9, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53918/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53918", - "merged": false, - "number": 53918, - "state": "open", - "title": "fix(whatsapp): resolve configured default account in single-arg setActiveWebListener overload", - "updated_at": "2026-03-24T20:15:29Z" + "similarity": 0.351, + "size_similarity": 0.648 }, - { - "additions": 89, - "author": "dieend", - "changed_files": 2, - "created_at": "2026-04-11T20:13:47Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64996/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64996", - "merged": false, - "number": 64996, - "state": "open", - "title": "[Bug]: Beta blocker: whatsapp - fix whatsapp group listener", - "updated_at": "2026-04-11T20:41:40Z" - } - ], - "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.158, - "left_pr_number": 53918, - "right_pr_number": 65758, + "content_similarity": 0.143, + "left_pr_number": 65638, + "right_pr_number": 69276, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cron/isolated-agent", + "src/cron", + "src" ], "shared_filenames": [], - "similarity": 0.396, - "size_similarity": 0.903 + "similarity": 0.35, + "size_similarity": 0.667 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.147, - "left_pr_number": 53918, - "right_pr_number": 64996, + "content_similarity": 0.141, + "left_pr_number": 58992, + "right_pr_number": 69771, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cron/isolated-agent", + "src/cron", + "src" ], "shared_filenames": [], - "similarity": 0.376, - "size_similarity": 0.821 + "similarity": 0.337, + "size_similarity": 0.593 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.161, - "left_pr_number": 64996, - "right_pr_number": 65758, + "content_similarity": 0.136, + "left_pr_number": 69276, + "right_pr_number": 69771, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cron/isolated-agent", + "src/cron", + "src" ], "shared_filenames": [], - "similarity": 0.374, - "size_similarity": 0.742 + "similarity": 0.337, + "size_similarity": 0.61 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.181, - "left_pr_number": 64996, - "right_pr_number": 65410, + "content_similarity": 0.128, + "left_pr_number": 64708, + "right_pr_number": 69771, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cron/isolated-agent", + "src/cron", + "src" ], "shared_filenames": [], - "similarity": 0.356, - "size_similarity": 0.696 + "similarity": 0.314, + "size_similarity": 0.5 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.195, - "left_pr_number": 65410, - "right_pr_number": 65758, + "content_similarity": 0.134, + "left_pr_number": 64708, + "right_pr_number": 65638, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cron/isolated-agent", + "src/cron", + "src" ], "shared_filenames": [], - "similarity": 0.339, - "size_similarity": 0.516 + "similarity": 0.312, + "size_similarity": 0.457 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.178, - "left_pr_number": 53918, - "right_pr_number": 65410, + "content_similarity": 0.126, + "left_pr_number": 64708, + "right_pr_number": 69276, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cron/isolated-agent", + "src/cron", + "src" ], "shared_filenames": [], - "similarity": 0.335, - "size_similarity": 0.571 + "similarity": 0.284, + "size_similarity": 0.305 } ], - "pr_count": 4, + "pr_count": 5, "pr_numbers": [ - 53918, - 64996, - 65410, - 65758 + 58992, + 64708, + 65638, + 69276, + 69771 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65410, - 65758 + 69276, + 69771 ], - "representative_pr_number": 65758, - "representative_title": "fix(whatsapp): add reconnect safety timer to connection controller", - "representative_url": "https://github.com/openclaw/openclaw/pull/65758", + "representative_pr_number": 58992, + "representative_title": "fix(cron): clear stale model state on new isolated sessions", + "representative_url": "https://github.com/openclaw/openclaw/pull/58992", "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/cron/isolated-agent", + "src/cron", + "src" ], - "shared_filenames": [], - "summary": "4 open PRs cluster in `extensions/whatsapp/src`, `extensions/whatsapp`, `extensions` with similar change breadth; representative PR #65758.", - "title": "Scope: fix(whatsapp): add reconnect safety timer to connection controller" + "shared_filenames": [ + "src/cron/isolated-agent/delivery-target.ts", + "src/cron/isolated-agent/run.message-tool-policy.test.ts", + "src/cron/isolated-agent/run.ts" + ], + "summary": "5 open PRs share weighted file overlap around `src/cron/isolated-agent/delivery-target.ts`, `src/cron/isolated-agent/run.message-tool-policy.test.ts`, `src/cron/isolated-agent/run.ts`; representative PR #58992.", + "title": "Scope: fix(cron): clear stale model state on new isolated sessions" }, { "authors": [ - "ImortalMask", - "ZehanXu-Doncic" + "Ittiz", + "mmy4shadow" ], - "average_similarity": 0.356, - "cluster_id": "pr-scope-53651-4", + "average_similarity": 0.391, + "cluster_id": "pr-scope-37708-5", "kind": "pr_scope", - "last_activity_at": "2026-04-15T09:38:13Z", + "last_activity_at": "2026-04-21T15:38:31Z", "outside_window_prs": [ { - "additions": 190, - "author": "Thatgfsj", - "changed_files": 4, - "created_at": "2026-03-24T11:53:29Z", - "deletions": 3, + "additions": 524, + "author": "dongguacute", + "changed_files": 17, + "created_at": "2026-03-06T11:29:01Z", + "deletions": 30, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53651/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53651", + "files_url": "https://github.com/openclaw/openclaw/pull/37708/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37708", "merged": false, - "number": 53651, + "number": 37708, "state": "open", - "title": "fix(webchat): restore chat history, queue, and draft on page refresh", - "updated_at": "2026-03-24T20:15:29Z" + "title": "feat(ui): add browser-side offline speech-to-text (STT) using Vosk Wasm", + "updated_at": "2026-04-20T04:37:10Z" }, { - "additions": 192, - "author": "MoerAI", - "changed_files": 3, - "created_at": "2026-04-07T10:04:20Z", - "deletions": 0, + "additions": 597, + "author": "yanmwisa", + "changed_files": 9, + "created_at": "2026-03-24T18:38:38Z", + "deletions": 152, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53884/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53884", + "merged": false, + "number": 53884, + "state": "open", + "title": "feat(ui): redesign chat layout and update modal", + "updated_at": "2026-03-24T20:15:28Z" + }, + { + "additions": 2134, + "author": "aayushprsingh", + "changed_files": 32, + "created_at": "2026-04-12T08:37:49Z", + "deletions": 142, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/62421/files", - "html_url": "https://github.com/openclaw/openclaw/pull/62421", + "files_url": "https://github.com/openclaw/openclaw/pull/65258/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65258", "merged": false, - "number": 62421, + "number": 65258, "state": "open", - "title": "fix(ui): hide internal exec notifications from WebChat chat transcript (#62418)", - "updated_at": "2026-04-18T08:51:37Z" + "title": "Improve control UI chat and task UX", + "updated_at": "2026-04-12T12:19:42Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 0.963, - "content_similarity": 0.145, - "left_pr_number": 62421, - "right_pr_number": 67103, + "breadth_similarity": 0.9, + "concentration_similarity": 0.794, + "content_similarity": 0.464, + "left_pr_number": 65258, + "right_pr_number": 69585, "shared_directories": [ + "ui/src/styles/chat", + "ui/src/ui/chat", + "ui/src/ui/views", + "ui/src/styles", "ui/src/ui", + "src/commands", "ui/src", + "src", "ui" ], - "shared_filenames": [], - "similarity": 0.381, - "size_similarity": 0.873 + "shared_filenames": [ + "ui/src/styles/chat/layout.css", + "ui/src/ui/app-gateway.node.test.ts", + "ui/src/ui/app-gateway.ts", + "ui/src/ui/app-render.helpers.ts", + "ui/src/ui/app-render.ts", + "ui/src/ui/app-tool-stream.node.test.ts", + "ui/src/ui/app-tool-stream.ts", + "ui/src/ui/app-view-state.ts", + "ui/src/ui/app.ts", + "ui/src/ui/views/chat.test.ts" + ], + "similarity": 0.531, + "size_similarity": 0.505 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.958, - "content_similarity": 0.14, - "left_pr_number": 53651, - "right_pr_number": 62421, + "breadth_similarity": 0.891, + "concentration_similarity": 0.797, + "content_similarity": 0.441, + "left_pr_number": 69500, + "right_pr_number": 69585, "shared_directories": [ + "ui/src/ui/chat", + "ui/src/ui/controllers", + "ui/src/ui/views", "ui/src/ui", + "src/gateway", "ui/src", + "src", "ui" ], - "shared_filenames": [], - "similarity": 0.358, - "size_similarity": 0.995 + "shared_filenames": [ + "src/gateway/server-http.ts", + "ui/src/ui/app-render.helpers.node.test.ts", + "ui/src/ui/app-render.helpers.ts", + "ui/src/ui/app-render.ts", + "ui/src/ui/controllers/control-ui-bootstrap.test.ts", + "ui/src/ui/controllers/control-ui-bootstrap.ts", + "ui/src/ui/views/chat.test.ts", + "ui/src/ui/views/chat.ts" + ], + "similarity": 0.53, + "size_similarity": 0.62 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.995, - "content_similarity": 0.158, - "left_pr_number": 53651, - "right_pr_number": 67103, + "breadth_similarity": 0.598, + "concentration_similarity": 0.896, + "content_similarity": 0.357, + "left_pr_number": 37708, + "right_pr_number": 53884, "shared_directories": [ + "ui/src/styles/chat", + "ui/src/ui/views", + "ui/src/styles", "ui/src/ui", + "ui/public", "ui/src", "ui" ], - "shared_filenames": [], - "similarity": 0.355, - "size_similarity": 0.877 + "shared_filenames": [ + "ui/src/styles/chat/layout.css", + "ui/src/ui/app-render.ts", + "ui/src/ui/icons.ts", + "ui/src/ui/views/chat.ts" + ], + "similarity": 0.466, + "size_similarity": 0.741 }, { - "breadth_similarity": 0.567, - "concentration_similarity": 0.954, - "content_similarity": 0.14, - "left_pr_number": 53651, - "right_pr_number": 66294, + "breadth_similarity": 0.441, + "concentration_similarity": 0.982, + "content_similarity": 0.414, + "left_pr_number": 53884, + "right_pr_number": 65258, "shared_directories": [ + "ui/src/styles/chat", + "ui/src/ui/chat", + "ui/src/ui/views", + "ui/src/styles", "ui/src/ui", "ui/src", "ui" ], - "shared_filenames": [], - "similarity": 0.349, - "size_similarity": 0.98 + "shared_filenames": [ + "ui/src/styles/chat/grouped.css", + "ui/src/styles/chat/layout.css", + "ui/src/styles/components.css", + "ui/src/ui/app-render.ts", + "ui/src/ui/chat/grouped-render.ts", + "ui/src/ui/views/chat.ts" + ], + "similarity": 0.432, + "size_similarity": 0.329 }, { - "breadth_similarity": 0.633, - "concentration_similarity": 0.996, - "content_similarity": 0.128, - "left_pr_number": 62421, - "right_pr_number": 66294, + "breadth_similarity": 0.791, + "concentration_similarity": 0.997, + "content_similarity": 0.346, + "left_pr_number": 65258, + "right_pr_number": 69500, "shared_directories": [ + "ui/src/ui/chat", + "ui/src/ui/views", "ui/src/ui", "ui/src", + "src", "ui" ], - "shared_filenames": [], - "similarity": 0.349, - "size_similarity": 0.975 + "shared_filenames": [ + "ui/src/ui/app-render.helpers.ts", + "ui/src/ui/app-render.ts", + "ui/src/ui/chat/grouped-render.ts", + "ui/src/ui/views/chat.test.ts", + "ui/src/ui/views/chat.ts" + ], + "similarity": 0.418, + "size_similarity": 0.313 }, { - "breadth_similarity": 0.633, - "concentration_similarity": 0.959, - "content_similarity": 0.145, - "left_pr_number": 66294, - "right_pr_number": 67103, + "breadth_similarity": 0.716, + "concentration_similarity": 0.915, + "content_similarity": 0.339, + "left_pr_number": 37708, + "right_pr_number": 65258, "shared_directories": [ + "ui/src/styles/chat", + "ui/src/ui/views", + "ui/src/styles", "ui/src/ui", "ui/src", + "src", "ui" ], - "shared_filenames": [], - "similarity": 0.347, - "size_similarity": 0.895 - } - ], - "pr_count": 4, - "pr_numbers": [ - 53651, - 62421, - 66294, - 67103 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 66294, - 67103 - ], - "representative_pr_number": 62421, - "representative_title": "fix(ui): hide internal exec notifications from WebChat chat transcript (#62418)", - "representative_url": "https://github.com/openclaw/openclaw/pull/62421", - "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui" - ], - "shared_filenames": [], - "summary": "4 open PRs cluster in `ui/src/ui`, `ui/src`, `ui` with similar change breadth; representative PR #62421.", - "title": "Scope: fix(ui): hide internal exec notifications from WebChat chat transcript (#62418)" - }, - { - "authors": [ - "weichengdeng" - ], - "average_similarity": 0.573, - "cluster_id": "pr-scope-53780-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-12T11:30:26Z", - "outside_window_prs": [ + "shared_filenames": [ + "ui/src/styles/chat/layout.css", + "ui/src/ui/app-render.ts", + "ui/src/ui/app-view-state.ts", + "ui/src/ui/app.ts", + "ui/src/ui/views/chat.ts" + ], + "similarity": 0.391, + "size_similarity": 0.244 + }, { - "additions": 176, - "author": "ernestodeoliveira", - "changed_files": 6, - "created_at": "2026-03-24T16:03:03Z", - "deletions": 6, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53780/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53780", - "merged": false, - "number": 53780, - "state": "open", - "title": "fix(media): sanitize fetch errors before posting to channels", - "updated_at": "2026-03-24T20:19:51Z" - } - ], - "pairwise": [ + "breadth_similarity": 0.71, + "concentration_similarity": 0.879, + "content_similarity": 0.321, + "left_pr_number": 37708, + "right_pr_number": 69585, + "shared_directories": [ + "ui/src/styles/chat", + "ui/src/ui/views", + "ui/src/styles", + "ui/src/ui", + "src/gateway", + "ui/src", + "src", + "ui" + ], + "shared_filenames": [ + "src/gateway/control-ui.http.test.ts", + "ui/src/styles/chat/layout.css", + "ui/src/ui/app-render.ts", + "ui/src/ui/app-view-state.ts", + "ui/src/ui/app.ts", + "ui/src/ui/views/chat.ts" + ], + "similarity": 0.358, + "size_similarity": 0.123 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 1.0, - "left_pr_number": 65295, - "right_pr_number": 65301, + "breadth_similarity": 0.516, + "concentration_similarity": 0.775, + "content_similarity": 0.249, + "left_pr_number": 53884, + "right_pr_number": 69585, "shared_directories": [ - "src/infra/outbound", - "src/infra", - "src" + "ui/src/styles/chat", + "ui/src/ui/chat", + "ui/src/ui/views", + "ui/src/styles", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/infra/outbound/message-action-runner.core-send.test.ts", - "src/infra/outbound/message-action-runner.send-validation.test.ts", - "src/infra/outbound/message-action-runner.ts", - "src/poll-params.test.ts", - "src/poll-params.ts" + "ui/src/styles/chat/layout.css", + "ui/src/ui/app-render.ts", + "ui/src/ui/views/chat.ts" ], - "similarity": 1.0, - "size_similarity": 1.0 + "similarity": 0.289, + "size_similarity": 0.166 }, { - "breadth_similarity": 0.917, - "concentration_similarity": 0.878, - "content_similarity": 0.11, - "left_pr_number": 53780, - "right_pr_number": 65295, + "breadth_similarity": 0.784, + "concentration_similarity": 0.918, + "content_similarity": 0.185, + "left_pr_number": 37708, + "right_pr_number": 69500, "shared_directories": [ - "src/infra/outbound", - "src/infra", - "src" + "ui/src/ui/views", + "ui/src/ui", + "src/gateway", + "ui/src", + "src", + "ui" ], "shared_filenames": [ - "src/infra/outbound/message-action-runner.ts" + "ui/src/ui/app-render.ts", + "ui/src/ui/views/chat.ts" ], - "similarity": 0.36, - "size_similarity": 0.984 + "similarity": 0.265, + "size_similarity": 0.076 }, { - "breadth_similarity": 0.917, - "concentration_similarity": 0.878, - "content_similarity": 0.11, - "left_pr_number": 53780, - "right_pr_number": 65301, + "breadth_similarity": 0.555, + "concentration_similarity": 0.978, + "content_similarity": 0.162, + "left_pr_number": 53884, + "right_pr_number": 69500, "shared_directories": [ - "src/infra/outbound", - "src/infra", - "src" + "ui/src/ui/chat", + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/infra/outbound/message-action-runner.ts" + "ui/src/ui/app-render.ts", + "ui/src/ui/chat/grouped-render.ts", + "ui/src/ui/views/chat.ts" ], - "similarity": 0.36, - "size_similarity": 0.984 + "similarity": 0.233, + "size_similarity": 0.103 } ], - "pr_count": 3, + "pr_count": 5, "pr_numbers": [ - 53780, - 65295, - 65301 + 37708, + 53884, + 65258, + 69500, + 69585 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65295, - 65301 + 69500, + 69585 ], - "representative_pr_number": 65295, - "representative_title": "fix: avoid misclassifying send poll metadata as poll intent\uff08Weixin plugin\uff09", - "representative_url": "https://github.com/openclaw/openclaw/pull/65295", + "representative_pr_number": 65258, + "representative_title": "Improve control UI chat and task UX", + "representative_url": "https://github.com/openclaw/openclaw/pull/65258", "shared_directories": [ - "src/infra/outbound", - "src/infra", + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui", + "ui/src/styles/chat", + "ui/src/ui/chat", + "ui/src/styles", "src" ], "shared_filenames": [ - "src/infra/outbound/message-action-runner.ts", - "src/infra/outbound/message-action-runner.core-send.test.ts", - "src/infra/outbound/message-action-runner.send-validation.test.ts", - "src/poll-params.test.ts", - "src/poll-params.ts" + "ui/src/ui/views/chat.ts", + "ui/src/ui/app-render.ts", + "ui/src/styles/chat/layout.css", + "ui/src/ui/views/chat.test.ts", + "ui/src/ui/chat/grouped-render.ts", + "ui/src/ui/app-view-state.ts", + "ui/src/ui/app.ts", + "ui/src/ui/app-render.helpers.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/infra/outbound/message-action-runner.ts`, `src/infra/outbound/message-action-runner.core-send.test.ts`, `src/infra/outbound/message-action-runner.send-validation.test.ts`; representative PR #65295.", - "title": "Scope: fix: avoid misclassifying send poll metadata as poll intent\uff08Weixin plugin\uff09" + "summary": "5 open PRs share weighted file overlap around `ui/src/ui/views/chat.ts`, `ui/src/ui/app-render.ts`, `ui/src/styles/chat/layout.css`; representative PR #65258.", + "title": "Scope: Improve control UI chat and task UX" }, { "authors": [ - "johnturek", - "xinmotlanthua" + "CCcassiusdjs", + "abacha" ], - "average_similarity": 0.556, - "cluster_id": "pr-scope-53372-3", + "average_similarity": 0.55, + "cluster_id": "pr-scope-66067-4", "kind": "pr_scope", - "last_activity_at": "2026-04-14T03:24:11Z", + "last_activity_at": "2026-04-20T14:08:03Z", "outside_window_prs": [ { - "additions": 242, - "author": "ShaftoeLizard", - "changed_files": 4, - "created_at": "2026-03-24T04:01:25Z", - "deletions": 1, + "additions": 48, + "author": "Rohan5commit", + "changed_files": 3, + "created_at": "2026-04-13T16:47:45Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53372/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53372", + "files_url": "https://github.com/openclaw/openclaw/pull/66067/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66067", "merged": false, - "number": 53372, + "number": 66067, "state": "open", - "title": "docs: multi-agent results dispatcher protocol (fix silent pipeline stalls)", - "updated_at": "2026-03-24T20:15:31Z" + "title": "fix(tui): preserve spaces between thinking fragments", + "updated_at": "2026-04-13T16:50:19Z" + }, + { + "additions": 25, + "author": "xinmotlanthua", + "changed_files": 2, + "created_at": "2026-04-14T03:56:20Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66322/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66322", + "merged": false, + "number": 66322, + "state": "open", + "title": "fix: add paragraph spacing between thinking blocks", + "updated_at": "2026-04-14T04:11:20Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.999, - "left_pr_number": 66300, - "right_pr_number": 66303, + "content_similarity": 0.808, + "left_pr_number": 66322, + "right_pr_number": 69344, "shared_directories": [ - "docs/reference/templates", - "docs/reference", - "docs" + "src/tui", + "src" ], "shared_filenames": [ - "docs/reference/templates/HEARTBEAT.md" + "src/tui/tui-formatters.test.ts", + "src/tui/tui-formatters.ts" ], - "similarity": 0.969, - "size_similarity": 0.8 + "similarity": 0.86, + "size_similarity": 0.963 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.848, - "content_similarity": 0.394, - "left_pr_number": 53372, - "right_pr_number": 66300, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.66, + "left_pr_number": 66067, + "right_pr_number": 66322, "shared_directories": [ - "docs/reference/templates", - "docs/reference", - "docs" + "src/tui", + "src" ], "shared_filenames": [ - "docs/reference/templates/HEARTBEAT.md" + "src/tui/tui-formatters.test.ts", + "src/tui/tui-formatters.ts" ], - "similarity": 0.351, - "size_similarity": 0.021 + "similarity": 0.675, + "size_similarity": 0.529 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.848, - "content_similarity": 0.393, - "left_pr_number": 53372, - "right_pr_number": 66303, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.671, + "left_pr_number": 69340, + "right_pr_number": 69344, "shared_directories": [ - "docs/reference/templates", - "docs/reference", - "docs" + "src/tui", + "src" ], "shared_filenames": [ - "docs/reference/templates/HEARTBEAT.md" + "src/tui/tui-formatters.ts" ], - "similarity": 0.349, - "size_similarity": 0.016 - } - ], - "pr_count": 3, - "pr_numbers": [ - 53372, - 66300, - 66303 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 66300, - 66303 - ], - "representative_pr_number": 66300, - "representative_title": "fix: remove documentation fences from HEARTBEAT.md template", - "representative_url": "https://github.com/openclaw/openclaw/pull/66300", - "shared_directories": [ - "docs/reference/templates", - "docs/reference", - "docs" - ], - "shared_filenames": [ - "docs/reference/templates/HEARTBEAT.md" - ], - "summary": "3 open PRs share weighted file overlap around `docs/reference/templates/HEARTBEAT.md`; representative PR #66300.", - "title": "Scope: fix: remove documentation fences from HEARTBEAT.md template" - }, - { - "authors": [ - "RoLuoGan" - ], - "average_similarity": 0.544, - "cluster_id": "pr-scope-60063-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T04:30:10Z", - "outside_window_prs": [ - { - "additions": 112, - "author": "jlapenna", - "changed_files": 4, - "created_at": "2026-04-03T04:12:38Z", - "deletions": 5, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/60063/files", - "html_url": "https://github.com/openclaw/openclaw/pull/60063", - "merged": false, - "number": 60063, - "state": "open", - "title": "fix(streaming): resolve overlapping chunk duplication in chat stream assembler", - "updated_at": "2026-04-18T20:45:59Z" - } - ], - "pairwise": [ + "similarity": 0.606, + "size_similarity": 0.077 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.95, - "content_similarity": 0.968, - "left_pr_number": 66426, - "right_pr_number": 67969, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.552, + "left_pr_number": 66067, + "right_pr_number": 69344, "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", + "src/tui", "src" ], "shared_filenames": [ - "src/gateway/server-chat.ts", - "src/gateway/server-methods/chat.directive-tags.test.ts", - "src/gateway/server-methods/chat.ts", - "src/gateway/server-methods/shared-types.ts", - "src/gateway/server-request-context.test.ts", - "src/gateway/server-request-context.ts", - "src/gateway/server.impl.ts" + "src/tui/tui-formatters.test.ts", + "src/tui/tui-formatters.ts" ], - "similarity": 0.946, - "size_similarity": 0.803 + "similarity": 0.596, + "size_similarity": 0.51 }, { - "breadth_similarity": 0.619, - "concentration_similarity": 0.809, - "content_similarity": 0.245, - "left_pr_number": 60063, - "right_pr_number": 67969, + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.256, + "left_pr_number": 66067, + "right_pr_number": 69340, "shared_directories": [ - "src/gateway", + "src/tui", "src" ], "shared_filenames": [ - "src/gateway/server-chat.ts" + "src/tui/tui-formatters.ts" ], - "similarity": 0.365, - "size_similarity": 0.607 + "similarity": 0.302, + "size_similarity": 0.039 }, { - "breadth_similarity": 0.619, - "concentration_similarity": 0.758, - "content_similarity": 0.214, - "left_pr_number": 60063, - "right_pr_number": 66426, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.178, + "left_pr_number": 66322, + "right_pr_number": 69340, "shared_directories": [ - "src/gateway", + "src/tui", "src" ], "shared_filenames": [ - "src/gateway/server-chat.ts" + "src/tui/tui-formatters.ts" ], - "similarity": 0.323, - "size_similarity": 0.487 + "similarity": 0.261, + "size_similarity": 0.074 } ], - "pr_count": 3, + "pr_count": 4, "pr_numbers": [ - 60063, - 66426, - 67969 + 66067, + 66322, + 69340, + 69344 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66426, - 67969 + 69340, + 69344 ], - "representative_pr_number": 67969, - "representative_title": "fix: surface billing/surface_error chat event to web UI", - "representative_url": "https://github.com/openclaw/openclaw/pull/67969", + "representative_pr_number": 69344, + "representative_title": "fix(tui): increase token chunking limit and preserve code-like fragments", + "representative_url": "https://github.com/openclaw/openclaw/pull/69344", "shared_directories": [ - "src/gateway", - "src", - "src/gateway/server-methods" + "src/tui", + "src" ], "shared_filenames": [ - "src/gateway/server-chat.ts", - "src/gateway/server-methods/chat.directive-tags.test.ts", - "src/gateway/server-request-context.test.ts", - "src/gateway/server-methods/shared-types.ts", - "src/gateway/server-request-context.ts", - "src/gateway/server-methods/chat.ts", - "src/gateway/server.impl.ts" + "src/tui/tui-formatters.ts", + "src/tui/tui-formatters.test.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/gateway/server-chat.ts`, `src/gateway/server-methods/chat.directive-tags.test.ts`, `src/gateway/server-request-context.test.ts`; representative PR #67969.", - "title": "Scope: fix: surface billing/surface_error chat event to web UI" + "summary": "4 open PRs share weighted file overlap around `src/tui/tui-formatters.ts`, `src/tui/tui-formatters.test.ts`; representative PR #69344.", + "title": "Scope: fix(tui): increase token chunking limit and preserve code-like fragments" }, { "authors": [ - "lhy1024", - "neeravmakwana" + "MukundaKatta", + "drakulavich" ], - "average_similarity": 0.521, - "cluster_id": "pr-scope-37195-3", + "average_similarity": 0.52, + "cluster_id": "pr-scope-37547-4", "kind": "pr_scope", - "last_activity_at": "2026-04-19T01:04:00Z", + "last_activity_at": "2026-04-18T09:31:36Z", "outside_window_prs": [ { - "additions": 61, - "author": "KEHANG", + "additions": 40, + "author": "aleksesipenko", + "changed_files": 2, + "created_at": "2026-03-06T09:18:28Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37547/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37547", + "merged": false, + "number": 37547, + "state": "open", + "title": "Guard known Whisper subtitle-credit hallucinations in audio transcripts", + "updated_at": "2026-04-19T04:33:53Z" + }, + { + "additions": 35, + "author": "dmiv", "changed_files": 1, - "created_at": "2026-03-06T04:53:23Z", - "deletions": 0, + "created_at": "2026-03-07T01:06:37Z", + "deletions": 14, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37195/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37195", + "files_url": "https://github.com/openclaw/openclaw/pull/38446/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38446", "merged": false, - "number": 37195, + "number": 38446, "state": "open", - "title": "Tests: cover PDF maxBytesMb enforcement", - "updated_at": "2026-04-19T04:31:51Z" + "title": "feat(media): auto-convert non-WAV audio to WAV for whisper-cli transcription", + "updated_at": "2026-04-21T04:32:05Z" } ], "pairwise": [ { - "breadth_similarity": 0.542, - "concentration_similarity": 0.711, - "content_similarity": 0.613, - "left_pr_number": 65746, - "right_pr_number": 68747, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.665, + "left_pr_number": 38446, + "right_pr_number": 67571, "shared_directories": [ - "src/agents/tools", - "src/agents", + "src/media-understanding", "src" ], "shared_filenames": [ - "src/agents/tools/pdf-tool.test.ts", - "src/agents/tools/pdf-tool.ts" + "src/media-understanding/runner.entries.ts" ], - "similarity": 0.58, - "size_similarity": 0.413 + "similarity": 0.729, + "size_similarity": 0.755 }, { - "breadth_similarity": 0.667, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.468, - "left_pr_number": 37195, - "right_pr_number": 65746, + "content_similarity": 0.621, + "left_pr_number": 37547, + "right_pr_number": 38446, "shared_directories": [ - "src/agents/tools", - "src/agents", + "src/media-understanding", "src" ], "shared_filenames": [ - "src/agents/tools/pdf-tool.test.ts" + "src/media-understanding/runner.entries.ts" ], - "similarity": 0.544, - "size_similarity": 0.663 + "similarity": 0.688, + "size_similarity": 0.857 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.711, - "content_similarity": 0.399, - "left_pr_number": 37195, - "right_pr_number": 68747, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.518, + "left_pr_number": 37547, + "right_pr_number": 67571, "shared_directories": [ - "src/agents/tools", - "src/agents", + "src/media-understanding", "src" ], "shared_filenames": [ - "src/agents/tools/pdf-tool.test.ts" + "src/media-understanding/runner.entries.ts" ], - "similarity": 0.437, - "size_similarity": 0.623 - } - ], - "pr_count": 3, - "pr_numbers": [ - 37195, - 65746, - 68747 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 65746, - 68747 - ], - "representative_pr_number": 65746, - "representative_title": "fix(pdf): resolve custom provider models with config-aware resolver", - "representative_url": "https://github.com/openclaw/openclaw/pull/65746", - "shared_directories": [ - "src/agents/tools", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/tools/pdf-tool.test.ts", - "src/agents/tools/pdf-tool.ts" - ], - "summary": "3 open PRs share weighted file overlap around `src/agents/tools/pdf-tool.test.ts`, `src/agents/tools/pdf-tool.ts`; representative PR #65746.", - "title": "Scope: fix(pdf): resolve custom provider models with config-aware resolver" - }, - { - "authors": [ - "bluesky6868", - "ymaxgit" - ], - "average_similarity": 0.465, - "cluster_id": "pr-scope-49131-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T07:38:01Z", - "outside_window_prs": [ - { - "additions": 172, - "author": "eulicesl", - "changed_files": 3, - "created_at": "2026-03-17T16:26:28Z", - "deletions": 4, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/49131/files", - "html_url": "https://github.com/openclaw/openclaw/pull/49131", - "merged": false, - "number": 49131, - "state": "open", - "title": "fix: add placeholder transcript for silent voice notes", - "updated_at": "2026-04-17T14:02:32Z" - } - ], - "pairwise": [ + "similarity": 0.62, + "size_similarity": 0.881 + }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.531, - "left_pr_number": 49131, - "right_pr_number": 68456, + "breadth_similarity": 0.417, + "concentration_similarity": 0.827, + "content_similarity": 0.237, + "left_pr_number": 38446, + "right_pr_number": 66777, "shared_directories": [ "src/media-understanding", "src" ], "shared_filenames": [ - "src/media-understanding/apply.test.ts", - "src/media-understanding/apply.ts" + "src/media-understanding/runner.entries.ts" ], - "similarity": 0.544, - "size_similarity": 0.261 + "similarity": 0.39, + "size_similarity": 0.942 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.275, - "left_pr_number": 68225, - "right_pr_number": 68456, + "breadth_similarity": 0.417, + "concentration_similarity": 0.827, + "content_similarity": 0.229, + "left_pr_number": 66777, + "right_pr_number": 67571, "shared_directories": [ "src/media-understanding", "src" ], "shared_filenames": [ - "src/media-understanding/apply.ts" + "src/media-understanding/runner.entries.ts" ], - "similarity": 0.486, - "size_similarity": 0.958 + "similarity": 0.35, + "size_similarity": 0.712 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.27, - "left_pr_number": 49131, - "right_pr_number": 68225, + "breadth_similarity": 0.583, + "concentration_similarity": 0.827, + "content_similarity": 0.178, + "left_pr_number": 37547, + "right_pr_number": 66777, "shared_directories": [ "src/media-understanding", "src" ], "shared_filenames": [ - "src/media-understanding/apply.ts" + "src/media-understanding/runner.entries.ts" ], - "similarity": 0.364, - "size_similarity": 0.273 + "similarity": 0.346, + "size_similarity": 0.808 } ], - "pr_count": 3, + "pr_count": 4, "pr_numbers": [ - 49131, - 68225, - 68456 + 37547, + 38446, + 66777, + 67571 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 68225, - 68456 + 66777, + 67571 ], - "representative_pr_number": 68456, - "representative_title": "security(media): anchor sanitizeMimeType regex to reject malformed input", - "representative_url": "https://github.com/openclaw/openclaw/pull/68456", + "representative_pr_number": 38446, + "representative_title": "feat(media): auto-convert non-WAV audio to WAV for whisper-cli transcription", + "representative_url": "https://github.com/openclaw/openclaw/pull/38446", "shared_directories": [ "src/media-understanding", "src" ], "shared_filenames": [ - "src/media-understanding/apply.ts", - "src/media-understanding/apply.test.ts" + "src/media-understanding/runner.entries.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/media-understanding/apply.ts`, `src/media-understanding/apply.test.ts`; representative PR #68456.", - "title": "Scope: security(media): anchor sanitizeMimeType regex to reject malformed input" + "summary": "4 open PRs share weighted file overlap around `src/media-understanding/runner.entries.ts`; representative PR #38446.", + "title": "Scope: feat(media): auto-convert non-WAV audio to WAV for whisper-cli transcription" }, { "authors": [ - "1sh-date", - "rarest" + "plgonzalezrx8" ], - "average_similarity": 0.452, - "cluster_id": "pr-scope-63864-3", + "average_similarity": 0.485, + "cluster_id": "pr-scope-65124-4", "kind": "pr_scope", - "last_activity_at": "2026-04-15T16:52:06Z", + "last_activity_at": "2026-04-17T02:23:56Z", "outside_window_prs": [ { - "additions": 51, - "author": "SweetSophia", - "changed_files": 6, - "created_at": "2026-04-09T17:20:32Z", - "deletions": 4, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63864/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63864", + "additions": 1, + "author": "mr-kelly", + "changed_files": 1, + "created_at": "2026-04-12T02:56:34Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65124/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65124", "merged": false, - "number": 63864, + "number": 65124, "state": "open", - "title": "feat: configurable session lane concurrency", - "updated_at": "2026-04-12T19:34:11Z" + "title": "fix: [Bug]: Completion cache update failed due to missing qa/scenarios/index.md in npm package", + "updated_at": "2026-04-12T03:02:38Z" + }, + { + "additions": 1, + "author": "mr-kelly", + "changed_files": 1, + "created_at": "2026-04-12T02:58:12Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65128/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65128", + "merged": false, + "number": 65128, + "state": "open", + "title": "fix: [Bug]: Browser tool SSRF policy blocks all hostname URLs", + "updated_at": "2026-04-12T03:01:28Z" } ], "pairwise": [ { - "breadth_similarity": 0.667, - "concentration_similarity": 0.953, - "content_similarity": 0.589, - "left_pr_number": 63864, - "right_pr_number": 67098, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.986, + "left_pr_number": 65124, + "right_pr_number": 65128, "shared_directories": [ - "src/config", - "src/gateway", - "src" + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", + "extensions" ], "shared_filenames": [ - "src/config/agent-limits.ts", - "src/config/types.agent-defaults.ts", - "src/gateway/server-lanes.ts", - "src/gateway/server-reload-handlers.ts" + "extensions/browser/src/browser/navigation-guard.ts" ], - "similarity": 0.625, - "size_similarity": 0.655 + "similarity": 0.915, + "size_similarity": 0.5 }, { - "breadth_similarity": 0.7, - "concentration_similarity": 0.765, - "content_similarity": 0.407, - "left_pr_number": 67098, - "right_pr_number": 67292, + "breadth_similarity": 0.633, + "concentration_similarity": 0.857, + "content_similarity": 0.621, + "left_pr_number": 67654, + "right_pr_number": 67862, "shared_directories": [ - "src/gateway", - "src" + "extensions/browser/src/browser/routes", + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", + "extensions" ], "shared_filenames": [ - "src/gateway/server-reload-handlers.ts" + "extensions/browser/src/browser/navigation-guard.test.ts", + "extensions/browser/src/browser/navigation-guard.ts", + "extensions/browser/src/browser/routes/tabs.attach-only.test.ts" ], - "similarity": 0.447, - "size_similarity": 0.361 + "similarity": 0.583, + "size_similarity": 0.286 }, { "breadth_similarity": 0.417, - "concentration_similarity": 0.717, - "content_similarity": 0.243, - "left_pr_number": 63864, - "right_pr_number": 67292, + "concentration_similarity": 0.857, + "content_similarity": 0.491, + "left_pr_number": 65128, + "right_pr_number": 67654, "shared_directories": [ - "src/gateway", - "src" + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", + "extensions" ], "shared_filenames": [ - "src/gateway/server-reload-handlers.ts" + "extensions/browser/src/browser/navigation-guard.ts" ], - "similarity": 0.283, - "size_similarity": 0.236 + "similarity": 0.45, + "size_similarity": 0.143 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.857, + "content_similarity": 0.457, + "left_pr_number": 65124, + "right_pr_number": 67654, + "shared_directories": [ + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", + "extensions" + ], + "shared_filenames": [ + "extensions/browser/src/browser/navigation-guard.ts" + ], + "similarity": 0.415, + "size_similarity": 0.071 + }, + { + "breadth_similarity": 0.267, + "concentration_similarity": 0.714, + "content_similarity": 0.307, + "left_pr_number": 65128, + "right_pr_number": 67862, + "shared_directories": [ + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", + "extensions" + ], + "shared_filenames": [ + "extensions/browser/src/browser/navigation-guard.ts" + ], + "similarity": 0.284, + "size_similarity": 0.041 + }, + { + "breadth_similarity": 0.267, + "concentration_similarity": 0.714, + "content_similarity": 0.286, + "left_pr_number": 65124, + "right_pr_number": 67862, + "shared_directories": [ + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", + "extensions" + ], + "shared_filenames": [ + "extensions/browser/src/browser/navigation-guard.ts" + ], + "similarity": 0.265, + "size_similarity": 0.02 } ], - "pr_count": 3, + "pr_count": 4, "pr_numbers": [ - 63864, - 67098, - 67292 + 65124, + 65128, + 67654, + 67862 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67098, - 67292 + 67654, + 67862 ], - "representative_pr_number": 67098, - "representative_title": "feat: add configurable concurrency for CommandLane.Nested", - "representative_url": "https://github.com/openclaw/openclaw/pull/67098", + "representative_pr_number": 65128, + "representative_title": "fix: [Bug]: Browser tool SSRF policy blocks all hostname URLs", + "representative_url": "https://github.com/openclaw/openclaw/pull/65128", "shared_directories": [ - "src/gateway", - "src", - "src/config" + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", + "extensions", + "extensions/browser/src/browser/routes" ], "shared_filenames": [ - "src/gateway/server-reload-handlers.ts", - "src/config/agent-limits.ts", - "src/gateway/server-lanes.ts", - "src/config/types.agent-defaults.ts" + "extensions/browser/src/browser/navigation-guard.ts", + "extensions/browser/src/browser/navigation-guard.test.ts", + "extensions/browser/src/browser/routes/tabs.attach-only.test.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/gateway/server-reload-handlers.ts`, `src/config/agent-limits.ts`, `src/gateway/server-lanes.ts`; representative PR #67098.", - "title": "Scope: feat: add configurable concurrency for CommandLane.Nested" + "summary": "4 open PRs share weighted file overlap around `extensions/browser/src/browser/navigation-guard.ts`, `extensions/browser/src/browser/navigation-guard.test.ts`, `extensions/browser/src/browser/routes/tabs.attach-only.test.ts`; representative PR #65128.", + "title": "Scope: fix: [Bug]: Browser tool SSRF policy blocks all hostname URLs" }, { "authors": [ - "Magicray1217", - "xilin2157-bot" + "hyamie", + "imadal1n" ], - "average_similarity": 0.451, - "cluster_id": "pr-scope-53872-3", + "average_similarity": 0.446, + "cluster_id": "pr-scope-64494-4", "kind": "pr_scope", - "last_activity_at": "2026-04-18T10:13:42Z", + "last_activity_at": "2026-04-18T13:08:21Z", "outside_window_prs": [ { - "additions": 286, - "author": "VACInc", - "changed_files": 4, - "created_at": "2026-03-24T18:14:05Z", + "additions": 158, + "author": "bek91", + "changed_files": 2, + "created_at": "2026-04-10T20:34:48Z", "deletions": 7, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53872/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53872", + "files_url": "https://github.com/openclaw/openclaw/pull/64494/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64494", "merged": false, - "number": 53872, + "number": 64494, "state": "open", - "title": "fix(gateway): emit before_reset on session reset", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix: Wrap pathological session export lines", + "updated_at": "2026-04-20T12:40:17Z" + }, + { + "additions": 253, + "author": "zqchris", + "changed_files": 5, + "created_at": "2026-04-14T12:52:41Z", + "deletions": 24, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66548/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66548", + "merged": false, + "number": 66548, + "state": "open", + "title": "memory: strip inbound metadata envelopes from user messages in session corpus", + "updated_at": "2026-04-15T22:16:35Z" } ], "pairwise": [ { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.737, - "left_pr_number": 67049, - "right_pr_number": 67567, + "content_similarity": 0.808, + "left_pr_number": 64494, + "right_pr_number": 68559, "shared_directories": [ - "src/gateway", + "src/memory-host-sdk/host", + "src/memory-host-sdk", "src" ], "shared_filenames": [ - "src/gateway/session-reset-service.ts" + "src/memory-host-sdk/host/session-files.test.ts", + "src/memory-host-sdk/host/session-files.ts" ], - "similarity": 0.67, - "size_similarity": 0.194 + "similarity": 0.732, + "size_similarity": 0.109 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.775, - "content_similarity": 0.401, - "left_pr_number": 53872, - "right_pr_number": 67049, + "breadth_similarity": 0.367, + "concentration_similarity": 0.523, + "content_similarity": 0.59, + "left_pr_number": 64494, + "right_pr_number": 66548, "shared_directories": [ - "src/gateway", + "src/memory-host-sdk/host", + "src/memory-host-sdk", "src" ], "shared_filenames": [ - "src/gateway/session-reset-service.ts" + "src/memory-host-sdk/host/session-files.test.ts", + "src/memory-host-sdk/host/session-files.ts" ], - "similarity": 0.36, - "size_similarity": 0.024 + "similarity": 0.565, + "size_similarity": 0.596 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.775, - "content_similarity": 0.308, - "left_pr_number": 53872, - "right_pr_number": 67567, + "breadth_similarity": 0.367, + "concentration_similarity": 0.523, + "content_similarity": 0.521, + "left_pr_number": 66548, + "right_pr_number": 68559, "shared_directories": [ - "src/gateway", + "src/memory-host-sdk/host", + "src/memory-host-sdk", "src" ], "shared_filenames": [ - "src/gateway/session-reset-service.ts" + "src/memory-host-sdk/host/session-files.test.ts", + "src/memory-host-sdk/host/session-files.ts" ], - "similarity": 0.323, - "size_similarity": 0.123 + "similarity": 0.437, + "size_similarity": 0.065 + }, + { + "breadth_similarity": 0.226, + "concentration_similarity": 0.289, + "content_similarity": 0.317, + "left_pr_number": 64494, + "right_pr_number": 67697, + "shared_directories": [ + "src/memory-host-sdk/host", + "src/memory-host-sdk", + "src" + ], + "shared_filenames": [ + "src/memory-host-sdk/host/session-files.ts" + ], + "similarity": 0.375, + "size_similarity": 0.776 + }, + { + "breadth_similarity": 0.607, + "concentration_similarity": 0.766, + "content_similarity": 0.223, + "left_pr_number": 66548, + "right_pr_number": 67697, + "shared_directories": [ + "src/memory-host-sdk/host", + "src/memory-host-sdk", + "src" + ], + "shared_filenames": [ + "src/memory-host-sdk/host/session-files.ts" + ], + "similarity": 0.324, + "size_similarity": 0.462 + }, + { + "breadth_similarity": 0.226, + "concentration_similarity": 0.289, + "content_similarity": 0.266, + "left_pr_number": 67697, + "right_pr_number": 68559, + "shared_directories": [ + "src/memory-host-sdk/host", + "src/memory-host-sdk", + "src" + ], + "shared_filenames": [ + "src/memory-host-sdk/host/session-files.ts" + ], + "similarity": 0.244, + "size_similarity": 0.141 } ], - "pr_count": 3, + "pr_count": 4, "pr_numbers": [ - 53872, - 67049, - 67567 + 64494, + 66548, + 67697, + 68559 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67049, - 67567 + 67697, + 68559 ], - "representative_pr_number": 67049, - "representative_title": "fix: drain system events on /new session reset", - "representative_url": "https://github.com/openclaw/openclaw/pull/67049", + "representative_pr_number": 64494, + "representative_title": "fix: Wrap pathological session export lines", + "representative_url": "https://github.com/openclaw/openclaw/pull/64494", "shared_directories": [ - "src/gateway", + "src/memory-host-sdk/host", + "src/memory-host-sdk", "src" ], "shared_filenames": [ - "src/gateway/session-reset-service.ts" + "src/memory-host-sdk/host/session-files.ts", + "src/memory-host-sdk/host/session-files.test.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/gateway/session-reset-service.ts`; representative PR #67049.", - "title": "Scope: fix: drain system events on /new session reset" + "summary": "4 open PRs share weighted file overlap around `src/memory-host-sdk/host/session-files.ts`, `src/memory-host-sdk/host/session-files.test.ts`; representative PR #64494.", + "title": "Scope: fix: Wrap pathological session export lines" }, { "authors": [ - "MukundaKatta", - "drakulavich" + "jinon86", + "lyfuci" ], - "average_similarity": 0.445, - "cluster_id": "pr-scope-37547-3", + "average_similarity": 0.431, + "cluster_id": "pr-scope-38322-4", "kind": "pr_scope", - "last_activity_at": "2026-04-18T09:31:36Z", + "last_activity_at": "2026-04-19T18:17:46Z", "outside_window_prs": [ { - "additions": 40, - "author": "aleksesipenko", + "additions": 195, + "author": "heyAyushh", + "changed_files": 5, + "created_at": "2026-03-06T20:27:36Z", + "deletions": 72, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38322/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38322", + "merged": false, + "number": 38322, + "state": "open", + "title": "fix: preserve requester context in outbound send paths", + "updated_at": "2026-04-21T04:30:42Z" + }, + { + "additions": 131, + "author": "duqaXxX", "changed_files": 2, - "created_at": "2026-03-06T09:18:28Z", - "deletions": 2, + "created_at": "2026-04-12T04:21:06Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37547/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37547", + "files_url": "https://github.com/openclaw/openclaw/pull/65171/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65171", "merged": false, - "number": 37547, + "number": 65171, "state": "open", - "title": "Guard known Whisper subtitle-credit hallucinations in audio transcripts", - "updated_at": "2026-04-19T04:33:53Z" + "title": "fix(sessions-send): isolate announce deadlock", + "updated_at": "2026-04-12T04:26:42Z" } ], "pairwise": [ + { + "breadth_similarity": 0.7, + "concentration_similarity": 0.918, + "content_similarity": 0.627, + "left_pr_number": 38322, + "right_pr_number": 65171, + "shared_directories": [ + "src/agents/tools", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/openclaw-tools.sessions.test.ts", + "src/agents/tools/sessions-send-tool.a2a.ts" + ], + "similarity": 0.632, + "size_similarity": 0.513 + }, { "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.531, - "left_pr_number": 37547, - "right_pr_number": 67571, + "concentration_similarity": 0.689, + "content_similarity": 0.312, + "left_pr_number": 38322, + "right_pr_number": 68483, "shared_directories": [ - "src/media-understanding", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/media-understanding/runner.entries.ts" + "src/agents/openclaw-tools.sessions.test.ts" ], - "similarity": 0.629, - "size_similarity": 0.881 + "similarity": 0.441, + "size_similarity": 0.753 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.827, - "content_similarity": 0.237, - "left_pr_number": 66777, - "right_pr_number": 67571, + "breadth_similarity": 0.617, + "concentration_similarity": 0.686, + "content_similarity": 0.347, + "left_pr_number": 38322, + "right_pr_number": 68622, "shared_directories": [ - "src/media-understanding", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/media-understanding/runner.entries.ts" + "src/agents/openclaw-tools.sessions.test.ts" ], - "similarity": 0.355, - "size_similarity": 0.712 + "similarity": 0.418, + "size_similarity": 0.527 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.827, - "content_similarity": 0.185, - "left_pr_number": 37547, - "right_pr_number": 66777, + "breadth_similarity": 0.45, + "concentration_similarity": 0.606, + "content_similarity": 0.342, + "left_pr_number": 65171, + "right_pr_number": 68483, "shared_directories": [ - "src/media-understanding", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/media-understanding/runner.entries.ts" + "src/agents/openclaw-tools.sessions.test.ts" ], - "similarity": 0.35, - "size_similarity": 0.808 + "similarity": 0.417, + "size_similarity": 0.682 + }, + { + "breadth_similarity": 0.817, + "concentration_similarity": 0.998, + "content_similarity": 0.222, + "left_pr_number": 68483, + "right_pr_number": 68622, + "shared_directories": [ + "src/agents/tools", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/openclaw-tools.sessions.test.ts" + ], + "similarity": 0.346, + "size_similarity": 0.396 + }, + { + "breadth_similarity": 0.367, + "concentration_similarity": 0.604, + "content_similarity": 0.321, + "left_pr_number": 65171, + "right_pr_number": 68622, + "shared_directories": [ + "src/agents/tools", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/openclaw-tools.sessions.test.ts" + ], + "similarity": 0.332, + "size_similarity": 0.27 } ], - "pr_count": 3, + "pr_count": 4, "pr_numbers": [ - 37547, - 66777, - 67571 + 38322, + 65171, + 68483, + 68622 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66777, - 67571 + 68483, + 68622 ], - "representative_pr_number": 67571, - "representative_title": "feat(media-understanding): add native Kesha Voice Kit CLI output parser", - "representative_url": "https://github.com/openclaw/openclaw/pull/67571", + "representative_pr_number": 38322, + "representative_title": "fix: preserve requester context in outbound send paths", + "representative_url": "https://github.com/openclaw/openclaw/pull/38322", "shared_directories": [ - "src/media-understanding", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/media-understanding/runner.entries.ts" + "src/agents/openclaw-tools.sessions.test.ts", + "src/agents/tools/sessions-send-tool.a2a.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/media-understanding/runner.entries.ts`; representative PR #67571.", - "title": "Scope: feat(media-understanding): add native Kesha Voice Kit CLI output parser" + "summary": "4 open PRs share weighted file overlap around `src/agents/openclaw-tools.sessions.test.ts`, `src/agents/tools/sessions-send-tool.a2a.ts`; representative PR #38322.", + "title": "Scope: fix: preserve requester context in outbound send paths" }, { "authors": [ - "akinshaywai", - "patricklee001" + "hoyanhan", + "mikaeldiakhate-cell" ], - "average_similarity": 0.43, - "cluster_id": "pr-scope-53630-3", + "average_similarity": 0.414, + "cluster_id": "pr-scope-47994-4", "kind": "pr_scope", - "last_activity_at": "2026-04-17T14:40:40Z", + "last_activity_at": "2026-04-20T15:08:54Z", "outside_window_prs": [ { - "additions": 1, - "author": "w-sss", - "changed_files": 1, - "created_at": "2026-03-24T11:05:51Z", - "deletions": 1, + "additions": 433, + "author": "Jerry-Xin", + "changed_files": 20, + "created_at": "2026-03-16T07:32:59Z", + "deletions": 26, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53630/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53630", - "merged": true, - "number": 53630, + "files_url": "https://github.com/openclaw/openclaw/pull/47994/files", + "html_url": "https://github.com/openclaw/openclaw/pull/47994", + "merged": false, + "number": 47994, "state": "open", - "title": "Fix/UI context notice icon overflow", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(agent): prevent fallback model from permanently overwriting agent config", + "updated_at": "2026-04-21T16:13:17Z" + }, + { + "additions": 427, + "author": "zqchris", + "changed_files": 16, + "created_at": "2026-04-12T14:14:26Z", + "deletions": 32, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65386/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65386", + "merged": false, + "number": 65386, + "state": "open", + "title": "fix(sessions): system events no longer prevent daily/idle session resets", + "updated_at": "2026-04-20T13:04:32Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.3, - "left_pr_number": 53630, - "right_pr_number": 67424, + "breadth_similarity": 0.621, + "concentration_similarity": 0.899, + "content_similarity": 0.37, + "left_pr_number": 67664, + "right_pr_number": 68991, "shared_directories": [ - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "src/agents/command", + "src/agents", + "src" ], "shared_filenames": [ - "ui/src/ui/views/chat.ts" + "src/agents/command/session-store.test.ts", + "src/agents/command/session-store.ts" ], - "similarity": 0.51, - "size_similarity": 1.0 + "similarity": 0.501, + "size_similarity": 0.901 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.141, - "left_pr_number": 53630, - "right_pr_number": 68152, + "breadth_similarity": 0.613, + "concentration_similarity": 0.881, + "content_similarity": 0.341, + "left_pr_number": 65386, + "right_pr_number": 68991, "shared_directories": [ - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "src/agents/command", + "src/auto-reply/reply", + "src/agents", + "src/auto-reply", + "src" ], - "shared_filenames": [], - "similarity": 0.399, - "size_similarity": 1.0 + "shared_filenames": [ + "src/agents/command/session-store.test.ts", + "src/agents/command/session-store.ts", + "src/auto-reply/reply/session.test.ts" + ], + "similarity": 0.493, + "size_similarity": 0.991 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.117, - "left_pr_number": 67424, - "right_pr_number": 68152, + "breadth_similarity": 0.622, + "concentration_similarity": 0.78, + "content_similarity": 0.334, + "left_pr_number": 65386, + "right_pr_number": 67664, "shared_directories": [ - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "src/agents/command", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/command/session-store.test.ts", + "src/agents/command/session-store.ts" + ], + "similarity": 0.469, + "size_similarity": 0.893 + }, + { + "breadth_similarity": 0.757, + "concentration_similarity": 0.743, + "content_similarity": 0.17, + "left_pr_number": 47994, + "right_pr_number": 65386, + "shared_directories": [ + "src/agents/command", + "src/auto-reply/reply", + "src/config/sessions", + "src/agents", + "src/auto-reply", + "src/config", + "src" + ], + "shared_filenames": [ + "src/agents/agent-command.ts", + "src/agents/command/session-store.ts", + "src/config/sessions/sessions.test.ts", + "src/config/sessions/types.ts" ], - "shared_filenames": [], "similarity": 0.382, "size_similarity": 1.0 + }, + { + "breadth_similarity": 0.464, + "concentration_similarity": 0.624, + "content_similarity": 0.22, + "left_pr_number": 47994, + "right_pr_number": 68991, + "shared_directories": [ + "src/agents/command", + "src/auto-reply/reply", + "src/cron/isolated-agent", + "src/agents", + "src/auto-reply", + "src/cron", + "src" + ], + "shared_filenames": [ + "src/agents/command/session-store.ts", + "src/auto-reply/reply/agent-runner.ts", + "src/auto-reply/reply/followup-runner.ts", + "src/auto-reply/reply/session-usage.ts", + "src/cron/isolated-agent/run.ts" + ], + "similarity": 0.38, + "size_similarity": 0.991 + }, + { + "breadth_similarity": 0.664, + "concentration_similarity": 0.523, + "content_similarity": 0.046, + "left_pr_number": 47994, + "right_pr_number": 67664, + "shared_directories": [ + "src/agents/command", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/command/session-store.ts" + ], + "similarity": 0.258, + "size_similarity": 0.893 } ], - "pr_count": 3, + "pr_count": 4, "pr_numbers": [ - 53630, - 67424, - 68152 + 47994, + 65386, + 67664, + 68991 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67424, - 68152 + 67664, + 68991 ], - "representative_pr_number": 53630, - "representative_title": "Fix/UI context notice icon overflow", - "representative_url": "https://github.com/openclaw/openclaw/pull/53630", + "representative_pr_number": 68991, + "representative_title": "fix(auto-reply): don't persist automatic fallback runtime as next-turn selected model", + "representative_url": "https://github.com/openclaw/openclaw/pull/68991", "shared_directories": [ - "ui/src/ui/views", - "ui/src/ui", - "ui/src", - "ui" + "src/agents/command", + "src/agents", + "src", + "src/auto-reply/reply", + "src/auto-reply", + "src/config/sessions", + "src/cron/isolated-agent", + "src/cron" ], "shared_filenames": [ - "ui/src/ui/views/chat.ts" + "src/agents/command/session-store.ts", + "src/agents/command/session-store.test.ts", + "src/auto-reply/reply/session-usage.ts", + "src/auto-reply/reply/session.test.ts", + "src/config/sessions/sessions.test.ts", + "src/agents/agent-command.ts", + "src/auto-reply/reply/followup-runner.ts", + "src/cron/isolated-agent/run.ts" ], - "summary": "3 open PRs share weighted file overlap around `ui/src/ui/views/chat.ts`; representative PR #53630.", - "title": "Scope: Fix/UI context notice icon overflow" + "summary": "4 open PRs share weighted file overlap around `src/agents/command/session-store.ts`, `src/agents/command/session-store.test.ts`, `src/auto-reply/reply/session-usage.ts`; representative PR #68991.", + "title": "Scope: fix(auto-reply): don't persist automatic fallback runtime as next-turn selected model" }, { "authors": [ - "Ante042", - "iubns" + "CHE10X", + "moorsecopers99" ], - "average_similarity": 0.427, - "cluster_id": "pr-scope-53346-3", + "average_similarity": 0.408, + "cluster_id": "pr-scope-53445-4", "kind": "pr_scope", - "last_activity_at": "2026-04-18T13:20:49Z", + "last_activity_at": "2026-04-21T02:54:08Z", "outside_window_prs": [ { - "additions": 440, - "author": "leemgs", - "changed_files": 12, - "created_at": "2026-03-24T03:20:38Z", - "deletions": 8, + "additions": 61, + "author": "dingtao416", + "changed_files": 3, + "created_at": "2026-03-24T06:02:53Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53346/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53346", + "files_url": "https://github.com/openclaw/openclaw/pull/53445/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53445", "merged": false, - "number": 53346, + "number": 53445, "state": "open", - "title": " feat: add Korean language support to Control UI and AI agent", + "title": "Control UI: show full date-time in session list (fixes #53088)", "updated_at": "2026-03-24T20:15:31Z" + }, + { + "additions": 175, + "author": "coder999999999", + "changed_files": 4, + "created_at": "2026-04-12T06:09:57Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65199/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65199", + "merged": false, + "number": 65199, + "state": "open", + "title": "fix(ui): humanize cron expressions in dreaming phase and cron job displays", + "updated_at": "2026-04-12T06:48:14Z" } ], "pairwise": [ { - "breadth_similarity": 0.692, - "concentration_similarity": 0.808, - "content_similarity": 0.702, - "left_pr_number": 67290, - "right_pr_number": 68557, + "breadth_similarity": 0.875, + "concentration_similarity": 0.977, + "content_similarity": 0.691, + "left_pr_number": 53445, + "right_pr_number": 65199, "shared_directories": [ - "ui/src/i18n/.i18n", - "ui/src/i18n/locales", "ui/src/ui/views", - "ui/src/i18n", "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [ - "ui/src/i18n/.i18n/de.meta.json", - "ui/src/i18n/.i18n/es.meta.json", - "ui/src/i18n/.i18n/fr.meta.json", - "ui/src/i18n/.i18n/id.meta.json", - "ui/src/i18n/.i18n/ja-JP.meta.json", - "ui/src/i18n/.i18n/ko.meta.json", - "ui/src/i18n/.i18n/pl.meta.json", - "ui/src/i18n/.i18n/pt-BR.meta.json", - "ui/src/i18n/.i18n/tr.meta.json", - "ui/src/i18n/.i18n/uk.meta.json" + "ui/src/ui/format.test.ts", + "ui/src/ui/format.ts" ], - "similarity": 0.652, - "size_similarity": 0.343 + "similarity": 0.674, + "size_similarity": 0.355 }, { - "breadth_similarity": 0.554, - "concentration_similarity": 0.76, - "content_similarity": 0.3, - "left_pr_number": 53346, - "right_pr_number": 67290, + "breadth_similarity": 0.458, + "concentration_similarity": 0.483, + "content_similarity": 0.498, + "left_pr_number": 67155, + "right_pr_number": 69552, "shared_directories": [ - "ui/src/i18n/locales", - "ui/src/i18n", + "ui/src/ui/chat", + "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [ - "ui/src/i18n/locales/de.ts", - "ui/src/i18n/locales/en.ts", - "ui/src/i18n/locales/es.ts", - "ui/src/i18n/locales/ko.ts", - "ui/src/i18n/locales/pt-BR.ts", - "ui/src/i18n/locales/zh-CN.ts", - "ui/src/i18n/locales/zh-TW.ts" + "ui/src/ui/app-render.helpers.node.test.ts", + "ui/src/ui/chat/session-controls.ts" ], - "similarity": 0.359, - "size_similarity": 0.371 + "similarity": 0.508, + "size_similarity": 0.596 }, { - "breadth_similarity": 0.8, - "concentration_similarity": 0.951, - "content_similarity": 0.177, - "left_pr_number": 53346, - "right_pr_number": 68557, + "breadth_similarity": 0.833, + "concentration_similarity": 0.928, + "content_similarity": 0.158, + "left_pr_number": 53445, + "right_pr_number": 69552, "shared_directories": [ - "ui/src/i18n/locales", - "ui/src/i18n", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.369, + "size_similarity": 0.862 + }, + { + "breadth_similarity": 0.521, + "concentration_similarity": 0.555, + "content_similarity": 0.249, + "left_pr_number": 53445, + "right_pr_number": 67155, + "shared_directories": [ + "ui/src/ui/views", + "ui/src/ui", "ui/src", "ui" ], "shared_filenames": [ - "ui/src/i18n/locales/en.ts" + "ui/src/ui/views/sessions.ts" ], - "similarity": 0.271, - "size_similarity": 0.127 + "similarity": 0.358, + "size_similarity": 0.691 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.905, + "content_similarity": 0.161, + "left_pr_number": 65199, + "right_pr_number": 69552, + "shared_directories": [ + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.279, + "size_similarity": 0.306 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.578, + "content_similarity": 0.135, + "left_pr_number": 65199, + "right_pr_number": 67155, + "shared_directories": [ + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.259, + "size_similarity": 0.514 } ], - "pr_count": 3, + "pr_count": 4, "pr_numbers": [ - 53346, - 67290, - 68557 + 53445, + 65199, + 67155, + 69552 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67290, - 68557 + 67155, + 69552 ], - "representative_pr_number": 67290, - "representative_title": "fix(ui): remove duplicate usage page header", - "representative_url": "https://github.com/openclaw/openclaw/pull/67290", + "representative_pr_number": 53445, + "representative_title": "Control UI: show full date-time in session list (fixes #53088)", + "representative_url": "https://github.com/openclaw/openclaw/pull/53445", "shared_directories": [ - "ui/src/i18n/locales", - "ui/src/i18n", + "ui/src/ui", "ui/src", "ui", - "ui/src/i18n/.i18n", "ui/src/ui/views", - "ui/src/ui" + "ui/src/ui/chat" ], "shared_filenames": [ - "ui/src/i18n/locales/en.ts", - "ui/src/i18n/.i18n/de.meta.json", - "ui/src/i18n/.i18n/es.meta.json", - "ui/src/i18n/.i18n/fr.meta.json", - "ui/src/i18n/.i18n/id.meta.json", - "ui/src/i18n/.i18n/ja-JP.meta.json", - "ui/src/i18n/.i18n/ko.meta.json", - "ui/src/i18n/.i18n/pl.meta.json" + "ui/src/ui/format.test.ts", + "ui/src/ui/format.ts", + "ui/src/ui/chat/session-controls.ts", + "ui/src/ui/views/sessions.ts", + "ui/src/ui/app-render.helpers.node.test.ts" ], - "summary": "3 open PRs share weighted file overlap around `ui/src/i18n/locales/en.ts`, `ui/src/i18n/.i18n/de.meta.json`, `ui/src/i18n/.i18n/es.meta.json`; representative PR #67290.", - "title": "Scope: fix(ui): remove duplicate usage page header" + "summary": "4 open PRs share weighted file overlap around `ui/src/ui/format.test.ts`, `ui/src/ui/format.ts`, `ui/src/ui/chat/session-controls.ts`; representative PR #53445.", + "title": "Scope: Control UI: show full date-time in session list (fixes #53088)" }, { "authors": [ - "100yenadmin", - "Lidang-Jiang" + "1aifanatic", + "YoungMoneyInvestments" ], - "average_similarity": 0.411, - "cluster_id": "pr-scope-64064-3", + "average_similarity": 0.405, + "cluster_id": "pr-scope-53635-4", "kind": "pr_scope", - "last_activity_at": "2026-04-14T02:28:56Z", + "last_activity_at": "2026-04-18T19:26:06Z", "outside_window_prs": [ { - "additions": 1103, - "author": "clearlift-paul", - "changed_files": 9, - "created_at": "2026-04-10T03:52:20Z", - "deletions": 6, + "additions": 82, + "author": "w-sss", + "changed_files": 7, + "created_at": "2026-03-24T11:06:49Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53635/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53635", + "merged": true, + "number": 53635, + "state": "open", + "title": "fix(telegram): improve error messages for 403 bot not member errors", + "updated_at": "2026-03-24T20:15:29Z" + }, + { + "additions": 36, + "author": "web3blind", + "changed_files": 2, + "created_at": "2026-04-11T08:30:07Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64064/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64064", + "files_url": "https://github.com/openclaw/openclaw/pull/64717/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64717", "merged": false, - "number": 64064, + "number": 64717, "state": "open", - "title": "feat(anthropic): add advisor tool support [AI-assisted]", - "updated_at": "2026-04-19T02:33:54Z" + "title": "fix(telegram): respect configured text chunk limit", + "updated_at": "2026-04-11T08:43:53Z" } ], "pairwise": [ { - "breadth_similarity": 0.742, - "concentration_similarity": 0.603, - "content_similarity": 0.437, - "left_pr_number": 64064, - "right_pr_number": 65288, + "breadth_similarity": 0.243, + "concentration_similarity": 0.94, + "content_similarity": 0.507, + "left_pr_number": 53635, + "right_pr_number": 64717, "shared_directories": [ - "src/agents", - "src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "src/agents/anthropic-transport-stream.test.ts", - "src/agents/anthropic-transport-stream.ts" + "extensions/telegram/src/send.test.ts", + "extensions/telegram/src/send.ts" ], - "similarity": 0.548, - "size_similarity": 0.917 + "similarity": 0.499, + "size_similarity": 0.482 }, { - "breadth_similarity": 0.639, - "concentration_similarity": 0.926, - "content_similarity": 0.239, - "left_pr_number": 65288, - "right_pr_number": 66286, + "breadth_similarity": 0.171, + "concentration_similarity": 0.895, + "content_similarity": 0.538, + "left_pr_number": 64717, + "right_pr_number": 68350, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "src/agents/anthropic-transport-stream.test.ts", - "src/agents/anthropic-transport-stream.ts", - "src/agents/pi-embedded-runner/run.ts" + "extensions/telegram/src/send.test.ts", + "extensions/telegram/src/send.ts" ], - "similarity": 0.364, - "size_similarity": 0.578 + "similarity": 0.445, + "size_similarity": 0.045 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.676, - "content_similarity": 0.167, - "left_pr_number": 64064, - "right_pr_number": 66286, + "concentration_similarity": 1.0, + "content_similarity": 0.407, + "left_pr_number": 64717, + "right_pr_number": 68304, "shared_directories": [ - "src/agents", - "extensions", - "src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "src/agents/anthropic-transport-stream.test.ts", - "src/agents/anthropic-transport-stream.ts" + "extensions/telegram/src/send.ts" ], - "similarity": 0.32, - "size_similarity": 0.63 - } - ], - "pr_count": 3, - "pr_numbers": [ - 64064, - 65288, - 66286 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 65288, - 66286 - ], - "representative_pr_number": 65288, - "representative_title": "compaction + caches: add Anthropic native compaction and mixed cache TTLs", - "representative_url": "https://github.com/openclaw/openclaw/pull/65288", - "shared_directories": [ - "src/agents", - "src", - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "extensions" - ], - "shared_filenames": [ - "src/agents/anthropic-transport-stream.test.ts", - "src/agents/anthropic-transport-stream.ts", - "src/agents/pi-embedded-runner/run.ts" - ], - "summary": "3 open PRs share weighted file overlap around `src/agents/anthropic-transport-stream.test.ts`, `src/agents/anthropic-transport-stream.ts`, `src/agents/pi-embedded-runner/run.ts`; representative PR #65288.", - "title": "Scope: compaction + caches: add Anthropic native compaction and mixed cache TTLs" - }, - { - "authors": [ - "DexDevCode", - "mvanhorn" - ], - "average_similarity": 0.373, - "cluster_id": "pr-scope-63848-3", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T12:26:59Z", - "outside_window_prs": [ - { - "additions": 5, - "author": "zozo123", - "changed_files": 1, - "created_at": "2026-04-09T16:34:19Z", - "deletions": 4, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63848/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63848", - "merged": false, - "number": 63848, - "state": "open", - "title": "fix: pass cfg to getMemoryEmbeddingProvider in memory-search resolution", - "updated_at": "2026-04-17T10:30:26Z" - } - ], - "pairwise": [ + "similarity": 0.433, + "size_similarity": 0.15 + }, { "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.554, - "left_pr_number": 63848, - "right_pr_number": 68110, + "concentration_similarity": 0.955, + "content_similarity": 0.405, + "left_pr_number": 53635, + "right_pr_number": 68350, "shared_directories": [ - "src/agents", + "extensions/telegram/src", + "src/infra/outbound", + "extensions/telegram", + "src/infra", + "extensions", "src" ], "shared_filenames": [ - "src/agents/memory-search.ts" + "extensions/telegram/src/send.test.ts", + "extensions/telegram/src/send.ts" ], - "similarity": 0.544, - "size_similarity": 0.205 + "similarity": 0.42, + "size_similarity": 0.094 }, { - "breadth_similarity": 0.278, - "concentration_similarity": 0.486, - "content_similarity": 0.359, - "left_pr_number": 67616, - "right_pr_number": 68110, + "breadth_similarity": 0.136, + "concentration_similarity": 0.895, + "content_similarity": 0.459, + "left_pr_number": 68304, + "right_pr_number": 68350, "shared_directories": [ - "src/agents", - "src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "src/agents/memory-search.test.ts", - "src/agents/memory-search.ts" + "extensions/telegram/src/send.ts" ], - "similarity": 0.395, - "size_similarity": 0.611 + "similarity": 0.38, + "size_similarity": 0.007 }, { - "breadth_similarity": 0.222, - "concentration_similarity": 0.486, - "content_similarity": 0.164, - "left_pr_number": 63848, - "right_pr_number": 67616, + "breadth_similarity": 0.171, + "concentration_similarity": 0.94, + "content_similarity": 0.252, + "left_pr_number": 53635, + "right_pr_number": 68304, "shared_directories": [ - "src/agents", - "src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "src/agents/memory-search.ts" + "extensions/telegram/src/send.ts" ], - "similarity": 0.18, - "size_similarity": 0.125 + "similarity": 0.252, + "size_similarity": 0.072 } ], - "pr_count": 3, + "pr_count": 4, "pr_numbers": [ - 63848, - 67616, - 68110 + 53635, + 64717, + 68304, + 68350 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67616, - 68110 + 68304, + 68350 ], - "representative_pr_number": 68110, - "representative_title": "fix(memory-search): thread cfg through getMemoryEmbeddingProvider so doctor stops emitting plugins.allow and memory-core false positives", - "representative_url": "https://github.com/openclaw/openclaw/pull/68110", + "representative_pr_number": 64717, + "representative_title": "fix(telegram): respect configured text chunk limit", + "representative_url": "https://github.com/openclaw/openclaw/pull/64717", "shared_directories": [ - "src/agents", + "extensions/telegram/src", + "extensions/telegram", + "extensions", + "src/infra/outbound", + "src/infra", "src" ], "shared_filenames": [ - "src/agents/memory-search.ts", - "src/agents/memory-search.test.ts" + "extensions/telegram/src/send.ts", + "extensions/telegram/src/send.test.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/agents/memory-search.ts`, `src/agents/memory-search.test.ts`; representative PR #68110.", - "title": "Scope: fix(memory-search): thread cfg through getMemoryEmbeddingProvider so doctor stops emitting plugins.allow and memory-core false positives" + "summary": "4 open PRs share weighted file overlap around `extensions/telegram/src/send.ts`, `extensions/telegram/src/send.test.ts`; representative PR #64717.", + "title": "Scope: fix(telegram): respect configured text chunk limit" }, { "authors": [ - "harinwu-netizen", - "monsonego" + "Takhoffman", + "alexlomt" ], - "average_similarity": 0.367, - "cluster_id": "pr-scope-53704-3", + "average_similarity": 0.398, + "cluster_id": "pr-scope-57582-4", "kind": "pr_scope", - "last_activity_at": "2026-04-15T13:01:01Z", + "last_activity_at": "2026-04-21T12:54:02Z", "outside_window_prs": [ { - "additions": 22, - "author": "WMSmile", - "changed_files": 1, - "created_at": "2026-03-24T13:16:39Z", + "additions": 176, + "author": "WZBbiao", + "changed_files": 4, + "created_at": "2026-03-30T08:17:20Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/57582/files", + "html_url": "https://github.com/openclaw/openclaw/pull/57582", + "merged": false, + "number": 57582, + "state": "open", + "title": "fix: release gateway lock on shutdown timeout (#57052)", + "updated_at": "2026-04-20T10:17:31Z" + }, + { + "additions": 145, + "author": "pppan2003", + "changed_files": 2, + "created_at": "2026-04-10T00:10:14Z", "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53704/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53704", + "files_url": "https://github.com/openclaw/openclaw/pull/63981/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63981", "merged": false, - "number": 53704, + "number": 63981, "state": "open", - "title": "fix: remove unrecognized key defaultId in agents config", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(gateway): add startup timeout to prevent indefinite hang on macOS sleep/wake", + "updated_at": "2026-04-11T13:11:16Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.126, - "left_pr_number": 65340, - "right_pr_number": 67184, + "breadth_similarity": 0.5, + "concentration_similarity": 0.608, + "content_similarity": 0.578, + "left_pr_number": 57582, + "right_pr_number": 63981, "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui" + "src/cli/gateway-cli", + "src/cli", + "src" ], - "shared_filenames": [], - "similarity": 0.388, - "size_similarity": 1.0 + "shared_filenames": [ + "src/cli/gateway-cli/run-loop.test.ts", + "src/cli/gateway-cli/run-loop.ts" + ], + "similarity": 0.61, + "size_similarity": 0.83 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.169, - "left_pr_number": 53704, - "right_pr_number": 67184, + "breadth_similarity": 0.124, + "concentration_similarity": 0.657, + "content_similarity": 0.518, + "left_pr_number": 63981, + "right_pr_number": 69706, "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui" + "src/cli/gateway-cli", + "src/cli", + "src" ], - "shared_filenames": [], - "similarity": 0.36, - "size_similarity": 0.609 + "shared_filenames": [ + "src/cli/gateway-cli/run-loop.test.ts", + "src/cli/gateway-cli/run-loop.ts" + ], + "similarity": 0.426, + "size_similarity": 0.119 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.159, - "left_pr_number": 53704, - "right_pr_number": 65340, + "breadth_similarity": 0.31, + "concentration_similarity": 0.781, + "content_similarity": 0.368, + "left_pr_number": 63981, + "right_pr_number": 69121, "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui" + "src/cli/gateway-cli", + "src/cli", + "src" ], - "shared_filenames": [], - "similarity": 0.353, - "size_similarity": 0.609 + "shared_filenames": [ + "src/cli/gateway-cli/run-loop.test.ts", + "src/cli/gateway-cli/run-loop.ts" + ], + "similarity": 0.368, + "size_similarity": 0.273 + }, + { + "breadth_similarity": 0.619, + "concentration_similarity": 0.827, + "content_similarity": 0.259, + "left_pr_number": 57582, + "right_pr_number": 69121, + "shared_directories": [ + "src/cli/gateway-cli", + "src/cli", + "src" + ], + "shared_filenames": [ + "src/cli/gateway-cli/run-loop.test.ts", + "src/cli/gateway-cli/run-loop.ts" + ], + "similarity": 0.334, + "size_similarity": 0.33 + }, + { + "breadth_similarity": 0.248, + "concentration_similarity": 0.951, + "content_similarity": 0.337, + "left_pr_number": 57582, + "right_pr_number": 69706, + "shared_directories": [ + "src/cli/gateway-cli", + "src/cli", + "src/infra", + "src" + ], + "shared_filenames": [ + "src/cli/gateway-cli/run-loop.test.ts", + "src/cli/gateway-cli/run-loop.ts" + ], + "similarity": 0.33, + "size_similarity": 0.144 + }, + { + "breadth_similarity": 0.398, + "concentration_similarity": 0.877, + "content_similarity": 0.244, + "left_pr_number": 69121, + "right_pr_number": 69706, + "shared_directories": [ + "src/cli/gateway-cli", + "src/agents", + "src/cli", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/cli/gateway-cli/run-loop.test.ts", + "src/cli/gateway-cli/run-loop.ts", + "src/gateway/server.impl.ts" + ], + "similarity": 0.32, + "size_similarity": 0.436 } ], - "pr_count": 3, + "pr_count": 4, "pr_numbers": [ - 53704, - 65340, - 67184 + 57582, + 63981, + 69121, + 69706 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65340, - 67184 + 69121, + 69706 ], - "representative_pr_number": 67184, - "representative_title": "fix(chat): support non-image attachments in webchat file upload", - "representative_url": "https://github.com/openclaw/openclaw/pull/67184", + "representative_pr_number": 63981, + "representative_title": "fix(gateway): add startup timeout to prevent indefinite hang on macOS sleep/wake", + "representative_url": "https://github.com/openclaw/openclaw/pull/63981", "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui" + "src/cli/gateway-cli", + "src/cli", + "src", + "src/infra", + "src/gateway", + "src/agents" ], - "shared_filenames": [], - "summary": "3 open PRs cluster in `ui/src/ui`, `ui/src`, `ui` with similar change breadth; representative PR #67184.", - "title": "Scope: fix(chat): support non-image attachments in webchat file upload" + "shared_filenames": [ + "src/cli/gateway-cli/run-loop.test.ts", + "src/cli/gateway-cli/run-loop.ts", + "src/gateway/server.impl.ts" + ], + "summary": "4 open PRs share weighted file overlap around `src/cli/gateway-cli/run-loop.test.ts`, `src/cli/gateway-cli/run-loop.ts`, `src/gateway/server.impl.ts`; representative PR #63981.", + "title": "Scope: fix(gateway): add startup timeout to prevent indefinite hang on macOS sleep/wake" }, { "authors": [ - "Bartok9", - "soloclz" + "novajune", + "thesomewhatyou" ], - "average_similarity": 0.357, - "cluster_id": "pr-scope-36726-3", + "average_similarity": 0.398, + "cluster_id": "pr-scope-57843-4", "kind": "pr_scope", - "last_activity_at": "2026-04-15T15:57:29Z", + "last_activity_at": "2026-04-21T15:14:59Z", "outside_window_prs": [ { - "additions": 46, - "author": "edincampara", - "changed_files": 2, - "created_at": "2026-03-05T21:18:01Z", - "deletions": 4, + "additions": 383, + "author": "Kaspre", + "changed_files": 9, + "created_at": "2026-03-30T16:48:40Z", + "deletions": 50, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36726/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36726", + "files_url": "https://github.com/openclaw/openclaw/pull/57843/files", + "html_url": "https://github.com/openclaw/openclaw/pull/57843", "merged": false, - "number": 36726, + "number": 57843, "state": "open", - "title": "fix(agents): prune history images even without prior assistant reply", - "updated_at": "2026-04-18T04:23:22Z" + "title": "fix(delivery): disambiguate hook cancellations from delivery failures", + "updated_at": "2026-04-21T00:46:15Z" + }, + { + "additions": 405, + "author": "HOYALIM", + "changed_files": 13, + "created_at": "2026-04-09T06:43:07Z", + "deletions": 64, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/63596/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63596", + "merged": false, + "number": 63596, + "state": "open", + "title": "fix(gateway): canonicalize outbound message send semantics", + "updated_at": "2026-04-14T01:05:52Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.114, - "left_pr_number": 65263, - "right_pr_number": 67276, + "breadth_similarity": 0.522, + "concentration_similarity": 0.646, + "content_similarity": 0.403, + "left_pr_number": 63596, + "right_pr_number": 68341, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", + "src/gateway/server-methods", + "src/gateway", "src" ], - "shared_filenames": [], - "similarity": 0.363, - "size_similarity": 0.889 + "shared_filenames": [ + "src/gateway/server-methods/send.test.ts", + "src/gateway/server-methods/send.ts" + ], + "similarity": 0.516, + "size_similarity": 0.998 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.111, - "left_pr_number": 36726, - "right_pr_number": 65263, + "breadth_similarity": 0.703, + "concentration_similarity": 0.964, + "content_similarity": 0.356, + "left_pr_number": 57843, + "right_pr_number": 63596, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", + "src/gateway/server-methods", + "src/infra/outbound", + "src/gateway", + "src/infra", "src" ], - "shared_filenames": [], - "similarity": 0.362, - "size_similarity": 0.9 + "shared_filenames": [ + "src/gateway/server-methods/send.test.ts", + "src/gateway/server-methods/send.ts", + "src/infra/outbound/deliver.test.ts", + "src/infra/outbound/deliver.ts", + "src/infra/outbound/message.ts" + ], + "similarity": 0.506, + "size_similarity": 0.923 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.107, - "left_pr_number": 36726, - "right_pr_number": 67276, + "breadth_similarity": 0.583, + "concentration_similarity": 0.806, + "content_similarity": 0.442, + "left_pr_number": 68341, + "right_pr_number": 69752, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", + "src/gateway/server-methods", + "src/gateway", "src" ], - "shared_filenames": [], - "similarity": 0.345, - "size_similarity": 0.8 + "shared_filenames": [ + "src/gateway/server-methods/send.test.ts", + "src/gateway/server-methods/send.ts" + ], + "similarity": 0.432, + "size_similarity": 0.165 + }, + { + "breadth_similarity": 0.744, + "concentration_similarity": 0.682, + "content_similarity": 0.178, + "left_pr_number": 57843, + "right_pr_number": 68341, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/send.test.ts", + "src/gateway/server-methods/send.ts" + ], + "similarity": 0.372, + "size_similarity": 0.925 + }, + { + "breadth_similarity": 0.297, + "concentration_similarity": 0.841, + "content_similarity": 0.335, + "left_pr_number": 63596, + "right_pr_number": 69752, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "extensions", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/send.test.ts", + "src/gateway/server-methods/send.ts" + ], + "similarity": 0.331, + "size_similarity": 0.164 + }, + { + "breadth_similarity": 0.422, + "concentration_similarity": 0.877, + "content_similarity": 0.167, + "left_pr_number": 57843, + "right_pr_number": 69752, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/send.test.ts", + "src/gateway/server-methods/send.ts" + ], + "similarity": 0.23, + "size_similarity": 0.178 } ], - "pr_count": 3, + "pr_count": 4, "pr_numbers": [ - 36726, - 65263, - 67276 + 57843, + 63596, + 68341, + 69752 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65263, - 67276 + 68341, + 69752 ], - "representative_pr_number": 65263, - "representative_title": "fix(compaction): clamp reserveTokens to at most 90% of context window in precheck", - "representative_url": "https://github.com/openclaw/openclaw/pull/65263", + "representative_pr_number": 63596, + "representative_title": "fix(gateway): canonicalize outbound message send semantics", + "representative_url": "https://github.com/openclaw/openclaw/pull/63596", "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "src/gateway/server-methods", + "src/gateway", + "src", + "src/infra/outbound", + "src/infra", + "extensions" ], - "shared_filenames": [], - "summary": "3 open PRs cluster in `src/agents/pi-embedded-runner/run`, `src/agents/pi-embedded-runner`, `src/agents` with similar change breadth; representative PR #65263.", - "title": "Scope: fix(compaction): clamp reserveTokens to at most 90% of context window in precheck" + "shared_filenames": [ + "src/gateway/server-methods/send.test.ts", + "src/gateway/server-methods/send.ts", + "src/infra/outbound/message.ts", + "src/infra/outbound/deliver.test.ts", + "src/infra/outbound/deliver.ts" + ], + "summary": "4 open PRs share weighted file overlap around `src/gateway/server-methods/send.test.ts`, `src/gateway/server-methods/send.ts`, `src/infra/outbound/message.ts`; representative PR #63596.", + "title": "Scope: fix(gateway): canonicalize outbound message send semantics" }, { "authors": [ - "Jah-yee", - "Magicray1217" + "AstronautGumbo", + "skylee-01" ], - "average_similarity": 1.0, - "cluster_id": "pr-scope-65895-2", + "average_similarity": 0.861, + "cluster_id": "pr-scope-66447-3", "kind": "pr_scope", - "last_activity_at": "2026-04-14T14:49:51Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-18T13:11:18Z", + "outside_window_prs": [ + { + "additions": 102, + "author": "vincentkoc", + "changed_files": 3, + "created_at": "2026-04-14T09:20:57Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66447/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66447", + "merged": false, + "number": 66447, + "state": "open", + "title": "fix(replay): preserve synthetic tool repair aliases", + "updated_at": "2026-04-14T09:51:21Z" + } + ], "pairwise": [ + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.995, + "content_similarity": 0.953, + "left_pr_number": 68072, + "right_pr_number": 68565, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/transport-message-transform.test.ts", + "src/agents/transport-message-transform.ts" + ], + "similarity": 0.883, + "size_similarity": 0.716 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.991, + "content_similarity": 0.927, + "left_pr_number": 66447, + "right_pr_number": 68072, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/transport-message-transform.test.ts", + "src/agents/transport-message-transform.ts" + ], + "similarity": 0.866, + "size_similarity": 0.725 + }, { "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 1.0, - "left_pr_number": 65895, - "right_pr_number": 65938, + "concentration_similarity": 0.996, + "content_similarity": 0.866, + "left_pr_number": 66447, + "right_pr_number": 68565, "shared_directories": [ - "docs/providers", - "docs" + "src/agents", + "src" ], "shared_filenames": [ - "docs/providers/index.md", - "docs/providers/models.md" + "CHANGELOG.md", + "src/agents/transport-message-transform.test.ts", + "src/agents/transport-message-transform.ts" ], - "similarity": 1.0, - "size_similarity": 1.0 + "similarity": 0.834, + "size_similarity": 0.519 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 65895, - 65938 + 66447, + 68072, + 68565 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65895, - 65938 + 68072, + 68565 ], - "representative_pr_number": 65895, - "representative_title": "docs: add Bedrock Mantle provider to index and models pages", - "representative_url": "https://github.com/openclaw/openclaw/pull/65895", + "representative_pr_number": 68072, + "representative_title": "fix(agents): normalize assistant content before transport iteration", + "representative_url": "https://github.com/openclaw/openclaw/pull/68072", "shared_directories": [ - "docs/providers", - "docs" + "src/agents", + "src" ], "shared_filenames": [ - "docs/providers/models.md", - "docs/providers/index.md" + "src/agents/transport-message-transform.test.ts", + "src/agents/transport-message-transform.ts", + "CHANGELOG.md" ], - "summary": "2 open PRs share weighted file overlap around `docs/providers/models.md`, `docs/providers/index.md`; representative PR #65895.", - "title": "Scope: docs: add Bedrock Mantle provider to index and models pages" + "summary": "3 open PRs share weighted file overlap around `src/agents/transport-message-transform.test.ts`, `src/agents/transport-message-transform.ts`, `CHANGELOG.md`; representative PR #68072.", + "title": "Scope: fix(agents): normalize assistant content before transport iteration" }, { "authors": [ - "dependabot[bot]" + "Jerry-Xin", + "evgyur" ], - "average_similarity": 0.994, - "cluster_id": "pr-scope-65826-2", + "average_similarity": 0.655, + "cluster_id": "pr-scope-66471-3", "kind": "pr_scope", - "last_activity_at": "2026-04-17T08:45:25Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-21T12:17:46Z", + "outside_window_prs": [ + { + "additions": 358, + "author": "vincentkoc", + "changed_files": 4, + "created_at": "2026-04-14T09:50:40Z", + "deletions": 11, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66471/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66471", + "merged": false, + "number": 66471, + "state": "open", + "title": "fix(reply): parse markdown image replies as media", + "updated_at": "2026-04-14T10:16:10Z" + } + ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 0.982, - "content_similarity": 1.0, - "left_pr_number": 65826, - "right_pr_number": 67592, + "breadth_similarity": 0.417, + "concentration_similarity": 0.881, + "content_similarity": 0.812, + "left_pr_number": 66471, + "right_pr_number": 68338, "shared_directories": [ - "apps/android/gradle/wrapper", - "apps/android/app", - "apps/android/benchmark", - "apps/android/gradle", - "apps/android", - "apps" + "src/media", + "src" ], "shared_filenames": [ - "apps/android/app/build.gradle.kts", - "apps/android/benchmark/build.gradle.kts", - "apps/android/build.gradle.kts", - "apps/android/gradle/wrapper/gradle-wrapper.jar", - "apps/android/gradle/wrapper/gradle-wrapper.properties", - "apps/android/gradlew", - "apps/android/gradlew.bat" + "src/media/parse.test.ts", + "src/media/parse.ts" ], - "similarity": 0.994, - "size_similarity": 0.966 + "similarity": 0.681, + "size_similarity": 0.182 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.89, + "content_similarity": 0.595, + "left_pr_number": 66471, + "right_pr_number": 69312, + "shared_directories": [ + "src/media", + "src" + ], + "shared_filenames": [ + "src/media/parse.test.ts", + "src/media/parse.ts" + ], + "similarity": 0.663, + "size_similarity": 0.791 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.771, + "content_similarity": 0.709, + "left_pr_number": 68338, + "right_pr_number": 69312, + "shared_directories": [ + "src/media", + "src" + ], + "shared_filenames": [ + "src/media/parse.test.ts", + "src/media/parse.ts" + ], + "similarity": 0.619, + "size_similarity": 0.229 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 65826, - 67592 + 66471, + 68338, + 69312 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65826, - 67592 + 68338, + 69312 ], - "representative_pr_number": 65826, - "representative_title": "build(deps): bump the android-deps group across 1 directory with 16 updates", - "representative_url": "https://github.com/openclaw/openclaw/pull/65826", + "representative_pr_number": 66471, + "representative_title": "fix(reply): parse markdown image replies as media", + "representative_url": "https://github.com/openclaw/openclaw/pull/66471", "shared_directories": [ - "apps/android/gradle/wrapper", - "apps/android/benchmark", - "apps/android/gradle", - "apps/android/app", - "apps/android", - "apps" + "src/media", + "src" ], "shared_filenames": [ - "apps/android/benchmark/build.gradle.kts", - "apps/android/build.gradle.kts", - "apps/android/gradle/wrapper/gradle-wrapper.jar", - "apps/android/gradle/wrapper/gradle-wrapper.properties", - "apps/android/gradlew", - "apps/android/gradlew.bat", - "apps/android/app/build.gradle.kts" + "src/media/parse.test.ts", + "src/media/parse.ts" ], - "summary": "2 open PRs share weighted file overlap around `apps/android/benchmark/build.gradle.kts`, `apps/android/build.gradle.kts`, `apps/android/gradle/wrapper/gradle-wrapper.jar`; representative PR #65826.", - "title": "Scope: build(deps): bump the android-deps group across 1 directory with 16 updates" + "summary": "3 open PRs share weighted file overlap around `src/media/parse.test.ts`, `src/media/parse.ts`; representative PR #66471.", + "title": "Scope: fix(reply): parse markdown image replies as media" }, { "authors": [ - "jerome-benoit" + "Kailigithub", + "tianhaocui" ], - "average_similarity": 0.992, - "cluster_id": "pr-scope-66709-2", + "average_similarity": 0.623, + "cluster_id": "pr-scope-53682-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T12:01:14Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-19T05:04:56Z", + "outside_window_prs": [ + { + "additions": 2, + "author": "jarvisgebbie79-prog", + "changed_files": 1, + "created_at": "2026-03-24T12:53:35Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53682/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53682", + "merged": false, + "number": 53682, + "state": "open", + "title": "fix: preserve approved heredoc commands on gateway exec", + "updated_at": "2026-03-24T20:15:29Z" + } + ], "pairwise": [ { "breadth_similarity": 1.0, - "concentration_similarity": 0.996, - "content_similarity": 0.99, - "left_pr_number": 66709, - "right_pr_number": 66715, + "concentration_similarity": 1.0, + "content_similarity": 0.998, + "left_pr_number": 68754, + "right_pr_number": 68824, "shared_directories": [ - "docs/concepts", - "docs/providers", - "extensions/opencode-go", - "docs", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "docs/concepts/model-providers.md", - "docs/providers/opencode-go.md", - "docs/providers/opencode.md", - "extensions/opencode-go/index.test.ts", - "extensions/opencode-go/index.ts", - "extensions/opencode-go/onboard.test.ts", - "extensions/opencode-go/onboard.ts" + "src/agents/bash-tools.exec-host-gateway.ts" ], - "similarity": 0.992, - "size_similarity": 0.995 + "similarity": 0.959, + "size_similarity": 0.733 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.394, + "left_pr_number": 53682, + "right_pr_number": 68754, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/bash-tools.exec-host-gateway.ts" + ], + "similarity": 0.456, + "size_similarity": 0.2 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.376, + "left_pr_number": 53682, + "right_pr_number": 68824, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/bash-tools.exec-host-gateway.ts" + ], + "similarity": 0.454, + "size_similarity": 0.273 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 66709, - 66715 + 53682, + 68754, + 68824 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66709, - 66715 + 68754, + 68824 ], - "representative_pr_number": 66709, - "representative_title": "feat(opencode-go): add glm-5.1 catalog support", - "representative_url": "https://github.com/openclaw/openclaw/pull/66709", + "representative_pr_number": 68754, + "representative_title": "fix: remove unconditional heredoc approval in allowlist mode", + "representative_url": "https://github.com/openclaw/openclaw/pull/68754", "shared_directories": [ - "extensions/opencode-go", - "docs/concepts", - "docs/providers", - "docs", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "docs/providers/opencode-go.md", - "docs/providers/opencode.md", - "extensions/opencode-go/index.test.ts", - "extensions/opencode-go/index.ts", - "extensions/opencode-go/onboard.test.ts", - "extensions/opencode-go/onboard.ts", - "docs/concepts/model-providers.md" + "src/agents/bash-tools.exec-host-gateway.ts" ], - "summary": "2 open PRs share weighted file overlap around `docs/providers/opencode-go.md`, `docs/providers/opencode.md`, `extensions/opencode-go/index.test.ts`; representative PR #66709.", - "title": "Scope: feat(opencode-go): add glm-5.1 catalog support" + "summary": "3 open PRs share weighted file overlap around `src/agents/bash-tools.exec-host-gateway.ts`; representative PR #68754.", + "title": "Scope: fix: remove unconditional heredoc approval in allowlist mode" }, { "authors": [ - "717986230" + "kylejfrost", + "mraleko" ], - "average_similarity": 0.979, - "cluster_id": "pr-scope-65669-2", + "average_similarity": 0.582, + "cluster_id": "pr-scope-66081-3", "kind": "pr_scope", - "last_activity_at": "2026-04-14T12:35:43Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-21T16:48:44Z", + "outside_window_prs": [ + { + "additions": 158, + "author": "Rohan5commit", + "changed_files": 4, + "created_at": "2026-04-13T17:17:10Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66081/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66081", + "merged": false, + "number": 66081, + "state": "open", + "title": "feat(codex-cli): prefer output-last-message artifacts", + "updated_at": "2026-04-13T17:22:42Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.812, - "concentration_similarity": 0.997, - "content_similarity": 0.997, - "left_pr_number": 65669, - "right_pr_number": 65675, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.886, + "left_pr_number": 66819, + "right_pr_number": 69363, "shared_directories": [ - "src/gateway/protocol/schema", - "src/cli/cron-cli", - "src/cron/service", - "src/gateway/protocol", - "src/gateway/server-methods", - "src/cli", - "src/cron", - "src/gateway", + "src/agents", "src" ], "shared_filenames": [ - "ANALYSIS_SUMMARY_REPORT.md", - "CODE_ANALYSIS_REPORT.md", - "CONTINUOUS_TRACKING_PLAN.md", - "console-logging-issues.md", - "dual-brain-memory-proposal.md", - "pr_body_avatar.md", - "src/cli/cron-cli/register.cron-add.ts", - "src/cron/service/jobs.ts", - "src/cron/service/ops.custom-id.test.ts", - "src/cron/service/ops.ts" + "src/agents/cli-output.test.ts", + "src/agents/cli-output.ts" + ], + "similarity": 0.905, + "size_similarity": 0.899 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.711, + "content_similarity": 0.279, + "left_pr_number": 66081, + "right_pr_number": 69363, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/cli-output.test.ts", + "src/agents/cli-output.ts" ], - "similarity": 0.979, - "size_similarity": 0.997 + "similarity": 0.431, + "size_similarity": 1.0 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.711, + "content_similarity": 0.272, + "left_pr_number": 66081, + "right_pr_number": 66819, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/cli-output.test.ts", + "src/agents/cli-output.ts" + ], + "similarity": 0.411, + "size_similarity": 0.899 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 65669, - 65675 + 66081, + 66819, + 69363 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65669, - 65675 + 66819, + 69363 ], - "representative_pr_number": 65669, - "representative_title": "feat: support custom job IDs in cron add command", - "representative_url": "https://github.com/openclaw/openclaw/pull/65669", + "representative_pr_number": 69363, + "representative_title": "fix(agents): ignore SessionStart hook session_ids when resuming claude-cli", + "representative_url": "https://github.com/openclaw/openclaw/pull/69363", "shared_directories": [ - "src/gateway/protocol/schema", - "src/cli/cron-cli", - "src/cron/service", - "src/gateway/protocol", - "src/gateway/server-methods", - "src/cron", - "src/cli", - "src/gateway" + "src/agents", + "src" ], "shared_filenames": [ - "ANALYSIS_SUMMARY_REPORT.md", - "CODE_ANALYSIS_REPORT.md", - "CONTINUOUS_TRACKING_PLAN.md", - "console-logging-issues.md", - "dual-brain-memory-proposal.md", - "pr_body_avatar.md", - "src/cron/service/ops.custom-id.test.ts", - "type-safety-issues.md" + "src/agents/cli-output.test.ts", + "src/agents/cli-output.ts" ], - "summary": "2 open PRs share weighted file overlap around `ANALYSIS_SUMMARY_REPORT.md`, `CODE_ANALYSIS_REPORT.md`, `CONTINUOUS_TRACKING_PLAN.md`; representative PR #65669.", - "title": "Scope: feat: support custom job IDs in cron add command" + "summary": "3 open PRs share weighted file overlap around `src/agents/cli-output.test.ts`, `src/agents/cli-output.ts`; representative PR #69363.", + "title": "Scope: fix(agents): ignore SessionStart hook session_ids when resuming claude-cli" }, { "authors": [ - "QiaoSuGH", - "earon-han" + "Joel-Claw", + "sk7n4k3d" ], - "average_similarity": 0.936, - "cluster_id": "pr-scope-65356-2", + "average_similarity": 0.57, + "cluster_id": "pr-scope-65433-3", "kind": "pr_scope", - "last_activity_at": "2026-04-17T03:06:51Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-20T19:21:10Z", + "outside_window_prs": [ + { + "additions": 133, + "author": "Tianworld", + "changed_files": 7, + "created_at": "2026-04-12T15:46:33Z", + "deletions": 19, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65433/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65433", + "merged": false, + "number": 65433, + "state": "open", + "title": "fix: inbound NUL safety, Gemini 3.1 CLI templates, Sonnet 4.6 default 1M context", + "updated_at": "2026-04-12T15:51:10Z" + } + ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.994, - "left_pr_number": 65356, - "right_pr_number": 67623, + "breadth_similarity": 0.583, + "concentration_similarity": 0.985, + "content_similarity": 0.822, + "left_pr_number": 66862, + "right_pr_number": 69426, "shared_directories": [ - "src/agents/sandbox", "src/agents", "src" ], "shared_filenames": [ - "src/agents/sandbox/backend.ts" + "src/agents/context.test.ts", + "src/agents/context.ts" ], - "similarity": 0.936, - "size_similarity": 0.6 + "similarity": 0.789, + "size_similarity": 0.706 + }, + { + "breadth_similarity": 0.464, + "concentration_similarity": 0.436, + "content_similarity": 0.481, + "left_pr_number": 65433, + "right_pr_number": 69426, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/context.test.ts", + "src/agents/context.ts" + ], + "similarity": 0.472, + "size_similarity": 0.447 + }, + { + "breadth_similarity": 0.268, + "concentration_similarity": 0.421, + "content_similarity": 0.507, + "left_pr_number": 65433, + "right_pr_number": 66862, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/context.test.ts", + "src/agents/context.ts" + ], + "similarity": 0.45, + "size_similarity": 0.316 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 65356, - 67623 + 65433, + 66862, + 69426 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65356, - 67623 + 66862, + 69426 ], - "representative_pr_number": 65356, - "representative_title": "fix(sandbox): use resolveGlobalSingleton for backend registry", - "representative_url": "https://github.com/openclaw/openclaw/pull/65356", + "representative_pr_number": 69426, + "representative_title": "agents/context: unlock context1m on proxied Anthropic 1M-capable models (#69353)", + "representative_url": "https://github.com/openclaw/openclaw/pull/69426", "shared_directories": [ - "src/agents/sandbox", "src/agents", "src" ], "shared_filenames": [ - "src/agents/sandbox/backend.ts" + "src/agents/context.test.ts", + "src/agents/context.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/sandbox/backend.ts`; representative PR #65356.", - "title": "Scope: fix(sandbox): use resolveGlobalSingleton for backend registry" + "summary": "3 open PRs share weighted file overlap around `src/agents/context.test.ts`, `src/agents/context.ts`; representative PR #69426.", + "title": "Scope: agents/context: unlock context1m on proxied Anthropic 1M-capable models (#69353)" }, { "authors": [ - "JQRobert" + "alchip" ], - "average_similarity": 0.931, - "cluster_id": "pr-scope-65735-2", + "average_similarity": 0.544, + "cluster_id": "pr-scope-63666-3", "kind": "pr_scope", - "last_activity_at": "2026-04-13T13:55:47Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-17T02:50:22Z", + "outside_window_prs": [ + { + "additions": 27, + "author": "alchip", + "changed_files": 1, + "created_at": "2026-04-09T09:39:38Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/63666/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63666", + "merged": false, + "number": 63666, + "state": "open", + "title": "test(imessage): cover reflected assistant-content inbound drop", + "updated_at": "2026-04-14T07:35:11Z" + } + ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 0.989, - "content_similarity": 0.997, - "left_pr_number": 65735, - "right_pr_number": 65962, + "breadth_similarity": 0.292, + "concentration_similarity": 0.516, + "content_similarity": 0.659, + "left_pr_number": 63666, + "right_pr_number": 67929, "shared_directories": [ - "src/infra", - "src" + "extensions/imessage/src/monitor", + "extensions/imessage/src", + "extensions/imessage", + "extensions" ], "shared_filenames": [ - "src/infra/tsdown-config.test.ts", - "tsdown.config.ts" + "extensions/imessage/src/monitor/inbound-processing.test.ts" ], - "similarity": 0.931, - "size_similarity": 0.556 + "similarity": 0.579, + "size_similarity": 0.422 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.69, + "content_similarity": 0.61, + "left_pr_number": 63666, + "right_pr_number": 67923, + "shared_directories": [ + "extensions/imessage/src/monitor", + "extensions/imessage/src", + "extensions/imessage", + "extensions" + ], + "shared_filenames": [ + "extensions/imessage/src/monitor/inbound-processing.test.ts" + ], + "similarity": 0.55, + "size_similarity": 0.31 + }, + { + "breadth_similarity": 0.708, + "concentration_similarity": 0.826, + "content_similarity": 0.402, + "left_pr_number": 67923, + "right_pr_number": 67929, + "shared_directories": [ + "extensions/imessage/src/monitor", + "extensions/imessage/src", + "extensions/imessage", + "extensions" + ], + "shared_filenames": [ + "extensions/imessage/src/monitor/inbound-processing.test.ts" + ], + "similarity": 0.504, + "size_similarity": 0.736 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 65735, - 65962 + 63666, + 67923, + 67929 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65735, - 65962 + 67923, + 67929 ], - "representative_pr_number": 65735, - "representative_title": "fix: add missing runtime entries for /status command", - "representative_url": "https://github.com/openclaw/openclaw/pull/65735", + "representative_pr_number": 63666, + "representative_title": "test(imessage): cover reflected assistant-content inbound drop", + "representative_url": "https://github.com/openclaw/openclaw/pull/63666", "shared_directories": [ - "src/infra", - "src" + "extensions/imessage/src/monitor", + "extensions/imessage/src", + "extensions/imessage", + "extensions" ], "shared_filenames": [ - "src/infra/tsdown-config.test.ts", - "tsdown.config.ts" + "extensions/imessage/src/monitor/inbound-processing.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/infra/tsdown-config.test.ts`, `tsdown.config.ts`; representative PR #65735.", - "title": "Scope: fix: add missing runtime entries for /status command" + "summary": "3 open PRs share weighted file overlap around `extensions/imessage/src/monitor/inbound-processing.test.ts`; representative PR #63666.", + "title": "Scope: test(imessage): cover reflected assistant-content inbound drop" }, { "authors": [ - "jdc4429" + "bottenbenny", + "sparkeros" ], - "average_similarity": 0.923, - "cluster_id": "pr-scope-65554-2", + "average_similarity": 0.543, + "cluster_id": "pr-scope-38500-3", "kind": "pr_scope", - "last_activity_at": "2026-04-19T07:18:32Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-19T21:07:47Z", + "outside_window_prs": [ + { + "additions": 29, + "author": "xiwan", + "changed_files": 2, + "created_at": "2026-03-07T02:49:51Z", + "deletions": 24, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38500/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38500", + "merged": false, + "number": 38500, + "state": "open", + "title": "build: inject package version via __OPENCLAW_VERSION__ define in tsdown", + "updated_at": "2026-04-21T04:32:42Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.908, - "concentration_similarity": 0.965, - "content_similarity": 0.937, - "left_pr_number": 65554, - "right_pr_number": 68808, + "breadth_similarity": 0.667, + "concentration_similarity": 0.808, + "content_similarity": 0.589, + "left_pr_number": 38500, + "right_pr_number": 69089, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawKit/Resources", - "apps/shared/OpenClawKit/Sources/OpenClawKit", - "apps/shared/OpenClawKit/Sources", - "ui/src/styles/chat", - "ui/src/ui/chat", - "apps/shared/OpenClawKit", - "src/agents/command", - "src/agents/pi-embedded-runner", - "src/agents/skills", - "src/agents/tools" + "src" ], "shared_filenames": [ - ".gitignore", - "PR-add-media-support-webchat-telegram.md", - "apps/shared/OpenClawKit/Sources/OpenClawKit/Resources/tool-display.json", - "media-server.py", - "pnpm-workspace.yaml", - "src/agents/command/types.ts", - "src/agents/pi-embedded-runner/compact.ts", - "src/agents/pi-tool-definition-adapter.ts", - "src/agents/pi-tools.read.ts", - "src/agents/pi-tools.ts" + "tsdown.config.ts" ], - "similarity": 0.923, - "size_similarity": 0.849 + "similarity": 0.624, + "size_similarity": 0.698 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.899, + "content_similarity": 0.528, + "left_pr_number": 68176, + "right_pr_number": 69089, + "shared_directories": [ + "src/infra", + "src" + ], + "shared_filenames": [ + "src/infra/git-commit.ts", + "tsdown.config.ts" + ], + "similarity": 0.552, + "size_similarity": 0.359 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.909, + "content_similarity": 0.355, + "left_pr_number": 38500, + "right_pr_number": 68176, + "shared_directories": [ + "src" + ], + "shared_filenames": [ + "tsdown.config.ts" + ], + "similarity": 0.454, + "size_similarity": 0.515 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 65554, - 68808 + 38500, + 68176, + 69089 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65554, - 68808 + 68176, + 69089 ], - "representative_pr_number": 65554, - "representative_title": "Jdc4429 media support v2 - Updated to work with latest version 2026.4.11", - "representative_url": "https://github.com/openclaw/openclaw/pull/65554", + "representative_pr_number": 69089, + "representative_title": "fix(update): move refreshGatewayServiceEnv assignment outside isLoaded() check", + "representative_url": "https://github.com/openclaw/openclaw/pull/69089", "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawKit/Resources", - "apps/shared/OpenClawKit/Sources/OpenClawKit", - "ui/src/styles/chat", - "apps/shared/OpenClawKit/Sources", - "ui/src/ui/chat", - "src/canvas-host/a2ui", - "src/agents/command", - "src/agents/skills" + "src", + "src/infra" ], "shared_filenames": [ - "PR-add-media-support-webchat-telegram.md", - "media-server.py", - "src/agents/pi-tools.types.ts", - "src/agents/tool-media.ts", - "src/agents/tools/download-video.ts", - "src/agents/tools/image-tool.ts", - "ui/src/ui/chat/message-resize.ts", - "src/agents/tool-images.test.ts" + "tsdown.config.ts", + "src/infra/git-commit.ts" ], - "summary": "2 open PRs share weighted file overlap around `PR-add-media-support-webchat-telegram.md`, `media-server.py`, `src/agents/pi-tools.types.ts`; representative PR #65554.", - "title": "Scope: Jdc4429 media support v2 - Updated to work with latest version 2026.4.11" + "summary": "3 open PRs share weighted file overlap around `tsdown.config.ts`, `src/infra/git-commit.ts`; representative PR #69089.", + "title": "Scope: fix(update): move refreshGatewayServiceEnv assignment outside isLoaded() check" }, { "authors": [ - "SimoneB79", - "wkeything" + "nightq", + "shaun0927" ], - "average_similarity": 0.907, - "cluster_id": "pr-scope-66429-2", + "average_similarity": 0.53, + "cluster_id": "pr-scope-65841-3", "kind": "pr_scope", - "last_activity_at": "2026-04-14T22:38:21Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-17T10:55:56Z", + "outside_window_prs": [ + { + "additions": 148, + "author": "steipete", + "changed_files": 10, + "created_at": "2026-04-13T09:42:46Z", + "deletions": 12, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65841/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65841", + "merged": false, + "number": 65841, + "state": "open", + "title": "fix(msteams): harden security-sensitive flows", + "updated_at": "2026-04-13T09:51:10Z" + } + ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.955, - "left_pr_number": 66429, - "right_pr_number": 66844, + "breadth_similarity": 0.875, + "concentration_similarity": 0.805, + "content_similarity": 0.698, + "left_pr_number": 67660, + "right_pr_number": 68077, "shared_directories": [ - "src/plugins", - "src" + "extensions/msteams/src", + "extensions/msteams", + "extensions" ], "shared_filenames": [ - "src/plugins/memory-embedding-provider-runtime.test.ts", - "src/plugins/memory-embedding-provider-runtime.ts" + "extensions/msteams/src/setup-surface.test.ts", + "extensions/msteams/src/setup-surface.ts" ], - "similarity": 0.907, - "size_similarity": 0.593 + "similarity": 0.664, + "size_similarity": 0.32 + }, + { + "breadth_similarity": 0.65, + "concentration_similarity": 0.751, + "content_similarity": 0.438, + "left_pr_number": 65841, + "right_pr_number": 67660, + "shared_directories": [ + "extensions/msteams/src", + "extensions/msteams", + "extensions" + ], + "shared_filenames": [ + "extensions/msteams/src/setup-surface.test.ts", + "extensions/msteams/src/setup-surface.ts" + ], + "similarity": 0.479, + "size_similarity": 0.469 + }, + { + "breadth_similarity": 0.7, + "concentration_similarity": 0.946, + "content_similarity": 0.437, + "left_pr_number": 65841, + "right_pr_number": 68077, + "shared_directories": [ + "extensions/msteams/src", + "extensions/msteams", + "extensions" + ], + "shared_filenames": [ + "extensions/msteams/src/setup-surface.test.ts", + "extensions/msteams/src/setup-surface.ts" + ], + "similarity": 0.446, + "size_similarity": 0.15 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 66429, - 66844 + 65841, + 67660, + 68077 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66429, - 66844 + 67660, + 68077 ], - "representative_pr_number": 66429, - "representative_title": "fix(memory): allow capability fallback lookup for missing runtime embedding provider", - "representative_url": "https://github.com/openclaw/openclaw/pull/66429", + "representative_pr_number": 67660, + "representative_title": "fix(msteams): use explorer.exe for delegated OAuth on win32", + "representative_url": "https://github.com/openclaw/openclaw/pull/67660", "shared_directories": [ - "src/plugins", - "src" + "extensions/msteams/src", + "extensions/msteams", + "extensions" ], "shared_filenames": [ - "src/plugins/memory-embedding-provider-runtime.test.ts", - "src/plugins/memory-embedding-provider-runtime.ts" + "extensions/msteams/src/setup-surface.test.ts", + "extensions/msteams/src/setup-surface.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/plugins/memory-embedding-provider-runtime.test.ts`, `src/plugins/memory-embedding-provider-runtime.ts`; representative PR #66429.", - "title": "Scope: fix(memory): allow capability fallback lookup for missing runtime embedding provider" + "summary": "3 open PRs share weighted file overlap around `extensions/msteams/src/setup-surface.test.ts`, `extensions/msteams/src/setup-surface.ts`; representative PR #67660.", + "title": "Scope: fix(msteams): use explorer.exe for delegated OAuth on win32" }, { "authors": [ - "100yenadmin" + "draix" ], - "average_similarity": 0.885, - "cluster_id": "pr-scope-68440-2", + "average_similarity": 0.529, + "cluster_id": "pr-scope-40574-3", "kind": "pr_scope", - "last_activity_at": "2026-04-19T06:50:51Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-15T13:40:47Z", + "outside_window_prs": [ + { + "additions": 421, + "author": "imwyvern", + "changed_files": 2, + "created_at": "2026-03-09T04:17:12Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/40574/files", + "html_url": "https://github.com/openclaw/openclaw/pull/40574", + "merged": false, + "number": 40574, + "state": "open", + "title": "feat(write): add append mode to prevent silent data loss", + "updated_at": "2026-04-21T07:12:12Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.787, - "concentration_similarity": 0.914, - "content_similarity": 0.918, - "left_pr_number": 68440, - "right_pr_number": 68441, + "breadth_similarity": 0.5, + "concentration_similarity": 0.809, + "content_similarity": 0.866, + "left_pr_number": 67202, + "right_pr_number": 67207, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/gateway/protocol/schema", - "ui/src/i18n/locales", - "ui/src/styles/chat", - "ui/src/ui/chat", - "ui/src/ui/views", - "docs/plans/rollout", - "src/agents/pi-embedded-runner", - "src/agents/plan-mode", - "src/agents/skills" + "src/agents", + "src" ], "shared_filenames": [ - "docs/agents/prompt-stack-spec.md", - "docs/plans/rollout/README.md", - "docs/plans/rollout/openclaw-plan-mode-rollout.patch", - "extensions/openai/index.test.ts", - "extensions/openai/prompt-overlay.ts", - "qa/scenarios/gpt54-act-dont-ask.md", - "qa/scenarios/gpt54-cancelled-status.md", - "qa/scenarios/gpt54-injection-scan.md", - "qa/scenarios/gpt54-mandatory-tool-use.md", - "qa/scenarios/gpt54-plan-mode-default-off.md" + "src/agents/pi-tools.read.ts", + "src/agents/pi-tools.write-verification.test.ts" ], - "similarity": 0.885, - "size_similarity": 0.788 + "similarity": 0.818, + "size_similarity": 0.809 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.247, + "left_pr_number": 40574, + "right_pr_number": 67202, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-tools.read.ts" + ], + "similarity": 0.415, + "size_similarity": 0.612 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.809, + "content_similarity": 0.214, + "left_pr_number": 40574, + "right_pr_number": 67207, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-tools.read.ts" + ], + "similarity": 0.354, + "size_similarity": 0.757 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 68440, - 68441 + 40574, + 67202, + 67207 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 68440, - 68441 + 67202, + 67207 ], - "representative_pr_number": 68440, - "representative_title": "feat(plan-mode): plan archetype + ask_user_question + auto mode (PR-10)", - "representative_url": "https://github.com/openclaw/openclaw/pull/68440", + "representative_pr_number": 67202, + "representative_title": "fix: add post-write verification to prevent false success reports", + "representative_url": "https://github.com/openclaw/openclaw/pull/67202", "shared_directories": [ - "ui/src/i18n/locales", - "ui/src/styles/chat", - "ui/src/ui/chat", - "src/gateway/protocol/schema", - "ui/src/ui/views", - "src/agents/pi-embedded-runner/run", - "docs/plans/rollout", - "src/agents/plan-mode" + "src/agents", + "src" ], "shared_filenames": [ - "docs/agents/prompt-stack-spec.md", - "docs/plans/rollout/README.md", - "docs/plans/rollout/openclaw-plan-mode-rollout.patch", - "src/agents/plan-mode/plan-archetype-prompt.test.ts", - "src/agents/plan-mode/plan-archetype-prompt.ts", - "src/agents/plan-mode/plan-nudge-crons.test.ts", - "src/agents/plan-mode/plan-nudge-crons.ts", - "src/agents/system-prompt-gpt5-boot-reorder.test.ts" + "src/agents/pi-tools.read.ts", + "src/agents/pi-tools.write-verification.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `docs/agents/prompt-stack-spec.md`, `docs/plans/rollout/README.md`, `docs/plans/rollout/openclaw-plan-mode-rollout.patch`; representative PR #68440.", - "title": "Scope: feat(plan-mode): plan archetype + ask_user_question + auto mode (PR-10)" + "summary": "3 open PRs share weighted file overlap around `src/agents/pi-tools.read.ts`, `src/agents/pi-tools.write-verification.test.ts`; representative PR #67202.", + "title": "Scope: fix: add post-write verification to prevent false success reports" }, { "authors": [ - "chrisabad" + "iamlukethedev", + "likewen-tech" ], - "average_similarity": 0.855, - "cluster_id": "pr-scope-68381-2", + "average_similarity": 0.521, + "cluster_id": "pr-scope-62789-3", "kind": "pr_scope", - "last_activity_at": "2026-04-19T02:58:18Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-21T03:50:58Z", + "outside_window_prs": [ + { + "additions": 1107, + "author": "rocdesu", + "changed_files": 16, + "created_at": "2026-04-08T00:58:09Z", + "deletions": 18, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/62789/files", + "html_url": "https://github.com/openclaw/openclaw/pull/62789", + "merged": false, + "number": 62789, + "state": "open", + "title": "cron: add command payload execution engine", + "updated_at": "2026-04-11T23:57:32Z" + } + ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.898, - "left_pr_number": 68381, - "right_pr_number": 68785, + "breadth_similarity": 0.75, + "concentration_similarity": 0.812, + "content_similarity": 0.605, + "left_pr_number": 68535, + "right_pr_number": 69562, "shared_directories": [ - "src/process", + "src/gateway", "src" ], "shared_filenames": [ - "src/process/command-queue.test.ts", - "src/process/command-queue.ts" + "src/gateway/server.cron.test.ts" ], - "similarity": 0.855, - "size_similarity": 0.509 + "similarity": 0.565, + "size_similarity": 0.171 + }, + { + "breadth_similarity": 0.229, + "concentration_similarity": 0.873, + "content_similarity": 0.559, + "left_pr_number": 62789, + "right_pr_number": 69562, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server.cron.test.ts" + ], + "similarity": 0.518, + "size_similarity": 0.406 + }, + { + "breadth_similarity": 0.146, + "concentration_similarity": 0.684, + "content_similarity": 0.599, + "left_pr_number": 62789, + "right_pr_number": 68535, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-cron.ts", + "src/gateway/server.cron.test.ts" + ], + "similarity": 0.478, + "size_similarity": 0.069 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 68381, - 68785 + 62789, + 68535, + 69562 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 68381, - 68785 + 68535, + 69562 ], - "representative_pr_number": 68381, - "representative_title": "feat: add maxExecutionMs per-task timeout to command lane", - "representative_url": "https://github.com/openclaw/openclaw/pull/68381", + "representative_pr_number": 69562, + "representative_title": "fix: validate cron announce account ids", + "representative_url": "https://github.com/openclaw/openclaw/pull/69562", "shared_directories": [ - "src/process", + "src/gateway", "src" ], "shared_filenames": [ - "src/process/command-queue.test.ts", - "src/process/command-queue.ts" + "src/gateway/server.cron.test.ts", + "src/gateway/server-cron.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/process/command-queue.test.ts`, `src/process/command-queue.ts`; representative PR #68381.", - "title": "Scope: feat: add maxExecutionMs per-task timeout to command lane" + "summary": "3 open PRs share weighted file overlap around `src/gateway/server.cron.test.ts`, `src/gateway/server-cron.ts`; representative PR #69562.", + "title": "Scope: fix: validate cron announce account ids" }, { "authors": [ - "Tianworld", - "briandevans" + "Bartok9", + "zoneblaze" ], - "average_similarity": 0.824, - "cluster_id": "pr-scope-67175-2", + "average_similarity": 0.52, + "cluster_id": "pr-scope-64518-3", "kind": "pr_scope", - "last_activity_at": "2026-04-15T14:24:25Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-18T17:58:17Z", + "outside_window_prs": [ + { + "additions": 57, + "author": "cedillarack", + "changed_files": 2, + "created_at": "2026-04-10T22:18:01Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64518/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64518", + "merged": false, + "number": 64518, + "state": "open", + "title": "fix: clear model/provider override on /new and /reset", + "updated_at": "2026-04-10T22:39:06Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.583, - "concentration_similarity": 0.932, - "content_similarity": 0.885, - "left_pr_number": 67175, - "right_pr_number": 67209, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.56, + "left_pr_number": 64518, + "right_pr_number": 68202, "shared_directories": [ - "src/logging", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/logging/config.test.ts", - "src/logging/config.ts" + "src/auto-reply/reply/session.test.ts", + "src/auto-reply/reply/session.ts" ], - "similarity": 0.824, - "size_similarity": 0.667 + "similarity": 0.665, + "size_similarity": 0.824 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.409, + "left_pr_number": 67591, + "right_pr_number": 68202, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/session.ts" + ], + "similarity": 0.466, + "size_similarity": 0.365 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.338, + "left_pr_number": 64518, + "right_pr_number": 67591, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/session.ts" + ], + "similarity": 0.428, + "size_similarity": 0.443 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 67175, - 67209 + 64518, + 67591, + 68202 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67175, - 67209 + 67591, + 68202 ], - "representative_pr_number": 67175, - "representative_title": "fix(logging): honor logging.file in bundled gateway runtime", - "representative_url": "https://github.com/openclaw/openclaw/pull/67175", + "representative_pr_number": 68202, + "representative_title": "fix(session): only persist user-selected auth profile overrides across /new and /reset", + "representative_url": "https://github.com/openclaw/openclaw/pull/68202", "shared_directories": [ - "src/logging", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/logging/config.test.ts", - "src/logging/config.ts" + "src/auto-reply/reply/session.ts", + "src/auto-reply/reply/session.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/logging/config.test.ts`, `src/logging/config.ts`; representative PR #67175.", - "title": "Scope: fix(logging): honor logging.file in bundled gateway runtime" + "summary": "3 open PRs share weighted file overlap around `src/auto-reply/reply/session.ts`, `src/auto-reply/reply/session.test.ts`; representative PR #68202.", + "title": "Scope: fix(session): only persist user-selected auth profile overrides across /new and /reset" }, { "authors": [ - "draix" + "1sh-date", + "rarest" ], - "average_similarity": 0.819, - "cluster_id": "pr-scope-67202-2", + "average_similarity": 0.498, + "cluster_id": "pr-scope-63864-3", "kind": "pr_scope", - "last_activity_at": "2026-04-15T13:40:47Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-15T16:52:06Z", + "outside_window_prs": [ + { + "additions": 97, + "author": "SweetSophia", + "changed_files": 6, + "created_at": "2026-04-09T17:20:32Z", + "deletions": 274, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/63864/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63864", + "merged": false, + "number": 63864, + "state": "open", + "title": "feat: configurable session lane concurrency", + "updated_at": "2026-04-20T17:37:31Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.5, - "concentration_similarity": 0.809, - "content_similarity": 0.867, - "left_pr_number": 67202, - "right_pr_number": 67207, + "breadth_similarity": 0.667, + "concentration_similarity": 0.951, + "content_similarity": 0.578, + "left_pr_number": 63864, + "right_pr_number": 67098, "shared_directories": [ - "src/agents", + "src/config", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/pi-tools.read.ts", - "src/agents/pi-tools.write-verification.test.ts" + "src/config/agent-limits.ts", + "src/config/types.agent-defaults.ts", + "src/gateway/server-lanes.ts", + "src/gateway/server-reload-handlers.ts" ], - "similarity": 0.819, - "size_similarity": 0.809 + "similarity": 0.533, + "size_similarity": 0.097 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.814, + "content_similarity": 0.609, + "left_pr_number": 63864, + "right_pr_number": 67292, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-reload-handlers.ts" + ], + "similarity": 0.514, + "size_similarity": 0.035 + }, + { + "breadth_similarity": 0.7, + "concentration_similarity": 0.765, + "content_similarity": 0.405, + "left_pr_number": 67098, + "right_pr_number": 67292, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-reload-handlers.ts" + ], + "similarity": 0.446, + "size_similarity": 0.361 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 67202, - 67207 + 63864, + 67098, + 67292 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67202, - 67207 + 67098, + 67292 ], - "representative_pr_number": 67202, - "representative_title": "fix: add post-write verification to prevent false success reports", - "representative_url": "https://github.com/openclaw/openclaw/pull/67202", + "representative_pr_number": 63864, + "representative_title": "feat: configurable session lane concurrency", + "representative_url": "https://github.com/openclaw/openclaw/pull/63864", "shared_directories": [ - "src/agents", - "src" + "src/gateway", + "src", + "src/config" ], "shared_filenames": [ - "src/agents/pi-tools.write-verification.test.ts", - "src/agents/pi-tools.read.ts" + "src/gateway/server-reload-handlers.ts", + "src/config/agent-limits.ts", + "src/gateway/server-lanes.ts", + "src/config/types.agent-defaults.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/pi-tools.write-verification.test.ts`, `src/agents/pi-tools.read.ts`; representative PR #67202.", - "title": "Scope: fix: add post-write verification to prevent false success reports" + "summary": "3 open PRs share weighted file overlap around `src/gateway/server-reload-handlers.ts`, `src/config/agent-limits.ts`, `src/gateway/server-lanes.ts`; representative PR #63864.", + "title": "Scope: feat: configurable session lane concurrency" }, { "authors": [ - "wirjo" + "patl4588", + "wnlen" ], - "average_similarity": 0.79, - "cluster_id": "pr-scope-68725-2", + "average_similarity": 0.469, + "cluster_id": "pr-scope-53348-3", "kind": "pr_scope", - "last_activity_at": "2026-04-19T03:06:20Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-20T20:28:51Z", + "outside_window_prs": [ + { + "additions": 27, + "author": "yangming0506", + "changed_files": 5, + "created_at": "2026-03-24T03:24:29Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53348/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53348", + "merged": false, + "number": 53348, + "state": "open", + "title": "Merge pull request #1 from yangming0506/main", + "updated_at": "2026-03-24T20:15:31Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.417, - "concentration_similarity": 0.95, - "content_similarity": 0.839, - "left_pr_number": 68725, - "right_pr_number": 68730, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.562, + "left_pr_number": 67227, + "right_pr_number": 69452, "shared_directories": [ - "extensions/amazon-bedrock-mantle", - "extensions" + "docs/concepts", + "docs" ], "shared_filenames": [ - "extensions/amazon-bedrock-mantle/discovery.ts" + "docs/concepts/model-providers.md" ], - "similarity": 0.79, - "size_similarity": 0.755 + "similarity": 0.679, + "size_similarity": 0.907 + }, + { + "breadth_similarity": 0.2, + "concentration_similarity": 0.387, + "content_similarity": 0.294, + "left_pr_number": 53348, + "right_pr_number": 67227, + "shared_directories": [ + "docs/concepts", + "docs" + ], + "shared_filenames": [ + "docs/concepts/model-providers.md" + ], + "similarity": 0.364, + "size_similarity": 0.795 + }, + { + "breadth_similarity": 0.2, + "concentration_similarity": 0.387, + "content_similarity": 0.307, + "left_pr_number": 53348, + "right_pr_number": 69452, + "shared_directories": [ + "docs/concepts", + "docs" + ], + "shared_filenames": [ + "docs/concepts/model-providers.md" + ], + "similarity": 0.362, + "size_similarity": 0.721 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 68725, - 68730 + 53348, + 67227, + 69452 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 68725, - 68730 + 67227, + 69452 ], - "representative_pr_number": 68725, - "representative_title": "feat(amazon-bedrock-mantle): add known context windows for open-weight Mantle models", - "representative_url": "https://github.com/openclaw/openclaw/pull/68725", + "representative_pr_number": 67227, + "representative_title": "docs: clarify provider request proxy configuration", + "representative_url": "https://github.com/openclaw/openclaw/pull/67227", "shared_directories": [ - "extensions/amazon-bedrock-mantle", - "extensions" + "docs/concepts", + "docs" ], "shared_filenames": [ - "extensions/amazon-bedrock-mantle/discovery.ts" + "docs/concepts/model-providers.md" ], - "summary": "2 open PRs share weighted file overlap around `extensions/amazon-bedrock-mantle/discovery.ts`; representative PR #68725.", - "title": "Scope: feat(amazon-bedrock-mantle): add known context windows for open-weight Mantle models" + "summary": "3 open PRs share weighted file overlap around `docs/concepts/model-providers.md`; representative PR #67227.", + "title": "Scope: docs: clarify provider request proxy configuration" }, { "authors": [ - "Luckywolf82", - "jhsmith409" + "bluesky6868", + "ymaxgit" ], - "average_similarity": 0.785, - "cluster_id": "pr-scope-66572-2", + "average_similarity": 0.462, + "cluster_id": "pr-scope-49131-3", "kind": "pr_scope", - "last_activity_at": "2026-04-14T23:53:56Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-18T07:38:01Z", + "outside_window_prs": [ + { + "additions": 172, + "author": "eulicesl", + "changed_files": 3, + "created_at": "2026-03-17T16:26:28Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/49131/files", + "html_url": "https://github.com/openclaw/openclaw/pull/49131", + "merged": false, + "number": 49131, + "state": "open", + "title": "fix: add placeholder transcript for silent voice notes", + "updated_at": "2026-04-17T14:02:32Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.583, - "concentration_similarity": 0.736, - "content_similarity": 0.823, - "left_pr_number": 66572, - "right_pr_number": 66855, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.528, + "left_pr_number": 49131, + "right_pr_number": 68456, "shared_directories": [ - "src/plugins", + "src/media-understanding", "src" ], "shared_filenames": [ - "src/plugins/capability-provider-runtime.test.ts", - "src/plugins/capability-provider-runtime.ts" + "src/media-understanding/apply.test.ts", + "src/media-understanding/apply.ts" ], - "similarity": 0.785, - "size_similarity": 0.761 + "similarity": 0.542, + "size_similarity": 0.261 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.27, + "left_pr_number": 68225, + "right_pr_number": 68456, + "shared_directories": [ + "src/media-understanding", + "src" + ], + "shared_filenames": [ + "src/media-understanding/apply.ts" + ], + "similarity": 0.483, + "size_similarity": 0.958 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.266, + "left_pr_number": 49131, + "right_pr_number": 68225, + "shared_directories": [ + "src/media-understanding", + "src" + ], + "shared_filenames": [ + "src/media-understanding/apply.ts" + ], + "similarity": 0.36, + "size_similarity": 0.273 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 66572, - 66855 + 49131, + 68225, + 68456 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66572, - 66855 + 68225, + 68456 ], - "representative_pr_number": 66572, - "representative_title": "fix: honor cfg-compatible capability provider resolution before partial active registries", - "representative_url": "https://github.com/openclaw/openclaw/pull/66572", + "representative_pr_number": 68456, + "representative_title": "security(media): anchor sanitizeMimeType regex to reject malformed input", + "representative_url": "https://github.com/openclaw/openclaw/pull/68456", "shared_directories": [ - "src/plugins", + "src/media-understanding", "src" ], "shared_filenames": [ - "src/plugins/capability-provider-runtime.test.ts", - "src/plugins/capability-provider-runtime.ts" + "src/media-understanding/apply.ts", + "src/media-understanding/apply.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/plugins/capability-provider-runtime.test.ts`, `src/plugins/capability-provider-runtime.ts`; representative PR #66572.", - "title": "Scope: fix: honor cfg-compatible capability provider resolution before partial active registries" + "summary": "3 open PRs share weighted file overlap around `src/media-understanding/apply.ts`, `src/media-understanding/apply.test.ts`; representative PR #68456.", + "title": "Scope: security(media): anchor sanitizeMimeType regex to reject malformed input" }, { "authors": [ - "ajfonthemove", - "tianhaocui" + "safrano9999", + "swotvibe" ], - "average_similarity": 0.77, - "cluster_id": "pr-scope-68286-2", + "average_similarity": 0.459, + "cluster_id": "pr-scope-62431-3", "kind": "pr_scope", - "last_activity_at": "2026-04-19T05:11:11Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-20T01:29:02Z", + "outside_window_prs": [ + { + "additions": 98, + "author": "urtabajev", + "changed_files": 8, + "created_at": "2026-04-07T10:23:56Z", + "deletions": 24, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/62431/files", + "html_url": "https://github.com/openclaw/openclaw/pull/62431", + "merged": false, + "number": 62431, + "state": "open", + "title": "infra: prefer OPENCLAW_IMAGE_APT_PACKAGES over OPENCLAW_DOCKER_APT_PACKAGES", + "updated_at": "2026-04-11T06:54:11Z" + } + ], "pairwise": [ + { + "breadth_similarity": 0.402, + "concentration_similarity": 0.897, + "content_similarity": 0.63, + "left_pr_number": 62431, + "right_pr_number": 69143, + "shared_directories": [ + "docs/install", + "scripts/docker", + "docs", + "scripts", + "src" + ], + "shared_filenames": [ + "docs/install/docker.md", + "scripts/docker/setup.sh", + "src/docker-setup.e2e.test.ts" + ], + "similarity": 0.602, + "size_similarity": 0.508 + }, { "breadth_similarity": 0.875, - "concentration_similarity": 0.786, - "content_similarity": 0.797, - "left_pr_number": 68286, - "right_pr_number": 68830, + "concentration_similarity": 0.847, + "content_similarity": 0.357, + "left_pr_number": 68994, + "right_pr_number": 69143, "shared_directories": [ - "extensions/memory-core/src/memory", - "packages/memory-host-sdk/src/host", - "extensions/memory-core/src", - "packages/memory-host-sdk/src", - "src/memory-host-sdk/host", - "extensions/memory-core", - "packages/memory-host-sdk", - "src/memory-host-sdk", - "extensions", - "packages" + "scripts/docker", + "scripts", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/memory/hybrid.ts", - "packages/memory-host-sdk/src/host/types.ts", - "src/memory-host-sdk/host/types.ts" + "scripts/docker/setup.sh" ], - "similarity": 0.77, - "size_similarity": 0.571 - } - ], - "pr_count": 2, - "pr_numbers": [ - 68286, - 68830 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 68286, - 68830 - ], - "representative_pr_number": 68286, - "representative_title": "feat(memory-core): expose vectorScore and textScore in hybrid search results", - "representative_url": "https://github.com/openclaw/openclaw/pull/68286", - "shared_directories": [ - "packages/memory-host-sdk/src/host", - "extensions/memory-core/src/memory", - "packages/memory-host-sdk/src", - "src/memory-host-sdk/host", - "extensions/memory-core/src", - "packages/memory-host-sdk", - "src/memory-host-sdk", - "extensions/memory-core" - ], - "shared_filenames": [ - "extensions/memory-core/src/memory/hybrid.ts", - "packages/memory-host-sdk/src/host/types.ts", - "src/memory-host-sdk/host/types.ts" - ], - "summary": "2 open PRs share weighted file overlap around `extensions/memory-core/src/memory/hybrid.ts`, `packages/memory-host-sdk/src/host/types.ts`, `src/memory-host-sdk/host/types.ts`; representative PR #68286.", - "title": "Scope: feat(memory-core): expose vectorScore and textScore in hybrid search results" - }, - { - "authors": [ - "Bartok9", - "zhouhe-xydt" - ], - "average_similarity": 0.768, - "cluster_id": "pr-scope-65773-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-13T08:41:54Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.464, + "size_similarity": 0.564 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.772, - "left_pr_number": 65773, - "right_pr_number": 65809, + "breadth_similarity": 0.464, + "concentration_similarity": 0.95, + "content_similarity": 0.116, + "left_pr_number": 62431, + "right_pr_number": 68994, "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions" + "scripts/docker", + "scripts", + "src" ], "shared_filenames": [ - "extensions/slack/src/setup-core.ts", - "extensions/slack/src/shared.ts" + "scripts/docker/setup.sh" ], - "similarity": 0.768, - "size_similarity": 0.52 + "similarity": 0.31, + "size_similarity": 0.902 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 65773, - 65809 + 62431, + 68994, + 69143 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65773, - 65809 + 68994, + 69143 ], - "representative_pr_number": 65773, - "representative_title": "fix(slack): print manifest JSON without box-drawing borders", - "representative_url": "https://github.com/openclaw/openclaw/pull/65773", + "representative_pr_number": 69143, + "representative_title": "Docker: add OPENCLAW_DOCKER_PLATFORM for cross-platform image builds", + "representative_url": "https://github.com/openclaw/openclaw/pull/69143", "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions" + "scripts/docker", + "scripts", + "src", + "docs/install", + "docs" ], "shared_filenames": [ - "extensions/slack/src/setup-core.ts", - "extensions/slack/src/shared.ts" + "scripts/docker/setup.sh", + "docs/install/docker.md", + "src/docker-setup.e2e.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `extensions/slack/src/setup-core.ts`, `extensions/slack/src/shared.ts`; representative PR #65773.", - "title": "Scope: fix(slack): print manifest JSON without box-drawing borders" + "summary": "3 open PRs share weighted file overlap around `scripts/docker/setup.sh`, `docs/install/docker.md`, `src/docker-setup.e2e.test.ts`; representative PR #69143.", + "title": "Scope: Docker: add OPENCLAW_DOCKER_PLATFORM for cross-platform image builds" }, { "authors": [ - "KRouhana", - "MoerAI" + "haobaicai", + "nightq" ], - "average_similarity": 0.74, - "cluster_id": "pr-scope-66476-2", + "average_similarity": 0.456, + "cluster_id": "pr-scope-54686-3", "kind": "pr_scope", - "last_activity_at": "2026-04-19T03:02:41Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-17T05:40:49Z", + "outside_window_prs": [ + { + "additions": 52, + "author": "juliabush", + "changed_files": 3, + "created_at": "2026-03-25T20:20:15Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/54686/files", + "html_url": "https://github.com/openclaw/openclaw/pull/54686", + "merged": false, + "number": 54686, + "state": "open", + "title": "Fix for hooks and bluebubbles webhook 404 (closes #52605 and others)", + "updated_at": "2026-04-19T16:27:32Z" + } + ], "pairwise": [ + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.551, + "left_pr_number": 66726, + "right_pr_number": 67921, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-channels.ts" + ], + "similarity": 0.555, + "size_similarity": 0.293 + }, { "breadth_similarity": 0.583, - "concentration_similarity": 0.995, - "content_similarity": 0.875, - "left_pr_number": 66476, - "right_pr_number": 67894, + "concentration_similarity": 0.667, + "content_similarity": 0.299, + "left_pr_number": 54686, + "right_pr_number": 67921, "shared_directories": [ - "src/commands", + "src/gateway", "src" ], "shared_filenames": [ - "src/commands/doctor-bundled-plugin-runtime-deps.test.ts", - "src/commands/doctor-bundled-plugin-runtime-deps.ts" + "src/gateway/server-channels.ts" ], - "similarity": 0.74, - "size_similarity": 0.132 + "similarity": 0.409, + "size_similarity": 0.719 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.667, + "content_similarity": 0.425, + "left_pr_number": 54686, + "right_pr_number": 66726, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-channels.ts" + ], + "similarity": 0.404, + "size_similarity": 0.211 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 66476, - 67894 + 54686, + 66726, + 67921 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66476, - 67894 + 66726, + 67921 ], - "representative_pr_number": 66476, - "representative_title": "fix(doctor): exclude optionalDependencies from missing runtime deps check (#64070)", - "representative_url": "https://github.com/openclaw/openclaw/pull/66476", + "representative_pr_number": 67921, + "representative_title": "refactor: make channel startup non-blocking to improve gateway readiness", + "representative_url": "https://github.com/openclaw/openclaw/pull/67921", "shared_directories": [ - "src/commands", + "src/gateway", "src" ], "shared_filenames": [ - "src/commands/doctor-bundled-plugin-runtime-deps.test.ts", - "src/commands/doctor-bundled-plugin-runtime-deps.ts" + "src/gateway/server-channels.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/commands/doctor-bundled-plugin-runtime-deps.test.ts`, `src/commands/doctor-bundled-plugin-runtime-deps.ts`; representative PR #66476.", - "title": "Scope: fix(doctor): exclude optionalDependencies from missing runtime deps check (#64070)" + "summary": "3 open PRs share weighted file overlap around `src/gateway/server-channels.ts`; representative PR #67921.", + "title": "Scope: refactor: make channel startup non-blocking to improve gateway readiness" }, { "authors": [ - "Joel-Claw", - "oliviareid-svg" + "Magicray1217", + "xilin2157-bot" ], - "average_similarity": 0.737, - "cluster_id": "pr-scope-67254-2", + "average_similarity": 0.456, + "cluster_id": "pr-scope-53872-3", "kind": "pr_scope", - "last_activity_at": "2026-04-15T19:14:09Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-18T10:13:42Z", + "outside_window_prs": [ + { + "additions": 286, + "author": "VACInc", + "changed_files": 4, + "created_at": "2026-03-24T18:14:05Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53872/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53872", + "merged": false, + "number": 53872, + "state": "open", + "title": "fix(gateway): emit before_reset on session reset", + "updated_at": "2026-03-24T20:15:28Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.55, - "concentration_similarity": 0.968, - "content_similarity": 0.856, - "left_pr_number": 67254, - "right_pr_number": 67344, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.742, + "left_pr_number": 67049, + "right_pr_number": 67567, "shared_directories": [ - "extensions/google", - "extensions" + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/google/api.test.ts", - "extensions/google/api.ts", - "extensions/google/image-generation-provider.ts" + "src/gateway/session-reset-service.ts" ], - "similarity": 0.737, - "size_similarity": 0.226 + "similarity": 0.674, + "size_similarity": 0.194 + }, + { + "breadth_similarity": 0.375, + "concentration_similarity": 0.775, + "content_similarity": 0.409, + "left_pr_number": 53872, + "right_pr_number": 67049, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/session-reset-service.ts" + ], + "similarity": 0.366, + "size_similarity": 0.024 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.775, + "content_similarity": 0.317, + "left_pr_number": 53872, + "right_pr_number": 67567, + "shared_directories": [ + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/session-reset-service.ts" + ], + "similarity": 0.329, + "size_similarity": 0.123 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 67254, - 67344 + 53872, + 67049, + 67567 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67254, - 67344 + 67049, + 67567 ], - "representative_pr_number": 67254, - "representative_title": "fix(google): respect allowPrivateNetwork config for SSRF policy", - "representative_url": "https://github.com/openclaw/openclaw/pull/67254", + "representative_pr_number": 67049, + "representative_title": "fix: drain system events on /new session reset", + "representative_url": "https://github.com/openclaw/openclaw/pull/67049", "shared_directories": [ - "extensions/google", - "extensions" + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/google/api.test.ts", - "extensions/google/api.ts", - "extensions/google/image-generation-provider.ts" + "src/gateway/session-reset-service.ts" ], - "summary": "2 open PRs share weighted file overlap around `extensions/google/api.test.ts`, `extensions/google/api.ts`, `extensions/google/image-generation-provider.ts`; representative PR #67254.", - "title": "Scope: fix(google): respect allowPrivateNetwork config for SSRF policy" + "summary": "3 open PRs share weighted file overlap around `src/gateway/session-reset-service.ts`; representative PR #67049.", + "title": "Scope: fix: drain system events on /new session reset" }, { "authors": [ - "cesararevalo", - "chrisabad" + "mpz4life", + "tianhaocui" ], - "average_similarity": 0.73, - "cluster_id": "pr-scope-68523-2", + "average_similarity": 0.446, + "cluster_id": "pr-scope-36696-3", "kind": "pr_scope", - "last_activity_at": "2026-04-19T01:00:26Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-21T14:57:05Z", + "outside_window_prs": [ + { + "additions": 346, + "author": "Youyou972", + "changed_files": 4, + "created_at": "2026-03-05T21:07:14Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/36696/files", + "html_url": "https://github.com/openclaw/openclaw/pull/36696", + "merged": false, + "number": 36696, + "state": "open", + "title": "fix: require tool use when a run explicitly depends on tools", + "updated_at": "2026-04-18T04:23:20Z" + } + ], "pairwise": [ + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.986, + "content_similarity": 0.743, + "left_pr_number": 36696, + "right_pr_number": 68863, + "shared_directories": [ + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run.ts", + "src/agents/pi-embedded-runner/usage-reporting.test.ts" + ], + "similarity": 0.633, + "size_similarity": 0.09 + }, { "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.792, - "left_pr_number": 68523, - "right_pr_number": 68745, + "content_similarity": 0.217, + "left_pr_number": 67706, + "right_pr_number": 68863, "shared_directories": [ - "extensions/slack/src/http", - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/agents/pi-embedded-runner", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/slack/src/http/registry.ts" + "src/agents/pi-embedded-runner/run.ts" ], - "similarity": 0.73, - "size_similarity": 0.341 - } - ], - "pr_count": 2, - "pr_numbers": [ - 68523, - 68745 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 68523, - 68745 - ], - "representative_pr_number": 68523, - "representative_title": "Fix to Slack HTTP Registry", - "representative_url": "https://github.com/openclaw/openclaw/pull/68523", - "shared_directories": [ - "extensions/slack/src/http", - "extensions/slack/src", - "extensions/slack", - "extensions" - ], - "shared_filenames": [ - "extensions/slack/src/http/registry.ts" - ], - "summary": "2 open PRs share weighted file overlap around `extensions/slack/src/http/registry.ts`; representative PR #68523.", - "title": "Scope: Fix to Slack HTTP Registry" - }, - { - "authors": [ - "Hchunjun", - "zongqichen" - ], - "average_similarity": 0.699, - "cluster_id": "pr-scope-66344-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T07:18:57Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.383, + "size_similarity": 0.71 + }, { - "breadth_similarity": 0.733, - "concentration_similarity": 0.961, - "content_similarity": 0.721, - "left_pr_number": 66344, - "right_pr_number": 66568, + "breadth_similarity": 0.375, + "concentration_similarity": 0.986, + "content_similarity": 0.323, + "left_pr_number": 36696, + "right_pr_number": 67706, "shared_directories": [ + "src/agents/pi-embedded-runner", "src/agents", - "src/markdown", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-block-chunker.test.ts", - "src/agents/pi-embedded-block-chunker.ts", - "src/markdown/table-spans.ts" + "src/agents/pi-embedded-runner/run.ts" ], - "similarity": 0.699, - "size_similarity": 0.481 + "similarity": 0.322, + "size_similarity": 0.064 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 66344, - 66568 + 36696, + 67706, + 68863 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66344, - 66568 + 67706, + 68863 ], - "representative_pr_number": 66344, - "representative_title": "feat(chunker): add table protection to streaming block chunker", - "representative_url": "https://github.com/openclaw/openclaw/pull/66344", + "representative_pr_number": 68863, + "representative_title": "fix: prevent prompt token double-counting in tool-use loops", + "representative_url": "https://github.com/openclaw/openclaw/pull/68863", "shared_directories": [ - "src/markdown", + "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-block-chunker.test.ts", - "src/agents/pi-embedded-block-chunker.ts", - "src/markdown/table-spans.ts" + "src/agents/pi-embedded-runner/run.ts", + "src/agents/pi-embedded-runner/usage-reporting.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/pi-embedded-block-chunker.test.ts`, `src/agents/pi-embedded-block-chunker.ts`, `src/markdown/table-spans.ts`; representative PR #66344.", - "title": "Scope: feat(chunker): add table protection to streaming block chunker" + "summary": "3 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/run.ts`, `src/agents/pi-embedded-runner/usage-reporting.test.ts`; representative PR #68863.", + "title": "Scope: fix: prevent prompt token double-counting in tool-use loops" }, { "authors": [ - "MoerAI", - "mjamiv" + "akinshaywai", + "patricklee001" ], - "average_similarity": 0.688, - "cluster_id": "pr-scope-65453-2", + "average_similarity": 0.428, + "cluster_id": "pr-scope-53630-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T09:05:06Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-17T14:40:40Z", + "outside_window_prs": [ + { + "additions": 1, + "author": "w-sss", + "changed_files": 1, + "created_at": "2026-03-24T11:05:51Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53630/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53630", + "merged": true, + "number": 53630, + "state": "open", + "title": "Fix/UI context notice icon overflow", + "updated_at": "2026-03-24T20:15:29Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.714, - "left_pr_number": 65453, - "right_pr_number": 68485, + "content_similarity": 0.304, + "left_pr_number": 53630, + "right_pr_number": 67424, "shared_directories": [ - "extensions/minimax", - "extensions" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "extensions/minimax/provider-catalog.ts" + "ui/src/ui/views/chat.ts" ], - "similarity": 0.688, - "size_similarity": 0.42 - } - ], - "pr_count": 2, - "pr_numbers": [ - 65453, - 68485 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 65453, - 68485 - ], - "representative_pr_number": 65453, - "representative_title": "fix(models): add image input to MiniMax-M2.7 catalog", - "representative_url": "https://github.com/openclaw/openclaw/pull/65453", - "shared_directories": [ - "extensions/minimax", - "extensions" - ], - "shared_filenames": [ - "extensions/minimax/provider-catalog.ts" - ], - "summary": "2 open PRs share weighted file overlap around `extensions/minimax/provider-catalog.ts`; representative PR #65453.", - "title": "Scope: fix(models): add image input to MiniMax-M2.7 catalog" - }, - { - "authors": [ - "colin-lgtm", - "visionik" - ], - "average_similarity": 0.687, - "cluster_id": "pr-scope-65570-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T14:30:41Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.513, + "size_similarity": 1.0 + }, { - "breadth_similarity": 0.806, - "concentration_similarity": 0.852, - "content_similarity": 0.633, - "left_pr_number": 65570, - "right_pr_number": 66968, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.135, + "left_pr_number": 53630, + "right_pr_number": 68152, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/cli-runner", - "src/agents/pi-embedded-helpers", - "src/agents/pi-embedded-runner", - "src/auto-reply/reply", + "ui/src/ui/views", "ui/src/ui", - "extensions/active-memory", - "src/agents", - "src/auto-reply", - "ui/src" + "ui/src", + "ui" ], - "shared_filenames": [ - "docs/style.css", - "extensions/active-memory/index.test.ts", - "extensions/active-memory/index.ts", - "src/agents/cli-runner/execute.ts", - "src/agents/pi-embedded-helpers/errors.ts", - "src/agents/pi-embedded-runner/run/attempt.context-engine-helpers.ts", - "src/agents/pi-embedded-runner/run/attempt.test.ts", - "src/agents/pi-embedded-runner/run/preemptive-compaction.ts", - "src/agents/pi-settings.test.ts", - "src/agents/pi-settings.ts" + "shared_filenames": [], + "similarity": 0.394, + "size_similarity": 1.0 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.108, + "left_pr_number": 67424, + "right_pr_number": 68152, + "shared_directories": [ + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.687, - "size_similarity": 0.806 + "shared_filenames": [], + "similarity": 0.375, + "size_similarity": 1.0 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 65570, - 66968 + 53630, + 67424, + 68152 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65570, - 66968 + 67424, + 68152 ], - "representative_pr_number": 65570, - "representative_title": "fix(googlechat): resolve domexception startup crash and prevent silent text loss", - "representative_url": "https://github.com/openclaw/openclaw/pull/65570", + "representative_pr_number": 53630, + "representative_title": "Fix/UI context notice icon overflow", + "representative_url": "https://github.com/openclaw/openclaw/pull/53630", "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/cli-runner", - "src/agents/pi-embedded-helpers", + "ui/src/ui/views", "ui/src/ui", - "src/agents/pi-embedded-runner", - "src/auto-reply/reply", - "extensions/active-memory", - "ui/src" + "ui/src", + "ui" ], "shared_filenames": [ - "docs/style.css", - "src/agents/sandbox-paths.windows-drive-resolve.test.ts", - "src/agents/pi-embedded-runner/run/preemptive-compaction.ts", - "src/agents/pi-settings.test.ts", - "src/agents/pi-settings.ts", - "src/agents/cli-runner/execute.ts", - "extensions/active-memory/index.test.ts", - "src/agents/pi-embedded-runner/run/attempt.context-engine-helpers.ts" + "ui/src/ui/views/chat.ts" ], - "summary": "2 open PRs share weighted file overlap around `docs/style.css`, `src/agents/sandbox-paths.windows-drive-resolve.test.ts`, `src/agents/pi-embedded-runner/run/preemptive-compaction.ts`; representative PR #65570.", - "title": "Scope: fix(googlechat): resolve domexception startup crash and prevent silent text loss" + "summary": "3 open PRs share weighted file overlap around `ui/src/ui/views/chat.ts`; representative PR #53630.", + "title": "Scope: Fix/UI context notice icon overflow" }, { "authors": [ - "evgyur", - "vincentkoc" + "Ante042", + "iubns" ], - "average_similarity": 0.684, - "cluster_id": "pr-scope-66471-2", + "average_similarity": 0.427, + "cluster_id": "pr-scope-53346-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T06:57:53Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-18T13:20:49Z", + "outside_window_prs": [ + { + "additions": 440, + "author": "leemgs", + "changed_files": 12, + "created_at": "2026-03-24T03:20:38Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53346/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53346", + "merged": false, + "number": 53346, + "state": "open", + "title": " feat: add Korean language support to Control UI and AI agent", + "updated_at": "2026-03-24T20:15:31Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.417, - "concentration_similarity": 0.881, - "content_similarity": 0.816, - "left_pr_number": 66471, - "right_pr_number": 68338, - "shared_directories": [ - "src/media", - "src" + "breadth_similarity": 0.692, + "concentration_similarity": 0.808, + "content_similarity": 0.703, + "left_pr_number": 67290, + "right_pr_number": 68557, + "shared_directories": [ + "ui/src/i18n/.i18n", + "ui/src/i18n/locales", + "ui/src/ui/views", + "ui/src/i18n", + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/media/parse.test.ts", - "src/media/parse.ts" + "ui/src/i18n/.i18n/de.meta.json", + "ui/src/i18n/.i18n/es.meta.json", + "ui/src/i18n/.i18n/fr.meta.json", + "ui/src/i18n/.i18n/id.meta.json", + "ui/src/i18n/.i18n/ja-JP.meta.json", + "ui/src/i18n/.i18n/ko.meta.json", + "ui/src/i18n/.i18n/pl.meta.json", + "ui/src/i18n/.i18n/pt-BR.meta.json", + "ui/src/i18n/.i18n/tr.meta.json", + "ui/src/i18n/.i18n/uk.meta.json" ], - "similarity": 0.684, - "size_similarity": 0.182 + "similarity": 0.653, + "size_similarity": 0.343 + }, + { + "breadth_similarity": 0.554, + "concentration_similarity": 0.76, + "content_similarity": 0.299, + "left_pr_number": 53346, + "right_pr_number": 67290, + "shared_directories": [ + "ui/src/i18n/locales", + "ui/src/i18n", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/i18n/locales/de.ts", + "ui/src/i18n/locales/en.ts", + "ui/src/i18n/locales/es.ts", + "ui/src/i18n/locales/ko.ts", + "ui/src/i18n/locales/pt-BR.ts", + "ui/src/i18n/locales/zh-CN.ts", + "ui/src/i18n/locales/zh-TW.ts" + ], + "similarity": 0.358, + "size_similarity": 0.371 + }, + { + "breadth_similarity": 0.8, + "concentration_similarity": 0.951, + "content_similarity": 0.176, + "left_pr_number": 53346, + "right_pr_number": 68557, + "shared_directories": [ + "ui/src/i18n/locales", + "ui/src/i18n", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/i18n/locales/en.ts" + ], + "similarity": 0.27, + "size_similarity": 0.127 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 66471, - 68338 + 53346, + 67290, + 68557 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66471, - 68338 + 67290, + 68557 ], - "representative_pr_number": 66471, - "representative_title": "fix(reply): parse markdown image replies as media", - "representative_url": "https://github.com/openclaw/openclaw/pull/66471", + "representative_pr_number": 67290, + "representative_title": "fix(ui): remove duplicate usage page header", + "representative_url": "https://github.com/openclaw/openclaw/pull/67290", "shared_directories": [ - "src/media", - "src" + "ui/src/i18n/locales", + "ui/src/i18n", + "ui/src", + "ui", + "ui/src/i18n/.i18n", + "ui/src/ui/views", + "ui/src/ui" ], "shared_filenames": [ - "src/media/parse.test.ts", - "src/media/parse.ts" + "ui/src/i18n/locales/en.ts", + "ui/src/i18n/.i18n/de.meta.json", + "ui/src/i18n/.i18n/es.meta.json", + "ui/src/i18n/.i18n/fr.meta.json", + "ui/src/i18n/.i18n/id.meta.json", + "ui/src/i18n/.i18n/ja-JP.meta.json", + "ui/src/i18n/.i18n/ko.meta.json", + "ui/src/i18n/.i18n/pl.meta.json" ], - "summary": "2 open PRs share weighted file overlap around `src/media/parse.test.ts`, `src/media/parse.ts`; representative PR #66471.", - "title": "Scope: fix(reply): parse markdown image replies as media" + "summary": "3 open PRs share weighted file overlap around `ui/src/i18n/locales/en.ts`, `ui/src/i18n/.i18n/de.meta.json`, `ui/src/i18n/.i18n/es.meta.json`; representative PR #67290.", + "title": "Scope: fix(ui): remove duplicate usage page header" }, { "authors": [ - "Rohan5commit", - "xinmotlanthua" + "DevInvestor", + "soloclz" ], - "average_similarity": 0.682, - "cluster_id": "pr-scope-66067-2", + "average_similarity": 0.419, + "cluster_id": "pr-scope-37590-3", "kind": "pr_scope", - "last_activity_at": "2026-04-14T04:11:20Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-21T14:51:12Z", + "outside_window_prs": [ + { + "additions": 199, + "author": "kimgyu", + "changed_files": 10, + "created_at": "2026-03-06T09:57:06Z", + "deletions": 10, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37590/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37590", + "merged": false, + "number": 37590, + "state": "open", + "title": "fix(agents): surface silent exec failures", + "updated_at": "2026-04-20T04:35:58Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.671, - "left_pr_number": 66067, - "right_pr_number": 66322, + "breadth_similarity": 0.225, + "concentration_similarity": 0.579, + "content_similarity": 0.588, + "left_pr_number": 37590, + "right_pr_number": 67276, "shared_directories": [ - "src/tui", + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", "src" ], "shared_filenames": [ - "src/tui/tui-formatters.test.ts", - "src/tui/tui-formatters.ts" + "src/agents/pi-embedded-runner/run/payloads.test.ts", + "src/agents/pi-embedded-runner/run/payloads.ts" ], - "similarity": 0.682, - "size_similarity": 0.529 - } - ], - "pr_count": 2, - "pr_numbers": [ - 66067, - 66322 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 66067, - 66322 - ], - "representative_pr_number": 66067, - "representative_title": "fix(tui): preserve spaces between thinking fragments", - "representative_url": "https://github.com/openclaw/openclaw/pull/66067", - "shared_directories": [ - "src/tui", - "src" - ], - "shared_filenames": [ - "src/tui/tui-formatters.test.ts", - "src/tui/tui-formatters.ts" - ], - "summary": "2 open PRs share weighted file overlap around `src/tui/tui-formatters.test.ts`, `src/tui/tui-formatters.ts`; representative PR #66067.", - "title": "Scope: fix(tui): preserve spaces between thinking fragments" - }, - { - "authors": [ - "alickgithub2", - "wirjo" - ], - "average_similarity": 0.678, - "cluster_id": "pr-scope-65449-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T02:50:48Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.506, + "size_similarity": 0.287 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.696, - "left_pr_number": 65449, - "right_pr_number": 65952, + "breadth_similarity": 0.955, + "concentration_similarity": 0.973, + "content_similarity": 0.215, + "left_pr_number": 37590, + "right_pr_number": 67448, "shared_directories": [ - "extensions/amazon-bedrock", - "extensions" + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/amazon-bedrock/discovery.test.ts", - "extensions/amazon-bedrock/discovery.ts" + "src/agents/pi-embedded-runner/run/payloads.test.ts", + "src/agents/pi-embedded-runner/run/payloads.ts" ], - "similarity": 0.678, - "size_similarity": 0.268 - } - ], - "pr_count": 2, - "pr_numbers": [ - 65449, - 65952 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 65449, - 65952 - ], - "representative_pr_number": 65449, - "representative_title": "[Bug]: fix(amazon-bedrock): add au. prefix support for Australia/NZ inference profiles", - "representative_url": "https://github.com/openclaw/openclaw/pull/65449", - "shared_directories": [ - "extensions/amazon-bedrock", - "extensions" - ], - "shared_filenames": [ - "extensions/amazon-bedrock/discovery.test.ts", - "extensions/amazon-bedrock/discovery.ts" - ], - "summary": "2 open PRs share weighted file overlap around `extensions/amazon-bedrock/discovery.test.ts`, `extensions/amazon-bedrock/discovery.ts`; representative PR #65449.", - "title": "Scope: [Bug]: fix(amazon-bedrock): add au. prefix support for Australia/NZ inference profiles" - }, - { - "authors": [ - "100yenadmin" - ], - "average_similarity": 0.67, - "cluster_id": "pr-scope-67538-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T17:06:31Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.413, + "size_similarity": 0.789 + }, { - "breadth_similarity": 0.481, - "concentration_similarity": 0.75, - "content_similarity": 0.737, - "left_pr_number": 67538, - "right_pr_number": 67840, + "breadth_similarity": 0.216, + "concentration_similarity": 0.606, + "content_similarity": 0.33, + "left_pr_number": 67276, + "right_pr_number": 67448, "shared_directories": [ "src/agents/pi-embedded-runner/run", "src/agents/pi-embedded-runner", - "src/agents/plan-mode", - "qa/scenarios", "src/agents", - "src/config", - "qa", "src" ], "shared_filenames": [ - "qa/scenarios/gpt54-act-dont-ask.md", - "qa/scenarios/gpt54-cancelled-status.md", - "qa/scenarios/gpt54-injection-scan.md", - "qa/scenarios/gpt54-mandatory-tool-use.md", - "qa/scenarios/gpt54-plan-mode-default-off.md", - "src/agents/agent-scope.test.ts", - "src/agents/agent-scope.ts", - "src/agents/pi-embedded-runner/run.incomplete-turn.test.ts", - "src/agents/pi-embedded-runner/run.ts", - "src/agents/pi-embedded-runner/run/incomplete-turn.ts" + "src/agents/pi-embedded-runner/run/payloads.test.ts", + "src/agents/pi-embedded-runner/run/payloads.ts" ], - "similarity": 0.67, - "size_similarity": 0.453 + "similarity": 0.338, + "size_similarity": 0.364 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 67538, - 67840 + 37590, + 67276, + 67448 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67538, - 67840 + 67276, + 67448 ], - "representative_pr_number": 67538, - "representative_title": "feat(agents): plan mode runtime + escalating retry + auto-continue [Phase 3.C]", - "representative_url": "https://github.com/openclaw/openclaw/pull/67538", + "representative_pr_number": 37590, + "representative_title": "fix(agents): surface silent exec failures", + "representative_url": "https://github.com/openclaw/openclaw/pull/37590", "shared_directories": [ "src/agents/pi-embedded-runner/run", - "src/agents/plan-mode", "src/agents/pi-embedded-runner", - "qa/scenarios", - "src/config", "src/agents", - "qa", "src" ], "shared_filenames": [ - "qa/scenarios/gpt54-act-dont-ask.md", - "qa/scenarios/gpt54-cancelled-status.md", - "qa/scenarios/gpt54-injection-scan.md", - "qa/scenarios/gpt54-mandatory-tool-use.md", - "qa/scenarios/gpt54-plan-mode-default-off.md", - "src/agents/plan-mode/approval.test.ts", - "src/agents/plan-mode/approval.ts", - "src/agents/plan-mode/index.ts" + "src/agents/pi-embedded-runner/run/payloads.test.ts", + "src/agents/pi-embedded-runner/run/payloads.ts" ], - "summary": "2 open PRs share weighted file overlap around `qa/scenarios/gpt54-act-dont-ask.md`, `qa/scenarios/gpt54-cancelled-status.md`, `qa/scenarios/gpt54-injection-scan.md`; representative PR #67538.", - "title": "Scope: feat(agents): plan mode runtime + escalating retry + auto-continue [Phase 3.C]" + "summary": "3 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/run/payloads.test.ts`, `src/agents/pi-embedded-runner/run/payloads.ts`; representative PR #37590.", + "title": "Scope: fix(agents): surface silent exec failures" }, { "authors": [ - "asakir44", - "jakepresent" + "adapepper", + "bluesky6868" ], - "average_similarity": 0.658, - "cluster_id": "pr-scope-65541-2", + "average_similarity": 0.397, + "cluster_id": "pr-scope-55761-3", "kind": "pr_scope", - "last_activity_at": "2026-04-14T18:02:32Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-19T12:43:47Z", + "outside_window_prs": [ + { + "additions": 292, + "author": "EffortlessSteven", + "changed_files": 5, + "created_at": "2026-03-27T11:56:04Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/55761/files", + "html_url": "https://github.com/openclaw/openclaw/pull/55761", + "merged": false, + "number": 55761, + "state": "open", + "title": "fix(hooks): suppress silent shared-hook fallback while preserving error surfacing", + "updated_at": "2026-04-19T10:45:04Z" + } + ], "pairwise": [ + { + "breadth_similarity": 0.733, + "concentration_similarity": 0.972, + "content_similarity": 0.491, + "left_pr_number": 55761, + "right_pr_number": 68667, + "shared_directories": [ + "src/gateway/server", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server.hooks.test.ts", + "src/gateway/server/hooks.agent-trust.test.ts", + "src/gateway/server/hooks.ts" + ], + "similarity": 0.509, + "size_similarity": 0.294 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.937, + "content_similarity": 0.213, + "left_pr_number": 55761, + "right_pr_number": 67433, + "shared_directories": [ + "src/gateway/server", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server/hooks.ts" + ], + "similarity": 0.355, + "size_similarity": 0.559 + }, { "breadth_similarity": 0.833, - "concentration_similarity": 1.0, - "content_similarity": 0.653, - "left_pr_number": 65541, - "right_pr_number": 65995, + "concentration_similarity": 0.965, + "content_similarity": 0.243, + "left_pr_number": 67433, + "right_pr_number": 68667, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/gateway/server", + "src/gateway", "src" ], "shared_filenames": [ - "src/auto-reply/reply/reply-delivery.test.ts", - "src/auto-reply/reply/reply-delivery.ts" + "src/gateway/server/hooks.ts" ], - "similarity": 0.658, - "size_similarity": 0.452 + "similarity": 0.326, + "size_similarity": 0.164 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 65541, - 65995 + 55761, + 67433, + 68667 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65541, - 65995 + 67433, + 68667 ], - "representative_pr_number": 65541, - "representative_title": "fix: deliver text blocks progressively when block streaming is disabled", - "representative_url": "https://github.com/openclaw/openclaw/pull/65541", + "representative_pr_number": 55761, + "representative_title": "fix(hooks): suppress silent shared-hook fallback while preserving error surfacing", + "representative_url": "https://github.com/openclaw/openclaw/pull/55761", "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/gateway/server", + "src/gateway", "src" ], "shared_filenames": [ - "src/auto-reply/reply/reply-delivery.test.ts", - "src/auto-reply/reply/reply-delivery.ts" + "src/gateway/server/hooks.ts", + "src/gateway/server/hooks.agent-trust.test.ts", + "src/gateway/server.hooks.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/reply-delivery.test.ts`, `src/auto-reply/reply/reply-delivery.ts`; representative PR #65541.", - "title": "Scope: fix: deliver text blocks progressively when block streaming is disabled" + "summary": "3 open PRs share weighted file overlap around `src/gateway/server/hooks.ts`, `src/gateway/server/hooks.agent-trust.test.ts`, `src/gateway/server.hooks.test.ts`; representative PR #55761.", + "title": "Scope: fix(hooks): suppress silent shared-hook fallback while preserving error surfacing" }, { "authors": [ - "martingarramon", - "taosiyuan163" + "hxy91819", + "shaun0927" ], - "average_similarity": 0.65, - "cluster_id": "pr-scope-68161-2", + "average_similarity": 0.389, + "cluster_id": "pr-scope-66321-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T13:10:43Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-21T04:04:21Z", + "outside_window_prs": [ + { + "additions": 177, + "author": "xinmotlanthua", + "changed_files": 2, + "created_at": "2026-04-14T03:55:46Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66321/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66321", + "merged": false, + "number": 66321, + "state": "open", + "title": "fix: macOS app stays on 'Health check pending' even when gateway is healthy", + "updated_at": "2026-04-14T04:44:29Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.625, - "concentration_similarity": 0.637, - "content_similarity": 0.703, - "left_pr_number": 68161, - "right_pr_number": 68227, + "breadth_similarity": 0.5, + "concentration_similarity": 0.963, + "content_similarity": 0.265, + "left_pr_number": 68186, + "right_pr_number": 68835, "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawKit", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", - "apps/macos/Sources/OpenClawProtocol", + "apps/macos/Sources/OpenClaw", "apps/macos/Tests/OpenClawIPCTests", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", "apps/macos/Sources", "apps/macos/Tests", - "apps/shared/OpenClawKit", - "src/gateway/protocol" + "apps/macos", + "apps" ], - "shared_filenames": [ - "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", - "apps/macos/Tests/OpenClawIPCTests/MacGatewayChatTransportMappingTests.swift", - "apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayChannel.swift", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift", - "src/gateway/protocol/schema/frames.ts" + "shared_filenames": [], + "similarity": 0.406, + "size_similarity": 0.821 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 0.972, + "content_similarity": 0.268, + "left_pr_number": 66321, + "right_pr_number": 68835, + "shared_directories": [ + "apps/macos/Sources/OpenClaw", + "apps/macos/Tests/OpenClawIPCTests", + "apps/macos/Sources", + "apps/macos/Tests", + "apps/macos", + "apps" ], - "similarity": 0.65, - "size_similarity": 0.424 + "shared_filenames": [], + "similarity": 0.398, + "size_similarity": 0.414 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.991, + "content_similarity": 0.304, + "left_pr_number": 66321, + "right_pr_number": 68186, + "shared_directories": [ + "apps/macos/Sources/OpenClaw", + "apps/macos/Tests/OpenClawIPCTests", + "apps/macos/Sources", + "apps/macos/Tests", + "apps/macos", + "apps" + ], + "shared_filenames": [], + "similarity": 0.363, + "size_similarity": 0.34 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 68161, - 68227 + 66321, + 68186, + 68835 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 68161, - 68227 + 68186, + 68835 ], - "representative_pr_number": 68161, - "representative_title": "fix(gateway/schema): drop stale Type.Optional wrapper on hello-ok auth", - "representative_url": "https://github.com/openclaw/openclaw/pull/68161", + "representative_pr_number": 68835, + "representative_title": "fix(macos): stop evaluating model catalogs as JS", + "representative_url": "https://github.com/openclaw/openclaw/pull/68835", "shared_directories": [ - "apps/shared/OpenClawKit/Sources/OpenClawKit", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol", "apps/macos/Tests/OpenClawIPCTests", - "apps/macos/Sources/OpenClawProtocol", - "apps/shared/OpenClawKit/Sources", - "src/gateway/protocol/schema", + "apps/macos/Sources/OpenClaw", "apps/macos/Tests", - "apps/macos/Sources" - ], - "shared_filenames": [ - "apps/macos/Tests/OpenClawIPCTests/MacGatewayChatTransportMappingTests.swift", - "src/gateway/protocol/schema/frames.ts", - "apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayChannel.swift", - "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", - "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift" + "apps/macos/Sources", + "apps/macos", + "apps" ], - "summary": "2 open PRs share weighted file overlap around `apps/macos/Tests/OpenClawIPCTests/MacGatewayChatTransportMappingTests.swift`, `src/gateway/protocol/schema/frames.ts`, `apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayChannel.swift`; representative PR #68161.", - "title": "Scope: fix(gateway/schema): drop stale Type.Optional wrapper on hello-ok auth" + "shared_filenames": [], + "summary": "3 open PRs cluster in `apps/macos/Tests/OpenClawIPCTests`, `apps/macos/Sources/OpenClaw`, `apps/macos/Tests` with similar change breadth; representative PR #68835.", + "title": "Scope: fix(macos): stop evaluating model catalogs as JS" }, { "authors": [ - "1aifanatic", - "nightq" + "kamusis", + "sebykrueger" ], - "average_similarity": 0.631, - "cluster_id": "pr-scope-68311-2", + "average_similarity": 0.383, + "cluster_id": "pr-scope-65785-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T01:39:56Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-17T04:27:31Z", + "outside_window_prs": [ + { + "additions": 15, + "author": "zhouhe-xydt", + "changed_files": 2, + "created_at": "2026-04-13T07:38:16Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65785/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65785", + "merged": false, + "number": 65785, + "state": "open", + "title": "fix(minimax): allow web_search to use MINIMAX_OAUTH_TOKEN", + "updated_at": "2026-04-13T07:51:20Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.5, - "concentration_similarity": 0.5, - "content_similarity": 0.687, - "left_pr_number": 68311, - "right_pr_number": 68317, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.235, + "left_pr_number": 67195, + "right_pr_number": 67967, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/minimax", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/directive-handling.impl.ts" + "extensions/minimax/index.test.ts" ], - "similarity": 0.631, - "size_similarity": 0.5 + "similarity": 0.45, + "size_similarity": 0.905 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.091, + "left_pr_number": 65785, + "right_pr_number": 67195, + "shared_directories": [ + "extensions/minimax", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.355, + "size_similarity": 0.947 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.092, + "left_pr_number": 65785, + "right_pr_number": 67967, + "shared_directories": [ + "extensions/minimax", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.343, + "size_similarity": 0.857 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 68311, - 68317 + 65785, + 67195, + 67967 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 68311, - 68317 + 67195, + 67967 ], - "representative_pr_number": 68311, - "representative_title": "fix: update reasoning stream message to include Feishu support", - "representative_url": "https://github.com/openclaw/openclaw/pull/68311", + "representative_pr_number": 67195, + "representative_title": "fix(minimax): add provider auth aliases to manifest (fixes #63823)", + "representative_url": "https://github.com/openclaw/openclaw/pull/67195", "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "extensions/minimax", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/directive-handling.impl.ts" + "extensions/minimax/index.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/directive-handling.impl.ts`; representative PR #68311.", - "title": "Scope: fix: update reasoning stream message to include Feishu support" + "summary": "3 open PRs share weighted file overlap around `extensions/minimax/index.test.ts`; representative PR #67195.", + "title": "Scope: fix(minimax): add provider auth aliases to manifest (fixes #63823)" }, { "authors": [ - "Magicray1217", - "oliviareid-svg" + "Conan-Scott", + "drobison00" ], - "average_similarity": 0.627, - "cluster_id": "pr-scope-66928-2", + "average_similarity": 0.382, + "cluster_id": "pr-scope-37670-3", "kind": "pr_scope", - "last_activity_at": "2026-04-15T04:56:27Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-21T18:00:45Z", + "outside_window_prs": [ + { + "additions": 71, + "author": "sonwr", + "changed_files": 9, + "created_at": "2026-03-06T10:58:32Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37670/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37670", + "merged": false, + "number": 37670, + "state": "open", + "title": "fix(control-ui): avoid cron jobs/new job panel overlap on medium widths", + "updated_at": "2026-04-20T04:36:47Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.634, - "left_pr_number": 66928, - "right_pr_number": 66986, + "breadth_similarity": 0.653, + "concentration_similarity": 0.926, + "content_similarity": 0.25, + "left_pr_number": 37670, + "right_pr_number": 67916, "shared_directories": [ - "src/gateway/server-methods", "src/gateway", - "src" + "ui/src", + "src", + "ui" ], "shared_filenames": [ - "src/gateway/server-methods/skills.ts" + "src/gateway/control-ui.http.test.ts", + "src/gateway/control-ui.ts" ], - "similarity": 0.627, - "size_similarity": 0.383 + "similarity": 0.418, + "size_similarity": 0.872 + }, + { + "breadth_similarity": 0.746, + "concentration_similarity": 0.762, + "content_similarity": 0.351, + "left_pr_number": 37670, + "right_pr_number": 69775, + "shared_directories": [ + "src/gateway", + "ui/src", + "src", + "ui" + ], + "shared_filenames": [ + "src/gateway/control-ui.http.test.ts", + "src/gateway/control-ui.ts" + ], + "similarity": 0.38, + "size_similarity": 0.141 + }, + { + "breadth_similarity": 0.492, + "concentration_similarity": 0.688, + "content_similarity": 0.353, + "left_pr_number": 67916, + "right_pr_number": 69775, + "shared_directories": [ + "ui/src/ui/chat", + "ui/src/ui", + "src/gateway", + "ui/src", + "src", + "ui" + ], + "shared_filenames": [ + "src/gateway/control-ui.http.test.ts", + "src/gateway/control-ui.ts", + "ui/src/ui/chat/grouped-render.ts" + ], + "similarity": 0.349, + "size_similarity": 0.123 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 66928, - 66986 + 37670, + 67916, + 69775 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66928, - 66986 + 67916, + 69775 ], - "representative_pr_number": 66928, - "representative_title": "fix(gateway): redact apiKey and secret env values in skills.update response", - "representative_url": "https://github.com/openclaw/openclaw/pull/66928", + "representative_pr_number": 37670, + "representative_title": "fix(control-ui): avoid cron jobs/new job panel overlap on medium widths", + "representative_url": "https://github.com/openclaw/openclaw/pull/37670", "shared_directories": [ - "src/gateway/server-methods", + "ui/src", "src/gateway", - "src" + "ui", + "src", + "ui/src/ui/chat", + "ui/src/ui" ], "shared_filenames": [ - "src/gateway/server-methods/skills.ts" + "src/gateway/control-ui.http.test.ts", + "src/gateway/control-ui.ts", + "ui/src/ui/chat/grouped-render.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/gateway/server-methods/skills.ts`; representative PR #66928.", - "title": "Scope: fix(gateway): redact apiKey and secret env values in skills.update response" + "summary": "3 open PRs share weighted file overlap around `src/gateway/control-ui.http.test.ts`, `src/gateway/control-ui.ts`, `ui/src/ui/chat/grouped-render.ts`; representative PR #37670.", + "title": "Scope: fix(control-ui): avoid cron jobs/new job panel overlap on medium widths" }, { "authors": [ - "TinyTb", - "skylee-01" + "fangguisheng520", + "michaelhughes2501" ], - "average_similarity": 0.626, - "cluster_id": "pr-scope-67731-2", + "average_similarity": 0.379, + "cluster_id": "pr-scope-65739-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T05:58:27Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-18T01:52:23Z", + "outside_window_prs": [ + { + "additions": 1613, + "author": "yananli199307-dev", + "changed_files": 19, + "created_at": "2026-04-13T05:52:54Z", + "deletions": 44, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65739/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65739", + "merged": false, + "number": 65739, + "state": "open", + "title": "feat: Add Agent P2P channel plugin", + "updated_at": "2026-04-13T12:43:15Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.875, - "concentration_similarity": 0.599, - "content_similarity": 0.654, - "left_pr_number": 67731, - "right_pr_number": 68416, + "breadth_similarity": 0.852, + "concentration_similarity": 0.862, + "content_similarity": 0.277, + "left_pr_number": 65739, + "right_pr_number": 68345, + "shared_directories": [], + "shared_filenames": [ + "pnpm-lock.yaml" + ], + "similarity": 0.442, + "size_similarity": 0.795 + }, + { + "breadth_similarity": 0.63, + "concentration_similarity": 0.898, + "content_similarity": 0.299, + "left_pr_number": 66960, + "right_pr_number": 68345, "shared_directories": [ - "extensions/anthropic", - "src/agents", - "extensions", - "src" + "ui" ], "shared_filenames": [ - "extensions/anthropic/index.test.ts", - "extensions/anthropic/register.runtime.ts" + "pnpm-lock.yaml" ], - "similarity": 0.626, - "size_similarity": 0.342 + "similarity": 0.378, + "size_similarity": 0.404 + }, + { + "breadth_similarity": 0.684, + "concentration_similarity": 0.76, + "content_similarity": 0.234, + "left_pr_number": 65739, + "right_pr_number": 66960, + "shared_directories": [], + "shared_filenames": [ + "pnpm-lock.yaml" + ], + "similarity": 0.318, + "size_similarity": 0.322 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 67731, - 68416 + 65739, + 66960, + 68345 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67731, - 68416 + 66960, + 68345 ], - "representative_pr_number": 67731, - "representative_title": "fix(anthropic): add Claude Sonnet 4.7 forward-compat support", - "representative_url": "https://github.com/openclaw/openclaw/pull/67731", + "representative_pr_number": 68345, + "representative_title": "Modify several web pages by hard-coding the language into multiple la\u2026", + "representative_url": "https://github.com/openclaw/openclaw/pull/68345", "shared_directories": [ - "extensions/anthropic", - "src/agents", - "extensions", - "src" + "ui" ], "shared_filenames": [ - "extensions/anthropic/index.test.ts", - "extensions/anthropic/register.runtime.ts" + "pnpm-lock.yaml" ], - "summary": "2 open PRs share weighted file overlap around `extensions/anthropic/index.test.ts`, `extensions/anthropic/register.runtime.ts`; representative PR #67731.", - "title": "Scope: fix(anthropic): add Claude Sonnet 4.7 forward-compat support" + "summary": "3 open PRs share weighted file overlap around `pnpm-lock.yaml`; representative PR #68345.", + "title": "Scope: Modify several web pages by hard-coding the language into multiple la\u2026" }, { "authors": [ - "songbing0632-code", - "zhyongrui" + "altierac", + "neo1027144-creator" ], - "average_similarity": 0.625, - "cluster_id": "pr-scope-65802-2", + "average_similarity": 0.371, + "cluster_id": "pr-scope-65992-3", "kind": "pr_scope", - "last_activity_at": "2026-04-16T16:20:04Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-20T05:25:07Z", + "outside_window_prs": [ + { + "additions": 414, + "author": "sqsge", + "changed_files": 2, + "created_at": "2026-04-13T14:48:07Z", + "deletions": 11, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65992/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65992", + "merged": false, + "number": 65992, + "state": "open", + "title": "fix(memory-wiki): prevent ingested source page collisions", + "updated_at": "2026-04-20T08:12:52Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.658, - "left_pr_number": 65802, - "right_pr_number": 67734, + "content_similarity": 0.223, + "left_pr_number": 67711, + "right_pr_number": 68852, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/memory-wiki/src", + "extensions/memory-wiki", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/client.test.ts", - "extensions/feishu/src/client.ts" + "shared_filenames": [], + "similarity": 0.406, + "size_similarity": 0.665 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.218, + "left_pr_number": 65992, + "right_pr_number": 67711, + "shared_directories": [ + "extensions/memory-wiki/src", + "extensions/memory-wiki", + "extensions" ], - "similarity": 0.625, - "size_similarity": 0.262 + "shared_filenames": [], + "similarity": 0.366, + "size_similarity": 0.421 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.213, + "left_pr_number": 65992, + "right_pr_number": 68852, + "shared_directories": [ + "extensions/memory-wiki/src", + "extensions/memory-wiki", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.341, + "size_similarity": 0.28 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 65802, - 67734 + 65992, + 67711, + 68852 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65802, - 67734 + 67711, + 68852 ], - "representative_pr_number": 65802, - "representative_title": "fix(feishu): disable ambient proxy inheritance for websocket by default", - "representative_url": "https://github.com/openclaw/openclaw/pull/65802", + "representative_pr_number": 67711, + "representative_title": "fix(memory-wiki): skip bridge prune when capability unavailable but sources intact [AI-assisted]", + "representative_url": "https://github.com/openclaw/openclaw/pull/67711", "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", + "extensions/memory-wiki/src", + "extensions/memory-wiki", "extensions" ], - "shared_filenames": [ - "extensions/feishu/src/client.ts", - "extensions/feishu/src/client.test.ts" - ], - "summary": "2 open PRs share weighted file overlap around `extensions/feishu/src/client.ts`, `extensions/feishu/src/client.test.ts`; representative PR #65802.", - "title": "Scope: fix(feishu): disable ambient proxy inheritance for websocket by default" + "shared_filenames": [], + "summary": "3 open PRs cluster in `extensions/memory-wiki/src`, `extensions/memory-wiki`, `extensions` with similar change breadth; representative PR #67711.", + "title": "Scope: fix(memory-wiki): skip bridge prune when capability unavailable but sources intact [AI-assisted]" }, { "authors": [ - "asakir44" + "infocentr", + "xialonglee" ], - "average_similarity": 0.62, - "cluster_id": "pr-scope-65996-2", + "average_similarity": 0.362, + "cluster_id": "pr-scope-65174-3", "kind": "pr_scope", - "last_activity_at": "2026-04-13T16:26:54Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-21T12:43:15Z", + "outside_window_prs": [ + { + "additions": 121, + "author": "web3blind", + "changed_files": 8, + "created_at": "2026-04-12T04:33:32Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65174/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65174", + "merged": false, + "number": 65174, + "state": "open", + "title": "Improve subagent start notices with resolved model info", + "updated_at": "2026-04-13T04:15:18Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.708, - "concentration_similarity": 0.462, - "content_similarity": 0.677, - "left_pr_number": 65996, - "right_pr_number": 66049, + "breadth_similarity": 0.838, + "concentration_similarity": 0.775, + "content_similarity": 0.185, + "left_pr_number": 65174, + "right_pr_number": 68495, "shared_directories": [ + "src/auto-reply/reply", "src/agents", - "src/config", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/agents/agent-scope.ts", - "src/config/types.agents.ts", - "src/config/zod-schema.agent-runtime.ts" + "src/agents/pi-embedded-utils.ts" ], - "similarity": 0.62, - "size_similarity": 0.348 + "similarity": 0.389, + "size_similarity": 0.915 + }, + { + "breadth_similarity": 0.375, + "concentration_similarity": 0.729, + "content_similarity": 0.382, + "left_pr_number": 65174, + "right_pr_number": 69288, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-utils.test.ts", + "src/agents/pi-embedded-utils.ts" + ], + "similarity": 0.376, + "size_similarity": 0.233 + }, + { + "breadth_similarity": 0.386, + "concentration_similarity": 0.504, + "content_similarity": 0.32, + "left_pr_number": 68495, + "right_pr_number": 69288, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-utils.ts" + ], + "similarity": 0.32, + "size_similarity": 0.213 } ], - "pr_count": 2, + "pr_count": 3, "pr_numbers": [ - 65996, - 66049 + 65174, + 68495, + 69288 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65996, - 66049 + 68495, + 69288 ], - "representative_pr_number": 65996, - "representative_title": "feat(status): add per-agent statusLabel config for public-facing name", - "representative_url": "https://github.com/openclaw/openclaw/pull/65996", + "representative_pr_number": 65174, + "representative_title": "Improve subagent start notices with resolved model info", + "representative_url": "https://github.com/openclaw/openclaw/pull/65174", "shared_directories": [ - "src/config", "src/agents", - "src" + "src", + "src/auto-reply/reply", + "src/auto-reply" ], "shared_filenames": [ - "src/config/types.agents.ts", - "src/agents/agent-scope.ts", - "src/config/zod-schema.agent-runtime.ts" + "src/agents/pi-embedded-utils.ts", + "src/agents/pi-embedded-utils.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/config/types.agents.ts`, `src/agents/agent-scope.ts`, `src/config/zod-schema.agent-runtime.ts`; representative PR #65996.", - "title": "Scope: feat(status): add per-agent statusLabel config for public-facing name" + "summary": "3 open PRs share weighted file overlap around `src/agents/pi-embedded-utils.ts`, `src/agents/pi-embedded-utils.test.ts`; representative PR #65174.", + "title": "Scope: Improve subagent start notices with resolved model info" }, { "authors": [ - "cwmine", - "simon-marcus" + "MukundaKatta", + "pdd-cli" ], - "average_similarity": 0.619, - "cluster_id": "pr-scope-65642-2", + "average_similarity": 0.927, + "cluster_id": "pr-scope-66755-2", "kind": "pr_scope", - "last_activity_at": "2026-04-15T10:10:07Z", + "last_activity_at": "2026-04-20T21:28:33Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.31, - "concentration_similarity": 0.826, - "content_similarity": 0.71, - "left_pr_number": 65642, - "right_pr_number": 66071, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.958, + "left_pr_number": 66755, + "right_pr_number": 69472, "shared_directories": [ - "src/gateway", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/gateway/openresponses-http.test.ts", - "src/gateway/openresponses-http.ts" + "src/auto-reply/tokens.test.ts", + "src/auto-reply/tokens.ts" ], - "similarity": 0.619, - "size_similarity": 0.335 + "similarity": 0.927, + "size_similarity": 0.707 } ], "pr_count": 2, "pr_numbers": [ - 65642, - 66071 + 66755, + 69472 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65642, - 66071 + 66755, + 69472 ], - "representative_pr_number": 65642, - "representative_title": "OpenResponses: emit internal tool call events in SSE stream", - "representative_url": "https://github.com/openclaw/openclaw/pull/65642", + "representative_pr_number": 66755, + "representative_title": "fix(auto-reply): detect silent NO_REPLY wrapped in model reasoning", + "representative_url": "https://github.com/openclaw/openclaw/pull/66755", "shared_directories": [ - "src/gateway", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/gateway/openresponses-http.test.ts", - "src/gateway/openresponses-http.ts" + "src/auto-reply/tokens.test.ts", + "src/auto-reply/tokens.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/gateway/openresponses-http.test.ts`, `src/gateway/openresponses-http.ts`; representative PR #65642.", - "title": "Scope: OpenResponses: emit internal tool call events in SSE stream" + "summary": "2 open PRs share weighted file overlap around `src/auto-reply/tokens.test.ts`, `src/auto-reply/tokens.ts`; representative PR #66755.", + "title": "Scope: fix(auto-reply): detect silent NO_REPLY wrapped in model reasoning" }, { "authors": [ - "GodsBoy", - "jarimustonen" + "chrisabad" ], - "average_similarity": 0.619, - "cluster_id": "pr-scope-66678-2", + "average_similarity": 0.856, + "cluster_id": "pr-scope-68381-2", "kind": "pr_scope", - "last_activity_at": "2026-04-16T05:49:05Z", + "last_activity_at": "2026-04-19T02:58:18Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.388, - "concentration_similarity": 0.816, - "content_similarity": 0.739, - "left_pr_number": 66678, - "right_pr_number": 67243, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.9, + "left_pr_number": 68381, + "right_pr_number": 68785, "shared_directories": [ - "src/context-engine", + "src/process", "src" ], "shared_filenames": [ - "src/context-engine/context-engine.test.ts", - "src/context-engine/registry.ts" + "src/process/command-queue.test.ts", + "src/process/command-queue.ts" ], - "similarity": 0.619, - "size_similarity": 0.151 + "similarity": 0.856, + "size_similarity": 0.509 } ], "pr_count": 2, "pr_numbers": [ - 66678, - 67243 + 68381, + 68785 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66678, - 67243 + 68381, + 68785 ], - "representative_pr_number": 66678, - "representative_title": "Context engine/plugins: accept third-party engines whose info.id differs from registered slot id", - "representative_url": "https://github.com/openclaw/openclaw/pull/66678", + "representative_pr_number": 68381, + "representative_title": "feat: add maxExecutionMs per-task timeout to command lane", + "representative_url": "https://github.com/openclaw/openclaw/pull/68381", "shared_directories": [ - "src/context-engine", + "src/process", "src" ], "shared_filenames": [ - "src/context-engine/context-engine.test.ts", - "src/context-engine/registry.ts" + "src/process/command-queue.test.ts", + "src/process/command-queue.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/context-engine/context-engine.test.ts`, `src/context-engine/registry.ts`; representative PR #66678.", - "title": "Scope: Context engine/plugins: accept third-party engines whose info.id differs from registered slot id" + "summary": "2 open PRs share weighted file overlap around `src/process/command-queue.test.ts`, `src/process/command-queue.ts`; representative PR #68381.", + "title": "Scope: feat: add maxExecutionMs per-task timeout to command lane" }, { "authors": [ - "mushuiyu886" + "Tianworld", + "briandevans" ], - "average_similarity": 0.606, - "cluster_id": "pr-scope-66000-2", + "average_similarity": 0.825, + "cluster_id": "pr-scope-67175-2", "kind": "pr_scope", - "last_activity_at": "2026-04-15T05:15:52Z", + "last_activity_at": "2026-04-15T14:24:25Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.292, - "concentration_similarity": 0.505, - "content_similarity": 0.679, - "left_pr_number": 66000, - "right_pr_number": 66894, + "breadth_similarity": 0.583, + "concentration_similarity": 0.932, + "content_similarity": 0.885, + "left_pr_number": 67175, + "right_pr_number": 67209, "shared_directories": [ - "src/cli", + "src/logging", "src" ], "shared_filenames": [ - "src/cli/profile.test.ts", - "src/cli/profile.ts" + "src/logging/config.test.ts", + "src/logging/config.ts" ], - "similarity": 0.606, - "size_similarity": 0.505 + "similarity": 0.825, + "size_similarity": 0.667 } ], "pr_count": 2, "pr_numbers": [ - 66000, - 66894 + 67175, + 67209 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66000, - 66894 + 67175, + 67209 ], - "representative_pr_number": 66000, - "representative_title": "fix(cli): clear conflicting OPENCLAW_LAUNCHD_LABEL when --profile is provided", - "representative_url": "https://github.com/openclaw/openclaw/pull/66000", + "representative_pr_number": 67175, + "representative_title": "fix(logging): honor logging.file in bundled gateway runtime", + "representative_url": "https://github.com/openclaw/openclaw/pull/67175", "shared_directories": [ - "src/cli", + "src/logging", "src" ], "shared_filenames": [ - "src/cli/profile.test.ts", - "src/cli/profile.ts" + "src/logging/config.test.ts", + "src/logging/config.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/cli/profile.test.ts`, `src/cli/profile.ts`; representative PR #66000.", - "title": "Scope: fix(cli): clear conflicting OPENCLAW_LAUNCHD_LABEL when --profile is provided" + "summary": "2 open PRs share weighted file overlap around `src/logging/config.test.ts`, `src/logging/config.ts`; representative PR #67175.", + "title": "Scope: fix(logging): honor logging.file in bundled gateway runtime" }, { "authors": [ - "langningchen-openclaw", - "ly85206559" + "drobison00" ], - "average_similarity": 0.596, - "cluster_id": "pr-scope-66062-2", + "average_similarity": 0.8, + "cluster_id": "pr-scope-69797-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T11:09:31Z", + "last_activity_at": "2026-04-21T18:00:30Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.462, - "left_pr_number": 66062, - "right_pr_number": 68149, + "breadth_similarity": 1.0, + "concentration_similarity": 0.992, + "content_similarity": 0.846, + "left_pr_number": 69797, + "right_pr_number": 69798, "shared_directories": [ - "src/daemon", - "src" + "extensions/openshell/src", + "extensions/openshell", + "extensions" ], "shared_filenames": [ - "src/daemon/schtasks.ts" + "CHANGELOG.md", + "extensions/openshell/src/fs-bridge.ts", + "extensions/openshell/src/openshell-core.test.ts" ], - "similarity": 0.596, - "size_similarity": 0.984 + "similarity": 0.8, + "size_similarity": 0.387 } ], "pr_count": 2, "pr_numbers": [ - 66062, - 68149 + 69797, + 69798 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66062, - 68149 + 69797, + 69798 ], - "representative_pr_number": 66062, - "representative_title": "fix(daemon): ignore setlocal in Windows task parsing", - "representative_url": "https://github.com/openclaw/openclaw/pull/66062", + "representative_pr_number": 69797, + "representative_title": "fix(openshell): pin host writes to sandbox root", + "representative_url": "https://github.com/openclaw/openclaw/pull/69797", "shared_directories": [ - "src/daemon", - "src" + "extensions/openshell/src", + "extensions/openshell", + "extensions" ], "shared_filenames": [ - "src/daemon/schtasks.ts" + "extensions/openshell/src/openshell-core.test.ts", + "extensions/openshell/src/fs-bridge.ts", + "CHANGELOG.md" ], - "summary": "2 open PRs share weighted file overlap around `src/daemon/schtasks.ts`; representative PR #66062.", - "title": "Scope: fix(daemon): ignore setlocal in Windows task parsing" + "summary": "2 open PRs share weighted file overlap around `extensions/openshell/src/openshell-core.test.ts`, `extensions/openshell/src/fs-bridge.ts`, `CHANGELOG.md`; representative PR #69797.", + "title": "Scope: fix(openshell): pin host writes to sandbox root" }, { "authors": [ - "iubns", - "neo1027144-creator" + "slepybear" ], - "average_similarity": 0.576, - "cluster_id": "pr-scope-67346-2", + "average_similarity": 0.797, + "cluster_id": "pr-scope-69262-2", "kind": "pr_scope", - "last_activity_at": "2026-04-16T20:02:34Z", + "last_activity_at": "2026-04-20T08:05:27Z", "outside_window_prs": [], "pairwise": [ { "breadth_similarity": 0.5, - "concentration_similarity": 0.667, - "content_similarity": 0.624, - "left_pr_number": 67346, - "right_pr_number": 67694, + "concentration_similarity": 0.847, + "content_similarity": 0.841, + "left_pr_number": 69262, + "right_pr_number": 69263, "shared_directories": [ - "scripts" + "extensions/kimi-coding", + "extensions/qianfan", + "extensions" ], "shared_filenames": [ - "scripts/ui.js" + "extensions/kimi-coding/onboard.test.ts", + "extensions/kimi-coding/replay-policy.test.ts", + "extensions/qianfan/index.test.ts" ], - "similarity": 0.576, - "size_similarity": 0.375 + "similarity": 0.797, + "size_similarity": 0.775 } ], "pr_count": 2, "pr_numbers": [ - 67346, - 67694 + 69262, + 69263 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67346, - 67694 + 69262, + 69263 ], - "representative_pr_number": 67346, - "representative_title": "Scripts: use path.basename for pnpm to fix shell execution on Windows", - "representative_url": "https://github.com/openclaw/openclaw/pull/67346", + "representative_pr_number": 69262, + "representative_title": "fix(qqbot): allow outbound and inbound media paths in resolveQQBotPayloadLocalFilePath", + "representative_url": "https://github.com/openclaw/openclaw/pull/69262", "shared_directories": [ - "scripts" + "extensions/qianfan", + "extensions/kimi-coding", + "extensions" ], "shared_filenames": [ - "scripts/ui.js" + "extensions/kimi-coding/onboard.test.ts", + "extensions/kimi-coding/replay-policy.test.ts", + "extensions/qianfan/index.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `scripts/ui.js`; representative PR #67346.", - "title": "Scope: Scripts: use path.basename for pnpm to fix shell execution on Windows" + "summary": "2 open PRs share weighted file overlap around `extensions/kimi-coding/onboard.test.ts`, `extensions/kimi-coding/replay-policy.test.ts`, `extensions/qianfan/index.test.ts`; representative PR #69262.", + "title": "Scope: fix(qqbot): allow outbound and inbound media paths in resolveQQBotPayloadLocalFilePath" }, { "authors": [ - "Angfr95", - "yidianyiko" + "wucm667", + "zhengyuliu047-rgb" ], - "average_similarity": 0.559, - "cluster_id": "pr-scope-66337-2", + "average_similarity": 0.774, + "cluster_id": "pr-scope-67234-2", "kind": "pr_scope", - "last_activity_at": "2026-04-15T10:33:24Z", + "last_activity_at": "2026-04-21T11:34:13Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.583, - "concentration_similarity": 0.5, - "content_similarity": 0.652, - "left_pr_number": 66337, - "right_pr_number": 66594, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.723, + "left_pr_number": 67234, + "right_pr_number": 69691, "shared_directories": [ - "src/gateway", + "src/agents", "src" ], "shared_filenames": [ - "src/gateway/server-startup-post-attach.ts", - "src/gateway/server-startup.test.ts" + "src/agents/minimax-vlm.normalizes-api-key.test.ts", + "src/agents/minimax-vlm.ts" ], - "similarity": 0.559, - "size_similarity": 0.127 + "similarity": 0.774, + "size_similarity": 0.786 } ], "pr_count": 2, "pr_numbers": [ - 66337, - 66594 + 67234, + 69691 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66337, - 66594 + 67234, + 69691 ], - "representative_pr_number": 66337, - "representative_title": "fix(gateway): use provider runtime hooks in startup warmup", - "representative_url": "https://github.com/openclaw/openclaw/pull/66337", + "representative_pr_number": 67234, + "representative_title": "fix: extend isMinimaxVlmModel to support M2.5/M2.7/M2.7-highspeed", + "representative_url": "https://github.com/openclaw/openclaw/pull/67234", "shared_directories": [ - "src/gateway", + "src/agents", "src" ], "shared_filenames": [ - "src/gateway/server-startup.test.ts", - "src/gateway/server-startup-post-attach.ts" + "src/agents/minimax-vlm.normalizes-api-key.test.ts", + "src/agents/minimax-vlm.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/gateway/server-startup.test.ts`, `src/gateway/server-startup-post-attach.ts`; representative PR #66337.", - "title": "Scope: fix(gateway): use provider runtime hooks in startup warmup" + "summary": "2 open PRs share weighted file overlap around `src/agents/minimax-vlm.normalizes-api-key.test.ts`, `src/agents/minimax-vlm.ts`; representative PR #67234.", + "title": "Scope: fix: extend isMinimaxVlmModel to support M2.5/M2.7/M2.7-highspeed" }, { "authors": [ - "haobaicai", - "nightq" + "ajfonthemove", + "tianhaocui" ], - "average_similarity": 0.558, - "cluster_id": "pr-scope-66726-2", + "average_similarity": 0.771, + "cluster_id": "pr-scope-68286-2", "kind": "pr_scope", - "last_activity_at": "2026-04-17T05:40:49Z", + "last_activity_at": "2026-04-19T05:11:11Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.556, - "left_pr_number": 66726, - "right_pr_number": 67921, + "breadth_similarity": 0.875, + "concentration_similarity": 0.786, + "content_similarity": 0.797, + "left_pr_number": 68286, + "right_pr_number": 68830, "shared_directories": [ - "src/gateway", - "src" + "extensions/memory-core/src/memory", + "packages/memory-host-sdk/src/host", + "extensions/memory-core/src", + "packages/memory-host-sdk/src", + "src/memory-host-sdk/host", + "extensions/memory-core", + "packages/memory-host-sdk", + "src/memory-host-sdk", + "extensions", + "packages" ], "shared_filenames": [ - "src/gateway/server-channels.ts" + "extensions/memory-core/src/memory/hybrid.ts", + "packages/memory-host-sdk/src/host/types.ts", + "src/memory-host-sdk/host/types.ts" ], - "similarity": 0.558, - "size_similarity": 0.293 + "similarity": 0.771, + "size_similarity": 0.571 } ], "pr_count": 2, "pr_numbers": [ - 66726, - 67921 + 68286, + 68830 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66726, - 67921 + 68286, + 68830 ], - "representative_pr_number": 66726, - "representative_title": "fix: guard against undefined channel log in health-monitor restart", - "representative_url": "https://github.com/openclaw/openclaw/pull/66726", + "representative_pr_number": 68286, + "representative_title": "feat(memory-core): expose vectorScore and textScore in hybrid search results", + "representative_url": "https://github.com/openclaw/openclaw/pull/68286", "shared_directories": [ - "src/gateway", - "src" + "packages/memory-host-sdk/src/host", + "extensions/memory-core/src/memory", + "packages/memory-host-sdk/src", + "src/memory-host-sdk/host", + "extensions/memory-core/src", + "packages/memory-host-sdk", + "src/memory-host-sdk", + "extensions/memory-core" ], "shared_filenames": [ - "src/gateway/server-channels.ts" - ], - "summary": "2 open PRs share weighted file overlap around `src/gateway/server-channels.ts`; representative PR #66726.", - "title": "Scope: fix: guard against undefined channel log in health-monitor restart" - }, + "extensions/memory-core/src/memory/hybrid.ts", + "packages/memory-host-sdk/src/host/types.ts", + "src/memory-host-sdk/host/types.ts" + ], + "summary": "2 open PRs share weighted file overlap around `extensions/memory-core/src/memory/hybrid.ts`, `packages/memory-host-sdk/src/host/types.ts`, `src/memory-host-sdk/host/types.ts`; representative PR #68286.", + "title": "Scope: feat(memory-core): expose vectorScore and textScore in hybrid search results" + }, { "authors": [ - "dlebee-agent" + "mujiannan", + "soloclz" ], - "average_similarity": 0.554, - "cluster_id": "pr-scope-68240-2", + "average_similarity": 0.769, + "cluster_id": "pr-scope-66985-2", "kind": "pr_scope", - "last_activity_at": "2026-04-17T22:38:50Z", + "last_activity_at": "2026-04-21T13:51:32Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.55, - "concentration_similarity": 0.983, - "content_similarity": 0.441, - "left_pr_number": 68240, - "right_pr_number": 68301, + "breadth_similarity": 0.5, + "concentration_similarity": 0.994, + "content_similarity": 0.795, + "left_pr_number": 66985, + "right_pr_number": 69725, "shared_directories": [ - "src/cli", - "src/commands", + "src/agents", "src" ], "shared_filenames": [ - "src/commands/daemon-install-helpers.ts" + "src/agents/bash-tools.exec-host-node.test.ts", + "src/agents/bash-tools.exec-host-node.ts" ], - "similarity": 0.554, - "size_similarity": 0.94 + "similarity": 0.769, + "size_similarity": 0.751 } ], "pr_count": 2, "pr_numbers": [ - 68240, - 68301 + 66985, + 69725 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 68240, - 68301 + 66985, + 69725 ], - "representative_pr_number": 68240, - "representative_title": "feat(onboard): add --daemon-env flag to openclaw onboard --install-daemon", - "representative_url": "https://github.com/openclaw/openclaw/pull/68240", + "representative_pr_number": 66985, + "representative_title": "fix(agents): resolve requestedNode to canonical ID before boundNode comparison", + "representative_url": "https://github.com/openclaw/openclaw/pull/66985", "shared_directories": [ - "src/cli", - "src/commands", + "src/agents", "src" ], "shared_filenames": [ - "src/commands/daemon-install-helpers.ts" + "src/agents/bash-tools.exec-host-node.test.ts", + "src/agents/bash-tools.exec-host-node.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/commands/daemon-install-helpers.ts`; representative PR #68240.", - "title": "Scope: feat(onboard): add --daemon-env flag to openclaw onboard --install-daemon" + "summary": "2 open PRs share weighted file overlap around `src/agents/bash-tools.exec-host-node.test.ts`, `src/agents/bash-tools.exec-host-node.ts`; representative PR #66985.", + "title": "Scope: fix(agents): resolve requestedNode to canonical ID before boundNode comparison" }, { "authors": [ - "Aobing-code", - "anniesurla" + "jasonmakr", + "tianhaocui" ], - "average_similarity": 0.523, - "cluster_id": "pr-scope-68103-2", + "average_similarity": 0.75, + "cluster_id": "pr-scope-68473-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T00:31:28Z", + "last_activity_at": "2026-04-20T06:19:21Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.857, - "concentration_similarity": 0.815, - "content_similarity": 0.521, - "left_pr_number": 68103, - "right_pr_number": 68339, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.769, + "left_pr_number": 68473, + "right_pr_number": 68870, "shared_directories": [ - "docs/providers", - "extensions/nvidia", - "docs", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], "shared_filenames": [ - "docs/providers/nvidia.md", - "extensions/nvidia/index.ts", - "extensions/nvidia/provider-catalog.test.ts", - "extensions/nvidia/provider-catalog.ts" + "extensions/memory-core/src/concept-vocabulary.ts" ], - "similarity": 0.523, - "size_similarity": 0.217 + "similarity": 0.75, + "size_similarity": 0.577 } ], "pr_count": 2, "pr_numbers": [ - 68103, - 68339 + 68473, + 68870 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 68103, - 68339 + 68473, + 68870 ], - "representative_pr_number": 68103, - "representative_title": "Add nvidia api support", - "representative_url": "https://github.com/openclaw/openclaw/pull/68103", + "representative_pr_number": 68473, + "representative_title": "fix(memory-core): expand concept stopword list to filter transcript noise", + "representative_url": "https://github.com/openclaw/openclaw/pull/68473", "shared_directories": [ - "extensions/nvidia", - "docs/providers", - "docs", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], "shared_filenames": [ - "docs/providers/nvidia.md", - "extensions/nvidia/index.ts", - "extensions/nvidia/provider-catalog.test.ts", - "extensions/nvidia/provider-catalog.ts" + "extensions/memory-core/src/concept-vocabulary.ts" ], - "summary": "2 open PRs share weighted file overlap around `docs/providers/nvidia.md`, `extensions/nvidia/index.ts`, `extensions/nvidia/provider-catalog.test.ts`; representative PR #68103.", - "title": "Scope: Add nvidia api support" + "summary": "2 open PRs share weighted file overlap around `extensions/memory-core/src/concept-vocabulary.ts`; representative PR #68473.", + "title": "Scope: fix(memory-core): expand concept stopword list to filter transcript noise" }, { "authors": [ - "ly85206559", - "mkoslacz" + "Joel-Claw", + "oliviareid-svg" ], - "average_similarity": 0.495, - "cluster_id": "pr-scope-67589-2", + "average_similarity": 0.739, + "cluster_id": "pr-scope-67254-2", "kind": "pr_scope", - "last_activity_at": "2026-04-19T03:31:18Z", + "last_activity_at": "2026-04-15T19:14:09Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.5, - "concentration_similarity": 0.996, - "content_similarity": 0.529, - "left_pr_number": 67589, - "right_pr_number": 68257, + "breadth_similarity": 0.55, + "concentration_similarity": 0.968, + "content_similarity": 0.86, + "left_pr_number": 67254, + "right_pr_number": 67344, "shared_directories": [ - "src/gateway", - "src" + "extensions/google", + "extensions" ], "shared_filenames": [ - "src/gateway/config-reload-plan.ts", - "src/gateway/config-reload.test.ts" + "extensions/google/api.test.ts", + "extensions/google/api.ts", + "extensions/google/image-generation-provider.ts" ], - "similarity": 0.495, - "size_similarity": 0.166 + "similarity": 0.739, + "size_similarity": 0.226 } ], "pr_count": 2, "pr_numbers": [ - 67589, - 68257 + 67254, + 67344 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67589, - 68257 + 67254, + 67344 ], - "representative_pr_number": 67589, - "representative_title": "Gateway: ignore plugins.installs timestamp-only paths for reload (#49474)", - "representative_url": "https://github.com/openclaw/openclaw/pull/67589", + "representative_pr_number": 67254, + "representative_title": "fix(google): respect allowPrivateNetwork config for SSRF policy", + "representative_url": "https://github.com/openclaw/openclaw/pull/67254", "shared_directories": [ - "src/gateway", - "src" + "extensions/google", + "extensions" ], "shared_filenames": [ - "src/gateway/config-reload-plan.ts", - "src/gateway/config-reload.test.ts" + "extensions/google/api.test.ts", + "extensions/google/api.ts", + "extensions/google/image-generation-provider.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/gateway/config-reload-plan.ts`, `src/gateway/config-reload.test.ts`; representative PR #67589.", - "title": "Scope: Gateway: ignore plugins.installs timestamp-only paths for reload (#49474)" + "summary": "2 open PRs share weighted file overlap around `extensions/google/api.test.ts`, `extensions/google/api.ts`, `extensions/google/image-generation-provider.ts`; representative PR #67254.", + "title": "Scope: fix(google): respect allowPrivateNetwork config for SSRF policy" }, { "authors": [ - "johnlanni", - "nightq" + "cesararevalo", + "chrisabad" ], - "average_similarity": 0.493, - "cluster_id": "pr-scope-68546-2", + "average_similarity": 0.73, + "cluster_id": "pr-scope-68523-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T15:23:22Z", + "last_activity_at": "2026-04-21T16:56:27Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 1.0, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.454, - "left_pr_number": 68546, - "right_pr_number": 68570, + "content_similarity": 0.792, + "left_pr_number": 68523, + "right_pr_number": 68745, "shared_directories": [ - "extensions/matrix/src/matrix/monitor", - "extensions/matrix/src/matrix", - "extensions/matrix/src", - "extensions/matrix", + "extensions/slack/src/http", + "extensions/slack/src", + "extensions/slack", "extensions" ], "shared_filenames": [ - "extensions/matrix/src/matrix/monitor/handler.ts" + "extensions/slack/src/http/registry.ts" ], - "similarity": 0.493, - "size_similarity": 0.172 + "similarity": 0.73, + "size_similarity": 0.341 } ], "pr_count": 2, "pr_numbers": [ - 68546, - 68570 + 68523, + 68745 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 68546, - 68570 + 68523, + 68745 ], - "representative_pr_number": 68546, - "representative_title": "fix(matrix): hot-reload dm.allowFrom and groupAllowFrom on each inbound message", - "representative_url": "https://github.com/openclaw/openclaw/pull/68546", + "representative_pr_number": 68523, + "representative_title": "Fix to Slack HTTP Registry", + "representative_url": "https://github.com/openclaw/openclaw/pull/68523", "shared_directories": [ - "extensions/matrix/src/matrix/monitor", - "extensions/matrix/src/matrix", - "extensions/matrix/src", - "extensions/matrix", + "extensions/slack/src/http", + "extensions/slack/src", + "extensions/slack", "extensions" ], "shared_filenames": [ - "extensions/matrix/src/matrix/monitor/handler.ts" + "extensions/slack/src/http/registry.ts" ], - "summary": "2 open PRs share weighted file overlap around `extensions/matrix/src/matrix/monitor/handler.ts`; representative PR #68546.", - "title": "Scope: fix(matrix): hot-reload dm.allowFrom and groupAllowFrom on each inbound message" + "summary": "2 open PRs share weighted file overlap around `extensions/slack/src/http/registry.ts`; representative PR #68523.", + "title": "Scope: Fix to Slack HTTP Registry" }, { "authors": [ - "pgondhi987", - "zhengyuliu047-rgb" + "drobison00", + "parasol-aser" ], - "average_similarity": 0.487, - "cluster_id": "pr-scope-67234-2", + "average_similarity": 0.693, + "cluster_id": "pr-scope-67376-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T02:47:00Z", + "last_activity_at": "2026-04-21T17:33:41Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.417, - "concentration_similarity": 0.811, - "content_similarity": 0.497, - "left_pr_number": 67234, - "right_pr_number": 67300, + "breadth_similarity": 0.518, + "concentration_similarity": 0.956, + "content_similarity": 0.795, + "left_pr_number": 67376, + "right_pr_number": 69796, "shared_directories": [ + "src/agents/cli-runner", "src/agents", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/minimax-vlm.normalizes-api-key.test.ts" + "src/agents/cli-runner/bundle-mcp.test.ts", + "src/agents/cli-runner/prepare.ts", + "src/gateway/mcp-http.loopback-runtime.ts", + "src/gateway/mcp-http.request.ts", + "src/gateway/mcp-http.test.ts", + "src/gateway/mcp-http.ts" ], - "similarity": 0.487, - "size_similarity": 0.378 + "similarity": 0.693, + "size_similarity": 0.25 } ], "pr_count": 2, "pr_numbers": [ - 67234, - 67300 + 67376, + 69796 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67234, - 67300 + 67376, + 69796 ], - "representative_pr_number": 67234, - "representative_title": "fix: extend isMinimaxVlmModel to support M2.5/M2.7/M2.7-highspeed", - "representative_url": "https://github.com/openclaw/openclaw/pull/67234", + "representative_pr_number": 67376, + "representative_title": "fix(gateway): bind loopback MCP scope to per-backend bearer token (#64993)", + "representative_url": "https://github.com/openclaw/openclaw/pull/67376", "shared_directories": [ + "src/agents/cli-runner", + "src/gateway", "src/agents", "src" ], "shared_filenames": [ - "src/agents/minimax-vlm.normalizes-api-key.test.ts" + "src/gateway/mcp-http.loopback-runtime.ts", + "src/gateway/mcp-http.ts", + "src/gateway/mcp-http.request.ts", + "src/gateway/mcp-http.test.ts", + "src/agents/cli-runner/bundle-mcp.test.ts", + "src/agents/cli-runner/prepare.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/minimax-vlm.normalizes-api-key.test.ts`; representative PR #67234.", - "title": "Scope: fix: extend isMinimaxVlmModel to support M2.5/M2.7/M2.7-highspeed" + "summary": "2 open PRs share weighted file overlap around `src/gateway/mcp-http.loopback-runtime.ts`, `src/gateway/mcp-http.ts`, `src/gateway/mcp-http.request.ts`; representative PR #67376.", + "title": "Scope: fix(gateway): bind loopback MCP scope to per-backend bearer token (#64993)" }, { "authors": [ - "tmlxrd", - "yangxiyucs" + "martingarramon", + "taosiyuan163" ], - "average_similarity": 0.475, - "cluster_id": "pr-scope-66466-2", + "average_similarity": 0.655, + "cluster_id": "pr-scope-68161-2", "kind": "pr_scope", - "last_activity_at": "2026-04-16T23:11:30Z", + "last_activity_at": "2026-04-18T13:10:43Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.714, - "concentration_similarity": 0.904, - "content_similarity": 0.324, - "left_pr_number": 66466, - "right_pr_number": 67848, + "breadth_similarity": 0.625, + "concentration_similarity": 0.637, + "content_similarity": 0.709, + "left_pr_number": 68161, + "right_pr_number": 68227, "shared_directories": [ - "extensions/openai", - "src/commands", - "extensions", - "src" + "apps/shared/OpenClawKit/Sources/OpenClawKit", + "apps/shared/OpenClawKit/Sources/OpenClawProtocol", + "apps/macos/Sources/OpenClawProtocol", + "apps/macos/Tests/OpenClawIPCTests", + "apps/shared/OpenClawKit/Sources", + "src/gateway/protocol/schema", + "apps/macos/Sources", + "apps/macos/Tests", + "apps/shared/OpenClawKit", + "src/gateway/protocol" ], "shared_filenames": [ - "extensions/openai/openai-provider.ts", - "extensions/openai/openclaw.plugin.json", - "src/commands/auth-choice-options.test.ts" + "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", + "apps/macos/Tests/OpenClawIPCTests/MacGatewayChatTransportMappingTests.swift", + "apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayChannel.swift", + "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift", + "src/gateway/protocol/schema/frames.ts" ], - "similarity": 0.475, - "size_similarity": 0.88 + "similarity": 0.655, + "size_similarity": 0.424 } ], "pr_count": 2, "pr_numbers": [ - 66466, - 67848 + 68161, + 68227 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66466, - 67848 + 68161, + 68227 ], - "representative_pr_number": 66466, - "representative_title": "fix(openai): clarify provider setup wizard hint", - "representative_url": "https://github.com/openclaw/openclaw/pull/66466", + "representative_pr_number": 68161, + "representative_title": "fix(gateway/schema): drop stale Type.Optional wrapper on hello-ok auth", + "representative_url": "https://github.com/openclaw/openclaw/pull/68161", "shared_directories": [ - "extensions/openai", - "src/commands", - "extensions", - "src" + "apps/shared/OpenClawKit/Sources/OpenClawKit", + "apps/shared/OpenClawKit/Sources/OpenClawProtocol", + "apps/macos/Tests/OpenClawIPCTests", + "apps/macos/Sources/OpenClawProtocol", + "apps/shared/OpenClawKit/Sources", + "src/gateway/protocol/schema", + "apps/macos/Tests", + "apps/macos/Sources" ], "shared_filenames": [ - "extensions/openai/openclaw.plugin.json", - "extensions/openai/openai-provider.ts", - "src/commands/auth-choice-options.test.ts" + "apps/macos/Tests/OpenClawIPCTests/MacGatewayChatTransportMappingTests.swift", + "src/gateway/protocol/schema/frames.ts", + "apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayChannel.swift", + "apps/macos/Sources/OpenClawProtocol/GatewayModels.swift", + "apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift" ], - "summary": "2 open PRs share weighted file overlap around `extensions/openai/openclaw.plugin.json`, `extensions/openai/openai-provider.ts`, `src/commands/auth-choice-options.test.ts`; representative PR #66466.", - "title": "Scope: fix(openai): clarify provider setup wizard hint" + "summary": "2 open PRs share weighted file overlap around `apps/macos/Tests/OpenClawIPCTests/MacGatewayChatTransportMappingTests.swift`, `src/gateway/protocol/schema/frames.ts`, `apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayChannel.swift`; representative PR #68161.", + "title": "Scope: fix(gateway/schema): drop stale Type.Optional wrapper on hello-ok auth" }, { "authors": [ - "alexanderkreidich", - "nightq" + "TinyTb", + "skylee-01" ], - "average_similarity": 0.472, - "cluster_id": "pr-scope-65593-2", + "average_similarity": 0.624, + "cluster_id": "pr-scope-67731-2", "kind": "pr_scope", - "last_activity_at": "2026-04-16T19:52:08Z", + "last_activity_at": "2026-04-18T05:58:27Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.467, - "left_pr_number": 65593, - "right_pr_number": 67796, + "breadth_similarity": 0.875, + "concentration_similarity": 0.599, + "content_similarity": 0.65, + "left_pr_number": 67731, + "right_pr_number": 68416, "shared_directories": [ - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "extensions/anthropic", + "src/agents", + "extensions", + "src" ], "shared_filenames": [ - "extensions/mattermost/src/channel.ts" + "extensions/anthropic/index.test.ts", + "extensions/anthropic/register.runtime.ts" ], - "similarity": 0.472, - "size_similarity": 0.136 + "similarity": 0.624, + "size_similarity": 0.342 } ], "pr_count": 2, "pr_numbers": [ - 65593, - 67796 + 67731, + 68416 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65593, - 67796 + 67731, + 68416 ], - "representative_pr_number": 65593, - "representative_title": "fix(mattermost): forward media access context in handleAction send", - "representative_url": "https://github.com/openclaw/openclaw/pull/65593", + "representative_pr_number": 67731, + "representative_title": "fix(anthropic): add Claude Sonnet 4.7 forward-compat support", + "representative_url": "https://github.com/openclaw/openclaw/pull/67731", "shared_directories": [ - "extensions/mattermost/src", - "extensions/mattermost", - "extensions" + "extensions/anthropic", + "src/agents", + "extensions", + "src" ], "shared_filenames": [ - "extensions/mattermost/src/channel.ts" + "extensions/anthropic/index.test.ts", + "extensions/anthropic/register.runtime.ts" ], - "summary": "2 open PRs share weighted file overlap around `extensions/mattermost/src/channel.ts`; representative PR #65593.", - "title": "Scope: fix(mattermost): forward media access context in handleAction send" + "summary": "2 open PRs share weighted file overlap around `extensions/anthropic/index.test.ts`, `extensions/anthropic/register.runtime.ts`; representative PR #67731.", + "title": "Scope: fix(anthropic): add Claude Sonnet 4.7 forward-compat support" }, { "authors": [ - "MoeJaberr" + "1aifanatic", + "nightq" ], - "average_similarity": 0.467, - "cluster_id": "pr-scope-67452-2", + "average_similarity": 0.621, + "cluster_id": "pr-scope-68311-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T19:01:52Z", + "last_activity_at": "2026-04-18T01:39:56Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.122, - "concentration_similarity": 0.769, - "content_similarity": 0.524, - "left_pr_number": 67452, - "right_pr_number": 67460, + "breadth_similarity": 0.5, + "concentration_similarity": 0.5, + "content_similarity": 0.673, + "left_pr_number": 68311, + "right_pr_number": 68317, "shared_directories": [ - "test/scripts", - "scripts", - "test" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "scripts/postinstall-bundled-plugins.mjs", - "test/scripts/postinstall-bundled-plugins.test.ts" + "src/auto-reply/reply/directive-handling.impl.ts" ], - "similarity": 0.467, - "size_similarity": 0.328 + "similarity": 0.621, + "size_similarity": 0.5 } ], "pr_count": 2, "pr_numbers": [ - 67452, - 67460 + 68311, + 68317 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67452, - 67460 + 68311, + 68317 ], - "representative_pr_number": 67452, - "representative_title": "fix(postinstall): prune stale dist plugin node_modules before dist traversal", - "representative_url": "https://github.com/openclaw/openclaw/pull/67452", + "representative_pr_number": 68311, + "representative_title": "fix: update reasoning stream message to include Feishu support", + "representative_url": "https://github.com/openclaw/openclaw/pull/68311", "shared_directories": [ - "test/scripts", - "test", - "scripts" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "scripts/postinstall-bundled-plugins.mjs", - "test/scripts/postinstall-bundled-plugins.test.ts" + "src/auto-reply/reply/directive-handling.impl.ts" ], - "summary": "2 open PRs share weighted file overlap around `scripts/postinstall-bundled-plugins.mjs`, `test/scripts/postinstall-bundled-plugins.test.ts`; representative PR #67452.", - "title": "Scope: fix(postinstall): prune stale dist plugin node_modules before dist traversal" + "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/directive-handling.impl.ts`; representative PR #68311.", + "title": "Scope: fix: update reasoning stream message to include Feishu support" }, { "authors": [ - "amittell" + "iubns", + "neo1027144-creator" ], - "average_similarity": 0.462, - "cluster_id": "pr-scope-66911-2", + "average_similarity": 0.577, + "cluster_id": "pr-scope-67346-2", "kind": "pr_scope", - "last_activity_at": "2026-04-17T15:17:58Z", + "last_activity_at": "2026-04-16T20:02:34Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.312, - "concentration_similarity": 0.594, - "content_similarity": 0.519, - "left_pr_number": 66911, - "right_pr_number": 67475, + "breadth_similarity": 0.5, + "concentration_similarity": 0.667, + "content_similarity": 0.624, + "left_pr_number": 67346, + "right_pr_number": 67694, "shared_directories": [ - "src/agents/auth-profiles", - "src/commands/models", - "src/agents", - "src/cli", - "src/commands", - "src/infra", - "test/scripts", - "src", - "test" + "scripts" ], "shared_filenames": [ - "src/agents/auth-profiles/doctor.ts", - "src/agents/auth-profiles/order.ts", - "src/agents/auth-profiles/sanitize.test.ts", - "src/agents/auth-profiles/sanitize.ts", - "src/agents/auth-profiles/store.legacy-migration.test.ts", - "src/agents/auth-profiles/store.ts", - "src/cli/models-cli.test.ts", - "src/cli/models-cli.ts", - "src/commands/models.ts", - "src/commands/models/auth-clean.test.ts" + "scripts/ui.js" ], - "similarity": 0.462, - "size_similarity": 0.251 + "similarity": 0.577, + "size_similarity": 0.375 } ], "pr_count": 2, "pr_numbers": [ - 66911, - 67475 + 67346, + 67694 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66911, - 67475 + 67346, + 67694 ], - "representative_pr_number": 66911, - "representative_title": "feat(auth): add models auth clean command to prune stale auth profiles", - "representative_url": "https://github.com/openclaw/openclaw/pull/66911", + "representative_pr_number": 67346, + "representative_title": "Scripts: use path.basename for pnpm to fix shell execution on Windows", + "representative_url": "https://github.com/openclaw/openclaw/pull/67346", "shared_directories": [ - "src/commands/models", - "src/agents/auth-profiles", - "test/scripts", - "src/cli", - "src/commands", - "src/infra", - "src/agents", - "test" + "scripts" ], "shared_filenames": [ - "src/agents/auth-profiles/doctor.ts", - "src/agents/auth-profiles/sanitize.test.ts", - "src/agents/auth-profiles/sanitize.ts", - "src/agents/auth-profiles/store.legacy-migration.test.ts", - "src/commands/models/auth-clean.test.ts", - "src/commands/models/auth-clean.ts", - "src/infra/json-file.ts", - "src/cli/models-cli.test.ts" + "scripts/ui.js" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/auth-profiles/doctor.ts`, `src/agents/auth-profiles/sanitize.test.ts`, `src/agents/auth-profiles/sanitize.ts`; representative PR #66911.", - "title": "Scope: feat(auth): add models auth clean command to prune stale auth profiles" + "summary": "2 open PRs share weighted file overlap around `scripts/ui.js`; representative PR #67346.", + "title": "Scope: Scripts: use path.basename for pnpm to fix shell execution on Windows" }, { "authors": [ - "Joel-Claw", - "Tianworld" + "kiote", + "sk7n4k3d" ], - "average_similarity": 0.454, - "cluster_id": "pr-scope-65433-2", + "average_similarity": 0.563, + "cluster_id": "pr-scope-69244-2", "kind": "pr_scope", - "last_activity_at": "2026-04-15T08:37:43Z", + "last_activity_at": "2026-04-20T11:55:56Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.268, - "concentration_similarity": 0.421, - "content_similarity": 0.512, - "left_pr_number": 65433, - "right_pr_number": 66862, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.583, + "left_pr_number": 69244, + "right_pr_number": 69318, "shared_directories": [ - "src/agents", - "src" + "extensions/github-copilot", + "extensions" ], "shared_filenames": [ - "src/agents/context.test.ts", - "src/agents/context.ts" + "extensions/github-copilot/models-defaults.ts" ], - "similarity": 0.454, - "size_similarity": 0.316 + "similarity": 0.563, + "size_similarity": 0.2 } ], "pr_count": 2, "pr_numbers": [ - 65433, - 66862 + 69244, + 69318 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 65433, - 66862 + 69244, + 69318 ], - "representative_pr_number": 65433, - "representative_title": "fix: inbound NUL safety, Gemini 3.1 CLI templates, Sonnet 4.6 default 1M context", - "representative_url": "https://github.com/openclaw/openclaw/pull/65433", + "representative_pr_number": 69244, + "representative_title": "feat(github-copilot): add missing Copilot models to defaults", + "representative_url": "https://github.com/openclaw/openclaw/pull/69244", "shared_directories": [ - "src/agents", - "src" + "extensions/github-copilot", + "extensions" ], "shared_filenames": [ - "src/agents/context.test.ts", - "src/agents/context.ts" + "extensions/github-copilot/models-defaults.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/context.test.ts`, `src/agents/context.ts`; representative PR #65433.", - "title": "Scope: fix: inbound NUL safety, Gemini 3.1 CLI templates, Sonnet 4.6 default 1M context" + "summary": "2 open PRs share weighted file overlap around `extensions/github-copilot/models-defaults.ts`; representative PR #69244.", + "title": "Scope: feat(github-copilot): add missing Copilot models to defaults" }, { "authors": [ - "wzhgba" + "dlebee-agent" ], - "average_similarity": 0.451, - "cluster_id": "pr-scope-66687-2", + "average_similarity": 0.559, + "cluster_id": "pr-scope-68240-2", "kind": "pr_scope", - "last_activity_at": "2026-04-17T09:51:28Z", + "last_activity_at": "2026-04-17T22:38:50Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.191, - "concentration_similarity": 0.85, - "content_similarity": 0.511, - "left_pr_number": 66687, - "right_pr_number": 67011, + "breadth_similarity": 0.55, + "concentration_similarity": 0.983, + "content_similarity": 0.449, + "left_pr_number": 68240, + "right_pr_number": 68301, "shared_directories": [ - "src/agents", + "src/cli", + "src/commands", "src" ], "shared_filenames": [ - "src/agents/cache-trace.test.ts" + "src/commands/daemon-install-helpers.ts" ], - "similarity": 0.451, - "size_similarity": 0.216 + "similarity": 0.559, + "size_similarity": 0.94 } ], "pr_count": 2, "pr_numbers": [ - 66687, - 67011 + 68240, + 68301 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 66687, - 67011 + 68240, + 68301 ], - "representative_pr_number": 66687, - "representative_title": "feat(cache-trace): capture stream-context tools with opt-in payload controls", - "representative_url": "https://github.com/openclaw/openclaw/pull/66687", + "representative_pr_number": 68240, + "representative_title": "feat(onboard): add --daemon-env flag to openclaw onboard --install-daemon", + "representative_url": "https://github.com/openclaw/openclaw/pull/68240", "shared_directories": [ - "src/agents", + "src/cli", + "src/commands", "src" ], "shared_filenames": [ - "src/agents/cache-trace.test.ts" + "src/commands/daemon-install-helpers.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/cache-trace.test.ts`; representative PR #66687.", - "title": "Scope: feat(cache-trace): capture stream-context tools with opt-in payload controls" + "summary": "2 open PRs share weighted file overlap around `src/commands/daemon-install-helpers.ts`; representative PR #68240.", + "title": "Scope: feat(onboard): add --daemon-env flag to openclaw onboard --install-daemon" }, { "authors": [ - "Ante042", - "hoyanhan" + "ly85206559", + "mkoslacz" ], - "average_similarity": 0.451, - "cluster_id": "pr-scope-67647-2", + "average_similarity": 0.557, + "cluster_id": "pr-scope-67589-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T13:15:27Z", + "last_activity_at": "2026-04-21T10:37:15Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.75, + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.319, - "left_pr_number": 67647, - "right_pr_number": 68558, + "content_similarity": 0.582, + "left_pr_number": 67589, + "right_pr_number": 68257, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/gateway", "src" ], "shared_filenames": [ - "src/auto-reply/reply/commands-compact.ts" + "src/gateway/config-reload-plan.ts", + "src/gateway/config-reload.test.ts" ], - "similarity": 0.451, - "size_similarity": 0.687 + "similarity": 0.557, + "size_similarity": 0.109 } ], "pr_count": 2, "pr_numbers": [ - 67647, - 68558 + 67589, + 68257 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67647, - 68558 + 67589, + 68257 ], - "representative_pr_number": 67647, - "representative_title": "fix(compact): use resolved context tokens in summary", - "representative_url": "https://github.com/openclaw/openclaw/pull/67647", + "representative_pr_number": 67589, + "representative_title": "Gateway: ignore plugins.installs timestamp-only paths for reload (#49474)", + "representative_url": "https://github.com/openclaw/openclaw/pull/67589", "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/gateway", "src" ], "shared_filenames": [ - "src/auto-reply/reply/commands-compact.ts" + "src/gateway/config-reload-plan.ts", + "src/gateway/config-reload.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/commands-compact.ts`; representative PR #67647.", - "title": "Scope: fix(compact): use resolved context tokens in summary" + "summary": "2 open PRs share weighted file overlap around `src/gateway/config-reload-plan.ts`, `src/gateway/config-reload.test.ts`; representative PR #67589.", + "title": "Scope: Gateway: ignore plugins.installs timestamp-only paths for reload (#49474)" }, { "authors": [ - "Magicray1217", - "lyfuci" + "chinar-amrutkar", + "gumadeiras" ], - "average_similarity": 0.45, - "cluster_id": "pr-scope-67041-2", + "average_similarity": 0.543, + "cluster_id": "pr-scope-67360-2", "kind": "pr_scope", - "last_activity_at": "2026-04-19T04:39:08Z", + "last_activity_at": "2026-04-21T17:56:31Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.325, - "concentration_similarity": 0.468, - "content_similarity": 0.526, - "left_pr_number": 67041, - "right_pr_number": 68483, + "breadth_similarity": 0.536, + "concentration_similarity": 0.67, + "content_similarity": 0.557, + "left_pr_number": 67360, + "right_pr_number": 69791, "shared_directories": [ - "src/logging", + "src/plugin-sdk", + "src/plugins", "src" ], "shared_filenames": [ - "src/logging/redact.test.ts", - "src/logging/redact.ts" + "src/plugin-sdk/channel-entry-contract.test.ts", + "src/plugin-sdk/channel-entry-contract.ts" ], - "similarity": 0.45, - "size_similarity": 0.169 + "similarity": 0.543, + "size_similarity": 0.442 } ], "pr_count": 2, "pr_numbers": [ - 67041, - 68483 + 67360, + 69791 ], "recent_pr_count": 2, "recent_pr_numbers": [ - 67041, - 68483 + 67360, + 69791 ], - "representative_pr_number": 67041, - "representative_title": "fix: add redaction patterns for JWTs, Basic auth, and custom security headers in logs.tail", - "representative_url": "https://github.com/openclaw/openclaw/pull/67041", + "representative_pr_number": 67360, + "representative_title": "Fix/telegram config read bug", + "representative_url": "https://github.com/openclaw/openclaw/pull/67360", "shared_directories": [ - "src/logging", + "src/plugin-sdk", + "src/plugins", + "src" + ], + "shared_filenames": [ + "src/plugin-sdk/channel-entry-contract.test.ts", + "src/plugin-sdk/channel-entry-contract.ts" + ], + "summary": "2 open PRs share weighted file overlap around `src/plugin-sdk/channel-entry-contract.test.ts`, `src/plugin-sdk/channel-entry-contract.ts`; representative PR #67360.", + "title": "Scope: Fix/telegram config read bug" + }, + { + "authors": [ + "tianhaocui", + "vvitovec" + ], + "average_similarity": 0.535, + "cluster_id": "pr-scope-68792-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T06:19:42Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.559, + "left_pr_number": 68792, + "right_pr_number": 68849, + "shared_directories": [ + "src/process/supervisor/adapters", + "src/process/supervisor", + "src/process", + "src" + ], + "shared_filenames": [ + "src/process/supervisor/adapters/child.ts" + ], + "similarity": 0.535, + "size_similarity": 0.125 + } + ], + "pr_count": 2, + "pr_numbers": [ + 68792, + 68849 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 68792, + 68849 + ], + "representative_pr_number": 68792, + "representative_title": "fix(process): shim claude on Windows child spawns", + "representative_url": "https://github.com/openclaw/openclaw/pull/68792", + "shared_directories": [ + "src/process/supervisor/adapters", + "src/process/supervisor", + "src/process", + "src" + ], + "shared_filenames": [ + "src/process/supervisor/adapters/child.ts" + ], + "summary": "2 open PRs share weighted file overlap around `src/process/supervisor/adapters/child.ts`; representative PR #68792.", + "title": "Scope: fix(process): shim claude on Windows child spawns" + }, + { + "authors": [ + "Aobing-code", + "anniesurla" + ], + "average_similarity": 0.524, + "cluster_id": "pr-scope-68103-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-18T00:31:28Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.857, + "concentration_similarity": 0.815, + "content_similarity": 0.521, + "left_pr_number": 68103, + "right_pr_number": 68339, + "shared_directories": [ + "docs/providers", + "extensions/nvidia", + "docs", + "extensions" + ], + "shared_filenames": [ + "docs/providers/nvidia.md", + "extensions/nvidia/index.ts", + "extensions/nvidia/provider-catalog.test.ts", + "extensions/nvidia/provider-catalog.ts" + ], + "similarity": 0.524, + "size_similarity": 0.217 + } + ], + "pr_count": 2, + "pr_numbers": [ + 68103, + 68339 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 68103, + 68339 + ], + "representative_pr_number": 68103, + "representative_title": "Add nvidia api support", + "representative_url": "https://github.com/openclaw/openclaw/pull/68103", + "shared_directories": [ + "extensions/nvidia", + "docs/providers", + "docs", + "extensions" + ], + "shared_filenames": [ + "docs/providers/nvidia.md", + "extensions/nvidia/index.ts", + "extensions/nvidia/provider-catalog.test.ts", + "extensions/nvidia/provider-catalog.ts" + ], + "summary": "2 open PRs share weighted file overlap around `docs/providers/nvidia.md`, `extensions/nvidia/index.ts`, `extensions/nvidia/provider-catalog.test.ts`; representative PR #68103.", + "title": "Scope: Add nvidia api support" + }, + { + "authors": [ + "name5566", + "tianhaocui" + ], + "average_similarity": 0.472, + "cluster_id": "pr-scope-68859-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-19T08:54:14Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.25, + "concentration_similarity": 0.4, + "content_similarity": 0.524, + "left_pr_number": 68859, + "right_pr_number": 68887, + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/controllers/cron.ts" + ], + "similarity": 0.472, + "size_similarity": 0.4 + } + ], + "pr_count": 2, + "pr_numbers": [ + 68859, + 68887 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 68859, + 68887 + ], + "representative_pr_number": 68859, + "representative_title": "feat(exec): inject OPENCLAW_SESSION_KEY env var for child processes", + "representative_url": "https://github.com/openclaw/openclaw/pull/68859", + "shared_directories": [ + "ui/src/ui/controllers", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/controllers/cron.ts" + ], + "summary": "2 open PRs share weighted file overlap around `ui/src/ui/controllers/cron.ts`; representative PR #68859.", + "title": "Scope: feat(exec): inject OPENCLAW_SESSION_KEY env var for child processes" + }, + { + "authors": [ + "MoeJaberr" + ], + "average_similarity": 0.464, + "cluster_id": "pr-scope-67452-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T01:21:22Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.129, + "concentration_similarity": 0.77, + "content_similarity": 0.519, + "left_pr_number": 67452, + "right_pr_number": 67460, + "shared_directories": [ + "test/scripts", + "scripts", + "test" + ], + "shared_filenames": [ + "scripts/postinstall-bundled-plugins.mjs", + "test/scripts/postinstall-bundled-plugins.test.ts" + ], + "similarity": 0.464, + "size_similarity": 0.328 + } + ], + "pr_count": 2, + "pr_numbers": [ + 67452, + 67460 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 67452, + 67460 + ], + "representative_pr_number": 67452, + "representative_title": "fix(postinstall): prune stale dist plugin node_modules before dist traversal", + "representative_url": "https://github.com/openclaw/openclaw/pull/67452", + "shared_directories": [ + "test/scripts", + "test", + "scripts" + ], + "shared_filenames": [ + "test/scripts/postinstall-bundled-plugins.test.ts", + "scripts/postinstall-bundled-plugins.mjs" + ], + "summary": "2 open PRs share weighted file overlap around `test/scripts/postinstall-bundled-plugins.test.ts`, `scripts/postinstall-bundled-plugins.mjs`; representative PR #67452.", + "title": "Scope: fix(postinstall): prune stale dist plugin node_modules before dist traversal" + }, + { + "authors": [ + "jackson-jia-914", + "ttomiczek" + ], + "average_similarity": 0.459, + "cluster_id": "pr-scope-67073-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T08:20:13Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.333, + "concentration_similarity": 0.4, + "content_similarity": 0.547, + "left_pr_number": 67073, + "right_pr_number": 69548, + "shared_directories": [ + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" + ], + "shared_filenames": [ + "extensions/memory-core/src/dreaming.ts" + ], + "similarity": 0.459, + "size_similarity": 0.15 + } + ], + "pr_count": 2, + "pr_numbers": [ + 67073, + 69548 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 67073, + 69548 + ], + "representative_pr_number": 67073, + "representative_title": "fix(dreaming): use isolated sessionTarget instead of main (#67021)", + "representative_url": "https://github.com/openclaw/openclaw/pull/67073", + "shared_directories": [ + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" + ], + "shared_filenames": [ + "extensions/memory-core/src/dreaming.ts" + ], + "summary": "2 open PRs share weighted file overlap around `extensions/memory-core/src/dreaming.ts`; representative PR #67073.", + "title": "Scope: fix(dreaming): use isolated sessionTarget instead of main (#67021)" + }, + { + "authors": [ + "Ante042", + "hoyanhan" + ], + "average_similarity": 0.451, + "cluster_id": "pr-scope-67647-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T15:09:03Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.318, + "left_pr_number": 67647, + "right_pr_number": 68558, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/commands-compact.ts" + ], + "similarity": 0.451, + "size_similarity": 0.687 + } + ], + "pr_count": 2, + "pr_numbers": [ + 67647, + 68558 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 67647, + 68558 + ], + "representative_pr_number": 67647, + "representative_title": "fix(compact): use resolved context tokens in summary", + "representative_url": "https://github.com/openclaw/openclaw/pull/67647", + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/logging/redact.test.ts", - "src/logging/redact.ts" + "src/auto-reply/reply/commands-compact.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/logging/redact.test.ts`, `src/logging/redact.ts`; representative PR #67041.", - "title": "Scope: fix: add redaction patterns for JWTs, Basic auth, and custom security headers in logs.tail" + "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/commands-compact.ts`; representative PR #67647.", + "title": "Scope: fix(compact): use resolved context tokens in summary" }, { "authors": [ @@ -31744,12 +32924,63 @@ "summary": "2 open PRs share weighted file overlap around `extensions/senseaudio/index.ts`, `extensions/senseaudio/openclaw.plugin.json`, `extensions/senseaudio/package.json`; representative PR #66943.", "title": "Scope: feat: add SenseAudio audio transcription provider" }, + { + "authors": [ + "alexlomt", + "hxy91819" + ], + "average_similarity": 0.443, + "cluster_id": "pr-scope-66884-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-18T10:59:50Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.333, + "concentration_similarity": 0.585, + "content_similarity": 0.476, + "left_pr_number": 66884, + "right_pr_number": 67920, + "shared_directories": [ + ".github/workflows", + ".github" + ], + "shared_filenames": [ + ".github/workflows/openclaw-cross-os-release-checks-reusable.yml" + ], + "similarity": 0.443, + "size_similarity": 0.311 + } + ], + "pr_count": 2, + "pr_numbers": [ + 66884, + 67920 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 66884, + 67920 + ], + "representative_pr_number": 66884, + "representative_title": "fix(ci): harden release checks workflow inputs", + "representative_url": "https://github.com/openclaw/openclaw/pull/66884", + "shared_directories": [ + ".github/workflows", + ".github" + ], + "shared_filenames": [ + ".github/workflows/openclaw-cross-os-release-checks-reusable.yml" + ], + "summary": "2 open PRs share weighted file overlap around `.github/workflows/openclaw-cross-os-release-checks-reusable.yml`; representative PR #66884.", + "title": "Scope: fix(ci): harden release checks workflow inputs" + }, { "authors": [ "AstronautGumbo", "ademczuk" ], - "average_similarity": 0.445, + "average_similarity": 0.44, "cluster_id": "pr-scope-67077-2", "kind": "pr_scope", "last_activity_at": "2026-04-18T13:17:27Z", @@ -31758,7 +32989,7 @@ { "breadth_similarity": 0.833, "concentration_similarity": 0.837, - "content_similarity": 0.399, + "content_similarity": 0.391, "left_pr_number": 67077, "right_pr_number": 68566, "shared_directories": [ @@ -31770,7 +33001,7 @@ "CHANGELOG.md", "src/agents/auth-profiles/usage.ts" ], - "similarity": 0.445, + "similarity": 0.44, "size_similarity": 0.273 } ], @@ -31801,8046 +33032,12343 @@ }, { "authors": [ - "1aifanatic", - "Luckymingxuan" + "lucasheriques", + "swotvibe" ], - "average_similarity": 0.445, - "cluster_id": "pr-scope-67505-2", + "average_similarity": 0.429, + "cluster_id": "pr-scope-67723-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T03:46:17Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.431, + "left_pr_number": 67723, + "right_pr_number": 69577, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/images.ts" + ], + "similarity": 0.429, + "size_similarity": 0.018 + } + ], + "pr_count": 2, + "pr_numbers": [ + 67723, + 69577 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 67723, + 69577 + ], + "representative_pr_number": 67723, + "representative_title": "fix(agents): allow workspaceOnly inbound image loads from managed media dir", + "representative_url": "https://github.com/openclaw/openclaw/pull/67723", + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/images.ts" + ], + "summary": "2 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/run/images.ts`; representative PR #67723.", + "title": "Scope: fix(agents): allow workspaceOnly inbound image loads from managed media dir" + }, + { + "authors": [ + "fraction12", + "sudhindrat" + ], + "average_similarity": 0.427, + "cluster_id": "pr-scope-68673-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T13:09:15Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.423, + "left_pr_number": 68673, + "right_pr_number": 69697, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/tool-loop-detection.ts" + ], + "similarity": 0.427, + "size_similarity": 0.04 + } + ], + "pr_count": 2, + "pr_numbers": [ + 68673, + 69697 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 68673, + 69697 + ], + "representative_pr_number": 68673, + "representative_title": "fix: collapse no-progress update_plan churn (AI-assisted)", + "representative_url": "https://github.com/openclaw/openclaw/pull/68673", + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/tool-loop-detection.ts" + ], + "summary": "2 open PRs share weighted file overlap around `src/agents/tool-loop-detection.ts`; representative PR #68673.", + "title": "Scope: fix: collapse no-progress update_plan churn (AI-assisted)" + }, + { + "authors": [ + "Lucenx9", + "mjdacs" + ], + "average_similarity": 0.414, + "cluster_id": "pr-scope-66795-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-19T10:53:48Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.45, + "concentration_similarity": 0.667, + "content_similarity": 0.379, + "left_pr_number": 66795, + "right_pr_number": 68918, + "shared_directories": [ + "extensions/telegram/src", + "extensions/telegram", + "extensions" + ], + "shared_filenames": [ + "extensions/telegram/src/bot.test.ts" + ], + "similarity": 0.414, + "size_similarity": 0.469 + } + ], + "pr_count": 2, + "pr_numbers": [ + 66795, + 68918 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 66795, + 68918 + ], + "representative_pr_number": 66795, + "representative_title": "fix(telegram): honor agent defaults in model picker", + "representative_url": "https://github.com/openclaw/openclaw/pull/66795", + "shared_directories": [ + "extensions/telegram/src", + "extensions/telegram", + "extensions" + ], + "shared_filenames": [ + "extensions/telegram/src/bot.test.ts" + ], + "summary": "2 open PRs share weighted file overlap around `extensions/telegram/src/bot.test.ts`; representative PR #66795.", + "title": "Scope: fix(telegram): honor agent defaults in model picker" + }, + { + "authors": [ + "GaosCode", + "jasonmakr" + ], + "average_similarity": 0.404, + "cluster_id": "pr-scope-68408-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T19:05:18Z", + "last_activity_at": "2026-04-19T01:47:30Z", "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.667, + "breadth_similarity": 0.667, + "concentration_similarity": 0.971, + "content_similarity": 0.229, + "left_pr_number": 68408, + "right_pr_number": 68597, + "shared_directories": [ + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", + "src" + ], + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" + ], + "similarity": 0.404, + "size_similarity": 0.858 + } + ], + "pr_count": 2, + "pr_numbers": [ + 68408, + 68597 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 68408, + 68597 + ], + "representative_pr_number": 68408, + "representative_title": "fix(memory-core): strip dreaming managed blocks from daily memory reads", + "representative_url": "https://github.com/openclaw/openclaw/pull/68408", + "shared_directories": [ + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", + "src" + ], + "shared_filenames": [ + "extensions/memory-core/src/memory/qmd-manager.test.ts", + "extensions/memory-core/src/memory/qmd-manager.ts" + ], + "summary": "2 open PRs share weighted file overlap around `extensions/memory-core/src/memory/qmd-manager.test.ts`, `extensions/memory-core/src/memory/qmd-manager.ts`; representative PR #68408.", + "title": "Scope: fix(memory-core): strip dreaming managed blocks from daily memory reads" + }, + { + "authors": [ + "altierac", + "imadal1n" + ], + "average_similarity": 0.401, + "cluster_id": "pr-scope-67403-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T05:25:07Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.392, + "left_pr_number": 67403, + "right_pr_number": 68639, + "shared_directories": [ + "extensions/memory-wiki/src", + "extensions/memory-wiki", + "extensions" + ], + "shared_filenames": [ + "extensions/memory-wiki/src/query.ts" + ], + "similarity": 0.401, + "size_similarity": 0.006 + } + ], + "pr_count": 2, + "pr_numbers": [ + 67403, + 68639 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 67403, + 68639 + ], + "representative_pr_number": 67403, + "representative_title": "fix(memory-wiki): support token-overlap search for multi-term queries", + "representative_url": "https://github.com/openclaw/openclaw/pull/67403", + "shared_directories": [ + "extensions/memory-wiki/src", + "extensions/memory-wiki", + "extensions" + ], + "shared_filenames": [ + "extensions/memory-wiki/src/query.ts" + ], + "summary": "2 open PRs share weighted file overlap around `extensions/memory-wiki/src/query.ts`; representative PR #67403.", + "title": "Scope: fix(memory-wiki): support token-overlap search for multi-term queries" + }, + { + "authors": [ + "Eruditi", + "JinluZhang" + ], + "average_similarity": 0.401, + "cluster_id": "pr-scope-69716-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T14:54:26Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.938, + "content_similarity": 0.368, + "left_pr_number": 69716, + "right_pr_number": 69734, + "shared_directories": [ + "src/agents/skills", + "src/auto-reply/reply", + "src/agents", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/agents/skills/refresh.ts", + "src/auto-reply/reply/session-updates.ts" + ], + "similarity": 0.401, + "size_similarity": 0.14 + } + ], + "pr_count": 2, + "pr_numbers": [ + 69716, + 69734 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 69716, + 69734 + ], + "representative_pr_number": 69716, + "representative_title": "fix(skills): refresh stale session skill snapshots after restart", + "representative_url": "https://github.com/openclaw/openclaw/pull/69716", + "shared_directories": [ + "src/agents/skills", + "src/auto-reply/reply", + "src/auto-reply", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/skills/refresh.ts", + "src/auto-reply/reply/session-updates.ts" + ], + "summary": "2 open PRs share weighted file overlap around `src/agents/skills/refresh.ts`, `src/auto-reply/reply/session-updates.ts`; representative PR #69716.", + "title": "Scope: fix(skills): refresh stale session skill snapshots after restart" + }, + { + "authors": [ + "BKF-Gitty", + "jalehman" + ], + "average_similarity": 0.397, + "cluster_id": "pr-scope-67833-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T19:19:06Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.389, + "concentration_similarity": 0.899, + "content_similarity": 0.38, + "left_pr_number": 67833, + "right_pr_number": 67846, + "shared_directories": [ + "extensions/memory-core/src", + "extensions/memory-core", + "src/memory-host-sdk", + "extensions", + "src" + ], + "shared_filenames": [ + "extensions/memory-core/src/dreaming.test.ts", + "extensions/memory-core/src/dreaming.ts" + ], + "similarity": 0.397, + "size_similarity": 0.312 + } + ], + "pr_count": 2, + "pr_numbers": [ + 67833, + 67846 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 67833, + 67846 + ], + "representative_pr_number": 67833, + "representative_title": "fix(memory-core): run managed dreaming cron in isolated agent turns", + "representative_url": "https://github.com/openclaw/openclaw/pull/67833", + "shared_directories": [ + "extensions/memory-core/src", + "src/memory-host-sdk", + "extensions/memory-core", + "extensions", + "src" + ], + "shared_filenames": [ + "extensions/memory-core/src/dreaming.test.ts", + "extensions/memory-core/src/dreaming.ts" + ], + "summary": "2 open PRs share weighted file overlap around `extensions/memory-core/src/dreaming.test.ts`, `extensions/memory-core/src/dreaming.ts`; representative PR #67833.", + "title": "Scope: fix(memory-core): run managed dreaming cron in isolated agent turns" + }, + { + "authors": [ + "kesslerio", + "wangshu94" + ], + "average_similarity": 0.382, + "cluster_id": "pr-scope-67692-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T02:25:43Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.996, + "content_similarity": 0.268, + "left_pr_number": 67692, + "right_pr_number": 68843, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/dispatch-acp.test.ts", + "src/auto-reply/reply/dispatch-acp.ts" + ], + "similarity": 0.382, + "size_similarity": 0.407 + } + ], + "pr_count": 2, + "pr_numbers": [ + 67692, + 68843 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 67692, + 68843 + ], + "representative_pr_number": 67692, + "representative_title": "Feat/acp tui lazy init", + "representative_url": "https://github.com/openclaw/openclaw/pull/67692", + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/dispatch-acp.test.ts", + "src/auto-reply/reply/dispatch-acp.ts" + ], + "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/dispatch-acp.test.ts`, `src/auto-reply/reply/dispatch-acp.ts`; representative PR #67692.", + "title": "Scope: Feat/acp tui lazy init" + }, + { + "authors": [ + "pfrederiksen", + "zoneblaze" + ], + "average_similarity": 0.363, + "cluster_id": "pr-scope-67871-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-18T07:53:22Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.119, + "left_pr_number": 67871, + "right_pr_number": 68278, + "shared_directories": [ + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.363, + "size_similarity": 0.868 + } + ], + "pr_count": 2, + "pr_numbers": [ + 67871, + 68278 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 67871, + 68278 + ], + "representative_pr_number": 67871, + "representative_title": "fix(discord): narrow message tool component block schema", + "representative_url": "https://github.com/openclaw/openclaw/pull/67871", + "shared_directories": [ + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "summary": "2 open PRs cluster in `extensions/discord/src`, `extensions/discord`, `extensions` with similar change breadth; representative PR #67871.", + "title": "Scope: fix(discord): narrow message tool component block schema" + }, + { + "authors": [ + "1aifanatic", + "p3nchan" + ], + "average_similarity": 0.358, + "cluster_id": "pr-scope-67782-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-17T22:37:16Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.128, + "left_pr_number": 67782, + "right_pr_number": 68306, + "shared_directories": [ + "extensions/telegram/src", + "extensions/telegram", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.358, + "size_similarity": 0.791 + } + ], + "pr_count": 2, + "pr_numbers": [ + 67782, + 68306 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 67782, + 68306 + ], + "representative_pr_number": 67782, + "representative_title": "fix(telegram): skip delete before non-empty command sync", + "representative_url": "https://github.com/openclaw/openclaw/pull/67782", + "shared_directories": [ + "extensions/telegram/src", + "extensions/telegram", + "extensions" + ], + "shared_filenames": [], + "summary": "2 open PRs cluster in `extensions/telegram/src`, `extensions/telegram`, `extensions` with similar change breadth; representative PR #67782.", + "title": "Scope: fix(telegram): skip delete before non-empty command sync" + }, + { + "authors": [ + "lazyeo", + "neo1027144-creator" + ], + "average_similarity": 0.356, + "cluster_id": "pr-scope-67751-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T10:52:07Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.287, + "left_pr_number": 67751, + "right_pr_number": 69684, + "shared_directories": [ + "extensions/slack/src/monitor/events", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.356, + "size_similarity": 0.034 + } + ], + "pr_count": 2, + "pr_numbers": [ + 67751, + 69684 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 67751, + 69684 + ], + "representative_pr_number": 67751, + "representative_title": "fix(slack): wake agent session on interactive reply button clicks [AI-assisted]", + "representative_url": "https://github.com/openclaw/openclaw/pull/67751", + "shared_directories": [ + "extensions/slack/src/monitor/events", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [], + "summary": "2 open PRs cluster in `extensions/slack/src/monitor/events`, `extensions/slack/src/monitor`, `extensions/slack/src` with similar change breadth; representative PR #67751.", + "title": "Scope: fix(slack): wake agent session on interactive reply button clicks [AI-assisted]" + }, + { + "authors": [ + "Takhoffman", + "acwilan" + ], + "average_similarity": 0.355, + "cluster_id": "pr-scope-67421-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-17T23:51:11Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.762, + "concentration_similarity": 0.822, + "content_similarity": 0.163, + "left_pr_number": 67421, + "right_pr_number": 68331, + "shared_directories": [ + "src/agents", + "src/config", + "src" + ], + "shared_filenames": [ + "src/config/schema.base.generated.ts", + "src/config/schema.help.ts", + "src/config/schema.labels.ts", + "src/config/zod-schema.agent-runtime.ts" + ], + "similarity": 0.355, + "size_similarity": 0.826 + } + ], + "pr_count": 2, + "pr_numbers": [ + 67421, + 68331 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 67421, + 68331 + ], + "representative_pr_number": 67421, + "representative_title": "feat: add per-agent web_fetch ssrf overrides", + "representative_url": "https://github.com/openclaw/openclaw/pull/67421", + "shared_directories": [ + "src/config", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/config/zod-schema.agent-runtime.ts", + "src/config/schema.labels.ts", + "src/config/schema.help.ts", + "src/config/schema.base.generated.ts" + ], + "summary": "2 open PRs share weighted file overlap around `src/config/zod-schema.agent-runtime.ts`, `src/config/schema.labels.ts`, `src/config/schema.help.ts`; representative PR #67421.", + "title": "Scope: feat: add per-agent web_fetch ssrf overrides" + }, + { + "authors": [ + "1aifanatic", + "nightq" + ], + "average_similarity": 0.354, + "cluster_id": "pr-scope-68308-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-18T19:01:59Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.22, + "left_pr_number": 68308, + "right_pr_number": 68469, + "shared_directories": [ + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.354, + "size_similarity": 0.5 + } + ], + "pr_count": 2, + "pr_numbers": [ + 68308, + 68469 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 68308, + 68469 + ], + "representative_pr_number": 68308, + "representative_title": "fix(browser): return undefined ssrfPolicy when browser.ssrfPolicy is unset", + "representative_url": "https://github.com/openclaw/openclaw/pull/68308", + "shared_directories": [ + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", + "extensions" + ], + "shared_filenames": [], + "summary": "2 open PRs cluster in `extensions/browser/src/browser`, `extensions/browser/src`, `extensions/browser` with similar change breadth; representative PR #68308.", + "title": "Scope: fix(browser): return undefined ssrfPolicy when browser.ssrfPolicy is unset" + }, + { + "authors": [ + "aalekh-sarvam", + "oliviareid-svg" + ], + "average_similarity": 0.347, + "cluster_id": "pr-scope-66931-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T12:54:51Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.186, + "left_pr_number": 66931, + "right_pr_number": 69680, + "shared_directories": [ + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.347, + "size_similarity": 0.444 + } + ], + "pr_count": 2, + "pr_numbers": [ + 66931, + 69680 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 66931, + 69680 + ], + "representative_pr_number": 66931, + "representative_title": "fix(memory): respect user batch.concurrency even when batch mode is disabled", + "representative_url": "https://github.com/openclaw/openclaw/pull/66931", + "shared_directories": [ + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" + ], + "shared_filenames": [], + "summary": "2 open PRs cluster in `extensions/memory-core/src/memory`, `extensions/memory-core/src`, `extensions/memory-core` with similar change breadth; representative PR #66931.", + "title": "Scope: fix(memory): respect user batch.concurrency even when batch mode is disabled" + }, + { + "authors": [ + "insomnius", + "yuaiccc" + ], + "average_similarity": 0.344, + "cluster_id": "pr-scope-67650-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T08:58:55Z", + "outside_window_prs": [], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.095, + "left_pr_number": 67650, + "right_pr_number": 69643, + "shared_directories": [ + "docs/channels", + "docs" + ], + "shared_filenames": [], + "similarity": 0.344, + "size_similarity": 0.85 + } + ], + "pr_count": 2, + "pr_numbers": [ + 67650, + 69643 + ], + "recent_pr_count": 2, + "recent_pr_numbers": [ + 67650, + 69643 + ], + "representative_pr_number": 67650, + "representative_title": "doc: add assistant_view in features", + "representative_url": "https://github.com/openclaw/openclaw/pull/67650", + "shared_directories": [ + "docs/channels", + "docs" + ], + "shared_filenames": [], + "summary": "2 open PRs cluster in `docs/channels`, `docs` with similar change breadth; representative PR #67650.", + "title": "Scope: doc: add assistant_view in features" + }, + { + "authors": [ + "Noor-ul-ain001" + ], + "average_similarity": 0.546, + "cluster_id": "pr-scope-35887-7", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T13:56:59Z", + "outside_window_prs": [ + { + "additions": 11, + "author": "zhangxue1985122219", + "changed_files": 1, + "created_at": "2026-03-05T10:01:41Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/35887/files", + "html_url": "https://github.com/openclaw/openclaw/pull/35887", + "merged": false, + "number": 35887, + "state": "open", + "title": "docs: improve installation and development instructions", + "updated_at": "2026-04-17T04:31:17Z" + }, + { + "additions": 4, + "author": "mattqdev", + "changed_files": 1, + "created_at": "2026-03-06T23:34:57Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38400/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38400", + "merged": false, + "number": 38400, + "state": "open", + "title": "docs: added tech stack to the README", + "updated_at": "2026-04-21T04:31:33Z" + }, + { + "additions": 6, + "author": "jacksonbgraham", + "changed_files": 1, + "created_at": "2026-03-07T00:07:51Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38415/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38415", + "merged": false, + "number": 38415, + "state": "open", + "title": "docs: add third-party package marketplaces section to README", + "updated_at": "2026-04-21T04:31:47Z" + }, + { + "additions": 1, + "author": "behnam354", + "changed_files": 1, + "created_at": "2026-04-05T00:07:14Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/61091/files", + "html_url": "https://github.com/openclaw/openclaw/pull/61091", + "merged": false, + "number": 61091, + "state": "open", + "title": "Docs: use --target in README message send example (instead of outdated --to argument)", + "updated_at": "2026-04-17T06:16:17Z" + }, + { + "additions": 23, + "author": "hongzexin", + "changed_files": 1, + "created_at": "2026-04-10T12:50:17Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64307/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64307", + "merged": false, + "number": 64307, + "state": "open", + "title": "README: add Feishu quick-start section", + "updated_at": "2026-04-10T14:00:04Z" + }, + { + "additions": 1, + "author": "soumikbhatta", + "changed_files": 1, + "created_at": "2026-04-12T15:58:54Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65439/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65439", + "merged": false, + "number": 65439, + "state": "open", + "title": "Add avatar link for soumikbhatta to README", + "updated_at": "2026-04-12T16:00:23Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.997, + "left_pr_number": 38400, + "right_pr_number": 61091, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.923, + "size_similarity": 0.5 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.814, + "left_pr_number": 35887, + "right_pr_number": 38400, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.751, + "size_similarity": 0.211 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.801, + "left_pr_number": 35887, + "right_pr_number": 61091, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.726, + "size_similarity": 0.105 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.759, + "left_pr_number": 35887, + "right_pr_number": 69644, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.686, + "size_similarity": 0.029 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.701, + "left_pr_number": 38415, + "right_pr_number": 69644, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.642, + "size_similarity": 0.009 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.682, + "left_pr_number": 38400, + "right_pr_number": 69644, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.628, + "size_similarity": 0.006 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.639, + "left_pr_number": 61091, + "right_pr_number": 69644, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.598, + "size_similarity": 0.003 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.602, + "left_pr_number": 64307, + "right_pr_number": 69644, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.577, + "size_similarity": 0.035 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.403, + "left_pr_number": 35887, + "right_pr_number": 64307, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.556, + "size_similarity": 0.826 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.372, + "left_pr_number": 38400, + "right_pr_number": 38415, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.511, + "size_similarity": 0.667 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.284, + "left_pr_number": 61091, + "right_pr_number": 65439, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.499, + "size_similarity": 1.0 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.415, + "left_pr_number": 38415, + "right_pr_number": 64307, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.48, + "size_similarity": 0.261 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.409, + "left_pr_number": 38400, + "right_pr_number": 64307, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.462, + "size_similarity": 0.174 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.367, + "left_pr_number": 35887, + "right_pr_number": 38415, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.454, + "size_similarity": 0.316 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.429, + "left_pr_number": 65439, + "right_pr_number": 69644, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.451, + "size_similarity": 0.003 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.318, + "left_pr_number": 38400, + "right_pr_number": 65439, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.448, + "size_similarity": 0.5 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.332, + "left_pr_number": 38415, + "right_pr_number": 61091, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.433, + "size_similarity": 0.333 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.323, + "left_pr_number": 38415, + "right_pr_number": 65439, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.426, + "size_similarity": 0.333 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.365, + "left_pr_number": 61091, + "right_pr_number": 64307, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.419, + "size_similarity": 0.087 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.355, + "left_pr_number": 64307, + "right_pr_number": 65439, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.411, + "size_similarity": 0.087 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.313, + "left_pr_number": 35887, + "right_pr_number": 65439, + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "similarity": 0.385, + "size_similarity": 0.105 + } + ], + "pr_count": 7, + "pr_numbers": [ + 35887, + 38400, + 38415, + 61091, + 64307, + 65439, + 69644 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 69644 + ], + "representative_pr_number": 38400, + "representative_title": "docs: added tech stack to the README", + "representative_url": "https://github.com/openclaw/openclaw/pull/38400", + "shared_directories": [], + "shared_filenames": [ + "README.md" + ], + "summary": "7 open PRs share weighted file overlap around `README.md`; representative PR #38400.", + "title": "Scope: docs: added tech stack to the README" + }, + { + "authors": [ + "ericyoshida" + ], + "average_similarity": 0.462, + "cluster_id": "pr-scope-53369-7", + "kind": "pr_scope", + "last_activity_at": "2026-04-16T22:33:48Z", + "outside_window_prs": [ + { + "additions": 298, + "author": "joe2643", + "changed_files": 5, + "created_at": "2026-03-24T03:51:24Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53369/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53369", + "merged": false, + "number": 53369, + "state": "open", + "title": "feat(whatsapp): support native @mentions in outbound group replies", + "updated_at": "2026-03-24T20:15:31Z" + }, + { + "additions": 70, + "author": "joe2643", + "changed_files": 4, + "created_at": "2026-03-24T18:05:58Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53867/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53867", + "merged": false, + "number": 53867, + "state": "open", + "title": "fix(whatsapp): reply-to-bot detection with WhatsApp LID identifiers", + "updated_at": "2026-03-24T20:15:28Z" + }, + { + "additions": 519, + "author": "joe2643", + "changed_files": 14, + "created_at": "2026-03-24T18:17:29Z", + "deletions": 24, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53874/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53874", + "merged": false, + "number": 53874, + "state": "open", + "title": "feat(whatsapp): outbound @mentions, reply media injection, and LID reply-to-bot E164 fix", + "updated_at": "2026-03-24T20:15:28Z" + }, + { + "additions": 268, + "author": "AytuncYildizli", + "changed_files": 2, + "created_at": "2026-03-24T22:38:42Z", + "deletions": 16, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/54038/files", + "html_url": "https://github.com/openclaw/openclaw/pull/54038", + "merged": false, + "number": 54038, + "state": "open", + "title": "fix(whatsapp): pre-transcribe inbound voice notes before bootstrap", + "updated_at": "2026-03-24T22:42:34Z" + }, + { + "additions": 227, + "author": "nxmxbbd", + "changed_files": 4, + "created_at": "2026-04-13T06:41:59Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65759/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65759", + "merged": false, + "number": 65759, + "state": "open", + "title": "fix(whatsapp): add application-level health probe to inbound monitor", + "updated_at": "2026-04-18T07:31:24Z" + }, + { + "additions": 8, + "author": "stanleeyY", + "changed_files": 1, + "created_at": "2026-04-13T16:40:17Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66061/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66061", + "merged": false, + "number": 66061, + "state": "open", + "title": "fix(whatsapp): narrow inbound dedupe keys", + "updated_at": "2026-04-13T16:42:16Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.345, + "concentration_similarity": 0.777, + "content_similarity": 0.759, + "left_pr_number": 53369, + "right_pr_number": 53874, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "src/auto-reply/reply", + "extensions/whatsapp", + "src/auto-reply", + "extensions", + "src" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts", + "extensions/whatsapp/src/inbound/outbound-mentions.test.ts", + "extensions/whatsapp/src/inbound/outbound-mentions.ts", + "extensions/whatsapp/src/inbound/send-api.ts", + "src/auto-reply/reply/groups.ts" + ], + "similarity": 0.689, + "size_similarity": 0.56 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.69, + "content_similarity": 0.594, + "left_pr_number": 54038, + "right_pr_number": 67842, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.598, + "size_similarity": 0.655 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.9, + "content_similarity": 0.477, + "left_pr_number": 65759, + "right_pr_number": 67842, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.577, + "size_similarity": 0.819 + }, + { + "breadth_similarity": 0.65, + "concentration_similarity": 0.907, + "content_similarity": 0.458, + "left_pr_number": 53369, + "right_pr_number": 67842, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "src/auto-reply/reply", + "extensions/whatsapp", + "src/auto-reply", + "extensions", + "src" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.522, + "size_similarity": 0.612 + }, + { + "breadth_similarity": 0.7, + "concentration_similarity": 0.597, + "content_similarity": 0.37, + "left_pr_number": 53369, + "right_pr_number": 54038, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.499, + "size_similarity": 0.934 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.998, + "content_similarity": 0.441, + "left_pr_number": 53867, + "right_pr_number": 67842, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.496, + "size_similarity": 0.419 + }, + { + "breadth_similarity": 0.25, + "concentration_similarity": 0.887, + "content_similarity": 0.598, + "left_pr_number": 66061, + "right_pr_number": 67842, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.495, + "size_similarity": 0.048 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.591, + "content_similarity": 0.385, + "left_pr_number": 54038, + "right_pr_number": 65759, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.494, + "size_similarity": 0.799 + }, + { + "breadth_similarity": 0.9, + "concentration_similarity": 0.993, + "content_similarity": 0.336, + "left_pr_number": 53369, + "right_pr_number": 65759, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.487, + "size_similarity": 0.747 + }, + { + "breadth_similarity": 0.375, + "concentration_similarity": 0.885, + "content_similarity": 0.532, + "left_pr_number": 53867, + "right_pr_number": 66061, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.471, + "size_similarity": 0.115 + }, + { + "breadth_similarity": 0.476, + "concentration_similarity": 0.87, + "content_similarity": 0.45, + "left_pr_number": 53874, + "right_pr_number": 67842, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "src/auto-reply/reply", + "extensions/whatsapp", + "src/auto-reply", + "extensions", + "src" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.457, + "size_similarity": 0.343 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 0.898, + "content_similarity": 0.341, + "left_pr_number": 53867, + "right_pr_number": 65759, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.435, + "size_similarity": 0.344 + }, + { + "breadth_similarity": 0.35, + "concentration_similarity": 0.98, + "content_similarity": 0.486, + "left_pr_number": 53369, + "right_pr_number": 66061, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.429, + "size_similarity": 0.03 + }, + { + "breadth_similarity": 0.375, + "concentration_similarity": 0.987, + "content_similarity": 0.468, + "left_pr_number": 65759, + "right_pr_number": 66061, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.42, + "size_similarity": 0.04 + }, + { + "breadth_similarity": 0.9, + "concentration_similarity": 0.904, + "content_similarity": 0.338, + "left_pr_number": 53369, + "right_pr_number": 53867, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.411, + "size_similarity": 0.257 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.577, + "content_similarity": 0.466, + "left_pr_number": 54038, + "right_pr_number": 66061, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.409, + "size_similarity": 0.032 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.693, + "content_similarity": 0.364, + "left_pr_number": 53867, + "right_pr_number": 54038, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.405, + "size_similarity": 0.275 + }, + { + "breadth_similarity": 0.238, + "concentration_similarity": 0.821, + "content_similarity": 0.348, + "left_pr_number": 53874, + "right_pr_number": 54038, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.387, + "size_similarity": 0.523 + }, + { + "breadth_similarity": 0.31, + "concentration_similarity": 0.872, + "content_similarity": 0.368, + "left_pr_number": 53867, + "right_pr_number": 53874, + "shared_directories": [ + "extensions/whatsapp/src/auto-reply/monitor", + "extensions/whatsapp/src/auto-reply", + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/extract.ts", + "extensions/whatsapp/src/inbound/monitor.ts", + "extensions/whatsapp/src/inbound/types.ts" + ], + "similarity": 0.354, + "size_similarity": 0.144 + }, + { + "breadth_similarity": 0.31, + "concentration_similarity": 0.77, + "content_similarity": 0.302, + "left_pr_number": 53874, + "right_pr_number": 65759, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.343, + "size_similarity": 0.418 + }, + { + "breadth_similarity": 0.119, + "concentration_similarity": 0.757, + "content_similarity": 0.399, + "left_pr_number": 53874, + "right_pr_number": 66061, + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts" + ], + "similarity": 0.332, + "size_similarity": 0.017 + } + ], + "pr_count": 7, + "pr_numbers": [ + 53369, + 53867, + 53874, + 54038, + 65759, + 66061, + 67842 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 67842 + ], + "representative_pr_number": 67842, + "representative_title": "Fix/message tool description user facing", + "representative_url": "https://github.com/openclaw/openclaw/pull/67842", + "shared_directories": [ + "extensions/whatsapp/src/inbound", + "extensions/whatsapp/src", + "extensions/whatsapp", + "extensions", + "src/auto-reply/reply", + "src/auto-reply", + "src", + "extensions/whatsapp/src/auto-reply/monitor" + ], + "shared_filenames": [ + "extensions/whatsapp/src/inbound/monitor.ts", + "extensions/whatsapp/src/inbound/outbound-mentions.test.ts", + "extensions/whatsapp/src/inbound/outbound-mentions.ts", + "src/auto-reply/reply/groups.ts", + "extensions/whatsapp/src/inbound/extract.ts", + "extensions/whatsapp/src/inbound/send-api.ts", + "extensions/whatsapp/src/inbound/types.ts" + ], + "summary": "7 open PRs share weighted file overlap around `extensions/whatsapp/src/inbound/monitor.ts`, `extensions/whatsapp/src/inbound/outbound-mentions.test.ts`, `extensions/whatsapp/src/inbound/outbound-mentions.ts`; representative PR #67842.", + "title": "Scope: Fix/message tool description user facing" + }, + { + "authors": [ + "zoneblaze" + ], + "average_similarity": 0.45, + "cluster_id": "pr-scope-38328-7", + "kind": "pr_scope", + "last_activity_at": "2026-04-18T17:57:29Z", + "outside_window_prs": [ + { + "additions": 18, + "author": "anshkohli88", + "changed_files": 3, + "created_at": "2026-03-06T20:37:15Z", + "deletions": 17, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38328/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38328", + "merged": false, + "number": 38328, + "state": "open", + "title": "fix(android): Enable screen recording on Android 14+", + "updated_at": "2026-04-21T04:30:46Z" + }, + { + "additions": 209, + "author": "MuRongPIG", + "changed_files": 4, + "created_at": "2026-03-07T03:19:27Z", + "deletions": 64, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38526/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38526", + "merged": false, + "number": 38526, + "state": "open", + "title": "android: align MediaProjection recording with service and capture lifecycle", + "updated_at": "2026-04-21T04:33:02Z" + }, + { + "additions": 36, + "author": "lixuankai", + "changed_files": 2, + "created_at": "2026-03-24T14:55:52Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53752/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53752", + "merged": false, + "number": 53752, + "state": "open", + "title": "feat(android): Multiple nodes session context isolated from each other", + "updated_at": "2026-03-24T20:15:29Z" + }, + { + "additions": 39, + "author": "MayankSharma-ops", + "changed_files": 2, + "created_at": "2026-04-10T18:02:08Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64440/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64440", + "merged": false, + "number": 64440, + "state": "open", + "title": "fix(android): normalize IPv6 host input in manual gateway URLs", + "updated_at": "2026-04-10T18:04:24Z" + }, + { + "additions": 110, + "author": "IshanDaga", + "changed_files": 8, + "created_at": "2026-04-13T19:01:38Z", + "deletions": 17, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66123/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66123", + "merged": false, + "number": 66123, + "state": "open", + "title": "fix(android): preserve websocket transport and reduce pairing churn", + "updated_at": "2026-04-13T19:55:00Z" + }, + { + "additions": 102, + "author": "alex-latitude", + "changed_files": 5, + "created_at": "2026-04-13T22:11:34Z", + "deletions": 8, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66179/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66179", + "merged": false, + "number": 66179, + "state": "open", + "title": "Android: expose Talk Mode in UI + foreground microphone permission", + "updated_at": "2026-04-14T01:25:34Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.875, + "concentration_similarity": 0.863, + "content_similarity": 0.729, + "left_pr_number": 38328, + "right_pr_number": 38526, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw/android/node", + "apps/android/app/src/main/java/ai/openclaw/android", + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [ + "apps/android/app/src/main/java/ai/openclaw/android/NodeForegroundService.kt", + "apps/android/app/src/main/java/ai/openclaw/android/node/ScreenRecordManager.kt" + ], + "similarity": 0.66, + "size_similarity": 0.128 + }, + { + "breadth_similarity": 0.375, + "concentration_similarity": 0.755, + "content_similarity": 0.724, + "left_pr_number": 64440, + "right_pr_number": 66123, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw/app/ui", + "apps/android/app/src/test/java/ai/openclaw/app/ui", + "apps/android/app/src/main/java/ai/openclaw/app", + "apps/android/app/src/test/java/ai/openclaw/app", + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/test/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/test/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/test/java" + ], + "shared_filenames": [ + "apps/android/app/src/main/java/ai/openclaw/app/ui/GatewayConfigResolver.kt", + "apps/android/app/src/test/java/ai/openclaw/app/ui/GatewayConfigResolverTest.kt" + ], + "similarity": 0.629, + "size_similarity": 0.315 + }, + { + "breadth_similarity": 0.533, + "concentration_similarity": 0.632, + "content_similarity": 0.587, + "left_pr_number": 53752, + "right_pr_number": 66179, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw/app", + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [ + "apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt" + ], + "similarity": 0.556, + "size_similarity": 0.4 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.823, + "content_similarity": 0.432, + "left_pr_number": 38328, + "right_pr_number": 53752, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.546, + "size_similarity": 0.795 + }, + { + "breadth_similarity": 0.688, + "concentration_similarity": 0.871, + "content_similarity": 0.396, + "left_pr_number": 66123, + "right_pr_number": 66179, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw/app/ui", + "apps/android/app/src/main/java/ai/openclaw/app", + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.519, + "size_similarity": 0.866 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 0.748, + "content_similarity": 0.34, + "left_pr_number": 53752, + "right_pr_number": 64440, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw/app", + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.511, + "size_similarity": 0.909 + }, + { + "breadth_similarity": 0.733, + "concentration_similarity": 0.946, + "content_similarity": 0.445, + "left_pr_number": 38526, + "right_pr_number": 66179, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.493, + "size_similarity": 0.403 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.925, + "content_similarity": 0.311, + "left_pr_number": 38328, + "right_pr_number": 64440, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.479, + "size_similarity": 0.875 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.977, + "content_similarity": 0.495, + "left_pr_number": 53752, + "right_pr_number": 68276, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw/app/chat", + "apps/android/app/src/main/java/ai/openclaw/app", + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [ + "apps/android/app/src/main/java/ai/openclaw/app/chat/ChatController.kt" + ], + "similarity": 0.479, + "size_similarity": 0.227 + }, + { + "breadth_similarity": 0.633, + "concentration_similarity": 0.809, + "content_similarity": 0.436, + "left_pr_number": 38328, + "right_pr_number": 66179, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.457, + "size_similarity": 0.318 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.686, + "content_similarity": 0.441, + "left_pr_number": 38526, + "right_pr_number": 53752, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.442, + "size_similarity": 0.161 + }, + { + "breadth_similarity": 0.533, + "concentration_similarity": 0.884, + "content_similarity": 0.365, + "left_pr_number": 64440, + "right_pr_number": 66179, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw/app/ui", + "apps/android/app/src/main/java/ai/openclaw/app", + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.408, + "size_similarity": 0.364 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.8, + "content_similarity": 0.399, + "left_pr_number": 38328, + "right_pr_number": 68276, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.404, + "size_similarity": 0.286 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.817, + "content_similarity": 0.336, + "left_pr_number": 38526, + "right_pr_number": 66123, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.396, + "size_similarity": 0.465 + }, + { + "breadth_similarity": 0.267, + "concentration_similarity": 0.609, + "content_similarity": 0.457, + "left_pr_number": 66179, + "right_pr_number": 68276, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw/app", + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.39, + "size_similarity": 0.091 + }, + { + "breadth_similarity": 0.375, + "concentration_similarity": 0.503, + "content_similarity": 0.365, + "left_pr_number": 53752, + "right_pr_number": 66123, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw/app", + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.37, + "size_similarity": 0.346 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.938, + "content_similarity": 0.318, + "left_pr_number": 38526, + "right_pr_number": 64440, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.366, + "size_similarity": 0.147 + }, + { + "breadth_similarity": 0.375, + "concentration_similarity": 0.663, + "content_similarity": 0.407, + "left_pr_number": 38526, + "right_pr_number": 68276, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.361, + "size_similarity": 0.037 + }, + { + "breadth_similarity": 0.438, + "concentration_similarity": 0.68, + "content_similarity": 0.329, + "left_pr_number": 38328, + "right_pr_number": 66123, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.349, + "size_similarity": 0.276 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.725, + "content_similarity": 0.314, + "left_pr_number": 64440, + "right_pr_number": 68276, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw/app", + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.344, + "size_similarity": 0.25 + }, + { + "breadth_similarity": 0.188, + "concentration_similarity": 0.48, + "content_similarity": 0.337, + "left_pr_number": 66123, + "right_pr_number": 68276, + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw/app", + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [], + "similarity": 0.291, + "size_similarity": 0.079 + } + ], + "pr_count": 7, + "pr_numbers": [ + 38328, + 38526, + 53752, + 64440, + 66123, + 66179, + 68276 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 68276 + ], + "representative_pr_number": 53752, + "representative_title": "feat(android): Multiple nodes session context isolated from each other", + "representative_url": "https://github.com/openclaw/openclaw/pull/53752", + "shared_directories": [ + "apps/android/app/src/main/java/ai/openclaw", + "apps/android/app/src/main/java/ai", + "apps/android/app/src/main/java", + "apps/android/app/src/main", + "apps/android/app/src", + "apps/android/app", + "apps/android", + "apps" + ], + "shared_filenames": [ + "apps/android/app/src/main/java/ai/openclaw/android/NodeForegroundService.kt", + "apps/android/app/src/main/java/ai/openclaw/android/node/ScreenRecordManager.kt", + "apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt", + "apps/android/app/src/main/java/ai/openclaw/app/chat/ChatController.kt", + "apps/android/app/src/main/java/ai/openclaw/app/ui/GatewayConfigResolver.kt", + "apps/android/app/src/test/java/ai/openclaw/app/ui/GatewayConfigResolverTest.kt" + ], + "summary": "7 open PRs share weighted file overlap around `apps/android/app/src/main/java/ai/openclaw/android/NodeForegroundService.kt`, `apps/android/app/src/main/java/ai/openclaw/android/node/ScreenRecordManager.kt`, `apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt`; representative PR #53752.", + "title": "Scope: feat(android): Multiple nodes session context isolated from each other" + }, + { + "authors": [ + "danicuki" + ], + "average_similarity": 0.439, + "cluster_id": "pr-scope-49145-6", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T20:49:32Z", + "outside_window_prs": [ + { + "additions": 229, + "author": "ebeuvaliers", + "changed_files": 8, + "created_at": "2026-03-17T16:48:40Z", + "deletions": 15, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/49145/files", + "html_url": "https://github.com/openclaw/openclaw/pull/49145", + "merged": false, + "number": 49145, + "state": "open", + "title": "feat(signal): reliable reply context, reaction wake, and quoted replies (v2)", + "updated_at": "2026-04-19T07:48:20Z" + }, + { + "additions": 16, + "author": "svv2014", + "changed_files": 3, + "created_at": "2026-03-29T04:14:49Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/56791/files", + "html_url": "https://github.com/openclaw/openclaw/pull/56791", + "merged": false, + "number": 56791, + "state": "open", + "title": "fix(signal): forward quote metadata to agent context", + "updated_at": "2026-04-18T13:55:16Z" + }, + { + "additions": 539, + "author": "pritchie", + "changed_files": 6, + "created_at": "2026-03-30T15:59:52Z", + "deletions": 22, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/57806/files", + "html_url": "https://github.com/openclaw/openclaw/pull/57806", + "merged": false, + "number": 57806, + "state": "open", + "title": "Signal quote reply", + "updated_at": "2026-04-18T17:29:22Z" + }, + { + "additions": 9, + "author": "defonota3box", + "changed_files": 1, + "created_at": "2026-04-13T22:55:21Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66198/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66198", + "merged": false, + "number": 66198, + "state": "open", + "title": "security: wrap Signal inbound DM body via wrapExternalContent", + "updated_at": "2026-04-13T23:05:49Z" + }, + { + "additions": 13, + "author": "liuchuanjie", + "changed_files": 1, + "created_at": "2026-04-14T11:48:46Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66521/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66521", + "merged": false, + "number": 66521, + "state": "open", + "title": "fix(signal): send early typing indicator before dispatch", + "updated_at": "2026-04-14T11:51:42Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.642, + "left_pr_number": 66198, + "right_pr_number": 66521, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts" + ], + "similarity": 0.75, + "size_similarity": 1.0 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.613, + "left_pr_number": 56791, + "right_pr_number": 66198, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts" + ], + "similarity": 0.654, + "size_similarity": 0.722 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.593, + "left_pr_number": 56791, + "right_pr_number": 66521, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts" + ], + "similarity": 0.64, + "size_similarity": 0.722 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.932, + "content_similarity": 0.463, + "left_pr_number": 56791, + "right_pr_number": 57806, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts", + "extensions/signal/src/monitor/event-handler.types.ts", + "extensions/signal/src/monitor/inbound-context.ts" + ], + "similarity": 0.417, + "size_similarity": 0.032 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.412, + "left_pr_number": 66198, + "right_pr_number": 69413, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts" + ], + "similarity": 0.414, + "size_similarity": 0.063 + }, + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.406, + "left_pr_number": 66521, + "right_pr_number": 69413, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts" + ], + "similarity": 0.41, + "size_similarity": 0.063 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.912, + "content_similarity": 0.295, + "left_pr_number": 49145, + "right_pr_number": 57806, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions", + "src" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts", + "extensions/signal/src/monitor/event-handler.types.ts" + ], + "similarity": 0.392, + "size_similarity": 0.435 + }, + { + "breadth_similarity": 0.312, + "concentration_similarity": 0.844, + "content_similarity": 0.264, + "left_pr_number": 49145, + "right_pr_number": 69413, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts" + ], + "similarity": 0.386, + "size_similarity": 0.848 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.301, + "left_pr_number": 56791, + "right_pr_number": 69413, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts" + ], + "similarity": 0.374, + "size_similarity": 0.087 + }, + { + "breadth_similarity": 0.25, + "concentration_similarity": 0.932, + "content_similarity": 0.418, + "left_pr_number": 57806, + "right_pr_number": 66198, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts" + ], + "similarity": 0.367, + "size_similarity": 0.023 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.932, + "content_similarity": 0.318, + "left_pr_number": 57806, + "right_pr_number": 69413, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts" + ], + "similarity": 0.367, + "size_similarity": 0.369 + }, + { + "breadth_similarity": 0.188, + "concentration_similarity": 0.844, + "content_similarity": 0.414, + "left_pr_number": 49145, + "right_pr_number": 66198, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts" + ], + "similarity": 0.359, + "size_similarity": 0.053 + }, + { + "breadth_similarity": 0.312, + "concentration_similarity": 0.844, + "content_similarity": 0.385, + "left_pr_number": 49145, + "right_pr_number": 56791, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts", + "extensions/signal/src/monitor/event-handler.types.ts" + ], + "similarity": 0.354, + "size_similarity": 0.074 + }, + { + "breadth_similarity": 0.188, + "concentration_similarity": 0.844, + "content_similarity": 0.407, + "left_pr_number": 49145, + "right_pr_number": 66521, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts" + ], + "similarity": 0.354, + "size_similarity": 0.053 + }, + { + "breadth_similarity": 0.25, + "concentration_similarity": 0.932, + "content_similarity": 0.396, + "left_pr_number": 57806, + "right_pr_number": 66521, + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts" + ], + "similarity": 0.352, + "size_similarity": 0.023 + } + ], + "pr_count": 6, + "pr_numbers": [ + 49145, + 56791, + 57806, + 66198, + 66521, + 69413 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 69413 + ], + "representative_pr_number": 66198, + "representative_title": "security: wrap Signal inbound DM body via wrapExternalContent", + "representative_url": "https://github.com/openclaw/openclaw/pull/66198", + "shared_directories": [ + "extensions/signal/src/monitor", + "extensions/signal/src", + "extensions/signal", + "extensions", + "src" + ], + "shared_filenames": [ + "extensions/signal/src/monitor/event-handler.ts", + "extensions/signal/src/monitor/event-handler.types.ts", + "extensions/signal/src/monitor/inbound-context.ts" + ], + "summary": "6 open PRs share weighted file overlap around `extensions/signal/src/monitor/event-handler.ts`, `extensions/signal/src/monitor/event-handler.types.ts`, `extensions/signal/src/monitor/inbound-context.ts`; representative PR #66198.", + "title": "Scope: security: wrap Signal inbound DM body via wrapExternalContent" + }, + { + "authors": [ + "nir-insuretax" + ], + "average_similarity": 0.419, + "cluster_id": "pr-scope-63840-6", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T12:55:19Z", + "outside_window_prs": [ + { + "additions": 61, + "author": "zozo123", + "changed_files": 3, + "created_at": "2026-04-09T16:30:50Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/63840/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63840", + "merged": false, + "number": 63840, + "state": "open", + "title": "fix(slack): preserve thread context for Agents & Assistants DM root messages", + "updated_at": "2026-04-12T08:04:11Z" + }, + { + "additions": 19, + "author": "mjamiv", + "changed_files": 3, + "created_at": "2026-04-10T02:14:14Z", + "deletions": 9, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64022/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64022", + "merged": false, + "number": 64022, + "state": "open", + "title": "fix(slack): strip SSRF dispatcher from media fetch to prevent undici version conflict", + "updated_at": "2026-04-13T23:16:25Z" + }, + { + "additions": 52, + "author": "Angfr95", + "changed_files": 2, + "created_at": "2026-04-14T04:39:29Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66342/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66342", + "merged": false, + "number": 66342, + "state": "open", + "title": "fix(slack): stop provider gracefully on auth errors instead of crashing gateway", + "updated_at": "2026-04-14T11:52:21Z" + }, + { + "additions": 53, + "author": "Angfr95", + "changed_files": 3, + "created_at": "2026-04-14T07:08:55Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66395/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66395", + "merged": false, + "number": 66395, + "state": "open", + "title": "Fix/disable refresh during active turn", + "updated_at": "2026-04-14T07:13:44Z" + }, + { + "additions": 94, + "author": "Angfr95", + "changed_files": 5, + "created_at": "2026-04-14T07:56:51Z", + "deletions": 11, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66413/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66413", + "merged": false, + "number": 66413, + "state": "open", + "title": "fix(secrets): extract last non-empty stdout line for single-value exec secret refs", + "updated_at": "2026-04-14T11:52:45Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.967, + "content_similarity": 0.983, + "left_pr_number": 66342, + "right_pr_number": 66395, + "shared_directories": [ + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [ + "extensions/slack/src/monitor/provider.gateway-crash.test.ts", + "extensions/slack/src/monitor/provider.ts" + ], + "similarity": 0.94, + "size_similarity": 0.967 + }, + { + "breadth_similarity": 0.633, + "concentration_similarity": 0.586, + "content_similarity": 0.765, + "left_pr_number": 66395, + "right_pr_number": 66413, + "shared_directories": [ + "extensions/slack/src/monitor", + "extensions/slack/src", + "ui/src/ui", + "extensions/slack", + "ui/src", + "extensions", + "ui" + ], + "shared_filenames": [ + "extensions/slack/src/monitor/provider.gateway-crash.test.ts", + "extensions/slack/src/monitor/provider.ts", + "ui/src/ui/app-render.helpers.ts" + ], + "similarity": 0.714, + "size_similarity": 0.571 + }, + { + "breadth_similarity": 0.367, + "concentration_similarity": 0.552, + "content_similarity": 0.751, + "left_pr_number": 66342, + "right_pr_number": 66413, + "shared_directories": [ + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [ + "extensions/slack/src/monitor/provider.gateway-crash.test.ts", + "extensions/slack/src/monitor/provider.ts" + ], + "similarity": 0.673, + "size_similarity": 0.552 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 0.975, + "content_similarity": 0.233, + "left_pr_number": 66395, + "right_pr_number": 67672, + "shared_directories": [ + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [ + "extensions/slack/src/monitor/provider.ts" + ], + "similarity": 0.397, + "size_similarity": 0.567 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 0.845, + "content_similarity": 0.185, + "left_pr_number": 64022, + "right_pr_number": 67672, + "shared_directories": [ + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.395, + "size_similarity": 0.824 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 0.998, + "content_similarity": 0.141, + "left_pr_number": 63840, + "right_pr_number": 66395, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.389, + "size_similarity": 0.938 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.941, + "content_similarity": 0.238, + "left_pr_number": 66342, + "right_pr_number": 67672, + "shared_directories": [ + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [ + "extensions/slack/src/monitor/provider.ts" + ], + "similarity": 0.36, + "size_similarity": 0.586 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 0.819, + "content_similarity": 0.211, + "left_pr_number": 64022, + "right_pr_number": 66395, + "shared_directories": [ + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.358, + "size_similarity": 0.467 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.969, + "content_similarity": 0.143, + "left_pr_number": 63840, + "right_pr_number": 66342, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.343, + "size_similarity": 0.906 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.786, + "content_similarity": 0.214, + "left_pr_number": 64022, + "right_pr_number": 66342, + "shared_directories": [ + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.32, + "size_similarity": 0.483 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 0.972, + "content_similarity": 0.125, + "left_pr_number": 63840, + "right_pr_number": 67672, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.316, + "size_similarity": 0.531 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 0.817, + "content_similarity": 0.129, + "left_pr_number": 63840, + "right_pr_number": 64022, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.297, + "size_similarity": 0.438 + }, + { + "breadth_similarity": 0.633, + "concentration_similarity": 0.611, + "content_similarity": 0.178, + "left_pr_number": 66413, + "right_pr_number": 67672, + "shared_directories": [ + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [ + "extensions/slack/src/monitor/provider.ts" + ], + "similarity": 0.267, + "size_similarity": 0.324 + }, + { + "breadth_similarity": 0.633, + "concentration_similarity": 0.584, + "content_similarity": 0.108, + "left_pr_number": 63840, + "right_pr_number": 66413, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions", + "src" + ], + "shared_filenames": [], + "similarity": 0.26, + "size_similarity": 0.61 + }, + { + "breadth_similarity": 0.633, + "concentration_similarity": 0.767, + "content_similarity": 0.161, + "left_pr_number": 64022, + "right_pr_number": 66413, + "shared_directories": [ + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.254, + "size_similarity": 0.267 + } + ], + "pr_count": 6, + "pr_numbers": [ + 63840, + 64022, + 66342, + 66395, + 66413, + 67672 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 67672 + ], + "representative_pr_number": 66395, + "representative_title": "Fix/disable refresh during active turn", + "representative_url": "https://github.com/openclaw/openclaw/pull/66395", + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions", + "extensions/slack/src/monitor", + "ui/src/ui", + "ui/src", + "ui", + "src" + ], + "shared_filenames": [ + "extensions/slack/src/monitor/provider.ts", + "extensions/slack/src/monitor/provider.gateway-crash.test.ts", + "ui/src/ui/app-render.helpers.ts" + ], + "summary": "6 open PRs share weighted file overlap around `extensions/slack/src/monitor/provider.ts`, `extensions/slack/src/monitor/provider.gateway-crash.test.ts`, `ui/src/ui/app-render.helpers.ts`; representative PR #66395.", + "title": "Scope: Fix/disable refresh during active turn" + }, + { + "authors": [ + "stroupaloop" + ], + "average_similarity": 0.368, + "cluster_id": "pr-scope-18860-6", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T13:11:43Z", + "outside_window_prs": [ + { + "additions": 160, + "author": "lan17", + "changed_files": 6, + "created_at": "2026-02-17T04:32:32Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/18860/files", + "html_url": "https://github.com/openclaw/openclaw/pull/18860", + "merged": false, + "number": 18860, + "state": "open", + "title": "feat(agents): expose tools and their schemas via new after_tools_resolved hook [AI-assisted]", + "updated_at": "2026-04-18T04:13:48Z" + }, + { + "additions": 15, + "author": "dt-chenwenxiong", + "changed_files": 2, + "created_at": "2026-03-05T10:14:13Z", + "deletions": 12, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/35916/files", + "html_url": "https://github.com/openclaw/openclaw/pull/35916", + "merged": false, + "number": 35916, + "state": "open", + "title": "fix Null handling error after LLM timeout", + "updated_at": "2026-04-17T04:31:21Z" + }, + { + "additions": 154, + "author": "0xlin2023", + "changed_files": 2, + "created_at": "2026-03-06T09:34:59Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37561/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37561", + "merged": false, + "number": 37561, + "state": "open", + "title": "fix: properly import ModelProviderConfig type", + "updated_at": "2026-04-19T04:34:00Z" + }, + { + "additions": 10, + "author": "tonyzorin", + "changed_files": 1, + "created_at": "2026-03-06T11:03:00Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37671/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37671", + "merged": false, + "number": 37671, + "state": "open", + "title": "fix(agents): re-run tool_use/tool_result pairing repair after late me\u2026", + "updated_at": "2026-04-20T04:36:49Z" + }, + { + "additions": 10, + "author": "laindream", + "changed_files": 1, + "created_at": "2026-03-06T20:39:36Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38329/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38329", + "merged": false, + "number": 38329, + "state": "open", + "title": "fix: pass API key to custom OpenAI-compatible providers", + "updated_at": "2026-04-21T04:30:47Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.468, + "left_pr_number": 37671, + "right_pr_number": 38329, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.614, + "size_similarity": 0.909 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.496, + "left_pr_number": 37561, + "right_pr_number": 38329, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.483, + "size_similarity": 0.071 + }, + { + "breadth_similarity": 0.333, + "concentration_similarity": 0.521, + "content_similarity": 0.404, + "left_pr_number": 18860, + "right_pr_number": 37561, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.test.ts", + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.482, + "size_similarity": 0.933 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.355, + "left_pr_number": 35916, + "right_pr_number": 38329, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.435, + "size_similarity": 0.407 + }, + { + "breadth_similarity": 0.875, + "concentration_similarity": 0.772, + "content_similarity": 0.289, + "left_pr_number": 18860, + "right_pr_number": 68734, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src/plugins", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.test.ts", + "src/agents/pi-embedded-runner/run/attempt.ts", + "src/plugins/hooks.ts" + ], + "similarity": 0.425, + "size_similarity": 0.647 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.35, + "left_pr_number": 35916, + "right_pr_number": 37671, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.425, + "size_similarity": 0.37 + }, + { + "breadth_similarity": 0.292, + "concentration_similarity": 0.749, + "content_similarity": 0.315, + "left_pr_number": 37561, + "right_pr_number": 68734, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.test.ts", + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.378, + "size_similarity": 0.604 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.343, + "left_pr_number": 37561, + "right_pr_number": 37671, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.375, + "size_similarity": 0.065 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.267, + "left_pr_number": 35916, + "right_pr_number": 37561, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.363, + "size_similarity": 0.175 + }, + { + "breadth_similarity": 0.292, + "concentration_similarity": 0.749, + "content_similarity": 0.325, + "left_pr_number": 35916, + "right_pr_number": 68734, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.31, + "size_similarity": 0.106 + }, + { + "breadth_similarity": 0.229, + "concentration_similarity": 0.749, + "content_similarity": 0.296, + "left_pr_number": 38329, + "right_pr_number": 68734, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.274, + "size_similarity": 0.043 + }, + { + "breadth_similarity": 0.229, + "concentration_similarity": 0.749, + "content_similarity": 0.291, + "left_pr_number": 37671, + "right_pr_number": 68734, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.27, + "size_similarity": 0.039 + }, + { + "breadth_similarity": 0.25, + "concentration_similarity": 0.521, + "content_similarity": 0.252, + "left_pr_number": 18860, + "right_pr_number": 38329, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.237, + "size_similarity": 0.067 + }, + { + "breadth_similarity": 0.25, + "concentration_similarity": 0.521, + "content_similarity": 0.248, + "left_pr_number": 18860, + "right_pr_number": 37671, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.233, + "size_similarity": 0.061 + }, + { + "breadth_similarity": 0.333, + "concentration_similarity": 0.521, + "content_similarity": 0.19, + "left_pr_number": 18860, + "right_pr_number": 35916, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts" + ], + "similarity": 0.217, + "size_similarity": 0.164 + } + ], + "pr_count": 6, + "pr_numbers": [ + 18860, + 35916, + 37561, + 37671, + 38329, + 68734 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 68734 + ], + "representative_pr_number": 37561, + "representative_title": "fix: properly import ModelProviderConfig type", + "representative_url": "https://github.com/openclaw/openclaw/pull/37561", + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src", + "src/plugins" + ], + "shared_filenames": [ + "src/agents/pi-embedded-runner/run/attempt.ts", + "src/agents/pi-embedded-runner/run/attempt.test.ts", + "src/plugins/hooks.ts" + ], + "summary": "6 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/run/attempt.ts`, `src/agents/pi-embedded-runner/run/attempt.test.ts`, `src/plugins/hooks.ts`; representative PR #37561.", + "title": "Scope: fix: properly import ModelProviderConfig type" + }, + { + "authors": [ + "wangshu94" + ], + "average_similarity": 0.461, + "cluster_id": "pr-scope-37185-5", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T16:10:11Z", + "outside_window_prs": [ + { + "additions": 5, + "author": "wang2-lat", + "changed_files": 1, + "created_at": "2026-03-06T04:43:24Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37185/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37185", + "merged": false, + "number": 37185, + "state": "open", + "title": "fix: use canonical sessionKey in chat broadcasts to fix TUI filtering", + "updated_at": "2026-04-19T04:31:49Z" + }, + { + "additions": 7, + "author": "wang2-lat", + "changed_files": 2, + "created_at": "2026-03-06T06:13:11Z", + "deletions": 6, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37279/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37279", + "merged": false, + "number": 37279, + "state": "open", + "title": "fix: update web_search schema to support multi-char language codes", + "updated_at": "2026-04-19T04:32:21Z" + }, + { + "additions": 23, + "author": "wang2-lat", + "changed_files": 2, + "created_at": "2026-03-06T10:51:54Z", + "deletions": 10, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37663/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37663", + "merged": false, + "number": 37663, + "state": "open", + "title": "fix: log file rotation at midnight", + "updated_at": "2026-04-20T04:36:44Z" + }, + { + "additions": 14, + "author": "MumuTW", + "changed_files": 1, + "created_at": "2026-03-06T15:56:38Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38075/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38075", + "merged": false, + "number": 38075, + "state": "open", + "title": "fix(gateway): filter delivery-mirror entries from chat.history", + "updated_at": "2026-04-21T04:28:57Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.769, + "content_similarity": 0.882, + "left_pr_number": 37185, + "right_pr_number": 37279, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/chat.ts" + ], + "similarity": 0.821, + "size_similarity": 0.769 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 0.928, + "content_similarity": 0.521, + "left_pr_number": 37279, + "right_pr_number": 37663, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/chat.ts" + ], + "similarity": 0.57, + "size_similarity": 0.394 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.697, + "content_similarity": 0.591, + "left_pr_number": 37185, + "right_pr_number": 37663, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/chat.ts" + ], + "similarity": 0.544, + "size_similarity": 0.303 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.336, + "left_pr_number": 37185, + "right_pr_number": 38075, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/chat.ts" + ], + "similarity": 0.493, + "size_similarity": 0.714 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.769, + "content_similarity": 0.297, + "left_pr_number": 37279, + "right_pr_number": 38075, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/chat.ts" + ], + "similarity": 0.436, + "size_similarity": 0.929 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.236, + "left_pr_number": 37185, + "right_pr_number": 69747, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/chat.ts" + ], + "similarity": 0.425, + "size_similarity": 0.9 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.278, + "left_pr_number": 38075, + "right_pr_number": 69747, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/chat.ts" + ], + "similarity": 0.416, + "size_similarity": 0.643 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.769, + "content_similarity": 0.208, + "left_pr_number": 37279, + "right_pr_number": 69747, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/chat.ts" + ], + "similarity": 0.363, + "size_similarity": 0.692 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.697, + "content_similarity": 0.201, + "left_pr_number": 37663, + "right_pr_number": 38075, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/chat.ts" + ], + "similarity": 0.289, + "size_similarity": 0.424 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.697, + "content_similarity": 0.141, + "left_pr_number": 37663, + "right_pr_number": 69747, + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/chat.ts" + ], + "similarity": 0.249, + "size_similarity": 0.273 + } + ], + "pr_count": 5, + "pr_numbers": [ + 37185, + 37279, + 37663, + 38075, + 69747 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 69747 + ], + "representative_pr_number": 37185, + "representative_title": "fix: use canonical sessionKey in chat broadcasts to fix TUI filtering", + "representative_url": "https://github.com/openclaw/openclaw/pull/37185", + "shared_directories": [ + "src/gateway/server-methods", + "src/gateway", + "src" + ], + "shared_filenames": [ + "src/gateway/server-methods/chat.ts" + ], + "summary": "5 open PRs share weighted file overlap around `src/gateway/server-methods/chat.ts`; representative PR #37185.", + "title": "Scope: fix: use canonical sessionKey in chat broadcasts to fix TUI filtering" + }, + { + "authors": [ + "Tianworld" + ], + "average_similarity": 0.399, + "cluster_id": "pr-scope-64734-5", + "kind": "pr_scope", + "last_activity_at": "2026-04-15T13:52:10Z", + "outside_window_prs": [ + { + "additions": 16, + "author": "hanamizuki", + "changed_files": 2, + "created_at": "2026-04-11T09:20:29Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64734/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64734", + "merged": false, + "number": 64734, + "state": "open", + "title": "fix(discord): raise thread title timeout and tokens to fit reasoning models", + "updated_at": "2026-04-11T09:26:39Z" + }, + { + "additions": 11, + "author": "Yanhu007", + "changed_files": 1, + "created_at": "2026-04-11T15:17:30Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64863/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64863", + "merged": false, + "number": 64863, + "state": "open", + "title": "fix(discord): recognize voice messages as audio by filename extension", + "updated_at": "2026-04-11T15:18:39Z" + }, + { + "additions": 10, + "author": "devsehyeon", + "changed_files": 1, + "created_at": "2026-04-13T15:13:44Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66005/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66005", + "merged": false, + "number": 66005, + "state": "open", + "title": "fix(discord): resolve channelId for ACP thread binding from guild channels", + "updated_at": "2026-04-14T00:59:48Z" + }, + { + "additions": 19, + "author": "stanleeyY", + "changed_files": 2, + "created_at": "2026-04-13T16:38:19Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66059/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66059", + "merged": false, + "number": 66059, + "state": "open", + "title": "fix(discord): narrow batched replay and message ids", + "updated_at": "2026-04-13T16:41:14Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.722, + "left_pr_number": 64863, + "right_pr_number": 67215, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [ + "extensions/discord/src/monitor/message-utils.ts" + ], + "similarity": 0.702, + "size_similarity": 0.478 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.187, + "left_pr_number": 64734, + "right_pr_number": 67215, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.431, + "size_similarity": 1.0 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.199, + "left_pr_number": 64863, + "right_pr_number": 66005, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.426, + "size_similarity": 0.909 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.18, + "left_pr_number": 64734, + "right_pr_number": 66059, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.409, + "size_similarity": 0.885 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.177, + "left_pr_number": 66059, + "right_pr_number": 67215, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.407, + "size_similarity": 0.885 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.191, + "left_pr_number": 64734, + "right_pr_number": 64863, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.331, + "size_similarity": 0.478 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.198, + "left_pr_number": 64734, + "right_pr_number": 66005, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.329, + "size_similarity": 0.435 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.194, + "left_pr_number": 66005, + "right_pr_number": 67215, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.326, + "size_similarity": 0.435 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.182, + "left_pr_number": 64863, + "right_pr_number": 66059, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.316, + "size_similarity": 0.423 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.188, + "left_pr_number": 66005, + "right_pr_number": 66059, + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.314, + "size_similarity": 0.385 + } + ], + "pr_count": 5, + "pr_numbers": [ + 64734, + 64863, + 66005, + 66059, + 67215 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 67215 + ], + "representative_pr_number": 67215, + "representative_title": "fix(discord): preserve embed URLs when message content is empty", + "representative_url": "https://github.com/openclaw/openclaw/pull/67215", + "shared_directories": [ + "extensions/discord/src/monitor", + "extensions/discord/src", + "extensions/discord", + "extensions" + ], + "shared_filenames": [ + "extensions/discord/src/monitor/message-utils.ts" + ], + "summary": "5 open PRs share weighted file overlap around `extensions/discord/src/monitor/message-utils.ts`; representative PR #67215.", + "title": "Scope: fix(discord): preserve embed URLs when message content is empty" + }, + { + "authors": [ + "skolez" + ], + "average_similarity": 0.602, + "cluster_id": "pr-scope-53459-4", + "kind": "pr_scope", + "last_activity_at": "2026-04-18T22:20:44Z", + "outside_window_prs": [ + { + "additions": 4, + "author": "nathandrewes", + "changed_files": 1, + "created_at": "2026-03-24T06:22:34Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53459/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53459", + "merged": false, + "number": 53459, + "state": "open", + "title": "fix(config): replace hardcoded API keys with env var substitution", + "updated_at": "2026-03-24T20:15:30Z" + }, + { + "additions": 5, + "author": "jlapenna", + "changed_files": 2, + "created_at": "2026-04-10T20:04:49Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64485/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64485", + "merged": false, + "number": 64485, + "state": "open", + "title": "fix(docker): add config dir defaults to prevent broken volume mounts", + "updated_at": "2026-04-21T01:21:26Z" + }, + { + "additions": 1, + "author": "imanewstudent", + "changed_files": 1, + "created_at": "2026-04-13T10:48:11Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65894/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65894", + "merged": false, + "number": 65894, + "state": "open", + "title": "fix: add local build context to docker-compose", + "updated_at": "2026-04-13T10:49:45Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.973, + "left_pr_number": 53459, + "right_pr_number": 65894, + "shared_directories": [], + "shared_filenames": [ + "docker-compose.yml" + ], + "similarity": 0.868, + "size_similarity": 0.25 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.913, + "left_pr_number": 53459, + "right_pr_number": 64485, + "shared_directories": [], + "shared_filenames": [ + "docker-compose.yml" + ], + "similarity": 0.831, + "size_similarity": 0.444 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.876, + "left_pr_number": 64485, + "right_pr_number": 65894, + "shared_directories": [], + "shared_filenames": [ + "docker-compose.yml" + ], + "similarity": 0.755, + "size_similarity": 0.111 + }, + { + "breadth_similarity": 0.583, + "concentration_similarity": 0.788, + "content_similarity": 0.384, + "left_pr_number": 64485, + "right_pr_number": 68702, + "shared_directories": [], + "shared_filenames": [ + "CHANGELOG.md", + "docker-compose.yml" + ], + "similarity": 0.407, + "size_similarity": 0.273 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.788, + "content_similarity": 0.41, + "left_pr_number": 53459, + "right_pr_number": 68702, + "shared_directories": [], + "shared_filenames": [ + "docker-compose.yml" + ], + "similarity": 0.386, + "size_similarity": 0.121 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.788, + "content_similarity": 0.394, + "left_pr_number": 65894, + "right_pr_number": 68702, + "shared_directories": [], + "shared_filenames": [ + "docker-compose.yml" + ], + "similarity": 0.361, + "size_similarity": 0.03 + } + ], + "pr_count": 4, + "pr_numbers": [ + 53459, + 64485, + 65894, + 68702 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 68702 + ], + "representative_pr_number": 53459, + "representative_title": "fix(config): replace hardcoded API keys with env var substitution", + "representative_url": "https://github.com/openclaw/openclaw/pull/53459", + "shared_directories": [], + "shared_filenames": [ + "docker-compose.yml", + "CHANGELOG.md" + ], + "summary": "4 open PRs share weighted file overlap around `docker-compose.yml`, `CHANGELOG.md`; representative PR #53459.", + "title": "Scope: fix(config): replace hardcoded API keys with env var substitution" + }, + { + "authors": [ + "ayeshakhalid192007-dev" + ], + "average_similarity": 0.576, + "cluster_id": "pr-scope-64539-4", + "kind": "pr_scope", + "last_activity_at": "2026-04-17T12:37:18Z", + "outside_window_prs": [ + { + "additions": 100, + "author": "ShionEria", + "changed_files": 2, + "created_at": "2026-04-10T23:44:38Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64539/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64539", + "merged": false, + "number": 64539, + "state": "open", + "title": "fix(reply): allow OpenClaw tmp media in normalizer", + "updated_at": "2026-04-11T00:34:49Z" + }, + { + "additions": 160, + "author": "Ricardo-M-L", + "changed_files": 2, + "created_at": "2026-04-11T15:29:20Z", + "deletions": 16, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64872/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64872", + "merged": false, + "number": 64872, + "state": "open", + "title": "fix: convert local media paths to gateway URLs in WhatsApp reply pipeline", + "updated_at": "2026-04-11T15:34:43Z" + }, + { + "additions": 202, + "author": "coder999999999", + "changed_files": 3, + "created_at": "2026-04-13T17:29:12Z", + "deletions": 34, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66085/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66085", + "merged": false, + "number": 66085, + "state": "open", + "title": "fix(reply): harden preferred tmp media allowlist", + "updated_at": "2026-04-14T18:17:18Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.886, + "left_pr_number": 64539, + "right_pr_number": 64872, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/reply-media-paths.test.ts", + "src/auto-reply/reply/reply-media-paths.ts" + ], + "similarity": 0.857, + "size_similarity": 0.58 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.692, + "left_pr_number": 64872, + "right_pr_number": 66085, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/reply-media-paths.test.ts", + "src/auto-reply/reply/reply-media-paths.ts" + ], + "similarity": 0.73, + "size_similarity": 0.746 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.662, + "left_pr_number": 64539, + "right_pr_number": 66085, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/reply-media-paths.test.ts", + "src/auto-reply/reply/reply-media-paths.ts" + ], + "similarity": 0.661, + "size_similarity": 0.432 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.519, + "left_pr_number": 66085, + "right_pr_number": 68111, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/agent-runner.media-paths.test.ts" + ], + "similarity": 0.584, + "size_similarity": 0.47 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.091, + "left_pr_number": 64539, + "right_pr_number": 68111, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [], + "similarity": 0.335, + "size_similarity": 0.919 + }, + { + "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.403, - "left_pr_number": 67505, - "right_pr_number": 68320, + "content_similarity": 0.09, + "left_pr_number": 64872, + "right_pr_number": 68111, "shared_directories": [ - "extensions/ollama", - "extensions" - ], - "shared_filenames": [ - "extensions/ollama/index.ts" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], - "similarity": 0.445, - "size_similarity": 0.308 + "shared_filenames": [], + "similarity": 0.291, + "size_similarity": 0.631 } ], - "pr_count": 2, + "pr_count": 4, "pr_numbers": [ - 67505, - 68320 + 64539, + 64872, + 66085, + 68111 ], - "recent_pr_count": 2, + "recent_pr_count": 1, "recent_pr_numbers": [ - 67505, - 68320 + 68111 ], - "representative_pr_number": 67505, - "representative_title": "fix(ollama): model picker shows wrong models after selecting Ollama", - "representative_url": "https://github.com/openclaw/openclaw/pull/67505", + "representative_pr_number": 66085, + "representative_title": "fix(reply): harden preferred tmp media allowlist", + "representative_url": "https://github.com/openclaw/openclaw/pull/66085", "shared_directories": [ - "extensions/ollama", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "extensions/ollama/index.ts" + "src/auto-reply/reply/reply-media-paths.ts", + "src/auto-reply/reply/reply-media-paths.test.ts", + "src/auto-reply/reply/agent-runner.media-paths.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `extensions/ollama/index.ts`; representative PR #67505.", - "title": "Scope: fix(ollama): model picker shows wrong models after selecting Ollama" + "summary": "4 open PRs share weighted file overlap around `src/auto-reply/reply/reply-media-paths.ts`, `src/auto-reply/reply/reply-media-paths.test.ts`, `src/auto-reply/reply/agent-runner.media-paths.test.ts`; representative PR #66085.", + "title": "Scope: fix(reply): harden preferred tmp media allowlist" }, { "authors": [ - "alexlomt", - "hxy91819" + "neeravmakwana" ], - "average_similarity": 0.439, - "cluster_id": "pr-scope-66884-2", + "average_similarity": 0.548, + "cluster_id": "pr-scope-37937-4", "kind": "pr_scope", - "last_activity_at": "2026-04-18T10:59:50Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-20T12:08:22Z", + "outside_window_prs": [ + { + "additions": 30, + "author": "Clauber", + "changed_files": 2, + "created_at": "2026-03-06T14:45:38Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37937/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37937", + "merged": false, + "number": 37937, + "state": "open", + "title": "fix: treat undefined/null rejection reasons as non-fatal", + "updated_at": "2026-04-20T04:38:41Z" + }, + { + "additions": 8, + "author": "p697", + "changed_files": 2, + "created_at": "2026-03-07T01:38:26Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38459/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38459", + "merged": false, + "number": 38459, + "state": "open", + "title": "Fix gateway crash loop on wrapped fetch-failed errors", + "updated_at": "2026-04-21T04:32:16Z" + }, + { + "additions": 101, + "author": "openperf", + "changed_files": 4, + "created_at": "2026-04-12T11:41:48Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65323/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65323", + "merged": false, + "number": 65323, + "state": "open", + "title": "fix(gateway): prevent crash on late tool_execution_update after agent run teardown", + "updated_at": "2026-04-12T16:16:20Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.333, - "concentration_similarity": 0.585, - "content_similarity": 0.47, - "left_pr_number": 66884, - "right_pr_number": 67920, + "breadth_similarity": 1.0, + "concentration_similarity": 0.981, + "content_similarity": 0.847, + "left_pr_number": 65323, + "right_pr_number": 69148, "shared_directories": [ - ".github/workflows", - ".github" + "src/infra", + "src" ], "shared_filenames": [ - ".github/workflows/openclaw-cross-os-release-checks-reusable.yml" + "CHANGELOG.md", + "src/infra/unhandled-rejections.fatal-detection.test.ts", + "src/infra/unhandled-rejections.test.ts", + "src/infra/unhandled-rejections.ts" ], - "similarity": 0.439, - "size_similarity": 0.311 + "similarity": 0.794, + "size_similarity": 0.347 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.971, + "content_similarity": 0.765, + "left_pr_number": 37937, + "right_pr_number": 69148, + "shared_directories": [ + "src/infra", + "src" + ], + "shared_filenames": [ + "src/infra/unhandled-rejections.fatal-detection.test.ts", + "src/infra/unhandled-rejections.ts" + ], + "similarity": 0.763, + "size_similarity": 0.857 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.99, + "content_similarity": 0.517, + "left_pr_number": 37937, + "right_pr_number": 65323, + "shared_directories": [ + "src/infra", + "src" + ], + "shared_filenames": [ + "src/infra/unhandled-rejections.fatal-detection.test.ts", + "src/infra/unhandled-rejections.ts" + ], + "similarity": 0.506, + "size_similarity": 0.297 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.99, + "content_similarity": 0.458, + "left_pr_number": 38459, + "right_pr_number": 65323, + "shared_directories": [ + "src/infra", + "src" + ], + "shared_filenames": [ + "src/infra/unhandled-rejections.test.ts", + "src/infra/unhandled-rejections.ts" + ], + "similarity": 0.436, + "size_similarity": 0.109 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.294, + "left_pr_number": 37937, + "right_pr_number": 38459, + "shared_directories": [ + "src/infra", + "src" + ], + "shared_filenames": [ + "src/infra/unhandled-rejections.ts" + ], + "similarity": 0.411, + "size_similarity": 0.367 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.971, + "content_similarity": 0.335, + "left_pr_number": 38459, + "right_pr_number": 69148, + "shared_directories": [ + "src/infra", + "src" + ], + "shared_filenames": [ + "src/infra/unhandled-rejections.test.ts", + "src/infra/unhandled-rejections.ts" + ], + "similarity": 0.38, + "size_similarity": 0.314 } ], - "pr_count": 2, + "pr_count": 4, "pr_numbers": [ - 66884, - 67920 + 37937, + 38459, + 65323, + 69148 ], - "recent_pr_count": 2, + "recent_pr_count": 1, "recent_pr_numbers": [ - 66884, - 67920 + 69148 ], - "representative_pr_number": 66884, - "representative_title": "fix(ci): harden release checks workflow inputs", - "representative_url": "https://github.com/openclaw/openclaw/pull/66884", + "representative_pr_number": 69148, + "representative_title": "Gateway/runtime: classify reasonless promise rejections as transient", + "representative_url": "https://github.com/openclaw/openclaw/pull/69148", "shared_directories": [ - ".github/workflows", - ".github" + "src/infra", + "src" ], "shared_filenames": [ - ".github/workflows/openclaw-cross-os-release-checks-reusable.yml" + "src/infra/unhandled-rejections.ts", + "src/infra/unhandled-rejections.fatal-detection.test.ts", + "src/infra/unhandled-rejections.test.ts", + "CHANGELOG.md" ], - "summary": "2 open PRs share weighted file overlap around `.github/workflows/openclaw-cross-os-release-checks-reusable.yml`; representative PR #66884.", - "title": "Scope: fix(ci): harden release checks workflow inputs" + "summary": "4 open PRs share weighted file overlap around `src/infra/unhandled-rejections.ts`, `src/infra/unhandled-rejections.fatal-detection.test.ts`, `src/infra/unhandled-rejections.test.ts`; representative PR #69148.", + "title": "Scope: Gateway/runtime: classify reasonless promise rejections as transient" }, { "authors": [ - "RafeSymonds", - "hyamie" + "zhonghe0615" ], - "average_similarity": 0.426, - "cluster_id": "pr-scope-66583-2", + "average_similarity": 0.535, + "cluster_id": "pr-scope-63871-4", "kind": "pr_scope", - "last_activity_at": "2026-04-16T14:16:17Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-21T06:39:22Z", + "outside_window_prs": [ + { + "additions": 388, + "author": "sharkqwy", + "changed_files": 4, + "created_at": "2026-04-09T18:08:23Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/63871/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63871", + "merged": false, + "number": 63871, + "state": "open", + "title": "fix(cron): honor deleteAfterRun for recurring jobs", + "updated_at": "2026-04-21T14:14:59Z" + }, + { + "additions": 100, + "author": "jackjin1997", + "changed_files": 2, + "created_at": "2026-04-10T15:14:52Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64375/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64375", + "merged": false, + "number": 64375, + "state": "open", + "title": "fix(cron): honor deleteAfterRun for every and cron schedule kinds", + "updated_at": "2026-04-11T03:50:52Z" + }, + { + "additions": 697, + "author": "WuKongAI-CMU", + "changed_files": 8, + "created_at": "2026-04-13T17:05:12Z", + "deletions": 49, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66076/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66076", + "merged": false, + "number": 66076, + "state": "open", + "title": "fix(cron): promote silent-undefined schedule to error, break spin loop (#66019)", + "updated_at": "2026-04-15T08:50:52Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.767, - "concentration_similarity": 0.786, - "content_similarity": 0.297, - "left_pr_number": 66583, - "right_pr_number": 67697, + "breadth_similarity": 0.417, + "concentration_similarity": 0.964, + "content_similarity": 0.807, + "left_pr_number": 63871, + "right_pr_number": 64375, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "src/memory-host-sdk", - "extensions", + "src/cron/service", + "src/cron", "src" ], "shared_filenames": [ - "extensions/memory-core/openclaw.plugin.json", - "extensions/memory-core/src/dreaming-phases.ts", - "src/memory-host-sdk/dreaming.ts" + "src/cron/service/timer.regression.test.ts", + "src/cron/service/timer.ts" ], - "similarity": 0.426, - "size_similarity": 0.684 + "similarity": 0.694, + "size_similarity": 0.26 + }, + { + "breadth_similarity": 0.404, + "concentration_similarity": 0.73, + "content_similarity": 0.641, + "left_pr_number": 63871, + "right_pr_number": 69252, + "shared_directories": [ + "src/cron/service", + "src/cron", + "src" + ], + "shared_filenames": [ + "src/cron/service/timer.regression.test.ts", + "src/cron/service/timer.ts" + ], + "similarity": 0.625, + "size_similarity": 0.659 + }, + { + "breadth_similarity": 0.558, + "concentration_similarity": 0.722, + "content_similarity": 0.445, + "left_pr_number": 66076, + "right_pr_number": 69252, + "shared_directories": [ + "src/cron/service", + "src/cli", + "src/cron", + "src" + ], + "shared_filenames": [ + "src/cron/service/timer.regression.test.ts", + "src/cron/service/timer.ts" + ], + "similarity": 0.523, + "size_similarity": 0.798 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.992, + "content_similarity": 0.454, + "left_pr_number": 63871, + "right_pr_number": 66076, + "shared_directories": [ + "src/cron/service", + "src/cron", + "src/infra", + "src" + ], + "shared_filenames": [ + "src/cron/service/timer.regression.test.ts", + "src/cron/service/timer.ts" + ], + "similarity": 0.521, + "size_similarity": 0.525 + }, + { + "breadth_similarity": 0.292, + "concentration_similarity": 0.972, + "content_similarity": 0.466, + "left_pr_number": 64375, + "right_pr_number": 66076, + "shared_directories": [ + "src/cron/service", + "src/cron", + "src" + ], + "shared_filenames": [ + "src/cron/service/timer.regression.test.ts", + "src/cron/service/timer.ts" + ], + "similarity": 0.424, + "size_similarity": 0.137 + }, + { + "breadth_similarity": 0.16, + "concentration_similarity": 0.694, + "content_similarity": 0.497, + "left_pr_number": 64375, + "right_pr_number": 69252, + "shared_directories": [ + "src/cron/service", + "src/cron", + "src" + ], + "shared_filenames": [ + "src/cron/service/timer.regression.test.ts", + "src/cron/service/timer.ts" + ], + "similarity": 0.424, + "size_similarity": 0.171 } ], - "pr_count": 2, + "pr_count": 4, "pr_numbers": [ - 66583, - 67697 + 63871, + 64375, + 66076, + 69252 ], - "recent_pr_count": 2, + "recent_pr_count": 1, "recent_pr_numbers": [ - 66583, - 67697 + 69252 ], - "representative_pr_number": 66583, - "representative_title": "feat(memory-core): add dreaming.model config field for per-sweep model override", - "representative_url": "https://github.com/openclaw/openclaw/pull/66583", + "representative_pr_number": 63871, + "representative_title": "fix(cron): honor deleteAfterRun for recurring jobs", + "representative_url": "https://github.com/openclaw/openclaw/pull/63871", "shared_directories": [ - "extensions/memory-core/src", - "src/memory-host-sdk", - "extensions/memory-core", - "extensions", - "src" + "src/cron/service", + "src/cron", + "src", + "src/cli", + "src/infra" ], "shared_filenames": [ - "extensions/memory-core/openclaw.plugin.json", - "src/memory-host-sdk/dreaming.ts", - "extensions/memory-core/src/dreaming-phases.ts" + "src/cron/service/timer.regression.test.ts", + "src/cron/service/timer.ts" ], - "summary": "2 open PRs share weighted file overlap around `extensions/memory-core/openclaw.plugin.json`, `src/memory-host-sdk/dreaming.ts`, `extensions/memory-core/src/dreaming-phases.ts`; representative PR #66583.", - "title": "Scope: feat(memory-core): add dreaming.model config field for per-sweep model override" + "summary": "4 open PRs share weighted file overlap around `src/cron/service/timer.regression.test.ts`, `src/cron/service/timer.ts`; representative PR #63871.", + "title": "Scope: fix(cron): honor deleteAfterRun for recurring jobs" }, { "authors": [ - "glfruit", - "ly85206559" + "pandego" ], - "average_similarity": 0.426, - "cluster_id": "pr-scope-66627-2", + "average_similarity": 0.515, + "cluster_id": "pr-scope-50483-4", "kind": "pr_scope", - "last_activity_at": "2026-04-16T14:56:31Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-19T08:16:43Z", + "outside_window_prs": [ + { + "additions": 403, + "author": "eulicesl", + "changed_files": 6, + "created_at": "2026-03-19T15:11:39Z", + "deletions": 17, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/50483/files", + "html_url": "https://github.com/openclaw/openclaw/pull/50483", + "merged": false, + "number": 50483, + "state": "open", + "title": "fix(ios): stabilize chat streaming layout and session flow", + "updated_at": "2026-04-17T17:08:24Z" + }, + { + "additions": 1690, + "author": "kakahu2015", + "changed_files": 17, + "created_at": "2026-04-09T10:47:43Z", + "deletions": 504, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/63697/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63697", + "merged": false, + "number": 63697, + "state": "open", + "title": "[codex] iOS Chat: route slash commands through gateway", + "updated_at": "2026-04-11T14:40:53Z" + }, + { + "additions": 92, + "author": "javierdici", + "changed_files": 4, + "created_at": "2026-04-13T03:33:17Z", + "deletions": 7, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65689/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65689", + "merged": false, + "number": 65689, + "state": "open", + "title": "Render provider errors in chat history", + "updated_at": "2026-04-13T03:37:25Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.476, + "breadth_similarity": 0.833, + "concentration_similarity": 0.908, + "content_similarity": 0.694, + "left_pr_number": 50483, + "right_pr_number": 65689, + "shared_directories": [ + "apps/shared/OpenClawKit/Sources/OpenClawChatUI", + "apps/shared/OpenClawKit/Tests/OpenClawKitTests", + "apps/shared/OpenClawKit/Sources", + "apps/shared/OpenClawKit/Tests", + "apps/shared/OpenClawKit", + "apps/shared", + "apps" + ], + "shared_filenames": [ + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatModels.swift", + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift", + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift", + "apps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatViewModelTests.swift" + ], + "similarity": 0.65, + "size_similarity": 0.236 + }, + { + "breadth_similarity": 1.0, "concentration_similarity": 0.817, - "content_similarity": 0.37, - "left_pr_number": 66627, - "right_pr_number": 67702, + "content_similarity": 0.546, + "left_pr_number": 65689, + "right_pr_number": 68641, "shared_directories": [ - "src/cli/update-cli", - "src/cli", - "src" + "apps/shared/OpenClawKit/Sources/OpenClawChatUI", + "apps/shared/OpenClawKit/Tests/OpenClawKitTests", + "apps/shared/OpenClawKit/Sources", + "apps/shared/OpenClawKit/Tests", + "apps/shared/OpenClawKit", + "apps/shared", + "apps" ], "shared_filenames": [ - "src/cli/update-cli.test.ts", - "src/cli/update-cli/update-command.ts" + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatModels.swift", + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift" + ], + "similarity": 0.57, + "size_similarity": 0.311 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.909, + "content_similarity": 0.411, + "left_pr_number": 50483, + "right_pr_number": 68641, + "shared_directories": [ + "apps/shared/OpenClawKit/Sources/OpenClawChatUI", + "apps/shared/OpenClawKit/Tests/OpenClawKitTests", + "apps/shared/OpenClawKit/Sources", + "apps/shared/OpenClawKit/Tests", + "apps/shared/OpenClawKit", + "apps/shared", + "apps" + ], + "shared_filenames": [ + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatModels.swift", + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift" + ], + "similarity": 0.53, + "size_similarity": 0.757 + }, + { + "breadth_similarity": 0.343, + "concentration_similarity": 0.905, + "content_similarity": 0.564, + "left_pr_number": 50483, + "right_pr_number": 63697, + "shared_directories": [ + "apps/shared/OpenClawKit/Sources/OpenClawChatUI", + "apps/shared/OpenClawKit/Tests/OpenClawKitTests", + "apps/shared/OpenClawKit/Sources", + "apps/shared/OpenClawKit/Tests", + "apps/shared/OpenClawKit", + "apps/shared", + "apps" + ], + "shared_filenames": [ + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift", + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift", + "apps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatViewModelTests.swift" + ], + "similarity": 0.503, + "size_similarity": 0.191 + }, + { + "breadth_similarity": 0.284, + "concentration_similarity": 0.996, + "content_similarity": 0.473, + "left_pr_number": 63697, + "right_pr_number": 68641, + "shared_directories": [ + "apps/shared/OpenClawKit/Sources/OpenClawChatUI", + "apps/shared/OpenClawKit/Tests/OpenClawKitTests", + "apps/shared/OpenClawKit/Sources", + "apps/shared/OpenClawKit/Tests", + "apps/shared/OpenClawKit", + "apps/shared", + "apps" + ], + "shared_filenames": [ + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift", + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift" + ], + "similarity": 0.431, + "size_similarity": 0.145 + }, + { + "breadth_similarity": 0.284, + "concentration_similarity": 0.813, + "content_similarity": 0.474, + "left_pr_number": 63697, + "right_pr_number": 65689, + "shared_directories": [ + "apps/shared/OpenClawKit/Sources/OpenClawChatUI", + "apps/shared/OpenClawKit/Tests/OpenClawKitTests", + "apps/shared/OpenClawKit/Sources", + "apps/shared/OpenClawKit/Tests", + "apps/shared/OpenClawKit", + "apps/shared", + "apps" + ], + "shared_filenames": [ + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift", + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift", + "apps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatViewModelTests.swift" ], - "similarity": 0.426, - "size_similarity": 0.522 + "similarity": 0.408, + "size_similarity": 0.045 } ], - "pr_count": 2, + "pr_count": 4, "pr_numbers": [ - 66627, - 67702 + 50483, + 63697, + 65689, + 68641 ], - "recent_pr_count": 2, + "recent_pr_count": 1, "recent_pr_numbers": [ - 66627, - 67702 + 68641 ], - "representative_pr_number": 66627, - "representative_title": "Gateway: avoid spurious Windows restart on unknown listener stale (#52044)", - "representative_url": "https://github.com/openclaw/openclaw/pull/66627", + "representative_pr_number": 50483, + "representative_title": "fix(ios): stabilize chat streaming layout and session flow", + "representative_url": "https://github.com/openclaw/openclaw/pull/50483", "shared_directories": [ - "src/cli/update-cli", - "src/cli", - "src" + "apps/shared/OpenClawKit/Tests/OpenClawKitTests", + "apps/shared/OpenClawKit/Sources/OpenClawChatUI", + "apps/shared/OpenClawKit/Tests", + "apps/shared/OpenClawKit/Sources", + "apps/shared/OpenClawKit", + "apps/shared", + "apps" ], "shared_filenames": [ - "src/cli/update-cli.test.ts", - "src/cli/update-cli/update-command.ts" + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift", + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatModels.swift", + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift", + "apps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatViewModelTests.swift", + "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift" ], - "summary": "2 open PRs share weighted file overlap around `src/cli/update-cli.test.ts`, `src/cli/update-cli/update-command.ts`; representative PR #66627.", - "title": "Scope: Gateway: avoid spurious Windows restart on unknown listener stale (#52044)" + "summary": "4 open PRs share weighted file overlap around `apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift`, `apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatModels.swift`, `apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift`; representative PR #50483.", + "title": "Scope: fix(ios): stabilize chat streaming layout and session flow" }, { "authors": [ - "athletesofthereef", - "masatohoshino" + "evgyur" ], - "average_similarity": 0.42, - "cluster_id": "pr-scope-66378-2", + "average_similarity": 0.498, + "cluster_id": "pr-scope-64059-4", "kind": "pr_scope", - "last_activity_at": "2026-04-19T01:42:07Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-18T20:17:12Z", + "outside_window_prs": [ + { + "additions": 41, + "author": "bek91", + "changed_files": 2, + "created_at": "2026-04-10T03:35:23Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64059/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64059", + "merged": false, + "number": 64059, + "state": "open", + "title": "Align system prompt messaging and subagent routing guidance", + "updated_at": "2026-04-21T03:27:57Z" + }, + { + "additions": 19, + "author": "yozu", + "changed_files": 2, + "created_at": "2026-04-13T07:26:01Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65777/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65777", + "merged": false, + "number": 65777, + "state": "open", + "title": "fix(prompt): preserve IDENTITY defaults in system prompt", + "updated_at": "2026-04-14T08:11:28Z" + }, + { + "additions": 42, + "author": "johnturek", + "changed_files": 5, + "created_at": "2026-04-14T03:38:04Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66312/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66312", + "merged": false, + "number": 66312, + "state": "open", + "title": "feat(system-prompt): inject sessionKey into Runtime line", + "updated_at": "2026-04-14T03:40:00Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.375, - "concentration_similarity": 0.62, - "content_similarity": 0.459, - "left_pr_number": 66378, - "right_pr_number": 68744, + "breadth_similarity": 0.583, + "concentration_similarity": 0.912, + "content_similarity": 0.563, + "left_pr_number": 65777, + "right_pr_number": 68687, "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" + "src/agents", + "src" ], "shared_filenames": [ - "extensions/whatsapp/src/outbound-base.test.ts", - "extensions/whatsapp/src/outbound-base.ts" + "src/agents/system-prompt.test.ts", + "src/agents/system-prompt.ts" ], - "similarity": 0.42, - "size_similarity": 0.199 - } - ], - "pr_count": 2, - "pr_numbers": [ - 66378, - 68744 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 66378, - 68744 - ], - "representative_pr_number": 66378, - "representative_title": "fix(whatsapp): bypass legacy send dep for media sends", - "representative_url": "https://github.com/openclaw/openclaw/pull/66378", - "shared_directories": [ - "extensions/whatsapp/src", - "extensions/whatsapp", - "extensions" - ], - "shared_filenames": [ - "extensions/whatsapp/src/outbound-base.test.ts", - "extensions/whatsapp/src/outbound-base.ts" - ], - "summary": "2 open PRs share weighted file overlap around `extensions/whatsapp/src/outbound-base.test.ts`, `extensions/whatsapp/src/outbound-base.ts`; representative PR #66378.", - "title": "Scope: fix(whatsapp): bypass legacy send dep for media sends" - }, - { - "authors": [ - "mkoslacz", - "mm1ord" - ], - "average_similarity": 0.414, - "cluster_id": "pr-scope-66615-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T16:04:45Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.582, + "size_similarity": 0.559 + }, { - "breadth_similarity": 0.833, - "concentration_similarity": 0.55, - "content_similarity": 0.426, - "left_pr_number": 66615, - "right_pr_number": 68267, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.52, + "left_pr_number": 64059, + "right_pr_number": 65777, "shared_directories": [ - "src/gateway/protocol/schema", - "src/gateway/protocol", - "src/gateway/server-methods", - "src/gateway", + "src/agents", "src" ], "shared_filenames": [ - "src/gateway/protocol/schema/logs-chat.ts", - "src/gateway/server-methods/chat.ts" + "src/agents/system-prompt.test.ts", + "src/agents/system-prompt.ts" ], - "similarity": 0.414, - "size_similarity": 0.033 - } - ], - "pr_count": 2, - "pr_numbers": [ - 66615, - 68267 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 66615, - 68267 - ], - "representative_pr_number": 66615, - "representative_title": "fix(gateway): increase chat.history limit from 1000 to 2000", - "representative_url": "https://github.com/openclaw/openclaw/pull/66615", - "shared_directories": [ - "src/gateway/protocol/schema", - "src/gateway/protocol", - "src/gateway/server-methods", - "src/gateway", - "src" - ], - "shared_filenames": [ - "src/gateway/protocol/schema/logs-chat.ts", - "src/gateway/server-methods/chat.ts" - ], - "summary": "2 open PRs share weighted file overlap around `src/gateway/protocol/schema/logs-chat.ts`, `src/gateway/server-methods/chat.ts`; representative PR #66615.", - "title": "Scope: fix(gateway): increase chat.history limit from 1000 to 2000" - }, - { - "authors": [ - "palewire", - "sliverp" - ], - "average_similarity": 0.413, - "cluster_id": "pr-scope-67605-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T17:42:16Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.58, + "size_similarity": 0.442 + }, { - "breadth_similarity": 0.955, - "concentration_similarity": 0.991, - "content_similarity": 0.364, - "left_pr_number": 67605, - "right_pr_number": 68651, + "breadth_similarity": 0.367, + "concentration_similarity": 0.952, + "content_similarity": 0.373, + "left_pr_number": 64059, + "right_pr_number": 66312, "shared_directories": [ - "src/config", - "src/gateway", + "src/agents", "src" ], "shared_filenames": [ - "src/config/schema.base.generated.ts", - "src/config/types.models.ts", - "src/config/zod-schema.core.ts", - "src/gateway/model-pricing-cache.test.ts", - "src/gateway/model-pricing-cache.ts" + "src/agents/system-prompt.test.ts", + "src/agents/system-prompt.ts" ], - "similarity": 0.413, - "size_similarity": 0.088 - } - ], - "pr_count": 2, - "pr_numbers": [ - 67605, - 68651 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 67605, - 68651 - ], - "representative_pr_number": 67605, - "representative_title": "feat: add support for tiered model pricing", - "representative_url": "https://github.com/openclaw/openclaw/pull/67605", - "shared_directories": [ - "src/config", - "src/gateway", - "src" - ], - "shared_filenames": [ - "src/gateway/model-pricing-cache.test.ts", - "src/gateway/model-pricing-cache.ts", - "src/config/types.models.ts", - "src/config/zod-schema.core.ts", - "src/config/schema.base.generated.ts" - ], - "summary": "2 open PRs share weighted file overlap around `src/gateway/model-pricing-cache.test.ts`, `src/gateway/model-pricing-cache.ts`, `src/config/types.models.ts`; representative PR #67605.", - "title": "Scope: feat: add support for tiered model pricing" - }, - { - "authors": [ - "Rohan5commit", - "mraleko" - ], - "average_similarity": 0.411, - "cluster_id": "pr-scope-66081-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-14T22:02:18Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.492, + "size_similarity": 0.977 + }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.711, - "content_similarity": 0.272, - "left_pr_number": 66081, - "right_pr_number": 66819, + "breadth_similarity": 0.583, + "concentration_similarity": 0.912, + "content_similarity": 0.375, + "left_pr_number": 64059, + "right_pr_number": 68687, "shared_directories": [ "src/agents", "src" ], "shared_filenames": [ - "src/agents/cli-output.test.ts", - "src/agents/cli-output.ts" + "src/agents/system-prompt.test.ts", + "src/agents/system-prompt.ts" ], - "similarity": 0.411, - "size_similarity": 0.899 + "similarity": 0.485, + "size_similarity": 0.791 + }, + { + "breadth_similarity": 0.633, + "concentration_similarity": 0.959, + "content_similarity": 0.317, + "left_pr_number": 66312, + "right_pr_number": 68687, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/system-prompt.test.ts", + "src/agents/system-prompt.ts" + ], + "similarity": 0.455, + "size_similarity": 0.81 + }, + { + "breadth_similarity": 0.367, + "concentration_similarity": 0.952, + "content_similarity": 0.348, + "left_pr_number": 65777, + "right_pr_number": 66312, + "shared_directories": [ + "src/agents", + "src" + ], + "shared_filenames": [ + "src/agents/system-prompt.test.ts", + "src/agents/system-prompt.ts" + ], + "similarity": 0.396, + "size_similarity": 0.452 } ], - "pr_count": 2, + "pr_count": 4, "pr_numbers": [ - 66081, - 66819 + 64059, + 65777, + 66312, + 68687 ], - "recent_pr_count": 2, + "recent_pr_count": 1, "recent_pr_numbers": [ - 66081, - 66819 + 68687 ], - "representative_pr_number": 66081, - "representative_title": "feat(codex-cli): prefer output-last-message artifacts", - "representative_url": "https://github.com/openclaw/openclaw/pull/66081", + "representative_pr_number": 65777, + "representative_title": "fix(prompt): preserve IDENTITY defaults in system prompt", + "representative_url": "https://github.com/openclaw/openclaw/pull/65777", "shared_directories": [ "src/agents", "src" ], "shared_filenames": [ - "src/agents/cli-output.test.ts", - "src/agents/cli-output.ts" + "src/agents/system-prompt.test.ts", + "src/agents/system-prompt.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/cli-output.test.ts`, `src/agents/cli-output.ts`; representative PR #66081.", - "title": "Scope: feat(codex-cli): prefer output-last-message artifacts" + "summary": "4 open PRs share weighted file overlap around `src/agents/system-prompt.test.ts`, `src/agents/system-prompt.ts`; representative PR #65777.", + "title": "Scope: fix(prompt): preserve IDENTITY defaults in system prompt" }, { "authors": [ - "MoerAI", - "ahbi1006-hue" + "silas-dandelion-cult" ], - "average_similarity": 0.392, - "cluster_id": "pr-scope-66478-2", + "average_similarity": 0.476, + "cluster_id": "pr-scope-37904-4", "kind": "pr_scope", - "last_activity_at": "2026-04-18T08:43:33Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-20T17:56:11Z", + "outside_window_prs": [ + { + "additions": 78, + "author": "kaiwangleo", + "changed_files": 2, + "created_at": "2026-03-06T14:24:20Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37904/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37904", + "merged": false, + "number": 37904, + "state": "open", + "title": "fix(reply): suppress JSON/channelData NO_REPLY action payloads", + "updated_at": "2026-04-20T04:38:31Z" + }, + { + "additions": 17, + "author": "jakepresent", + "changed_files": 2, + "created_at": "2026-04-12T20:29:41Z", + "deletions": 21, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65541/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65541", + "merged": false, + "number": 65541, + "state": "open", + "title": "fix: deliver text blocks progressively when block streaming is disabled", + "updated_at": "2026-04-14T18:02:32Z" + }, + { + "additions": 75, + "author": "asakir44", + "changed_files": 3, + "created_at": "2026-04-13T14:53:54Z", + "deletions": 9, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65995/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65995", + "merged": false, + "number": 65995, + "state": "open", + "title": "fix(reply): sanitize assistant text in block and final delivery paths", + "updated_at": "2026-04-13T15:03:23Z" + } + ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.138, - "left_pr_number": 66478, - "right_pr_number": 68455, + "content_similarity": 0.848, + "left_pr_number": 37904, + "right_pr_number": 69394, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/normalize-reply.ts", + "src/auto-reply/reply/reply-utils.test.ts" + ], + "similarity": 0.794, + "size_similarity": 0.337 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.652, + "left_pr_number": 65541, + "right_pr_number": 65995, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/reply-delivery.test.ts", + "src/auto-reply/reply/reply-delivery.ts" + ], + "similarity": 0.657, + "size_similarity": 0.452 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.274, + "left_pr_number": 37904, + "right_pr_number": 65995, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/normalize-reply.ts" + ], + "similarity": 0.474, + "size_similarity": 0.988 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.211, + "left_pr_number": 65995, + "right_pr_number": 69394, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/normalize-reply.ts" + ], + "similarity": 0.331, + "size_similarity": 0.333 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.088, + "left_pr_number": 65541, + "right_pr_number": 69394, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [], - "similarity": 0.392, - "size_similarity": 0.971 + "similarity": 0.322, + "size_similarity": 0.737 + }, + { + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.087, + "left_pr_number": 37904, + "right_pr_number": 65541, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [], + "similarity": 0.279, + "size_similarity": 0.458 } ], - "pr_count": 2, + "pr_count": 4, "pr_numbers": [ - 66478, - 68455 + 37904, + 65541, + 65995, + 69394 ], - "recent_pr_count": 2, + "recent_pr_count": 1, "recent_pr_numbers": [ - 66478, - 68455 + 69394 ], - "representative_pr_number": 66478, - "representative_title": "fix(feishu): normalize unicode emojis to Feishu emoji type strings for reactions API (#66406)", - "representative_url": "https://github.com/openclaw/openclaw/pull/66478", + "representative_pr_number": 37904, + "representative_title": "fix(reply): suppress JSON/channelData NO_REPLY action payloads", + "representative_url": "https://github.com/openclaw/openclaw/pull/37904", "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], - "shared_filenames": [], - "summary": "2 open PRs cluster in `extensions/feishu/src`, `extensions/feishu`, `extensions` with similar change breadth; representative PR #66478.", - "title": "Scope: fix(feishu): normalize unicode emojis to Feishu emoji type strings for reactions API (#66406)" + "shared_filenames": [ + "src/auto-reply/reply/normalize-reply.ts", + "src/auto-reply/reply/reply-delivery.test.ts", + "src/auto-reply/reply/reply-delivery.ts", + "src/auto-reply/reply/reply-utils.test.ts" + ], + "summary": "4 open PRs share weighted file overlap around `src/auto-reply/reply/normalize-reply.ts`, `src/auto-reply/reply/reply-delivery.test.ts`, `src/auto-reply/reply/reply-delivery.ts`; representative PR #37904.", + "title": "Scope: fix(reply): suppress JSON/channelData NO_REPLY action payloads" }, { "authors": [ - "mcaxtr" + "tianhaocui" ], - "average_similarity": 0.383, - "cluster_id": "pr-scope-66824-2", + "average_similarity": 0.46, + "cluster_id": "pr-scope-37412-4", "kind": "pr_scope", - "last_activity_at": "2026-04-18T16:33:59Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-20T06:19:42Z", + "outside_window_prs": [ + { + "additions": 45, + "author": "0xlin2023", + "changed_files": 3, + "created_at": "2026-03-06T07:26:56Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/37412/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37412", + "merged": false, + "number": 37412, + "state": "open", + "title": "fix(ui): support output_text content type in message extractor", + "updated_at": "2026-04-19T04:33:00Z" + }, + { + "additions": 4, + "author": "hijzy", + "changed_files": 2, + "created_at": "2026-03-24T09:41:21Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53588/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53588", + "merged": false, + "number": 53588, + "state": "open", + "title": "fix: strip tags from user messages in WebChat UI", + "updated_at": "2026-03-24T20:15:30Z" + }, + { + "additions": 33, + "author": "w-sss", + "changed_files": 1, + "created_at": "2026-04-12T05:19:25Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65187/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65187", + "merged": false, + "number": 65187, + "state": "open", + "title": "test: add regression tests for tag stripping in UI message extraction", + "updated_at": "2026-04-12T14:41:16Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.733, - "concentration_similarity": 0.977, - "content_similarity": 0.185, - "left_pr_number": 66824, - "right_pr_number": 68612, + "breadth_similarity": 1.0, + "concentration_similarity": 0.767, + "content_similarity": 0.719, + "left_pr_number": 53588, + "right_pr_number": 68855, + "shared_directories": [ + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/chat/message-extract.ts" + ], + "similarity": 0.687, + "size_similarity": 0.3 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.646, + "content_similarity": 0.56, + "left_pr_number": 37412, + "right_pr_number": 65187, + "shared_directories": [ + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/chat/message-extract.test.ts" + ], + "similarity": 0.569, + "size_similarity": 0.688 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.746, + "content_similarity": 0.503, + "left_pr_number": 37412, + "right_pr_number": 68855, + "shared_directories": [ + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/chat/message-extract.ts" + ], + "similarity": 0.535, + "size_similarity": 0.417 + }, + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.979, + "content_similarity": 0.391, + "left_pr_number": 37412, + "right_pr_number": 53588, + "shared_directories": [ + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/ui/chat/message-extract.ts" + ], + "similarity": 0.425, + "size_similarity": 0.125 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.9, + "content_similarity": 0.214, + "left_pr_number": 65187, + "right_pr_number": 68855, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], - "shared_filenames": [ - "src/auto-reply/reply/dispatch-from-config.test.ts", - "src/auto-reply/reply/dispatch-from-config.ts", - "src/auto-reply/reply/get-reply.ts" + "shared_filenames": [], + "similarity": 0.336, + "size_similarity": 0.606 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.667, + "content_similarity": 0.14, + "left_pr_number": 53588, + "right_pr_number": 65187, + "shared_directories": [ + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.383, - "size_similarity": 0.873 + "shared_filenames": [], + "similarity": 0.208, + "size_similarity": 0.182 } ], - "pr_count": 2, + "pr_count": 4, "pr_numbers": [ - 66824, - 68612 + 37412, + 53588, + 65187, + 68855 ], - "recent_pr_count": 2, + "recent_pr_count": 1, "recent_pr_numbers": [ - 66824, - 68612 + 68855 ], - "representative_pr_number": 66824, - "representative_title": "fix(commands): add core channel-resolved auth seam", - "representative_url": "https://github.com/openclaw/openclaw/pull/66824", + "representative_pr_number": 68855, + "representative_title": "fix: guard against non-string content delta and thinking blocks", + "representative_url": "https://github.com/openclaw/openclaw/pull/68855", "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "ui/src/ui/chat", + "ui/src/ui", + "ui/src", + "ui", "src" ], "shared_filenames": [ - "src/auto-reply/reply/get-reply.ts", - "src/auto-reply/reply/dispatch-from-config.test.ts", - "src/auto-reply/reply/dispatch-from-config.ts" + "ui/src/ui/chat/message-extract.ts", + "ui/src/ui/chat/message-extract.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/get-reply.ts`, `src/auto-reply/reply/dispatch-from-config.test.ts`, `src/auto-reply/reply/dispatch-from-config.ts`; representative PR #66824.", - "title": "Scope: fix(commands): add core channel-resolved auth seam" + "summary": "4 open PRs share weighted file overlap around `ui/src/ui/chat/message-extract.ts`, `ui/src/ui/chat/message-extract.test.ts`; representative PR #68855.", + "title": "Scope: fix: guard against non-string content delta and thinking blocks" }, { "authors": [ - "WuKongAI-CMU", - "rarest" + "nightq" ], - "average_similarity": 0.371, - "cluster_id": "pr-scope-65750-2", + "average_similarity": 0.437, + "cluster_id": "pr-scope-63644-4", "kind": "pr_scope", - "last_activity_at": "2026-04-16T06:54:34Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-18T05:47:09Z", + "outside_window_prs": [ + { + "additions": 10, + "author": "macdao", + "changed_files": 3, + "created_at": "2026-04-09T08:45:01Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/63644/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63644", + "merged": false, + "number": 63644, + "state": "open", + "title": "fix(ui): fix iPhone Safari chat layout and input zoom", + "updated_at": "2026-04-10T09:35:37Z" + }, + { + "additions": 7, + "author": "NianJiuZst", + "changed_files": 2, + "created_at": "2026-04-11T06:14:28Z", + "deletions": 2, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64673/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64673", + "merged": false, + "number": 64673, + "state": "open", + "title": "fix(ui): set input font-size to 16px to prevent iOS Safari auto-zoom on focus", + "updated_at": "2026-04-11T06:43:05Z" + }, + { + "additions": 2, + "author": "xinmotlanthua", + "changed_files": 1, + "created_at": "2026-04-14T03:34:55Z", + "deletions": 9, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66311/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66311", + "merged": false, + "number": 66311, + "state": "open", + "title": "fix: remove max-height truncation on webchat tool-call cards", + "updated_at": "2026-04-14T04:12:44Z" + } + ], "pairwise": [ + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.722, + "content_similarity": 0.49, + "left_pr_number": 63644, + "right_pr_number": 64673, + "shared_directories": [ + "ui/src/styles/chat", + "ui/src/styles", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/styles/chat/layout.css" + ], + "similarity": 0.575, + "size_similarity": 0.75 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.778, + "content_similarity": 0.391, + "left_pr_number": 64673, + "right_pr_number": 68422, + "shared_directories": [ + "ui/src/styles/chat", + "ui/src/styles", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/styles/chat/layout.css" + ], + "similarity": 0.486, + "size_similarity": 0.818 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.5, + "content_similarity": 0.367, + "left_pr_number": 63644, + "right_pr_number": 68422, + "shared_directories": [ + "ui/src/styles/chat", + "ui/src/styles", + "ui/src", + "ui" + ], + "shared_filenames": [ + "ui/src/styles/chat/layout.css" + ], + "similarity": 0.461, + "size_similarity": 0.917 + }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.137, - "left_pr_number": 65750, - "right_pr_number": 67259, + "content_similarity": 0.204, + "left_pr_number": 66311, + "right_pr_number": 68422, "shared_directories": [ - "ui/src/ui", + "ui/src/styles/chat", + "ui/src/styles", "ui/src", "ui" ], "shared_filenames": [], - "similarity": 0.371, - "size_similarity": 0.833 + "similarity": 0.443, + "size_similarity": 1.0 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.778, + "content_similarity": 0.173, + "left_pr_number": 64673, + "right_pr_number": 66311, + "shared_directories": [ + "ui/src/styles/chat", + "ui/src/styles", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.333, + "size_similarity": 0.818 + }, + { + "breadth_similarity": 0.417, + "concentration_similarity": 0.5, + "content_similarity": 0.175, + "left_pr_number": 63644, + "right_pr_number": 66311, + "shared_directories": [ + "ui/src/styles/chat", + "ui/src/styles", + "ui/src", + "ui" + ], + "shared_filenames": [], + "similarity": 0.327, + "size_similarity": 0.917 } ], - "pr_count": 2, + "pr_count": 4, "pr_numbers": [ - 65750, - 67259 + 63644, + 64673, + 66311, + 68422 ], - "recent_pr_count": 2, + "recent_pr_count": 1, "recent_pr_numbers": [ - 65750, - 67259 + 68422 ], - "representative_pr_number": 65750, - "representative_title": "fix(control-ui): stop reloading history after clear (#65719)", - "representative_url": "https://github.com/openclaw/openclaw/pull/65750", + "representative_pr_number": 64673, + "representative_title": "fix(ui): set input font-size to 16px to prevent iOS Safari auto-zoom on focus", + "representative_url": "https://github.com/openclaw/openclaw/pull/64673", "shared_directories": [ - "ui/src/ui", + "ui/src/styles/chat", + "ui/src/styles", "ui/src", "ui" ], - "shared_filenames": [], - "summary": "2 open PRs cluster in `ui/src/ui`, `ui/src`, `ui` with similar change breadth; representative PR #65750.", - "title": "Scope: fix(control-ui): stop reloading history after clear (#65719)" + "shared_filenames": [ + "ui/src/styles/chat/layout.css" + ], + "summary": "4 open PRs share weighted file overlap around `ui/src/styles/chat/layout.css`; representative PR #64673.", + "title": "Scope: fix(ui): set input font-size to 16px to prevent iOS Safari auto-zoom on focus" }, { "authors": [ - "JUSTICEESSIELP", - "smartchainark" + "Lucenx9" ], - "average_similarity": 0.368, - "cluster_id": "pr-scope-65649-2", + "average_similarity": 0.431, + "cluster_id": "pr-scope-53332-4", "kind": "pr_scope", - "last_activity_at": "2026-04-18T08:19:52Z", - "outside_window_prs": [], + "last_activity_at": "2026-04-18T21:22:50Z", + "outside_window_prs": [ + { + "additions": 65, + "author": "omarshahine", + "changed_files": 1, + "created_at": "2026-03-24T02:59:40Z", + "deletions": 47, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53332/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53332", + "merged": false, + "number": 53332, + "state": "open", + "title": "fix: sendPolicy deny should suppress delivery, not inbound processing", + "updated_at": "2026-03-24T20:15:31Z" + }, + { + "additions": 190, + "author": "hongzexin", + "changed_files": 4, + "created_at": "2026-04-10T07:52:21Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64182/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64182", + "merged": false, + "number": 64182, + "state": "open", + "title": "Reply: allow authorized group command sessions to receive tool updates", + "updated_at": "2026-04-10T12:46:35Z" + }, + { + "additions": 270, + "author": "qualiobra", + "changed_files": 4, + "created_at": "2026-04-11T00:50:10Z", + "deletions": 33, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64559/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64559", + "merged": false, + "number": 64559, + "state": "open", + "title": "fix(plugins): emit message_received hook for queued inbound messages (#64525)", + "updated_at": "2026-04-11T16:32:15Z" + } + ], "pairwise": [ { - "breadth_similarity": 0.875, + "breadth_similarity": 0.667, "concentration_similarity": 1.0, - "content_similarity": 0.165, - "left_pr_number": 65649, - "right_pr_number": 68462, + "content_similarity": 0.571, + "left_pr_number": 53332, + "right_pr_number": 68698, "shared_directories": [ - "src/config", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/config/io.observe-recovery.ts" + "src/auto-reply/reply/dispatch-from-config.ts" ], - "similarity": 0.368, - "size_similarity": 0.768 - } - ], - "pr_count": 2, - "pr_numbers": [ - 65649, - 68462 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 65649, - 68462 - ], - "representative_pr_number": 65649, - "representative_title": "fix(config): cap forensic clobber snapshots at 32 per path", - "representative_url": "https://github.com/openclaw/openclaw/pull/65649", - "shared_directories": [ - "src/config", - "src" - ], - "shared_filenames": [ - "src/config/io.observe-recovery.ts" - ], - "summary": "2 open PRs share weighted file overlap around `src/config/io.observe-recovery.ts`; representative PR #65649.", - "title": "Scope: fix(config): cap forensic clobber snapshots at 32 per path" - }, - { - "authors": [ - "pfrederiksen", - "zoneblaze" - ], - "average_similarity": 0.363, - "cluster_id": "pr-scope-67871-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T07:53:22Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.63, + "size_similarity": 0.757 + }, { - "breadth_similarity": 1.0, + "breadth_similarity": 0.625, + "concentration_similarity": 0.804, + "content_similarity": 0.302, + "left_pr_number": 64182, + "right_pr_number": 68698, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/dispatch-from-config.test.ts", + "src/auto-reply/reply/dispatch-from-config.ts" + ], + "similarity": 0.428, + "size_similarity": 0.763 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.804, + "content_similarity": 0.282, + "left_pr_number": 64182, + "right_pr_number": 64559, + "shared_directories": [ + "src/auto-reply/reply", + "src/auto-reply", + "src" + ], + "shared_filenames": [ + "src/auto-reply/reply/dispatch-from-config.test.ts", + "src/auto-reply/reply/dispatch-from-config.ts" + ], + "similarity": 0.409, + "size_similarity": 0.64 + }, + { + "breadth_similarity": 0.875, "concentration_similarity": 1.0, - "content_similarity": 0.119, - "left_pr_number": 67871, - "right_pr_number": 68278, + "content_similarity": 0.254, + "left_pr_number": 64559, + "right_pr_number": 68698, "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], - "shared_filenames": [], - "similarity": 0.363, - "size_similarity": 0.868 - } - ], - "pr_count": 2, - "pr_numbers": [ - 67871, - 68278 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 67871, - 68278 - ], - "representative_pr_number": 67871, - "representative_title": "fix(discord): narrow message tool component block schema", - "representative_url": "https://github.com/openclaw/openclaw/pull/67871", - "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" - ], - "shared_filenames": [], - "summary": "2 open PRs cluster in `extensions/discord/src`, `extensions/discord`, `extensions` with similar change breadth; representative PR #67871.", - "title": "Scope: fix(discord): narrow message tool component block schema" - }, - { - "authors": [ - "asakir44", - "neo1027144-creator" - ], - "average_similarity": 0.359, - "cluster_id": "pr-scope-65999-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T06:18:06Z", - "outside_window_prs": [], - "pairwise": [ + "shared_filenames": [ + "src/auto-reply/reply/dispatch-from-config.test.ts", + "src/auto-reply/reply/dispatch-from-config.ts" + ], + "similarity": 0.389, + "size_similarity": 0.488 + }, { - "breadth_similarity": 0.667, + "breadth_similarity": 0.625, "concentration_similarity": 1.0, - "content_similarity": 0.337, - "left_pr_number": 65999, - "right_pr_number": 68836, + "content_similarity": 0.282, + "left_pr_number": 53332, + "right_pr_number": 64559, "shared_directories": [ - "extensions/telegram/src/bot", - "extensions/telegram/src", - "extensions/telegram", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "extensions/telegram/src/bot/delivery.replies.ts" + "src/auto-reply/reply/dispatch-from-config.ts" ], - "similarity": 0.359, - "size_similarity": 0.041 - } - ], - "pr_count": 2, - "pr_numbers": [ - 65999, - 68836 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 65999, - 68836 - ], - "representative_pr_number": 65999, - "representative_title": "fix(telegram): compute and pass Ogg duration for voice messages", - "representative_url": "https://github.com/openclaw/openclaw/pull/65999", - "shared_directories": [ - "extensions/telegram/src/bot", - "extensions/telegram/src", - "extensions/telegram", - "extensions" - ], - "shared_filenames": [ - "extensions/telegram/src/bot/delivery.replies.ts" - ], - "summary": "2 open PRs share weighted file overlap around `extensions/telegram/src/bot/delivery.replies.ts`; representative PR #65999.", - "title": "Scope: fix(telegram): compute and pass Ogg duration for voice messages" - }, - { - "authors": [ - "Takhoffman", - "acwilan" - ], - "average_similarity": 0.358, - "cluster_id": "pr-scope-67421-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-17T23:51:11Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.366, + "size_similarity": 0.37 + }, { - "breadth_similarity": 0.762, - "concentration_similarity": 0.822, - "content_similarity": 0.168, - "left_pr_number": 67421, - "right_pr_number": 68331, + "breadth_similarity": 0.375, + "concentration_similarity": 0.804, + "content_similarity": 0.286, + "left_pr_number": 53332, + "right_pr_number": 64182, "shared_directories": [ - "src/agents", - "src/config", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/config/schema.base.generated.ts", - "src/config/schema.help.ts", - "src/config/schema.labels.ts", - "src/config/zod-schema.agent-runtime.ts" + "src/auto-reply/reply/dispatch-from-config.ts" ], - "similarity": 0.358, - "size_similarity": 0.826 + "similarity": 0.364, + "size_similarity": 0.577 } ], - "pr_count": 2, + "pr_count": 4, "pr_numbers": [ - 67421, - 68331 + 53332, + 64182, + 64559, + 68698 ], - "recent_pr_count": 2, + "recent_pr_count": 1, "recent_pr_numbers": [ - 67421, - 68331 + 68698 ], - "representative_pr_number": 67421, - "representative_title": "feat: add per-agent web_fetch ssrf overrides", - "representative_url": "https://github.com/openclaw/openclaw/pull/67421", + "representative_pr_number": 68698, + "representative_title": "fix(auto-reply): commit inbound dedupe on handled exits", + "representative_url": "https://github.com/openclaw/openclaw/pull/68698", "shared_directories": [ - "src/config", - "src/agents", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/config/zod-schema.agent-runtime.ts", - "src/config/schema.labels.ts", - "src/config/schema.help.ts", - "src/config/schema.base.generated.ts" + "src/auto-reply/reply/dispatch-from-config.ts", + "src/auto-reply/reply/dispatch-from-config.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/config/zod-schema.agent-runtime.ts`, `src/config/schema.labels.ts`, `src/config/schema.help.ts`; representative PR #67421.", - "title": "Scope: feat: add per-agent web_fetch ssrf overrides" + "summary": "4 open PRs share weighted file overlap around `src/auto-reply/reply/dispatch-from-config.ts`, `src/auto-reply/reply/dispatch-from-config.test.ts`; representative PR #68698.", + "title": "Scope: fix(auto-reply): commit inbound dedupe on handled exits" }, { "authors": [ - "kamusis", - "zhouhe-xydt" + "armorbreak001" ], - "average_similarity": 0.357, - "cluster_id": "pr-scope-65785-2", + "average_similarity": 0.417, + "cluster_id": "pr-scope-65425-4", "kind": "pr_scope", - "last_activity_at": "2026-04-15T13:17:56Z", - "outside_window_prs": [], - "pairwise": [ + "last_activity_at": "2026-04-19T06:42:33Z", + "outside_window_prs": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.093, - "left_pr_number": 65785, - "right_pr_number": 67195, - "shared_directories": [ - "extensions/minimax", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.357, - "size_similarity": 0.947 + "additions": 129, + "author": "samrusani", + "changed_files": 6, + "created_at": "2026-04-12T15:24:41Z", + "deletions": 17, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65425/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65425", + "merged": false, + "number": 65425, + "state": "open", + "title": "Allow zero group chat history limit", + "updated_at": "2026-04-12T16:11:14Z" + }, + { + "additions": 218, + "author": "samrusani", + "changed_files": 6, + "created_at": "2026-04-12T15:48:23Z", + "deletions": 44, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65435/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65435", + "merged": false, + "number": 65435, + "state": "open", + "title": "[codex] add memory text-search fallback", + "updated_at": "2026-04-12T17:26:44Z" + }, + { + "additions": 170, + "author": "nxmxbbd", + "changed_files": 6, + "created_at": "2026-04-13T06:31:55Z", + "deletions": 13, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65755/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65755", + "merged": false, + "number": 65755, + "state": "open", + "title": "fix(memory): add watcher error handling and non-zero default intervalMinutes", + "updated_at": "2026-04-13T06:51:45Z" } ], - "pr_count": 2, - "pr_numbers": [ - 65785, - 67195 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 65785, - 67195 - ], - "representative_pr_number": 65785, - "representative_title": "fix(minimax): allow web_search to use MINIMAX_OAUTH_TOKEN", - "representative_url": "https://github.com/openclaw/openclaw/pull/65785", - "shared_directories": [ - "extensions/minimax", - "extensions" - ], - "shared_filenames": [], - "summary": "2 open PRs cluster in `extensions/minimax`, `extensions` with similar change breadth; representative PR #65785.", - "title": "Scope: fix(minimax): allow web_search to use MINIMAX_OAUTH_TOKEN" - }, - { - "authors": [ - "c6zks4gssn-droid", - "soumikbhatta" - ], - "average_similarity": 0.357, - "cluster_id": "pr-scope-66213-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-16T22:27:19Z", - "outside_window_prs": [], "pairwise": [ { - "breadth_similarity": 0.833, - "concentration_similarity": 0.824, - "content_similarity": 0.13, - "left_pr_number": 66213, - "right_pr_number": 67841, + "breadth_similarity": 0.75, + "concentration_similarity": 0.7, + "content_similarity": 0.697, + "left_pr_number": 65425, + "right_pr_number": 65435, "shared_directories": [ - ".github/workflows", - ".github" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", + "src" ], - "shared_filenames": [], - "similarity": 0.357, - "size_similarity": 0.94 - } - ], - "pr_count": 2, - "pr_numbers": [ - 66213, - 67841 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 66213, - 67841 - ], - "representative_pr_number": 66213, - "representative_title": "fix(ci): add post-publish asset verification for macOS stable releases", - "representative_url": "https://github.com/openclaw/openclaw/pull/66213", - "shared_directories": [ - ".github/workflows", - ".github" - ], - "shared_filenames": [], - "summary": "2 open PRs cluster in `.github/workflows`, `.github` with similar change breadth; representative PR #66213.", - "title": "Scope: fix(ci): add post-publish asset verification for macOS stable releases" - }, - { - "authors": [ - "1aifanatic", - "nightq" - ], - "average_similarity": 0.35, - "cluster_id": "pr-scope-68308-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-18T19:01:59Z", - "outside_window_prs": [], - "pairwise": [ + "shared_filenames": [ + "extensions/memory-core/src/memory/index.test.ts", + "extensions/memory-core/src/memory/manager-search.test.ts", + "extensions/memory-core/src/memory/manager.ts" + ], + "similarity": 0.681, + "size_similarity": 0.557 + }, { "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.215, - "left_pr_number": 68308, - "right_pr_number": 68469, + "concentration_similarity": 0.83, + "content_similarity": 0.258, + "left_pr_number": 65425, + "right_pr_number": 68822, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", "extensions" ], - "shared_filenames": [], - "similarity": 0.35, - "size_similarity": 0.5 - } - ], - "pr_count": 2, - "pr_numbers": [ - 68308, - 68469 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 68308, - 68469 - ], - "representative_pr_number": 68308, - "representative_title": "fix(browser): return undefined ssrfPolicy when browser.ssrfPolicy is unset", - "representative_url": "https://github.com/openclaw/openclaw/pull/68308", - "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" - ], - "shared_filenames": [], - "summary": "2 open PRs cluster in `extensions/browser/src/browser`, `extensions/browser/src`, `extensions/browser` with similar change breadth; representative PR #68308.", - "title": "Scope: fix(browser): return undefined ssrfPolicy when browser.ssrfPolicy is unset" - }, - { - "authors": [ - "HelloBias", - "geekhuashan" - ], - "average_similarity": 0.348, - "cluster_id": "pr-scope-66241-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-15T22:27:12Z", - "outside_window_prs": [], - "pairwise": [ + "shared_filenames": [ + "extensions/memory-core/src/memory/manager.ts" + ], + "similarity": 0.42, + "size_similarity": 0.825 + }, { "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.13, - "left_pr_number": 66241, - "right_pr_number": 66891, + "concentration_similarity": 0.872, + "content_similarity": 0.173, + "left_pr_number": 65425, + "right_pr_number": 65755, "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", + "src" ], "shared_filenames": [], - "similarity": 0.348, - "size_similarity": 0.714 - } - ], - "pr_count": 2, - "pr_numbers": [ - 66241, - 66891 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 66241, - 66891 - ], - "representative_pr_number": 66241, - "representative_title": "Discord: persist component registry to disk across gateway restarts", - "representative_url": "https://github.com/openclaw/openclaw/pull/66241", - "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" - ], - "shared_filenames": [], - "summary": "2 open PRs cluster in `extensions/discord/src`, `extensions/discord`, `extensions` with similar change breadth; representative PR #66241.", - "title": "Scope: Discord: persist component registry to disk across gateway restarts" - }, - { - "authors": [ - "Feelw00" - ], - "average_similarity": 0.347, - "cluster_id": "pr-scope-68842-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T06:43:59Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.384, + "size_similarity": 0.798 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.088, - "left_pr_number": 68842, - "right_pr_number": 68848, + "breadth_similarity": 0.75, + "concentration_similarity": 0.958, + "content_similarity": 0.121, + "left_pr_number": 65755, + "right_pr_number": 68822, "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [], - "similarity": 0.347, - "size_similarity": 0.901 - } - ], - "pr_count": 2, - "pr_numbers": [ - 68842, - 68848 - ], - "recent_pr_count": 2, - "recent_pr_numbers": [ - 68842, - 68848 - ], - "representative_pr_number": 68842, - "representative_title": "fix(gateway): bound costUsageCache with MAX + FIFO eviction", - "representative_url": "https://github.com/openclaw/openclaw/pull/68842", - "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", - "src" - ], - "shared_filenames": [], - "summary": "2 open PRs cluster in `src/gateway/server-methods`, `src/gateway`, `src` with similar change breadth; representative PR #68842.", - "title": "Scope: fix(gateway): bound costUsageCache with MAX + FIFO eviction" - }, - { - "authors": [ - "alexanderxfgl-bit", - "kagura-agent" - ], - "average_similarity": 0.346, - "cluster_id": "pr-scope-68112-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-19T02:40:23Z", - "outside_window_prs": [], - "pairwise": [ + "similarity": 0.353, + "size_similarity": 0.967 + }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.959, - "content_similarity": 0.222, - "left_pr_number": 68112, - "right_pr_number": 68783, + "breadth_similarity": 0.5, + "concentration_similarity": 0.87, + "content_similarity": 0.21, + "left_pr_number": 65435, + "right_pr_number": 68822, "shared_directories": [ - "src/cron/service", - "src/cron", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/cron/service/ops.ts", - "src/cron/service/timer.ts" + "extensions/memory-core/src/memory/manager.ts" ], - "similarity": 0.346, - "size_similarity": 0.28 + "similarity": 0.342, + "size_similarity": 0.676 + }, + { + "breadth_similarity": 0.75, + "concentration_similarity": 0.828, + "content_similarity": 0.14, + "left_pr_number": 65435, + "right_pr_number": 65755, + "shared_directories": [ + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", + "src" + ], + "shared_filenames": [], + "similarity": 0.319, + "size_similarity": 0.698 } ], - "pr_count": 2, + "pr_count": 4, "pr_numbers": [ - 68112, - 68783 + 65425, + 65435, + 65755, + 68822 ], - "recent_pr_count": 2, + "recent_pr_count": 1, "recent_pr_numbers": [ - 68112, - 68783 + 68822 ], - "representative_pr_number": 68112, - "representative_title": "fix(cron): prevent scheduler death when startup catch-up fails", - "representative_url": "https://github.com/openclaw/openclaw/pull/68112", + "representative_pr_number": 65425, + "representative_title": "Allow zero group chat history limit", + "representative_url": "https://github.com/openclaw/openclaw/pull/65425", "shared_directories": [ - "src/cron/service", - "src/cron", + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions", "src" ], "shared_filenames": [ - "src/cron/service/ops.ts", - "src/cron/service/timer.ts" + "extensions/memory-core/src/memory/manager.ts", + "extensions/memory-core/src/memory/manager-search.test.ts", + "extensions/memory-core/src/memory/index.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/cron/service/ops.ts`, `src/cron/service/timer.ts`; representative PR #68112.", - "title": "Scope: fix(cron): prevent scheduler death when startup catch-up fails" + "summary": "4 open PRs share weighted file overlap around `extensions/memory-core/src/memory/manager.ts`, `extensions/memory-core/src/memory/manager-search.test.ts`, `extensions/memory-core/src/memory/index.test.ts`; representative PR #65425.", + "title": "Scope: Allow zero group chat history limit" }, { "authors": [ - "Linux2010" + "draix" ], - "average_similarity": 0.593, - "cluster_id": "pr-scope-36296-6", + "average_similarity": 0.408, + "cluster_id": "pr-scope-37549-4", "kind": "pr_scope", - "last_activity_at": "2026-04-14T01:54:52Z", + "last_activity_at": "2026-04-15T13:40:21Z", "outside_window_prs": [ { - "additions": 3, - "author": "forestSKYwind", - "changed_files": 1, - "created_at": "2026-03-05T14:53:22Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36296/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36296", - "merged": false, - "number": 36296, - "state": "open", - "title": "pnpm: add @discordjs/opus to ignoredBuiltDependencies for ARM64 Linux", - "updated_at": "2026-04-17T04:33:24Z" - }, - { - "additions": 2, - "author": "KChow-ctrl", - "changed_files": 1, - "created_at": "2026-04-08T16:31:37Z", - "deletions": 1, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63247/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63247", - "merged": false, - "number": 63247, - "state": "open", - "title": "fix: include extensions/ in published files for bundled plugin runtime deps", - "updated_at": "2026-04-11T22:23:35Z" - }, - { - "additions": 1, - "author": "adamvandenbos", - "changed_files": 1, - "created_at": "2026-04-09T07:42:06Z", - "deletions": 0, + "additions": 56, + "author": "lishuaigit", + "changed_files": 4, + "created_at": "2026-03-06T09:19:25Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63614/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63614", + "files_url": "https://github.com/openclaw/openclaw/pull/37549/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37549", "merged": false, - "number": 63614, + "number": 37549, "state": "open", - "title": "fix: include qa scenario assets in npm package", - "updated_at": "2026-04-11T23:10:32Z" + "title": "fix(logging): subsystem loggers now follow root logger rotation", + "updated_at": "2026-04-19T04:33:57Z" }, { - "additions": 1, - "author": "scottgl9", - "changed_files": 1, - "created_at": "2026-04-09T15:47:55Z", - "deletions": 0, + "additions": 137, + "author": "monsonego", + "changed_files": 3, + "created_at": "2026-04-07T12:27:51Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63817/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63817", + "files_url": "https://github.com/openclaw/openclaw/pull/62482/files", + "html_url": "https://github.com/openclaw/openclaw/pull/62482", "merged": false, - "number": 63817, + "number": 62482, "state": "open", - "title": "fix: include QA scenario pack in npm package", - "updated_at": "2026-04-10T13:56:20Z" + "title": "fix: refresh subsystem file loggers across daily log rollovers [AI-assisted]", + "updated_at": "2026-04-12T13:28:19Z" }, { - "additions": 1, - "author": "adamxrodriguez", + "additions": 12, + "author": "wyyis", "changed_files": 1, - "created_at": "2026-04-11T04:00:56Z", - "deletions": 0, + "created_at": "2026-04-13T08:29:43Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64623/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64623", + "files_url": "https://github.com/openclaw/openclaw/pull/65804/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65804", "merged": false, - "number": 64623, + "number": 65804, "state": "open", - "title": "fix(qa-lab): qa/scenarios missing from npm package manifest", - "updated_at": "2026-04-11T04:12:02Z" + "title": "fix: refresh SubsystemLogger file child on rolling log rotation", + "updated_at": "2026-04-13T09:29:46Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, + "breadth_similarity": 0.625, "concentration_similarity": 1.0, - "content_similarity": 1.0, - "left_pr_number": 63614, - "right_pr_number": 63817, - "shared_directories": [], + "content_similarity": 0.497, + "left_pr_number": 37549, + "right_pr_number": 65804, + "shared_directories": [ + "src/logging", + "src" + ], "shared_filenames": [ - "package.json" + "src/logging/subsystem.ts" ], - "similarity": 1.0, - "size_similarity": 1.0 + "similarity": 0.512, + "size_similarity": 0.344 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 1.0, - "left_pr_number": 63614, - "right_pr_number": 64623, - "shared_directories": [], + "breadth_similarity": 0.417, + "concentration_similarity": 0.918, + "content_similarity": 0.471, + "left_pr_number": 62482, + "right_pr_number": 65804, + "shared_directories": [ + "src/logging", + "src" + ], "shared_filenames": [ - "package.json" + "src/logging/subsystem.ts" ], - "similarity": 1.0, - "size_similarity": 1.0 + "similarity": 0.439, + "size_similarity": 0.144 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 1.0, - "left_pr_number": 63817, - "right_pr_number": 64623, - "shared_directories": [], + "breadth_similarity": 0.8, + "concentration_similarity": 0.931, + "content_similarity": 0.193, + "left_pr_number": 62482, + "right_pr_number": 67206, + "shared_directories": [ + "src/logging", + "src" + ], "shared_filenames": [ - "package.json" + "src/logging/subsystem.ts" ], - "similarity": 1.0, - "size_similarity": 1.0 + "similarity": 0.401, + "size_similarity": 0.93 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.981, - "left_pr_number": 63247, - "right_pr_number": 63614, - "shared_directories": [], + "breadth_similarity": 0.65, + "concentration_similarity": 0.987, + "content_similarity": 0.314, + "left_pr_number": 37549, + "right_pr_number": 67206, + "shared_directories": [ + "src/logging", + "src" + ], "shared_filenames": [ - "package.json" + "src/logging/logger.ts", + "src/logging/state.ts", + "src/logging/subsystem.ts" ], - "similarity": 0.887, - "size_similarity": 0.333 + "similarity": 0.392, + "size_similarity": 0.389 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.981, - "left_pr_number": 63247, - "right_pr_number": 63817, - "shared_directories": [], + "breadth_similarity": 0.625, + "concentration_similarity": 0.918, + "content_similarity": 0.285, + "left_pr_number": 37549, + "right_pr_number": 62482, + "shared_directories": [ + "src/logging", + "src" + ], "shared_filenames": [ - "package.json" + "src/logging/subsystem.ts" ], - "similarity": 0.887, - "size_similarity": 0.333 + "similarity": 0.371, + "size_similarity": 0.418 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.981, - "left_pr_number": 63247, - "right_pr_number": 64623, - "shared_directories": [], - "shared_filenames": [ - "package.json" - ], - "similarity": 0.887, - "size_similarity": 0.333 + "breadth_similarity": 0.35, + "concentration_similarity": 0.987, + "content_similarity": 0.329, + "left_pr_number": 65804, + "right_pr_number": 67206, + "shared_directories": [ + "src/logging", + "src" + ], + "shared_filenames": [ + "src/logging/subsystem.ts" + ], + "similarity": 0.335, + "size_similarity": 0.134 + } + ], + "pr_count": 4, + "pr_numbers": [ + 37549, + 62482, + 65804, + 67206 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 67206 + ], + "representative_pr_number": 65804, + "representative_title": "fix: refresh SubsystemLogger file child on rolling log rotation", + "representative_url": "https://github.com/openclaw/openclaw/pull/65804", + "shared_directories": [ + "src/logging", + "src" + ], + "shared_filenames": [ + "src/logging/subsystem.ts", + "src/logging/state.ts", + "src/logging/logger.ts" + ], + "summary": "4 open PRs share weighted file overlap around `src/logging/subsystem.ts`, `src/logging/state.ts`, `src/logging/logger.ts`; representative PR #65804.", + "title": "Scope: fix: refresh SubsystemLogger file child on rolling log rotation" + }, + { + "authors": [ + "nightq" + ], + "average_similarity": 0.406, + "cluster_id": "pr-scope-65286-4", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T12:02:34Z", + "outside_window_prs": [ + { + "additions": 13, + "author": "lightning-openclaw", + "changed_files": 2, + "created_at": "2026-04-12T09:57:06Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65286/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65286", + "merged": false, + "number": 65286, + "state": "open", + "title": "fix(slack): resolve DM thread delivery failure (channel_not_found)", + "updated_at": "2026-04-12T12:36:03Z" }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.262, - "left_pr_number": 36296, - "right_pr_number": 63247, - "shared_directories": [], - "shared_filenames": [ - "package.json" - ], - "similarity": 0.484, - "size_similarity": 1.0 + "additions": 9, + "author": "zhouhe-xydt", + "changed_files": 2, + "created_at": "2026-04-13T07:10:35Z", + "deletions": 4, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65773/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65773", + "merged": false, + "number": 65773, + "state": "open", + "title": "fix(slack): print manifest JSON without box-drawing borders", + "updated_at": "2026-04-13T07:14:54Z" }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.348, - "left_pr_number": 63247, - "right_pr_number": 65977, - "shared_directories": [], - "shared_filenames": [ - "package.json" - ], - "similarity": 0.416, - "size_similarity": 0.15 - }, + "additions": 22, + "author": "Bartok9", + "changed_files": 2, + "created_at": "2026-04-13T08:37:29Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65809/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65809", + "merged": false, + "number": 65809, + "state": "open", + "title": "fix(slack): print manifest JSON outside framed note for easy copying", + "updated_at": "2026-04-13T08:41:54Z" + } + ], + "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.308, - "left_pr_number": 36296, - "right_pr_number": 65977, - "shared_directories": [], - "shared_filenames": [ - "package.json" + "content_similarity": 0.772, + "left_pr_number": 65773, + "right_pr_number": 65809, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" ], - "similarity": 0.388, - "size_similarity": 0.15 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.179, - "left_pr_number": 36296, - "right_pr_number": 63614, - "shared_directories": [], "shared_filenames": [ - "package.json" + "extensions/slack/src/setup-core.ts", + "extensions/slack/src/shared.ts" ], - "similarity": 0.325, - "size_similarity": 0.333 + "similarity": 0.768, + "size_similarity": 0.52 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.179, - "left_pr_number": 36296, - "right_pr_number": 63817, - "shared_directories": [], - "shared_filenames": [ - "package.json" + "content_similarity": 0.112, + "left_pr_number": 65773, + "right_pr_number": 69105, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" ], - "similarity": 0.325, - "size_similarity": 0.333 + "shared_filenames": [], + "similarity": 0.378, + "size_similarity": 1.0 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.179, - "left_pr_number": 36296, - "right_pr_number": 64623, - "shared_directories": [], - "shared_filenames": [ - "package.json" + "breadth_similarity": 0.75, + "concentration_similarity": 0.857, + "content_similarity": 0.125, + "left_pr_number": 65286, + "right_pr_number": 69105, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" ], - "similarity": 0.325, - "size_similarity": 0.333 + "shared_filenames": [], + "similarity": 0.344, + "size_similarity": 0.929 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.238, - "left_pr_number": 63614, - "right_pr_number": 65977, - "shared_directories": [], - "shared_filenames": [ - "package.json" + "breadth_similarity": 0.75, + "concentration_similarity": 0.857, + "content_similarity": 0.116, + "left_pr_number": 65286, + "right_pr_number": 65773, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" ], - "similarity": 0.324, - "size_similarity": 0.05 + "shared_filenames": [], + "similarity": 0.338, + "size_similarity": 0.929 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.238, - "left_pr_number": 63817, - "right_pr_number": 65977, - "shared_directories": [], - "shared_filenames": [ - "package.json" + "content_similarity": 0.126, + "left_pr_number": 65809, + "right_pr_number": 69105, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" ], - "similarity": 0.324, - "size_similarity": 0.05 + "shared_filenames": [], + "similarity": 0.316, + "size_similarity": 0.52 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.238, - "left_pr_number": 64623, - "right_pr_number": 65977, - "shared_directories": [], - "shared_filenames": [ - "package.json" + "breadth_similarity": 0.75, + "concentration_similarity": 0.857, + "content_similarity": 0.131, + "left_pr_number": 65286, + "right_pr_number": 65809, + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" ], - "similarity": 0.324, - "size_similarity": 0.05 + "shared_filenames": [], + "similarity": 0.293, + "size_similarity": 0.56 } ], - "pr_count": 6, + "pr_count": 4, "pr_numbers": [ - 36296, - 63247, - 63614, - 63817, - 64623, - 65977 + 65286, + 65773, + 65809, + 69105 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65977 + 69105 + ], + "representative_pr_number": 65773, + "representative_title": "fix(slack): print manifest JSON without box-drawing borders", + "representative_url": "https://github.com/openclaw/openclaw/pull/65773", + "shared_directories": [ + "extensions/slack/src", + "extensions/slack", + "extensions" ], - "representative_pr_number": 63247, - "representative_title": "fix: include extensions/ in published files for bundled plugin runtime deps", - "representative_url": "https://github.com/openclaw/openclaw/pull/63247", - "shared_directories": [], "shared_filenames": [ - "package.json" + "extensions/slack/src/setup-core.ts", + "extensions/slack/src/shared.ts" ], - "summary": "6 open PRs share weighted file overlap around `package.json`; representative PR #63247.", - "title": "Scope: fix: include extensions/ in published files for bundled plugin runtime deps" + "summary": "4 open PRs share weighted file overlap around `extensions/slack/src/setup-core.ts`, `extensions/slack/src/shared.ts`; representative PR #65773.", + "title": "Scope: fix(slack): print manifest JSON without box-drawing borders" }, { "authors": [ - "neilofneils404" + "monasprox" ], - "average_similarity": 0.456, - "cluster_id": "pr-scope-37418-6", + "average_similarity": 0.388, + "cluster_id": "pr-scope-37707-4", "kind": "pr_scope", - "last_activity_at": "2026-04-16T22:36:44Z", + "last_activity_at": "2026-04-18T10:03:07Z", "outside_window_prs": [ { - "additions": 167, - "author": "FuzzyFade", - "changed_files": 3, - "created_at": "2026-03-06T07:37:51Z", - "deletions": 29, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37418/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37418", - "merged": false, - "number": 37418, - "state": "open", - "title": "feat: enable prompt caching for custom providers using anthropic-mess\u2026", - "updated_at": "2026-04-19T04:33:02Z" - }, - { - "additions": 42, - "author": "samyzhh", + "additions": 27, + "author": "flychicken067", "changed_files": 1, - "created_at": "2026-03-24T01:01:35Z", + "created_at": "2026-03-06T11:27:17Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53266/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53266", + "files_url": "https://github.com/openclaw/openclaw/pull/37707/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37707", "merged": false, - "number": 53266, + "number": 37707, "state": "open", - "title": "feat(openai): inject stream_options to enable usage tracking for comp\u2026", - "updated_at": "2026-03-24T20:15:32Z" + "title": "fix(feishu): warn users when dmPolicy default changed from open to pa\u2026", + "updated_at": "2026-04-20T04:37:08Z" }, { - "additions": 72, - "author": "stayrascal", - "changed_files": 4, - "created_at": "2026-03-24T13:43:31Z", - "deletions": 5, + "additions": 45, + "author": "RichardCao", + "changed_files": 2, + "created_at": "2026-03-24T04:21:36Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53717/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53717", + "files_url": "https://github.com/openclaw/openclaw/pull/53377/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53377", "merged": false, - "number": 53717, + "number": 53377, "state": "open", - "title": "feat: support OpenAI Responses API for non-openai providers", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(feishu): make message-tool card schema optional", + "updated_at": "2026-03-24T20:15:31Z" }, { - "additions": 118, - "author": "sasan1200", + "additions": 103, + "author": "MoerAI", "changed_files": 3, - "created_at": "2026-03-24T17:04:06Z", - "deletions": 9, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53819/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53819", - "merged": false, - "number": 53819, - "state": "open", - "title": "Agents: enable Codex parallel tool calls", - "updated_at": "2026-03-24T20:15:28Z" - }, - { - "additions": 29, - "author": "JanPlessow", - "changed_files": 1, - "created_at": "2026-04-11T13:03:55Z", - "deletions": 0, + "created_at": "2026-04-14T10:01:29Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64813/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64813", + "files_url": "https://github.com/openclaw/openclaw/pull/66478/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66478", "merged": false, - "number": 64813, + "number": 66478, "state": "open", - "title": "feat: pass `user` field through to API request body", - "updated_at": "2026-04-11T13:07:28Z" + "title": "fix(feishu): normalize unicode emojis to Feishu emoji type strings for reactions API (#66406)", + "updated_at": "2026-04-18T08:43:33Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.527, - "left_pr_number": 53266, - "right_pr_number": 64813, + "breadth_similarity": 0.333, + "concentration_similarity": 0.981, + "content_similarity": 0.424, + "left_pr_number": 53377, + "right_pr_number": 68443, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/extra-params.ts" + "extensions/feishu/src/channel.test.ts", + "extensions/feishu/src/channel.ts" ], - "similarity": 0.622, - "size_similarity": 0.69 + "similarity": 0.447, + "size_similarity": 0.452 }, { - "breadth_similarity": 0.875, + "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.56, - "left_pr_number": 53717, - "right_pr_number": 53819, + "content_similarity": 0.323, + "left_pr_number": 37707, + "right_pr_number": 53377, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner-extraparams.test.ts", - "src/agents/pi-embedded-runner/extra-params.ts", - "src/agents/pi-embedded-runner/run/attempt.ts" + "extensions/feishu/src/channel.ts" ], - "similarity": 0.621, - "size_similarity": 0.606 + "similarity": 0.437, + "size_similarity": 0.574 }, { "breadth_similarity": 0.667, - "concentration_similarity": 0.796, - "content_similarity": 0.656, - "left_pr_number": 53819, - "right_pr_number": 67843, + "concentration_similarity": 1.0, + "content_similarity": 0.344, + "left_pr_number": 37707, + "right_pr_number": 66478, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner-extraparams.test.ts", - "src/agents/pi-embedded-runner/extra-params.ts" + "extensions/feishu/src/channel.ts" ], - "similarity": 0.608, - "size_similarity": 0.283 + "similarity": 0.396, + "size_similarity": 0.26 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 0.944, - "content_similarity": 0.507, - "left_pr_number": 37418, - "right_pr_number": 53819, + "breadth_similarity": 0.417, + "concentration_similarity": 0.981, + "content_similarity": 0.173, + "left_pr_number": 66478, + "right_pr_number": 68443, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner-extraparams.test.ts", - "src/agents/pi-embedded-runner/extra-params.ts", - "src/agents/pi-embedded-runner/run/attempt.ts" + "extensions/feishu/src/channel.ts" ], - "similarity": 0.599, - "size_similarity": 0.648 + "similarity": 0.362, + "size_similarity": 1.0 }, { - "breadth_similarity": 0.875, - "concentration_similarity": 0.943, - "content_similarity": 0.504, - "left_pr_number": 37418, - "right_pr_number": 53717, + "breadth_similarity": 0.25, + "concentration_similarity": 0.981, + "content_similarity": 0.345, + "left_pr_number": 37707, + "right_pr_number": 68443, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner-extraparams.test.ts", - "src/agents/pi-embedded-runner/extra-params.ts", - "src/agents/pi-embedded-runner/run/attempt.ts" + "extensions/feishu/src/channel.ts" ], - "similarity": 0.547, - "size_similarity": 0.393 + "similarity": 0.355, + "size_similarity": 0.26 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.796, - "content_similarity": 0.478, - "left_pr_number": 53717, - "right_pr_number": 67843, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.184, + "left_pr_number": 53377, + "right_pr_number": 66478, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner-extraparams.test.ts", - "src/agents/pi-embedded-runner/extra-params.ts" + "extensions/feishu/src/channel.ts" ], - "similarity": 0.503, - "size_similarity": 0.468 - }, + "similarity": 0.33, + "size_similarity": 0.452 + } + ], + "pr_count": 4, + "pr_numbers": [ + 37707, + 53377, + 66478, + 68443 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 68443 + ], + "representative_pr_number": 53377, + "representative_title": "fix(feishu): make message-tool card schema optional", + "representative_url": "https://github.com/openclaw/openclaw/pull/53377", + "shared_directories": [ + "extensions/feishu/src", + "extensions/feishu", + "extensions" + ], + "shared_filenames": [ + "extensions/feishu/src/channel.ts", + "extensions/feishu/src/channel.test.ts" + ], + "summary": "4 open PRs share weighted file overlap around `extensions/feishu/src/channel.ts`, `extensions/feishu/src/channel.test.ts`; representative PR #53377.", + "title": "Scope: fix(feishu): make message-tool card schema optional" + }, + { + "authors": [ + "JeevaByte" + ], + "average_similarity": 0.383, + "cluster_id": "pr-scope-64650-4", + "kind": "pr_scope", + "last_activity_at": "2026-04-17T23:56:30Z", + "outside_window_prs": [ { - "breadth_similarity": 0.667, - "concentration_similarity": 0.739, - "content_similarity": 0.483, - "left_pr_number": 37418, - "right_pr_number": 67843, - "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/pi-embedded-runner-extraparams.test.ts", - "src/agents/pi-embedded-runner/extra-params.ts" - ], - "similarity": 0.469, - "size_similarity": 0.184 + "additions": 222, + "author": "chen-zhang-cs-code", + "changed_files": 11, + "created_at": "2026-04-11T05:01:08Z", + "deletions": 21, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64650/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64650", + "merged": false, + "number": 64650, + "state": "open", + "title": "fix(telegram): honor channel-level topic prompts in multi-account mode", + "updated_at": "2026-04-21T11:45:02Z" }, { - "breadth_similarity": 0.333, - "concentration_similarity": 0.74, - "content_similarity": 0.444, - "left_pr_number": 53266, - "right_pr_number": 53819, - "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/pi-embedded-runner/extra-params.ts" - ], - "similarity": 0.431, - "size_similarity": 0.331 + "additions": 36, + "author": "Rohan5commit", + "changed_files": 3, + "created_at": "2026-04-13T16:10:41Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66041/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66041", + "merged": false, + "number": 66041, + "state": "open", + "title": "fix(telegram): keep ack reactions without mentions", + "updated_at": "2026-04-13T16:14:05Z" }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.74, - "content_similarity": 0.382, - "left_pr_number": 53717, - "right_pr_number": 64813, - "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/pi-embedded-runner/extra-params.ts" - ], - "similarity": 0.39, - "size_similarity": 0.377 - }, + "additions": 364, + "author": "VACInc", + "changed_files": 8, + "created_at": "2026-04-14T01:17:18Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66247/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66247", + "merged": false, + "number": 66247, + "state": "open", + "title": "[codex] Telegram: let immediate queue modes bypass busy topic lanes", + "updated_at": "2026-04-15T12:39:05Z" + } + ], + "pairwise": [ { - "breadth_similarity": 0.292, - "concentration_similarity": 0.74, - "content_similarity": 0.321, - "left_pr_number": 53266, - "right_pr_number": 53717, + "breadth_similarity": 0.864, + "concentration_similarity": 0.987, + "content_similarity": 0.356, + "left_pr_number": 64650, + "right_pr_number": 66247, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/extra-params.ts" - ], - "similarity": 0.372, - "size_similarity": 0.545 - }, - { - "breadth_similarity": 0.333, - "concentration_similarity": 0.74, - "content_similarity": 0.379, - "left_pr_number": 53819, - "right_pr_number": 64813, + "extensions/telegram/src/bot.create-telegram-bot.test.ts", + "extensions/telegram/src/bot.ts" + ], + "similarity": 0.484, + "size_similarity": 0.662 + }, + { + "breadth_similarity": 0.47, + "concentration_similarity": 0.986, + "content_similarity": 0.375, + "left_pr_number": 64650, + "right_pr_number": 66041, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/extra-params.ts" + "extensions/telegram/src/bot-message-context.ts", + "extensions/telegram/src/bot.create-telegram-bot.test.ts" ], - "similarity": 0.37, - "size_similarity": 0.228 + "similarity": 0.382, + "size_similarity": 0.152 }, { - "breadth_similarity": 0.333, - "concentration_similarity": 0.684, - "content_similarity": 0.356, - "left_pr_number": 37418, - "right_pr_number": 64813, + "breadth_similarity": 0.864, + "concentration_similarity": 0.933, + "content_similarity": 0.28, + "left_pr_number": 66247, + "right_pr_number": 68325, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", + "extensions/telegram/src", + "extensions/telegram", + "extensions", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/extra-params.ts" + "extensions/telegram/src/bot.create-telegram-bot.test-harness.ts", + "extensions/telegram/src/bot.create-telegram-bot.test.ts" ], - "similarity": 0.339, - "size_similarity": 0.148 + "similarity": 0.362, + "size_similarity": 0.223 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.944, - "content_similarity": 0.15, - "left_pr_number": 53266, - "right_pr_number": 67843, + "breadth_similarity": 1.0, + "concentration_similarity": 0.919, + "content_similarity": 0.232, + "left_pr_number": 64650, + "right_pr_number": 68325, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/extra-params.ts" + "extensions/telegram/src/bot.create-telegram-bot.test.ts" ], - "similarity": 0.331, - "size_similarity": 0.857 + "similarity": 0.359, + "size_similarity": 0.337 }, { - "breadth_similarity": 0.333, - "concentration_similarity": 0.684, - "content_similarity": 0.319, - "left_pr_number": 37418, - "right_pr_number": 53266, + "breadth_similarity": 0.47, + "concentration_similarity": 0.905, + "content_similarity": 0.28, + "left_pr_number": 66041, + "right_pr_number": 68325, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/telegram/src", + "extensions/telegram", + "docs", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/extra-params.ts" + "extensions/telegram/src/bot.create-telegram-bot.test.ts" ], - "similarity": 0.323, - "size_similarity": 0.214 + "similarity": 0.356, + "size_similarity": 0.451 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.944, - "content_similarity": 0.144, - "left_pr_number": 64813, - "right_pr_number": 67843, + "breadth_similarity": 0.521, + "concentration_similarity": 0.973, + "content_similarity": 0.338, + "left_pr_number": 66041, + "right_pr_number": 66247, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/extra-params.ts" + "extensions/telegram/src/bot.create-telegram-bot.test.ts" ], - "similarity": 0.319, - "size_similarity": 0.806 + "similarity": 0.353, + "size_similarity": 0.101 } ], - "pr_count": 6, + "pr_count": 4, "pr_numbers": [ - 37418, - 53266, - 53717, - 53819, - 64813, - 67843 + 64650, + 66041, + 66247, + 68325 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67843 + 68325 ], - "representative_pr_number": 53819, - "representative_title": "Agents: enable Codex parallel tool calls", - "representative_url": "https://github.com/openclaw/openclaw/pull/53819", + "representative_pr_number": 64650, + "representative_title": "fix(telegram): honor channel-level topic prompts in multi-account mode", + "representative_url": "https://github.com/openclaw/openclaw/pull/64650", "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", - "src", - "src/agents/pi-embedded-runner/run" + "extensions/telegram/src", + "extensions/telegram", + "extensions", + "docs", + "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/extra-params.ts", - "src/agents/pi-embedded-runner-extraparams.test.ts", - "src/agents/pi-embedded-runner/run/attempt.ts" + "extensions/telegram/src/bot.create-telegram-bot.test.ts", + "extensions/telegram/src/bot-message-context.ts", + "extensions/telegram/src/bot.create-telegram-bot.test-harness.ts", + "extensions/telegram/src/bot.ts" ], - "summary": "6 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/extra-params.ts`, `src/agents/pi-embedded-runner-extraparams.test.ts`, `src/agents/pi-embedded-runner/run/attempt.ts`; representative PR #53819.", - "title": "Scope: Agents: enable Codex parallel tool calls" + "summary": "4 open PRs share weighted file overlap around `extensions/telegram/src/bot.create-telegram-bot.test.ts`, `extensions/telegram/src/bot-message-context.ts`, `extensions/telegram/src/bot.create-telegram-bot.test-harness.ts`; representative PR #64650.", + "title": "Scope: fix(telegram): honor channel-level topic prompts in multi-account mode" }, { "authors": [ - "soumikbhatta" + "bek91" ], - "average_similarity": 0.493, - "cluster_id": "pr-scope-35887-4", + "average_similarity": 0.353, + "cluster_id": "pr-scope-53966-4", "kind": "pr_scope", - "last_activity_at": "2026-04-12T16:00:23Z", + "last_activity_at": "2026-04-20T12:40:29Z", "outside_window_prs": [ { - "additions": 11, - "author": "zhangxue1985122219", - "changed_files": 1, - "created_at": "2026-03-05T10:01:41Z", - "deletions": 8, + "additions": 117, + "author": "deucemask", + "changed_files": 10, + "created_at": "2026-03-24T21:21:28Z", + "deletions": 19, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/35887/files", - "html_url": "https://github.com/openclaw/openclaw/pull/35887", + "files_url": "https://github.com/openclaw/openclaw/pull/53966/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53966", "merged": false, - "number": 35887, + "number": 53966, "state": "open", - "title": "docs: improve installation and development instructions", - "updated_at": "2026-04-17T04:31:17Z" + "title": "fix(slack): include API error details in log messages", + "updated_at": "2026-03-24T21:25:57Z" }, { - "additions": 1, - "author": "behnam354", - "changed_files": 1, - "created_at": "2026-04-05T00:07:14Z", - "deletions": 1, + "additions": 388, + "author": "soichiyo", + "changed_files": 10, + "created_at": "2026-04-01T04:11:38Z", + "deletions": 17, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/61091/files", - "html_url": "https://github.com/openclaw/openclaw/pull/61091", + "files_url": "https://github.com/openclaw/openclaw/pull/58731/files", + "html_url": "https://github.com/openclaw/openclaw/pull/58731", "merged": false, - "number": 61091, + "number": 58731, "state": "open", - "title": "Docs: use --target in README message send example (instead of outdated --to argument)", - "updated_at": "2026-04-17T06:16:17Z" + "title": "feat(slack): persistent thread participation + bounded fallback", + "updated_at": "2026-04-18T14:34:17Z" }, { - "additions": 23, - "author": "hongzexin", - "changed_files": 1, - "created_at": "2026-04-10T12:50:17Z", - "deletions": 0, + "additions": 193, + "author": "bek91", + "changed_files": 8, + "created_at": "2026-04-13T05:27:07Z", + "deletions": 22, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64307/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64307", + "files_url": "https://github.com/openclaw/openclaw/pull/65731/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65731", "merged": false, - "number": 64307, + "number": 65731, "state": "open", - "title": "README: add Feishu quick-start section", - "updated_at": "2026-04-10T14:00:04Z" + "title": "Slack: Annotate inbound Slack mentions in raw bodies", + "updated_at": "2026-04-21T03:34:38Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.801, - "left_pr_number": 35887, - "right_pr_number": 61091, - "shared_directories": [], + "breadth_similarity": 0.739, + "concentration_similarity": 0.69, + "content_similarity": 0.24, + "left_pr_number": 65731, + "right_pr_number": 68402, + "shared_directories": [ + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions", + "src" + ], "shared_filenames": [ - "README.md" + "extensions/slack/src/monitor/message-handler/prepare.test.ts" ], - "similarity": 0.726, - "size_similarity": 0.105 + "similarity": 0.395, + "size_similarity": 0.79 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.386, - "left_pr_number": 35887, - "right_pr_number": 64307, - "shared_directories": [], + "breadth_similarity": 0.8, + "concentration_similarity": 0.72, + "content_similarity": 0.228, + "left_pr_number": 58731, + "right_pr_number": 65731, + "shared_directories": [ + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions", + "src" + ], "shared_filenames": [ - "README.md" + "extensions/slack/src/monitor/message-handler/prepare.ts" ], - "similarity": 0.544, - "size_similarity": 0.826 + "similarity": 0.355, + "size_similarity": 0.531 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.279, - "left_pr_number": 61091, - "right_pr_number": 65439, - "shared_directories": [], + "breadth_similarity": 0.775, + "concentration_similarity": 0.878, + "content_similarity": 0.194, + "left_pr_number": 53966, + "right_pr_number": 65731, + "shared_directories": [ + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], "shared_filenames": [ - "README.md" + "extensions/slack/src/monitor/message-handler/prepare.ts" ], - "similarity": 0.495, - "size_similarity": 1.0 + "similarity": 0.352, + "size_similarity": 0.633 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.348, - "left_pr_number": 61091, - "right_pr_number": 64307, - "shared_directories": [], - "shared_filenames": [ - "README.md" + "breadth_similarity": 0.755, + "concentration_similarity": 0.97, + "content_similarity": 0.171, + "left_pr_number": 58731, + "right_pr_number": 68402, + "shared_directories": [ + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions", + "src" ], - "similarity": 0.407, - "size_similarity": 0.087 + "shared_filenames": [], + "similarity": 0.345, + "size_similarity": 0.672 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.346, - "left_pr_number": 64307, - "right_pr_number": 65439, - "shared_directories": [], + "breadth_similarity": 0.955, + "concentration_similarity": 0.812, + "content_similarity": 0.187, + "left_pr_number": 53966, + "right_pr_number": 68402, + "shared_directories": [ + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], "shared_filenames": [ - "README.md" + "extensions/slack/src/monitor/context.ts", + "extensions/slack/src/monitor/provider.ts" ], - "similarity": 0.405, - "size_similarity": 0.087 + "similarity": 0.342, + "size_similarity": 0.5 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.309, - "left_pr_number": 35887, - "right_pr_number": 65439, - "shared_directories": [], + "breadth_similarity": 0.8, + "concentration_similarity": 0.843, + "content_similarity": 0.225, + "left_pr_number": 53966, + "right_pr_number": 58731, + "shared_directories": [ + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" + ], "shared_filenames": [ - "README.md" + "extensions/slack/src/monitor/message-handler/dispatch.ts", + "extensions/slack/src/monitor/message-handler/prepare.ts" ], - "similarity": 0.382, - "size_similarity": 0.105 + "similarity": 0.33, + "size_similarity": 0.336 } ], "pr_count": 4, "pr_numbers": [ - 35887, - 61091, - 64307, - 65439 + 53966, + 58731, + 65731, + 68402 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65439 + 68402 + ], + "representative_pr_number": 65731, + "representative_title": "Slack: Annotate inbound Slack mentions in raw bodies", + "representative_url": "https://github.com/openclaw/openclaw/pull/65731", + "shared_directories": [ + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions", + "src" ], - "representative_pr_number": 35887, - "representative_title": "docs: improve installation and development instructions", - "representative_url": "https://github.com/openclaw/openclaw/pull/35887", - "shared_directories": [], "shared_filenames": [ - "README.md" + "extensions/slack/src/monitor/message-handler/prepare.ts", + "extensions/slack/src/monitor/context.ts", + "extensions/slack/src/monitor/message-handler/prepare.test.ts", + "extensions/slack/src/monitor/message-handler/dispatch.ts", + "extensions/slack/src/monitor/provider.ts" ], - "summary": "4 open PRs share weighted file overlap around `README.md`; representative PR #35887.", - "title": "Scope: docs: improve installation and development instructions" + "summary": "4 open PRs share weighted file overlap around `extensions/slack/src/monitor/message-handler/prepare.ts`, `extensions/slack/src/monitor/context.ts`, `extensions/slack/src/monitor/message-handler/prepare.test.ts`; representative PR #65731.", + "title": "Scope: Slack: Annotate inbound Slack mentions in raw bodies" }, { "authors": [ - "nufnaf" + "armorbreak001" ], - "average_similarity": 0.48, - "cluster_id": "pr-scope-53782-4", + "average_similarity": 0.836, + "cluster_id": "pr-scope-65176-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T15:48:06Z", + "last_activity_at": "2026-04-18T13:04:24Z", "outside_window_prs": [ { - "additions": 85, - "author": "ernestodeoliveira", + "additions": 59, + "author": "draix", "changed_files": 2, - "created_at": "2026-03-24T16:05:18Z", + "created_at": "2026-04-12T04:36:48Z", "deletions": 10, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53782/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53782", - "merged": false, - "number": 53782, - "state": "open", - "title": "fix(discord): graceful degradation when account missing Message Content Intent", - "updated_at": "2026-03-24T20:15:29Z" - }, - { - "additions": 110, - "author": "qinyao-he", - "changed_files": 3, - "created_at": "2026-04-07T20:16:08Z", - "deletions": 4, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/62689/files", - "html_url": "https://github.com/openclaw/openclaw/pull/62689", + "files_url": "https://github.com/openclaw/openclaw/pull/65176/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65176", "merged": false, - "number": 62689, + "number": 65176, "state": "open", - "title": "[AI-assisted] fix(discord): normalize channel: prefix in ACP thread binding REST lookups", - "updated_at": "2026-04-11T03:55:40Z" + "title": "fix: improve SSRF resolved-IP error message with remediation hint (#65153)", + "updated_at": "2026-04-12T10:12:11Z" }, { - "additions": 33, - "author": "janicduplessis", + "additions": 59, + "author": "draix", "changed_files": 2, - "created_at": "2026-04-12T02:54:34Z", - "deletions": 1, + "created_at": "2026-04-12T04:41:44Z", + "deletions": 10, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65123/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65123", + "files_url": "https://github.com/openclaw/openclaw/pull/65179/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65179", "merged": false, - "number": 65123, + "number": 65179, "state": "open", - "title": "fix(discord): preserve explicit target kind when parsing recipients", - "updated_at": "2026-04-13T01:59:39Z" + "title": "fix: apply payload.model override in cron jobs even when not in allowlist (#65129)", + "updated_at": "2026-04-12T10:12:12Z" } ], "pairwise": [ { - "breadth_similarity": 0.583, - "concentration_similarity": 0.684, - "content_similarity": 0.822, - "left_pr_number": 62689, - "right_pr_number": 67665, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 1.0, + "left_pr_number": 65176, + "right_pr_number": 65179, "shared_directories": [ - "extensions/discord/src/monitor", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/cron/isolated-agent", + "src/infra/net", + "src/cron", + "src/infra", + "src" ], "shared_filenames": [ - "extensions/discord/src/monitor/thread-bindings.discord-api.test.ts", - "extensions/discord/src/monitor/thread-bindings.discord-api.ts" + "src/cron/isolated-agent/model-selection.ts", + "src/infra/net/ssrf.ts" ], - "similarity": 0.721, - "size_similarity": 0.351 + "similarity": 1.0, + "size_similarity": 1.0 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.928, + "content_similarity": 0.905, + "left_pr_number": 65176, + "right_pr_number": 68555, + "shared_directories": [ + "src/cron/isolated-agent", + "src/cron", + "src" + ], + "shared_filenames": [ + "src/cron/isolated-agent/model-selection.ts" + ], + "similarity": 0.753, + "size_similarity": 0.159 + }, + { + "breadth_similarity": 0.5, + "concentration_similarity": 0.928, + "content_similarity": 0.905, + "left_pr_number": 65179, + "right_pr_number": 68555, + "shared_directories": [ + "src/cron/isolated-agent", + "src/cron", + "src" + ], + "shared_filenames": [ + "src/cron/isolated-agent/model-selection.ts" + ], + "similarity": 0.753, + "size_similarity": 0.159 + } + ], + "pr_count": 3, + "pr_numbers": [ + 65176, + 65179, + 68555 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 68555 + ], + "representative_pr_number": 65176, + "representative_title": "fix: improve SSRF resolved-IP error message with remediation hint (#65153)", + "representative_url": "https://github.com/openclaw/openclaw/pull/65176", + "shared_directories": [ + "src/cron/isolated-agent", + "src/cron", + "src", + "src/infra/net", + "src/infra" + ], + "shared_filenames": [ + "src/cron/isolated-agent/model-selection.ts", + "src/infra/net/ssrf.ts" + ], + "summary": "3 open PRs share weighted file overlap around `src/cron/isolated-agent/model-selection.ts`, `src/infra/net/ssrf.ts`; representative PR #65176.", + "title": "Scope: fix: improve SSRF resolved-IP error message with remediation hint (#65153)" + }, + { + "authors": [ + "jinbowang1" + ], + "average_similarity": 0.806, + "cluster_id": "pr-scope-38381-3", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T16:26:36Z", + "outside_window_prs": [ + { + "additions": 137, + "author": "AytuncYildizli", + "changed_files": 1, + "created_at": "2026-03-06T23:03:17Z", + "deletions": 0, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38381/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38381", + "merged": false, + "number": 38381, + "state": "open", + "title": "feat(coding-agent): add Codex CLI multi-agent orchestration support", + "updated_at": "2026-04-21T04:31:22Z" }, + { + "additions": 168, + "author": "FaiChou", + "changed_files": 1, + "created_at": "2026-03-24T09:35:58Z", + "deletions": 142, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/53585/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53585", + "merged": false, + "number": 53585, + "state": "open", + "title": "Skills: make coding-agent background-first with direct completion notifications", + "updated_at": "2026-03-24T20:15:30Z" + } + ], + "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.574, - "left_pr_number": 53782, - "right_pr_number": 65123, - "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" - ], - "shared_filenames": [ - "extensions/discord/src/channel.test.ts", - "extensions/discord/src/channel.ts" - ], - "similarity": 0.605, - "size_similarity": 0.358 - }, - { - "breadth_similarity": 0.583, - "concentration_similarity": 0.684, - "content_similarity": 0.355, - "left_pr_number": 53782, - "right_pr_number": 62689, + "content_similarity": 0.92, + "left_pr_number": 38381, + "right_pr_number": 53585, "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" + "skills/coding-agent", + "skills" ], "shared_filenames": [ - "extensions/discord/src/channel.test.ts" + "skills/coding-agent/SKILL.md" ], - "similarity": 0.466, - "size_similarity": 0.833 + "similarity": 0.86, + "size_similarity": 0.442 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.684, - "content_similarity": 0.373, - "left_pr_number": 62689, - "right_pr_number": 65123, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.867, + "left_pr_number": 38381, + "right_pr_number": 69391, "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" + "skills/coding-agent", + "skills" ], "shared_filenames": [ - "extensions/discord/src/channel.test.ts" + "skills/coding-agent/SKILL.md" ], - "similarity": 0.398, - "size_similarity": 0.298 + "similarity": 0.798, + "size_similarity": 0.27 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.14, - "left_pr_number": 65123, - "right_pr_number": 67665, + "content_similarity": 0.848, + "left_pr_number": 53585, + "right_pr_number": 69391, "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" + "skills/coding-agent", + "skills" ], - "shared_filenames": [], - "similarity": 0.376, - "size_similarity": 0.85 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.148, - "left_pr_number": 53782, - "right_pr_number": 67665, - "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" + "shared_filenames": [ + "skills/coding-agent/SKILL.md" ], - "shared_filenames": [], - "similarity": 0.317, - "size_similarity": 0.421 + "similarity": 0.762, + "size_similarity": 0.119 } ], - "pr_count": 4, + "pr_count": 3, "pr_numbers": [ - 53782, - 62689, - 65123, - 67665 + 38381, + 53585, + 69391 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67665 + 69391 ], - "representative_pr_number": 62689, - "representative_title": "[AI-assisted] fix(discord): normalize channel: prefix in ACP thread binding REST lookups", - "representative_url": "https://github.com/openclaw/openclaw/pull/62689", + "representative_pr_number": 38381, + "representative_title": "feat(coding-agent): add Codex CLI multi-agent orchestration support", + "representative_url": "https://github.com/openclaw/openclaw/pull/38381", "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions", - "extensions/discord/src/monitor" + "skills/coding-agent", + "skills" ], "shared_filenames": [ - "extensions/discord/src/channel.test.ts", - "extensions/discord/src/monitor/thread-bindings.discord-api.ts", - "extensions/discord/src/monitor/thread-bindings.discord-api.test.ts", - "extensions/discord/src/channel.ts" + "skills/coding-agent/SKILL.md" ], - "summary": "4 open PRs share weighted file overlap around `extensions/discord/src/channel.test.ts`, `extensions/discord/src/monitor/thread-bindings.discord-api.ts`, `extensions/discord/src/monitor/thread-bindings.discord-api.test.ts`; representative PR #62689.", - "title": "Scope: [AI-assisted] fix(discord): normalize channel: prefix in ACP thread binding REST lookups" + "summary": "3 open PRs share weighted file overlap around `skills/coding-agent/SKILL.md`; representative PR #38381.", + "title": "Scope: feat(coding-agent): add Codex CLI multi-agent orchestration support" }, { "authors": [ - "ly85206559" + "yfge" ], - "average_similarity": 0.47, - "cluster_id": "pr-scope-52012-4", + "average_similarity": 0.757, + "cluster_id": "pr-scope-66511-3", "kind": "pr_scope", - "last_activity_at": "2026-04-16T12:11:24Z", + "last_activity_at": "2026-04-21T07:09:37Z", "outside_window_prs": [ { - "additions": 871, - "author": "scottgl9", - "changed_files": 3, - "created_at": "2026-03-22T02:20:52Z", - "deletions": 555, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/52012/files", - "html_url": "https://github.com/openclaw/openclaw/pull/52012", - "merged": false, - "number": 52012, - "state": "open", - "title": "feat(compaction): add modelFallbacks for compaction model resolution", - "updated_at": "2026-04-17T13:45:03Z" - }, - { - "additions": 30, - "author": "Bartok9", - "changed_files": 2, - "created_at": "2026-03-24T08:35:25Z", + "additions": 244, + "author": "yfge", + "changed_files": 14, + "created_at": "2026-04-14T11:15:29Z", "deletions": 10, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53549/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53549", + "files_url": "https://github.com/openclaw/openclaw/pull/66511/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66511", "merged": false, - "number": 53549, + "number": 66511, "state": "open", - "title": "fix(tools): filter MCP/LSP tools through subagent policy", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix: reduce ollama gemma4 cold-start penalty on first heavy turn", + "updated_at": "2026-04-21T07:11:23Z" }, { - "additions": 34, - "author": "xDarkicex", - "changed_files": 5, - "created_at": "2026-04-11T20:34:56Z", - "deletions": 18, + "additions": 281, + "author": "yfge", + "changed_files": 11, + "created_at": "2026-04-14T13:09:47Z", + "deletions": 11, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65006/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65006", + "files_url": "https://github.com/openclaw/openclaw/pull/66552/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66552", "merged": false, - "number": 65006, + "number": 66552, "state": "open", - "title": "feat(agents): add contextInjection 'never' to disable bootstrap file injection", - "updated_at": "2026-04-11T20:47:50Z" + "title": "fix: recover reasoning-only Ollama turns", + "updated_at": "2026-04-21T07:17:10Z" } ], "pairwise": [ { - "breadth_similarity": 0.667, - "concentration_similarity": 0.877, - "content_similarity": 0.521, - "left_pr_number": 53549, - "right_pr_number": 67146, + "breadth_similarity": 0.893, + "concentration_similarity": 0.956, + "content_similarity": 0.741, + "left_pr_number": 66511, + "right_pr_number": 66552, "shared_directories": [ "src/agents/pi-embedded-runner/run", + "extensions/ollama/src", "src/agents/pi-embedded-runner", + "extensions/ollama", "src/agents", + "src/config", + "extensions", + "memory", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/compact.ts", - "src/agents/pi-embedded-runner/run/attempt.ts" + "HEARTBEAT.md", + "SOUL.md", + "TOOLS.md", + "extensions/ollama/src/stream-runtime.test.ts", + "extensions/ollama/src/stream.ts", + "src/agents/pi-embedded-runner/run/incomplete-turn.ts", + "src/config/plugin-auto-enable.channels.test.ts", + "src/config/plugin-auto-enable.prefer-over.ts" ], - "similarity": 0.588, - "size_similarity": 0.755 + "similarity": 0.786, + "size_similarity": 0.87 }, { - "breadth_similarity": 0.533, - "concentration_similarity": 0.923, - "content_similarity": 0.413, - "left_pr_number": 53549, - "right_pr_number": 65006, + "breadth_similarity": 0.875, + "concentration_similarity": 0.994, + "content_similarity": 0.71, + "left_pr_number": 66511, + "right_pr_number": 68465, "shared_directories": [ "src/agents/pi-embedded-runner/run", + "extensions/ollama/src", "src/agents/pi-embedded-runner", + "extensions/ollama", "src/agents", + "src/config", + "extensions", + "memory", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/compact.ts" + "HEARTBEAT.md", + "SOUL.md", + "TOOLS.md", + "extensions/ollama/src/stream-runtime.test.ts", + "extensions/ollama/src/stream.ts", + "memory/2026-04-17.md", + "src/agents/pi-embedded-runner/run/incomplete-turn.ts", + "src/config/plugin-auto-enable.channels.test.ts", + "src/config/plugin-auto-enable.prefer-over.ts" ], - "similarity": 0.504, - "size_similarity": 0.769 + "similarity": 0.766, + "size_similarity": 0.879 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 0.502, - "content_similarity": 0.528, - "left_pr_number": 52012, - "right_pr_number": 53549, + "breadth_similarity": 0.781, + "concentration_similarity": 0.962, + "content_similarity": 0.634, + "left_pr_number": 66552, + "right_pr_number": 68465, "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "extensions/ollama/src", "src/agents/pi-embedded-runner", + "extensions/ollama", "src/agents", + "src/config", + "extensions", + "memory", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/compact.ts" + "HEARTBEAT.md", + "SOUL.md", + "TOOLS.md", + "extensions/ollama/src/stream-runtime.test.ts", + "extensions/ollama/src/stream.ts", + "src/agents/pi-embedded-runner/run/incomplete-turn.ts", + "src/config/plugin-auto-enable.channels.test.ts", + "src/config/plugin-auto-enable.prefer-over.ts" ], - "similarity": 0.482, - "size_similarity": 0.028 + "similarity": 0.719, + "size_similarity": 0.99 + } + ], + "pr_count": 3, + "pr_numbers": [ + 66511, + 66552, + 68465 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 68465 + ], + "representative_pr_number": 66511, + "representative_title": "fix: reduce ollama gemma4 cold-start penalty on first heavy turn", + "representative_url": "https://github.com/openclaw/openclaw/pull/66511", + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "extensions/ollama/src", + "src/agents/pi-embedded-runner", + "extensions/ollama", + "src/config", + "src/agents", + "memory", + "extensions" + ], + "shared_filenames": [ + "HEARTBEAT.md", + "SOUL.md", + "TOOLS.md", + "src/config/plugin-auto-enable.channels.test.ts", + "src/config/plugin-auto-enable.prefer-over.ts", + "extensions/ollama/src/stream-runtime.test.ts", + "extensions/ollama/src/stream.ts", + "src/agents/pi-embedded-runner/run/incomplete-turn.ts" + ], + "summary": "3 open PRs share weighted file overlap around `HEARTBEAT.md`, `SOUL.md`, `TOOLS.md`; representative PR #66511.", + "title": "Scope: fix: reduce ollama gemma4 cold-start penalty on first heavy turn" + }, + { + "authors": [ + "ztexydt-cqh" + ], + "average_similarity": 0.729, + "cluster_id": "pr-scope-38416-3", + "kind": "pr_scope", + "last_activity_at": "2026-04-20T01:59:40Z", + "outside_window_prs": [ + { + "additions": 35, + "author": "bidaiAI", + "changed_files": 2, + "created_at": "2026-03-07T00:12:50Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38416/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38416", + "merged": false, + "number": 38416, + "state": "open", + "title": "feat(security): Implement Westworld-style Cognitive Filter against Context Poisoning", + "updated_at": "2026-04-21T04:31:48Z" }, { - "breadth_similarity": 0.633, - "concentration_similarity": 0.579, - "content_similarity": 0.539, - "left_pr_number": 52012, - "right_pr_number": 65006, + "additions": 38, + "author": "bidaiAI", + "changed_files": 3, + "created_at": "2026-03-07T04:15:57Z", + "deletions": 5, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38555/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38555", + "merged": false, + "number": 38555, + "state": "open", + "title": "fix(providers): resolve google provider mismatch for gemini 3.1 pro", + "updated_at": "2026-04-21T04:33:24Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.988, + "content_similarity": 0.91, + "left_pr_number": 38416, + "right_pr_number": 38555, "shared_directories": [ - "src/agents/pi-embedded-runner", "src/agents", - "src/config", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/compact.ts", - "src/config/types.agent-defaults.ts", - "src/config/zod-schema.agent-defaults.ts" + "src/agents/pi-tool-definition-adapter.ts", + "src/gateway/tools-invoke-http.ts" ], - "similarity": 0.475, - "size_similarity": 0.036 + "similarity": 0.902, + "size_similarity": 0.884 }, { - "breadth_similarity": 0.8, - "concentration_similarity": 0.954, - "content_similarity": 0.24, - "left_pr_number": 65006, - "right_pr_number": 67146, + "breadth_similarity": 0.75, + "concentration_similarity": 0.895, + "content_similarity": 0.717, + "left_pr_number": 38416, + "right_pr_number": 68070, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/compact.ts" + "src/agents/pi-tool-definition-adapter.ts" ], - "similarity": 0.443, - "size_similarity": 0.981 + "similarity": 0.677, + "size_similarity": 0.368 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 0.625, - "content_similarity": 0.301, - "left_pr_number": 52012, - "right_pr_number": 67146, + "breadth_similarity": 0.583, + "concentration_similarity": 0.907, + "content_similarity": 0.652, + "left_pr_number": 38555, + "right_pr_number": 68070, "shared_directories": [ - "src/agents/pi-embedded-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/compact.ts" + "src/agents/pi-tool-definition-adapter.ts" ], - "similarity": 0.331, - "size_similarity": 0.037 + "similarity": 0.609, + "size_similarity": 0.326 } ], - "pr_count": 4, + "pr_count": 3, "pr_numbers": [ - 52012, - 53549, - 65006, - 67146 + 38416, + 38555, + 68070 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67146 + 68070 ], - "representative_pr_number": 53549, - "representative_title": "fix(tools): filter MCP/LSP tools through subagent policy", - "representative_url": "https://github.com/openclaw/openclaw/pull/53549", + "representative_pr_number": 38416, + "representative_title": "feat(security): Implement Westworld-style Cognitive Filter against Context Poisoning", + "representative_url": "https://github.com/openclaw/openclaw/pull/38416", "shared_directories": [ - "src/agents/pi-embedded-runner", "src/agents", "src", - "src/agents/pi-embedded-runner/run", - "src/config" + "src/gateway" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/compact.ts", - "src/config/zod-schema.agent-defaults.ts", - "src/config/types.agent-defaults.ts", - "src/agents/pi-embedded-runner/run/attempt.ts" + "src/agents/pi-tool-definition-adapter.ts", + "src/gateway/tools-invoke-http.ts" ], - "summary": "4 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/compact.ts`, `src/config/zod-schema.agent-defaults.ts`, `src/config/types.agent-defaults.ts`; representative PR #53549.", - "title": "Scope: fix(tools): filter MCP/LSP tools through subagent policy" + "summary": "3 open PRs share weighted file overlap around `src/agents/pi-tool-definition-adapter.ts`, `src/gateway/tools-invoke-http.ts`; representative PR #38416.", + "title": "Scope: feat(security): Implement Westworld-style Cognitive Filter against Context Poisoning" }, { "authors": [ - "tianhaocui" + "alexlomt" ], - "average_similarity": 0.466, - "cluster_id": "pr-scope-37412-4", + "average_similarity": 0.599, + "cluster_id": "pr-scope-53997-3", "kind": "pr_scope", - "last_activity_at": "2026-04-19T07:17:06Z", + "last_activity_at": "2026-04-19T00:57:31Z", "outside_window_prs": [ { - "additions": 45, - "author": "0xlin2023", - "changed_files": 3, - "created_at": "2026-03-06T07:26:56Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37412/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37412", - "merged": false, - "number": 37412, - "state": "open", - "title": "fix(ui): support output_text content type in message extractor", - "updated_at": "2026-04-19T04:33:00Z" - }, - { - "additions": 4, - "author": "hijzy", - "changed_files": 2, - "created_at": "2026-03-24T09:41:21Z", - "deletions": 2, + "additions": 1043, + "author": "god59081", + "changed_files": 5, + "created_at": "2026-03-24T21:53:10Z", + "deletions": 37, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53588/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53588", + "files_url": "https://github.com/openclaw/openclaw/pull/53997/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53997", "merged": false, - "number": 53588, + "number": 53997, "state": "open", - "title": "fix: strip tags from user messages in WebChat UI", - "updated_at": "2026-03-24T20:15:30Z" + "title": "acpx: add terminal-truth artifacts and strict terminal states", + "updated_at": "2026-03-24T23:46:44Z" }, { - "additions": 33, - "author": "w-sss", - "changed_files": 1, - "created_at": "2026-04-12T05:19:25Z", - "deletions": 0, + "additions": 479, + "author": "aryankinha", + "changed_files": 10, + "created_at": "2026-04-14T09:25:17Z", + "deletions": 28, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65187/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65187", + "files_url": "https://github.com/openclaw/openclaw/pull/66457/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66457", "merged": false, - "number": 65187, + "number": 66457, "state": "open", - "title": "test: add regression tests for tag stripping in UI message extraction", - "updated_at": "2026-04-12T14:41:16Z" + "title": "fix(logging): implement log file rotation and update related tests", + "updated_at": "2026-04-15T01:44:10Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 0.767, - "content_similarity": 0.729, - "left_pr_number": 53588, - "right_pr_number": 68855, - "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui", - "ui/src", - "src", - "ui" - ], - "shared_filenames": [ - "ui/src/ui/chat/message-extract.ts" - ], - "similarity": 0.694, - "size_similarity": 0.3 - }, - { - "breadth_similarity": 0.417, - "concentration_similarity": 0.646, - "content_similarity": 0.559, - "left_pr_number": 37412, - "right_pr_number": 65187, + "breadth_similarity": 0.2, + "concentration_similarity": 0.771, + "content_similarity": 0.806, + "left_pr_number": 66457, + "right_pr_number": 68741, "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui", - "ui/src", - "ui" + "extensions/acpx/src", + "extensions/acpx", + "extensions" ], "shared_filenames": [ - "ui/src/ui/chat/message-extract.test.ts" + "extensions/acpx/src/runtime.test.ts", + "extensions/acpx/src/runtime.ts" ], - "similarity": 0.568, - "size_similarity": 0.688 + "similarity": 0.714, + "size_similarity": 0.607 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 0.746, - "content_similarity": 0.513, - "left_pr_number": 37412, - "right_pr_number": 68855, + "breadth_similarity": 0.367, + "concentration_similarity": 0.553, + "content_similarity": 0.635, + "left_pr_number": 53997, + "right_pr_number": 68741, "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui", - "ui/src", - "ui" + "extensions/acpx/src", + "extensions/acpx", + "extensions" ], "shared_filenames": [ - "ui/src/ui/chat/message-extract.ts" + "extensions/acpx/src/runtime.test.ts", + "extensions/acpx/src/runtime.ts" ], - "similarity": 0.543, - "size_similarity": 0.417 + "similarity": 0.552, + "size_similarity": 0.285 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 0.979, - "content_similarity": 0.403, - "left_pr_number": 37412, - "right_pr_number": 53588, + "breadth_similarity": 0.55, + "concentration_similarity": 0.782, + "content_similarity": 0.524, + "left_pr_number": 53997, + "right_pr_number": 66457, "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui", - "ui/src", - "ui" + "extensions/acpx/src", + "extensions/acpx", + "extensions" ], "shared_filenames": [ - "ui/src/ui/chat/message-extract.ts" - ], - "similarity": 0.433, - "size_similarity": 0.125 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.9, - "content_similarity": 0.226, - "left_pr_number": 65187, - "right_pr_number": 68855, - "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui", - "ui/src", - "ui" - ], - "shared_filenames": [], - "similarity": 0.344, - "size_similarity": 0.606 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.667, - "content_similarity": 0.149, - "left_pr_number": 53588, - "right_pr_number": 65187, - "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui", - "ui/src", - "ui" + "extensions/acpx/src/runtime.test.ts", + "extensions/acpx/src/runtime.ts" ], - "shared_filenames": [], - "similarity": 0.215, - "size_similarity": 0.182 + "similarity": 0.532, + "size_similarity": 0.469 } ], - "pr_count": 4, + "pr_count": 3, "pr_numbers": [ - 37412, - 53588, - 65187, - 68855 + 53997, + 66457, + 68741 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68855 + 68741 ], - "representative_pr_number": 68855, - "representative_title": "fix: guard against non-string content delta and thinking blocks", - "representative_url": "https://github.com/openclaw/openclaw/pull/68855", + "representative_pr_number": 68741, + "representative_title": "fix(acpx): avoid per-session MCP on openclaw bridge", + "representative_url": "https://github.com/openclaw/openclaw/pull/68741", "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui", - "ui/src", - "ui", - "src" + "extensions/acpx/src", + "extensions/acpx", + "extensions" ], "shared_filenames": [ - "ui/src/ui/chat/message-extract.ts", - "ui/src/ui/chat/message-extract.test.ts" + "extensions/acpx/src/runtime.ts", + "extensions/acpx/src/runtime.test.ts" ], - "summary": "4 open PRs share weighted file overlap around `ui/src/ui/chat/message-extract.ts`, `ui/src/ui/chat/message-extract.test.ts`; representative PR #68855.", - "title": "Scope: fix: guard against non-string content delta and thinking blocks" + "summary": "3 open PRs share weighted file overlap around `extensions/acpx/src/runtime.ts`, `extensions/acpx/src/runtime.test.ts`; representative PR #68741.", + "title": "Scope: fix(acpx): avoid per-session MCP on openclaw bridge" }, { "authors": [ - "clemenshelm" + "MoerAI" ], - "average_similarity": 0.464, - "cluster_id": "pr-scope-19328-4", + "average_similarity": 0.588, + "cluster_id": "pr-scope-63847-3", "kind": "pr_scope", - "last_activity_at": "2026-04-17T14:50:32Z", + "last_activity_at": "2026-04-21T10:15:59Z", "outside_window_prs": [ { - "additions": 660, - "author": "CodeReclaimers", - "changed_files": 3, - "created_at": "2026-02-17T17:50:44Z", - "deletions": 84, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/19328/files", - "html_url": "https://github.com/openclaw/openclaw/pull/19328", - "merged": false, - "number": 19328, - "state": "open", - "title": "Fix: preserve modelOverride in agent handler (#5369)", - "updated_at": "2026-04-17T20:29:07Z" - }, - { - "additions": 138, - "author": "cds-1993", - "changed_files": 3, - "created_at": "2026-03-24T08:04:29Z", - "deletions": 11, + "additions": 13, + "author": "zozo123", + "changed_files": 2, + "created_at": "2026-04-09T16:34:16Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53538/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53538", + "files_url": "https://github.com/openclaw/openclaw/pull/63847/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63847", "merged": false, - "number": 53538, + "number": 63847, "state": "open", - "title": "fix(gateway): skip delivery error for bestEffortDeliver when no external channels configured", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(cli): load plugins for memory commands so embedding providers register", + "updated_at": "2026-04-12T07:48:24Z" }, { - "additions": 190, - "author": "RogerLYJ", - "changed_files": 8, - "created_at": "2026-04-11T04:00:15Z", - "deletions": 15, + "additions": 94, + "author": "leonardsellem", + "changed_files": 4, + "created_at": "2026-04-13T08:21:01Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64622/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64622", + "files_url": "https://github.com/openclaw/openclaw/pull/65800/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65800", "merged": false, - "number": 64622, + "number": 65800, "state": "open", - "title": "fix(gateway): harden agent-to-agent routing, timeout handling, and main-session metadata sanitization", - "updated_at": "2026-04-12T03:34:32Z" + "title": "fix(cli): load runtime plugins for wiki commands", + "updated_at": "2026-04-13T11:25:23Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 0.919, - "content_similarity": 0.583, - "left_pr_number": 53538, - "right_pr_number": 67586, - "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", - "src" - ], - "shared_filenames": [ - "src/gateway/server-methods/agent.test.ts", - "src/gateway/server-methods/agent.ts" - ], - "similarity": 0.618, - "size_similarity": 0.428 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 0.899, - "content_similarity": 0.592, - "left_pr_number": 19328, - "right_pr_number": 53538, - "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", - "src" - ], - "shared_filenames": [ - "src/gateway/server-methods/agent.test.ts", - "src/gateway/server-methods/agent.ts" - ], - "similarity": 0.564, - "size_similarity": 0.2 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 0.98, - "content_similarity": 0.502, - "left_pr_number": 19328, - "right_pr_number": 67586, - "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", - "src" - ], - "shared_filenames": [ - "src/gateway/server-methods/agent.test.ts", - "src/gateway/server-methods/agent.ts" - ], - "similarity": 0.546, - "size_similarity": 0.468 - }, - { - "breadth_similarity": 0.438, - "concentration_similarity": 0.437, - "content_similarity": 0.36, - "left_pr_number": 53538, - "right_pr_number": 64622, + "breadth_similarity": 0.833, + "concentration_similarity": 1.0, + "content_similarity": 0.687, + "left_pr_number": 63847, + "right_pr_number": 69676, "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", + "src/cli", "src" ], "shared_filenames": [ - "src/gateway/server-methods/agent.test.ts", - "src/gateway/server-methods/agent.ts" + "src/cli/command-catalog.ts", + "src/cli/command-startup-policy.test.ts" ], - "similarity": 0.427, - "size_similarity": 0.727 + "similarity": 0.729, + "size_similarity": 0.765 }, { - "breadth_similarity": 0.438, - "concentration_similarity": 0.357, - "content_similarity": 0.294, - "left_pr_number": 64622, - "right_pr_number": 67586, + "breadth_similarity": 0.625, + "concentration_similarity": 0.596, + "content_similarity": 0.643, + "left_pr_number": 65800, + "right_pr_number": 69676, "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", + "src/cli", "src" ], "shared_filenames": [ - "src/gateway/server-methods/agent.test.ts", - "src/gateway/server-methods/agent.ts" + "src/cli/command-catalog.ts", + "src/cli/command-path-policy.test.ts", + "src/cli/command-startup-policy.test.ts" ], - "similarity": 0.356, - "size_similarity": 0.589 + "similarity": 0.57, + "size_similarity": 0.181 }, { - "breadth_similarity": 0.312, - "concentration_similarity": 0.337, - "content_similarity": 0.265, - "left_pr_number": 19328, - "right_pr_number": 64622, + "breadth_similarity": 0.5, + "concentration_similarity": 0.596, + "content_similarity": 0.523, + "left_pr_number": 63847, + "right_pr_number": 65800, "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", + "src/cli", "src" ], "shared_filenames": [ - "src/gateway/server-methods/agent.test.ts", - "src/gateway/server-methods/agent.ts" + "src/cli/command-catalog.ts", + "src/cli/command-startup-policy.test.ts" ], - "similarity": 0.275, - "size_similarity": 0.276 + "similarity": 0.466, + "size_similarity": 0.138 } ], - "pr_count": 4, + "pr_count": 3, "pr_numbers": [ - 19328, - 53538, - 64622, - 67586 + 63847, + 65800, + 69676 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67586 + 69676 ], - "representative_pr_number": 53538, - "representative_title": "fix(gateway): skip delivery error for bestEffortDeliver when no external channels configured", - "representative_url": "https://github.com/openclaw/openclaw/pull/53538", + "representative_pr_number": 69676, + "representative_title": "fix(memory): recognize github-copilot as valid memory embedding provider (#69180)", + "representative_url": "https://github.com/openclaw/openclaw/pull/69676", "shared_directories": [ - "src/gateway/server-methods", - "src/gateway", + "src/cli", "src" ], "shared_filenames": [ - "src/gateway/server-methods/agent.test.ts", - "src/gateway/server-methods/agent.ts" + "src/cli/command-startup-policy.test.ts", + "src/cli/command-catalog.ts", + "src/cli/command-path-policy.test.ts" ], - "summary": "4 open PRs share weighted file overlap around `src/gateway/server-methods/agent.test.ts`, `src/gateway/server-methods/agent.ts`; representative PR #53538.", - "title": "Scope: fix(gateway): skip delivery error for bestEffortDeliver when no external channels configured" + "summary": "3 open PRs share weighted file overlap around `src/cli/command-startup-policy.test.ts`, `src/cli/command-catalog.ts`, `src/cli/command-path-policy.test.ts`; representative PR #69676.", + "title": "Scope: fix(memory): recognize github-copilot as valid memory embedding provider (#69180)" }, { "authors": [ - "Tianworld" + "jgallowa07" ], - "average_similarity": 0.43, - "cluster_id": "pr-scope-53391-4", + "average_similarity": 0.566, + "cluster_id": "pr-scope-64184-3", "kind": "pr_scope", - "last_activity_at": "2026-04-14T16:08:28Z", + "last_activity_at": "2026-04-16T17:45:54Z", "outside_window_prs": [ { - "additions": 4, - "author": "SnowSky1", - "changed_files": 1, - "created_at": "2026-03-24T04:55:03Z", + "additions": 8, + "author": "FroeMic", + "changed_files": 3, + "created_at": "2026-04-10T07:57:00Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53391/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53391", - "merged": false, - "number": 53391, - "state": "open", - "title": "fix(ui): contain long exec approval commands", - "updated_at": "2026-03-24T20:15:31Z" - }, - { - "additions": 3, - "author": "YTjungle666", - "changed_files": 1, - "created_at": "2026-03-24T12:21:25Z", - "deletions": 2, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53662/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53662", + "files_url": "https://github.com/openclaw/openclaw/pull/64184/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64184", "merged": false, - "number": 53662, + "number": 64184, "state": "open", - "title": "fix(control-ui): size grouped chat bubbles by content", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(slack): propagate file IDs through media pipeline to agent context", + "updated_at": "2026-04-10T10:12:30Z" }, { - "additions": 2, - "author": "extrasmall0", - "changed_files": 1, - "created_at": "2026-03-24T19:27:31Z", - "deletions": 1, + "additions": 9, + "author": "slepybear", + "changed_files": 3, + "created_at": "2026-04-10T17:25:57Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53916/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53916", + "files_url": "https://github.com/openclaw/openclaw/pull/64429/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64429", "merged": false, - "number": 53916, + "number": 64429, "state": "open", - "title": "fix: make log stream height responsive to viewport", - "updated_at": "2026-03-24T20:15:28Z" + "title": "feat(slack): add fileId field to SlackMediaResult type", + "updated_at": "2026-04-12T01:43:49Z" } ], "pairwise": [ { "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.414, - "left_pr_number": 53391, - "right_pr_number": 53916, + "concentration_similarity": 0.944, + "content_similarity": 0.994, + "left_pr_number": 64184, + "right_pr_number": 64429, "shared_directories": [ - "ui/src/styles", - "ui/src", - "ui" + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "src/auto-reply", + "extensions", + "src" ], "shared_filenames": [ - "ui/src/styles/components.css" + "extensions/slack/src/monitor/media.ts", + "extensions/slack/src/monitor/message-handler/prepare.ts", + "src/auto-reply/templating.ts" ], - "similarity": 0.553, - "size_similarity": 0.75 + "similarity": 0.976, + "size_similarity": 0.889 }, { "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.403, - "left_pr_number": 53391, - "right_pr_number": 66658, + "concentration_similarity": 0.778, + "content_similarity": 0.195, + "left_pr_number": 64429, + "right_pr_number": 67761, "shared_directories": [ - "ui/src/styles", - "ui/src", - "ui" + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" ], "shared_filenames": [ - "ui/src/styles/components.css" + "extensions/slack/src/monitor/message-handler/prepare.ts" ], - "similarity": 0.518, - "size_similarity": 0.571 + "similarity": 0.365, + "size_similarity": 0.6 }, { "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.379, - "left_pr_number": 53916, - "right_pr_number": 66658, + "concentration_similarity": 0.833, + "content_similarity": 0.194, + "left_pr_number": 64184, + "right_pr_number": 67761, "shared_directories": [ - "ui/src/styles", - "ui/src", - "ui" + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions" ], "shared_filenames": [ - "ui/src/styles/components.css" - ], - "similarity": 0.48, - "size_similarity": 0.429 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.132, - "left_pr_number": 53391, - "right_pr_number": 53662, - "shared_directories": [ - "ui/src/styles", - "ui/src", - "ui" - ], - "shared_filenames": [], - "similarity": 0.363, - "size_similarity": 0.8 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.121, - "left_pr_number": 53662, - "right_pr_number": 66658, - "shared_directories": [ - "ui/src/styles", - "ui/src", - "ui" - ], - "shared_filenames": [], - "similarity": 0.342, - "size_similarity": 0.714 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.124, - "left_pr_number": 53662, - "right_pr_number": 53916, - "shared_directories": [ - "ui/src/styles", - "ui/src", - "ui" + "extensions/slack/src/monitor/message-handler/prepare.ts" ], - "shared_filenames": [], - "similarity": 0.327, - "size_similarity": 0.6 + "similarity": 0.357, + "size_similarity": 0.533 } ], - "pr_count": 4, + "pr_count": 3, "pr_numbers": [ - 53391, - 53662, - 53916, - 66658 + 64184, + 64429, + 67761 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66658 + 67761 ], - "representative_pr_number": 53391, - "representative_title": "fix(ui): contain long exec approval commands", - "representative_url": "https://github.com/openclaw/openclaw/pull/53391", + "representative_pr_number": 64429, + "representative_title": "feat(slack): add fileId field to SlackMediaResult type", + "representative_url": "https://github.com/openclaw/openclaw/pull/64429", "shared_directories": [ - "ui/src/styles", - "ui/src", - "ui" + "extensions/slack/src/monitor/message-handler", + "extensions/slack/src/monitor", + "extensions/slack/src", + "extensions/slack", + "extensions", + "src/auto-reply", + "src" ], "shared_filenames": [ - "ui/src/styles/components.css" + "extensions/slack/src/monitor/message-handler/prepare.ts", + "extensions/slack/src/monitor/media.ts", + "src/auto-reply/templating.ts" ], - "summary": "4 open PRs share weighted file overlap around `ui/src/styles/components.css`; representative PR #53391.", - "title": "Scope: fix(ui): contain long exec approval commands" + "summary": "3 open PRs share weighted file overlap around `extensions/slack/src/monitor/message-handler/prepare.ts`, `extensions/slack/src/monitor/media.ts`, `src/auto-reply/templating.ts`; representative PR #64429.", + "title": "Scope: feat(slack): add fileId field to SlackMediaResult type" }, { "authors": [ - "Lucenx9" + "neeravmakwana" ], - "average_similarity": 0.43, - "cluster_id": "pr-scope-53332-4", + "average_similarity": 0.546, + "cluster_id": "pr-scope-58034-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T21:22:50Z", + "last_activity_at": "2026-04-17T12:53:17Z", "outside_window_prs": [ { - "additions": 65, - "author": "omarshahine", - "changed_files": 1, - "created_at": "2026-03-24T02:59:40Z", - "deletions": 47, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53332/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53332", - "merged": false, - "number": 53332, - "state": "open", - "title": "fix: sendPolicy deny should suppress delivery, not inbound processing", - "updated_at": "2026-03-24T20:15:31Z" - }, - { - "additions": 190, - "author": "hongzexin", - "changed_files": 4, - "created_at": "2026-04-10T07:52:21Z", - "deletions": 4, + "additions": 409, + "author": "cosmicnet", + "changed_files": 16, + "created_at": "2026-03-31T01:09:11Z", + "deletions": 15, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64182/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64182", + "files_url": "https://github.com/openclaw/openclaw/pull/58034/files", + "html_url": "https://github.com/openclaw/openclaw/pull/58034", "merged": false, - "number": 64182, + "number": 58034, "state": "open", - "title": "Reply: allow authorized group command sessions to receive tool updates", - "updated_at": "2026-04-10T12:46:35Z" + "title": "fix(net): harden trusted env proxy fetch guard and add explicit web_fetch opt-in", + "updated_at": "2026-04-21T11:34:12Z" }, { - "additions": 270, - "author": "qualiobra", - "changed_files": 4, - "created_at": "2026-04-11T00:50:10Z", - "deletions": 33, + "additions": 77, + "author": "friendfish", + "changed_files": 2, + "created_at": "2026-04-02T05:13:59Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64559/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64559", + "files_url": "https://github.com/openclaw/openclaw/pull/59443/files", + "html_url": "https://github.com/openclaw/openclaw/pull/59443", "merged": false, - "number": 64559, + "number": 59443, "state": "open", - "title": "fix(plugins): emit message_received hook for queued inbound messages (#64525)", - "updated_at": "2026-04-11T16:32:15Z" + "title": "fix(fetch-guard): skip DNS pre-flight in trusted-env-proxy mode when proxy is configured", + "updated_at": "2026-04-20T01:07:25Z" } ], "pairwise": [ { - "breadth_similarity": 0.667, - "concentration_similarity": 1.0, - "content_similarity": 0.57, - "left_pr_number": 53332, - "right_pr_number": 68698, + "breadth_similarity": 0.583, + "concentration_similarity": 0.978, + "content_similarity": 0.847, + "left_pr_number": 59443, + "right_pr_number": 68114, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/infra/net", + "src/infra", "src" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-from-config.ts" + "src/infra/net/fetch-guard.ssrf.test.ts", + "src/infra/net/fetch-guard.ts" ], - "similarity": 0.629, - "size_similarity": 0.757 + "similarity": 0.782, + "size_similarity": 0.541 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 0.804, - "content_similarity": 0.297, - "left_pr_number": 64182, - "right_pr_number": 68698, + "breadth_similarity": 0.146, + "concentration_similarity": 0.733, + "content_similarity": 0.504, + "left_pr_number": 58034, + "right_pr_number": 59443, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/infra/net", + "src/infra", "src" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-from-config.test.ts", - "src/auto-reply/reply/dispatch-from-config.ts" + "src/infra/net/fetch-guard.ssrf.test.ts", + "src/infra/net/fetch-guard.ts" ], - "similarity": 0.425, - "size_similarity": 0.763 + "similarity": 0.434, + "size_similarity": 0.2 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.804, - "content_similarity": 0.274, - "left_pr_number": 64182, - "right_pr_number": 64559, + "breadth_similarity": 0.26, + "concentration_similarity": 0.755, + "content_similarity": 0.487, + "left_pr_number": 58034, + "right_pr_number": 68114, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/infra/net", + "src/infra", "src" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-from-config.test.ts", - "src/auto-reply/reply/dispatch-from-config.ts" + "src/infra/net/fetch-guard.ssrf.test.ts", + "src/infra/net/fetch-guard.ts" ], - "similarity": 0.403, - "size_similarity": 0.64 + "similarity": 0.421, + "size_similarity": 0.108 + } + ], + "pr_count": 3, + "pr_numbers": [ + 58034, + 59443, + 68114 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 68114 + ], + "representative_pr_number": 59443, + "representative_title": "fix(fetch-guard): skip DNS pre-flight in trusted-env-proxy mode when proxy is configured", + "representative_url": "https://github.com/openclaw/openclaw/pull/59443", + "shared_directories": [ + "src/infra/net", + "src/infra", + "src" + ], + "shared_filenames": [ + "src/infra/net/fetch-guard.ssrf.test.ts", + "src/infra/net/fetch-guard.ts" + ], + "summary": "3 open PRs share weighted file overlap around `src/infra/net/fetch-guard.ssrf.test.ts`, `src/infra/net/fetch-guard.ts`; representative PR #59443.", + "title": "Scope: fix(fetch-guard): skip DNS pre-flight in trusted-env-proxy mode when proxy is configured" + }, + { + "authors": [ + "neeravmakwana" + ], + "average_similarity": 0.543, + "cluster_id": "pr-scope-64263-3", + "kind": "pr_scope", + "last_activity_at": "2026-04-16T00:51:27Z", + "outside_window_prs": [ + { + "additions": 1914, + "author": "100yenadmin", + "changed_files": 38, + "created_at": "2026-04-10T10:51:57Z", + "deletions": 110, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64263/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64263", + "merged": false, + "number": 64263, + "state": "open", + "title": "feat(agents): model-aware AGENTS file selection with bootstrapSignatureMode toggle", + "updated_at": "2026-04-13T03:02:05Z" }, { - "breadth_similarity": 0.875, - "concentration_similarity": 1.0, - "content_similarity": 0.252, - "left_pr_number": 64559, - "right_pr_number": 68698, + "additions": 2518, + "author": "100yenadmin", + "changed_files": 43, + "created_at": "2026-04-10T10:52:18Z", + "deletions": 113, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/64265/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64265", + "merged": false, + "number": 64265, + "state": "open", + "title": "docs(agents): document model-aware AGENTS, bootstrapSignatureMode, and add lenient-mode tests", + "updated_at": "2026-04-13T03:01:59Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.775, + "concentration_similarity": 0.928, + "content_similarity": 0.895, + "left_pr_number": 64263, + "right_pr_number": 64265, "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/cli-runner", + "src/agents/pi-embedded-runner", + "src/agents/pi-hooks", "src/auto-reply/reply", + "src/gateway/server-methods", + "src/agents", "src/auto-reply", - "src" + "src/config", + "src/gateway" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-from-config.test.ts", - "src/auto-reply/reply/dispatch-from-config.ts" + "src/agents/agent-scope.ts", + "src/agents/bootstrap-files.test.ts", + "src/agents/bootstrap-files.ts", + "src/agents/bootstrap-hooks.ts", + "src/agents/cli-runner.spawn.test.ts", + "src/agents/cli-runner.test-support.ts", + "src/agents/cli-runner/prepare.ts", + "src/agents/pi-embedded-runner/compact.ts", + "src/agents/pi-embedded-runner/compact.types.ts", + "src/agents/pi-embedded-runner/extensions.ts" ], - "similarity": 0.387, - "size_similarity": 0.488 + "similarity": 0.866, + "size_similarity": 0.769 }, { - "breadth_similarity": 0.375, - "concentration_similarity": 0.804, - "content_similarity": 0.291, - "left_pr_number": 53332, - "right_pr_number": 64182, + "breadth_similarity": 0.305, + "concentration_similarity": 0.939, + "content_similarity": 0.437, + "left_pr_number": 64265, + "right_pr_number": 67447, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "docs/.generated", + "docs/gateway", + "src/agents", + "src/config", + "docs", "src" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-from-config.ts" + "CHANGELOG.md", + "docs/.generated/config-baseline.sha256", + "docs/gateway/configuration-reference.md", + "src/agents/bootstrap-files.test.ts", + "src/agents/bootstrap-files.ts", + "src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-injection.test.ts", + "src/config/schema.base.generated.ts", + "src/config/schema.help.ts", + "src/config/types.agent-defaults.ts" ], - "similarity": 0.368, - "size_similarity": 0.577 + "similarity": 0.385, + "size_similarity": 0.012 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 1.0, - "content_similarity": 0.286, - "left_pr_number": 53332, - "right_pr_number": 64559, + "breadth_similarity": 0.418, + "concentration_similarity": 0.868, + "content_similarity": 0.413, + "left_pr_number": 64263, + "right_pr_number": 67447, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src/config", "src" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-from-config.ts" + "src/agents/bootstrap-files.test.ts", + "src/agents/bootstrap-files.ts", + "src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-injection.test.ts", + "src/config/schema.base.generated.ts", + "src/config/schema.help.ts", + "src/config/types.agent-defaults.ts" ], - "similarity": 0.368, - "size_similarity": 0.37 + "similarity": 0.377, + "size_similarity": 0.016 } ], - "pr_count": 4, + "pr_count": 3, "pr_numbers": [ - 53332, - 64182, - 64559, - 68698 + 64263, + 64265, + 67447 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68698 + 67447 ], - "representative_pr_number": 68698, - "representative_title": "fix(auto-reply): commit inbound dedupe on handled exits", - "representative_url": "https://github.com/openclaw/openclaw/pull/68698", + "representative_pr_number": 64265, + "representative_title": "docs(agents): document model-aware AGENTS, bootstrapSignatureMode, and add lenient-mode tests", + "representative_url": "https://github.com/openclaw/openclaw/pull/64265", "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/config", + "src/agents", + "src", + "src/agents/pi-hooks", + "src/agents/cli-runner", + "src/gateway/server-methods" ], "shared_filenames": [ - "src/auto-reply/reply/dispatch-from-config.ts", - "src/auto-reply/reply/dispatch-from-config.test.ts" + "src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-injection.test.ts", + "src/agents/bootstrap-files.test.ts", + "src/agents/bootstrap-files.ts", + "src/config/types.agent-defaults.ts", + "src/config/schema.help.ts", + "src/config/schema.base.generated.ts", + "src/agents/bootstrap-hooks.ts", + "src/agents/pi-hooks/compaction-safeguard-runtime.ts" ], - "summary": "4 open PRs share weighted file overlap around `src/auto-reply/reply/dispatch-from-config.ts`, `src/auto-reply/reply/dispatch-from-config.test.ts`; representative PR #68698.", - "title": "Scope: fix(auto-reply): commit inbound dedupe on handled exits" + "summary": "3 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-injection.test.ts`, `src/agents/bootstrap-files.test.ts`, `src/agents/bootstrap-files.ts`; representative PR #64265.", + "title": "Scope: docs(agents): document model-aware AGENTS, bootstrapSignatureMode, and add lenient-mode tests" }, { "authors": [ - "bek91" + "neeravmakwana" ], - "average_similarity": 0.426, - "cluster_id": "pr-scope-36253-4", + "average_similarity": 0.521, + "cluster_id": "pr-scope-37195-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T04:39:37Z", + "last_activity_at": "2026-04-19T01:04:00Z", "outside_window_prs": [ { - "additions": 56, - "author": "manusjs", - "changed_files": 4, - "created_at": "2026-03-05T14:24:12Z", - "deletions": 1, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36253/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36253", - "merged": false, - "number": 36253, - "state": "open", - "title": "feat(config): add agents.defaults.systemPromptFile for operator system prompt injection", - "updated_at": "2026-04-17T04:33:13Z" - }, - { - "additions": 28, - "author": "jbn7660-hash", - "changed_files": 2, - "created_at": "2026-03-24T07:37:12Z", - "deletions": 15, + "additions": 61, + "author": "KEHANG", + "changed_files": 1, + "created_at": "2026-03-06T04:53:23Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53515/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53515", + "files_url": "https://github.com/openclaw/openclaw/pull/37195/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37195", "merged": false, - "number": 53515, + "number": 37195, "state": "open", - "title": "fix: move thread context from user message to system prompt", - "updated_at": "2026-03-24T20:15:30Z" + "title": "Tests: cover PDF maxBytesMb enforcement", + "updated_at": "2026-04-19T04:31:51Z" }, { - "additions": 75, - "author": "MonkeyLeeT", - "changed_files": 4, - "created_at": "2026-04-12T00:47:02Z", - "deletions": 12, + "additions": 90, + "author": "lhy1024", + "changed_files": 3, + "created_at": "2026-04-13T06:10:52Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65071/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65071", + "files_url": "https://github.com/openclaw/openclaw/pull/65746/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65746", "merged": false, - "number": 65071, + "number": 65746, "state": "open", - "title": "fix(prompt): keep inbound chat ids out of system prefix", - "updated_at": "2026-04-14T02:42:02Z" + "title": "fix(pdf): resolve custom provider models with config-aware resolver", + "updated_at": "2026-04-13T06:41:49Z" } ], "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.507, - "left_pr_number": 53515, - "right_pr_number": 65071, - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/get-reply-run.media-only.test.ts", - "src/auto-reply/reply/get-reply-run.ts" - ], - "similarity": 0.554, - "size_similarity": 0.494 - }, - { - "breadth_similarity": 0.583, - "concentration_similarity": 0.59, - "content_similarity": 0.383, - "left_pr_number": 65071, - "right_pr_number": 68402, - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/get-reply-run.media-only.test.ts", - "src/auto-reply/reply/get-reply-run.ts" - ], - "similarity": 0.491, - "size_similarity": 0.897 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.561, - "content_similarity": 0.388, - "left_pr_number": 36253, - "right_pr_number": 53515, - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/get-reply-run.ts" - ], - "similarity": 0.463, - "size_similarity": 0.754 - }, - { - "breadth_similarity": 0.417, - "concentration_similarity": 0.59, - "content_similarity": 0.34, - "left_pr_number": 53515, - "right_pr_number": 68402, + "breadth_similarity": 0.542, + "concentration_similarity": 0.711, + "content_similarity": 0.615, + "left_pr_number": 65746, + "right_pr_number": 68747, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/auto-reply/reply/get-reply-run.media-only.test.ts", - "src/auto-reply/reply/get-reply-run.ts" + "src/agents/tools/pdf-tool.test.ts", + "src/agents/tools/pdf-tool.ts" ], - "similarity": 0.391, - "size_similarity": 0.551 + "similarity": 0.582, + "size_similarity": 0.413 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.561, - "content_similarity": 0.215, - "left_pr_number": 36253, - "right_pr_number": 65071, + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.469, + "left_pr_number": 37195, + "right_pr_number": 65746, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/auto-reply/reply/get-reply-run.ts" + "src/agents/tools/pdf-tool.test.ts" ], - "similarity": 0.352, - "size_similarity": 0.655 + "similarity": 0.544, + "size_similarity": 0.663 }, { - "breadth_similarity": 0.833, - "concentration_similarity": 0.972, - "content_similarity": 0.087, - "left_pr_number": 36253, - "right_pr_number": 68402, + "breadth_similarity": 0.292, + "concentration_similarity": 0.711, + "content_similarity": 0.398, + "left_pr_number": 37195, + "right_pr_number": 68747, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/auto-reply/reply/get-reply-run.ts" + "src/agents/tools/pdf-tool.test.ts" ], - "similarity": 0.302, - "size_similarity": 0.731 + "similarity": 0.437, + "size_similarity": 0.623 } ], - "pr_count": 4, + "pr_count": 3, "pr_numbers": [ - 36253, - 53515, - 65071, - 68402 + 37195, + 65746, + 68747 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68402 + 68747 ], - "representative_pr_number": 53515, - "representative_title": "fix: move thread context from user message to system prompt", - "representative_url": "https://github.com/openclaw/openclaw/pull/53515", + "representative_pr_number": 65746, + "representative_title": "fix(pdf): resolve custom provider models with config-aware resolver", + "representative_url": "https://github.com/openclaw/openclaw/pull/65746", "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/agents/tools", + "src/agents", "src" ], "shared_filenames": [ - "src/auto-reply/reply/get-reply-run.ts", - "src/auto-reply/reply/get-reply-run.media-only.test.ts" + "src/agents/tools/pdf-tool.test.ts", + "src/agents/tools/pdf-tool.ts" ], - "summary": "4 open PRs share weighted file overlap around `src/auto-reply/reply/get-reply-run.ts`, `src/auto-reply/reply/get-reply-run.media-only.test.ts`; representative PR #53515.", - "title": "Scope: fix: move thread context from user message to system prompt" + "summary": "3 open PRs share weighted file overlap around `src/agents/tools/pdf-tool.test.ts`, `src/agents/tools/pdf-tool.ts`; representative PR #65746.", + "title": "Scope: fix(pdf): resolve custom provider models with config-aware resolver" }, { "authors": [ - "Knightmare6890" + "Jmarzab" ], - "average_similarity": 0.423, - "cluster_id": "pr-scope-36143-4", + "average_similarity": 0.501, + "cluster_id": "pr-scope-60063-3", "kind": "pr_scope", - "last_activity_at": "2026-04-15T21:26:02Z", + "last_activity_at": "2026-04-19T20:39:14Z", "outside_window_prs": [ { - "additions": 36, - "author": "JaewookYou", - "changed_files": 1, - "created_at": "2026-03-05T12:55:47Z", - "deletions": 10, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36143/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36143", - "merged": false, - "number": 36143, - "state": "open", - "title": "fix: surface error message when LLM fails mid-turn after tool calls", - "updated_at": "2026-04-17T04:32:30Z" - }, - { - "additions": 28, - "author": "ShaunLeeCN", - "changed_files": 1, - "created_at": "2026-03-05T13:00:52Z", - "deletions": 2, + "additions": 112, + "author": "jlapenna", + "changed_files": 4, + "created_at": "2026-04-03T04:12:38Z", + "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36148/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36148", + "files_url": "https://github.com/openclaw/openclaw/pull/60063/files", + "html_url": "https://github.com/openclaw/openclaw/pull/60063", "merged": false, - "number": 36148, + "number": 60063, "state": "open", - "title": "fix(cron): preserve explicit delivery.to in announce flow", - "updated_at": "2026-04-17T04:32:36Z" + "title": "fix(streaming): resolve overlapping chunk duplication in chat stream assembler", + "updated_at": "2026-04-18T20:45:59Z" }, { - "additions": 38, - "author": "LIC99", + "additions": 606, + "author": "samzong", "changed_files": 2, - "created_at": "2026-03-24T22:40:50Z", - "deletions": 3, + "created_at": "2026-04-08T16:28:36Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54043/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54043", + "files_url": "https://github.com/openclaw/openclaw/pull/63244/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63244", "merged": false, - "number": 54043, + "number": 63244, "state": "open", - "title": "fix: strip trailing NO_REPLY from cron/isolated session delivery", - "updated_at": "2026-03-24T22:45:46Z" + "title": "[Feat] surface spawnedBy in chat and agent broadcast payloads", + "updated_at": "2026-04-11T08:24:03Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.646, - "left_pr_number": 36143, - "right_pr_number": 67381, - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.ts" - ], - "similarity": 0.732, - "size_similarity": 0.868 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.707, - "content_similarity": 0.347, - "left_pr_number": 36143, - "right_pr_number": 54043, + "content_similarity": 0.728, + "left_pr_number": 63244, + "right_pr_number": 69084, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/gateway", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.ts" + "src/gateway/server-chat.agent-events.test.ts", + "src/gateway/server-chat.ts" ], - "similarity": 0.462, - "size_similarity": 0.891 + "similarity": 0.667, + "size_similarity": 0.051 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.707, - "content_similarity": 0.35, - "left_pr_number": 36148, - "right_pr_number": 54043, + "breadth_similarity": 0.417, + "concentration_similarity": 0.513, + "content_similarity": 0.477, + "left_pr_number": 60063, + "right_pr_number": 69084, "shared_directories": [ - "src/agents", + "src/gateway", "src" ], "shared_filenames": [ - "src/agents/subagent-announce.ts" + "src/gateway/server-chat.agent-events.test.ts", + "src/gateway/server-chat.ts" ], - "similarity": 0.44, - "size_similarity": 0.732 + "similarity": 0.441, + "size_similarity": 0.265 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.707, - "content_similarity": 0.298, - "left_pr_number": 54043, - "right_pr_number": 67381, + "breadth_similarity": 0.417, + "concentration_similarity": 0.513, + "content_similarity": 0.426, + "left_pr_number": 60063, + "right_pr_number": 63244, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", + "src/gateway", "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.ts" - ], - "similarity": 0.41, - "size_similarity": 0.774 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.01, - "left_pr_number": 36143, - "right_pr_number": 36148, - "shared_directories": [ - "src" - ], - "shared_filenames": [], - "similarity": 0.255, - "size_similarity": 0.652 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.008, - "left_pr_number": 36148, - "right_pr_number": 67381, - "shared_directories": [ - "src" + "src/gateway/server-chat.agent-events.test.ts", + "src/gateway/server-chat.ts" ], - "shared_filenames": [], - "similarity": 0.241, - "size_similarity": 0.566 + "similarity": 0.394, + "size_similarity": 0.193 } ], - "pr_count": 4, + "pr_count": 3, "pr_numbers": [ - 36143, - 36148, - 54043, - 67381 + 60063, + 63244, + 69084 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67381 + 69084 ], - "representative_pr_number": 36143, - "representative_title": "fix: surface error message when LLM fails mid-turn after tool calls", - "representative_url": "https://github.com/openclaw/openclaw/pull/36143", + "representative_pr_number": 69084, + "representative_title": "fix(webchat): hide heartbeat chat output using showAlerts", + "representative_url": "https://github.com/openclaw/openclaw/pull/69084", "shared_directories": [ - "src", - "src/auto-reply/reply", - "src/auto-reply", - "src/agents" + "src/gateway", + "src" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.ts", - "src/agents/subagent-announce.ts" + "src/gateway/server-chat.agent-events.test.ts", + "src/gateway/server-chat.ts" ], - "summary": "4 open PRs share weighted file overlap around `src/auto-reply/reply/agent-runner-execution.ts`, `src/agents/subagent-announce.ts`; representative PR #36143.", - "title": "Scope: fix: surface error message when LLM fails mid-turn after tool calls" + "summary": "3 open PRs share weighted file overlap around `src/gateway/server-chat.agent-events.test.ts`, `src/gateway/server-chat.ts`; representative PR #69084.", + "title": "Scope: fix(webchat): hide heartbeat chat output using showAlerts" }, { "authors": [ - "huangzynn" + "HowdyDooToYou" ], - "average_similarity": 0.418, - "cluster_id": "pr-scope-59219-4", + "average_similarity": 0.488, + "cluster_id": "pr-scope-58823-3", "kind": "pr_scope", - "last_activity_at": "2026-04-17T01:29:08Z", + "last_activity_at": "2026-04-20T13:41:52Z", "outside_window_prs": [ { - "additions": 197, - "author": "luoxiao6645", - "changed_files": 6, - "created_at": "2026-04-01T19:24:36Z", - "deletions": 46, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/59219/files", - "html_url": "https://github.com/openclaw/openclaw/pull/59219", - "merged": false, - "number": 59219, - "state": "open", - "title": "fix[Bug]: [skills] Skipping skill path error triggered on officially installed skills via clawhub (WSL Environment)", - "updated_at": "2026-04-17T05:08:55Z" - }, - { - "additions": 43, - "author": "Bartok9", - "changed_files": 2, - "created_at": "2026-04-10T08:38:06Z", - "deletions": 25, + "additions": 100, + "author": "joeykrug", + "changed_files": 4, + "created_at": "2026-04-01T07:25:23Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64198/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64198", + "files_url": "https://github.com/openclaw/openclaw/pull/58823/files", + "html_url": "https://github.com/openclaw/openclaw/pull/58823", "merged": false, - "number": 64198, + "number": 58823, "state": "open", - "title": "fix(skills): sort available_skills alphabetically for prompt cache stability", - "updated_at": "2026-04-11T08:37:29Z" + "title": "fix(agents): restore global subagent model default priority over agent own model", + "updated_at": "2026-04-21T17:41:04Z" }, { - "additions": 29, - "author": "MoerAI", + "additions": 96, + "author": "HowdyDooToYou", "changed_files": 2, - "created_at": "2026-04-10T09:27:41Z", - "deletions": 6, + "created_at": "2026-04-02T13:08:42Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64215/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64215", + "files_url": "https://github.com/openclaw/openclaw/pull/59681/files", + "html_url": "https://github.com/openclaw/openclaw/pull/59681", "merged": false, - "number": 64215, + "number": 59681, "state": "open", - "title": "fix(skills): sort available_skills alphabetically for deterministic prompt ordering (#64167)", - "updated_at": "2026-04-10T09:33:20Z" + "title": "fix(agents): resolve model aliases in sessions_spawn", + "updated_at": "2026-04-19T17:09:52Z" } ], "pairwise": [ - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.666, - "left_pr_number": 64198, - "right_pr_number": 64215, - "shared_directories": [ - "src/agents/skills", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/skills/compact-format.test.ts", - "src/agents/skills/workspace.ts" - ], - "similarity": 0.694, - "size_similarity": 0.515 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 0.593, - "content_similarity": 0.337, - "left_pr_number": 64198, - "right_pr_number": 67480, - "shared_directories": [ - "src/agents/skills", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/skills/workspace.ts" - ], - "similarity": 0.46, - "size_similarity": 0.794 - }, - { - "breadth_similarity": 0.292, - "concentration_similarity": 0.547, - "content_similarity": 0.512, - "left_pr_number": 59219, - "right_pr_number": 64198, - "shared_directories": [ - "src/agents/skills", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/skills/workspace.ts" - ], - "similarity": 0.457, - "size_similarity": 0.28 - }, { "breadth_similarity": 0.417, - "concentration_similarity": 0.955, - "content_similarity": 0.377, - "left_pr_number": 59219, - "right_pr_number": 67480, + "concentration_similarity": 0.927, + "content_similarity": 0.49, + "left_pr_number": 58823, + "right_pr_number": 59681, "shared_directories": [ - "src/agents/skills", "src/agents", "src" ], "shared_filenames": [ - "src/agents/skills/workspace.ts" + "src/agents/model-selection.test.ts", + "src/agents/model-selection.ts" ], - "similarity": 0.387, - "size_similarity": 0.222 + "similarity": 0.567, + "size_similarity": 0.908 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.593, - "content_similarity": 0.156, - "left_pr_number": 64215, - "right_pr_number": 67480, + "breadth_similarity": 0.619, + "concentration_similarity": 0.601, + "content_similarity": 0.502, + "left_pr_number": 58823, + "right_pr_number": 69029, "shared_directories": [ - "src/agents/skills", "src/agents", "src" ], "shared_filenames": [ - "src/agents/skills/workspace.ts" + "src/agents/model-selection.test.ts", + "src/agents/model-selection.ts" ], - "similarity": 0.311, - "size_similarity": 0.648 + "similarity": 0.52, + "size_similarity": 0.509 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.547, - "content_similarity": 0.17, - "left_pr_number": 59219, - "right_pr_number": 64215, + "breadth_similarity": 0.393, + "concentration_similarity": 0.528, + "content_similarity": 0.346, + "left_pr_number": 59681, + "right_pr_number": 69029, "shared_directories": [ - "src/agents/skills", "src/agents", "src" ], "shared_filenames": [ - "src/agents/skills/workspace.ts" + "src/agents/model-selection.test.ts", + "src/agents/model-selection.ts" ], - "similarity": 0.197, - "size_similarity": 0.144 + "similarity": 0.377, + "size_similarity": 0.463 } ], - "pr_count": 4, + "pr_count": 3, "pr_numbers": [ - 59219, - 64198, - 64215, - 67480 + 58823, + 59681, + 69029 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67480 + 69029 ], - "representative_pr_number": 64198, - "representative_title": "fix(skills): sort available_skills alphabetically for prompt cache stability", - "representative_url": "https://github.com/openclaw/openclaw/pull/64198", + "representative_pr_number": 58823, + "representative_title": "fix(agents): restore global subagent model default priority over agent own model", + "representative_url": "https://github.com/openclaw/openclaw/pull/58823", "shared_directories": [ - "src/agents/skills", "src/agents", "src" ], "shared_filenames": [ - "src/agents/skills/workspace.ts", - "src/agents/skills/compact-format.test.ts" + "src/agents/model-selection.test.ts", + "src/agents/model-selection.ts" ], - "summary": "4 open PRs share weighted file overlap around `src/agents/skills/workspace.ts`, `src/agents/skills/compact-format.test.ts`; representative PR #64198.", - "title": "Scope: fix(skills): sort available_skills alphabetically for prompt cache stability" + "summary": "3 open PRs share weighted file overlap around `src/agents/model-selection.test.ts`, `src/agents/model-selection.ts`; representative PR #58823.", + "title": "Scope: fix(agents): restore global subagent model default priority over agent own model" }, { "authors": [ - "nxmxbbd" + "GaosCode" ], - "average_similarity": 0.363, - "cluster_id": "pr-scope-53740-4", + "average_similarity": 0.487, + "cluster_id": "pr-scope-53496-3", "kind": "pr_scope", - "last_activity_at": "2026-04-17T19:32:28Z", + "last_activity_at": "2026-04-18T06:59:25Z", "outside_window_prs": [ { - "additions": 104, - "author": "nxmxbbd", - "changed_files": 8, - "created_at": "2026-03-24T14:29:43Z", - "deletions": 5, + "additions": 322, + "author": "chunyuforka", + "changed_files": 6, + "created_at": "2026-03-24T07:12:01Z", + "deletions": 17, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53740/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53740", + "files_url": "https://github.com/openclaw/openclaw/pull/53496/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53496", "merged": false, - "number": 53740, + "number": 53496, "state": "open", - "title": "fix: skip system event drain for periodic heartbeat runs", - "updated_at": "2026-03-24T20:15:29Z" + "title": "feat(feishu): support toolsBySender for group policies", + "updated_at": "2026-03-24T20:15:30Z" }, { - "additions": 587, - "author": "VACInc", - "changed_files": 9, - "created_at": "2026-03-24T20:21:07Z", - "deletions": 31, + "additions": 144, + "author": "byungsker", + "changed_files": 11, + "created_at": "2026-03-24T23:04:03Z", + "deletions": 21, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53940/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53940", + "files_url": "https://github.com/openclaw/openclaw/pull/54058/files", + "html_url": "https://github.com/openclaw/openclaw/pull/54058", "merged": true, - "number": 53940, - "state": "open", - "title": "fix(gateway): restart sentinel wakes the session after restart and preserves thread routing", - "updated_at": "2026-03-24T21:18:35Z" - }, - { - "additions": 615, - "author": "VACInc", - "changed_files": 6, - "created_at": "2026-04-08T22:31:37Z", - "deletions": 50, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63406/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63406", - "merged": false, - "number": 63406, + "number": 54058, "state": "open", - "title": "fix(gateway): preserve restart continuations after reboot", - "updated_at": "2026-04-11T16:44:33Z" + "title": "fix(feishu): default requireMention to false when groupPolicy is open", + "updated_at": "2026-03-24T23:10:57Z" } ], "pairwise": [ { - "breadth_similarity": 0.708, - "concentration_similarity": 0.778, - "content_similarity": 0.478, - "left_pr_number": 53940, - "right_pr_number": 63406, - "shared_directories": [ - "src/gateway", - "src/infra", - "src" - ], - "shared_filenames": [ - "src/gateway/server-restart-sentinel.test.ts", - "src/gateway/server-restart-sentinel.ts" - ], - "similarity": 0.584, - "size_similarity": 0.929 - }, - { - "breadth_similarity": 0.41, - "concentration_similarity": 0.815, - "content_similarity": 0.336, - "left_pr_number": 53940, - "right_pr_number": 65757, - "shared_directories": [ - "src/gateway", - "src/infra", - "src" - ], - "shared_filenames": [ - "src/gateway/server-restart-sentinel.test.ts", - "src/gateway/server-restart-sentinel.ts", - "src/infra/heartbeat-runner.ts", - "src/infra/system-events.test.ts", - "src/infra/system-events.ts" - ], - "similarity": 0.462, - "size_similarity": 0.967 - }, - { - "breadth_similarity": 0.389, - "concentration_similarity": 0.936, - "content_similarity": 0.417, - "left_pr_number": 53740, - "right_pr_number": 65757, + "breadth_similarity": 0.485, + "concentration_similarity": 0.989, + "content_similarity": 0.547, + "left_pr_number": 54058, + "right_pr_number": 68444, "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src/infra", - "src" + "extensions/feishu/src", + "docs/channels", + "extensions/feishu", + "docs", + "extensions" ], "shared_filenames": [ - "src/auto-reply/reply/get-reply-run.ts", - "src/auto-reply/reply/session-system-events.ts", - "src/infra/heartbeat-runner.ts", - "src/infra/system-events.test.ts" + "docs/channels/feishu.md", + "extensions/feishu/src/bot.test.ts", + "extensions/feishu/src/bot.ts", + "extensions/feishu/src/config-schema.test.ts", + "extensions/feishu/src/config-schema.ts", + "extensions/feishu/src/policy.ts" ], - "similarity": 0.403, - "size_similarity": 0.171 + "similarity": 0.559, + "size_similarity": 0.525 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.963, - "content_similarity": 0.142, - "left_pr_number": 63406, - "right_pr_number": 65757, + "breadth_similarity": 0.929, + "concentration_similarity": 0.891, + "content_similarity": 0.389, + "left_pr_number": 53496, + "right_pr_number": 68444, "shared_directories": [ - "src/agents", - "src/gateway", - "src/infra", - "src" + "extensions/feishu/src", + "extensions/feishu", + "docs", + "extensions" ], "shared_filenames": [ - "src/gateway/server-restart-sentinel.test.ts", - "src/gateway/server-restart-sentinel.ts" + "extensions/feishu/src/config-schema.test.ts", + "extensions/feishu/src/config-schema.ts", + "extensions/feishu/src/policy.test.ts", + "extensions/feishu/src/policy.ts" ], - "similarity": 0.321, - "size_similarity": 0.961 + "similarity": 0.548, + "size_similarity": 0.926 }, { - "breadth_similarity": 0.944, + "breadth_similarity": 0.439, "concentration_similarity": 0.879, - "content_similarity": 0.133, - "left_pr_number": 53740, - "right_pr_number": 53940, + "content_similarity": 0.276, + "left_pr_number": 53496, + "right_pr_number": 54058, "shared_directories": [ - "src/infra", - "src" + "extensions/feishu/src", + "docs/.generated", + "extensions/feishu", + "docs", + "extensions" ], "shared_filenames": [ - "src/infra/heartbeat-runner.ts", - "src/infra/system-events.test.ts" - ], - "similarity": 0.258, - "size_similarity": 0.176 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 0.899, - "content_similarity": 0.013, - "left_pr_number": 53740, - "right_pr_number": 63406, - "shared_directories": [ - "src/infra", - "src" + "docs/.generated/config-baseline.json", + "docs/.generated/config-baseline.jsonl", + "extensions/feishu/src/config-schema.test.ts", + "extensions/feishu/src/config-schema.ts", + "extensions/feishu/src/policy.ts" ], - "shared_filenames": [], - "similarity": 0.154, - "size_similarity": 0.164 + "similarity": 0.354, + "size_similarity": 0.487 } ], - "pr_count": 4, + "pr_count": 3, "pr_numbers": [ - 53740, - 53940, - 63406, - 65757 + 53496, + 54058, + 68444 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65757 + 68444 ], - "representative_pr_number": 53940, - "representative_title": "fix(gateway): restart sentinel wakes the session after restart and preserves thread routing", - "representative_url": "https://github.com/openclaw/openclaw/pull/53940", + "representative_pr_number": 68444, + "representative_title": "fix(feishu): stop auto-forwarding mentions when disabled", + "representative_url": "https://github.com/openclaw/openclaw/pull/68444", "shared_directories": [ - "src/infra", - "src", - "src/gateway", - "src/auto-reply/reply", - "src/auto-reply", - "src/agents" + "extensions/feishu/src", + "extensions/feishu", + "docs", + "extensions", + "docs/channels", + "docs/.generated" ], "shared_filenames": [ - "src/gateway/server-restart-sentinel.test.ts", - "src/gateway/server-restart-sentinel.ts", - "src/infra/system-events.test.ts", - "src/infra/heartbeat-runner.ts", - "src/auto-reply/reply/session-system-events.ts", - "src/infra/system-events.ts", - "src/auto-reply/reply/get-reply-run.ts" + "extensions/feishu/src/policy.ts", + "extensions/feishu/src/config-schema.test.ts", + "extensions/feishu/src/config-schema.ts", + "extensions/feishu/src/policy.test.ts", + "docs/channels/feishu.md", + "extensions/feishu/src/bot.test.ts", + "extensions/feishu/src/bot.ts", + "docs/.generated/config-baseline.jsonl" ], - "summary": "4 open PRs share weighted file overlap around `src/gateway/server-restart-sentinel.test.ts`, `src/gateway/server-restart-sentinel.ts`, `src/infra/system-events.test.ts`; representative PR #53940.", - "title": "Scope: fix(gateway): restart sentinel wakes the session after restart and preserves thread routing" + "summary": "3 open PRs share weighted file overlap around `extensions/feishu/src/policy.ts`, `extensions/feishu/src/config-schema.test.ts`, `extensions/feishu/src/config-schema.ts`; representative PR #68444.", + "title": "Scope: fix(feishu): stop auto-forwarding mentions when disabled" }, { "authors": [ - "jeffchen1981-fu" + "taitruong" ], - "average_similarity": 0.904, - "cluster_id": "pr-scope-61768-3", + "average_similarity": 0.45, + "cluster_id": "pr-scope-64653-3", "kind": "pr_scope", - "last_activity_at": "2026-04-16T13:21:06Z", + "last_activity_at": "2026-04-20T22:09:56Z", "outside_window_prs": [ { - "additions": 2, - "author": "dependabot[bot]", - "changed_files": 2, - "created_at": "2026-04-06T08:44:20Z", - "deletions": 2, + "additions": 144, + "author": "rubening", + "changed_files": 3, + "created_at": "2026-04-11T05:09:52Z", + "deletions": 7, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/61768/files", - "html_url": "https://github.com/openclaw/openclaw/pull/61768", + "files_url": "https://github.com/openclaw/openclaw/pull/64653/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64653", "merged": false, - "number": 61768, + "number": 64653, "state": "open", - "title": "chore(deps): bump actions/checkout from 4 to 6", - "updated_at": "2026-04-18T13:56:28Z" + "title": "fix: honor provider-prefixed configured model ids for routed providers", + "updated_at": "2026-04-12T23:45:47Z" }, { - "additions": 2, - "author": "dependabot[bot]", - "changed_files": 2, - "created_at": "2026-04-06T08:44:35Z", - "deletions": 2, + "additions": 263, + "author": "mobilinkd", + "changed_files": 12, + "created_at": "2026-04-11T22:37:23Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/61769/files", - "html_url": "https://github.com/openclaw/openclaw/pull/61769", + "files_url": "https://github.com/openclaw/openclaw/pull/65030/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65030", "merged": false, - "number": 61769, + "number": 65030, "state": "open", - "title": "chore(deps): bump actions/setup-node from 4 to 6", - "updated_at": "2026-04-18T13:58:39Z" + "title": "fix(amazon-bedrock): track literal contextWindow fallbacks with provenance flag", + "updated_at": "2026-04-13T13:17:07Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 1.0, - "left_pr_number": 61768, - "right_pr_number": 61769, + "breadth_similarity": 0.325, + "concentration_similarity": 0.712, + "content_similarity": 0.454, + "left_pr_number": 64653, + "right_pr_number": 65030, "shared_directories": [ - ".github/workflows", - ".github" + "src/agents/pi-embedded-runner", + "src/agents", + "src" ], "shared_filenames": [ - ".github/workflows/docs-sync-publish.yml", - ".github/workflows/parity-gate.yml" + "src/agents/pi-embedded-runner/model.test.ts", + "src/agents/pi-embedded-runner/model.ts" ], - "similarity": 1.0, - "size_similarity": 1.0 + "similarity": 0.469, + "size_similarity": 0.555 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.923, - "left_pr_number": 61768, - "right_pr_number": 67096, + "breadth_similarity": 0.833, + "concentration_similarity": 0.777, + "content_similarity": 0.344, + "left_pr_number": 65030, + "right_pr_number": 69464, "shared_directories": [ - ".github/workflows", - ".github" + "src/agents/pi-embedded-runner", + "src/agents", + "src/config", + "extensions", + "src" ], "shared_filenames": [ - ".github/workflows/docs-sync-publish.yml", - ".github/workflows/parity-gate.yml" + "src/agents/pi-embedded-runner/model.test.ts", + "src/agents/pi-embedded-runner/model.ts", + "src/config/types.models.ts" ], - "similarity": 0.856, - "size_similarity": 0.4 + "similarity": 0.447, + "size_similarity": 0.562 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.923, - "left_pr_number": 61769, - "right_pr_number": 67096, + "breadth_similarity": 0.317, + "concentration_similarity": 0.488, + "content_similarity": 0.471, + "left_pr_number": 64653, + "right_pr_number": 69464, "shared_directories": [ - ".github/workflows", - ".github" + "src/agents/pi-embedded-runner", + "src/agents", + "docs", + "src" ], "shared_filenames": [ - ".github/workflows/docs-sync-publish.yml", - ".github/workflows/parity-gate.yml" + "src/agents/pi-embedded-runner/model.test.ts", + "src/agents/pi-embedded-runner/model.ts" ], - "similarity": 0.856, - "size_similarity": 0.4 + "similarity": 0.433, + "size_similarity": 0.312 } ], "pr_count": 3, "pr_numbers": [ - 61768, - 61769, - 67096 + 64653, + 65030, + 69464 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67096 + 69464 ], - "representative_pr_number": 61768, - "representative_title": "chore(deps): bump actions/checkout from 4 to 6", - "representative_url": "https://github.com/openclaw/openclaw/pull/61768", + "representative_pr_number": 65030, + "representative_title": "fix(amazon-bedrock): track literal contextWindow fallbacks with provenance flag", + "representative_url": "https://github.com/openclaw/openclaw/pull/65030", "shared_directories": [ - ".github/workflows", - ".github" + "src/agents/pi-embedded-runner", + "src/agents", + "src", + "src/config", + "docs", + "extensions" ], "shared_filenames": [ - ".github/workflows/docs-sync-publish.yml", - ".github/workflows/parity-gate.yml" + "src/agents/pi-embedded-runner/model.test.ts", + "src/agents/pi-embedded-runner/model.ts", + "src/config/types.models.ts" ], - "summary": "3 open PRs share weighted file overlap around `.github/workflows/docs-sync-publish.yml`, `.github/workflows/parity-gate.yml`; representative PR #61768.", - "title": "Scope: chore(deps): bump actions/checkout from 4 to 6" + "summary": "3 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/model.test.ts`, `src/agents/pi-embedded-runner/model.ts`, `src/config/types.models.ts`; representative PR #65030.", + "title": "Scope: fix(amazon-bedrock): track literal contextWindow fallbacks with provenance flag" }, { "authors": [ - "armorbreak001" + "miyago9267" ], - "average_similarity": 0.835, - "cluster_id": "pr-scope-65176-3", + "average_similarity": 0.446, + "cluster_id": "pr-scope-37289-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T13:04:24Z", + "last_activity_at": "2026-04-18T09:22:33Z", "outside_window_prs": [ { - "additions": 59, - "author": "draix", - "changed_files": 2, - "created_at": "2026-04-12T04:36:48Z", - "deletions": 10, + "additions": 43, + "author": "yyobject", + "changed_files": 7, + "created_at": "2026-03-06T06:27:12Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65176/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65176", + "files_url": "https://github.com/openclaw/openclaw/pull/37289/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37289", "merged": false, - "number": 65176, + "number": 37289, "state": "open", - "title": "fix: improve SSRF resolved-IP error message with remediation hint (#65153)", - "updated_at": "2026-04-12T10:12:11Z" + "title": "Cron: add webhookSsrfPolicy config to allow private-network webhook targets", + "updated_at": "2026-04-19T04:32:24Z" }, { - "additions": 59, - "author": "draix", - "changed_files": 2, - "created_at": "2026-04-12T04:41:44Z", - "deletions": 10, + "additions": 31, + "author": "andyk-ms", + "changed_files": 7, + "created_at": "2026-03-28T17:34:32Z", + "deletions": 15, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65179/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65179", + "files_url": "https://github.com/openclaw/openclaw/pull/56545/files", + "html_url": "https://github.com/openclaw/openclaw/pull/56545", "merged": false, - "number": 65179, + "number": 56545, "state": "open", - "title": "fix: apply payload.model override in cron jobs even when not in allowlist (#65129)", - "updated_at": "2026-04-12T10:12:12Z" + "title": "feat(cron): add agent-turn mode for failure alerts", + "updated_at": "2026-04-19T04:31:03Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 1.0, - "left_pr_number": 65176, - "right_pr_number": 65179, + "breadth_similarity": 0.764, + "concentration_similarity": 0.887, + "content_similarity": 0.484, + "left_pr_number": 37289, + "right_pr_number": 68055, "shared_directories": [ - "src/cron/isolated-agent", - "src/infra/net", - "src/cron", - "src/infra", + "src/config", + "src/gateway", "src" ], "shared_filenames": [ - "src/cron/isolated-agent/model-selection.ts", - "src/infra/net/ssrf.ts" + "CHANGELOG.md", + "src/config/schema.help.ts", + "src/config/schema.labels.ts", + "src/config/types.cron.ts", + "src/config/zod-schema.ts", + "src/gateway/server-cron.ts" ], - "similarity": 1.0, - "size_similarity": 1.0 + "similarity": 0.529, + "size_similarity": 0.458 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.928, - "content_similarity": 0.904, - "left_pr_number": 65176, - "right_pr_number": 68555, + "breadth_similarity": 0.8, + "concentration_similarity": 0.729, + "content_similarity": 0.311, + "left_pr_number": 37289, + "right_pr_number": 56545, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", + "src/config", + "src/gateway", "src" ], "shared_filenames": [ - "src/cron/isolated-agent/model-selection.ts" + "src/config/types.cron.ts", + "src/config/zod-schema.ts", + "src/gateway/server-cron.ts" ], - "similarity": 0.753, - "size_similarity": 0.159 + "similarity": 0.478, + "size_similarity": 0.957 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.928, - "content_similarity": 0.904, - "left_pr_number": 65179, - "right_pr_number": 68555, + "breadth_similarity": 0.789, + "concentration_similarity": 0.842, + "content_similarity": 0.197, + "left_pr_number": 56545, + "right_pr_number": 68055, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", + "src/config", + "src/gateway", "src" ], "shared_filenames": [ - "src/cron/isolated-agent/model-selection.ts" + "src/config/types.cron.ts", + "src/config/zod-schema.ts", + "src/gateway/server-cron.ts" ], - "similarity": 0.753, - "size_similarity": 0.159 + "similarity": 0.331, + "size_similarity": 0.479 } ], "pr_count": 3, "pr_numbers": [ - 65176, - 65179, - 68555 + 37289, + 56545, + 68055 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68555 + 68055 ], - "representative_pr_number": 65176, - "representative_title": "fix: improve SSRF resolved-IP error message with remediation hint (#65153)", - "representative_url": "https://github.com/openclaw/openclaw/pull/65176", + "representative_pr_number": 37289, + "representative_title": "Cron: add webhookSsrfPolicy config to allow private-network webhook targets", + "representative_url": "https://github.com/openclaw/openclaw/pull/37289", "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src", - "src/infra/net", - "src/infra" + "src/config", + "src/gateway", + "src" ], "shared_filenames": [ - "src/cron/isolated-agent/model-selection.ts", - "src/infra/net/ssrf.ts" + "src/config/types.cron.ts", + "src/gateway/server-cron.ts", + "src/config/zod-schema.ts", + "src/config/schema.labels.ts", + "src/config/schema.help.ts", + "CHANGELOG.md" ], - "summary": "3 open PRs share weighted file overlap around `src/cron/isolated-agent/model-selection.ts`, `src/infra/net/ssrf.ts`; representative PR #65176.", - "title": "Scope: fix: improve SSRF resolved-IP error message with remediation hint (#65153)" + "summary": "3 open PRs share weighted file overlap around `src/config/types.cron.ts`, `src/gateway/server-cron.ts`, `src/config/zod-schema.ts`; representative PR #37289.", + "title": "Scope: Cron: add webhookSsrfPolicy config to allow private-network webhook targets" }, { "authors": [ - "SARAMALI15792" + "creativerezz" ], - "average_similarity": 0.66, - "cluster_id": "pr-scope-53534-3", + "average_similarity": 0.442, + "cluster_id": "pr-scope-63379-3", "kind": "pr_scope", - "last_activity_at": "2026-04-14T02:33:20Z", + "last_activity_at": "2026-04-21T11:16:52Z", "outside_window_prs": [ { - "additions": 68, - "author": "allan0509", - "changed_files": 1, - "created_at": "2026-03-24T08:04:03Z", - "deletions": 38, + "additions": 250, + "author": "mrosmarin", + "changed_files": 8, + "created_at": "2026-04-08T21:33:18Z", + "deletions": 22, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53534/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53534", + "files_url": "https://github.com/openclaw/openclaw/pull/63379/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63379", "merged": false, - "number": 53534, + "number": 63379, "state": "open", - "title": "fix(feishu): refine streaming card delivery", - "updated_at": "2026-03-24T20:15:30Z" + "title": "Feature/trusted proxy loopback", + "updated_at": "2026-04-10T13:22:56Z" }, { - "additions": 154, - "author": "Vicky-v7", - "changed_files": 4, - "created_at": "2026-03-26T04:48:27Z", - "deletions": 4, + "additions": 481, + "author": "jetd1", + "changed_files": 11, + "created_at": "2026-04-10T05:48:19Z", + "deletions": 59, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54899/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54899", + "files_url": "https://github.com/openclaw/openclaw/pull/64122/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64122", "merged": false, - "number": 54899, + "number": 64122, "state": "open", - "title": "fix(feishu): sanitize markdown in streaming cards to prevent truncation", - "updated_at": "2026-04-17T17:17:11Z" + "title": "fix(gateway): allow password fallback for trusted-proxy auth mode", + "updated_at": "2026-04-19T14:18:09Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.899, - "left_pr_number": 53534, - "right_pr_number": 66148, + "breadth_similarity": 0.614, + "concentration_similarity": 0.921, + "content_similarity": 0.47, + "left_pr_number": 63379, + "right_pr_number": 64122, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/feishu/src/streaming-card.ts" + "src/gateway/auth.test.ts", + "src/gateway/auth.ts" ], - "similarity": 0.795, - "size_similarity": 0.104 + "similarity": 0.512, + "size_similarity": 0.504 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 1.0, - "content_similarity": 0.659, - "left_pr_number": 53534, - "right_pr_number": 54899, + "breadth_similarity": 0.25, + "concentration_similarity": 0.901, + "content_similarity": 0.463, + "left_pr_number": 63379, + "right_pr_number": 69638, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/feishu/src/streaming-card.ts" + "src/gateway/auth.test.ts", + "src/gateway/auth.ts" ], - "similarity": 0.674, - "size_similarity": 0.671 + "similarity": 0.413, + "size_similarity": 0.125 }, { - "breadth_similarity": 0.625, - "concentration_similarity": 1.0, - "content_similarity": 0.556, - "left_pr_number": 54899, - "right_pr_number": 66148, + "breadth_similarity": 0.341, + "concentration_similarity": 0.98, + "content_similarity": 0.439, + "left_pr_number": 64122, + "right_pr_number": 69638, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/feishu/src/streaming-card.ts" + "src/gateway/auth.test.ts", + "src/gateway/auth.ts" ], - "similarity": 0.512, - "size_similarity": 0.07 + "similarity": 0.4, + "size_similarity": 0.063 } ], "pr_count": 3, "pr_numbers": [ - 53534, - 54899, - 66148 + 63379, + 64122, + 69638 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66148 + 69638 ], - "representative_pr_number": 53534, - "representative_title": "fix(feishu): refine streaming card delivery", - "representative_url": "https://github.com/openclaw/openclaw/pull/53534", + "representative_pr_number": 63379, + "representative_title": "Feature/trusted proxy loopback", + "representative_url": "https://github.com/openclaw/openclaw/pull/63379", "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/feishu/src/streaming-card.ts" + "src/gateway/auth.test.ts", + "src/gateway/auth.ts" ], - "summary": "3 open PRs share weighted file overlap around `extensions/feishu/src/streaming-card.ts`; representative PR #53534.", - "title": "Scope: fix(feishu): refine streaming card delivery" + "summary": "3 open PRs share weighted file overlap around `src/gateway/auth.test.ts`, `src/gateway/auth.ts`; representative PR #63379.", + "title": "Scope: Feature/trusted proxy loopback" }, { "authors": [ - "SARAMALI15792" + "1aifanatic" ], - "average_similarity": 0.553, - "cluster_id": "pr-scope-52747-3", + "average_similarity": 0.42, + "cluster_id": "pr-scope-38041-3", "kind": "pr_scope", - "last_activity_at": "2026-04-13T02:22:06Z", + "last_activity_at": "2026-04-18T01:40:28Z", "outside_window_prs": [ { - "additions": 942, - "author": "imwyvern", - "changed_files": 41, - "created_at": "2026-03-23T09:03:54Z", - "deletions": 556, + "additions": 53, + "author": "taw0002", + "changed_files": 2, + "created_at": "2026-03-06T15:33:10Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/52747/files", - "html_url": "https://github.com/openclaw/openclaw/pull/52747", + "files_url": "https://github.com/openclaw/openclaw/pull/38041/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38041", "merged": false, - "number": 52747, + "number": 38041, "state": "open", - "title": "fix(acp): time out stuck session lane tasks", - "updated_at": "2026-04-17T06:33:44Z" + "title": "fix: include snake_case param aliases in tool mutation fingerprint keys", + "updated_at": "2026-04-20T04:39:16Z" }, { - "additions": 404, - "author": "eyev0", - "changed_files": 4, - "created_at": "2026-04-09T15:07:18Z", - "deletions": 7, + "additions": 326, + "author": "Lubrsy706", + "changed_files": 5, + "created_at": "2026-03-11T11:48:03Z", + "deletions": 10, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63793/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63793", + "files_url": "https://github.com/openclaw/openclaw/pull/43151/files", + "html_url": "https://github.com/openclaw/openclaw/pull/43151", "merged": false, - "number": 63793, + "number": 43151, "state": "open", - "title": "fix(acp): fail fast on dead spawns and recover stale disconnects", - "updated_at": "2026-04-13T11:51:53Z" + "title": "fix(agents): clear tool error when same tool type retries successfully", + "updated_at": "2026-04-20T07:03:24Z" } ], "pairwise": [ { - "breadth_similarity": 0.833, - "concentration_similarity": 0.994, - "content_similarity": 0.6, - "left_pr_number": 63793, - "right_pr_number": 65640, + "breadth_similarity": 0.7, + "concentration_similarity": 1.0, + "content_similarity": 0.544, + "left_pr_number": 38041, + "right_pr_number": 43151, "shared_directories": [ - "src/acp/control-plane", - "src/auto-reply/reply", - "src/acp", - "src/auto-reply", + "src/agents", "src" ], "shared_filenames": [ - "src/acp/control-plane/manager.core.ts", - "src/acp/control-plane/manager.test.ts" + "src/agents/tool-mutation.test.ts", + "src/agents/tool-mutation.ts" ], - "similarity": 0.7, - "size_similarity": 0.981 + "similarity": 0.525, + "size_similarity": 0.158 }, { - "breadth_similarity": 0.16, + "breadth_similarity": 0.7, "concentration_similarity": 1.0, - "content_similarity": 0.566, - "left_pr_number": 52747, - "right_pr_number": 65640, + "content_similarity": 0.453, + "left_pr_number": 43151, + "right_pr_number": 68296, "shared_directories": [ - "src/acp/control-plane", - "src/acp", + "src/agents", "src" ], "shared_filenames": [ - "src/acp/control-plane/manager.core.ts", - "src/acp/control-plane/manager.test.ts" + "src/agents/pi-embedded-subscribe.handlers.tools.test.ts", + "src/agents/pi-embedded-subscribe.handlers.tools.ts" ], - "similarity": 0.504, - "size_similarity": 0.28 + "similarity": 0.455, + "size_similarity": 0.119 }, { - "breadth_similarity": 0.215, - "concentration_similarity": 0.993, - "content_similarity": 0.49, - "left_pr_number": 52747, - "right_pr_number": 63793, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.025, + "left_pr_number": 38041, + "right_pr_number": 68296, "shared_directories": [ - "src/acp/control-plane", - "src/acp", + "src/agents", "src" ], - "shared_filenames": [ - "src/acp/control-plane/manager.core.ts", - "src/acp/control-plane/manager.test.ts" - ], - "similarity": 0.455, - "size_similarity": 0.274 + "shared_filenames": [], + "similarity": 0.281, + "size_similarity": 0.755 } ], "pr_count": 3, "pr_numbers": [ - 52747, - 63793, - 65640 + 38041, + 43151, + 68296 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65640 + 68296 ], - "representative_pr_number": 65640, - "representative_title": "fix(acp): persistent session recovery for --bind here sessions", - "representative_url": "https://github.com/openclaw/openclaw/pull/65640", + "representative_pr_number": 43151, + "representative_title": "fix(agents): clear tool error when same tool type retries successfully", + "representative_url": "https://github.com/openclaw/openclaw/pull/43151", "shared_directories": [ - "src/acp/control-plane", - "src/acp", - "src", - "src/auto-reply/reply", - "src/auto-reply" + "src/agents", + "src" ], "shared_filenames": [ - "src/acp/control-plane/manager.core.ts", - "src/acp/control-plane/manager.test.ts" + "src/agents/tool-mutation.test.ts", + "src/agents/tool-mutation.ts", + "src/agents/pi-embedded-subscribe.handlers.tools.test.ts", + "src/agents/pi-embedded-subscribe.handlers.tools.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/acp/control-plane/manager.core.ts`, `src/acp/control-plane/manager.test.ts`; representative PR #65640.", - "title": "Scope: fix(acp): persistent session recovery for --bind here sessions" + "summary": "3 open PRs share weighted file overlap around `src/agents/tool-mutation.test.ts`, `src/agents/tool-mutation.ts`, `src/agents/pi-embedded-subscribe.handlers.tools.test.ts`; representative PR #43151.", + "title": "Scope: fix(agents): clear tool error when same tool type retries successfully" }, { "authors": [ - "WuKongAI-CMU" + "pgondhi987" ], - "average_similarity": 0.55, - "cluster_id": "pr-scope-63871-3", + "average_similarity": 0.414, + "cluster_id": "pr-scope-53441-3", "kind": "pr_scope", - "last_activity_at": "2026-04-15T08:50:52Z", + "last_activity_at": "2026-04-21T14:56:22Z", "outside_window_prs": [ { - "additions": 325, - "author": "sharkqwy", + "additions": 47, + "author": "dennis-lynch", "changed_files": 3, - "created_at": "2026-04-09T18:08:23Z", - "deletions": 2, + "created_at": "2026-03-24T05:59:44Z", + "deletions": 21, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63871/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63871", + "files_url": "https://github.com/openclaw/openclaw/pull/53441/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53441", "merged": false, - "number": 63871, + "number": 53441, "state": "open", - "title": "fix(cron): honor deleteAfterRun for recurring jobs", - "updated_at": "2026-04-19T02:14:23Z" + "title": "fix(synology-chat): handle HEAD probe and return 200 on webhook ACK", + "updated_at": "2026-03-24T20:15:31Z" }, { - "additions": 100, - "author": "jackjin1997", - "changed_files": 2, - "created_at": "2026-04-10T15:14:52Z", - "deletions": 2, + "additions": 1151, + "author": "druide67", + "changed_files": 14, + "created_at": "2026-03-25T00:11:29Z", + "deletions": 80, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64375/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64375", + "files_url": "https://github.com/openclaw/openclaw/pull/54099/files", + "html_url": "https://github.com/openclaw/openclaw/pull/54099", "merged": false, - "number": 64375, + "number": 54099, "state": "open", - "title": "fix(cron): honor deleteAfterRun for every and cron schedule kinds", - "updated_at": "2026-04-11T03:50:52Z" + "title": "feat(synology-chat): add group/channel support", + "updated_at": "2026-04-17T21:00:30Z" } ], "pairwise": [ { - "breadth_similarity": 0.583, - "concentration_similarity": 0.985, - "content_similarity": 0.822, - "left_pr_number": 63871, - "right_pr_number": 64375, + "breadth_similarity": 0.533, + "concentration_similarity": 0.9, + "content_similarity": 0.366, + "left_pr_number": 54099, + "right_pr_number": 69603, "shared_directories": [ - "src/cron/service", - "src/cron", - "src" + "extensions/synology-chat/src", + "docs/channels", + "extensions/synology-chat", + "docs", + "extensions" ], "shared_filenames": [ - "src/cron/service/timer.regression.test.ts", - "src/cron/service/timer.ts" + "docs/channels/synology-chat.md", + "extensions/synology-chat/src/accounts.ts", + "extensions/synology-chat/src/channel.test-mocks.ts", + "extensions/synology-chat/src/channel.test.ts", + "extensions/synology-chat/src/channel.ts", + "extensions/synology-chat/src/client.ts", + "extensions/synology-chat/src/types.ts", + "extensions/synology-chat/src/webhook-handler.test.ts", + "extensions/synology-chat/src/webhook-handler.ts" ], - "similarity": 0.73, - "size_similarity": 0.312 + "similarity": 0.502, + "size_similarity": 0.985 }, { - "breadth_similarity": 0.521, - "concentration_similarity": 0.987, - "content_similarity": 0.461, - "left_pr_number": 63871, - "right_pr_number": 66076, + "breadth_similarity": 0.357, + "concentration_similarity": 0.888, + "content_similarity": 0.486, + "left_pr_number": 53441, + "right_pr_number": 54099, "shared_directories": [ - "src/cron/service", - "src/cron", - "src/infra", - "src" + "extensions/synology-chat/src", + "extensions/synology-chat", + "extensions" ], "shared_filenames": [ - "src/cron/service/timer.regression.test.ts", - "src/cron/service/timer.ts" + "extensions/synology-chat/src/webhook-handler.test.ts", + "extensions/synology-chat/src/webhook-handler.ts" ], - "similarity": 0.49, - "size_similarity": 0.438 + "similarity": 0.429, + "size_similarity": 0.055 }, { - "breadth_similarity": 0.292, - "concentration_similarity": 0.972, - "content_similarity": 0.474, - "left_pr_number": 64375, - "right_pr_number": 66076, + "breadth_similarity": 0.171, + "concentration_similarity": 0.988, + "content_similarity": 0.338, + "left_pr_number": 53441, + "right_pr_number": 69603, "shared_directories": [ - "src/cron/service", - "src/cron", - "src" + "extensions/synology-chat/src", + "extensions/synology-chat", + "extensions" ], "shared_filenames": [ - "src/cron/service/timer.regression.test.ts", - "src/cron/service/timer.ts" + "extensions/synology-chat/src/channel.integration.test.ts", + "extensions/synology-chat/src/webhook-handler.test.ts", + "extensions/synology-chat/src/webhook-handler.ts" ], - "similarity": 0.43, - "size_similarity": 0.137 + "similarity": 0.311, + "size_similarity": 0.056 } ], "pr_count": 3, "pr_numbers": [ - 63871, - 64375, - 66076 + 53441, + 54099, + 69603 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66076 + 69603 ], - "representative_pr_number": 63871, - "representative_title": "fix(cron): honor deleteAfterRun for recurring jobs", - "representative_url": "https://github.com/openclaw/openclaw/pull/63871", + "representative_pr_number": 54099, + "representative_title": "feat(synology-chat): add group/channel support", + "representative_url": "https://github.com/openclaw/openclaw/pull/54099", "shared_directories": [ - "src/cron/service", - "src/cron", - "src", - "src/infra" + "extensions/synology-chat/src", + "extensions/synology-chat", + "extensions", + "docs/channels", + "docs" ], "shared_filenames": [ - "src/cron/service/timer.regression.test.ts", - "src/cron/service/timer.ts" + "extensions/synology-chat/src/webhook-handler.test.ts", + "extensions/synology-chat/src/webhook-handler.ts", + "docs/channels/synology-chat.md", + "extensions/synology-chat/src/accounts.ts", + "extensions/synology-chat/src/channel.test-mocks.ts", + "extensions/synology-chat/src/channel.test.ts", + "extensions/synology-chat/src/channel.ts", + "extensions/synology-chat/src/client.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/cron/service/timer.regression.test.ts`, `src/cron/service/timer.ts`; representative PR #63871.", - "title": "Scope: fix(cron): honor deleteAfterRun for recurring jobs" + "summary": "3 open PRs share weighted file overlap around `extensions/synology-chat/src/webhook-handler.test.ts`, `extensions/synology-chat/src/webhook-handler.ts`, `docs/channels/synology-chat.md`; representative PR #54099.", + "title": "Scope: feat(synology-chat): add group/channel support" }, { "authors": [ - "kiatng" + "xiaoyu-157" ], - "average_similarity": 0.548, - "cluster_id": "pr-scope-63906-3", + "average_similarity": 0.403, + "cluster_id": "pr-scope-37970-3", "kind": "pr_scope", - "last_activity_at": "2026-04-16T06:03:07Z", + "last_activity_at": "2026-04-21T08:39:38Z", "outside_window_prs": [ { - "additions": 56, - "author": "vincenthsin", + "additions": 76, + "author": "q1uf3ng", "changed_files": 2, - "created_at": "2026-04-09T19:43:52Z", - "deletions": 5, + "created_at": "2026-03-06T15:09:26Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63906/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63906", + "files_url": "https://github.com/openclaw/openclaw/pull/37970/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37970", "merged": false, - "number": 63906, + "number": 37970, "state": "open", - "title": "Handle native ELF binaries execution on WSL", - "updated_at": "2026-04-13T16:27:46Z" + "title": "fix(auto-reply): embed Session Startup section in reset prompt to prevent hallucination", + "updated_at": "2026-04-20T04:39:00Z" }, { - "additions": 64, - "author": "iAbhi001", - "changed_files": 2, - "created_at": "2026-04-11T01:27:50Z", - "deletions": 10, + "additions": 9, + "author": "VACInc", + "changed_files": 4, + "created_at": "2026-03-24T13:22:38Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64575/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64575", + "files_url": "https://github.com/openclaw/openclaw/pull/53706/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53706", "merged": false, - "number": 64575, + "number": 53706, "state": "open", - "title": "Fix/pnpm native binary support", - "updated_at": "2026-04-12T17:56:17Z" + "title": "Prompt: reuse injected startup context by default", + "updated_at": "2026-03-24T20:15:29Z" } ], "pairwise": [ { - "breadth_similarity": 0.583, - "concentration_similarity": 0.991, - "content_similarity": 0.851, - "left_pr_number": 63906, - "right_pr_number": 66504, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.409, + "left_pr_number": 37970, + "right_pr_number": 53706, "shared_directories": [ - "test/scripts", - "scripts", - "test" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "scripts/pnpm-runner.mjs", - "test/scripts/pnpm-runner.test.ts" + "src/auto-reply/reply/session-reset-prompt.ts" ], - "similarity": 0.766, - "size_similarity": 0.412 + "similarity": 0.435, + "size_similarity": 0.155 }, { "breadth_similarity": 0.75, - "concentration_similarity": 0.639, - "content_similarity": 0.398, - "left_pr_number": 63906, - "right_pr_number": 64575, + "concentration_similarity": 1.0, + "content_similarity": 0.393, + "left_pr_number": 53706, + "right_pr_number": 67090, "shared_directories": [ - "scripts" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "scripts/pnpm-runner.mjs" + "src/auto-reply/reply/post-compaction-context.test.ts", + "src/auto-reply/reply/post-compaction-context.ts" ], - "similarity": 0.509, - "size_similarity": 0.824 + "similarity": 0.422, + "size_similarity": 0.144 }, { - "breadth_similarity": 0.417, - "concentration_similarity": 0.649, - "content_similarity": 0.313, - "left_pr_number": 64575, - "right_pr_number": 66504, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.09, + "left_pr_number": 37970, + "right_pr_number": 67090, "shared_directories": [ - "scripts" - ], - "shared_filenames": [ - "scripts/pnpm-runner.mjs" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], - "similarity": 0.368, - "size_similarity": 0.5 + "shared_filenames": [], + "similarity": 0.353, + "size_similarity": 0.933 } ], "pr_count": 3, "pr_numbers": [ - 63906, - 64575, - 66504 + 37970, + 53706, + 67090 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66504 + 67090 ], - "representative_pr_number": 63906, - "representative_title": "Handle native ELF binaries execution on WSL", - "representative_url": "https://github.com/openclaw/openclaw/pull/63906", + "representative_pr_number": 53706, + "representative_title": "Prompt: reuse injected startup context by default", + "representative_url": "https://github.com/openclaw/openclaw/pull/53706", "shared_directories": [ - "scripts", - "test/scripts", - "test" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "scripts/pnpm-runner.mjs", - "test/scripts/pnpm-runner.test.ts" + "src/auto-reply/reply/session-reset-prompt.ts", + "src/auto-reply/reply/post-compaction-context.test.ts", + "src/auto-reply/reply/post-compaction-context.ts" ], - "summary": "3 open PRs share weighted file overlap around `scripts/pnpm-runner.mjs`, `test/scripts/pnpm-runner.test.ts`; representative PR #63906.", - "title": "Scope: Handle native ELF binaries execution on WSL" + "summary": "3 open PRs share weighted file overlap around `src/auto-reply/reply/session-reset-prompt.ts`, `src/auto-reply/reply/post-compaction-context.test.ts`, `src/auto-reply/reply/post-compaction-context.ts`; representative PR #53706.", + "title": "Scope: Prompt: reuse injected startup context by default" }, { "authors": [ - "donlaiq" + "qidu" ], - "average_similarity": 0.548, - "cluster_id": "pr-scope-36975-3", + "average_similarity": 0.38, + "cluster_id": "pr-scope-38561-3", "kind": "pr_scope", - "last_activity_at": "2026-04-16T19:49:48Z", + "last_activity_at": "2026-04-21T04:38:16Z", "outside_window_prs": [ { - "additions": 28, - "author": "teonius", - "changed_files": 1, - "created_at": "2026-03-06T01:34:08Z", - "deletions": 0, + "additions": 308, + "author": "MbappeWU", + "changed_files": 4, + "created_at": "2026-03-07T04:24:42Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36975/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36975", + "files_url": "https://github.com/openclaw/openclaw/pull/38561/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38561", "merged": false, - "number": 36975, + "number": 38561, "state": "open", - "title": "added support for openSuSE/SLES", - "updated_at": "2026-04-18T04:24:17Z" + "title": "CLI: sync inherited session model state after default model changes", + "updated_at": "2026-04-21T04:33:28Z" }, { - "additions": 46, - "author": "w-sss", - "changed_files": 1, - "created_at": "2026-03-24T11:06:40Z", - "deletions": 1, + "additions": 312, + "author": "neofdezf-cloud", + "changed_files": 4, + "created_at": "2026-04-11T20:32:50Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53634/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53634", + "files_url": "https://github.com/openclaw/openclaw/pull/65005/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65005", "merged": false, - "number": 53634, + "number": 65005, "state": "open", - "title": "fix: update fast-xml-parser to 5.5.8", - "updated_at": "2026-03-24T20:15:29Z" + "title": "feat(models): add provider/model resolution explain command", + "updated_at": "2026-04-11T21:40:03Z" } ], "pairwise": [ { "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.508, - "left_pr_number": 36975, - "right_pr_number": 53634, + "concentration_similarity": 0.991, + "content_similarity": 0.192, + "left_pr_number": 65005, + "right_pr_number": 67669, "shared_directories": [ - "scripts" + "src/commands/models", + "src/cli", + "src/commands", + "src" ], "shared_filenames": [ - "scripts/install.sh" + "src/cli/models-cli.ts", + "src/commands/models.ts" ], - "similarity": 0.595, - "size_similarity": 0.596 + "similarity": 0.407, + "size_similarity": 0.824 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.615, - "left_pr_number": 36975, - "right_pr_number": 67795, + "breadth_similarity": 0.833, + "concentration_similarity": 0.962, + "content_similarity": 0.14, + "left_pr_number": 38561, + "right_pr_number": 65005, "shared_directories": [ - "scripts" - ], - "shared_filenames": [ - "scripts/install.sh" + "src/commands/models", + "src/commands", + "src" ], - "similarity": 0.591, - "size_similarity": 0.071 + "shared_filenames": [], + "similarity": 0.379, + "size_similarity": 1.0 }, { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.431, - "left_pr_number": 53634, - "right_pr_number": 67795, + "breadth_similarity": 0.833, + "concentration_similarity": 0.97, + "content_similarity": 0.139, + "left_pr_number": 38561, + "right_pr_number": 67669, "shared_directories": [ - "scripts" - ], - "shared_filenames": [ - "scripts/install.sh" + "src/commands/models", + "src/commands", + "src" ], - "similarity": 0.458, - "size_similarity": 0.043 + "shared_filenames": [], + "similarity": 0.353, + "size_similarity": 0.824 } ], "pr_count": 3, "pr_numbers": [ - 36975, - 53634, - 67795 + 38561, + 65005, + 67669 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67795 + 67669 ], - "representative_pr_number": 36975, - "representative_title": "added support for openSuSE/SLES", - "representative_url": "https://github.com/openclaw/openclaw/pull/36975", + "representative_pr_number": 65005, + "representative_title": "feat(models): add provider/model resolution explain command", + "representative_url": "https://github.com/openclaw/openclaw/pull/65005", "shared_directories": [ - "scripts" + "src/commands/models", + "src/commands", + "src", + "src/cli" ], "shared_filenames": [ - "scripts/install.sh" + "src/commands/models.ts", + "src/cli/models-cli.ts" ], - "summary": "3 open PRs share weighted file overlap around `scripts/install.sh`; representative PR #36975.", - "title": "Scope: added support for openSuSE/SLES" + "summary": "3 open PRs share weighted file overlap around `src/commands/models.ts`, `src/cli/models-cli.ts`; representative PR #65005.", + "title": "Scope: feat(models): add provider/model resolution explain command" }, { "authors": [ - "neeravmakwana" + "zexho994" ], - "average_similarity": 0.543, - "cluster_id": "pr-scope-64263-3", + "average_similarity": 0.374, + "cluster_id": "pr-scope-37170-3", "kind": "pr_scope", - "last_activity_at": "2026-04-16T00:51:27Z", + "last_activity_at": "2026-04-17T06:31:44Z", "outside_window_prs": [ { - "additions": 1914, - "author": "100yenadmin", - "changed_files": 38, - "created_at": "2026-04-10T10:51:57Z", - "deletions": 110, + "additions": 138, + "author": "tommygeoco", + "changed_files": 2, + "created_at": "2026-03-06T04:16:47Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64263/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64263", + "files_url": "https://github.com/openclaw/openclaw/pull/37170/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37170", "merged": false, - "number": 64263, + "number": 37170, "state": "open", - "title": "feat(agents): model-aware AGENTS file selection with bootstrapSignatureMode toggle", - "updated_at": "2026-04-13T03:02:05Z" + "title": "CLI: return final cron entry for --expect-final", + "updated_at": "2026-04-19T04:31:42Z" }, { - "additions": 2518, - "author": "100yenadmin", - "changed_files": 43, - "created_at": "2026-04-10T10:52:18Z", - "deletions": 113, + "additions": 146, + "author": "Rohan5commit", + "changed_files": 10, + "created_at": "2026-04-13T15:40:30Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64265/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64265", + "files_url": "https://github.com/openclaw/openclaw/pull/66023/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66023", "merged": false, - "number": 64265, + "number": 66023, "state": "open", - "title": "docs(agents): document model-aware AGENTS, bootstrapSignatureMode, and add lenient-mode tests", - "updated_at": "2026-04-13T03:01:59Z" + "title": "feat(cron): support custom job ids on add", + "updated_at": "2026-04-13T15:46:04Z" } ], "pairwise": [ { - "breadth_similarity": 0.775, - "concentration_similarity": 0.928, - "content_similarity": 0.893, - "left_pr_number": 64263, - "right_pr_number": 64265, + "breadth_similarity": 0.136, + "concentration_similarity": 0.691, + "content_similarity": 0.36, + "left_pr_number": 37170, + "right_pr_number": 67677, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/cli-runner", - "src/agents/pi-embedded-runner", - "src/agents/pi-hooks", - "src/auto-reply/reply", - "src/gateway/server-methods", - "src/agents", - "src/auto-reply", - "src/config", - "src/gateway" + "src/cli/cron-cli", + "src/cli", + "src" ], "shared_filenames": [ - "src/agents/agent-scope.ts", - "src/agents/bootstrap-files.test.ts", - "src/agents/bootstrap-files.ts", - "src/agents/bootstrap-hooks.ts", - "src/agents/cli-runner.spawn.test.ts", - "src/agents/cli-runner.test-support.ts", - "src/agents/cli-runner/prepare.ts", - "src/agents/pi-embedded-runner/compact.ts", - "src/agents/pi-embedded-runner/compact.types.ts", - "src/agents/pi-embedded-runner/extensions.ts" + "src/cli/cron-cli.test.ts", + "src/cli/cron-cli/register.cron-simple.ts" ], - "similarity": 0.864, - "size_similarity": 0.769 + "similarity": 0.44, + "size_similarity": 0.933 }, { - "breadth_similarity": 0.305, - "concentration_similarity": 0.939, - "content_similarity": 0.44, - "left_pr_number": 64265, - "right_pr_number": 67447, + "breadth_similarity": 0.513, + "concentration_similarity": 0.628, + "content_similarity": 0.183, + "left_pr_number": 66023, + "right_pr_number": 67677, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "docs/.generated", - "docs/gateway", - "src/agents", - "src/config", - "docs", + "src/gateway/protocol/schema", + "src/cli/cron-cli", + "src/cron/service", + "src/gateway/protocol", + "src/cli", + "src/cron", + "src/gateway", "src" ], "shared_filenames": [ - "CHANGELOG.md", - "docs/.generated/config-baseline.sha256", - "docs/gateway/configuration-reference.md", - "src/agents/bootstrap-files.test.ts", - "src/agents/bootstrap-files.ts", - "src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-injection.test.ts", - "src/config/schema.base.generated.ts", - "src/config/schema.help.ts", - "src/config/types.agent-defaults.ts" + "src/cli/cron-cli.test.ts", + "src/gateway/protocol/cron-validators.test.ts", + "src/gateway/protocol/schema/cron.ts" ], - "similarity": 0.388, - "size_similarity": 0.012 + "similarity": 0.358, + "size_similarity": 0.98 }, { - "breadth_similarity": 0.418, - "concentration_similarity": 0.868, - "content_similarity": 0.415, - "left_pr_number": 64263, - "right_pr_number": 67447, + "breadth_similarity": 0.267, + "concentration_similarity": 0.937, + "content_similarity": 0.151, + "left_pr_number": 37170, + "right_pr_number": 66023, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", - "src/config", + "src/cli/cron-cli", + "src/cli", "src" ], "shared_filenames": [ - "src/agents/bootstrap-files.test.ts", - "src/agents/bootstrap-files.ts", - "src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-injection.test.ts", - "src/config/schema.base.generated.ts", - "src/config/schema.help.ts", - "src/config/types.agent-defaults.ts" + "src/cli/cron-cli.test.ts" ], - "similarity": 0.378, - "size_similarity": 0.016 + "similarity": 0.322, + "size_similarity": 0.952 } ], "pr_count": 3, "pr_numbers": [ - 64263, - 64265, - 67447 + 37170, + 66023, + 67677 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67447 + 67677 ], - "representative_pr_number": 64265, - "representative_title": "docs(agents): document model-aware AGENTS, bootstrapSignatureMode, and add lenient-mode tests", - "representative_url": "https://github.com/openclaw/openclaw/pull/64265", + "representative_pr_number": 67677, + "representative_title": "fix(cron): add single-job get path for id-based inspection", + "representative_url": "https://github.com/openclaw/openclaw/pull/67677", "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/config", - "src/agents", + "src/cli/cron-cli", + "src/cli", "src", - "src/agents/pi-hooks", - "src/agents/cli-runner", - "src/gateway/server-methods" + "src/gateway/protocol/schema", + "src/cron/service", + "src/gateway/protocol", + "src/cron", + "src/gateway" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-injection.test.ts", - "src/agents/bootstrap-files.test.ts", - "src/agents/bootstrap-files.ts", - "src/config/types.agent-defaults.ts", - "src/config/schema.help.ts", - "src/config/schema.base.generated.ts", - "src/agents/bootstrap-hooks.ts", - "src/agents/pi-hooks/compaction-safeguard-runtime.ts" + "src/cli/cron-cli.test.ts", + "src/cli/cron-cli/register.cron-simple.ts", + "src/gateway/protocol/cron-validators.test.ts", + "src/gateway/protocol/schema/cron.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/run/attempt.spawn-workspace.context-injection.test.ts`, `src/agents/bootstrap-files.test.ts`, `src/agents/bootstrap-files.ts`; representative PR #64265.", - "title": "Scope: docs(agents): document model-aware AGENTS, bootstrapSignatureMode, and add lenient-mode tests" + "summary": "3 open PRs share weighted file overlap around `src/cli/cron-cli.test.ts`, `src/cli/cron-cli/register.cron-simple.ts`, `src/gateway/protocol/cron-validators.test.ts`; representative PR #67677.", + "title": "Scope: fix(cron): add single-job get path for id-based inspection" }, { "authors": [ - "DevInvestor" + "kagura-agent" ], - "average_similarity": 0.539, - "cluster_id": "pr-scope-37458-3", + "average_similarity": 0.372, + "cluster_id": "pr-scope-65979-3", "kind": "pr_scope", - "last_activity_at": "2026-04-16T00:45:02Z", + "last_activity_at": "2026-04-20T00:22:46Z", "outside_window_prs": [ { - "additions": 117, - "author": "ENCHIGO", - "changed_files": 2, - "created_at": "2026-03-06T08:24:07Z", - "deletions": 18, + "additions": 114, + "author": "GaosCode", + "changed_files": 7, + "created_at": "2026-04-13T14:23:41Z", + "deletions": 34, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37458/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37458", + "files_url": "https://github.com/openclaw/openclaw/pull/65979/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65979", "merged": false, - "number": 37458, + "number": 65979, "state": "open", - "title": "fix(onboard): raise custom provider default context window and add prompts", - "updated_at": "2026-04-19T04:33:27Z" + "title": "fix(cron): normalize missing persisted job state", + "updated_at": "2026-04-20T13:20:24Z" }, { - "additions": 224, - "author": "illusionaireal", - "changed_files": 2, - "created_at": "2026-03-06T09:42:58Z", - "deletions": 39, + "additions": 152, + "author": "lml2468", + "changed_files": 5, + "created_at": "2026-04-13T14:38:06Z", + "deletions": 45, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37573/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37573", + "files_url": "https://github.com/openclaw/openclaw/pull/65989/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65989", "merged": false, - "number": 37573, + "number": 65989, "state": "open", - "title": "feat(onboard): auto-discover models for custom API providers", - "updated_at": "2026-04-19T04:34:10Z" + "title": "fix: guard against null job.state in cron list and startup paths", + "updated_at": "2026-04-14T00:49:26Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.867, - "left_pr_number": 37458, - "right_pr_number": 37573, + "breadth_similarity": 0.857, + "concentration_similarity": 0.847, + "content_similarity": 0.288, + "left_pr_number": 65979, + "right_pr_number": 65989, "shared_directories": [ - "src/commands", + "src/cli/cron-cli", + "src/cron/service", + "src/cli", + "src/cron", "src" ], "shared_filenames": [ - "src/commands/onboard-custom.test.ts", - "src/commands/onboard-custom.ts" + "src/cli/cron-cli/shared.test.ts", + "src/cli/cron-cli/shared.ts", + "src/cron/service/store.ts" ], - "similarity": 0.834, - "size_similarity": 0.513 + "similarity": 0.442, + "size_similarity": 0.751 }, { - "breadth_similarity": 0.216, - "concentration_similarity": 0.606, - "content_similarity": 0.365, - "left_pr_number": 37573, - "right_pr_number": 67448, + "breadth_similarity": 0.619, + "concentration_similarity": 0.652, + "content_similarity": 0.177, + "left_pr_number": 65979, + "right_pr_number": 68783, "shared_directories": [ - "src/commands", + "src/cron/service", + "src/cron", "src" ], "shared_filenames": [ - "src/commands/onboard-custom.test.ts", - "src/commands/onboard-custom.ts" + "src/cron/service.issue-regressions.test.ts", + "src/cron/service/timer.ts" ], - "similarity": 0.401, - "size_similarity": 0.627 + "similarity": 0.352, + "size_similarity": 0.892 }, { - "breadth_similarity": 0.216, - "concentration_similarity": 0.606, - "content_similarity": 0.297, - "left_pr_number": 37458, - "right_pr_number": 67448, + "breadth_similarity": 0.733, + "concentration_similarity": 0.805, + "content_similarity": 0.114, + "left_pr_number": 65989, + "right_pr_number": 68783, "shared_directories": [ - "src/commands", + "src/cron/service", + "src/cron", "src" ], "shared_filenames": [ - "src/commands/onboard-custom.test.ts", - "src/commands/onboard-custom.ts" + "src/cron/service/ops.ts" ], - "similarity": 0.382, - "size_similarity": 0.818 + "similarity": 0.32, + "size_similarity": 0.843 } ], "pr_count": 3, "pr_numbers": [ - 37458, - 37573, - 67448 + 65979, + 65989, + 68783 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67448 + 68783 ], - "representative_pr_number": 37573, - "representative_title": "feat(onboard): auto-discover models for custom API providers", - "representative_url": "https://github.com/openclaw/openclaw/pull/37573", + "representative_pr_number": 65979, + "representative_title": "fix(cron): normalize missing persisted job state", + "representative_url": "https://github.com/openclaw/openclaw/pull/65979", "shared_directories": [ - "src/commands", - "src" + "src/cron/service", + "src/cron", + "src", + "src/cli/cron-cli", + "src/cli" ], "shared_filenames": [ - "src/commands/onboard-custom.test.ts", - "src/commands/onboard-custom.ts" + "src/cli/cron-cli/shared.test.ts", + "src/cron/service.issue-regressions.test.ts", + "src/cli/cron-cli/shared.ts", + "src/cron/service/store.ts", + "src/cron/service/ops.ts", + "src/cron/service/timer.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/commands/onboard-custom.test.ts`, `src/commands/onboard-custom.ts`; representative PR #37573.", - "title": "Scope: feat(onboard): auto-discover models for custom API providers" + "summary": "3 open PRs share weighted file overlap around `src/cli/cron-cli/shared.test.ts`, `src/cron/service.issue-regressions.test.ts`, `src/cli/cron-cli/shared.ts`; representative PR #65979.", + "title": "Scope: fix(cron): normalize missing persisted job state" }, { "authors": [ - "frankhli843" + "stainlu" ], - "average_similarity": 0.501, - "cluster_id": "pr-scope-36420-3", + "average_similarity": 0.364, + "cluster_id": "pr-scope-36726-3", "kind": "pr_scope", - "last_activity_at": "2026-04-18T16:20:41Z", + "last_activity_at": "2026-04-21T16:07:45Z", "outside_window_prs": [ { - "additions": 4, - "author": "NibbinNone", - "changed_files": 1, - "created_at": "2026-03-05T16:20:07Z", - "deletions": 1, + "additions": 46, + "author": "edincampara", + "changed_files": 2, + "created_at": "2026-03-05T21:18:01Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36420/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36420", + "files_url": "https://github.com/openclaw/openclaw/pull/36726/files", + "html_url": "https://github.com/openclaw/openclaw/pull/36726", "merged": false, - "number": 36420, + "number": 36726, "state": "open", - "title": "fix: normalizeToolParams file_path alias skipped when path is empty string [AI-assisted]", - "updated_at": "2026-04-17T04:34:00Z" + "title": "fix(agents): prune history images even without prior assistant reply", + "updated_at": "2026-04-18T04:23:22Z" }, { - "additions": 80, - "author": "thebtf", + "additions": 44, + "author": "Bartok9", "changed_files": 2, - "created_at": "2026-04-10T15:10:34Z", - "deletions": 5, + "created_at": "2026-04-12T08:42:21Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64369/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64369", + "files_url": "https://github.com/openclaw/openclaw/pull/65263/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65263", "merged": false, - "number": 64369, + "number": 65263, "state": "open", - "title": "feat(tools): support Claude Code flat edit params via prepareArguments hook", - "updated_at": "2026-04-10T15:17:08Z" + "title": "fix(compaction): clamp reserveTokens to at most 90% of context window in precheck", + "updated_at": "2026-04-12T08:44:39Z" } ], "pairwise": [ { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.814, - "left_pr_number": 36420, - "right_pr_number": 64369, + "content_similarity": 0.109, + "left_pr_number": 65263, + "right_pr_number": 69278, "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", "src/agents", "src" ], - "shared_filenames": [ - "src/agents/pi-tools.params.ts" - ], - "similarity": 0.704, - "size_similarity": 0.059 + "shared_filenames": [], + "similarity": 0.373, + "size_similarity": 0.978 }, { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.244, - "left_pr_number": 64369, - "right_pr_number": 68637, + "content_similarity": 0.106, + "left_pr_number": 36726, + "right_pr_number": 65263, "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", "src/agents", "src" ], - "shared_filenames": [ - "src/agents/pi-tools.params.ts" - ], - "similarity": 0.464, - "size_similarity": 0.953 + "shared_filenames": [], + "similarity": 0.359, + "size_similarity": 0.9 }, { - "breadth_similarity": 0.75, + "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.287, - "left_pr_number": 36420, - "right_pr_number": 68637, + "content_similarity": 0.101, + "left_pr_number": 36726, + "right_pr_number": 69278, "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", "src/agents", "src" ], - "shared_filenames": [ - "src/agents/pi-tools.params.ts" - ], - "similarity": 0.335, - "size_similarity": 0.062 + "shared_filenames": [], + "similarity": 0.359, + "size_similarity": 0.92 } ], "pr_count": 3, "pr_numbers": [ - 36420, - 64369, - 68637 + 36726, + 65263, + 69278 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68637 + 69278 ], - "representative_pr_number": 64369, - "representative_title": "feat(tools): support Claude Code flat edit params via prepareArguments hook", - "representative_url": "https://github.com/openclaw/openclaw/pull/64369", + "representative_pr_number": 65263, + "representative_title": "fix(compaction): clamp reserveTokens to at most 90% of context window in precheck", + "representative_url": "https://github.com/openclaw/openclaw/pull/65263", "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", "src/agents", "src" ], - "shared_filenames": [ - "src/agents/pi-tools.params.ts" - ], - "summary": "3 open PRs share weighted file overlap around `src/agents/pi-tools.params.ts`; representative PR #64369.", - "title": "Scope: feat(tools): support Claude Code flat edit params via prepareArguments hook" + "shared_filenames": [], + "summary": "3 open PRs cluster in `src/agents/pi-embedded-runner/run`, `src/agents/pi-embedded-runner`, `src/agents` with similar change breadth; representative PR #65263.", + "title": "Scope: fix(compaction): clamp reserveTokens to at most 90% of context window in precheck" }, { "authors": [ - "Angfr95" + "jckm14" ], - "average_similarity": 0.494, - "cluster_id": "pr-scope-36305-3", + "average_similarity": 0.359, + "cluster_id": "pr-scope-37700-3", "kind": "pr_scope", - "last_activity_at": "2026-04-16T19:24:17Z", + "last_activity_at": "2026-04-21T17:28:48Z", "outside_window_prs": [ { - "additions": 23, - "author": "LOVECHEN", - "changed_files": 1, - "created_at": "2026-03-05T15:02:00Z", - "deletions": 14, + "additions": 14, + "author": "scc0819-cell", + "changed_files": 2, + "created_at": "2026-03-06T11:21:25Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36305/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36305", + "files_url": "https://github.com/openclaw/openclaw/pull/37700/files", + "html_url": "https://github.com/openclaw/openclaw/pull/37700", "merged": false, - "number": 36305, + "number": 37700, "state": "open", - "title": "gateway: auto-approve loopback device pairing for role/metadata upgrades", - "updated_at": "2026-04-17T04:33:27Z" + "title": "control-ui(agents): disable model edits until config is loaded", + "updated_at": "2026-04-20T04:36:59Z" }, { - "additions": 19, - "author": "jeanibarz", - "changed_files": 2, - "created_at": "2026-04-10T22:57:21Z", - "deletions": 6, + "additions": 22, + "author": "WMSmile", + "changed_files": 1, + "created_at": "2026-03-24T13:16:39Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64527/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64527", + "files_url": "https://github.com/openclaw/openclaw/pull/53704/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53704", "merged": false, - "number": 64527, + "number": 53704, "state": "open", - "title": "fix(gateway): surface pairing reason in close frame and error message", - "updated_at": "2026-04-10T22:59:53Z" + "title": "fix: remove unrecognized key defaultId in agents config", + "updated_at": "2026-03-24T20:15:29Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 0.887, - "content_similarity": 0.615, - "left_pr_number": 64527, - "right_pr_number": 67124, + "breadth_similarity": 0.5, + "concentration_similarity": 0.714, + "content_similarity": 0.298, + "left_pr_number": 37700, + "right_pr_number": 53704, "shared_directories": [ - "src/gateway/server/ws-connection", - "src/gateway/server", - "src/gateway", - "src" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/gateway/server.silent-scope-upgrade-reconnect.poc.test.ts", - "src/gateway/server/ws-connection/message-handler.ts" + "ui/src/ui/app-render.ts" ], - "similarity": 0.713, - "size_similarity": 0.92 + "similarity": 0.385, + "size_similarity": 0.609 }, { "breadth_similarity": 0.5, - "concentration_similarity": 0.913, - "content_similarity": 0.306, - "left_pr_number": 36305, - "right_pr_number": 67124, + "concentration_similarity": 0.75, + "content_similarity": 0.167, + "left_pr_number": 53704, + "right_pr_number": 68925, "shared_directories": [ - "src/gateway/server/ws-connection", - "src/gateway/server", - "src/gateway", - "src" - ], - "shared_filenames": [ - "src/gateway/server/ws-connection/message-handler.ts" + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.403, - "size_similarity": 0.622 + "shared_filenames": [], + "similarity": 0.348, + "size_similarity": 0.958 }, { - "breadth_similarity": 0.5, - "concentration_similarity": 0.8, - "content_similarity": 0.251, - "left_pr_number": 36305, - "right_pr_number": 64527, + "breadth_similarity": 1.0, + "concentration_similarity": 0.964, + "content_similarity": 0.155, + "left_pr_number": 37700, + "right_pr_number": 68925, "shared_directories": [ - "src/gateway/server/ws-connection", - "src/gateway/server", - "src/gateway", - "src" - ], - "shared_filenames": [ - "src/gateway/server/ws-connection/message-handler.ts" + "ui/src/ui/views", + "ui/src/ui", + "ui/src", + "ui" ], - "similarity": 0.367, - "size_similarity": 0.676 + "shared_filenames": [], + "similarity": 0.344, + "size_similarity": 0.583 } ], "pr_count": 3, "pr_numbers": [ - 36305, - 64527, - 67124 + 37700, + 53704, + 68925 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67124 + 68925 ], - "representative_pr_number": 67124, - "representative_title": "fix(gateway): skip scope-upgrade pairing for unpaired local backend clients", - "representative_url": "https://github.com/openclaw/openclaw/pull/67124", + "representative_pr_number": 53704, + "representative_title": "fix: remove unrecognized key defaultId in agents config", + "representative_url": "https://github.com/openclaw/openclaw/pull/53704", "shared_directories": [ - "src/gateway/server/ws-connection", - "src/gateway/server", - "src/gateway", - "src" + "ui/src/ui", + "ui/src", + "ui", + "ui/src/ui/views" ], "shared_filenames": [ - "src/gateway/server/ws-connection/message-handler.ts", - "src/gateway/server.silent-scope-upgrade-reconnect.poc.test.ts" + "ui/src/ui/app-render.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/gateway/server/ws-connection/message-handler.ts`, `src/gateway/server.silent-scope-upgrade-reconnect.poc.test.ts`; representative PR #67124.", - "title": "Scope: fix(gateway): skip scope-upgrade pairing for unpaired local backend clients" + "summary": "3 open PRs share weighted file overlap around `ui/src/ui/app-render.ts`; representative PR #53704.", + "title": "Scope: fix: remove unrecognized key defaultId in agents config" }, { "authors": [ - "sebykrueger" + "D3rPaPaH0d3n" ], - "average_similarity": 0.488, - "cluster_id": "pr-scope-63073-3", + "average_similarity": 0.354, + "cluster_id": "pr-scope-53972-3", "kind": "pr_scope", - "last_activity_at": "2026-04-17T04:27:31Z", + "last_activity_at": "2026-04-16T20:19:31Z", "outside_window_prs": [ { - "additions": 39, - "author": "jepson-liu", - "changed_files": 3, - "created_at": "2026-04-08T09:27:28Z", - "deletions": 3, + "additions": 63, + "author": "fr00st", + "changed_files": 1, + "created_at": "2026-03-24T21:26:12Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63073/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63073", + "files_url": "https://github.com/openclaw/openclaw/pull/53972/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53972", "merged": false, - "number": 63073, + "number": 53972, "state": "open", - "title": "fix(infra): use minimax.io for usage remains #63056", - "updated_at": "2026-04-11T01:33:40Z" + "title": "ci(android): add x86_64 GitHub Actions build for debug APKs", + "updated_at": "2026-03-24T21:44:05Z" }, { - "additions": 34, - "author": "Yanhu007", - "changed_files": 2, - "created_at": "2026-04-12T00:10:33Z", - "deletions": 3, + "additions": 111, + "author": "Anurag1", + "changed_files": 1, + "created_at": "2026-04-04T07:45:44Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65059/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65059", + "files_url": "https://github.com/openclaw/openclaw/pull/60744/files", + "html_url": "https://github.com/openclaw/openclaw/pull/60744", "merged": false, - "number": 65059, + "number": 60744, "state": "open", - "title": "fix(minimax): use configured baseUrl for usage polling endpoint", - "updated_at": "2026-04-12T00:14:23Z" + "title": "Create codeql.yml", + "updated_at": "2026-04-20T03:18:39Z" } ], "pairwise": [ { - "breadth_similarity": 0.833, - "concentration_similarity": 0.947, - "content_similarity": 0.674, - "left_pr_number": 63073, - "right_pr_number": 65059, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.144, + "left_pr_number": 60744, + "right_pr_number": 67804, "shared_directories": [ - "extensions/minimax", - "src/infra", - "extensions", - "src" - ], - "shared_filenames": [ - "extensions/minimax/provider-registration.ts", - "src/infra/provider-usage.fetch.minimax.ts" + ".github/workflows", + ".github" ], - "similarity": 0.735, - "size_similarity": 0.881 + "shared_filenames": [], + "similarity": 0.379, + "size_similarity": 0.856 }, { - "breadth_similarity": 0.75, - "concentration_similarity": 0.757, - "content_similarity": 0.278, - "left_pr_number": 65059, - "right_pr_number": 67967, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.139, + "left_pr_number": 53972, + "right_pr_number": 67804, "shared_directories": [ - "extensions/minimax", - "extensions" - ], - "shared_filenames": [ - "extensions/minimax/provider-registration.ts" + ".github/workflows", + ".github" ], - "similarity": 0.393, - "size_similarity": 0.568 + "shared_filenames": [], + "similarity": 0.346, + "size_similarity": 0.663 }, { - "breadth_similarity": 0.583, - "concentration_similarity": 0.81, - "content_similarity": 0.231, - "left_pr_number": 63073, - "right_pr_number": 67967, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.144, + "left_pr_number": 53972, + "right_pr_number": 60744, "shared_directories": [ - "extensions/minimax", - "extensions" - ], - "shared_filenames": [ - "extensions/minimax/provider-registration.ts" + ".github/workflows", + ".github" ], - "similarity": 0.335, - "size_similarity": 0.5 + "shared_filenames": [], + "similarity": 0.336, + "size_similarity": 0.568 } ], "pr_count": 3, "pr_numbers": [ - 63073, - 65059, - 67967 + 53972, + 60744, + 67804 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67967 + 67804 ], - "representative_pr_number": 65059, - "representative_title": "fix(minimax): use configured baseUrl for usage polling endpoint", - "representative_url": "https://github.com/openclaw/openclaw/pull/65059", + "representative_pr_number": 67804, + "representative_title": "Claude/analyze android app ohrk i", + "representative_url": "https://github.com/openclaw/openclaw/pull/67804", "shared_directories": [ - "extensions/minimax", - "extensions", - "src/infra", - "src" - ], - "shared_filenames": [ - "extensions/minimax/provider-registration.ts", - "src/infra/provider-usage.fetch.minimax.ts" + ".github/workflows", + ".github" ], - "summary": "3 open PRs share weighted file overlap around `extensions/minimax/provider-registration.ts`, `src/infra/provider-usage.fetch.minimax.ts`; representative PR #65059.", - "title": "Scope: fix(minimax): use configured baseUrl for usage polling endpoint" + "shared_filenames": [], + "summary": "3 open PRs cluster in `.github/workflows`, `.github` with similar change breadth; representative PR #67804.", + "title": "Scope: Claude/analyze android app ohrk i" }, { "authors": [ - "yqli2420" + "lemonheaded" ], - "average_similarity": 0.487, - "cluster_id": "pr-scope-37507-3", + "average_similarity": 0.997, + "cluster_id": "pr-scope-18915-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T01:03:44Z", + "last_activity_at": "2026-04-17T20:07:41Z", "outside_window_prs": [ { - "additions": 19, - "author": "pqing112358", - "changed_files": 1, - "created_at": "2026-03-06T09:04:17Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37507/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37507", - "merged": false, - "number": 37507, - "state": "open", - "title": "feat(plugin-sdk): export session binding types and functions", - "updated_at": "2026-04-19T04:33:45Z" - }, - { - "additions": 25, - "author": "MISAKIGA", + "additions": 64, + "author": "storyarcade", "changed_files": 4, - "created_at": "2026-03-24T06:48:01Z", - "deletions": 0, + "created_at": "2026-02-17T05:41:11Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53478/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53478", + "files_url": "https://github.com/openclaw/openclaw/pull/18915/files", + "html_url": "https://github.com/openclaw/openclaw/pull/18915", "merged": false, - "number": 53478, + "number": 18915, "state": "open", - "title": "fix(plugin-sdk): re-export normalizeAccountId and resolvePreferredOpenClawTmpDir", - "updated_at": "2026-03-24T20:15:30Z" + "title": "fix(telegram): pass video width/height to sendVideo to prevent portra\u2026", + "updated_at": "2026-04-17T15:59:56Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.843, - "left_pr_number": 37507, - "right_pr_number": 66214, - "shared_directories": [ - "src/plugin-sdk", - "src" - ], - "shared_filenames": [ - "src/plugin-sdk/index.ts" - ], - "similarity": 0.748, - "size_similarity": 0.053 - }, - { - "breadth_similarity": 0.375, - "concentration_similarity": 0.8, - "content_similarity": 0.357, - "left_pr_number": 37507, - "right_pr_number": 53478, - "shared_directories": [ - "src/plugin-sdk", - "src" - ], - "shared_filenames": [ - "src/plugin-sdk/index.ts" - ], - "similarity": 0.441, - "size_similarity": 0.76 - }, - { - "breadth_similarity": 0.375, - "concentration_similarity": 0.8, - "content_similarity": 0.268, - "left_pr_number": 53478, - "right_pr_number": 66214, + "content_similarity": 0.996, + "left_pr_number": 18915, + "right_pr_number": 68266, "shared_directories": [ - "src/plugin-sdk", + "extensions/telegram/src/bot", + "extensions/telegram/src", + "extensions/telegram", + "src/media", + "extensions", "src" ], "shared_filenames": [ - "src/plugin-sdk/index.ts" + "extensions/telegram/src/bot/delivery.replies.ts", + "extensions/telegram/src/send.ts", + "src/media/constants.ts", + "src/media/video-dimensions.ts" ], - "similarity": 0.271, - "size_similarity": 0.04 + "similarity": 0.997, + "size_similarity": 1.0 } ], - "pr_count": 3, + "pr_count": 2, "pr_numbers": [ - 37507, - 53478, - 66214 + 18915, + 68266 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66214 + 68266 ], - "representative_pr_number": 37507, - "representative_title": "feat(plugin-sdk): export session binding types and functions", - "representative_url": "https://github.com/openclaw/openclaw/pull/37507", + "representative_pr_number": 18915, + "representative_title": "fix(telegram): pass video width/height to sendVideo to prevent portra\u2026", + "representative_url": "https://github.com/openclaw/openclaw/pull/18915", "shared_directories": [ - "src/plugin-sdk", + "extensions/telegram/src/bot", + "extensions/telegram/src", + "src/media", + "extensions/telegram", + "extensions", "src" ], "shared_filenames": [ - "src/plugin-sdk/index.ts" + "src/media/constants.ts", + "src/media/video-dimensions.ts", + "extensions/telegram/src/bot/delivery.replies.ts", + "extensions/telegram/src/send.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/plugin-sdk/index.ts`; representative PR #37507.", - "title": "Scope: feat(plugin-sdk): export session binding types and functions" + "summary": "2 open PRs share weighted file overlap around `src/media/constants.ts`, `src/media/video-dimensions.ts`, `extensions/telegram/src/bot/delivery.replies.ts`; representative PR #18915.", + "title": "Scope: fix(telegram): pass video width/height to sendVideo to prevent portra\u2026" }, { "authors": [ - "GaosCode" + "dependabot[bot]" ], - "average_similarity": 0.486, - "cluster_id": "pr-scope-53496-3", + "average_similarity": 0.994, + "cluster_id": "pr-scope-65826-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T06:59:25Z", + "last_activity_at": "2026-04-21T08:45:45Z", "outside_window_prs": [ { - "additions": 322, - "author": "chunyuforka", - "changed_files": 6, - "created_at": "2026-03-24T07:12:01Z", - "deletions": 17, + "additions": 28, + "author": "dependabot[bot]", + "changed_files": 7, + "created_at": "2026-04-13T08:58:40Z", + "deletions": 28, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53496/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53496", + "files_url": "https://github.com/openclaw/openclaw/pull/65826/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65826", "merged": false, - "number": 53496, - "state": "open", - "title": "feat(feishu): support toolsBySender for group policies", - "updated_at": "2026-03-24T20:15:30Z" - }, - { - "additions": 144, - "author": "byungsker", - "changed_files": 11, - "created_at": "2026-03-24T23:04:03Z", - "deletions": 21, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54058/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54058", - "merged": true, - "number": 54058, + "number": 65826, "state": "open", - "title": "fix(feishu): default requireMention to false when groupPolicy is open", - "updated_at": "2026-03-24T23:10:57Z" + "title": "build(deps): bump the android-deps group across 1 directory with 16 updates", + "updated_at": "2026-04-14T08:43:31Z" } ], "pairwise": [ { - "breadth_similarity": 0.485, - "concentration_similarity": 0.989, - "content_similarity": 0.546, - "left_pr_number": 54058, - "right_pr_number": 68444, - "shared_directories": [ - "extensions/feishu/src", - "docs/channels", - "extensions/feishu", - "docs", - "extensions" - ], - "shared_filenames": [ - "docs/channels/feishu.md", - "extensions/feishu/src/bot.test.ts", - "extensions/feishu/src/bot.ts", - "extensions/feishu/src/config-schema.test.ts", - "extensions/feishu/src/config-schema.ts", - "extensions/feishu/src/policy.ts" - ], - "similarity": 0.559, - "size_similarity": 0.525 - }, - { - "breadth_similarity": 0.929, - "concentration_similarity": 0.891, - "content_similarity": 0.385, - "left_pr_number": 53496, - "right_pr_number": 68444, - "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "docs", - "extensions" - ], - "shared_filenames": [ - "extensions/feishu/src/config-schema.test.ts", - "extensions/feishu/src/config-schema.ts", - "extensions/feishu/src/policy.test.ts", - "extensions/feishu/src/policy.ts" - ], - "similarity": 0.546, - "size_similarity": 0.926 - }, - { - "breadth_similarity": 0.439, - "concentration_similarity": 0.879, - "content_similarity": 0.275, - "left_pr_number": 53496, - "right_pr_number": 54058, + "breadth_similarity": 1.0, + "concentration_similarity": 0.982, + "content_similarity": 1.0, + "left_pr_number": 65826, + "right_pr_number": 67592, "shared_directories": [ - "extensions/feishu/src", - "docs/.generated", - "extensions/feishu", - "docs", - "extensions" + "apps/android/gradle/wrapper", + "apps/android/app", + "apps/android/benchmark", + "apps/android/gradle", + "apps/android", + "apps" ], "shared_filenames": [ - "docs/.generated/config-baseline.json", - "docs/.generated/config-baseline.jsonl", - "extensions/feishu/src/config-schema.test.ts", - "extensions/feishu/src/config-schema.ts", - "extensions/feishu/src/policy.ts" + "apps/android/app/build.gradle.kts", + "apps/android/benchmark/build.gradle.kts", + "apps/android/build.gradle.kts", + "apps/android/gradle/wrapper/gradle-wrapper.jar", + "apps/android/gradle/wrapper/gradle-wrapper.properties", + "apps/android/gradlew", + "apps/android/gradlew.bat" ], - "similarity": 0.354, - "size_similarity": 0.487 + "similarity": 0.994, + "size_similarity": 0.966 } ], - "pr_count": 3, + "pr_count": 2, "pr_numbers": [ - 53496, - 54058, - 68444 + 65826, + 67592 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68444 - ], - "representative_pr_number": 68444, - "representative_title": "fix(feishu): stop auto-forwarding mentions when disabled", - "representative_url": "https://github.com/openclaw/openclaw/pull/68444", - "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "docs", - "extensions", - "docs/channels", - "docs/.generated" + 67592 + ], + "representative_pr_number": 65826, + "representative_title": "build(deps): bump the android-deps group across 1 directory with 16 updates", + "representative_url": "https://github.com/openclaw/openclaw/pull/65826", + "shared_directories": [ + "apps/android/gradle/wrapper", + "apps/android/benchmark", + "apps/android/gradle", + "apps/android/app", + "apps/android", + "apps" ], "shared_filenames": [ - "extensions/feishu/src/policy.ts", - "extensions/feishu/src/config-schema.test.ts", - "extensions/feishu/src/config-schema.ts", - "extensions/feishu/src/policy.test.ts", - "docs/channels/feishu.md", - "extensions/feishu/src/bot.test.ts", - "extensions/feishu/src/bot.ts", - "docs/.generated/config-baseline.jsonl" + "apps/android/benchmark/build.gradle.kts", + "apps/android/build.gradle.kts", + "apps/android/gradle/wrapper/gradle-wrapper.jar", + "apps/android/gradle/wrapper/gradle-wrapper.properties", + "apps/android/gradlew", + "apps/android/gradlew.bat", + "apps/android/app/build.gradle.kts" ], - "summary": "3 open PRs share weighted file overlap around `extensions/feishu/src/policy.ts`, `extensions/feishu/src/config-schema.test.ts`, `extensions/feishu/src/config-schema.ts`; representative PR #68444.", - "title": "Scope: fix(feishu): stop auto-forwarding mentions when disabled" + "summary": "2 open PRs share weighted file overlap around `apps/android/benchmark/build.gradle.kts`, `apps/android/build.gradle.kts`, `apps/android/gradle/wrapper/gradle-wrapper.jar`; representative PR #65826.", + "title": "Scope: build(deps): bump the android-deps group across 1 directory with 16 updates" }, { "authors": [ - "miyago9267" + "earon-han" ], - "average_similarity": 0.443, - "cluster_id": "pr-scope-37144-3", + "average_similarity": 0.978, + "cluster_id": "pr-scope-65356-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T09:22:33Z", + "last_activity_at": "2026-04-21T07:05:21Z", "outside_window_prs": [ { - "additions": 12, - "author": "yyobject", - "changed_files": 2, - "created_at": "2026-03-06T04:01:25Z", - "deletions": 1, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37144/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37144", - "merged": false, - "number": 37144, - "state": "open", - "title": "Cron: enrich webhook finished-event payload with jobName and callerSessionKey", - "updated_at": "2026-04-18T04:25:26Z" - }, - { - "additions": 43, - "author": "yyobject", - "changed_files": 7, - "created_at": "2026-03-06T06:27:12Z", + "additions": 5, + "author": "QiaoSuGH", + "changed_files": 1, + "created_at": "2026-04-12T13:23:59Z", "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37289/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37289", + "files_url": "https://github.com/openclaw/openclaw/pull/65356/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65356", "merged": false, - "number": 37289, + "number": 65356, "state": "open", - "title": "Cron: add webhookSsrfPolicy config to allow private-network webhook targets", - "updated_at": "2026-04-19T04:32:24Z" + "title": "fix(sandbox): use resolveGlobalSingleton for backend registry", + "updated_at": "2026-04-12T13:25:14Z" } ], "pairwise": [ { - "breadth_similarity": 0.764, - "concentration_similarity": 0.887, - "content_similarity": 0.485, - "left_pr_number": 37289, - "right_pr_number": 68055, - "shared_directories": [ - "src/config", - "src/gateway", - "src" - ], - "shared_filenames": [ - "CHANGELOG.md", - "src/config/schema.help.ts", - "src/config/schema.labels.ts", - "src/config/types.cron.ts", - "src/config/zod-schema.ts", - "src/gateway/server-cron.ts" - ], - "similarity": 0.529, - "size_similarity": 0.458 - }, - { - "breadth_similarity": 0.476, - "concentration_similarity": 0.804, - "content_similarity": 0.462, - "left_pr_number": 37144, - "right_pr_number": 37289, - "shared_directories": [ - "src/gateway", - "src" - ], - "shared_filenames": [ - "CHANGELOG.md", - "src/gateway/server-cron.ts" - ], - "similarity": 0.455, - "size_similarity": 0.295 - }, - { - "breadth_similarity": 0.361, - "concentration_similarity": 0.692, - "content_similarity": 0.362, - "left_pr_number": 37144, - "right_pr_number": 68055, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 1.0, + "left_pr_number": 65356, + "right_pr_number": 67623, "shared_directories": [ - "src/gateway", + "src/agents/sandbox", + "src/agents", "src" ], "shared_filenames": [ - "CHANGELOG.md", - "src/gateway/server-cron.ts" + "src/agents/sandbox/backend.ts" ], - "similarity": 0.345, - "size_similarity": 0.135 + "similarity": 0.978, + "size_similarity": 0.857 } ], - "pr_count": 3, + "pr_count": 2, "pr_numbers": [ - 37144, - 37289, - 68055 + 65356, + 67623 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68055 + 67623 ], - "representative_pr_number": 37289, - "representative_title": "Cron: add webhookSsrfPolicy config to allow private-network webhook targets", - "representative_url": "https://github.com/openclaw/openclaw/pull/37289", + "representative_pr_number": 65356, + "representative_title": "fix(sandbox): use resolveGlobalSingleton for backend registry", + "representative_url": "https://github.com/openclaw/openclaw/pull/65356", "shared_directories": [ - "src/gateway", - "src", - "src/config" + "src/agents/sandbox", + "src/agents", + "src" ], "shared_filenames": [ - "src/gateway/server-cron.ts", - "CHANGELOG.md", - "src/config/types.cron.ts", - "src/config/schema.labels.ts", - "src/config/zod-schema.ts", - "src/config/schema.help.ts" + "src/agents/sandbox/backend.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/gateway/server-cron.ts`, `CHANGELOG.md`, `src/config/types.cron.ts`; representative PR #37289.", - "title": "Scope: Cron: add webhookSsrfPolicy config to allow private-network webhook targets" + "summary": "2 open PRs share weighted file overlap around `src/agents/sandbox/backend.ts`; representative PR #65356.", + "title": "Scope: fix(sandbox): use resolveGlobalSingleton for backend registry" }, { "authors": [ - "soloclz" + "nightq" ], - "average_similarity": 0.43, - "cluster_id": "pr-scope-53315-3", + "average_similarity": 0.975, + "cluster_id": "pr-scope-64390-2", "kind": "pr_scope", - "last_activity_at": "2026-04-19T03:58:46Z", + "last_activity_at": "2026-04-17T13:39:29Z", "outside_window_prs": [ { - "additions": 9, - "author": "futhgar", + "additions": 7, + "author": "latenighthackathon", "changed_files": 1, - "created_at": "2026-03-24T02:34:36Z", - "deletions": 2, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53315/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53315", - "merged": false, - "number": 53315, - "state": "open", - "title": "fix(config): downgrade missing channel plugin from fatal error to warning", - "updated_at": "2026-03-24T20:15:31Z" - }, - { - "additions": 138, - "author": "ernestodeoliveira", - "changed_files": 2, - "created_at": "2026-03-24T16:01:26Z", - "deletions": 1, + "created_at": "2026-04-10T15:42:36Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53779/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53779", + "files_url": "https://github.com/openclaw/openclaw/pull/64390/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64390", "merged": false, - "number": 53779, + "number": 64390, "state": "open", - "title": "fix(models): log warning and continue when one provider fails validation", - "updated_at": "2026-03-24T20:21:21Z" + "title": "fix(model): guard normalizeResolvedModel against undefined model param", + "updated_at": "2026-04-20T15:18:17Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.33, - "left_pr_number": 53779, - "right_pr_number": 68813, - "shared_directories": [ - "src/config", - "src" - ], - "shared_filenames": [ - "src/config/validation.ts" - ], - "similarity": 0.489, - "size_similarity": 0.72 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.435, - "left_pr_number": 53315, - "right_pr_number": 68813, - "shared_directories": [ - "src/config", - "src" - ], - "shared_filenames": [ - "src/config/validation.ts" - ], - "similarity": 0.438, - "size_similarity": 0.057 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.324, - "left_pr_number": 53315, - "right_pr_number": 53779, + "content_similarity": 0.995, + "left_pr_number": 64390, + "right_pr_number": 68127, "shared_directories": [ - "src/config", + "src/agents/pi-embedded-runner", + "src/agents", "src" ], "shared_filenames": [ - "src/config/validation.ts" + "src/agents/pi-embedded-runner/model.ts" ], - "similarity": 0.364, - "size_similarity": 0.079 + "similarity": 0.975, + "size_similarity": 0.857 } ], - "pr_count": 3, + "pr_count": 2, "pr_numbers": [ - 53315, - 53779, - 68813 + 64390, + 68127 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68813 + 68127 ], - "representative_pr_number": 68813, - "representative_title": "fix(config): validate plugin-owned model providers", - "representative_url": "https://github.com/openclaw/openclaw/pull/68813", + "representative_pr_number": 64390, + "representative_title": "fix(model): guard normalizeResolvedModel against undefined model param", + "representative_url": "https://github.com/openclaw/openclaw/pull/64390", "shared_directories": [ - "src/config", + "src/agents/pi-embedded-runner", + "src/agents", "src" ], "shared_filenames": [ - "src/config/validation.ts" + "src/agents/pi-embedded-runner/model.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/config/validation.ts`; representative PR #68813.", - "title": "Scope: fix(config): validate plugin-owned model providers" + "summary": "2 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/model.ts`; representative PR #64390.", + "title": "Scope: fix(model): guard normalizeResolvedModel against undefined model param" }, { "authors": [ - "nnish16" + "RoLuoGan" ], - "average_similarity": 0.418, - "cluster_id": "pr-scope-36637-3", + "average_similarity": 0.956, + "cluster_id": "pr-scope-66426-2", "kind": "pr_scope", - "last_activity_at": "2026-04-16T18:30:04Z", + "last_activity_at": "2026-04-21T08:18:08Z", "outside_window_prs": [ { - "additions": 137, - "author": "stevestencil", - "changed_files": 3, - "created_at": "2026-03-05T19:46:31Z", - "deletions": 4, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36637/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36637", - "merged": false, - "number": 36637, - "state": "open", - "title": "fix: Control UI (ACP) model fallback for rate limits", - "updated_at": "2026-04-18T04:23:00Z" - }, - { - "additions": 278, - "author": "dknoodle", - "changed_files": 10, - "created_at": "2026-03-11T15:38:28Z", - "deletions": 2, + "additions": 54, + "author": "RoLuoGan", + "changed_files": 7, + "created_at": "2026-04-14T08:24:50Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/43299/files", - "html_url": "https://github.com/openclaw/openclaw/pull/43299", + "files_url": "https://github.com/openclaw/openclaw/pull/66426/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66426", "merged": false, - "number": 43299, + "number": 66426, "state": "open", - "title": "feat: add --model flag to agent CLI for per-turn model override", - "updated_at": "2026-04-18T17:46:40Z" + "title": "fix: surface billing/surface_error chat event to web UI", + "updated_at": "2026-04-14T09:21:44Z" } ], "pairwise": [ { - "breadth_similarity": 0.212, - "concentration_similarity": 0.893, - "content_similarity": 0.448, - "left_pr_number": 36637, - "right_pr_number": 43299, - "shared_directories": [ - "src/commands", - "src" - ], - "shared_filenames": [ - "src/commands/agent.test.ts", - "src/commands/agent.ts" - ], - "similarity": 0.455, - "size_similarity": 0.504 - }, - { - "breadth_similarity": 0.583, - "concentration_similarity": 0.674, - "content_similarity": 0.324, - "left_pr_number": 36637, - "right_pr_number": 67225, - "shared_directories": [ - "src/commands", - "src" - ], - "shared_filenames": [ - "src/commands/agent.test.ts" - ], - "similarity": 0.41, - "size_similarity": 0.61 - }, - { - "breadth_similarity": 0.225, - "concentration_similarity": 0.782, - "content_similarity": 0.4, - "left_pr_number": 43299, - "right_pr_number": 67225, + "breadth_similarity": 1.0, + "concentration_similarity": 0.95, + "content_similarity": 0.982, + "left_pr_number": 66426, + "right_pr_number": 67969, "shared_directories": [ - "src/commands", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/commands/agent.test.ts" + "src/gateway/server-chat.ts", + "src/gateway/server-methods/chat.directive-tags.test.ts", + "src/gateway/server-methods/chat.ts", + "src/gateway/server-methods/shared-types.ts", + "src/gateway/server-request-context.test.ts", + "src/gateway/server-request-context.ts", + "src/gateway/server.impl.ts" ], - "similarity": 0.388, - "size_similarity": 0.307 + "similarity": 0.956, + "size_similarity": 0.803 } ], - "pr_count": 3, + "pr_count": 2, "pr_numbers": [ - 36637, - 43299, - 67225 + 66426, + 67969 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67225 + 67969 ], - "representative_pr_number": 36637, - "representative_title": "fix: Control UI (ACP) model fallback for rate limits", - "representative_url": "https://github.com/openclaw/openclaw/pull/36637", + "representative_pr_number": 66426, + "representative_title": "fix: surface billing/surface_error chat event to web UI", + "representative_url": "https://github.com/openclaw/openclaw/pull/66426", "shared_directories": [ - "src/commands", + "src/gateway/server-methods", + "src/gateway", "src" ], "shared_filenames": [ - "src/commands/agent.test.ts", - "src/commands/agent.ts" + "src/gateway/server-request-context.test.ts", + "src/gateway/server-methods/shared-types.ts", + "src/gateway/server-request-context.ts", + "src/gateway/server-methods/chat.directive-tags.test.ts", + "src/gateway/server-chat.ts", + "src/gateway/server.impl.ts", + "src/gateway/server-methods/chat.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/commands/agent.test.ts`, `src/commands/agent.ts`; representative PR #36637.", - "title": "Scope: fix: Control UI (ACP) model fallback for rate limits" + "summary": "2 open PRs share weighted file overlap around `src/gateway/server-request-context.test.ts`, `src/gateway/server-methods/shared-types.ts`, `src/gateway/server-request-context.ts`; representative PR #66426.", + "title": "Scope: fix: surface billing/surface_error chat event to web UI" }, { "authors": [ - "ghoc0099" + "wkeything" ], - "average_similarity": 0.417, - "cluster_id": "pr-scope-53326-3", + "average_similarity": 0.907, + "cluster_id": "pr-scope-66429-2", "kind": "pr_scope", - "last_activity_at": "2026-04-12T18:53:41Z", + "last_activity_at": "2026-04-14T22:38:21Z", "outside_window_prs": [ { - "additions": 14, - "author": "1qh", - "changed_files": 1, - "created_at": "2026-03-24T02:52:54Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53326/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53326", - "merged": false, - "number": 53326, - "state": "open", - "title": "fix(workspace): store workspace-state.json in workspace root, not .openclaw/ subdir", - "updated_at": "2026-03-24T20:15:31Z" - }, - { - "additions": 67, - "author": "PitayaK", - "changed_files": 3, - "created_at": "2026-03-24T06:14:33Z", - "deletions": 2, + "additions": 9, + "author": "SimoneB79", + "changed_files": 2, + "created_at": "2026-04-14T08:35:51Z", + "deletions": 7, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53454/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53454", + "files_url": "https://github.com/openclaw/openclaw/pull/66429/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66429", "merged": false, - "number": 53454, + "number": 66429, "state": "open", - "title": "feat: add TASTE.md as a workspace bootstrap file", - "updated_at": "2026-03-24T20:15:31Z" + "title": "fix(memory): allow capability fallback lookup for missing runtime embedding provider", + "updated_at": "2026-04-14T10:32:34Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.439, - "left_pr_number": 53326, - "right_pr_number": 65509, - "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/workspace.ts" - ], - "similarity": 0.528, - "size_similarity": 0.471 - }, - { - "breadth_similarity": 0.417, - "concentration_similarity": 0.623, - "content_similarity": 0.408, - "left_pr_number": 53326, - "right_pr_number": 53454, - "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/workspace.ts" - ], - "similarity": 0.395, - "size_similarity": 0.246 - }, - { - "breadth_similarity": 0.417, - "concentration_similarity": 0.623, - "content_similarity": 0.338, - "left_pr_number": 53454, - "right_pr_number": 65509, + "content_similarity": 0.955, + "left_pr_number": 66429, + "right_pr_number": 66844, "shared_directories": [ - "src/agents", + "src/plugins", "src" ], "shared_filenames": [ - "src/agents/workspace.ts" + "src/plugins/memory-embedding-provider-runtime.test.ts", + "src/plugins/memory-embedding-provider-runtime.ts" ], - "similarity": 0.327, - "size_similarity": 0.116 + "similarity": 0.907, + "size_similarity": 0.593 } ], - "pr_count": 3, + "pr_count": 2, "pr_numbers": [ - 53326, - 53454, - 65509 + 66429, + 66844 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65509 + 66844 ], - "representative_pr_number": 53326, - "representative_title": "fix(workspace): store workspace-state.json in workspace root, not .openclaw/ subdir", - "representative_url": "https://github.com/openclaw/openclaw/pull/53326", + "representative_pr_number": 66429, + "representative_title": "fix(memory): allow capability fallback lookup for missing runtime embedding provider", + "representative_url": "https://github.com/openclaw/openclaw/pull/66429", "shared_directories": [ - "src/agents", + "src/plugins", "src" ], "shared_filenames": [ - "src/agents/workspace.ts" + "src/plugins/memory-embedding-provider-runtime.test.ts", + "src/plugins/memory-embedding-provider-runtime.ts" ], - "summary": "3 open PRs share weighted file overlap around `src/agents/workspace.ts`; representative PR #53326.", - "title": "Scope: fix(workspace): store workspace-state.json in workspace root, not .openclaw/ subdir" + "summary": "2 open PRs share weighted file overlap around `src/plugins/memory-embedding-provider-runtime.test.ts`, `src/plugins/memory-embedding-provider-runtime.ts`; representative PR #66429.", + "title": "Scope: fix(memory): allow capability fallback lookup for missing runtime embedding provider" }, { "authors": [ - "altaywtf" + "jeffchen1981-fu" ], - "average_similarity": 0.415, - "cluster_id": "pr-scope-53620-3", + "average_similarity": 0.859, + "cluster_id": "pr-scope-61769-2", "kind": "pr_scope", - "last_activity_at": "2026-04-17T18:04:28Z", + "last_activity_at": "2026-04-16T13:21:06Z", "outside_window_prs": [ { - "additions": 42, - "author": "lupuletic", - "changed_files": 4, - "created_at": "2026-03-24T10:41:27Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53620/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53620", - "merged": false, - "number": 53620, - "state": "open", - "title": "fix(docker): ensure /home/node exists before USER switch", - "updated_at": "2026-03-24T20:15:29Z" - }, - { - "additions": 125, - "author": "tomcatzh", - "changed_files": 4, - "created_at": "2026-03-28T06:58:07Z", - "deletions": 0, + "additions": 2, + "author": "dependabot[bot]", + "changed_files": 2, + "created_at": "2026-04-06T08:44:35Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/56242/files", - "html_url": "https://github.com/openclaw/openclaw/pull/56242", + "files_url": "https://github.com/openclaw/openclaw/pull/61769/files", + "html_url": "https://github.com/openclaw/openclaw/pull/61769", "merged": false, - "number": 56242, + "number": 61769, "state": "open", - "title": "fix: add CJK error patterns to failover classification", - "updated_at": "2026-04-18T10:37:52Z" + "title": "build(deps): bump actions/setup-node from 4 to 6", + "updated_at": "2026-04-21T02:27:40Z" } ], "pairwise": [ { - "breadth_similarity": 0.9, - "concentration_similarity": 0.934, - "content_similarity": 0.541, - "left_pr_number": 53620, - "right_pr_number": 67024, - "shared_directories": [ - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/failover-error.test.ts", - "src/agents/failover-error.ts" - ], - "similarity": 0.536, - "size_similarity": 0.14 - }, - { - "breadth_similarity": 0.733, - "concentration_similarity": 0.776, - "content_similarity": 0.334, - "left_pr_number": 56242, - "right_pr_number": 67024, - "shared_directories": [ - "src/agents/pi-embedded-helpers", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/agents/failover-error.test.ts", - "src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts", - "src/agents/pi-embedded-helpers/errors.ts" - ], - "similarity": 0.404, - "size_similarity": 0.388 - }, - { - "breadth_similarity": 0.833, - "concentration_similarity": 0.842, - "content_similarity": 0.179, - "left_pr_number": 53620, - "right_pr_number": 56242, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.927, + "left_pr_number": 61769, + "right_pr_number": 67096, "shared_directories": [ - "src/agents", - "src" + ".github/workflows", + ".github" ], "shared_filenames": [ - "src/agents/failover-error.test.ts" + ".github/workflows/docs-sync-publish.yml", + ".github/workflows/parity-gate.yml" ], - "similarity": 0.305, - "size_similarity": 0.36 + "similarity": 0.859, + "size_similarity": 0.4 } ], - "pr_count": 3, + "pr_count": 2, "pr_numbers": [ - 53620, - 56242, - 67024 + 61769, + 67096 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67024 + 67096 ], - "representative_pr_number": 67024, - "representative_title": "fix: don't classify 400/422 with no body as format error", - "representative_url": "https://github.com/openclaw/openclaw/pull/67024", + "representative_pr_number": 61769, + "representative_title": "build(deps): bump actions/setup-node from 4 to 6", + "representative_url": "https://github.com/openclaw/openclaw/pull/61769", "shared_directories": [ - "src/agents", - "src", - "src/agents/pi-embedded-helpers" + ".github/workflows", + ".github" ], "shared_filenames": [ - "src/agents/failover-error.test.ts", - "src/agents/failover-error.ts", - "src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts", - "src/agents/pi-embedded-helpers/errors.ts" + ".github/workflows/docs-sync-publish.yml", + ".github/workflows/parity-gate.yml" ], - "summary": "3 open PRs share weighted file overlap around `src/agents/failover-error.test.ts`, `src/agents/failover-error.ts`, `src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts`; representative PR #67024.", - "title": "Scope: fix: don't classify 400/422 with no body as format error" + "summary": "2 open PRs share weighted file overlap around `.github/workflows/docs-sync-publish.yml`, `.github/workflows/parity-gate.yml`; representative PR #61769.", + "title": "Scope: build(deps): bump actions/setup-node from 4 to 6" }, { "authors": [ - "Hou-Yufan" + "shahyashish" ], - "average_similarity": 0.403, - "cluster_id": "pr-scope-53446-3", + "average_similarity": 0.851, + "cluster_id": "pr-scope-66133-2", "kind": "pr_scope", - "last_activity_at": "2026-04-13T02:18:32Z", + "last_activity_at": "2026-04-20T18:06:54Z", "outside_window_prs": [ { - "additions": 75, - "author": "lml2468", - "changed_files": 2, - "created_at": "2026-03-24T06:03:17Z", - "deletions": 5, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53446/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53446", - "merged": false, - "number": 53446, - "state": "open", - "title": "fix(discord): pass proxy-aware fetch to RequestClient (#30221)", - "updated_at": "2026-03-24T20:15:31Z" - }, - { - "additions": 63, - "author": "chensylz", - "changed_files": 2, - "created_at": "2026-03-24T13:34:38Z", - "deletions": 5, + "additions": 10, + "author": "yqli2420", + "changed_files": 1, + "created_at": "2026-04-13T19:18:12Z", + "deletions": 267, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53711/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53711", + "files_url": "https://github.com/openclaw/openclaw/pull/66133/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66133", "merged": false, - "number": 53711, + "number": 66133, "state": "open", - "title": "fix(discord): route outbound rest through proxy fetch", - "updated_at": "2026-03-24T20:15:29Z" + "title": "fix(tasks): prevent inconsistent_timestamps warnings for cron-spawned tasks", + "updated_at": "2026-04-13T19:21:58Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.354, - "left_pr_number": 53446, - "right_pr_number": 53711, - "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" - ], - "shared_filenames": [ - "extensions/discord/src/client.ts" - ], - "similarity": 0.526, - "size_similarity": 0.85 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 0.984, - "content_similarity": 0.127, - "left_pr_number": 53711, - "right_pr_number": 65421, - "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.352, - "size_similarity": 0.926 - }, - { - "breadth_similarity": 0.75, - "concentration_similarity": 0.984, - "content_similarity": 0.126, - "left_pr_number": 53446, - "right_pr_number": 65421, + "content_similarity": 0.868, + "left_pr_number": 66133, + "right_pr_number": 69387, "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/tasks", + "src" ], - "shared_filenames": [], - "similarity": 0.331, - "size_similarity": 0.787 + "shared_filenames": [ + "src/tasks/task-executor.ts" + ], + "similarity": 0.851, + "size_similarity": 0.625 } ], - "pr_count": 3, + "pr_count": 2, "pr_numbers": [ - 53446, - 53711, - 65421 + 66133, + 69387 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65421 + 69387 ], - "representative_pr_number": 53711, - "representative_title": "fix(discord): route outbound rest through proxy fetch", - "representative_url": "https://github.com/openclaw/openclaw/pull/53711", + "representative_pr_number": 66133, + "representative_title": "fix(tasks): prevent inconsistent_timestamps warnings for cron-spawned tasks", + "representative_url": "https://github.com/openclaw/openclaw/pull/66133", "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/tasks", + "src" ], "shared_filenames": [ - "extensions/discord/src/client.ts" + "src/tasks/task-executor.ts" ], - "summary": "3 open PRs share weighted file overlap around `extensions/discord/src/client.ts`; representative PR #53711.", - "title": "Scope: fix(discord): route outbound rest through proxy fetch" + "summary": "2 open PRs share weighted file overlap around `src/tasks/task-executor.ts`; representative PR #66133.", + "title": "Scope: fix(tasks): prevent inconsistent_timestamps warnings for cron-spawned tasks" }, { "authors": [ - "monasprox" + "jdc4429" ], - "average_similarity": 0.39, - "cluster_id": "pr-scope-53377-3", + "average_similarity": 0.837, + "cluster_id": "pr-scope-65554-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T10:03:07Z", + "last_activity_at": "2026-04-21T17:22:30Z", "outside_window_prs": [ { - "additions": 45, - "author": "RichardCao", - "changed_files": 2, - "created_at": "2026-03-24T04:21:36Z", - "deletions": 2, + "additions": 4562, + "author": "jdc4429", + "changed_files": 29, + "created_at": "2026-04-12T20:57:07Z", + "deletions": 964, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53377/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53377", + "files_url": "https://github.com/openclaw/openclaw/pull/65554/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65554", "merged": false, - "number": 53377, - "state": "open", - "title": "fix(feishu): make message-tool card schema optional", - "updated_at": "2026-03-24T20:15:31Z" - }, - { - "additions": 84, - "author": "lndyzwdxhs", - "changed_files": 4, - "created_at": "2026-03-24T13:40:13Z", - "deletions": 7, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53715/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53715", - "merged": true, - "number": 53715, + "number": 65554, "state": "open", - "title": "fix: mark card field as optional in message tool schema", - "updated_at": "2026-03-24T20:15:29Z" + "title": "Jdc4429 media support v2 - Updated to work with latest version 2026.4.11", + "updated_at": "2026-04-19T18:23:43Z" } ], "pairwise": [ { - "breadth_similarity": 0.333, - "concentration_similarity": 0.981, - "content_similarity": 0.424, - "left_pr_number": 53377, - "right_pr_number": 68443, - "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" - ], - "shared_filenames": [ - "extensions/feishu/src/channel.test.ts", - "extensions/feishu/src/channel.ts" - ], - "similarity": 0.447, - "size_similarity": 0.452 - }, - { - "breadth_similarity": 0.375, - "concentration_similarity": 0.429, - "content_similarity": 0.368, - "left_pr_number": 53377, - "right_pr_number": 53715, - "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" - ], - "shared_filenames": [ - "extensions/feishu/src/channel.test.ts" - ], - "similarity": 0.394, - "size_similarity": 0.516 - }, - { - "breadth_similarity": 0.708, - "concentration_similarity": 0.448, - "content_similarity": 0.15, - "left_pr_number": 53715, - "right_pr_number": 68443, + "breadth_similarity": 0.85, + "concentration_similarity": 0.899, + "content_similarity": 0.841, + "left_pr_number": 65554, + "right_pr_number": 68808, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions", - "src" + "apps/shared/OpenClawKit/Sources/OpenClawKit/Resources", + "apps/shared/OpenClawKit/Sources/OpenClawKit", + "apps/shared/OpenClawKit/Sources", + "ui/src/styles/chat", + "ui/src/ui/chat", + "apps/shared/OpenClawKit", + "src/agents/command", + "src/agents/pi-embedded-runner", + "src/agents/skills", + "src/agents/tools" ], "shared_filenames": [ - "extensions/feishu/src/channel.test.ts" + ".gitignore", + "PR-add-media-support-webchat-telegram.md", + "apps/shared/OpenClawKit/Sources/OpenClawKit/Resources/tool-display.json", + "media-server.py", + "pnpm-workspace.yaml", + "src/agents/command/types.ts", + "src/agents/pi-embedded-runner/compact.ts", + "src/agents/pi-tool-definition-adapter.ts", + "src/agents/pi-tools.read.ts", + "src/agents/pi-tools.ts" ], - "similarity": 0.329, - "size_similarity": 0.875 + "similarity": 0.837, + "size_similarity": 0.786 } ], - "pr_count": 3, + "pr_count": 2, "pr_numbers": [ - 53377, - 53715, - 68443 + 65554, + 68808 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68443 + 68808 ], - "representative_pr_number": 53377, - "representative_title": "fix(feishu): make message-tool card schema optional", - "representative_url": "https://github.com/openclaw/openclaw/pull/53377", + "representative_pr_number": 65554, + "representative_title": "Jdc4429 media support v2 - Updated to work with latest version 2026.4.11", + "representative_url": "https://github.com/openclaw/openclaw/pull/65554", "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions", - "src" + "apps/shared/OpenClawKit/Sources/OpenClawKit/Resources", + "apps/shared/OpenClawKit/Sources/OpenClawKit", + "ui/src/styles/chat", + "apps/shared/OpenClawKit/Sources", + "ui/src/ui/chat", + "src/canvas-host/a2ui", + "src/agents/command", + "src/agents/skills" ], "shared_filenames": [ - "extensions/feishu/src/channel.test.ts", - "extensions/feishu/src/channel.ts" + "PR-add-media-support-webchat-telegram.md", + "media-server.py", + "src/agents/pi-tools.types.ts", + "src/agents/tool-media.ts", + "src/agents/tools/download-video.ts", + "src/agents/tools/image-tool.ts", + "ui/src/ui/chat/message-resize.ts", + "src/agents/tool-images.test.ts" ], - "summary": "3 open PRs share weighted file overlap around `extensions/feishu/src/channel.test.ts`, `extensions/feishu/src/channel.ts`; representative PR #53377.", - "title": "Scope: fix(feishu): make message-tool card schema optional" + "summary": "2 open PRs share weighted file overlap around `PR-add-media-support-webchat-telegram.md`, `media-server.py`, `src/agents/pi-tools.types.ts`; representative PR #65554.", + "title": "Scope: Jdc4429 media support v2 - Updated to work with latest version 2026.4.11" }, { "authors": [ - "johnturek" + "jhsmith409" ], - "average_similarity": 0.368, - "cluster_id": "pr-scope-53458-3", + "average_similarity": 0.786, + "cluster_id": "pr-scope-66572-2", "kind": "pr_scope", - "last_activity_at": "2026-04-14T10:56:07Z", + "last_activity_at": "2026-04-19T15:29:45Z", "outside_window_prs": [ { - "additions": 239, - "author": "openperf", - "changed_files": 4, - "created_at": "2026-03-24T06:17:29Z", - "deletions": 14, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53458/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53458", - "merged": false, - "number": 53458, - "state": "open", - "title": "fix(msteams): prefer personal conversation in findByUserId to prevent DM misrouting", - "updated_at": "2026-03-24T20:15:30Z" - }, - { - "additions": 160, - "author": "ndholakia", - "changed_files": 2, - "created_at": "2026-04-10T21:25:57Z", - "deletions": 1, + "additions": 113, + "author": "Luckywolf82", + "changed_files": 3, + "created_at": "2026-04-14T13:39:02Z", + "deletions": 8, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64503/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64503", + "files_url": "https://github.com/openclaw/openclaw/pull/66572/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66572", "merged": false, - "number": 64503, + "number": 66572, "state": "open", - "title": "fix(msteams): forward messageBack card actions (Action.Submit) to agent (#60952)", - "updated_at": "2026-04-14T00:46:27Z" + "title": "fix: honor cfg-compatible capability provider resolution before partial active registries", + "updated_at": "2026-04-14T13:41:36Z" } ], "pairwise": [ - { - "breadth_similarity": 0.875, - "concentration_similarity": 1.0, - "content_similarity": 0.195, - "left_pr_number": 53458, - "right_pr_number": 66327, - "shared_directories": [ - "extensions/msteams/src", - "extensions/msteams", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.408, - "size_similarity": 0.897 - }, { "breadth_similarity": 0.583, - "concentration_similarity": 0.87, - "content_similarity": 0.212, - "left_pr_number": 64503, - "right_pr_number": 66327, + "concentration_similarity": 0.736, + "content_similarity": 0.824, + "left_pr_number": 66572, + "right_pr_number": 66855, "shared_directories": [ - "extensions/msteams/src", - "extensions/msteams", - "extensions" + "src/plugins", + "src" ], - "shared_filenames": [], - "similarity": 0.356, - "size_similarity": 0.709 - }, - { - "breadth_similarity": 0.5, - "concentration_similarity": 0.87, - "content_similarity": 0.216, - "left_pr_number": 53458, - "right_pr_number": 64503, - "shared_directories": [ - "extensions/msteams/src", - "extensions/msteams", - "extensions" + "shared_filenames": [ + "src/plugins/capability-provider-runtime.test.ts", + "src/plugins/capability-provider-runtime.ts" ], - "shared_filenames": [], - "similarity": 0.34, - "size_similarity": 0.636 + "similarity": 0.786, + "size_similarity": 0.761 } ], - "pr_count": 3, + "pr_count": 2, "pr_numbers": [ - 53458, - 64503, - 66327 + 66572, + 66855 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66327 + 66855 ], - "representative_pr_number": 66327, - "representative_title": "feat(msteams): implement sendPayload for interactive approval cards", - "representative_url": "https://github.com/openclaw/openclaw/pull/66327", + "representative_pr_number": 66572, + "representative_title": "fix: honor cfg-compatible capability provider resolution before partial active registries", + "representative_url": "https://github.com/openclaw/openclaw/pull/66572", "shared_directories": [ - "extensions/msteams/src", - "extensions/msteams", - "extensions" + "src/plugins", + "src" ], - "shared_filenames": [], - "summary": "3 open PRs cluster in `extensions/msteams/src`, `extensions/msteams`, `extensions` with similar change breadth; representative PR #66327.", - "title": "Scope: feat(msteams): implement sendPayload for interactive approval cards" + "shared_filenames": [ + "src/plugins/capability-provider-runtime.test.ts", + "src/plugins/capability-provider-runtime.ts" + ], + "summary": "2 open PRs share weighted file overlap around `src/plugins/capability-provider-runtime.test.ts`, `src/plugins/capability-provider-runtime.ts`; representative PR #66572.", + "title": "Scope: fix: honor cfg-compatible capability provider resolution before partial active registries" }, { "authors": [ - "miyago9267" + "duqaXxX" ], - "average_similarity": 0.354, - "cluster_id": "pr-scope-53776-3", + "average_similarity": 0.763, + "cluster_id": "pr-scope-65170-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T09:35:25Z", + "last_activity_at": "2026-04-16T01:05:07Z", "outside_window_prs": [ { - "additions": 308, - "author": "fuller-stack-dev", - "changed_files": 5, - "created_at": "2026-03-24T15:57:25Z", - "deletions": 3, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53776/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53776", - "merged": false, - "number": 53776, - "state": "open", - "title": "feat(ui): wire /steer slash command to sessions.steer RPC", - "updated_at": "2026-03-24T20:29:52Z" - }, - { - "additions": 360, - "author": "bbddbb1", - "changed_files": 6, - "created_at": "2026-04-09T15:25:57Z", - "deletions": 7, + "additions": 13, + "author": "duqaXxX", + "changed_files": 3, + "created_at": "2026-04-12T04:21:04Z", + "deletions": 13, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63807/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63807", + "files_url": "https://github.com/openclaw/openclaw/pull/65170/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65170", "merged": false, - "number": 63807, + "number": 65170, "state": "open", - "title": "feat(control-ui): add gateway restart confirmation dialog and related\u2026", - "updated_at": "2026-04-19T05:32:44Z" + "title": "fix(inter-session-completion-delivery): ensure completion delivery on ANNOUNCE_SKIP", + "updated_at": "2026-04-12T04:29:25Z" } ], "pairwise": [ { - "breadth_similarity": 0.917, - "concentration_similarity": 0.863, - "content_similarity": 0.151, - "left_pr_number": 53776, - "right_pr_number": 63807, - "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui" - ], - "shared_filenames": [], - "similarity": 0.368, - "size_similarity": 0.847 - }, - { - "breadth_similarity": 0.917, - "concentration_similarity": 0.62, - "content_similarity": 0.148, - "left_pr_number": 53776, - "right_pr_number": 68045, + "breadth_similarity": 0.875, + "concentration_similarity": 1.0, + "content_similarity": 0.701, + "left_pr_number": 65170, + "right_pr_number": 67444, "shared_directories": [ - "ui/src/ui/chat", - "ui/src/ui", - "ui/src", - "ui" + "src/agents", + "src" ], - "shared_filenames": [], - "similarity": 0.366, - "size_similarity": 0.932 - }, - { - "breadth_similarity": 1.0, - "concentration_similarity": 0.757, - "content_similarity": 0.1, - "left_pr_number": 63807, - "right_pr_number": 68045, - "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui" + "shared_filenames": [ + "src/agents/subagent-announce.format.e2e.test.ts", + "src/agents/subagent-announce.test.ts", + "src/agents/subagent-announce.ts" ], - "shared_filenames": [], - "similarity": 0.327, - "size_similarity": 0.79 + "similarity": 0.763, + "size_similarity": 0.897 } ], - "pr_count": 3, + "pr_count": 2, "pr_numbers": [ - 53776, - 63807, - 68045 + 65170, + 67444 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68045 + 67444 ], - "representative_pr_number": 53776, - "representative_title": "feat(ui): wire /steer slash command to sessions.steer RPC", - "representative_url": "https://github.com/openclaw/openclaw/pull/53776", + "representative_pr_number": 65170, + "representative_title": "fix(inter-session-completion-delivery): ensure completion delivery on ANNOUNCE_SKIP", + "representative_url": "https://github.com/openclaw/openclaw/pull/65170", "shared_directories": [ - "ui/src/ui", - "ui/src", - "ui", - "ui/src/ui/chat" + "src/agents", + "src" ], - "shared_filenames": [], - "summary": "3 open PRs cluster in `ui/src/ui`, `ui/src`, `ui` with similar change breadth; representative PR #53776.", - "title": "Scope: feat(ui): wire /steer slash command to sessions.steer RPC" + "shared_filenames": [ + "src/agents/subagent-announce.test.ts", + "src/agents/subagent-announce.format.e2e.test.ts", + "src/agents/subagent-announce.ts" + ], + "summary": "2 open PRs share weighted file overlap around `src/agents/subagent-announce.test.ts`, `src/agents/subagent-announce.format.e2e.test.ts`, `src/agents/subagent-announce.ts`; representative PR #65170.", + "title": "Scope: fix(inter-session-completion-delivery): ensure completion delivery on ANNOUNCE_SKIP" }, { "authors": [ - "coygeek" + "kakahu2015" ], - "average_similarity": 0.348, - "cluster_id": "pr-scope-30323-3", + "average_similarity": 0.744, + "cluster_id": "pr-scope-63800-2", "kind": "pr_scope", - "last_activity_at": "2026-04-13T03:42:08Z", + "last_activity_at": "2026-04-16T03:22:38Z", "outside_window_prs": [ { - "additions": 201, - "author": "zeroaltitude", - "changed_files": 5, - "created_at": "2026-03-01T05:05:22Z", - "deletions": 9, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/30323/files", - "html_url": "https://github.com/openclaw/openclaw/pull/30323", - "merged": false, - "number": 30323, - "state": "open", - "title": "feat(browser): include current page URL in all tab-targeting responses [claude, human developer oversight]", - "updated_at": "2026-04-18T05:49:23Z" - }, - { - "additions": 91, - "author": "ly85206559", - "changed_files": 7, - "created_at": "2026-04-10T05:48:58Z", - "deletions": 11, + "additions": 326, + "author": "kakahu2015", + "changed_files": 9, + "created_at": "2026-04-09T15:09:11Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64123/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64123", + "files_url": "https://github.com/openclaw/openclaw/pull/63800/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63800", "merged": false, - "number": 64123, + "number": 63800, "state": "open", - "title": "Browser: keep explicit ai snapshots out of efficient role fallback (#62550)", - "updated_at": "2026-04-17T10:33:57Z" + "title": "[codex] Gateway: add offline APNs chat reply alerts", + "updated_at": "2026-04-11T05:57:44Z" } ], "pairwise": [ { - "breadth_similarity": 0.857, - "concentration_similarity": 0.713, - "content_similarity": 0.24, - "left_pr_number": 30323, - "right_pr_number": 64123, + "breadth_similarity": 0.278, + "concentration_similarity": 0.966, + "content_similarity": 0.81, + "left_pr_number": 63800, + "right_pr_number": 67493, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser-tool.actions.ts" - ], - "similarity": 0.362, - "size_similarity": 0.486 - }, - { - "breadth_similarity": 0.381, - "concentration_similarity": 0.608, - "content_similarity": 0.218, - "left_pr_number": 64123, - "right_pr_number": 65639, - "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" - ], - "shared_filenames": [], - "similarity": 0.342, - "size_similarity": 0.81 - }, - { - "breadth_similarity": 0.467, - "concentration_similarity": 0.895, - "content_similarity": 0.228, - "left_pr_number": 30323, - "right_pr_number": 65639, - "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/gateway/chat-apns-notify.test.ts", + "src/gateway/chat-apns-notify.ts" ], - "shared_filenames": [], - "similarity": 0.341, - "size_similarity": 0.6 + "similarity": 0.744, + "size_similarity": 0.673 } ], - "pr_count": 3, + "pr_count": 2, "pr_numbers": [ - 30323, - 64123, - 65639 + 63800, + 67493 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65639 + 67493 ], - "representative_pr_number": 64123, - "representative_title": "Browser: keep explicit ai snapshots out of efficient role fallback (#62550)", - "representative_url": "https://github.com/openclaw/openclaw/pull/64123", + "representative_pr_number": 63800, + "representative_title": "[codex] Gateway: add offline APNs chat reply alerts", + "representative_url": "https://github.com/openclaw/openclaw/pull/63800", "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", - "extensions" + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/browser/src/browser-tool.actions.ts" + "src/gateway/chat-apns-notify.test.ts", + "src/gateway/chat-apns-notify.ts" ], - "summary": "3 open PRs share weighted file overlap around `extensions/browser/src/browser-tool.actions.ts`; representative PR #64123.", - "title": "Scope: Browser: keep explicit ai snapshots out of efficient role fallback (#62550)" + "summary": "2 open PRs share weighted file overlap around `src/gateway/chat-apns-notify.test.ts`, `src/gateway/chat-apns-notify.ts`; representative PR #63800.", + "title": "Scope: [codex] Gateway: add offline APNs chat reply alerts" }, { "authors": [ - "lemonheaded" + "leifengfeng" ], - "average_similarity": 0.997, - "cluster_id": "pr-scope-18915-2", + "average_similarity": 0.738, + "cluster_id": "pr-scope-53518-2", "kind": "pr_scope", - "last_activity_at": "2026-04-17T20:07:41Z", + "last_activity_at": "2026-04-21T11:40:49Z", "outside_window_prs": [ { - "additions": 64, - "author": "storyarcade", - "changed_files": 4, - "created_at": "2026-02-17T05:41:11Z", + "additions": 1, + "author": "lupuletic", + "changed_files": 1, + "created_at": "2026-03-24T07:40:20Z", "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/18915/files", - "html_url": "https://github.com/openclaw/openclaw/pull/18915", + "files_url": "https://github.com/openclaw/openclaw/pull/53518/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53518", "merged": false, - "number": 18915, + "number": 53518, "state": "open", - "title": "fix(telegram): pass video width/height to sendVideo to prevent portra\u2026", - "updated_at": "2026-04-17T15:59:56Z" + "title": "fix(agents): clarify config.apply/patch/update auto-restarts in system prompt (#17189)", + "updated_at": "2026-03-24T20:15:30Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.996, - "left_pr_number": 18915, - "right_pr_number": 68266, + "content_similarity": 0.792, + "left_pr_number": 53518, + "right_pr_number": 69692, "shared_directories": [ - "extensions/telegram/src/bot", - "extensions/telegram/src", - "extensions/telegram", - "src/media", - "extensions", + "src/agents", "src" ], "shared_filenames": [ - "extensions/telegram/src/bot/delivery.replies.ts", - "extensions/telegram/src/send.ts", - "src/media/constants.ts", - "src/media/video-dimensions.ts" + "src/agents/system-prompt.ts" ], - "similarity": 0.997, - "size_similarity": 1.0 + "similarity": 0.738, + "size_similarity": 0.222 } ], "pr_count": 2, "pr_numbers": [ - 18915, - 68266 + 53518, + 69692 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68266 + 69692 ], - "representative_pr_number": 18915, - "representative_title": "fix(telegram): pass video width/height to sendVideo to prevent portra\u2026", - "representative_url": "https://github.com/openclaw/openclaw/pull/18915", + "representative_pr_number": 53518, + "representative_title": "fix(agents): clarify config.apply/patch/update auto-restarts in system prompt (#17189)", + "representative_url": "https://github.com/openclaw/openclaw/pull/53518", "shared_directories": [ - "extensions/telegram/src/bot", - "extensions/telegram/src", - "src/media", - "extensions/telegram", - "extensions", + "src/agents", "src" ], "shared_filenames": [ - "src/media/constants.ts", - "src/media/video-dimensions.ts", - "extensions/telegram/src/bot/delivery.replies.ts", - "extensions/telegram/src/send.ts" + "src/agents/system-prompt.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/media/constants.ts`, `src/media/video-dimensions.ts`, `extensions/telegram/src/bot/delivery.replies.ts`; representative PR #18915.", - "title": "Scope: fix(telegram): pass video width/height to sendVideo to prevent portra\u2026" + "summary": "2 open PRs share weighted file overlap around `src/agents/system-prompt.ts`; representative PR #53518.", + "title": "Scope: fix(agents): clarify config.apply/patch/update auto-restarts in system prompt (#17189)" }, { "authors": [ - "nightq" + "sk7n4k3d" ], - "average_similarity": 0.975, - "cluster_id": "pr-scope-64390-2", + "average_similarity": 0.723, + "cluster_id": "pr-scope-66502-2", "kind": "pr_scope", - "last_activity_at": "2026-04-17T13:39:29Z", + "last_activity_at": "2026-04-20T19:21:24Z", "outside_window_prs": [ { - "additions": 7, - "author": "latenighthackathon", - "changed_files": 1, - "created_at": "2026-04-10T15:42:36Z", + "additions": 88, + "author": "CnxLuc", + "changed_files": 2, + "created_at": "2026-04-14T10:49:17Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64390/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64390", + "files_url": "https://github.com/openclaw/openclaw/pull/66502/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66502", "merged": false, - "number": 64390, + "number": 66502, "state": "open", - "title": "fix(model): guard normalizeResolvedModel against undefined model param", - "updated_at": "2026-04-13T18:11:28Z" + "title": "fix: keep gateway service path stable across pnpm upgrades", + "updated_at": "2026-04-14T10:53:04Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.995, - "left_pr_number": 64390, - "right_pr_number": 68127, + "breadth_similarity": 0.583, + "concentration_similarity": 0.991, + "content_similarity": 0.705, + "left_pr_number": 66502, + "right_pr_number": 69425, "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", + "src/daemon", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/model.ts" + "src/daemon/program-args.test.ts", + "src/daemon/program-args.ts" ], - "similarity": 0.975, - "size_similarity": 0.857 + "similarity": 0.723, + "size_similarity": 0.807 } ], "pr_count": 2, "pr_numbers": [ - 64390, - 68127 + 66502, + 69425 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68127 + 69425 ], - "representative_pr_number": 64390, - "representative_title": "fix(model): guard normalizeResolvedModel against undefined model param", - "representative_url": "https://github.com/openclaw/openclaw/pull/64390", + "representative_pr_number": 66502, + "representative_title": "fix: keep gateway service path stable across pnpm upgrades", + "representative_url": "https://github.com/openclaw/openclaw/pull/66502", "shared_directories": [ - "src/agents/pi-embedded-runner", - "src/agents", + "src/daemon", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/model.ts" + "src/daemon/program-args.test.ts", + "src/daemon/program-args.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/model.ts`; representative PR #64390.", - "title": "Scope: fix(model): guard normalizeResolvedModel against undefined model param" + "summary": "2 open PRs share weighted file overlap around `src/daemon/program-args.test.ts`, `src/daemon/program-args.ts`; representative PR #66502.", + "title": "Scope: fix: keep gateway service path stable across pnpm upgrades" }, { "authors": [ - "Xer0x-official" + "Angfr95" ], - "average_similarity": 0.874, - "cluster_id": "pr-scope-63893-2", + "average_similarity": 0.714, + "cluster_id": "pr-scope-64527-2", "kind": "pr_scope", - "last_activity_at": "2026-04-13T07:05:10Z", + "last_activity_at": "2026-04-16T19:24:17Z", "outside_window_prs": [ { - "additions": 216, - "author": "SYU8384", + "additions": 19, + "author": "jeanibarz", "changed_files": 2, - "created_at": "2026-04-09T18:58:16Z", - "deletions": 1, + "created_at": "2026-04-10T22:57:21Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63893/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63893", + "files_url": "https://github.com/openclaw/openclaw/pull/64527/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64527", "merged": false, - "number": 63893, + "number": 64527, "state": "open", - "title": "fix: rebuild legacy flow_runs tables", - "updated_at": "2026-04-12T07:35:39Z" + "title": "fix(gateway): surface pairing reason in close frame and error message", + "updated_at": "2026-04-10T22:59:53Z" } ], "pairwise": [ { "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.919, - "left_pr_number": 63893, - "right_pr_number": 65767, + "concentration_similarity": 0.887, + "content_similarity": 0.617, + "left_pr_number": 64527, + "right_pr_number": 67124, "shared_directories": [ - "src/tasks", + "src/gateway/server/ws-connection", + "src/gateway/server", + "src/gateway", "src" ], "shared_filenames": [ - "src/tasks/task-flow-registry.store.sqlite.ts", - "src/tasks/task-flow-registry.store.test.ts" + "src/gateway/server.silent-scope-upgrade-reconnect.poc.test.ts", + "src/gateway/server/ws-connection/message-handler.ts" ], - "similarity": 0.874, - "size_similarity": 0.534 + "similarity": 0.714, + "size_similarity": 0.92 } ], "pr_count": 2, "pr_numbers": [ - 63893, - 65767 + 64527, + 67124 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65767 + 67124 ], - "representative_pr_number": 63893, - "representative_title": "fix: rebuild legacy flow_runs tables", - "representative_url": "https://github.com/openclaw/openclaw/pull/63893", + "representative_pr_number": 64527, + "representative_title": "fix(gateway): surface pairing reason in close frame and error message", + "representative_url": "https://github.com/openclaw/openclaw/pull/64527", "shared_directories": [ - "src/tasks", + "src/gateway/server/ws-connection", + "src/gateway/server", + "src/gateway", "src" ], "shared_filenames": [ - "src/tasks/task-flow-registry.store.sqlite.ts", - "src/tasks/task-flow-registry.store.test.ts" + "src/gateway/server.silent-scope-upgrade-reconnect.poc.test.ts", + "src/gateway/server/ws-connection/message-handler.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/tasks/task-flow-registry.store.sqlite.ts`, `src/tasks/task-flow-registry.store.test.ts`; representative PR #63893.", - "title": "Scope: fix: rebuild legacy flow_runs tables" + "summary": "2 open PRs share weighted file overlap around `src/gateway/server.silent-scope-upgrade-reconnect.poc.test.ts`, `src/gateway/server/ws-connection/message-handler.ts`; representative PR #64527.", + "title": "Scope: fix(gateway): surface pairing reason in close frame and error message" }, { "authors": [ - "lumien" + "MoerAI" ], - "average_similarity": 0.832, - "cluster_id": "pr-scope-53950-2", + "average_similarity": 0.687, + "cluster_id": "pr-scope-65453-2", "kind": "pr_scope", - "last_activity_at": "2026-04-14T13:16:55Z", + "last_activity_at": "2026-04-18T09:05:06Z", "outside_window_prs": [ { - "additions": 65, - "author": "Owlock", - "changed_files": 1, - "created_at": "2026-03-24T20:44:24Z", - "deletions": 0, + "additions": 8, + "author": "mjamiv", + "changed_files": 2, + "created_at": "2026-04-12T16:25:00Z", + "deletions": 13, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53950/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53950", + "files_url": "https://github.com/openclaw/openclaw/pull/65453/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65453", "merged": false, - "number": 53950, + "number": 65453, "state": "open", - "title": "docs: add hypervisorlaunchtype toggle recovery to WSL2+Windows remote CDP guide", - "updated_at": "2026-03-24T22:22:58Z" + "title": "fix(models): add image input to MiniMax-M2.7 catalog", + "updated_at": "2026-04-13T11:46:01Z" } ], "pairwise": [ { - "breadth_similarity": 0.5, - "concentration_similarity": 0.991, - "content_similarity": 0.927, - "left_pr_number": 53950, - "right_pr_number": 66541, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.713, + "left_pr_number": 65453, + "right_pr_number": 68485, "shared_directories": [ - "docs/tools", - "docs" + "extensions/minimax", + "extensions" ], "shared_filenames": [ - "docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md" + "extensions/minimax/provider-catalog.ts" ], - "similarity": 0.832, - "size_similarity": 0.556 + "similarity": 0.687, + "size_similarity": 0.42 } ], "pr_count": 2, "pr_numbers": [ - 53950, - 66541 + 65453, + 68485 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66541 + 68485 ], - "representative_pr_number": 53950, - "representative_title": "docs: add hypervisorlaunchtype toggle recovery to WSL2+Windows remote CDP guide", - "representative_url": "https://github.com/openclaw/openclaw/pull/53950", + "representative_pr_number": 65453, + "representative_title": "fix(models): add image input to MiniMax-M2.7 catalog", + "representative_url": "https://github.com/openclaw/openclaw/pull/65453", "shared_directories": [ - "docs/tools", - "docs" + "extensions/minimax", + "extensions" ], "shared_filenames": [ - "docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md" + "extensions/minimax/provider-catalog.ts" ], - "summary": "2 open PRs share weighted file overlap around `docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md`; representative PR #53950.", - "title": "Scope: docs: add hypervisorlaunchtype toggle recovery to WSL2+Windows remote CDP guide" + "summary": "2 open PRs share weighted file overlap around `extensions/minimax/provider-catalog.ts`; representative PR #65453.", + "title": "Scope: fix(models): add image input to MiniMax-M2.7 catalog" }, { "authors": [ - "ttomiczek" + "PrinceOfEgypt" ], - "average_similarity": 0.802, - "cluster_id": "pr-scope-64596-2", + "average_similarity": 0.648, + "cluster_id": "pr-scope-64731-2", "kind": "pr_scope", - "last_activity_at": "2026-04-16T21:16:28Z", + "last_activity_at": "2026-04-20T17:18:12Z", "outside_window_prs": [ { - "additions": 6, - "author": "slepybear", - "changed_files": 1, - "created_at": "2026-04-11T02:17:12Z", - "deletions": 8, + "additions": 101, + "author": "web3blind", + "changed_files": 2, + "created_at": "2026-04-11T09:02:22Z", + "deletions": 7, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64596/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64596", + "files_url": "https://github.com/openclaw/openclaw/pull/64731/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64731", "merged": false, - "number": 64596, + "number": 64731, "state": "open", - "title": "refactor(memory-core): remove redundant compareOptionalStrings helper [AI]", - "updated_at": "2026-04-17T07:26:45Z" + "title": "fix(telegram): show model fallback notices outside verbose mode", + "updated_at": "2026-04-11T16:58:56Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.84, - "left_pr_number": 64596, - "right_pr_number": 67073, + "breadth_similarity": 0.236, + "concentration_similarity": 0.891, + "content_similarity": 0.738, + "left_pr_number": 64731, + "right_pr_number": 69399, "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming.ts" + "src/auto-reply/reply/agent-runner.runreplyagent.e2e.test.ts", + "src/auto-reply/reply/agent-runner.ts" ], - "similarity": 0.802, - "size_similarity": 0.429 + "similarity": 0.648, + "size_similarity": 0.422 } ], "pr_count": 2, "pr_numbers": [ - 64596, - 67073 + 64731, + 69399 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67073 + 69399 ], - "representative_pr_number": 64596, - "representative_title": "refactor(memory-core): remove redundant compareOptionalStrings helper [AI]", - "representative_url": "https://github.com/openclaw/openclaw/pull/64596", + "representative_pr_number": 64731, + "representative_title": "fix(telegram): show model fallback notices outside verbose mode", + "representative_url": "https://github.com/openclaw/openclaw/pull/64731", "shared_directories": [ - "extensions/memory-core/src", - "extensions/memory-core", - "extensions" + "src/auto-reply/reply", + "src/auto-reply", + "src" ], "shared_filenames": [ - "extensions/memory-core/src/dreaming.ts" + "src/auto-reply/reply/agent-runner.runreplyagent.e2e.test.ts", + "src/auto-reply/reply/agent-runner.ts" ], - "summary": "2 open PRs share weighted file overlap around `extensions/memory-core/src/dreaming.ts`; representative PR #64596.", - "title": "Scope: refactor(memory-core): remove redundant compareOptionalStrings helper [AI]" + "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/agent-runner.runreplyagent.e2e.test.ts`, `src/auto-reply/reply/agent-runner.ts`; representative PR #64731.", + "title": "Scope: fix(telegram): show model fallback notices outside verbose mode" }, { "authors": [ - "mktcode" + "zhyongrui" ], - "average_similarity": 0.777, - "cluster_id": "pr-scope-54032-2", + "average_similarity": 0.626, + "cluster_id": "pr-scope-65802-2", "kind": "pr_scope", - "last_activity_at": "2026-04-14T17:43:50Z", + "last_activity_at": "2026-04-16T16:20:04Z", "outside_window_prs": [ { - "additions": 3, - "author": "chocobo9", + "additions": 23, + "author": "songbing0632-code", "changed_files": 2, - "created_at": "2026-03-24T22:25:22Z", - "deletions": 3, + "created_at": "2026-04-13T08:24:33Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54032/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54032", + "files_url": "https://github.com/openclaw/openclaw/pull/65802/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65802", "merged": false, - "number": 54032, + "number": 65802, "state": "open", - "title": "Fix himalaya move/copy argument order and missing export ID (fixes #9607)", - "updated_at": "2026-03-24T22:26:33Z" + "title": "fix(feishu): disable ambient proxy inheritance for websocket by default", + "updated_at": "2026-04-13T08:26:22Z" } ], "pairwise": [ { - "breadth_similarity": 0.5, - "concentration_similarity": 0.667, - "content_similarity": 0.848, - "left_pr_number": 54032, - "right_pr_number": 66711, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.66, + "left_pr_number": 65802, + "right_pr_number": 67734, "shared_directories": [ - "skills/himalaya", - "skills" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "skills/himalaya/SKILL.md" + "extensions/feishu/src/client.test.ts", + "extensions/feishu/src/client.ts" ], - "similarity": 0.777, - "size_similarity": 0.667 + "similarity": 0.626, + "size_similarity": 0.262 } ], "pr_count": 2, "pr_numbers": [ - 54032, - 66711 + 65802, + 67734 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66711 + 67734 ], - "representative_pr_number": 54032, - "representative_title": "Fix himalaya move/copy argument order and missing export ID (fixes #9607)", - "representative_url": "https://github.com/openclaw/openclaw/pull/54032", + "representative_pr_number": 65802, + "representative_title": "fix(feishu): disable ambient proxy inheritance for websocket by default", + "representative_url": "https://github.com/openclaw/openclaw/pull/65802", "shared_directories": [ - "skills/himalaya", - "skills" + "extensions/feishu/src", + "extensions/feishu", + "extensions" ], "shared_filenames": [ - "skills/himalaya/SKILL.md" + "extensions/feishu/src/client.ts", + "extensions/feishu/src/client.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `skills/himalaya/SKILL.md`; representative PR #54032.", - "title": "Scope: Fix himalaya move/copy argument order and missing export ID (fixes #9607)" + "summary": "2 open PRs share weighted file overlap around `extensions/feishu/src/client.ts`, `extensions/feishu/src/client.test.ts`; representative PR #65802.", + "title": "Scope: fix(feishu): disable ambient proxy inheritance for websocket by default" }, { "authors": [ - "duqaXxX" + "mushuiyu886" ], - "average_similarity": 0.767, - "cluster_id": "pr-scope-65170-2", + "average_similarity": 0.615, + "cluster_id": "pr-scope-66000-2", "kind": "pr_scope", - "last_activity_at": "2026-04-16T01:05:07Z", + "last_activity_at": "2026-04-15T05:15:52Z", "outside_window_prs": [ { - "additions": 13, - "author": "duqaXxX", - "changed_files": 3, - "created_at": "2026-04-12T04:21:04Z", - "deletions": 13, + "additions": 56, + "author": "mushuiyu886", + "changed_files": 2, + "created_at": "2026-04-13T15:06:57Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65170/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65170", + "files_url": "https://github.com/openclaw/openclaw/pull/66000/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66000", "merged": false, - "number": 65170, + "number": 66000, "state": "open", - "title": "fix(inter-session-completion-delivery): ensure completion delivery on ANNOUNCE_SKIP", - "updated_at": "2026-04-12T04:29:25Z" + "title": "fix(cli): clear conflicting OPENCLAW_LAUNCHD_LABEL when --profile is provided", + "updated_at": "2026-04-14T02:25:45Z" } ], "pairwise": [ { - "breadth_similarity": 0.875, - "concentration_similarity": 1.0, - "content_similarity": 0.708, - "left_pr_number": 65170, - "right_pr_number": 67444, + "breadth_similarity": 0.292, + "concentration_similarity": 0.505, + "content_similarity": 0.692, + "left_pr_number": 66000, + "right_pr_number": 66894, "shared_directories": [ - "src/agents", + "src/cli", "src" ], "shared_filenames": [ - "src/agents/subagent-announce.format.e2e.test.ts", - "src/agents/subagent-announce.test.ts", - "src/agents/subagent-announce.ts" + "src/cli/profile.test.ts", + "src/cli/profile.ts" ], - "similarity": 0.767, - "size_similarity": 0.897 + "similarity": 0.615, + "size_similarity": 0.505 } ], "pr_count": 2, "pr_numbers": [ - 65170, - 67444 + 66000, + 66894 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67444 + 66894 ], - "representative_pr_number": 65170, - "representative_title": "fix(inter-session-completion-delivery): ensure completion delivery on ANNOUNCE_SKIP", - "representative_url": "https://github.com/openclaw/openclaw/pull/65170", + "representative_pr_number": 66000, + "representative_title": "fix(cli): clear conflicting OPENCLAW_LAUNCHD_LABEL when --profile is provided", + "representative_url": "https://github.com/openclaw/openclaw/pull/66000", "shared_directories": [ - "src/agents", + "src/cli", "src" ], "shared_filenames": [ - "src/agents/subagent-announce.test.ts", - "src/agents/subagent-announce.format.e2e.test.ts", - "src/agents/subagent-announce.ts" + "src/cli/profile.test.ts", + "src/cli/profile.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/subagent-announce.test.ts`, `src/agents/subagent-announce.format.e2e.test.ts`, `src/agents/subagent-announce.ts`; representative PR #65170.", - "title": "Scope: fix(inter-session-completion-delivery): ensure completion delivery on ANNOUNCE_SKIP" + "summary": "2 open PRs share weighted file overlap around `src/cli/profile.test.ts`, `src/cli/profile.ts`; representative PR #66000.", + "title": "Scope: fix(cli): clear conflicting OPENCLAW_LAUNCHD_LABEL when --profile is provided" }, { "authors": [ - "kakahu2015" + "lml2468" ], - "average_similarity": 0.746, - "cluster_id": "pr-scope-63800-2", + "average_similarity": 0.606, + "cluster_id": "pr-scope-65226-2", "kind": "pr_scope", - "last_activity_at": "2026-04-16T03:22:38Z", + "last_activity_at": "2026-04-16T11:02:39Z", "outside_window_prs": [ { - "additions": 326, - "author": "kakahu2015", - "changed_files": 9, - "created_at": "2026-04-09T15:09:11Z", - "deletions": 1, + "additions": 834, + "author": "bek91", + "changed_files": 7, + "created_at": "2026-04-12T07:12:12Z", + "deletions": 94, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63800/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63800", + "files_url": "https://github.com/openclaw/openclaw/pull/65226/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65226", "merged": false, - "number": 63800, + "number": 65226, "state": "open", - "title": "[codex] Gateway: add offline APNs chat reply alerts", - "updated_at": "2026-04-11T05:57:44Z" + "title": "Fix qmd session export/update races", + "updated_at": "2026-04-20T22:36:13Z" } ], "pairwise": [ { - "breadth_similarity": 0.278, - "concentration_similarity": 0.966, - "content_similarity": 0.813, - "left_pr_number": 63800, - "right_pr_number": 67493, + "breadth_similarity": 0.268, + "concentration_similarity": 0.964, + "content_similarity": 0.724, + "left_pr_number": 65226, + "right_pr_number": 67630, "shared_directories": [ - "src/gateway", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/gateway/chat-apns-notify.test.ts", - "src/gateway/chat-apns-notify.ts" + "extensions/memory-core/src/memory/search-manager.test.ts", + "extensions/memory-core/src/memory/search-manager.ts" ], - "similarity": 0.746, - "size_similarity": 0.673 + "similarity": 0.606, + "size_similarity": 0.161 } ], "pr_count": 2, "pr_numbers": [ - 63800, - 67493 + 65226, + 67630 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67493 + 67630 ], - "representative_pr_number": 63800, - "representative_title": "[codex] Gateway: add offline APNs chat reply alerts", - "representative_url": "https://github.com/openclaw/openclaw/pull/63800", + "representative_pr_number": 65226, + "representative_title": "Fix qmd session export/update races", + "representative_url": "https://github.com/openclaw/openclaw/pull/65226", "shared_directories": [ - "src/gateway", - "src" + "extensions/memory-core/src/memory", + "extensions/memory-core/src", + "extensions/memory-core", + "extensions" ], "shared_filenames": [ - "src/gateway/chat-apns-notify.test.ts", - "src/gateway/chat-apns-notify.ts" + "extensions/memory-core/src/memory/search-manager.test.ts", + "extensions/memory-core/src/memory/search-manager.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/gateway/chat-apns-notify.test.ts`, `src/gateway/chat-apns-notify.ts`; representative PR #63800.", - "title": "Scope: [codex] Gateway: add offline APNs chat reply alerts" + "summary": "2 open PRs share weighted file overlap around `extensions/memory-core/src/memory/search-manager.test.ts`, `extensions/memory-core/src/memory/search-manager.ts`; representative PR #65226.", + "title": "Scope: Fix qmd session export/update races" }, { "authors": [ - "OwenYWT" + "i-am-coco" ], - "average_similarity": 0.716, - "cluster_id": "pr-scope-63058-2", + "average_similarity": 0.589, + "cluster_id": "pr-scope-60673-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T03:32:18Z", + "last_activity_at": "2026-04-14T21:19:30Z", "outside_window_prs": [ { - "additions": 91, - "author": "547895019", - "changed_files": 7, - "created_at": "2026-04-08T09:00:38Z", - "deletions": 66, + "additions": 31, + "author": "wiliyam", + "changed_files": 1, + "created_at": "2026-04-04T04:05:14Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63058/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63058", + "files_url": "https://github.com/openclaw/openclaw/pull/60673/files", + "html_url": "https://github.com/openclaw/openclaw/pull/60673", "merged": false, - "number": 63058, + "number": 60673, "state": "open", - "title": "fix(comfy): read config from plugins.entries instead of models.providers", - "updated_at": "2026-04-18T11:45:59Z" + "title": "fix(auth): proactively refresh OAuth token before expiry to prevent concurrent-agent race condition", + "updated_at": "2026-04-21T07:18:20Z" } ], "pairwise": [ { - "breadth_similarity": 0.661, - "concentration_similarity": 0.946, - "content_similarity": 0.741, - "left_pr_number": 63058, - "right_pr_number": 65385, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.652, + "left_pr_number": 60673, + "right_pr_number": 66751, "shared_directories": [ - "docs/providers", - "extensions/comfy", - "docs", - "extensions" + "src/agents/auth-profiles", + "src/agents", + "src" ], "shared_filenames": [ - "docs/providers/comfy.md", - "extensions/comfy/image-generation-provider.test.ts", - "extensions/comfy/workflow-runtime.ts" + "src/agents/auth-profiles/oauth.ts" ], - "similarity": 0.716, - "size_similarity": 0.555 + "similarity": 0.589, + "size_similarity": 0.049 } ], "pr_count": 2, "pr_numbers": [ - 63058, - 65385 + 60673, + 66751 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65385 + 66751 ], - "representative_pr_number": 63058, - "representative_title": "fix(comfy): read config from plugins.entries instead of models.providers", - "representative_url": "https://github.com/openclaw/openclaw/pull/63058", + "representative_pr_number": 60673, + "representative_title": "fix(auth): proactively refresh OAuth token before expiry to prevent concurrent-agent race condition", + "representative_url": "https://github.com/openclaw/openclaw/pull/60673", "shared_directories": [ - "extensions/comfy", - "docs/providers", - "docs", - "extensions" + "src/agents/auth-profiles", + "src/agents", + "src" ], "shared_filenames": [ - "docs/providers/comfy.md", - "extensions/comfy/image-generation-provider.test.ts", - "extensions/comfy/workflow-runtime.ts" + "src/agents/auth-profiles/oauth.ts" ], - "summary": "2 open PRs share weighted file overlap around `docs/providers/comfy.md`, `extensions/comfy/image-generation-provider.test.ts`, `extensions/comfy/workflow-runtime.ts`; representative PR #63058.", - "title": "Scope: fix(comfy): read config from plugins.entries instead of models.providers" + "summary": "2 open PRs share weighted file overlap around `src/agents/auth-profiles/oauth.ts`; representative PR #60673.", + "title": "Scope: fix(auth): proactively refresh OAuth token before expiry to prevent concurrent-agent race condition" }, { "authors": [ - "davidrudduck" + "chinar-amrutkar" ], - "average_similarity": 0.646, - "cluster_id": "pr-scope-63634-2", + "average_similarity": 0.585, + "cluster_id": "pr-scope-57422-2", "kind": "pr_scope", - "last_activity_at": "2026-04-14T13:23:32Z", + "last_activity_at": "2026-04-21T16:09:18Z", "outside_window_prs": [ { - "additions": 73, - "author": "zozo123", - "changed_files": 2, - "created_at": "2026-04-09T08:23:44Z", - "deletions": 5, + "additions": 413, + "author": "sinogello", + "changed_files": 6, + "created_at": "2026-03-30T02:46:42Z", + "deletions": 25, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63634/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63634", + "files_url": "https://github.com/openclaw/openclaw/pull/57422/files", + "html_url": "https://github.com/openclaw/openclaw/pull/57422", "merged": false, - "number": 63634, + "number": 57422, "state": "open", - "title": "fix: accept valid MCP tool schemas without strict inputSchema.type check", - "updated_at": "2026-04-12T07:52:50Z" + "title": "telegram: improve polling outage detection and recovery after network loss", + "updated_at": "2026-04-21T04:42:34Z" } ], "pairwise": [ { - "breadth_similarity": 0.75, + "breadth_similarity": 0.583, "concentration_similarity": 1.0, - "content_similarity": 0.707, - "left_pr_number": 63634, - "right_pr_number": 66542, + "content_similarity": 0.67, + "left_pr_number": 57422, + "right_pr_number": 69779, "shared_directories": [ - "src/agents", - "src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "src/agents/pi-bundle-mcp-runtime.ts" + "extensions/telegram/src/polling-session.ts" ], - "similarity": 0.646, - "size_similarity": 0.174 + "similarity": 0.585, + "size_similarity": 0.05 } ], "pr_count": 2, "pr_numbers": [ - 63634, - 66542 + 57422, + 69779 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66542 + 69779 ], - "representative_pr_number": 63634, - "representative_title": "fix: accept valid MCP tool schemas without strict inputSchema.type check", - "representative_url": "https://github.com/openclaw/openclaw/pull/63634", + "representative_pr_number": 57422, + "representative_title": "telegram: improve polling outage detection and recovery after network loss", + "representative_url": "https://github.com/openclaw/openclaw/pull/57422", "shared_directories": [ - "src/agents", - "src" + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [ - "src/agents/pi-bundle-mcp-runtime.ts" + "extensions/telegram/src/polling-session.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/pi-bundle-mcp-runtime.ts`; representative PR #63634.", - "title": "Scope: fix: accept valid MCP tool schemas without strict inputSchema.type check" + "summary": "2 open PRs share weighted file overlap around `extensions/telegram/src/polling-session.ts`; representative PR #57422.", + "title": "Scope: telegram: improve polling outage detection and recovery after network loss" }, { "authors": [ - "OpenCodeEngineer" + "leifengfeng" ], - "average_similarity": 0.62, - "cluster_id": "pr-scope-65028-2", + "average_similarity": 0.578, + "cluster_id": "pr-scope-53651-2", "kind": "pr_scope", - "last_activity_at": "2026-04-13T20:20:49Z", + "last_activity_at": "2026-04-21T10:40:06Z", "outside_window_prs": [ { - "additions": 7, - "author": "Ivan-Fn", - "changed_files": 2, - "created_at": "2026-04-11T22:28:08Z", - "deletions": 0, + "additions": 190, + "author": "Thatgfsj", + "changed_files": 4, + "created_at": "2026-03-24T11:53:29Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65028/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65028", + "files_url": "https://github.com/openclaw/openclaw/pull/53651/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53651", "merged": false, - "number": 65028, + "number": 53651, "state": "open", - "title": "fix: classify \"No conversation found\" as session_expired", - "updated_at": "2026-04-12T01:36:20Z" + "title": "fix(webchat): restore chat history, queue, and draft on page refresh", + "updated_at": "2026-03-24T20:15:29Z" } ], "pairwise": [ { - "breadth_similarity": 0.667, - "concentration_similarity": 0.643, - "content_similarity": 0.637, - "left_pr_number": 65028, - "right_pr_number": 65254, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.578, + "left_pr_number": 53651, + "right_pr_number": 69647, "shared_directories": [ - "src/agents/pi-embedded-helpers", - "src/agents", - "src" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts", - "src/agents/pi-embedded-helpers/errors.ts" + "ui/src/ui/storage.ts" ], - "similarity": 0.62, - "size_similarity": 0.5 + "similarity": 0.578, + "size_similarity": 0.321 } ], "pr_count": 2, "pr_numbers": [ - 65028, - 65254 + 53651, + 69647 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65254 + 69647 ], - "representative_pr_number": 65028, - "representative_title": "fix: classify \"No conversation found\" as session_expired", - "representative_url": "https://github.com/openclaw/openclaw/pull/65028", + "representative_pr_number": 53651, + "representative_title": "fix(webchat): restore chat history, queue, and draft on page refresh", + "representative_url": "https://github.com/openclaw/openclaw/pull/53651", "shared_directories": [ - "src/agents/pi-embedded-helpers", - "src/agents", - "src" + "ui/src/ui", + "ui/src", + "ui" ], "shared_filenames": [ - "src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts", - "src/agents/pi-embedded-helpers/errors.ts" + "ui/src/ui/storage.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts`, `src/agents/pi-embedded-helpers/errors.ts`; representative PR #65028.", - "title": "Scope: fix: classify \"No conversation found\" as session_expired" + "summary": "2 open PRs share weighted file overlap around `ui/src/ui/storage.ts`; representative PR #53651.", + "title": "Scope: fix(webchat): restore chat history, queue, and draft on page refresh" }, { "authors": [ - "MonkeyLeeT" + "coygeek" ], - "average_similarity": 0.619, - "cluster_id": "pr-scope-63062-2", + "average_similarity": 0.569, + "cluster_id": "pr-scope-64608-2", "kind": "pr_scope", - "last_activity_at": "2026-04-19T02:13:21Z", + "last_activity_at": "2026-04-18T23:00:18Z", "outside_window_prs": [ { - "additions": 64, - "author": "liu51115", - "changed_files": 3, - "created_at": "2026-04-08T09:07:32Z", - "deletions": 3, + "additions": 217, + "author": "huangdijia", + "changed_files": 7, + "created_at": "2026-04-11T03:09:28Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63062/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63062", + "files_url": "https://github.com/openclaw/openclaw/pull/64608/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64608", "merged": false, - "number": 63062, + "number": 64608, "state": "open", - "title": "fix: apply cache_control to conversation messages on OpenRouter path", - "updated_at": "2026-04-11T08:54:10Z" + "title": "feat(discord): forward appliedTags in channel-edit actions for forum posts", + "updated_at": "2026-04-11T04:49:22Z" } ], "pairwise": [ { - "breadth_similarity": 0.583, - "concentration_similarity": 0.851, - "content_similarity": 0.547, - "left_pr_number": 63062, - "right_pr_number": 67800, + "breadth_similarity": 1.0, + "concentration_similarity": 0.832, + "content_similarity": 0.519, + "left_pr_number": 64608, + "right_pr_number": 68716, "shared_directories": [ - "src/agents", - "src" + "extensions/discord/src/actions", + "extensions/discord/src", + "extensions/discord", + "extensions" ], "shared_filenames": [ - "src/agents/anthropic-payload-policy.test.ts", - "src/agents/anthropic-payload-policy.ts" + "extensions/discord/src/actions/handle-action.guild-admin.ts", + "extensions/discord/src/actions/handle-action.test.ts", + "extensions/discord/src/actions/runtime.guild.ts", + "extensions/discord/src/actions/runtime.test.ts" ], - "similarity": 0.619, - "size_similarity": 0.905 + "similarity": 0.569, + "size_similarity": 0.428 } ], "pr_count": 2, "pr_numbers": [ - 63062, - 67800 + 64608, + 68716 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67800 + 68716 ], - "representative_pr_number": 63062, - "representative_title": "fix: apply cache_control to conversation messages on OpenRouter path", - "representative_url": "https://github.com/openclaw/openclaw/pull/63062", + "representative_pr_number": 64608, + "representative_title": "feat(discord): forward appliedTags in channel-edit actions for forum posts", + "representative_url": "https://github.com/openclaw/openclaw/pull/64608", "shared_directories": [ - "src/agents", - "src" + "extensions/discord/src/actions", + "extensions/discord/src", + "extensions/discord", + "extensions" ], "shared_filenames": [ - "src/agents/anthropic-payload-policy.test.ts", - "src/agents/anthropic-payload-policy.ts" + "extensions/discord/src/actions/handle-action.guild-admin.ts", + "extensions/discord/src/actions/runtime.guild.ts", + "extensions/discord/src/actions/runtime.test.ts", + "extensions/discord/src/actions/handle-action.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/anthropic-payload-policy.test.ts`, `src/agents/anthropic-payload-policy.ts`; representative PR #63062.", - "title": "Scope: fix: apply cache_control to conversation messages on OpenRouter path" + "summary": "2 open PRs share weighted file overlap around `extensions/discord/src/actions/handle-action.guild-admin.ts`, `extensions/discord/src/actions/runtime.guild.ts`, `extensions/discord/src/actions/runtime.test.ts`; representative PR #64608.", + "title": "Scope: feat(discord): forward appliedTags in channel-edit actions for forum posts" }, { "authors": [ - "geekhuashan" + "cholaolu-boop" ], - "average_similarity": 0.617, - "cluster_id": "pr-scope-63633-2", + "average_similarity": 0.565, + "cluster_id": "pr-scope-66656-2", "kind": "pr_scope", - "last_activity_at": "2026-04-15T22:18:14Z", + "last_activity_at": "2026-04-20T19:44:02Z", "outside_window_prs": [ { - "additions": 111, - "author": "heichaowo", - "changed_files": 3, - "created_at": "2026-04-09T08:23:10Z", - "deletions": 11, + "additions": 21, + "author": "Tianworld", + "changed_files": 2, + "created_at": "2026-04-14T16:06:17Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63633/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63633", + "files_url": "https://github.com/openclaw/openclaw/pull/66656/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66656", "merged": false, - "number": 63633, + "number": 66656, "state": "open", - "title": "fix: support socks5/socks4 proxy via undici Socks5ProxyAgent", - "updated_at": "2026-04-11T14:33:57Z" + "title": "fix(gateway): skip heartbeat diagnostics in session preview", + "updated_at": "2026-04-14T16:07:21Z" } ], "pairwise": [ { - "breadth_similarity": 0.583, - "concentration_similarity": 0.754, - "content_similarity": 0.678, - "left_pr_number": 63633, - "right_pr_number": 66243, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.585, + "left_pr_number": 66656, + "right_pr_number": 68765, "shared_directories": [ - "src/infra/net", - "src/infra", + "src/gateway", "src" ], "shared_filenames": [ - "src/infra/net/proxy-fetch.test.ts", - "src/infra/net/proxy-fetch.ts" + "src/gateway/session-utils.fs.test.ts", + "src/gateway/session-utils.fs.ts" ], - "similarity": 0.617, - "size_similarity": 0.31 + "similarity": 0.565, + "size_similarity": 0.037 } ], "pr_count": 2, "pr_numbers": [ - 63633, - 66243 + 66656, + 68765 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66243 + 68765 ], - "representative_pr_number": 63633, - "representative_title": "fix: support socks5/socks4 proxy via undici Socks5ProxyAgent", - "representative_url": "https://github.com/openclaw/openclaw/pull/63633", + "representative_pr_number": 66656, + "representative_title": "fix(gateway): skip heartbeat diagnostics in session preview", + "representative_url": "https://github.com/openclaw/openclaw/pull/66656", "shared_directories": [ - "src/infra/net", - "src/infra", + "src/gateway", "src" ], "shared_filenames": [ - "src/infra/net/proxy-fetch.test.ts", - "src/infra/net/proxy-fetch.ts" + "src/gateway/session-utils.fs.test.ts", + "src/gateway/session-utils.fs.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/infra/net/proxy-fetch.test.ts`, `src/infra/net/proxy-fetch.ts`; representative PR #63633.", - "title": "Scope: fix: support socks5/socks4 proxy via undici Socks5ProxyAgent" + "summary": "2 open PRs share weighted file overlap around `src/gateway/session-utils.fs.test.ts`, `src/gateway/session-utils.fs.ts`; representative PR #66656.", + "title": "Scope: fix(gateway): skip heartbeat diagnostics in session preview" }, { "authors": [ - "lyfuci" + "iosifpeterfi" ], - "average_similarity": 0.589, - "cluster_id": "pr-scope-59717-2", + "average_similarity": 0.56, + "cluster_id": "pr-scope-64557-2", "kind": "pr_scope", - "last_activity_at": "2026-04-19T04:39:04Z", + "last_activity_at": "2026-04-14T20:59:57Z", "outside_window_prs": [ { - "additions": 50, - "author": "ayeshakhalid192007-dev", - "changed_files": 4, - "created_at": "2026-04-02T14:23:29Z", - "deletions": 25, + "additions": 8, + "author": "xchunzhao", + "changed_files": 1, + "created_at": "2026-04-11T00:44:52Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/59717/files", - "html_url": "https://github.com/openclaw/openclaw/pull/59717", + "files_url": "https://github.com/openclaw/openclaw/pull/64557/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64557", "merged": false, - "number": 59717, + "number": 64557, "state": "open", - "title": "feat(acpx): add allow option to nonInteractivePermissions", - "updated_at": "2026-04-17T07:12:43Z" + "title": "fix: exclude ephemeral loopback port from CLI session mcpConfigHash (closes #64386)", + "updated_at": "2026-04-11T00:46:58Z" } ], "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 0.778, - "content_similarity": 0.477, - "left_pr_number": 59717, - "right_pr_number": 68430, + "breadth_similarity": 0.225, + "concentration_similarity": 0.673, + "content_similarity": 0.681, + "left_pr_number": 64557, + "right_pr_number": 66798, "shared_directories": [ - "extensions/acpx/src", - "extensions/acpx", - "extensions" + "src/agents/cli-runner", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/acpx/openclaw.plugin.json", - "extensions/acpx/src/config-schema.ts", - "extensions/acpx/src/config.test.ts" + "src/agents/cli-runner/bundle-mcp.ts" ], - "similarity": 0.589, - "size_similarity": 0.938 + "similarity": 0.56, + "size_similarity": 0.184 } ], "pr_count": 2, "pr_numbers": [ - 59717, - 68430 + 64557, + 66798 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68430 + 66798 ], - "representative_pr_number": 59717, - "representative_title": "feat(acpx): add allow option to nonInteractivePermissions", - "representative_url": "https://github.com/openclaw/openclaw/pull/59717", + "representative_pr_number": 64557, + "representative_title": "fix: exclude ephemeral loopback port from CLI session mcpConfigHash (closes #64386)", + "representative_url": "https://github.com/openclaw/openclaw/pull/64557", "shared_directories": [ - "extensions/acpx/src", - "extensions/acpx", - "extensions" + "src/agents/cli-runner", + "src/agents", + "src" ], "shared_filenames": [ - "extensions/acpx/openclaw.plugin.json", - "extensions/acpx/src/config-schema.ts", - "extensions/acpx/src/config.test.ts" + "src/agents/cli-runner/bundle-mcp.ts" ], - "summary": "2 open PRs share weighted file overlap around `extensions/acpx/openclaw.plugin.json`, `extensions/acpx/src/config-schema.ts`, `extensions/acpx/src/config.test.ts`; representative PR #59717.", - "title": "Scope: feat(acpx): add allow option to nonInteractivePermissions" + "summary": "2 open PRs share weighted file overlap around `src/agents/cli-runner/bundle-mcp.ts`; representative PR #64557.", + "title": "Scope: fix: exclude ephemeral loopback port from CLI session mcpConfigHash (closes #64386)" }, { "authors": [ - "coygeek" + "ztexydt-cqh" ], - "average_similarity": 0.569, - "cluster_id": "pr-scope-64608-2", + "average_similarity": 0.556, + "cluster_id": "pr-scope-66653-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T23:00:18Z", + "last_activity_at": "2026-04-17T02:42:16Z", "outside_window_prs": [ { - "additions": 217, - "author": "huangdijia", - "changed_files": 7, - "created_at": "2026-04-11T03:09:28Z", - "deletions": 0, + "additions": 12, + "author": "mm1ord", + "changed_files": 5, + "created_at": "2026-04-14T16:03:20Z", + "deletions": 11, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64608/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64608", + "files_url": "https://github.com/openclaw/openclaw/pull/66653/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66653", "merged": false, - "number": 64608, + "number": 66653, "state": "open", - "title": "feat(discord): forward appliedTags in channel-edit actions for forum posts", - "updated_at": "2026-04-11T04:49:22Z" + "title": "fix(telegram): add null safety to .trim() calls in setup flow", + "updated_at": "2026-04-14T16:06:43Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 0.832, - "content_similarity": 0.518, - "left_pr_number": 64608, - "right_pr_number": 68716, + "breadth_similarity": 0.35, + "concentration_similarity": 0.522, + "content_similarity": 0.549, + "left_pr_number": 66653, + "right_pr_number": 67736, "shared_directories": [ - "extensions/discord/src/actions", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/channels/plugins", + "src/channels", + "src" ], "shared_filenames": [ - "extensions/discord/src/actions/handle-action.guild-admin.ts", - "extensions/discord/src/actions/handle-action.test.ts", - "extensions/discord/src/actions/runtime.guild.ts", - "extensions/discord/src/actions/runtime.test.ts" + "src/channels/plugins/setup-wizard-helpers.ts" ], - "similarity": 0.569, - "size_similarity": 0.428 + "similarity": 0.556, + "size_similarity": 0.739 } ], "pr_count": 2, "pr_numbers": [ - 64608, - 68716 + 66653, + 67736 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68716 + 67736 ], - "representative_pr_number": 64608, - "representative_title": "feat(discord): forward appliedTags in channel-edit actions for forum posts", - "representative_url": "https://github.com/openclaw/openclaw/pull/64608", + "representative_pr_number": 66653, + "representative_title": "fix(telegram): add null safety to .trim() calls in setup flow", + "representative_url": "https://github.com/openclaw/openclaw/pull/66653", "shared_directories": [ - "extensions/discord/src/actions", - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/channels/plugins", + "src/channels", + "src" ], "shared_filenames": [ - "extensions/discord/src/actions/handle-action.guild-admin.ts", - "extensions/discord/src/actions/runtime.guild.ts", - "extensions/discord/src/actions/runtime.test.ts", - "extensions/discord/src/actions/handle-action.test.ts" + "src/channels/plugins/setup-wizard-helpers.ts" ], - "summary": "2 open PRs share weighted file overlap around `extensions/discord/src/actions/handle-action.guild-admin.ts`, `extensions/discord/src/actions/runtime.guild.ts`, `extensions/discord/src/actions/runtime.test.ts`; representative PR #64608.", - "title": "Scope: feat(discord): forward appliedTags in channel-edit actions for forum posts" + "summary": "2 open PRs share weighted file overlap around `src/channels/plugins/setup-wizard-helpers.ts`; representative PR #66653.", + "title": "Scope: fix(telegram): add null safety to .trim() calls in setup flow" }, { "authors": [ - "garnetlyx" + "langningchen-openclaw" ], - "average_similarity": 0.567, - "cluster_id": "pr-scope-53850-2", + "average_similarity": 0.546, + "cluster_id": "pr-scope-66062-2", "kind": "pr_scope", - "last_activity_at": "2026-04-14T16:01:44Z", + "last_activity_at": "2026-04-18T11:09:31Z", "outside_window_prs": [ { - "additions": 6, - "author": "ysfbsf", + "additions": 485, + "author": "ly85206559", "changed_files": 2, - "created_at": "2026-03-24T17:33:59Z", - "deletions": 2, + "created_at": "2026-04-13T16:40:32Z", + "deletions": 21, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53850/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53850", + "files_url": "https://github.com/openclaw/openclaw/pull/66062/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66062", "merged": false, - "number": 53850, + "number": 66062, "state": "open", - "title": "fix(status): merge per-agent thinkingDefault into status display", - "updated_at": "2026-03-24T20:15:28Z" + "title": "fix(daemon): ignore setlocal in Windows task parsing", + "updated_at": "2026-04-21T14:58:51Z" } ], "pairwise": [ { - "breadth_similarity": 0.583, - "concentration_similarity": 0.961, - "content_similarity": 0.635, - "left_pr_number": 53850, - "right_pr_number": 65561, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.449, + "left_pr_number": 66062, + "right_pr_number": 68149, "shared_directories": [ - "src/agents/tools", - "src/auto-reply/reply", - "src/agents", - "src/auto-reply", + "src/daemon", "src" ], "shared_filenames": [ - "src/agents/tools/session-status-tool.ts", - "src/auto-reply/reply/commands-status.ts" + "src/daemon/schtasks.ts" ], - "similarity": 0.567, - "size_similarity": 0.105 + "similarity": 0.546, + "size_similarity": 0.708 } ], "pr_count": 2, "pr_numbers": [ - 53850, - 65561 + 66062, + 68149 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65561 + 68149 ], - "representative_pr_number": 53850, - "representative_title": "fix(status): merge per-agent thinkingDefault into status display", - "representative_url": "https://github.com/openclaw/openclaw/pull/53850", + "representative_pr_number": 66062, + "representative_title": "fix(daemon): ignore setlocal in Windows task parsing", + "representative_url": "https://github.com/openclaw/openclaw/pull/66062", "shared_directories": [ - "src/agents/tools", - "src/auto-reply/reply", - "src/auto-reply", - "src/agents", + "src/daemon", "src" ], "shared_filenames": [ - "src/auto-reply/reply/commands-status.ts", - "src/agents/tools/session-status-tool.ts" + "src/daemon/schtasks.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/commands-status.ts`, `src/agents/tools/session-status-tool.ts`; representative PR #53850.", - "title": "Scope: fix(status): merge per-agent thinkingDefault into status display" + "summary": "2 open PRs share weighted file overlap around `src/daemon/schtasks.ts`; representative PR #66062.", + "title": "Scope: fix(daemon): ignore setlocal in Windows task parsing" }, { "authors": [ - "ryanngit" + "wAnyBug-Com" ], - "average_similarity": 0.562, - "cluster_id": "pr-scope-65175-2", + "average_similarity": 0.543, + "cluster_id": "pr-scope-66367-2", "kind": "pr_scope", - "last_activity_at": "2026-04-12T15:15:42Z", + "last_activity_at": "2026-04-21T14:27:12Z", "outside_window_prs": [ { - "additions": 4, - "author": "Yanhu007", - "changed_files": 1, - "created_at": "2026-04-12T04:35:40Z", - "deletions": 0, + "additions": 38, + "author": "lilesjtu", + "changed_files": 4, + "created_at": "2026-04-14T05:38:14Z", + "deletions": 67, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65175/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65175", + "files_url": "https://github.com/openclaw/openclaw/pull/66367/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66367", "merged": false, - "number": 65175, + "number": 66367, "state": "open", - "title": "fix(cron): persist sessionFile for isolated cron runs to prevent orphans", - "updated_at": "2026-04-12T04:38:17Z" + "title": "fix: expose qwen3.6-plus on Coding Plan endpoints", + "updated_at": "2026-04-14T07:14:41Z" } ], "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.609, - "left_pr_number": 65175, - "right_pr_number": 65413, + "breadth_similarity": 0.625, + "concentration_similarity": 0.524, + "content_similarity": 0.533, + "left_pr_number": 66367, + "right_pr_number": 69729, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "extensions/qwen", + "extensions" ], "shared_filenames": [ - "src/cron/isolated-agent/run-executor.ts" + "extensions/qwen/index.ts", + "extensions/qwen/models.ts" ], - "similarity": 0.562, - "size_similarity": 0.073 + "similarity": 0.543, + "size_similarity": 0.543 } ], "pr_count": 2, "pr_numbers": [ - 65175, - 65413 + 66367, + 69729 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65413 + 69729 ], - "representative_pr_number": 65175, - "representative_title": "fix(cron): persist sessionFile for isolated cron runs to prevent orphans", - "representative_url": "https://github.com/openclaw/openclaw/pull/65175", + "representative_pr_number": 66367, + "representative_title": "fix: expose qwen3.6-plus on Coding Plan endpoints", + "representative_url": "https://github.com/openclaw/openclaw/pull/66367", "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", - "src" + "extensions/qwen", + "extensions" ], "shared_filenames": [ - "src/cron/isolated-agent/run-executor.ts" + "extensions/qwen/index.ts", + "extensions/qwen/models.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/cron/isolated-agent/run-executor.ts`; representative PR #65175.", - "title": "Scope: fix(cron): persist sessionFile for isolated cron runs to prevent orphans" + "summary": "2 open PRs share weighted file overlap around `extensions/qwen/index.ts`, `extensions/qwen/models.ts`; representative PR #66367.", + "title": "Scope: fix: expose qwen3.6-plus on Coding Plan endpoints" }, { "authors": [ - "iosifpeterfi" + "mvanhorn" ], - "average_similarity": 0.561, - "cluster_id": "pr-scope-64557-2", + "average_similarity": 0.541, + "cluster_id": "pr-scope-63848-2", "kind": "pr_scope", - "last_activity_at": "2026-04-14T20:59:57Z", + "last_activity_at": "2026-04-19T14:52:15Z", "outside_window_prs": [ { - "additions": 8, - "author": "xchunzhao", + "additions": 5, + "author": "zozo123", "changed_files": 1, - "created_at": "2026-04-11T00:44:52Z", - "deletions": 1, + "created_at": "2026-04-09T16:34:19Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64557/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64557", + "files_url": "https://github.com/openclaw/openclaw/pull/63848/files", + "html_url": "https://github.com/openclaw/openclaw/pull/63848", "merged": false, - "number": 64557, + "number": 63848, "state": "open", - "title": "fix: exclude ephemeral loopback port from CLI session mcpConfigHash (closes #64386)", - "updated_at": "2026-04-11T00:46:58Z" + "title": "fix: pass cfg to getMemoryEmbeddingProvider in memory-search resolution", + "updated_at": "2026-04-17T10:30:26Z" } ], "pairwise": [ { - "breadth_similarity": 0.225, - "concentration_similarity": 0.673, - "content_similarity": 0.682, - "left_pr_number": 64557, - "right_pr_number": 66798, + "breadth_similarity": 0.75, + "concentration_similarity": 1.0, + "content_similarity": 0.553, + "left_pr_number": 63848, + "right_pr_number": 68110, "shared_directories": [ - "src/agents/cli-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/cli-runner/bundle-mcp.ts" + "src/agents/memory-search.ts" ], - "similarity": 0.561, - "size_similarity": 0.184 + "similarity": 0.541, + "size_similarity": 0.196 } ], "pr_count": 2, "pr_numbers": [ - 64557, - 66798 + 63848, + 68110 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66798 + 68110 ], - "representative_pr_number": 64557, - "representative_title": "fix: exclude ephemeral loopback port from CLI session mcpConfigHash (closes #64386)", - "representative_url": "https://github.com/openclaw/openclaw/pull/64557", + "representative_pr_number": 63848, + "representative_title": "fix: pass cfg to getMemoryEmbeddingProvider in memory-search resolution", + "representative_url": "https://github.com/openclaw/openclaw/pull/63848", "shared_directories": [ - "src/agents/cli-runner", "src/agents", "src" ], "shared_filenames": [ - "src/agents/cli-runner/bundle-mcp.ts" + "src/agents/memory-search.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/cli-runner/bundle-mcp.ts`; representative PR #64557.", - "title": "Scope: fix: exclude ephemeral loopback port from CLI session mcpConfigHash (closes #64386)" + "summary": "2 open PRs share weighted file overlap around `src/agents/memory-search.ts`; representative PR #63848.", + "title": "Scope: fix: pass cfg to getMemoryEmbeddingProvider in memory-search resolution" }, { "authors": [ - "zqchris" + "anurag-bg-neu" ], - "average_similarity": 0.532, - "cluster_id": "pr-scope-64494-2", + "average_similarity": 0.521, + "cluster_id": "pr-scope-64913-2", "kind": "pr_scope", - "last_activity_at": "2026-04-15T22:16:35Z", + "last_activity_at": "2026-04-21T03:19:43Z", "outside_window_prs": [ { - "additions": 88, - "author": "bek91", - "changed_files": 2, - "created_at": "2026-04-10T20:34:48Z", + "additions": 10, + "author": "imadal1n", + "changed_files": 1, + "created_at": "2026-04-11T16:43:03Z", "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64494/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64494", + "files_url": "https://github.com/openclaw/openclaw/pull/64913/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64913", "merged": false, - "number": 64494, + "number": 64913, "state": "open", - "title": "fix: Wrap pathological session export lines", - "updated_at": "2026-04-10T21:42:32Z" + "title": "fix(ci): guard trusted pre-commit config fallback", + "updated_at": "2026-04-18T12:07:01Z" } ], "pairwise": [ { - "breadth_similarity": 0.367, - "concentration_similarity": 0.523, - "content_similarity": 0.601, - "left_pr_number": 64494, - "right_pr_number": 66548, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.332, + "left_pr_number": 64913, + "right_pr_number": 69567, "shared_directories": [ - "packages/memory-host-sdk/src/host", - "packages/memory-host-sdk/src", - "packages/memory-host-sdk", - "packages" + ".github/workflows", + ".github" ], "shared_filenames": [ - "packages/memory-host-sdk/src/host/session-files.test.ts", - "packages/memory-host-sdk/src/host/session-files.ts" + ".github/workflows/ci.yml" ], - "similarity": 0.532, - "size_similarity": 0.325 + "similarity": 0.521, + "size_similarity": 0.923 } ], "pr_count": 2, "pr_numbers": [ - 64494, - 66548 + 64913, + 69567 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66548 + 69567 ], - "representative_pr_number": 64494, - "representative_title": "fix: Wrap pathological session export lines", - "representative_url": "https://github.com/openclaw/openclaw/pull/64494", + "representative_pr_number": 64913, + "representative_title": "fix(ci): guard trusted pre-commit config fallback", + "representative_url": "https://github.com/openclaw/openclaw/pull/64913", "shared_directories": [ - "packages/memory-host-sdk/src/host", - "packages/memory-host-sdk/src", - "packages/memory-host-sdk", - "packages" + ".github/workflows", + ".github" ], "shared_filenames": [ - "packages/memory-host-sdk/src/host/session-files.test.ts", - "packages/memory-host-sdk/src/host/session-files.ts" + ".github/workflows/ci.yml" ], - "summary": "2 open PRs share weighted file overlap around `packages/memory-host-sdk/src/host/session-files.test.ts`, `packages/memory-host-sdk/src/host/session-files.ts`; representative PR #64494.", - "title": "Scope: fix: Wrap pathological session export lines" + "summary": "2 open PRs share weighted file overlap around `.github/workflows/ci.yml`; representative PR #64913.", + "title": "Scope: fix(ci): guard trusted pre-commit config fallback" }, { "authors": [ "Feelw00" ], - "average_similarity": 0.526, + "average_similarity": 0.517, "cluster_id": "pr-scope-65037-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T19:02:03Z", + "last_activity_at": "2026-04-21T03:13:03Z", "outside_window_prs": [ { "additions": 574, @@ -39862,7 +45390,7 @@ { "breadth_similarity": 0.472, "concentration_similarity": 0.923, - "content_similarity": 0.601, + "content_similarity": 0.588, "left_pr_number": 65037, "right_pr_number": 68669, "shared_directories": [ @@ -39875,7 +45403,7 @@ "src/agents/subagent-registry-run-manager.ts", "src/agents/subagent-registry.types.ts" ], - "similarity": 0.526, + "similarity": 0.517, "size_similarity": 0.077 } ], @@ -39898,1350 +45426,1310 @@ "shared_filenames": [ "src/agents/subagent-registry-lifecycle.test.ts", "src/agents/subagent-registry-lifecycle.ts", - "src/agents/subagent-registry.types.ts", - "src/agents/subagent-registry-run-manager.ts" + "src/agents/subagent-registry-run-manager.ts", + "src/agents/subagent-registry.types.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/subagent-registry-lifecycle.test.ts`, `src/agents/subagent-registry-lifecycle.ts`, `src/agents/subagent-registry.types.ts`; representative PR #65037.", + "summary": "2 open PRs share weighted file overlap around `src/agents/subagent-registry-lifecycle.test.ts`, `src/agents/subagent-registry-lifecycle.ts`, `src/agents/subagent-registry-run-manager.ts`; representative PR #65037.", "title": "Scope: fix(subagents): harden deferred completion delivery retry state" }, { "authors": [ - "yubingjiaocn" + "zoneblaze" ], - "average_similarity": 0.517, - "cluster_id": "pr-scope-63013-2", + "average_similarity": 0.494, + "cluster_id": "pr-scope-53275-2", "kind": "pr_scope", - "last_activity_at": "2026-04-13T02:56:05Z", + "last_activity_at": "2026-04-17T15:41:04Z", "outside_window_prs": [ { - "additions": 646, - "author": "YitingOU", - "changed_files": 9, - "created_at": "2026-04-08T07:59:19Z", - "deletions": 20, + "additions": 2, + "author": "JunerLee", + "changed_files": 1, + "created_at": "2026-03-24T01:33:25Z", + "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63013/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63013", + "files_url": "https://github.com/openclaw/openclaw/pull/53275/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53275", "merged": false, - "number": 63013, + "number": 53275, "state": "open", - "title": "fix(plugins): preserve explicit provider runtime ownership resolution", - "updated_at": "2026-04-11T03:04:45Z" + "title": "fix(discord): add media-gallery and file block hints for models", + "updated_at": "2026-03-24T20:15:32Z" } ], "pairwise": [ { - "breadth_similarity": 0.278, - "concentration_similarity": 0.997, - "content_similarity": 0.605, - "left_pr_number": 63013, - "right_pr_number": 65497, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.406, + "left_pr_number": 53275, + "right_pr_number": 68179, "shared_directories": [ - "src/plugins", - "src" + "extensions/discord/src", + "extensions/discord", + "extensions" ], "shared_filenames": [ - "src/plugins/providers.runtime.ts", - "src/plugins/providers.test.ts" + "extensions/discord/src/channel.ts" ], - "similarity": 0.517, - "size_similarity": 0.107 + "similarity": 0.494, + "size_similarity": 0.4 } ], "pr_count": 2, "pr_numbers": [ - 63013, - 65497 + 53275, + 68179 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65497 + 68179 ], - "representative_pr_number": 63013, - "representative_title": "fix(plugins): preserve explicit provider runtime ownership resolution", - "representative_url": "https://github.com/openclaw/openclaw/pull/63013", + "representative_pr_number": 53275, + "representative_title": "fix(discord): add media-gallery and file block hints for models", + "representative_url": "https://github.com/openclaw/openclaw/pull/53275", "shared_directories": [ - "src/plugins", - "src" + "extensions/discord/src", + "extensions/discord", + "extensions" ], "shared_filenames": [ - "src/plugins/providers.runtime.ts", - "src/plugins/providers.test.ts" + "extensions/discord/src/channel.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/plugins/providers.runtime.ts`, `src/plugins/providers.test.ts`; representative PR #63013.", - "title": "Scope: fix(plugins): preserve explicit provider runtime ownership resolution" + "summary": "2 open PRs share weighted file overlap around `extensions/discord/src/channel.ts`; representative PR #53275.", + "title": "Scope: fix(discord): add media-gallery and file block hints for models" }, { "authors": [ - "zqchris" + "richardclawbot" ], - "average_similarity": 0.508, - "cluster_id": "pr-scope-53526-2", + "average_similarity": 0.492, + "cluster_id": "pr-scope-59717-2", "kind": "pr_scope", - "last_activity_at": "2026-04-12T16:24:34Z", + "last_activity_at": "2026-04-19T08:01:48Z", "outside_window_prs": [ { - "additions": 25, - "author": "ttfnrob", - "changed_files": 2, - "created_at": "2026-03-24T07:50:55Z", - "deletions": 3, + "additions": 50, + "author": "ayeshakhalid192007-dev", + "changed_files": 4, + "created_at": "2026-04-02T14:23:29Z", + "deletions": 25, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53526/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53526", + "files_url": "https://github.com/openclaw/openclaw/pull/59717/files", + "html_url": "https://github.com/openclaw/openclaw/pull/59717", "merged": false, - "number": 53526, + "number": 59717, "state": "open", - "title": "fix: group and thread sessions default to idle reset instead of daily", - "updated_at": "2026-03-24T20:15:30Z" + "title": "feat(acpx): add allow option to nonInteractivePermissions", + "updated_at": "2026-04-17T07:12:43Z" } ], "pairwise": [ { - "breadth_similarity": 0.268, - "concentration_similarity": 0.679, - "content_similarity": 0.583, - "left_pr_number": 53526, - "right_pr_number": 65386, + "breadth_similarity": 0.292, + "concentration_similarity": 0.653, + "content_similarity": 0.5, + "left_pr_number": 59717, + "right_pr_number": 68872, "shared_directories": [ - "src/config/sessions", - "src/config", - "src" + "docs/tools", + "docs" ], "shared_filenames": [ - "src/config/sessions/reset.ts", - "src/config/sessions/sessions.test.ts" + "docs/tools/acp-agents.md" ], - "similarity": 0.508, - "size_similarity": 0.257 + "similarity": 0.492, + "size_similarity": 0.533 } ], "pr_count": 2, "pr_numbers": [ - 53526, - 65386 + 59717, + 68872 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65386 + 68872 ], - "representative_pr_number": 53526, - "representative_title": "fix: group and thread sessions default to idle reset instead of daily", - "representative_url": "https://github.com/openclaw/openclaw/pull/53526", + "representative_pr_number": 59717, + "representative_title": "feat(acpx): add allow option to nonInteractivePermissions", + "representative_url": "https://github.com/openclaw/openclaw/pull/59717", "shared_directories": [ - "src/config/sessions", - "src/config", - "src" + "docs/tools", + "docs" ], "shared_filenames": [ - "src/config/sessions/reset.ts", - "src/config/sessions/sessions.test.ts" + "docs/tools/acp-agents.md" ], - "summary": "2 open PRs share weighted file overlap around `src/config/sessions/reset.ts`, `src/config/sessions/sessions.test.ts`; representative PR #53526.", - "title": "Scope: fix: group and thread sessions default to idle reset instead of daily" + "summary": "2 open PRs share weighted file overlap around `docs/tools/acp-agents.md`; representative PR #59717.", + "title": "Scope: feat(acpx): add allow option to nonInteractivePermissions" }, { "authors": [ - "martingarramon" + "sk7n4k3d" ], - "average_similarity": 0.501, - "cluster_id": "pr-scope-64365-2", + "average_similarity": 0.488, + "cluster_id": "pr-scope-66673-2", "kind": "pr_scope", - "last_activity_at": "2026-04-12T14:08:00Z", + "last_activity_at": "2026-04-20T12:24:00Z", "outside_window_prs": [ { - "additions": 66, - "author": "tony88331", - "changed_files": 7, - "created_at": "2026-04-10T15:07:19Z", - "deletions": 5, + "additions": 804, + "author": "samzong", + "changed_files": 11, + "created_at": "2026-04-14T16:32:26Z", + "deletions": 16, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64365/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64365", + "files_url": "https://github.com/openclaw/openclaw/pull/66673/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66673", "merged": false, - "number": 64365, + "number": 66673, "state": "open", - "title": "feat(slack): add replyBroadcast parameter for thread reply channel broadcast", - "updated_at": "2026-04-13T15:46:48Z" + "title": "[Feat] Gateway: add doctor.memory.remHarness probe", + "updated_at": "2026-04-15T05:52:40Z" } ], "pairwise": [ { - "breadth_similarity": 0.393, - "concentration_similarity": 0.732, - "content_similarity": 0.493, - "left_pr_number": 64365, - "right_pr_number": 65378, + "breadth_similarity": 0.336, + "concentration_similarity": 0.786, + "content_similarity": 0.54, + "left_pr_number": 66673, + "right_pr_number": 69322, "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/gateway/server-methods", + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/slack/src/action-runtime.test.ts", - "extensions/slack/src/action-runtime.ts" + "src/gateway/server-methods/doctor.test.ts", + "src/gateway/server-methods/doctor.ts" ], - "similarity": 0.501, - "size_similarity": 0.534 + "similarity": 0.488, + "size_similarity": 0.245 } ], "pr_count": 2, "pr_numbers": [ - 64365, - 65378 + 66673, + 69322 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65378 + 69322 ], - "representative_pr_number": 64365, - "representative_title": "feat(slack): add replyBroadcast parameter for thread reply channel broadcast", - "representative_url": "https://github.com/openclaw/openclaw/pull/64365", + "representative_pr_number": 66673, + "representative_title": "[Feat] Gateway: add doctor.memory.remHarness probe", + "representative_url": "https://github.com/openclaw/openclaw/pull/66673", "shared_directories": [ - "extensions/slack/src", - "extensions/slack", - "extensions" + "src/gateway/server-methods", + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/slack/src/action-runtime.test.ts", - "extensions/slack/src/action-runtime.ts" + "src/gateway/server-methods/doctor.test.ts", + "src/gateway/server-methods/doctor.ts" ], - "summary": "2 open PRs share weighted file overlap around `extensions/slack/src/action-runtime.test.ts`, `extensions/slack/src/action-runtime.ts`; representative PR #64365.", - "title": "Scope: feat(slack): add replyBroadcast parameter for thread reply channel broadcast" + "summary": "2 open PRs share weighted file overlap around `src/gateway/server-methods/doctor.test.ts`, `src/gateway/server-methods/doctor.ts`; representative PR #66673.", + "title": "Scope: [Feat] Gateway: add doctor.memory.remHarness probe" }, { "authors": [ - "zoneblaze" + "likewen-tech" ], - "average_similarity": 0.494, - "cluster_id": "pr-scope-53275-2", + "average_similarity": 0.48, + "cluster_id": "pr-scope-53522-2", "kind": "pr_scope", - "last_activity_at": "2026-04-17T15:41:04Z", + "last_activity_at": "2026-04-18T10:04:30Z", "outside_window_prs": [ { - "additions": 2, - "author": "JunerLee", - "changed_files": 1, - "created_at": "2026-03-24T01:33:25Z", - "deletions": 0, + "additions": 303, + "author": "08820048", + "changed_files": 16, + "created_at": "2026-03-24T07:48:22Z", + "deletions": 27, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53275/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53275", + "files_url": "https://github.com/openclaw/openclaw/pull/53522/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53522", "merged": false, - "number": 53275, + "number": 53522, "state": "open", - "title": "fix(discord): add media-gallery and file block hints for models", - "updated_at": "2026-03-24T20:15:32Z" + "title": "[codex] Fix web fetch schema, dual-stack status diagnosis, and Synology webhook ACKs", + "updated_at": "2026-03-24T20:15:30Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.405, - "left_pr_number": 53275, - "right_pr_number": 68179, + "breadth_similarity": 0.163, + "concentration_similarity": 0.376, + "content_similarity": 0.501, + "left_pr_number": 53522, + "right_pr_number": 68506, "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/commands/status-all", + "src/commands", + "src" ], "shared_filenames": [ - "extensions/discord/src/channel.ts" + "src/commands/status-all/diagnosis.test.ts", + "src/commands/status-all/diagnosis.ts" ], - "similarity": 0.494, - "size_similarity": 0.4 + "similarity": 0.48, + "size_similarity": 0.624 } ], "pr_count": 2, "pr_numbers": [ - 53275, - 68179 + 53522, + 68506 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68179 + 68506 ], - "representative_pr_number": 53275, - "representative_title": "fix(discord): add media-gallery and file block hints for models", - "representative_url": "https://github.com/openclaw/openclaw/pull/53275", + "representative_pr_number": 53522, + "representative_title": "[codex] Fix web fetch schema, dual-stack status diagnosis, and Synology webhook ACKs", + "representative_url": "https://github.com/openclaw/openclaw/pull/53522", "shared_directories": [ - "extensions/discord/src", - "extensions/discord", - "extensions" + "src/commands/status-all", + "src/commands", + "src" ], "shared_filenames": [ - "extensions/discord/src/channel.ts" + "src/commands/status-all/diagnosis.test.ts", + "src/commands/status-all/diagnosis.ts" ], - "summary": "2 open PRs share weighted file overlap around `extensions/discord/src/channel.ts`; representative PR #53275.", - "title": "Scope: fix(discord): add media-gallery and file block hints for models" + "summary": "2 open PRs share weighted file overlap around `src/commands/status-all/diagnosis.test.ts`, `src/commands/status-all/diagnosis.ts`; representative PR #53522.", + "title": "Scope: [codex] Fix web fetch schema, dual-stack status diagnosis, and Synology webhook ACKs" }, { "authors": [ - "rvajustin" + "BradGroux" ], - "average_similarity": 0.487, - "cluster_id": "pr-scope-36489-2", + "average_similarity": 0.476, + "cluster_id": "pr-scope-66341-2", "kind": "pr_scope", - "last_activity_at": "2026-04-17T18:01:24Z", + "last_activity_at": "2026-04-20T06:42:35Z", "outside_window_prs": [ { - "additions": 436, - "author": "Rami-Troudi", - "changed_files": 2, - "created_at": "2026-03-05T17:15:16Z", - "deletions": 2, + "additions": 723, + "author": "TOMUIV", + "changed_files": 17, + "created_at": "2026-04-14T04:32:33Z", + "deletions": 481, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36489/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36489", + "files_url": "https://github.com/openclaw/openclaw/pull/66341/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66341", "merged": false, - "number": 36489, + "number": 66341, "state": "open", - "title": "gateway: keep health runtime channel state consistent with selected account", - "updated_at": "2026-04-18T04:22:00Z" + "title": "fix(cron): lower cron.add scope from admin to write with scope ceiling", + "updated_at": "2026-04-15T14:22:19Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.459, - "left_pr_number": 36489, - "right_pr_number": 68235, + "breadth_similarity": 0.411, + "concentration_similarity": 0.792, + "content_similarity": 0.485, + "left_pr_number": 66341, + "right_pr_number": 69217, "shared_directories": [ + "extensions/qa-lab/web/src", + "extensions/qa-lab/web", "src/gateway/server-methods", + "extensions/qa-lab", + "src/agents", "src/gateway", + "extensions", "src" ], "shared_filenames": [ - "src/gateway/server-methods/server-methods.test.ts" + "extensions/qa-lab/web/src/ui-render.ts" ], - "similarity": 0.487, - "size_similarity": 0.107 + "similarity": 0.476, + "size_similarity": 0.376 } ], "pr_count": 2, "pr_numbers": [ - 36489, - 68235 + 66341, + 69217 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68235 + 69217 ], - "representative_pr_number": 36489, - "representative_title": "gateway: keep health runtime channel state consistent with selected account", - "representative_url": "https://github.com/openclaw/openclaw/pull/36489", + "representative_pr_number": 66341, + "representative_title": "fix(cron): lower cron.add scope from admin to write with scope ceiling", + "representative_url": "https://github.com/openclaw/openclaw/pull/66341", "shared_directories": [ + "extensions/qa-lab/web/src", + "extensions/qa-lab/web", "src/gateway/server-methods", + "extensions/qa-lab", "src/gateway", + "src/agents", + "extensions", "src" ], "shared_filenames": [ - "src/gateway/server-methods/server-methods.test.ts" + "extensions/qa-lab/web/src/ui-render.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/gateway/server-methods/server-methods.test.ts`; representative PR #36489.", - "title": "Scope: gateway: keep health runtime channel state consistent with selected account" + "summary": "2 open PRs share weighted file overlap around `extensions/qa-lab/web/src/ui-render.ts`; representative PR #66341.", + "title": "Scope: fix(cron): lower cron.add scope from admin to write with scope ceiling" }, { "authors": [ - "infocentr" + "tmlxrd" ], - "average_similarity": 0.486, - "cluster_id": "pr-scope-37377-2", + "average_similarity": 0.473, + "cluster_id": "pr-scope-66466-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T09:31:18Z", + "last_activity_at": "2026-04-16T23:11:30Z", "outside_window_prs": [ { - "additions": 117, - "author": "Will-Wright", - "changed_files": 4, - "created_at": "2026-03-06T07:20:48Z", - "deletions": 1, + "additions": 41, + "author": "yangxiyucs", + "changed_files": 3, + "created_at": "2026-04-14T09:47:30Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37377/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37377", + "files_url": "https://github.com/openclaw/openclaw/pull/66466/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66466", "merged": false, - "number": 37377, + "number": 66466, "state": "open", - "title": "feat: add command-exec frontmatter for deterministic skill dispatch", - "updated_at": "2026-04-19T04:32:54Z" + "title": "fix(openai): clarify provider setup wizard hint", + "updated_at": "2026-04-14T14:51:19Z" } ], "pairwise": [ { - "breadth_similarity": 0.486, - "concentration_similarity": 0.673, - "content_similarity": 0.398, - "left_pr_number": 37377, - "right_pr_number": 68495, + "breadth_similarity": 0.714, + "concentration_similarity": 0.904, + "content_similarity": 0.32, + "left_pr_number": 66466, + "right_pr_number": 67848, "shared_directories": [ - "src/agents/skills", - "src/auto-reply/reply", - "src/agents", - "src/auto-reply", + "extensions/openai", + "src/commands", + "extensions", "src" ], "shared_filenames": [ - "src/agents/skills/types.ts", - "src/agents/skills/workspace.ts", - "src/auto-reply/reply/get-reply-inline-actions.ts" + "extensions/openai/openai-provider.ts", + "extensions/openai/openclaw.plugin.json", + "src/commands/auth-choice-options.test.ts" ], - "similarity": 0.486, - "size_similarity": 0.837 + "similarity": 0.473, + "size_similarity": 0.88 } ], "pr_count": 2, "pr_numbers": [ - 37377, - 68495 + 66466, + 67848 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68495 + 67848 ], - "representative_pr_number": 37377, - "representative_title": "feat: add command-exec frontmatter for deterministic skill dispatch", - "representative_url": "https://github.com/openclaw/openclaw/pull/37377", + "representative_pr_number": 66466, + "representative_title": "fix(openai): clarify provider setup wizard hint", + "representative_url": "https://github.com/openclaw/openclaw/pull/66466", "shared_directories": [ - "src/agents/skills", - "src/auto-reply/reply", - "src/auto-reply", - "src/agents", + "extensions/openai", + "src/commands", + "extensions", "src" ], "shared_filenames": [ - "src/auto-reply/reply/get-reply-inline-actions.ts", - "src/agents/skills/types.ts", - "src/agents/skills/workspace.ts" + "extensions/openai/openclaw.plugin.json", + "extensions/openai/openai-provider.ts", + "src/commands/auth-choice-options.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/get-reply-inline-actions.ts`, `src/agents/skills/types.ts`, `src/agents/skills/workspace.ts`; representative PR #37377.", - "title": "Scope: feat: add command-exec frontmatter for deterministic skill dispatch" + "summary": "2 open PRs share weighted file overlap around `extensions/openai/openclaw.plugin.json`, `extensions/openai/openai-provider.ts`, `src/commands/auth-choice-options.test.ts`; representative PR #66466.", + "title": "Scope: fix(openai): clarify provider setup wizard hint" }, { "authors": [ - "likewen-tech" + "hddevteam" ], - "average_similarity": 0.481, - "cluster_id": "pr-scope-62789-2", + "average_similarity": 0.459, + "cluster_id": "pr-scope-59294-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T12:03:39Z", + "last_activity_at": "2026-04-19T12:02:11Z", "outside_window_prs": [ { - "additions": 1107, - "author": "rocdesu", - "changed_files": 16, - "created_at": "2026-04-08T00:58:09Z", - "deletions": 18, + "additions": 569, + "author": "atharva-getboon", + "changed_files": 47, + "created_at": "2026-04-01T23:42:46Z", + "deletions": 178, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/62789/files", - "html_url": "https://github.com/openclaw/openclaw/pull/62789", + "files_url": "https://github.com/openclaw/openclaw/pull/59294/files", + "html_url": "https://github.com/openclaw/openclaw/pull/59294", "merged": false, - "number": 62789, + "number": 59294, "state": "open", - "title": "cron: add command payload execution engine", - "updated_at": "2026-04-11T23:57:32Z" + "title": "fix(msteams): isolate thread sessions, outbound targeting, and attachment resolution", + "updated_at": "2026-04-19T21:17:10Z" } ], "pairwise": [ { - "breadth_similarity": 0.146, - "concentration_similarity": 0.684, - "content_similarity": 0.603, - "left_pr_number": 62789, - "right_pr_number": 68535, + "breadth_similarity": 0.403, + "concentration_similarity": 0.977, + "content_similarity": 0.314, + "left_pr_number": 59294, + "right_pr_number": 67174, "shared_directories": [ - "src/gateway", + "extensions/msteams/src/monitor-handler", + "extensions/msteams/src", + "extensions/msteams", + "src/plugin-sdk", + "extensions", "src" ], "shared_filenames": [ - "src/gateway/server-cron.ts", - "src/gateway/server.cron.test.ts" + "extensions/msteams/src/monitor-handler/message-handler.ts" ], - "similarity": 0.481, - "size_similarity": 0.069 + "similarity": 0.459, + "size_similarity": 0.996 } ], "pr_count": 2, "pr_numbers": [ - 62789, - 68535 + 59294, + 67174 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68535 + 67174 ], - "representative_pr_number": 62789, - "representative_title": "cron: add command payload execution engine", - "representative_url": "https://github.com/openclaw/openclaw/pull/62789", + "representative_pr_number": 59294, + "representative_title": "fix(msteams): isolate thread sessions, outbound targeting, and attachment resolution", + "representative_url": "https://github.com/openclaw/openclaw/pull/59294", "shared_directories": [ - "src/gateway", + "extensions/msteams/src/monitor-handler", + "extensions/msteams/src", + "extensions/msteams", + "src/plugin-sdk", + "extensions", "src" ], "shared_filenames": [ - "src/gateway/server.cron.test.ts", - "src/gateway/server-cron.ts" + "extensions/msteams/src/monitor-handler/message-handler.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/gateway/server.cron.test.ts`, `src/gateway/server-cron.ts`; representative PR #62789.", - "title": "Scope: cron: add command payload execution engine" + "summary": "2 open PRs share weighted file overlap around `extensions/msteams/src/monitor-handler/message-handler.ts`; representative PR #59294.", + "title": "Scope: fix(msteams): isolate thread sessions, outbound targeting, and attachment resolution" }, { "authors": [ - "HOYALIM" + "donlaiq" ], - "average_similarity": 0.474, - "cluster_id": "pr-scope-64700-2", + "average_similarity": 0.457, + "cluster_id": "pr-scope-53634-2", "kind": "pr_scope", - "last_activity_at": "2026-04-14T02:58:33Z", + "last_activity_at": "2026-04-16T19:49:48Z", "outside_window_prs": [ { - "additions": 8, - "author": "ImLukeF", - "changed_files": 3, - "created_at": "2026-04-11T07:34:48Z", - "deletions": 5, + "additions": 46, + "author": "w-sss", + "changed_files": 1, + "created_at": "2026-03-24T11:06:40Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64700/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64700", + "files_url": "https://github.com/openclaw/openclaw/pull/53634/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53634", "merged": false, - "number": 64700, + "number": 53634, "state": "open", - "title": "test: fix stale CI shard regressions", - "updated_at": "2026-04-11T07:43:17Z" + "title": "fix: update fast-xml-parser to 5.5.8", + "updated_at": "2026-03-24T20:15:29Z" } ], "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 0.83, - "content_similarity": 0.312, - "left_pr_number": 64700, - "right_pr_number": 65609, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.429, + "left_pr_number": 53634, + "right_pr_number": 67795, "shared_directories": [ - "src/infra/outbound", - "src/infra", - "src" + "scripts" ], "shared_filenames": [ - "src/infra/outbound/target-resolver.test.ts" + "scripts/install.sh" ], - "similarity": 0.474, - "size_similarity": 0.929 + "similarity": 0.457, + "size_similarity": 0.043 } ], "pr_count": 2, "pr_numbers": [ - 64700, - 65609 + 53634, + 67795 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65609 + 67795 ], - "representative_pr_number": 64700, - "representative_title": "test: fix stale CI shard regressions", - "representative_url": "https://github.com/openclaw/openclaw/pull/64700", + "representative_pr_number": 53634, + "representative_title": "fix: update fast-xml-parser to 5.5.8", + "representative_url": "https://github.com/openclaw/openclaw/pull/53634", "shared_directories": [ - "src/infra/outbound", - "src/infra", - "src" + "scripts" ], "shared_filenames": [ - "src/infra/outbound/target-resolver.test.ts" + "scripts/install.sh" ], - "summary": "2 open PRs share weighted file overlap around `src/infra/outbound/target-resolver.test.ts`; representative PR #64700.", - "title": "Scope: test: fix stale CI shard regressions" + "summary": "2 open PRs share weighted file overlap around `scripts/install.sh`; representative PR #53634.", + "title": "Scope: fix: update fast-xml-parser to 5.5.8" }, { "authors": [ - "leonardsellem" + "wzhgba" ], - "average_similarity": 0.472, - "cluster_id": "pr-scope-63847-2", + "average_similarity": 0.453, + "cluster_id": "pr-scope-66687-2", "kind": "pr_scope", - "last_activity_at": "2026-04-13T11:25:23Z", + "last_activity_at": "2026-04-17T09:51:28Z", "outside_window_prs": [ { - "additions": 13, - "author": "zozo123", - "changed_files": 2, - "created_at": "2026-04-09T16:34:16Z", - "deletions": 0, + "additions": 280, + "author": "wzhgba", + "changed_files": 11, + "created_at": "2026-04-14T16:57:48Z", + "deletions": 7, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63847/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63847", + "files_url": "https://github.com/openclaw/openclaw/pull/66687/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66687", "merged": false, - "number": 63847, + "number": 66687, "state": "open", - "title": "fix(cli): load plugins for memory commands so embedding providers register", - "updated_at": "2026-04-12T07:48:24Z" + "title": "feat(cache-trace): capture stream-context tools with opt-in payload controls", + "updated_at": "2026-04-17T07:05:38Z" } ], "pairwise": [ { - "breadth_similarity": 0.5, - "concentration_similarity": 0.596, - "content_similarity": 0.531, - "left_pr_number": 63847, - "right_pr_number": 65800, + "breadth_similarity": 0.191, + "concentration_similarity": 0.85, + "content_similarity": 0.512, + "left_pr_number": 66687, + "right_pr_number": 67011, "shared_directories": [ - "src/cli", + "src/agents", "src" ], "shared_filenames": [ - "src/cli/command-catalog.ts", - "src/cli/command-startup-policy.test.ts" + "src/agents/cache-trace.test.ts" ], - "similarity": 0.472, - "size_similarity": 0.138 + "similarity": 0.453, + "size_similarity": 0.216 } ], "pr_count": 2, "pr_numbers": [ - 63847, - 65800 + 66687, + 67011 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65800 + 67011 ], - "representative_pr_number": 63847, - "representative_title": "fix(cli): load plugins for memory commands so embedding providers register", - "representative_url": "https://github.com/openclaw/openclaw/pull/63847", + "representative_pr_number": 66687, + "representative_title": "feat(cache-trace): capture stream-context tools with opt-in payload controls", + "representative_url": "https://github.com/openclaw/openclaw/pull/66687", "shared_directories": [ - "src/cli", + "src/agents", "src" ], "shared_filenames": [ - "src/cli/command-startup-policy.test.ts", - "src/cli/command-catalog.ts" + "src/agents/cache-trace.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/cli/command-startup-policy.test.ts`, `src/cli/command-catalog.ts`; representative PR #63847.", - "title": "Scope: fix(cli): load plugins for memory commands so embedding providers register" + "summary": "2 open PRs share weighted file overlap around `src/agents/cache-trace.test.ts`; representative PR #66687.", + "title": "Scope: feat(cache-trace): capture stream-context tools with opt-in payload controls" }, { "authors": [ - "CyberRaccoonTeam" + "hclsys" ], - "average_similarity": 0.463, - "cluster_id": "pr-scope-62238-2", + "average_similarity": 0.449, + "cluster_id": "pr-scope-64344-2", "kind": "pr_scope", - "last_activity_at": "2026-04-19T02:36:50Z", + "last_activity_at": "2026-04-21T03:00:16Z", "outside_window_prs": [ { - "additions": 648, - "author": "BAIS1C", - "changed_files": 14, - "created_at": "2026-04-07T02:06:39Z", - "deletions": 11, + "additions": 132, + "author": "acinader", + "changed_files": 5, + "created_at": "2026-04-10T14:12:10Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/62238/files", - "html_url": "https://github.com/openclaw/openclaw/pull/62238", + "files_url": "https://github.com/openclaw/openclaw/pull/64344/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64344", "merged": false, - "number": 62238, + "number": 64344, "state": "open", - "title": "kas", - "updated_at": "2026-04-18T05:07:12Z" + "title": "fix(secrets): distinguish ${ENV_VAR} from plaintext in audit", + "updated_at": "2026-04-11T14:23:17Z" } ], "pairwise": [ { - "breadth_similarity": 0.429, - "concentration_similarity": 0.366, - "content_similarity": 0.39, - "left_pr_number": 62238, - "right_pr_number": 66387, + "breadth_similarity": 0.533, + "concentration_similarity": 0.975, + "content_similarity": 0.449, + "left_pr_number": 64344, + "right_pr_number": 69555, "shared_directories": [ - "ui/src/ui/views", - "ui/src/styles", - "ui/src/ui", - "ui/src", - "ui" + "src/secrets", + "src" ], "shared_filenames": [ - "ui/index.html", - "ui/src/styles/base.css", - "ui/src/ui/theme.ts", - "ui/src/ui/views/config.ts" + "src/secrets/audit.test.ts" ], - "similarity": 0.463, - "size_similarity": 0.857 + "similarity": 0.449, + "size_similarity": 0.216 } ], "pr_count": 2, "pr_numbers": [ - 62238, - 66387 + 64344, + 69555 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66387 + 69555 ], - "representative_pr_number": 62238, - "representative_title": "kas", - "representative_url": "https://github.com/openclaw/openclaw/pull/62238", + "representative_pr_number": 64344, + "representative_title": "fix(secrets): distinguish ${ENV_VAR} from plaintext in audit", + "representative_url": "https://github.com/openclaw/openclaw/pull/64344", "shared_directories": [ - "ui/src/ui/views", - "ui/src/styles", - "ui/src/ui", - "ui/src", - "ui" + "src/secrets", + "src" ], "shared_filenames": [ - "ui/src/ui/theme.ts", - "ui/index.html", - "ui/src/styles/base.css", - "ui/src/ui/views/config.ts" + "src/secrets/audit.test.ts" ], - "summary": "2 open PRs share weighted file overlap around `ui/src/ui/theme.ts`, `ui/index.html`, `ui/src/styles/base.css`; representative PR #62238.", - "title": "Scope: kas" + "summary": "2 open PRs share weighted file overlap around `src/secrets/audit.test.ts`; representative PR #64344.", + "title": "Scope: fix(secrets): distinguish ${ENV_VAR} from plaintext in audit" }, { "authors": [ - "phxwang" + "foxer0952" ], - "average_similarity": 0.457, - "cluster_id": "pr-scope-35973-2", + "average_similarity": 0.448, + "cluster_id": "pr-scope-66278-2", "kind": "pr_scope", - "last_activity_at": "2026-04-12T14:26:15Z", + "last_activity_at": "2026-04-18T10:37:24Z", "outside_window_prs": [ { - "additions": 68, - "author": "biwang75678", + "additions": 848, + "author": "Lellansin", "changed_files": 2, - "created_at": "2026-03-05T11:05:23Z", - "deletions": 15, + "created_at": "2026-04-14T02:02:25Z", + "deletions": 9, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/35973/files", - "html_url": "https://github.com/openclaw/openclaw/pull/35973", + "files_url": "https://github.com/openclaw/openclaw/pull/66278/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66278", "merged": false, - "number": 35973, + "number": 66278, "state": "open", - "title": "feat(feishu): support form_value in card action handler", - "updated_at": "2026-04-17T04:31:41Z" + "title": "fix(gateway): align OpenAI chat completions tool protocol", + "updated_at": "2026-04-14T02:17:48Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.356, - "left_pr_number": 35973, - "right_pr_number": 65392, + "breadth_similarity": 0.417, + "concentration_similarity": 0.773, + "content_similarity": 0.388, + "left_pr_number": 66278, + "right_pr_number": 68435, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/feishu/src/card-action.ts" + "src/gateway/openai-http.ts" ], - "similarity": 0.457, - "size_similarity": 0.386 + "similarity": 0.448, + "size_similarity": 0.64 } ], "pr_count": 2, "pr_numbers": [ - 35973, - 65392 + 66278, + 68435 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65392 + 68435 ], - "representative_pr_number": 35973, - "representative_title": "feat(feishu): support form_value in card action handler", - "representative_url": "https://github.com/openclaw/openclaw/pull/35973", + "representative_pr_number": 66278, + "representative_title": "fix(gateway): align OpenAI chat completions tool protocol", + "representative_url": "https://github.com/openclaw/openclaw/pull/66278", "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "src/gateway", + "src" ], "shared_filenames": [ - "extensions/feishu/src/card-action.ts" + "src/gateway/openai-http.ts" ], - "summary": "2 open PRs share weighted file overlap around `extensions/feishu/src/card-action.ts`; representative PR #35973.", - "title": "Scope: feat(feishu): support form_value in card action handler" + "summary": "2 open PRs share weighted file overlap around `src/gateway/openai-http.ts`; representative PR #66278.", + "title": "Scope: fix(gateway): align OpenAI chat completions tool protocol" }, { "authors": [ - "seanniu93" + "visionik" ], - "average_similarity": 0.456, - "cluster_id": "pr-scope-36070-2", + "average_similarity": 0.444, + "cluster_id": "pr-scope-65628-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T17:29:33Z", + "last_activity_at": "2026-04-15T03:47:01Z", "outside_window_prs": [ { - "additions": 1774, - "author": "Ciward", - "changed_files": 20, - "created_at": "2026-03-05T12:10:29Z", - "deletions": 547, + "additions": 277, + "author": "hxy91819", + "changed_files": 2, + "created_at": "2026-04-13T01:07:07Z", + "deletions": 26, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36070/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36070", + "files_url": "https://github.com/openclaw/openclaw/pull/65628/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65628", "merged": false, - "number": 36070, + "number": 65628, "state": "open", - "title": "feat(gateway): resume inflight agent runs after gateway restart", - "updated_at": "2026-04-17T04:32:15Z" + "title": "feat(skills): add discussion_comment support to secret-scanning skill", + "updated_at": "2026-04-14T16:18:51Z" } ], "pairwise": [ { - "breadth_similarity": 0.85, - "concentration_similarity": 0.772, - "content_similarity": 0.284, - "left_pr_number": 36070, - "right_pr_number": 68450, + "breadth_similarity": 0.163, + "concentration_similarity": 0.686, + "content_similarity": 0.451, + "left_pr_number": 65628, + "right_pr_number": 66968, "shared_directories": [ - "src/auto-reply/reply", - "src/agents", - "src/auto-reply", - "src/infra", - "src" + ".agents/skills/openclaw-secret-scanning-maintainer/scripts", + ".agents/skills/openclaw-secret-scanning-maintainer", + ".agents/skills", + ".agents" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.ts" + ".agents/skills/openclaw-secret-scanning-maintainer/scripts/secret-scanning.mjs" ], - "similarity": 0.456, - "size_similarity": 0.89 + "similarity": 0.444, + "size_similarity": 0.521 } ], "pr_count": 2, "pr_numbers": [ - 36070, - 68450 + 65628, + 66968 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68450 + 66968 ], - "representative_pr_number": 36070, - "representative_title": "feat(gateway): resume inflight agent runs after gateway restart", - "representative_url": "https://github.com/openclaw/openclaw/pull/36070", + "representative_pr_number": 65628, + "representative_title": "feat(skills): add discussion_comment support to secret-scanning skill", + "representative_url": "https://github.com/openclaw/openclaw/pull/65628", "shared_directories": [ - "src/auto-reply/reply", - "src/infra", - "src/auto-reply", - "src/agents", - "src" + ".agents/skills/openclaw-secret-scanning-maintainer/scripts", + ".agents/skills/openclaw-secret-scanning-maintainer", + ".agents/skills", + ".agents" ], "shared_filenames": [ - "src/auto-reply/reply/agent-runner-execution.ts" + ".agents/skills/openclaw-secret-scanning-maintainer/scripts/secret-scanning.mjs" ], - "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/agent-runner-execution.ts`; representative PR #36070.", - "title": "Scope: feat(gateway): resume inflight agent runs after gateway restart" + "summary": "2 open PRs share weighted file overlap around `.agents/skills/openclaw-secret-scanning-maintainer/scripts/secret-scanning.mjs`; representative PR #65628.", + "title": "Scope: feat(skills): add discussion_comment support to secret-scanning skill" }, { "authors": [ - "OwenYWT" + "JustInCache" ], - "average_similarity": 0.448, - "cluster_id": "pr-scope-53303-2", + "average_similarity": 0.427, + "cluster_id": "pr-scope-65452-2", "kind": "pr_scope", - "last_activity_at": "2026-04-12T14:11:56Z", + "last_activity_at": "2026-04-20T07:26:45Z", "outside_window_prs": [ { - "additions": 59, - "author": "Pan-Binghong", - "changed_files": 5, - "created_at": "2026-03-24T02:18:16Z", - "deletions": 25, + "additions": 40, + "author": "apocalypse9949", + "changed_files": 2, + "created_at": "2026-04-12T16:23:58Z", + "deletions": 10, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53303/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53303", + "files_url": "https://github.com/openclaw/openclaw/pull/65452/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65452", "merged": false, - "number": 53303, + "number": 65452, "state": "open", - "title": "fix: show cost estimate for providers with explicit cost config regardless of auth method", - "updated_at": "2026-03-24T20:15:31Z" + "title": " [security fix] Fix SQL injection in memory schema management", + "updated_at": "2026-04-13T10:48:32Z" } ], "pairwise": [ { - "breadth_similarity": 0.367, - "concentration_similarity": 0.655, - "content_similarity": 0.427, - "left_pr_number": 53303, - "right_pr_number": 65381, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.233, + "left_pr_number": 65452, + "right_pr_number": 69059, "shared_directories": [ - "src/auto-reply", + "packages/memory-host-sdk/src/host", + "packages/memory-host-sdk/src", + "src/memory-host-sdk/host", + "packages/memory-host-sdk", + "src/memory-host-sdk", + "packages", "src" ], - "shared_filenames": [ - "src/auto-reply/status.test.ts", - "src/auto-reply/status.ts" - ], - "similarity": 0.448, - "size_similarity": 0.536 + "shared_filenames": [], + "similarity": 0.427, + "size_similarity": 0.758 } ], "pr_count": 2, "pr_numbers": [ - 53303, - 65381 + 65452, + 69059 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65381 + 69059 ], - "representative_pr_number": 53303, - "representative_title": "fix: show cost estimate for providers with explicit cost config regardless of auth method", - "representative_url": "https://github.com/openclaw/openclaw/pull/53303", + "representative_pr_number": 65452, + "representative_title": " [security fix] Fix SQL injection in memory schema management", + "representative_url": "https://github.com/openclaw/openclaw/pull/65452", "shared_directories": [ - "src/auto-reply", + "packages/memory-host-sdk/src/host", + "packages/memory-host-sdk/src", + "src/memory-host-sdk/host", + "packages/memory-host-sdk", + "src/memory-host-sdk", + "packages", "src" ], - "shared_filenames": [ - "src/auto-reply/status.test.ts", - "src/auto-reply/status.ts" - ], - "summary": "2 open PRs share weighted file overlap around `src/auto-reply/status.test.ts`, `src/auto-reply/status.ts`; representative PR #53303.", - "title": "Scope: fix: show cost estimate for providers with explicit cost config regardless of auth method" + "shared_filenames": [], + "summary": "2 open PRs cluster in `packages/memory-host-sdk/src/host`, `packages/memory-host-sdk/src`, `src/memory-host-sdk/host` with similar change breadth; representative PR #65452.", + "title": "Scope: [security fix] Fix SQL injection in memory schema management" }, { "authors": [ - "gztony" + "PratikRai0101" ], - "average_similarity": 0.446, - "cluster_id": "pr-scope-64907-2", + "average_similarity": 0.412, + "cluster_id": "pr-scope-65229-2", "kind": "pr_scope", - "last_activity_at": "2026-04-13T05:35:35Z", + "last_activity_at": "2026-04-21T15:30:30Z", "outside_window_prs": [ { - "additions": 1465, - "author": "sjz-ks", - "changed_files": 16, - "created_at": "2026-04-11T16:30:37Z", - "deletions": 27, + "additions": 134, + "author": "extrasmall0", + "changed_files": 6, + "created_at": "2026-04-12T07:18:16Z", + "deletions": 6, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64907/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64907", + "files_url": "https://github.com/openclaw/openclaw/pull/65229/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65229", "merged": false, - "number": 64907, + "number": 65229, "state": "open", - "title": "Plugin SDK: add canonical tool result hook", - "updated_at": "2026-04-13T12:55:14Z" + "title": "fix(doctor): resolve env-backed SecretRef in gateway auth health check to prevent false-positive warning", + "updated_at": "2026-04-12T19:21:03Z" } ], "pairwise": [ { - "breadth_similarity": 0.268, - "concentration_similarity": 0.484, - "content_similarity": 0.555, - "left_pr_number": 64907, - "right_pr_number": 65707, + "breadth_similarity": 0.5, + "concentration_similarity": 0.967, + "content_similarity": 0.263, + "left_pr_number": 65229, + "right_pr_number": 69659, "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", + "src/config", + "src/flows", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/compact.ts", - "src/agents/pi-embedded-runner/extensions.test.ts", - "src/agents/pi-embedded-runner/extensions.ts", - "src/agents/pi-embedded-runner/run/attempt.ts" + "src/flows/doctor-health-contributions.ts" ], - "similarity": 0.446, - "size_similarity": 0.046 + "similarity": 0.412, + "size_similarity": 0.864 } ], "pr_count": 2, "pr_numbers": [ - 64907, - 65707 + 65229, + 69659 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65707 + 69659 ], - "representative_pr_number": 64907, - "representative_title": "Plugin SDK: add canonical tool result hook", - "representative_url": "https://github.com/openclaw/openclaw/pull/64907", + "representative_pr_number": 65229, + "representative_title": "fix(doctor): resolve env-backed SecretRef in gateway auth health check to prevent false-positive warning", + "representative_url": "https://github.com/openclaw/openclaw/pull/65229", "shared_directories": [ - "src/agents/pi-embedded-runner/run", - "src/agents/pi-embedded-runner", - "src/agents", + "src/flows", + "src/config", "src" ], "shared_filenames": [ - "src/agents/pi-embedded-runner/extensions.test.ts", - "src/agents/pi-embedded-runner/extensions.ts", - "src/agents/pi-embedded-runner/compact.ts", - "src/agents/pi-embedded-runner/run/attempt.ts" + "src/flows/doctor-health-contributions.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/extensions.test.ts`, `src/agents/pi-embedded-runner/extensions.ts`, `src/agents/pi-embedded-runner/compact.ts`; representative PR #64907.", - "title": "Scope: Plugin SDK: add canonical tool result hook" + "summary": "2 open PRs share weighted file overlap around `src/flows/doctor-health-contributions.ts`; representative PR #65229.", + "title": "Scope: fix(doctor): resolve env-backed SecretRef in gateway auth health check to prevent false-positive warning" }, { "authors": [ - "bluesky6868" + "Knightmare6890" ], - "average_similarity": 0.442, - "cluster_id": "pr-scope-36332-2", + "average_similarity": 0.406, + "cluster_id": "pr-scope-54043-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T19:06:36Z", + "last_activity_at": "2026-04-15T21:26:02Z", "outside_window_prs": [ { - "additions": 7, - "author": "cioclawcode", - "changed_files": 1, - "created_at": "2026-03-05T15:14:34Z", - "deletions": 1, + "additions": 38, + "author": "LIC99", + "changed_files": 2, + "created_at": "2026-03-24T22:40:50Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36332/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36332", + "files_url": "https://github.com/openclaw/openclaw/pull/54043/files", + "html_url": "https://github.com/openclaw/openclaw/pull/54043", "merged": false, - "number": 36332, + "number": 54043, "state": "open", - "title": "fix(hooks): suppress system event injection when deliver is false [AI-assisted]", - "updated_at": "2026-04-17T04:33:37Z" + "title": "fix: strip trailing NO_REPLY from cron/isolated session delivery", + "updated_at": "2026-03-24T22:45:46Z" } ], "pairwise": [ { - "breadth_similarity": 0.375, - "concentration_similarity": 0.784, - "content_similarity": 0.503, - "left_pr_number": 36332, - "right_pr_number": 68667, + "breadth_similarity": 0.5, + "concentration_similarity": 0.707, + "content_similarity": 0.292, + "left_pr_number": 54043, + "right_pr_number": 67381, "shared_directories": [ - "src/gateway/server", - "src/gateway", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/gateway/server/hooks.ts" + "src/auto-reply/reply/agent-runner-execution.ts" ], - "similarity": 0.442, - "size_similarity": 0.091 + "similarity": 0.406, + "size_similarity": 0.774 } ], "pr_count": 2, "pr_numbers": [ - 36332, - 68667 + 54043, + 67381 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 68667 + 67381 ], - "representative_pr_number": 36332, - "representative_title": "fix(hooks): suppress system event injection when deliver is false [AI-assisted]", - "representative_url": "https://github.com/openclaw/openclaw/pull/36332", + "representative_pr_number": 54043, + "representative_title": "fix: strip trailing NO_REPLY from cron/isolated session delivery", + "representative_url": "https://github.com/openclaw/openclaw/pull/54043", "shared_directories": [ - "src/gateway/server", - "src/gateway", + "src/auto-reply/reply", + "src/auto-reply", "src" ], "shared_filenames": [ - "src/gateway/server/hooks.ts" + "src/auto-reply/reply/agent-runner-execution.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/gateway/server/hooks.ts`; representative PR #36332.", - "title": "Scope: fix(hooks): suppress system event injection when deliver is false [AI-assisted]" + "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/agent-runner-execution.ts`; representative PR #54043.", + "title": "Scope: fix: strip trailing NO_REPLY from cron/isolated session delivery" }, { "authors": [ - "wangshu94" + "januaryeffect" ], - "average_similarity": 0.436, - "cluster_id": "pr-scope-53961-2", + "average_similarity": 0.406, + "cluster_id": "pr-scope-64822-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T13:47:13Z", + "last_activity_at": "2026-04-19T11:14:18Z", "outside_window_prs": [ { - "additions": 771, - "author": "Kaspre", - "changed_files": 21, - "created_at": "2026-03-24T21:16:42Z", - "deletions": 19, + "additions": 0, + "author": "protomota", + "changed_files": 1, + "created_at": "2026-04-11T13:30:44Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53961/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53961", + "files_url": "https://github.com/openclaw/openclaw/pull/64822/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64822", "merged": false, - "number": 53961, + "number": 64822, "state": "open", - "title": "fix(delivery): track and log silent delivery failures", - "updated_at": "2026-03-24T21:21:24Z" + "title": "chore: stop tracking a2ui bundle hash (again)", + "updated_at": "2026-04-11T13:45:19Z" } ], "pairwise": [ { - "breadth_similarity": 0.348, - "concentration_similarity": 0.948, - "content_similarity": 0.407, - "left_pr_number": 53961, - "right_pr_number": 67692, + "breadth_similarity": 0.5, + "concentration_similarity": 0.5, + "content_similarity": 0.419, + "left_pr_number": 64822, + "right_pr_number": 68934, "shared_directories": [ - "src/agents/command", - "src/agents", + "src/canvas-host/a2ui", + "src/canvas-host", "src" ], "shared_filenames": [ - "src/agents/command/delivery.test.ts", - "src/agents/command/delivery.ts" + "src/canvas-host/a2ui/.bundle.hash" ], - "similarity": 0.436, - "size_similarity": 0.456 + "similarity": 0.406, + "size_similarity": 0.25 } ], "pr_count": 2, "pr_numbers": [ - 53961, - 67692 + 64822, + 68934 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67692 + 68934 ], - "representative_pr_number": 53961, - "representative_title": "fix(delivery): track and log silent delivery failures", - "representative_url": "https://github.com/openclaw/openclaw/pull/53961", + "representative_pr_number": 64822, + "representative_title": "chore: stop tracking a2ui bundle hash (again)", + "representative_url": "https://github.com/openclaw/openclaw/pull/64822", "shared_directories": [ - "src/agents/command", - "src/agents", + "src/canvas-host/a2ui", + "src/canvas-host", "src" ], "shared_filenames": [ - "src/agents/command/delivery.test.ts", - "src/agents/command/delivery.ts" + "src/canvas-host/a2ui/.bundle.hash" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/command/delivery.test.ts`, `src/agents/command/delivery.ts`; representative PR #53961.", - "title": "Scope: fix(delivery): track and log silent delivery failures" + "summary": "2 open PRs share weighted file overlap around `src/canvas-host/a2ui/.bundle.hash`; representative PR #64822.", + "title": "Scope: chore: stop tracking a2ui bundle hash (again)" }, { "authors": [ - "leochame" + "zqchris" ], - "average_similarity": 0.435, - "cluster_id": "pr-scope-63786-2", + "average_similarity": 0.397, + "cluster_id": "pr-scope-53607-2", "kind": "pr_scope", - "last_activity_at": "2026-04-13T23:51:32Z", + "last_activity_at": "2026-04-20T10:41:50Z", "outside_window_prs": [ { - "additions": 291, - "author": "jackheuberger", - "changed_files": 13, - "created_at": "2026-04-09T14:48:00Z", - "deletions": 40, + "additions": 270, + "author": "lupuletic", + "changed_files": 8, + "created_at": "2026-03-24T10:06:09Z", + "deletions": 3, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/63786/files", - "html_url": "https://github.com/openclaw/openclaw/pull/63786", + "files_url": "https://github.com/openclaw/openclaw/pull/53607/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53607", "merged": false, - "number": 63786, + "number": 53607, "state": "open", - "title": "fix: restore Copilot replay sanitization and ACP thread guards", - "updated_at": "2026-04-17T23:41:05Z" + "title": "fix(discord): mirror Components v2 outbound messages to session transcript", + "updated_at": "2026-03-24T20:15:30Z" } ], "pairwise": [ { - "breadth_similarity": 0.85, - "concentration_similarity": 0.689, - "content_similarity": 0.355, - "left_pr_number": 63786, - "right_pr_number": 65692, + "breadth_similarity": 1.0, + "concentration_similarity": 0.892, + "content_similarity": 0.246, + "left_pr_number": 53607, + "right_pr_number": 68877, "shared_directories": [ - "src/agents/pi-hooks/context-pruning", - "src/agents/pi-hooks", - "src/agents", + "src/infra/outbound", + "src/infra", "src" ], "shared_filenames": [ - "src/agents/pi-hooks/context-pruning/extension.ts", - "src/agents/pi-hooks/context-pruning/pruner.test.ts", - "src/agents/pi-hooks/context-pruning/pruner.ts" + "src/infra/outbound/deliver.test.ts", + "src/infra/outbound/deliver.ts" ], - "similarity": 0.435, - "size_similarity": 0.448 + "similarity": 0.397, + "size_similarity": 0.535 } ], "pr_count": 2, "pr_numbers": [ - 63786, - 65692 + 53607, + 68877 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65692 + 68877 ], - "representative_pr_number": 63786, - "representative_title": "fix: restore Copilot replay sanitization and ACP thread guards", - "representative_url": "https://github.com/openclaw/openclaw/pull/63786", + "representative_pr_number": 53607, + "representative_title": "fix(discord): mirror Components v2 outbound messages to session transcript", + "representative_url": "https://github.com/openclaw/openclaw/pull/53607", "shared_directories": [ - "src/agents/pi-hooks/context-pruning", - "src/agents/pi-hooks", - "src/agents", + "src/infra/outbound", + "src/infra", "src" ], "shared_filenames": [ - "src/agents/pi-hooks/context-pruning/extension.ts", - "src/agents/pi-hooks/context-pruning/pruner.test.ts", - "src/agents/pi-hooks/context-pruning/pruner.ts" + "src/infra/outbound/deliver.test.ts", + "src/infra/outbound/deliver.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/pi-hooks/context-pruning/extension.ts`, `src/agents/pi-hooks/context-pruning/pruner.test.ts`, `src/agents/pi-hooks/context-pruning/pruner.ts`; representative PR #63786.", - "title": "Scope: fix: restore Copilot replay sanitization and ACP thread guards" + "summary": "2 open PRs share weighted file overlap around `src/infra/outbound/deliver.test.ts`, `src/infra/outbound/deliver.ts`; representative PR #53607.", + "title": "Scope: fix(discord): mirror Components v2 outbound messages to session transcript" }, { "authors": [ - "Kyzcreig" + "Angfr95" ], - "average_similarity": 0.434, - "cluster_id": "pr-scope-47994-2", + "average_similarity": 0.394, + "cluster_id": "pr-scope-64558-2", "kind": "pr_scope", - "last_activity_at": "2026-04-17T12:41:45Z", + "last_activity_at": "2026-04-19T22:57:14Z", "outside_window_prs": [ { - "additions": 357, - "author": "Jerry-Xin", - "changed_files": 20, - "created_at": "2026-03-16T07:32:59Z", - "deletions": 21, + "additions": 495, + "author": "Pearcekieser", + "changed_files": 10, + "created_at": "2026-04-11T00:45:04Z", + "deletions": 24, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/47994/files", - "html_url": "https://github.com/openclaw/openclaw/pull/47994", + "files_url": "https://github.com/openclaw/openclaw/pull/64558/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64558", "merged": false, - "number": 47994, + "number": 64558, "state": "open", - "title": "fix(agent): prevent fallback model from permanently overwriting agent config", - "updated_at": "2026-04-19T06:26:04Z" + "title": "fix(browser): repair isolated download seam", + "updated_at": "2026-04-17T05:12:04Z" } ], "pairwise": [ { - "breadth_similarity": 0.825, - "concentration_similarity": 0.839, - "content_similarity": 0.264, - "left_pr_number": 47994, - "right_pr_number": 65284, + "breadth_similarity": 0.35, + "concentration_similarity": 0.934, + "content_similarity": 0.24, + "left_pr_number": 64558, + "right_pr_number": 67149, "shared_directories": [ - "src/auto-reply/reply", - "src/cron/isolated-agent", - "src/agents", - "src/auto-reply", - "src/commands", - "src/cron", - "src/gateway", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/agent-runner.ts", - "src/auto-reply/reply/followup-runner.ts", - "src/commands/sessions.ts", - "src/cron/isolated-agent/run.ts", - "src/gateway/session-utils.test.ts", - "src/gateway/session-utils.ts" + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", + "extensions" ], - "similarity": 0.434, - "size_similarity": 0.829 + "shared_filenames": [], + "similarity": 0.394, + "size_similarity": 0.961 } ], "pr_count": 2, "pr_numbers": [ - 47994, - 65284 + 64558, + 67149 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65284 + 67149 ], - "representative_pr_number": 47994, - "representative_title": "fix(agent): prevent fallback model from permanently overwriting agent config", - "representative_url": "https://github.com/openclaw/openclaw/pull/47994", + "representative_pr_number": 64558, + "representative_title": "fix(browser): repair isolated download seam", + "representative_url": "https://github.com/openclaw/openclaw/pull/64558", "shared_directories": [ - "src/cron/isolated-agent", - "src/auto-reply/reply", - "src/cron", - "src/commands", - "src/auto-reply", - "src/gateway", - "src/agents", - "src" - ], - "shared_filenames": [ - "src/commands/sessions.ts", - "src/cron/isolated-agent/run.ts", - "src/auto-reply/reply/followup-runner.ts", - "src/gateway/session-utils.test.ts", - "src/gateway/session-utils.ts", - "src/auto-reply/reply/agent-runner.ts" + "extensions/browser/src/browser", + "extensions/browser/src", + "extensions/browser", + "extensions" ], - "summary": "2 open PRs share weighted file overlap around `src/commands/sessions.ts`, `src/cron/isolated-agent/run.ts`, `src/auto-reply/reply/followup-runner.ts`; representative PR #47994.", - "title": "Scope: fix(agent): prevent fallback model from permanently overwriting agent config" + "shared_filenames": [], + "summary": "2 open PRs cluster in `extensions/browser/src/browser`, `extensions/browser/src`, `extensions/browser` with similar change breadth; representative PR #64558.", + "title": "Scope: fix(browser): repair isolated download seam" }, { "authors": [ - "smartaz" + "BKF-Gitty" ], - "average_similarity": 0.431, - "cluster_id": "pr-scope-54066-2", + "average_similarity": 0.389, + "cluster_id": "pr-scope-44665-2", "kind": "pr_scope", - "last_activity_at": "2026-04-12T20:19:10Z", + "last_activity_at": "2026-04-18T23:08:46Z", "outside_window_prs": [ { - "additions": 81, - "author": "eliot-onbox", - "changed_files": 4, - "created_at": "2026-03-24T23:10:25Z", + "additions": 34, + "author": "Lubrsy706", + "changed_files": 2, + "created_at": "2026-03-13T04:42:20Z", "deletions": 5, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/54066/files", - "html_url": "https://github.com/openclaw/openclaw/pull/54066", + "files_url": "https://github.com/openclaw/openclaw/pull/44665/files", + "html_url": "https://github.com/openclaw/openclaw/pull/44665", "merged": false, - "number": 54066, + "number": 44665, "state": "open", - "title": "fix(tools): detect Windows drive-letter paths as absolute on POSIX hosts (#54039)", - "updated_at": "2026-03-24T23:14:33Z" + "title": "fix(cron): report not-requested when delivery.mode=none and delivered=false", + "updated_at": "2026-04-21T02:46:30Z" } ], "pairwise": [ { - "breadth_similarity": 0.625, - "concentration_similarity": 1.0, - "content_similarity": 0.423, - "left_pr_number": 54066, - "right_pr_number": 65536, + "breadth_similarity": 1.0, + "concentration_similarity": 0.788, + "content_similarity": 0.171, + "left_pr_number": 44665, + "right_pr_number": 68717, "shared_directories": [ - "src/agents", + "src/cron/service", + "src/cron", "src" ], "shared_filenames": [ - "src/agents/sandbox-paths.ts" + "src/cron/service/timer.ts" ], - "similarity": 0.431, - "size_similarity": 0.151 + "similarity": 0.389, + "size_similarity": 0.867 } ], "pr_count": 2, "pr_numbers": [ - 54066, - 65536 + 44665, + 68717 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65536 + 68717 ], - "representative_pr_number": 54066, - "representative_title": "fix(tools): detect Windows drive-letter paths as absolute on POSIX hosts (#54039)", - "representative_url": "https://github.com/openclaw/openclaw/pull/54066", + "representative_pr_number": 44665, + "representative_title": "fix(cron): report not-requested when delivery.mode=none and delivered=false", + "representative_url": "https://github.com/openclaw/openclaw/pull/44665", "shared_directories": [ - "src/agents", + "src/cron/service", + "src/cron", "src" ], "shared_filenames": [ - "src/agents/sandbox-paths.ts" + "src/cron/service/timer.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/agents/sandbox-paths.ts`; representative PR #54066.", - "title": "Scope: fix(tools): detect Windows drive-letter paths as absolute on POSIX hosts (#54039)" + "summary": "2 open PRs share weighted file overlap around `src/cron/service/timer.ts`; representative PR #44665.", + "title": "Scope: fix(cron): report not-requested when delivery.mode=none and delivered=false" }, { "authors": [ "bmadwaves" ], - "average_similarity": 0.418, + "average_similarity": 0.386, "cluster_id": "pr-scope-37293-2", "kind": "pr_scope", "last_activity_at": "2026-04-17T16:57:23Z", @@ -41266,7 +46754,7 @@ { "breadth_similarity": 0.75, "concentration_similarity": 1.0, - "content_similarity": 0.267, + "content_similarity": 0.221, "left_pr_number": 37293, "right_pr_number": 68213, "shared_directories": [ @@ -41275,7 +46763,7 @@ "src" ], "shared_filenames": [], - "similarity": 0.418, + "similarity": 0.386, "size_similarity": 0.707 } ], @@ -41302,351 +46790,343 @@ }, { "authors": [ - "xiaoyu-157" - ], - "average_similarity": 0.415, - "cluster_id": "pr-scope-53706-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-15T14:41:07Z", - "outside_window_prs": [ - { - "additions": 9, - "author": "VACInc", - "changed_files": 4, - "created_at": "2026-03-24T13:22:38Z", - "deletions": 4, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53706/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53706", - "merged": false, - "number": 53706, - "state": "open", - "title": "Prompt: reuse injected startup context by default", - "updated_at": "2026-03-24T20:15:29Z" - } - ], - "pairwise": [ - { - "breadth_similarity": 0.75, - "concentration_similarity": 1.0, - "content_similarity": 0.383, - "left_pr_number": 53706, - "right_pr_number": 67090, - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/post-compaction-context.test.ts", - "src/auto-reply/reply/post-compaction-context.ts" - ], - "similarity": 0.415, - "size_similarity": 0.144 - } - ], - "pr_count": 2, - "pr_numbers": [ - 53706, - 67090 - ], - "recent_pr_count": 1, - "recent_pr_numbers": [ - 67090 - ], - "representative_pr_number": 53706, - "representative_title": "Prompt: reuse injected startup context by default", - "representative_url": "https://github.com/openclaw/openclaw/pull/53706", - "shared_directories": [ - "src/auto-reply/reply", - "src/auto-reply", - "src" - ], - "shared_filenames": [ - "src/auto-reply/reply/post-compaction-context.test.ts", - "src/auto-reply/reply/post-compaction-context.ts" - ], - "summary": "2 open PRs share weighted file overlap around `src/auto-reply/reply/post-compaction-context.test.ts`, `src/auto-reply/reply/post-compaction-context.ts`; representative PR #53706.", - "title": "Scope: Prompt: reuse injected startup context by default" - }, - { - "authors": [ - "qidu" + "IAMSamuelRodda" ], - "average_similarity": 0.415, - "cluster_id": "pr-scope-65005-2", + "average_similarity": 0.38, + "cluster_id": "pr-scope-46303-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T09:39:54Z", + "last_activity_at": "2026-04-16T02:30:05Z", "outside_window_prs": [ { - "additions": 312, - "author": "neofdezf-cloud", - "changed_files": 4, - "created_at": "2026-04-11T20:32:50Z", - "deletions": 0, + "additions": 1158, + "author": "joeykrug", + "changed_files": 28, + "created_at": "2026-03-14T15:54:45Z", + "deletions": 100, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/65005/files", - "html_url": "https://github.com/openclaw/openclaw/pull/65005", + "files_url": "https://github.com/openclaw/openclaw/pull/46303/files", + "html_url": "https://github.com/openclaw/openclaw/pull/46303", "merged": false, - "number": 65005, + "number": 46303, "state": "open", - "title": "feat(models): add provider/model resolution explain command", - "updated_at": "2026-04-11T21:40:03Z" + "title": "fix: drain inbound debounce buffer and followup queues before SIGUSR1 reload", + "updated_at": "2026-04-18T23:17:13Z" } ], "pairwise": [ { - "breadth_similarity": 1.0, - "concentration_similarity": 0.991, - "content_similarity": 0.203, - "left_pr_number": 65005, - "right_pr_number": 67669, + "breadth_similarity": 0.7, + "concentration_similarity": 0.894, + "content_similarity": 0.176, + "left_pr_number": 46303, + "right_pr_number": 66865, "shared_directories": [ - "src/commands/models", + "src/cli/gateway-cli", "src/cli", - "src/commands", "src" ], "shared_filenames": [ - "src/cli/models-cli.ts", - "src/commands/models.ts" + "src/cli/gateway-cli/run-loop.test.ts", + "src/cli/gateway-cli/run-loop.ts" ], - "similarity": 0.415, - "size_similarity": 0.824 + "similarity": 0.38, + "size_similarity": 0.946 } ], "pr_count": 2, "pr_numbers": [ - 65005, - 67669 + 46303, + 66865 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67669 - ], - "representative_pr_number": 65005, - "representative_title": "feat(models): add provider/model resolution explain command", - "representative_url": "https://github.com/openclaw/openclaw/pull/65005", + 66865 + ], + "representative_pr_number": 46303, + "representative_title": "fix: drain inbound debounce buffer and followup queues before SIGUSR1 reload", + "representative_url": "https://github.com/openclaw/openclaw/pull/46303", "shared_directories": [ - "src/commands/models", + "src/cli/gateway-cli", "src/cli", - "src/commands", "src" ], "shared_filenames": [ - "src/commands/models.ts", - "src/cli/models-cli.ts" + "src/cli/gateway-cli/run-loop.test.ts", + "src/cli/gateway-cli/run-loop.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/commands/models.ts`, `src/cli/models-cli.ts`; representative PR #65005.", - "title": "Scope: feat(models): add provider/model resolution explain command" + "summary": "2 open PRs share weighted file overlap around `src/cli/gateway-cli/run-loop.test.ts`, `src/cli/gateway-cli/run-loop.ts`; representative PR #46303.", + "title": "Scope: fix: drain inbound debounce buffer and followup queues before SIGUSR1 reload" }, { "authors": [ - "john-vainio" + "abajirao" ], - "average_similarity": 0.413, - "cluster_id": "pr-scope-35916-2", + "average_similarity": 0.38, + "cluster_id": "pr-scope-65968-2", "kind": "pr_scope", - "last_activity_at": "2026-04-18T00:19:59Z", + "last_activity_at": "2026-04-20T13:52:13Z", "outside_window_prs": [ { - "additions": 15, - "author": "dt-chenwenxiong", + "additions": 340, + "author": "hendricius", "changed_files": 2, - "created_at": "2026-03-05T10:14:13Z", - "deletions": 12, + "created_at": "2026-04-13T13:53:53Z", + "deletions": 35, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/35916/files", - "html_url": "https://github.com/openclaw/openclaw/pull/35916", + "files_url": "https://github.com/openclaw/openclaw/pull/65968/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65968", "merged": false, - "number": 35916, + "number": 65968, "state": "open", - "title": "fix Null handling error after LLM timeout", - "updated_at": "2026-04-17T04:31:21Z" + "title": "fix(agents): surface terminal assistant errors via FailoverError", + "updated_at": "2026-04-13T14:03:55Z" } ], "pairwise": [ { - "breadth_similarity": 0.417, - "concentration_similarity": 0.44, - "content_similarity": 0.301, - "left_pr_number": 35916, - "right_pr_number": 67983, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.118, + "left_pr_number": 65968, + "right_pr_number": 69346, "shared_directories": [ "src/agents/pi-embedded-runner/run", "src/agents/pi-embedded-runner", "src/agents", "src" ], - "shared_filenames": [ - "src/agents/pi-embedded-runner/run/attempt.ts" - ], - "similarity": 0.413, - "size_similarity": 0.926 + "shared_filenames": [], + "similarity": 0.38, + "size_similarity": 0.981 } ], "pr_count": 2, "pr_numbers": [ - 35916, - 67983 + 65968, + 69346 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67983 + 69346 ], - "representative_pr_number": 35916, - "representative_title": "fix Null handling error after LLM timeout", - "representative_url": "https://github.com/openclaw/openclaw/pull/35916", + "representative_pr_number": 65968, + "representative_title": "fix(agents): surface terminal assistant errors via FailoverError", + "representative_url": "https://github.com/openclaw/openclaw/pull/65968", "shared_directories": [ "src/agents/pi-embedded-runner/run", "src/agents/pi-embedded-runner", "src/agents", "src" ], - "shared_filenames": [ - "src/agents/pi-embedded-runner/run/attempt.ts" - ], - "summary": "2 open PRs share weighted file overlap around `src/agents/pi-embedded-runner/run/attempt.ts`; representative PR #35916.", - "title": "Scope: fix Null handling error after LLM timeout" + "shared_filenames": [], + "summary": "2 open PRs cluster in `src/agents/pi-embedded-runner/run`, `src/agents/pi-embedded-runner`, `src/agents` with similar change breadth; representative PR #65968.", + "title": "Scope: fix(agents): surface terminal assistant errors via FailoverError" }, { "authors": [ - "mylesdebastion" + "smartchainark" ], - "average_similarity": 0.409, - "cluster_id": "pr-scope-37171-2", + "average_similarity": 0.367, + "cluster_id": "pr-scope-65649-2", "kind": "pr_scope", - "last_activity_at": "2026-04-13T09:21:40Z", + "last_activity_at": "2026-04-18T08:19:52Z", "outside_window_prs": [ { - "additions": 107, - "author": "arjunaskykok", + "additions": 284, + "author": "JUSTICEESSIELP", "changed_files": 3, - "created_at": "2026-03-06T04:18:05Z", + "created_at": "2026-04-13T01:54:28Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/37171/files", - "html_url": "https://github.com/openclaw/openclaw/pull/37171", + "files_url": "https://github.com/openclaw/openclaw/pull/65649/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65649", "merged": false, - "number": 37171, + "number": 65649, "state": "open", - "title": "Telegram: prevent self-message reply loops", - "updated_at": "2026-04-19T04:31:44Z" + "title": "fix(config): cap forensic clobber snapshots at 32 per path", + "updated_at": "2026-04-13T02:07:39Z" } ], "pairwise": [ { - "breadth_similarity": 0.667, - "concentration_similarity": 0.889, - "content_similarity": 0.263, - "left_pr_number": 37171, - "right_pr_number": 65741, + "breadth_similarity": 0.875, + "concentration_similarity": 1.0, + "content_similarity": 0.163, + "left_pr_number": 65649, + "right_pr_number": 68462, "shared_directories": [ - "src/telegram", + "src/config", "src" ], "shared_filenames": [ - "src/telegram/bot-handlers.ts" + "src/config/io.observe-recovery.ts" ], - "similarity": 0.409, - "size_similarity": 0.757 + "similarity": 0.367, + "size_similarity": 0.768 } ], "pr_count": 2, "pr_numbers": [ - 37171, - 65741 + 65649, + 68462 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65741 + 68462 ], - "representative_pr_number": 37171, - "representative_title": "Telegram: prevent self-message reply loops", - "representative_url": "https://github.com/openclaw/openclaw/pull/37171", + "representative_pr_number": 65649, + "representative_title": "fix(config): cap forensic clobber snapshots at 32 per path", + "representative_url": "https://github.com/openclaw/openclaw/pull/65649", "shared_directories": [ - "src/telegram", + "src/config", "src" ], "shared_filenames": [ - "src/telegram/bot-handlers.ts" + "src/config/io.observe-recovery.ts" ], - "summary": "2 open PRs share weighted file overlap around `src/telegram/bot-handlers.ts`; representative PR #37171.", - "title": "Scope: Telegram: prevent self-message reply loops" + "summary": "2 open PRs share weighted file overlap around `src/config/io.observe-recovery.ts`; representative PR #65649.", + "title": "Scope: fix(config): cap forensic clobber snapshots at 32 per path" }, { "authors": [ - "Angfr95" + "hkalkoti1" ], - "average_similarity": 0.395, - "cluster_id": "pr-scope-64558-2", + "average_similarity": 0.36, + "cluster_id": "pr-scope-64503-2", "kind": "pr_scope", - "last_activity_at": "2026-04-15T12:02:12Z", + "last_activity_at": "2026-04-20T20:11:24Z", "outside_window_prs": [ { - "additions": 495, - "author": "Pearcekieser", - "changed_files": 10, - "created_at": "2026-04-11T00:45:04Z", - "deletions": 24, + "additions": 160, + "author": "ndholakia", + "changed_files": 2, + "created_at": "2026-04-10T21:25:57Z", + "deletions": 1, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64558/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64558", + "files_url": "https://github.com/openclaw/openclaw/pull/64503/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64503", "merged": false, - "number": 64558, + "number": 64503, "state": "open", - "title": "fix(browser): repair isolated download seam", - "updated_at": "2026-04-17T05:12:04Z" + "title": "fix(msteams): forward messageBack card actions (Action.Submit) to agent (#60952)", + "updated_at": "2026-04-14T00:46:27Z" } ], "pairwise": [ { - "breadth_similarity": 0.35, - "concentration_similarity": 0.938, - "content_similarity": 0.243, - "left_pr_number": 64558, - "right_pr_number": 67149, + "breadth_similarity": 0.75, + "concentration_similarity": 0.87, + "content_similarity": 0.207, + "left_pr_number": 64503, + "right_pr_number": 69428, "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", + "extensions/msteams/src", + "extensions/msteams", "extensions" ], "shared_filenames": [], - "similarity": 0.395, - "size_similarity": 0.958 + "similarity": 0.36, + "size_similarity": 0.64 } ], "pr_count": 2, "pr_numbers": [ - 64558, - 67149 + 64503, + 69428 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67149 + 69428 ], - "representative_pr_number": 64558, - "representative_title": "fix(browser): repair isolated download seam", - "representative_url": "https://github.com/openclaw/openclaw/pull/64558", + "representative_pr_number": 64503, + "representative_title": "fix(msteams): forward messageBack card actions (Action.Submit) to agent (#60952)", + "representative_url": "https://github.com/openclaw/openclaw/pull/64503", "shared_directories": [ - "extensions/browser/src/browser", - "extensions/browser/src", - "extensions/browser", + "extensions/msteams/src", + "extensions/msteams", "extensions" ], "shared_filenames": [], - "summary": "2 open PRs cluster in `extensions/browser/src/browser`, `extensions/browser/src`, `extensions/browser` with similar change breadth; representative PR #64558.", - "title": "Scope: fix(browser): repair isolated download seam" + "summary": "2 open PRs cluster in `extensions/msteams/src`, `extensions/msteams`, `extensions` with similar change breadth; representative PR #64503.", + "title": "Scope: fix(msteams): forward messageBack card actions (Action.Submit) to agent (#60952)" + }, + { + "authors": [ + "neo1027144-creator" + ], + "average_similarity": 0.358, + "cluster_id": "pr-scope-65999-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-19T06:18:06Z", + "outside_window_prs": [ + { + "additions": 144, + "author": "asakir44", + "changed_files": 3, + "created_at": "2026-04-13T15:06:33Z", + "deletions": 1, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/65999/files", + "html_url": "https://github.com/openclaw/openclaw/pull/65999", + "merged": false, + "number": 65999, + "state": "open", + "title": "fix(telegram): compute and pass Ogg duration for voice messages", + "updated_at": "2026-04-13T15:09:56Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.667, + "concentration_similarity": 1.0, + "content_similarity": 0.337, + "left_pr_number": 65999, + "right_pr_number": 68836, + "shared_directories": [ + "extensions/telegram/src/bot", + "extensions/telegram/src", + "extensions/telegram", + "extensions" + ], + "shared_filenames": [ + "extensions/telegram/src/bot/delivery.replies.ts" + ], + "similarity": 0.358, + "size_similarity": 0.041 + } + ], + "pr_count": 2, + "pr_numbers": [ + 65999, + 68836 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 68836 + ], + "representative_pr_number": 65999, + "representative_title": "fix(telegram): compute and pass Ogg duration for voice messages", + "representative_url": "https://github.com/openclaw/openclaw/pull/65999", + "shared_directories": [ + "extensions/telegram/src/bot", + "extensions/telegram/src", + "extensions/telegram", + "extensions" + ], + "shared_filenames": [ + "extensions/telegram/src/bot/delivery.replies.ts" + ], + "summary": "2 open PRs share weighted file overlap around `extensions/telegram/src/bot/delivery.replies.ts`; representative PR #65999.", + "title": "Scope: fix(telegram): compute and pass Ogg duration for voice messages" }, { "authors": [ "JerranC" ], - "average_similarity": 0.366, + "average_similarity": 0.358, "cluster_id": "pr-scope-53822-2", "kind": "pr_scope", - "last_activity_at": "2026-04-17T05:22:21Z", + "last_activity_at": "2026-04-19T18:38:53Z", "outside_window_prs": [ { "additions": 242, @@ -41667,8 +47147,8 @@ "pairwise": [ { "breadth_similarity": 1.0, - "concentration_similarity": 0.829, - "content_similarity": 0.11, + "concentration_similarity": 0.803, + "content_similarity": 0.102, "left_pr_number": 53822, "right_pr_number": 66933, "shared_directories": [ @@ -41680,8 +47160,8 @@ "src/config/schema.base.generated.ts", "src/config/zod-schema.agent-runtime.ts" ], - "similarity": 0.366, - "size_similarity": 0.984 + "similarity": 0.358, + "size_similarity": 0.972 } ], "pr_count": 2, @@ -41708,72 +47188,11 @@ "summary": "2 open PRs share weighted file overlap around `src/config/zod-schema.agent-runtime.ts`, `src/config/schema.base.generated.ts`; representative PR #53822.", "title": "Scope: Feat/sandbox docker volumes strategies" }, - { - "authors": [ - "D3rPaPaH0d3n" - ], - "average_similarity": 0.354, - "cluster_id": "pr-scope-53972-2", - "kind": "pr_scope", - "last_activity_at": "2026-04-16T20:19:31Z", - "outside_window_prs": [ - { - "additions": 63, - "author": "fr00st", - "changed_files": 1, - "created_at": "2026-03-24T21:26:12Z", - "deletions": 0, - "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/53972/files", - "html_url": "https://github.com/openclaw/openclaw/pull/53972", - "merged": false, - "number": 53972, - "state": "open", - "title": "ci(android): add x86_64 GitHub Actions build for debug APKs", - "updated_at": "2026-03-24T21:44:05Z" - } - ], - "pairwise": [ - { - "breadth_similarity": 1.0, - "concentration_similarity": 1.0, - "content_similarity": 0.15, - "left_pr_number": 53972, - "right_pr_number": 67804, - "shared_directories": [ - ".github/workflows", - ".github" - ], - "shared_filenames": [], - "similarity": 0.354, - "size_similarity": 0.663 - } - ], - "pr_count": 2, - "pr_numbers": [ - 53972, - 67804 - ], - "recent_pr_count": 1, - "recent_pr_numbers": [ - 67804 - ], - "representative_pr_number": 53972, - "representative_title": "ci(android): add x86_64 GitHub Actions build for debug APKs", - "representative_url": "https://github.com/openclaw/openclaw/pull/53972", - "shared_directories": [ - ".github/workflows", - ".github" - ], - "shared_filenames": [], - "summary": "2 open PRs cluster in `.github/workflows`, `.github` with similar change breadth; representative PR #53972.", - "title": "Scope: ci(android): add x86_64 GitHub Actions build for debug APKs" - }, { "authors": [ "kangjinghang" ], - "average_similarity": 0.352, + "average_similarity": 0.354, "cluster_id": "pr-scope-53535-2", "kind": "pr_scope", "last_activity_at": "2026-04-16T06:26:54Z", @@ -41798,7 +47217,7 @@ { "breadth_similarity": 0.833, "concentration_similarity": 1.0, - "content_similarity": 0.135, + "content_similarity": 0.138, "left_pr_number": 53535, "right_pr_number": 67004, "shared_directories": [ @@ -41807,7 +47226,7 @@ "extensions" ], "shared_filenames": [], - "similarity": 0.352, + "similarity": 0.354, "size_similarity": 0.831 } ], @@ -41834,190 +47253,328 @@ }, { "authors": [ - "HDYA" + "dorukardahan" ], "average_similarity": 0.351, - "cluster_id": "pr-scope-64336-2", + "cluster_id": "pr-scope-38222-2", "kind": "pr_scope", - "last_activity_at": "2026-04-15T09:49:33Z", + "last_activity_at": "2026-04-18T16:42:01Z", "outside_window_prs": [ { - "additions": 2, - "author": "Rowen-Claw", + "additions": 147, + "author": "pranayom", + "changed_files": 4, + "created_at": "2026-03-06T17:33:37Z", + "deletions": 9, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/38222/files", + "html_url": "https://github.com/openclaw/openclaw/pull/38222", + "merged": false, + "number": 38222, + "state": "open", + "title": "fix(plugins): enforce length limits on hook-injected prompt context", + "updated_at": "2026-04-21T04:29:38Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.297, + "concentration_similarity": 0.758, + "content_similarity": 0.274, + "left_pr_number": 38222, + "right_pr_number": 68621, + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/agents", + "src/plugins", + "src" + ], + "shared_filenames": [ + "src/plugins/hooks.before-agent-start.test.ts", + "src/plugins/hooks.phase-hooks.test.ts", + "src/plugins/hooks.ts" + ], + "similarity": 0.351, + "size_similarity": 0.612 + } + ], + "pr_count": 2, + "pr_numbers": [ + 38222, + 68621 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 68621 + ], + "representative_pr_number": 38222, + "representative_title": "fix(plugins): enforce length limits on hook-injected prompt context", + "representative_url": "https://github.com/openclaw/openclaw/pull/38222", + "shared_directories": [ + "src/agents/pi-embedded-runner/run", + "src/agents/pi-embedded-runner", + "src/plugins", + "src/agents", + "src" + ], + "shared_filenames": [ + "src/plugins/hooks.before-agent-start.test.ts", + "src/plugins/hooks.phase-hooks.test.ts", + "src/plugins/hooks.ts" + ], + "summary": "2 open PRs share weighted file overlap around `src/plugins/hooks.before-agent-start.test.ts`, `src/plugins/hooks.phase-hooks.test.ts`, `src/plugins/hooks.ts`; representative PR #38222.", + "title": "Scope: fix(plugins): enforce length limits on hook-injected prompt context" + }, + { + "authors": [ + "yoanndefay" + ], + "average_similarity": 0.351, + "cluster_id": "pr-scope-66134-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T16:59:54Z", + "outside_window_prs": [ + { + "additions": 3, + "author": "yoanndefay", "changed_files": 1, - "created_at": "2026-04-10T13:57:05Z", + "created_at": "2026-04-13T19:26:02Z", + "deletions": 3, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/66134/files", + "html_url": "https://github.com/openclaw/openclaw/pull/66134", + "merged": false, + "number": 66134, + "state": "open", + "title": "refactor(memory-wiki): use factory registration for wiki_apply/status/lint", + "updated_at": "2026-04-14T03:44:39Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.25, + "concentration_similarity": 0.708, + "content_similarity": 0.412, + "left_pr_number": 66134, + "right_pr_number": 67584, + "shared_directories": [ + "extensions/memory-wiki", + "extensions" + ], + "shared_filenames": [ + "extensions/memory-wiki/index.ts" + ], + "similarity": 0.351, + "size_similarity": 0.016 + } + ], + "pr_count": 2, + "pr_numbers": [ + 66134, + 67584 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 67584 + ], + "representative_pr_number": 66134, + "representative_title": "refactor(memory-wiki): use factory registration for wiki_apply/status/lint", + "representative_url": "https://github.com/openclaw/openclaw/pull/66134", + "shared_directories": [ + "extensions/memory-wiki", + "extensions" + ], + "shared_filenames": [ + "extensions/memory-wiki/index.ts" + ], + "summary": "2 open PRs share weighted file overlap around `extensions/memory-wiki/index.ts`; representative PR #66134.", + "title": "Scope: refactor(memory-wiki): use factory registration for wiki_apply/status/lint" + }, + { + "authors": [ + "Jonahdu" + ], + "average_similarity": 0.35, + "cluster_id": "pr-scope-53971-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-19T19:09:32Z", + "outside_window_prs": [ + { + "additions": 16, + "author": "jhawpetoss6-collab", + "changed_files": 1, + "created_at": "2026-03-24T21:25:06Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/64336/files", - "html_url": "https://github.com/openclaw/openclaw/pull/64336", + "files_url": "https://github.com/openclaw/openclaw/pull/53971/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53971", "merged": false, - "number": 64336, + "number": 53971, "state": "open", - "title": "fix(feishu): add docx:document.block:convert scope to batch import JSON", - "updated_at": "2026-04-10T13:58:34Z" + "title": "fix: include Slack API error details in log messages", + "updated_at": "2026-03-24T21:27:28Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.073, - "left_pr_number": 64336, - "right_pr_number": 67111, + "content_similarity": 0.124, + "left_pr_number": 53971, + "right_pr_number": 69063, "shared_directories": [ - "docs/channels", - "docs" + "extensions/slack/src", + "extensions/slack", + "extensions" ], "shared_filenames": [], - "similarity": 0.351, - "size_similarity": 1.0 + "similarity": 0.35, + "size_similarity": 0.75 } ], "pr_count": 2, "pr_numbers": [ - 64336, - 67111 + 53971, + 69063 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 67111 + 69063 ], - "representative_pr_number": 64336, - "representative_title": "fix(feishu): add docx:document.block:convert scope to batch import JSON", - "representative_url": "https://github.com/openclaw/openclaw/pull/64336", + "representative_pr_number": 53971, + "representative_title": "fix: include Slack API error details in log messages", + "representative_url": "https://github.com/openclaw/openclaw/pull/53971", "shared_directories": [ - "docs/channels", - "docs" + "extensions/slack/src", + "extensions/slack", + "extensions" ], "shared_filenames": [], - "summary": "2 open PRs cluster in `docs/channels`, `docs` with similar change breadth; representative PR #64336.", - "title": "Scope: fix(feishu): add docx:document.block:convert scope to batch import JSON" + "summary": "2 open PRs cluster in `extensions/slack/src`, `extensions/slack`, `extensions` with similar change breadth; representative PR #53971.", + "title": "Scope: fix: include Slack API error details in log messages" }, { "authors": [ - "stanleeyY" + "HDYA" ], - "average_similarity": 0.343, - "cluster_id": "pr-scope-36258-2", + "average_similarity": 0.348, + "cluster_id": "pr-scope-64336-2", "kind": "pr_scope", - "last_activity_at": "2026-04-13T16:46:34Z", + "last_activity_at": "2026-04-15T09:49:33Z", "outside_window_prs": [ { - "additions": 39, - "author": "manusjs", + "additions": 2, + "author": "Rowen-Claw", "changed_files": 1, - "created_at": "2026-03-05T14:29:32Z", + "created_at": "2026-04-10T13:57:05Z", "deletions": 0, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36258/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36258", + "files_url": "https://github.com/openclaw/openclaw/pull/64336/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64336", "merged": false, - "number": 36258, + "number": 64336, "state": "open", - "title": "test(feishu): assert prefetched botOpenId is not re-fetched in monitorSingleAccount", - "updated_at": "2026-04-17T04:33:16Z" + "title": "fix(feishu): add docx:document.block:convert scope to batch import JSON", + "updated_at": "2026-04-10T13:58:34Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.133, - "left_pr_number": 36258, - "right_pr_number": 66064, + "content_similarity": 0.069, + "left_pr_number": 64336, + "right_pr_number": 67111, "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "docs/channels", + "docs" ], "shared_filenames": [], - "similarity": 0.343, - "size_similarity": 0.667 + "similarity": 0.348, + "size_similarity": 1.0 } ], "pr_count": 2, "pr_numbers": [ - 36258, - 66064 + 64336, + 67111 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66064 + 67111 ], - "representative_pr_number": 36258, - "representative_title": "test(feishu): assert prefetched botOpenId is not re-fetched in monitorSingleAccount", - "representative_url": "https://github.com/openclaw/openclaw/pull/36258", + "representative_pr_number": 64336, + "representative_title": "fix(feishu): add docx:document.block:convert scope to batch import JSON", + "representative_url": "https://github.com/openclaw/openclaw/pull/64336", "shared_directories": [ - "extensions/feishu/src", - "extensions/feishu", - "extensions" + "docs/channels", + "docs" ], "shared_filenames": [], - "summary": "2 open PRs cluster in `extensions/feishu/src`, `extensions/feishu`, `extensions` with similar change breadth; representative PR #36258.", - "title": "Scope: test(feishu): assert prefetched botOpenId is not re-fetched in monitorSingleAccount" + "summary": "2 open PRs cluster in `docs/channels`, `docs` with similar change breadth; representative PR #64336.", + "title": "Scope: fix(feishu): add docx:document.block:convert scope to batch import JSON" }, { "authors": [ - "yozu" + "kagura-agent" ], - "average_similarity": 0.34, - "cluster_id": "pr-scope-36503-2", + "average_similarity": 0.343, + "cluster_id": "pr-scope-64616-2", "kind": "pr_scope", - "last_activity_at": "2026-04-14T11:22:47Z", + "last_activity_at": "2026-04-20T07:16:12Z", "outside_window_prs": [ { - "additions": 16, - "author": "BinHPdev", - "changed_files": 3, - "created_at": "2026-03-05T17:33:31Z", - "deletions": 25, + "additions": 99, + "author": "shad0wca7", + "changed_files": 2, + "created_at": "2026-04-11T03:39:56Z", + "deletions": 4, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/36503/files", - "html_url": "https://github.com/openclaw/openclaw/pull/36503", + "files_url": "https://github.com/openclaw/openclaw/pull/64616/files", + "html_url": "https://github.com/openclaw/openclaw/pull/64616", "merged": false, - "number": 36503, + "number": 64616, "state": "open", - "title": "fix(cron): return error when payload model override is disallowed", - "updated_at": "2026-04-18T04:22:03Z" + "title": "Tasks: mark stale ACP zombie sessions lost during maintenance", + "updated_at": "2026-04-13T00:19:57Z" } ], "pairwise": [ { - "breadth_similarity": 0.75, - "concentration_similarity": 0.9, - "content_similarity": 0.139, - "left_pr_number": 36503, - "right_pr_number": 65901, + "breadth_similarity": 1.0, + "concentration_similarity": 1.0, + "content_similarity": 0.101, + "left_pr_number": 64616, + "right_pr_number": 69247, "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", + "src/tasks", "src" ], "shared_filenames": [], - "similarity": 0.34, - "size_similarity": 0.82 + "similarity": 0.343, + "size_similarity": 0.816 } ], "pr_count": 2, "pr_numbers": [ - 36503, - 65901 + 64616, + 69247 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 65901 + 69247 ], - "representative_pr_number": 36503, - "representative_title": "fix(cron): return error when payload model override is disallowed", - "representative_url": "https://github.com/openclaw/openclaw/pull/36503", + "representative_pr_number": 64616, + "representative_title": "Tasks: mark stale ACP zombie sessions lost during maintenance", + "representative_url": "https://github.com/openclaw/openclaw/pull/64616", "shared_directories": [ - "src/cron/isolated-agent", - "src/cron", + "src/tasks", "src" ], "shared_filenames": [], - "summary": "2 open PRs cluster in `src/cron/isolated-agent`, `src/cron`, `src` with similar change breadth; representative PR #36503.", - "title": "Scope: fix(cron): return error when payload model override is disallowed" + "summary": "2 open PRs cluster in `src/tasks`, `src` with similar change breadth; representative PR #64616.", + "title": "Scope: Tasks: mark stale ACP zombie sessions lost during maintenance" }, { "authors": [ @@ -42084,63 +47641,126 @@ }, { "authors": [ - "CnxLuc" + "JustInCache" ], - "average_similarity": 0.332, - "cluster_id": "pr-scope-59935-2", + "average_similarity": 0.34, + "cluster_id": "pr-scope-53662-2", "kind": "pr_scope", - "last_activity_at": "2026-04-14T10:53:04Z", + "last_activity_at": "2026-04-21T11:56:52Z", "outside_window_prs": [ { - "additions": 119, - "author": "jerome-benoit", - "changed_files": 2, - "created_at": "2026-04-02T22:41:55Z", - "deletions": 0, + "additions": 3, + "author": "YTjungle666", + "changed_files": 1, + "created_at": "2026-03-24T12:21:25Z", + "deletions": 2, "draft": false, - "files_url": "https://github.com/openclaw/openclaw/pull/59935/files", - "html_url": "https://github.com/openclaw/openclaw/pull/59935", + "files_url": "https://github.com/openclaw/openclaw/pull/53662/files", + "html_url": "https://github.com/openclaw/openclaw/pull/53662", "merged": false, - "number": 59935, + "number": 53662, "state": "open", - "title": "fix(daemon): add Nix Home Manager PATH support to service environment", - "updated_at": "2026-04-18T12:02:21Z" + "title": "fix(control-ui): size grouped chat bubbles by content", + "updated_at": "2026-03-24T20:15:29Z" } ], "pairwise": [ { "breadth_similarity": 1.0, "concentration_similarity": 1.0, - "content_similarity": 0.101, - "left_pr_number": 59935, - "right_pr_number": 66502, + "content_similarity": 0.058, + "left_pr_number": 53662, + "right_pr_number": 68942, "shared_directories": [ - "src/daemon", - "src" + "ui/src", + "ui" ], "shared_filenames": [], - "similarity": 0.332, - "size_similarity": 0.739 + "similarity": 0.34, + "size_similarity": 1.0 } ], "pr_count": 2, "pr_numbers": [ - 59935, - 66502 + 53662, + 68942 ], "recent_pr_count": 1, "recent_pr_numbers": [ - 66502 + 68942 ], - "representative_pr_number": 59935, - "representative_title": "fix(daemon): add Nix Home Manager PATH support to service environment", - "representative_url": "https://github.com/openclaw/openclaw/pull/59935", + "representative_pr_number": 53662, + "representative_title": "fix(control-ui): size grouped chat bubbles by content", + "representative_url": "https://github.com/openclaw/openclaw/pull/53662", "shared_directories": [ - "src/daemon", - "src" + "ui/src", + "ui" + ], + "shared_filenames": [], + "summary": "2 open PRs cluster in `ui/src`, `ui` with similar change breadth; representative PR #53662.", + "title": "Scope: fix(control-ui): size grouped chat bubbles by content" + }, + { + "authors": [ + "ayeshakhalid192007-dev" + ], + "average_similarity": 0.329, + "cluster_id": "pr-scope-49460-2", + "kind": "pr_scope", + "last_activity_at": "2026-04-21T07:41:54Z", + "outside_window_prs": [ + { + "additions": 29, + "author": "yibeiopenclaw", + "changed_files": 2, + "created_at": "2026-03-18T04:41:09Z", + "deletions": 15, + "draft": false, + "files_url": "https://github.com/openclaw/openclaw/pull/49460/files", + "html_url": "https://github.com/openclaw/openclaw/pull/49460", + "merged": false, + "number": 49460, + "state": "open", + "title": "fix(telegram): enable TCP keepalive on getUpdates connections to prevent NAT timeout stalls", + "updated_at": "2026-04-20T21:41:33Z" + } + ], + "pairwise": [ + { + "breadth_similarity": 0.833, + "concentration_similarity": 0.815, + "content_similarity": 0.112, + "left_pr_number": 49460, + "right_pr_number": 68833, + "shared_directories": [ + "extensions/telegram/src", + "extensions/telegram", + "extensions" + ], + "shared_filenames": [], + "similarity": 0.329, + "size_similarity": 0.846 + } + ], + "pr_count": 2, + "pr_numbers": [ + 49460, + 68833 + ], + "recent_pr_count": 1, + "recent_pr_numbers": [ + 68833 + ], + "representative_pr_number": 49460, + "representative_title": "fix(telegram): enable TCP keepalive on getUpdates connections to prevent NAT timeout stalls", + "representative_url": "https://github.com/openclaw/openclaw/pull/49460", + "shared_directories": [ + "extensions/telegram/src", + "extensions/telegram", + "extensions" ], "shared_filenames": [], - "summary": "2 open PRs cluster in `src/daemon`, `src` with similar change breadth; representative PR #59935.", - "title": "Scope: fix(daemon): add Nix Home Manager PATH support to service environment" + "summary": "2 open PRs cluster in `extensions/telegram/src`, `extensions/telegram`, `extensions` with similar change breadth; representative PR #49460.", + "title": "Scope: fix(telegram): enable TCP keepalive on getUpdates connections to prevent NAT timeout stalls" } ]