Files
gitlore/docs/ideas/contributors.md
Taylor Eernisse 4185abe05d docs: add feature ideas catalog, time-decay scoring plan, and timeline issue doc
Ideas catalog (docs/ideas/): 25 feature concept documents covering future
lore capabilities including bottleneck detection, churn analysis, expert
scoring, collaboration patterns, milestone risk, knowledge silos, and more.
Each doc includes motivation, implementation sketch, data requirements, and
dependencies on existing infrastructure. README.md provides an overview and
SYSTEM-PROPOSAL.md presents the unified analytics vision.

Plans (plans/): Time-decay expert scoring design with four rounds of review
feedback exploring decay functions, scoring algebra, and integration points
with the existing who-expert pipeline.

Issue doc (docs/issues/001): Documents the timeline pipeline bug where
EntityRef was missing project context, causing ambiguous cross-project
references during the EXPAND stage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 10:16:48 -05:00

87 lines
2.9 KiB
Markdown

# Contributor Heatmap
- **Command:** `lore contributors [--since <date>]`
- **Confidence:** 88%
- **Tier:** 2
- **Status:** proposed
- **Effort:** medium — multiple aggregation queries
## What
Rank team members by activity across configurable time windows (7d, 30d, 90d). Shows
issues authored, MRs authored, MRs merged, review comments made, discussions
participated in.
## Why
Team leads constantly ask "who's been active?" or "who's contributing to reviews?"
This answers it from local data without GitLab Premium analytics. Also useful for
identifying team members who may be overloaded or disengaged.
## Data Required
All exists today:
- `issues` (author_username, created_at)
- `merge_requests` (author_username, created_at, merged_at)
- `notes` (author_username, created_at, note_type, is_system)
- `discussions` (for participation counting)
## Implementation Sketch
```sql
-- Combined activity per author
WITH activity AS (
SELECT author_username, 'issue_authored' as activity_type, created_at
FROM issues WHERE created_at >= ?1
UNION ALL
SELECT author_username, 'mr_authored', created_at
FROM merge_requests WHERE created_at >= ?1
UNION ALL
SELECT author_username, 'mr_merged', merged_at
FROM merge_requests WHERE merged_at >= ?1 AND state = 'merged'
UNION ALL
SELECT author_username, 'review_comment', created_at
FROM notes WHERE created_at >= ?1 AND note_type = 'DiffNote' AND is_system = 0
UNION ALL
SELECT author_username, 'discussion_comment', created_at
FROM notes WHERE created_at >= ?1 AND note_type != 'DiffNote' AND is_system = 0
)
SELECT
author_username,
COUNT(*) FILTER (WHERE activity_type = 'issue_authored') as issues,
COUNT(*) FILTER (WHERE activity_type = 'mr_authored') as mrs_authored,
COUNT(*) FILTER (WHERE activity_type = 'mr_merged') as mrs_merged,
COUNT(*) FILTER (WHERE activity_type = 'review_comment') as reviews,
COUNT(*) FILTER (WHERE activity_type = 'discussion_comment') as comments,
COUNT(*) as total
FROM activity
GROUP BY author_username
ORDER BY total DESC;
```
Note: SQLite doesn't support FILTER — use SUM(CASE WHEN ... THEN 1 ELSE 0 END).
## Human Output
```
Contributors (last 30 days)
Username Issues MRs Merged Reviews Comments Total
alice 3 8 7 23 12 53
bob 1 5 4 31 8 49
charlie 5 3 2 4 15 29
dave 0 1 0 2 3 6
```
## Downsides
- Could be used for surveillance; frame as team health, not individual tracking
- Activity volume != productivity (one thoughtful review > ten "LGTM"s)
- Doesn't capture work done outside GitLab
## Extensions
- `lore contributors --project group/backend` — scoped to project
- `lore contributors --type reviews` — focus on review activity only
- Trend comparison: `--compare 30d,90d` shows velocity changes