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>
2.9 KiB
2.9 KiB
Stale Discussion Finder
- Command:
lore stale-discussions [--days <N>] - Confidence: 90%
- Tier: 1
- Status: proposed
- Effort: low — single query, minimal formatting
What
List unresolved, resolvable discussions where last_note_at is older than a
threshold (default 14 days), grouped by parent entity. Prioritize by discussion
count per entity (more stale threads = more urgent).
Why
Unresolved discussions are silent blockers. They prevent MR merges, stall decision-making, and represent forgotten conversations. This surfaces them so teams can take action: resolve, respond, or explicitly mark as won't-fix.
Data Required
All exists today:
discussions(resolved, resolvable, last_note_at)issues/merge_requests(for parent entity context)
Implementation Sketch
SELECT
d.id,
d.noteable_type,
CASE WHEN d.issue_id IS NOT NULL THEN i.iid ELSE mr.iid END as entity_iid,
CASE WHEN d.issue_id IS NOT NULL THEN i.title ELSE mr.title END as entity_title,
p.path_with_namespace,
d.last_note_at,
((?1 - d.last_note_at) / 86400000) as days_stale,
COUNT(*) OVER (PARTITION BY COALESCE(d.issue_id, d.merge_request_id), d.noteable_type) as stale_count_for_entity
FROM discussions d
JOIN projects p ON d.project_id = p.id
LEFT JOIN issues i ON d.issue_id = i.id
LEFT JOIN merge_requests mr ON d.merge_request_id = mr.id
WHERE d.resolved = 0
AND d.resolvable = 1
AND d.last_note_at < ?1
ORDER BY days_stale DESC;
Human Output Format
Stale Discussions (14+ days without activity)
group/backend !234 — Refactor auth middleware (3 stale threads)
Discussion #a1b2c3 (28d stale) "Should we use JWT or session tokens?"
Discussion #d4e5f6 (21d stale) "Error handling for expired tokens"
Discussion #g7h8i9 (14d stale) "Performance implications of per-request validation"
group/backend #90 — Rate limiting design (1 stale thread)
Discussion #j0k1l2 (18d stale) "Redis vs in-memory rate counter"
Robot Mode Output
{
"ok": true,
"data": {
"threshold_days": 14,
"total_stale": 4,
"entities": [
{
"type": "merge_request",
"iid": 234,
"title": "Refactor auth middleware",
"project": "group/backend",
"stale_discussions": [
{
"discussion_id": "a1b2c3",
"days_stale": 28,
"first_note_preview": "Should we use JWT or session tokens?"
}
]
}
]
}
}
Downsides
- Some discussions are intentionally left open (design docs, long-running threads)
- Could produce noise in repos with loose discussion hygiene
- Doesn't distinguish "stale and blocking" from "stale and irrelevant"
Extensions
lore stale-discussions --mr-only— focus on MR review threads (most actionable)lore stale-discussions --author alice— "threads I started that went quiet"lore stale-discussions --assignee bob— "threads on my MRs that need attention"