Background
Follow-up to #475. The cross-repo co-change page now frames itself honestly as a temporal, same-author hint (#481) and shows frequency and last_date per pair. A remaining ask from #475 is to show why each row exists: the actual commits, authors, and time gaps behind a co-change pair, so a user can judge whether a relationship is meaningful instead of trusting a bare score.
Proposed change
For each co-change pair, surface supporting evidence on demand (for example an expandable row or an inspector panel):
- The authors involved.
- A few example matched commit pairs (the cross-repo commit pair that created the relationship), with short SHAs and dates.
- The time gap between the paired commits.
Why this is not a "good first issue"
The current pipeline does not persist this. detect_cross_repo_co_changes in packages/core/src/repowise/core/workspace/cross_repo.py accumulates strength, frequency, and last_date per file pair, but discards the underlying commit identities and authors. Delivering this needs:
- Core: capture and persist a bounded sample of evidence per pair (author email, commit SHAs, timestamps) into
CrossRepoCoChange / the overlay JSON, with a cap so the artifact does not blow up on large workspaces.
- Server: expose the evidence through the workspace co-changes endpoint.
- Types + UI: extend
WorkspaceCoChangeEntry and render the evidence.
Pointers
- Core:
packages/core/src/repowise/core/workspace/cross_repo.py (detect_cross_repo_co_changes, CrossRepoCoChange, CrossRepoOverlay).
- Type:
WorkspaceCoChangeEntry in packages/types/src/workspace.ts.
- UI:
packages/ui/src/workspace/co-change-table.tsx.
Acceptance
- A co-change row can reveal its supporting evidence (authors, example matched commits, time gaps).
- The persisted overlay stays bounded in size (evidence is sampled/capped).
- Tests cover the new evidence capture in core.
Background
Follow-up to #475. The cross-repo co-change page now frames itself honestly as a temporal, same-author hint (#481) and shows
frequencyandlast_dateper pair. A remaining ask from #475 is to show why each row exists: the actual commits, authors, and time gaps behind a co-change pair, so a user can judge whether a relationship is meaningful instead of trusting a bare score.Proposed change
For each co-change pair, surface supporting evidence on demand (for example an expandable row or an inspector panel):
Why this is not a "good first issue"
The current pipeline does not persist this.
detect_cross_repo_co_changesinpackages/core/src/repowise/core/workspace/cross_repo.pyaccumulatesstrength,frequency, andlast_dateper file pair, but discards the underlying commit identities and authors. Delivering this needs:CrossRepoCoChange/ the overlay JSON, with a cap so the artifact does not blow up on large workspaces.WorkspaceCoChangeEntryand render the evidence.Pointers
packages/core/src/repowise/core/workspace/cross_repo.py(detect_cross_repo_co_changes,CrossRepoCoChange,CrossRepoOverlay).WorkspaceCoChangeEntryinpackages/types/src/workspace.ts.packages/ui/src/workspace/co-change-table.tsx.Acceptance