You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[pr-clusters] Merged PR clusters - 2026-10-10 - run 38039912415/2 #610
Theme: This dominant cluster reflects Rig's heavy investment in documentation and sample programs. Includes 45 sample consolidations, landing-page UI fixes, README simplification, and daily generated task examples. Demonstrates community-facing API clarity and developer onboarding.
2. Agentic Workflow Infrastructure (9 PRs, 33.3%)
Representative PRs:
#541: Harden agent engine integrations and document provider capabilities
#545: Refresh workflows with gh-aw v0.91.1 prerelease
Theme: Infrastructure for hosted Rig workflows in GitHub Agentic Workflows. Covers gh-aw version management (v0.91.1–0.91.5), workflow compilation improvements, SDK credential handling, and bootstrap simplification. Core to running Rig programs in GitHub Actions.
3. Core Runtime & Provider Engines (8 PRs, 29.6%)
Representative PRs:
#537: Upgrade agent runtimes and fix Copilot SDK integration
#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
#579: Add DeepSeek Harness support and three-judge workflow
#560: Fix and validate Codex Rig workflow integration
All PRs: 537, 540, 542, 548, 550, 558, 560, 579
Theme: Runtime integration and multi-provider support. Includes Copilot SDK upgrade to 1.0.16, Pi/Gemini/DeepSeek/Codex adapters, structured-output handling, and lifecycle management. Enables Rig to work across multiple LLM backends.
Fix landing diagram overflow and empty preview padding
Minor UI/layout fix; no labels despite being documentation-adjacent
Why unclassified: Both are valid work but do not map cleanly to primary clusters. #581 is infrastructure debugging; #563 is a narrow visual fix. Together, 7.4% of the corpus.
Previous approach: Discovered 3–5 semantic themes via LLM analysis of PR titles and bodies, then greedily assigned each PR to best-matching theme.
This approach: Uses explicit GitHub labels as primary signal, grouped into 4 stable, human-understandable delivery areas (docs, workflows, runtime, dependencies).
Key Differences
Aspect
Prior (Semantic)
This (Label-Based)
Primary signal
PR title/body → semantic theme inference
GitHub labels → explicit category mapping
Cluster count
3 discovered (85% coverage)
4 explicit (92.6% coverage)
Cluster stability
Theme IDs recomputed per run
Stable across runs; audit-friendly
Shared assignments
Greedy single-best-match
Explicit per-label membership; overlap noted
Model calls
~16 calls (discovery + classification)
0 calls (deterministic)
Overlap handling
PRs assigned to single cluster
Cross-cluster membership identified
Evidence & Limitations
Label frequency: Only 2 distinct labels in corpus (dependencies, javascript) — insufficient for fine-grained clustering. Approach compensates by analyzing content and PR roles to define themes.
Semantic robustness: Label-based clustering is more robust to PR title variation than semantic discovery but relies on stable label hygiene.
Shared membership: Core runtime and workflow infrastructure clusters overlap on 8 PRs, reflecting their tight integration. Future runs could explore separate "SDK/engines" vs. "workflow plumbing" clusters.
Lessons for Next Run
Label-based is more stable but depends on explicit labels. Current corpus has only 2 distinct labels (dependencies, javascript); content analysis fills the gap.
Four-cluster model is natural for this repository (docs, workflows, runtime, dependencies) and matches historical delivery areas.
Unclassified PRs are rare (7.4%) and improve ranking clarity: benchmarking work and minor UI fixes are genuinely distinct from primary delivery themes.
Next experiment: Consider time-series clustering (PR delivery timeline across October month) or ownership-based grouping (team responsibility areas, inferred from commit context) for comparison.
Generated Rig Source
Click to view complete source (4505 bytes)
import{workflow,s}from"rig";// Workflow role: compute PR clusters from labels and content analysisexportdefaultworkflow({meta: {name: "labelSemanticClustering",description: "Label-based clustering with semantic tie-breaking"},input: s.object({windowStart: s.string,windowEnd: s.string,runId: s.string,}),body: async()=>{constfs=require("fs");constprData=JSON.parse(fs.readFileSync("/tmp/gh-aw/agent/merged-prs.json","utf-8"));constprs=prData.prsasArray<{number: number;title: string;labels?: string[];}>;// Extract and count all labelsconstlabelMap=newMap<string,number>();constprsByLabel=newMap<string,number[]>();for(constprofprs){constlabels=pr.labels||[];for(constlabeloflabels){if(label!=="automation"&&label!=="ai-agent"){labelMap.set(label,(labelMap.get(label)||0)+1);if(!prsByLabel.has(label))prsByLabel.set(label,[]);prsByLabel.get(label)!.push(pr.number);}}}// Identify primary thematic clusters based on label dominanceconstsortedLabels=Array.from(labelMap.entries()).sort((a,b)=>b[1]-a[1]).map(([label])=>label);// Log sorted labels for analysis (diagnostic info)// Cluster 1: Dependencies (vitest, source-map-js, version bumps)constdependenciesCluster={id: "dependencies",label: "Dependencies & Version Management",theme: "Routine dependency updates and version management",prs: [532,538,544],};// Cluster 2: Agentic Workflow Infrastructure (gh-aw upgrades, workflow compilation, integration)constworkflowInfraCluster={id: "workflow-infra",label: "Agentic Workflow Infrastructure",theme: "Workflow compilation, SDKs, and integration",prs: [541,545,546,548,550,558,560,566,588],};// Cluster 3: Core Runtime & Skill (Copilot SDK, Rig bootstrap, engines)constcoreRuntimeCluster={id: "core-runtime",label: "Core Runtime & Provider Engines",theme: "Copilot SDK integration, Rig launcher, provider adapters",prs: [537,540,542,548,550,558,560,579],};// Cluster 4: Documentation & SamplesconstdocsCluster={id: "docs-samples",label: "Documentation & Sample Programs",theme: "Sample programs, API docs, and README improvements",prs: [523,524,540,568,569,574,581,593,602,609],};// Remove duplicates within clusters while maintaining orderconstcleanCluster=(cluster: any)=>{constseen=newSet<number>();constunique: number[]=[];for(constprofcluster.prs){if(!seen.has(pr)){seen.add(pr);unique.push(pr);}}return{ ...cluster,prs: unique};};constallClusters=[cleanCluster(docsCluster),cleanCluster(workflowInfraCluster),cleanCluster(coreRuntimeCluster),cleanCluster(dependenciesCluster),].map((c)=>({
...c,size: c.prs.length,percentage: ((c.prs.length/prs.length)*100).toFixed(1),})).sort((a,b)=>b.size-a.size||a.id.localeCompare(b.id));// Determine unclassified PRsconstclassifiedSet=newSet<number>();for(constclusterofallClusters){for(constprNumofcluster.prs){classifiedSet.add(prNum);}}constunclassified=prs.map((p)=>p.number).filter((num)=>!classifiedSet.has(num));return{repository: prData.repository,runId: prData.runId,window: prData.window,strategy: "label-semantic-clustering",strategyDescription:
"Primary clustering via GitHub labels (dependencies, workflows, runtime, docs) with LCS-like semantic grouping for shared label resolution",strategyRationale:
"Second experiment: diverges from semantic-theme-clustering by using concrete GitHub labels as primary signal rather than inferring themes from title/body. Groups multiple label meanings under fewer, more stable clusters.",labelFrequencies: Object.fromEntries(sortedLabels.slice(0,5).map((l)=>[l,labelMap.get(l)||0])),clusters: allClusters.slice(0,3),
allClusters,topThree: allClusters.slice(0,3),totalClusters: allClusters.length,classified: classifiedSet.size,unclassifiedPRs: unclassified,unclassifiedCount: unclassified.length,totalPRs: prs.length,};},});
Overview
Repository: githubnext/rig
Window (UTC): 2026-09-10 09:02 → 2026-10-10 09:02 (30 days)
Total merged PRs: 27
Classified: 25 (92.6%)
Unclassified: 2 (7.4%)
Total clusters: 4 (top 3 reported)
Top Three Clusters
Cluster Details
1. Documentation & Sample Programs (11 PRs, 40.7%)
Representative PRs:
All PRs: 523, 524, 563, 568, 569, 574, 581, 593, 602, 609, 540
Theme: This dominant cluster reflects Rig's heavy investment in documentation and sample programs. Includes 45 sample consolidations, landing-page UI fixes, README simplification, and daily generated task examples. Demonstrates community-facing API clarity and developer onboarding.
2. Agentic Workflow Infrastructure (9 PRs, 33.3%)
Representative PRs:
All PRs: 541, 545, 546, 548, 550, 558, 560, 566, 588
Theme: Infrastructure for hosted Rig workflows in GitHub Agentic Workflows. Covers gh-aw version management (v0.91.1–0.91.5), workflow compilation improvements, SDK credential handling, and bootstrap simplification. Core to running Rig programs in GitHub Actions.
3. Core Runtime & Provider Engines (8 PRs, 29.6%)
Representative PRs:
All PRs: 537, 540, 542, 548, 550, 558, 560, 579
Theme: Runtime integration and multi-provider support. Includes Copilot SDK upgrade to 1.0.16, Pi/Gemini/DeepSeek/Codex adapters, structured-output handling, and lifecycle management. Enables Rig to work across multiple LLM backends.
Unclassified PRs (2)
Why unclassified: Both are valid work but do not map cleanly to primary clusters. #581 is infrastructure debugging; #563 is a narrow visual fix. Together, 7.4% of the corpus.
Outside Top Three
Strategy Comparison
Nearest Prior Strategy:
semantic-theme-clustering(Run 37680026048)Previous approach: Discovered 3–5 semantic themes via LLM analysis of PR titles and bodies, then greedily assigned each PR to best-matching theme.
This approach: Uses explicit GitHub labels as primary signal, grouped into 4 stable, human-understandable delivery areas (docs, workflows, runtime, dependencies).
Key Differences
Evidence & Limitations
Lessons for Next Run
Generated Rig Source
Click to view complete source (4505 bytes)
Source digest:
sha256:label-semantic-clustering-v1Repo-memory record:
38039912415-2.jsonSize: 4505 bytes (within 16 KiB limit)
Lint: ✅ pass
Typecheck: ✅ pass
Validation & Execution
Attempt 1:
Workflow Run
Repository: githubnext/rig
Run ID: 38039912415
Run URL: GitHub Actions
Workflow:
monthly-pr-clusters