Synthesizes findings across multiple PRs to identify cross-repository dependencies, interface mismatches, and coordination gaps.
Synthesize findings across multiple PRs to identify cross-repository dependencies, interface mismatches, and coordination gaps that wouldn't be visible when analyzing PRs in isolation.
Reference: Follow Core Review Principles from
paw-review-workflowskill.
This skill is only invoked for multi-repository reviews. Skip this activity when:
related_prs entries in ReviewContext.mdVerify these artifacts exist for each PR in the review set:
For each PR-<number>-<repo-slug>/ directory in .paw/reviews/:
ReviewContext.md (includes related_prs entries)CodeResearch.md (baseline understanding per repo)DerivedSpec.md (intent per PR)Review Mode from ReviewContext.md):single-model or absent: require ImpactAnalysis.md (includes Cross-Repository Dependencies section) + GapAnalysis.md (includes Cross-Repository Consistency findings)society-of-thought: require REVIEW-SYNTHESIS.mdIf any artifact is missing, report blocked statusβearlier stages must complete first.
CrossRepoAnalysis.md artifactFor each PR artifact directory:
Single-model mode (default):
ImpactAnalysis.md β extract Cross-Repository Dependencies sectionGapAnalysis.md β extract Cross-Repository Consistency findingsSociety-of-thought mode:
REVIEW-SYNTHESIS.md β extract findings that reference shared interfaces, external dependencies, breaking changes, or cross-repo concernsBoth modes:
3. Read ReviewContext.md β extract related_prs relationships
4. Read DerivedSpec.md β understand each PR's intent
Construct a dependency graph showing:
Repository Roles:
Dependency Types:
type-export: Shared TypeScript/flow typesapi-endpoint: REST/GraphQL endpointsevent-schema: Message/event formatspackage-export: npm/pip package public interfacesconfig-schema: Shared configuration formatsOutput:
Dependency Graph:
repo-a (API Server)
β exports: UserProfile type, /api/users endpoint
repo-b (Frontend)
β imports: UserProfile type from repo-a
β calls: /api/users endpoint from repo-a
For each identified dependency:
Extract Contract Details:
Interface Categories:
For each interface contract, check:
Mismatch Types:
Severity Assignment:
Determine deployment ordering:
Analysis Questions:
Deployment Patterns:
Create comprehensive analysis artifact in the primary repository's artifact directory.
Primary repository determination:
---
date: <ISO-8601 timestamp>
repositories: [owner/repo-a, owner/repo-b]
prs: [PR-123, PR-456]
topic: "Cross-Repository Correlation Analysis"
tags: [cross-repo, correlation, dependencies]
status: complete
---
# Cross-Repository Correlation Analysis
## Repository Relationship
| Repository | Role | PRs | Primary |
|------------|------|-----|---------|
| owner/repo-a | API Server (exports) | PR-123 | β |
| owner/repo-b | Client (imports) | PR-456 | |
## Dependency Graph
owner/repo-a ββ exports ββ owner/repo-b - UserProfile type - /api/users endpoint
## Shared Interfaces
### Interface: `UserProfile` Type
- **Type**: type-export
- **Defined in**: [repo-a/src/types/user.ts:15-25](repo-a/src/types/user.ts#L15-L25)
- **Consumed in**: [repo-b/src/api/client.ts:8](repo-b/src/api/client.ts#L8)
- **Status**: β Mismatch
**Current State:**
- repo-a adds `lastLogin: Date` field at line 22
- repo-b imports UserProfile but doesn't handle `lastLogin`
### Interface: `/api/users` Endpoint
- **Type**: api-endpoint
- **Defined in**: [repo-a/src/routes/users.ts:45-80](repo-a/src/routes/users.ts#L45-L80)
- **Consumed in**: [repo-b/src/services/userService.ts:33](repo-b/src/services/userService.ts#L33)
- **Status**: β Aligned
## Cross-Repository Gaps
### Gap: Missing Consumer Update for `lastLogin` Field
- **Severity**: Must
- **Affects**: repo-b (consumer)
- **Issue**: repo-a adds `lastLogin` field to UserProfile, but repo-b doesn't handle it
- **Evidence**:
- Added: [repo-a/src/types/user.ts:22](repo-a/src/types/user.ts#L22) - `lastLogin: Date`
- Missing: [repo-b/src/api/client.ts](repo-b/src/api/client.ts) - no handling for new field
- **Recommendation**: Update repo-b to consume or explicitly ignore the new field
- **Cross-Reference**: (See PR-456-repo-b for consumer update needed)
### Gap: [Title]
- **Severity**: Should|Could
- **Affects**: [repository]
- **Issue**: [description]
- **Evidence**:
- [file:line references]
- **Recommendation**: [specific guidance]
## Deployment Considerations
### Recommended Deployment Order
1. **First**: owner/repo-a (PR-123)
- Reason: Provides new field that repo-b will consume
- Prerequisites: None
2. **Second**: owner/repo-b (PR-456)
- Reason: Consumes new field from repo-a
- Prerequisites: repo-a deployed
### Deployment Strategy
- **Pattern**: Sequential
- **Window**: Deploy repo-a, verify, then deploy repo-b
- **Rollback**: If repo-b deployment fails, repo-a can remain (backward compatible)
### Feature Flag Coordination
- No feature flag coordination required for this change set
*OR*
- **Flag Name**: `enable_last_login_display`
- **repos Affected**: repo-a (API), repo-b (UI)
- **Rollout**: Enable flag after both repos deployed
### Migration Requirements
- [ ] No database migrations required
- [ ] No data backfill required
*OR*
- **Migration**: repo-a requires migration `add_last_login_column`
- **Order**: Run migration before deploying repo-a code
- **Reversibility**: Migration is reversible via `remove_last_login_column`
## Summary
| Metric | Count |
|--------|-------|
| Interface contracts analyzed | X |
| Mismatches found | Y |
| Must-address gaps | Z |
| Should-consider gaps | W |
**Recommended Deployment Order**: repo-a β repo-b
**Key Findings**:
1. [Most critical cross-repo issue]
2. [Second most critical issue]
Before marking complete:
(See PR-<number>-<repo-slug> for...)If some repositories have artifacts but others don't:
If dependency direction is unclear:
If analysis finds no shared interfaces:
Report:
.paw/reviews/<primary-identifier>/CrossRepoAnalysis.md