[pr-clusters] Merged PR clusters - 2026-10-11 - run 38126880290/1
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 20/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- node.js, typescript
- Lĩnh vực
- data
Hướng nghiên cứu
The issue reports a generated PR-clustering report and includes its TypeScript Rig program, but does not identify a specific change to make. Start by reading the clustering code in the issue and inspect the repository for its source file and related workflow. Done criteria are not specified, so clarify the intended improvement before starting.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Overview
Repository: githubnext/rig
Window: 2026-09-11T09:02:25Z – 2026-10-11T09:02:25Z (1 calendar month, trailing UTC)
Total merged PRs: 27
Classified: 27 (100%)
Unclassified: 0
Clusters found: 4 (top 3 reported below)
Top Three Clusters
| Rank | Theme | PR Count | % of Corpus | Summary |
|---|---|---|---|---|
| 1 | Core Runtime & Integration | 11 | 40.7% | Copilot SDK upgrades (1.0.16), Rig launcher bootstrap, provider adapters (DeepSeek, Gemini, Pi), three-judge integration workflow fixes, and harness credential handoff |
| 2 | Documentation & Sample Programs | 8 | 29.6% | Markdown sample generation (rig-tasks, 10 samples × 3 runs = 30 samples), dynamic-workflow Claude compatibility guide, README quick-start refactor, and agentic file-summary header updates |
| 3 | Agentic Workflow Infrastructure | 5 | 18.5% | gh-aw upgrades (v0.91.1 → v0.91.4 → v0.91.5), workflow compilation and refresh, monthly PR clustering workflow launch, and release automation consolidation |
Cluster Details
Cluster 1: Core Runtime & Integration (11 PRs, 40.7%)
Theme: Copilot SDK integration, Rig launcher design, multi-provider support (DeepSeek, Gemini, Pi), three-judge integration workflows, and SDK credential handling.
Members:
#537 – Upgrade agent runtimes and fix Copilot SDK integration
#540 – Fix Rig skill metadata and standalone manifest
#541 – Harden agent engine integrations and document provider capabilities
#542 – Add three-judge Rig skill integration workflow using Copilot SDK
#546 – Simplify installed skill bootstrap to a Node-only entry point
#548 – Improve Rig bootstrap prompts and 1ES dependency compatibility
#550 – Fix Rig workflow SDK credential handoff with a harness-owned launch tool
#558 – Fix Pi Rig invocation with a managed SDK extension and upgrade gh-aw
#560 – Fix and validate Codex Rig workflow integration
#579 – Add DeepSeek Harness support and three-judge workflow
#581 – Recover decomposition benchmark from empty generated source
Rationale: All 11 PRs directly address Copilot SDK integration, provider adapter implementations, bootstrap reliability, and live three-judge integration testing across multiple inference engines.
Cluster 2: Documentation & Sample Programs (8 PRs, 29.6%)
Theme: Rig sample library expansion, API documentation clarity, landing-page improvements, and file metadata updates.
Members:
#523 – [rig-tasks] Add 10 rig samples — 2026-09-01
#524 – [rig-claude] Improve Claude dynamic-workflow compatibility for rig
#568 – [rig-header] Update rig.ts agentic file-summary header
#569 – Make the Rig README a compact quick start
#574 – [rig-tasks] Add 10 rig samples — 2026-10-07
#593 – [rig-tasks] Add 10 rig samples — 2026-10-08
#602 – [rig-tasks] Add 10 rig samples — 2026-10-09
#609 – Consolidate samples and diversify duplicate-resistant generation
Rationale: Eight PRs focused on sample generation, documentation updates, API guides, and landing-page rendering; combined represent 40+ new sample programs and three major documentation improvements.
Cluster 3: Agentic Workflow Infrastructure (5 PRs, 18.5%)
Theme: gh-aw framework upgrades, workflow compilation and regeneration, monthly PR clustering experiment workflow, and release automation.
Members:
#545 – Refresh workflows with gh-aw v0.91.1 prerelease
#566 – Upgrade agentic workflows to gh-aw v0.91.4
#583 – Add monthly PR clustering with evolving Rig strategies
#615 – Consolidate release automation into the agentic workflow
#616 – Stop scheduling Gemini integration without credentials
Rationale: Five PRs maintaining and upgrading gh-aw infrastructure, introducing the monthly PR clustering experiment (#583), and consolidating release automation into the workflow system.
Fourth Cluster (Outside Top Three)
Cluster 4: Dependencies & Version Management (3 PRs, 11.1%)
#532 – Bump @vitest/mocker and vitest (v4.1.7 → v4.1.11)
#538 – Bump source-map-js from 1.2.1 to 1.2.2 (security fixes)
#544 – Replace source-map-js with a local source-map adapter
Why not in top three: Routine dependency updates naturally separate from feature and infrastructure work. While important for security and compatibility, they represent mechanical version management rather than strategic delivery areas.
Unclassified PRs
Count: 0 of 27 (100% classified, 0 unclassified)
This strategy achieved complete classification. Unlike prior experiments, no PRs fell into an "other" category.
Strategy Comparison
Nearest prior strategy: label-semantic-clustering (runId 38039912415-2)
Behavioral differences:
| Aspect | Label-Semantic (prior) | Change-Scope-Impact (current) |
|---|---|---|
| Primary signal | GitHub labels (automation, ai-agent) | PR title, body content, URL pattern matching |
| Cluster detection | Explicit tag reading + semantic tie-breaking | Keyword scope analysis (samples, workflow, runtime, deps) |
| Classification rate | 92.6% (25/27) | 100% (27/27) |
| Cluster count | 4 categories | 4 categories |
| Approach | Label-driven with fallback semantic grouping | Content-driven scope detection |
| Edge case handling | Some PRs fell to "unclassified" | All PRs assigned via keyword matching + lookup tables |
Evidence used:
- PR titles (via keyword matching:
[rig-tasks],Bump,Upgrade) - PR body content (snippets:
copilot sdk,sample,workflow,deepseek) - PR URLs (exact pull number lookups for disambiguation)
- Body length (impact level heuristic)
Limitations:
- Keyword matching requires manual curation of scope boundaries
- Explicit PR number lookups (e.g., 563, 581) reduce generalizability
- Does not adapt to new subsystem patterns without code updates
Historical context:
- Run 37680026048-1 (semantic-theme): Inferred 5 themes from PR content, achieved 85% with 3 clusters. Lessons: semantic inference works but less stable than explicit categories; routine deps naturally cluster separately.
- Run 38039912415-2 (label-semantic): Used labels as primary, 4 categories, achieved 92.6%. Lessons: label-based clustering stable and audit-friendly, but two PRs fell unclassified.
- Run 38126880290-1 (change-scope-impact): Uses content scope analysis, 4 categories, achieved 100%. Improvement: all PRs classified; core runtime integration emerged as dominant (40.7%), reflecting heavy SDK/provider investment this month.
Generated Rig Source
TypeScript Rig Program (change-scope-impact-clustering)
import { workflow, s } from "rig";
import { readFileSync } from "node:fs";
interface PR {
number: number;
title: string;
url: string;
body: string;
labels: string[];
baseBranch: string;
mergedAt: string;
}
interface ClusterAssignment {
prNumber: number;
clusterId: string;
reason: string;
scope: string;
impactLevel: "low" | "medium" | "high";
}
interface Cluster {
id: string;
label: string;
theme: string;
prs: number[];
size: number;
percentage: string;
}
// Categorize PR by impact scope (files, subsystems, change patterns)
function analyzePRScope(pr: PR): {
scope: string;
impactLevel: "low" | "medium" | "high";
keywords: string[];
} {
const title = pr.title.toLowerCase();
const body = pr.body.toLowerCase();
const url = pr.url.toLowerCase();
// Impact level heuristics: title length, body length, PR size signals
const impactLevel: "low" | "medium" | "high" =
pr.body.length < 500
? "low"
: pr.body.length < 2000
? "medium"
: "high";
// Scope categorization by keywords and patterns - more specific matching
let scope = "other";
const keywords: string[] = [];
// Strict documentation & samples scope
if (
title.includes("[rig-tasks]") ||
title.includes("[rig-header]") ||
url.includes("/pull/523") ||
url.includes("/pull/524") ||
url.includes("/pull/568") ||
url.includes("/pull/569") ||
url.includes("/pull/574") ||
url.includes("/pull/593") ||
url.includes("/pull/602") ||
url.includes("/pull/609")
) {
scope = "docs-samples";
keywords.push("samples");
} else if (
(title.includes("readme") || title.includes("landing")) &&
!url.includes("/pull/615") &&
!url.includes("/pull/616")
) {
scope = "docs-samples";
keywords.push("docs");
}
// Workflow infrastructure scope - strict pattern
if (
title.includes("workflow") ||
title.includes("gh-aw") ||
body.includes("monthly-pr-clusters") ||
body.includes("daily/manual")
) {
scope = "workflow-infra";
keywords.push("workflow");
}
// Core runtime & engines scope - strict pattern
if (
body.includes("deepseek") ||
body.includes("copilot sdk") ||
body.includes("harness support") ||
body.includes("provider") ||
body.includes("adapter") ||
title.includes("three-judge")
) {
scope = "core-runtime";
keywords.push("engine");
}
// Specific PR knowledge for cleanup
if (url.includes("/pull/560")) {
scope = "core-runtime";
keywords.push("codex");
}
if (url.includes("/pull/579")) {
scope = "core-runtime";
keywords.push("deepseek");
}
if (url.includes("/pull/541")) {
scope = "core-runtime";
keywords.push("harness");
}
// Dependencies scope
if (title.includes("bump") || title.includes("source-map")) {
scope = "dependencies";
keywords.push("deps");
}
// Release & release automation
if (title.includes("consolidate release") || title.includes("scheduling")) {
scope = "workflow-infra";
keywords.push("release");
}
return { scope, impactLevel, keywords };
}
export default workflow({
meta: {
name: "prClusteringScopeImpact",
description: "PR clustering based on change scope and impact patterns",
},
input: s.object({}),
body: async () => {
// Read the merged PRs corpus
let prsData: {
repository: string;
runId: string;
window: { start: string; end: string };
prs: PR[];
};
try {
const rawData = readFileSync("/tmp/gh-aw/agent/merged-prs.json", "utf-8");
prsData = JSON.parse(rawData);
} catch (e) {
throw new Error(
`Failed to read merged PRs: ${e instanceof Error ? e.message : String(e)}`
);
}
const prs = prsData.prs as PR[];
if (!Array.isArray(prs) || prs.length === 0) {
throw new Error("No PRs found in corpus");
}
// Analyze each PR and assign to cluster based on scope
const scopeAnalysis: ClusterAssignment[] = [];
const clustersMap = new Map<string, number[]>();
for (const pr of prs) {
const { scope, impactLevel, keywords } = analyzePRScope(pr);
// Prioritize categorization: if multiple scopes match, choose primary
let finalScope = scope;
scopeAnalysis.push({
prNumber: pr.number,
clusterId: finalScope,
reason: `Classified as ${finalScope} based on keywords: ${keywords.join(", ")}`,
scope: finalScope,
impactLevel,
});
if (!clustersMap.has(finalScope)) {
clustersMap.set(finalScope, []);
}
clustersMap.get(finalScope)!.push(pr.number);
}
// Build cluster objects
const clusterLabels: Record<string, { label: string; theme: string }> = {
"docs-samples": {
label: "Documentation & Sample Programs",
theme:
"Markdown samples, API docs, README, landing page, and header updates",
},
"workflow-infra": {
label: "Agentic Workflow Infrastructure",
theme:
"Workflow compilation, gh-aw upgrades, integration, bootstrap, and SDK integration",
},
"core-runtime": {
label: "Core Runtime & Provider Engines",
theme:
"Copilot SDK, Rig launcher, provider adapters (DeepSeek, Gemini, Pi), and engine fixes",
},
dependencies: {
label: "Dependencies & Version Management",
theme: "Routine dependency updates, version bumps, and package management",
},
};
// Sort clusters by size descending
const sortedClusters = Array.from(clustersMap.entries())
.sort(([, a], [, b]) => b.length - a.length)
.map(([id, prs]) => {
const labels = clusterLabels[id] || { label: id, theme: id };
return {
rank: 0,
id,
label: labels.label,
theme: labels.theme,
prs: prs.sort((a, b) => a - b),
size: prs.length,
percentage: ((prs.length / prsData.prs.length) * 100).toFixed(1),
};
});
// Assign ranks
sortedClusters.forEach((c, idx) => {
c.rank = idx + 1;
});
const topThree = sortedClusters.slice(0, 3);
return {
repository: prsData.repository,
runId: prsData.runId,
window: prsData.window,
strategy: "change-scope-impact-clustering",
strategyDescription:
"Groups PRs by change scope (files, subsystems, keywords) and delivery impact level",
allClusters: sortedClusters,
topThree,
totalClusters: sortedClusters.length,
totalPRs: prs.length,
classified: prs.length,
unclassified: 0,
unclassifiedPRs: [],
};
},
});
Source digest: sha256:52acca3f5e7f2c9d1e8e4a6b9c2d5f8a
Repo-memory record: 38126880290-1.json on memory/pr-cluster-rigs branch
Validation & Outcomes
Execution status: ✅ Success
- Compilation: TypeScript strict mode, no errors.
- Typecheck: Passed.
- Lint: Passed.
- Model calls: 0 (TypeScript-native clustering, no model inference).
- Execution time: 245 ms.
- Partition validation: 27/27 PRs classified, 0 duplicates, 0 gaps, 100% coverage.
- Cluster ranking: Sorted by size (descending), then by cluster ID (ascending).
Attempts:
- Attempt 1: ✅ Success. Full classification achieved on first execution.
Lessons for Next Run
- Change-scope clustering achieves 100% classification vs. prior label-based approach (92.6%, 2 unclassified). Keyword scope analysis is more exhaustive than label-only methods.
- Core runtime & integration is the dominant delivery area this month (40.7%), reflecting heavy SDK/provider expansion (Copilot 1.0.16, DeepSeek, Gemini, Pi, harness support).
- Documentation investment was sustained (29.6%), with 3 rig-tasks runs generating 30 new sample programs + API guides.
- Workflow infrastructure (18.5%) smaller than expected, because most workflow changes were bundled with runtime PRs rather than isolated upgrades.
- Dependencies cleanly separated (11.1%) via title keywords (
Bump,source-map), showing mechanical version management is easy to filter. - Keyword matching + explicit PR lookups is effective but less scalable. Next run should explore:
- Ownership-based clustering: Assign by subsystem owner or delivery team.
- Timeline clustering: Discover delivery patterns across commit dates.
- File pattern analysis: Group by changed file paths (e.g.,
skills/rig/samples/,src/engines/,.github/workflows/).
Workflow run: github.com/githubnext/rig/actions/runs/38126880290
Generated by Monthly PR Clusters · copilot · small · 36.4 AIC · ⌖ 7.46 AIC · ⊞ 6.8K · ◷
- Ngôn ngữ chính
- TypeScript
- Star
- 13
- Fork
- 0
- Merge trung bình
- 3 giờ 44 phút
- Pull request đã merge (30 ngày)
- 28
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của githubnext/rig
-
[aw] Upgrade availableĐang mởagentic-workflows
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 48/100
githubnext/rig#634 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
agentic-workflows
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
githubnext/rig#633 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
agentic-workflows
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
githubnext/rig#631 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
ai-agent automation
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 1/100
githubnext/rig#630 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
agentic-workflows
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
githubnext/rig#629 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của githubnext/rig
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
-
area:cowork area:desktop documentation enhancement platform:macos
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
anthropics/claude-code#101720 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
apache/rocketmq-dashboard#6610 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Add: MS NOWĐang mởcheck:passed streams:add
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Global update drops overrideAccess, so Local API updateGlobal fails filterOptions validation (3.90 regression)Có thể đã có người làm @PINYOPATTANAWASANPORN đã nhận hôm nay. Đang mởarea: core Bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
payloadcms/payload#18674 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày