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>
74 lines
2.1 KiB
Markdown
74 lines
2.1 KiB
Markdown
# MR-to-Issue Closure Gap
|
|
|
|
- **Command:** `lore closure-gaps`
|
|
- **Confidence:** 88%
|
|
- **Tier:** 2
|
|
- **Status:** proposed
|
|
- **Effort:** low — single join query
|
|
|
|
## What
|
|
|
|
Find entity_references where reference_type='closes' AND the target issue is still
|
|
open AND the source MR is merged. These represent broken auto-close links where a
|
|
merge should have closed an issue but didn't.
|
|
|
|
## Why
|
|
|
|
Simple, definitive, actionable. If a merged MR says "closes #42" but #42 is still
|
|
open, something is wrong. Either auto-close failed (wrong target branch), the
|
|
reference was incorrect, or the issue needs manual attention.
|
|
|
|
## Data Required
|
|
|
|
All exists today:
|
|
- `entity_references` (reference_type='closes')
|
|
- `merge_requests` (state='merged')
|
|
- `issues` (state='opened')
|
|
|
|
## Implementation Sketch
|
|
|
|
```sql
|
|
SELECT
|
|
mr.iid as mr_iid,
|
|
mr.title as mr_title,
|
|
mr.merged_at,
|
|
mr.target_branch,
|
|
i.iid as issue_iid,
|
|
i.title as issue_title,
|
|
i.state as issue_state,
|
|
p.path_with_namespace
|
|
FROM entity_references er
|
|
JOIN merge_requests mr ON er.source_entity_type = 'merge_request'
|
|
AND er.source_entity_id = mr.id
|
|
JOIN issues i ON er.target_entity_type = 'issue'
|
|
AND er.target_entity_id = i.id
|
|
JOIN projects p ON er.project_id = p.id
|
|
WHERE er.reference_type = 'closes'
|
|
AND mr.state = 'merged'
|
|
AND i.state = 'opened';
|
|
```
|
|
|
|
## Human Output
|
|
|
|
```
|
|
Closure Gaps — merged MRs that didn't close their referenced issues
|
|
|
|
group/backend !234 merged 3d ago → #42 still OPEN
|
|
"Refactor auth middleware" should have closed "Login timeout bug"
|
|
Target branch: develop (default: main) — possible branch mismatch
|
|
|
|
group/frontend !45 merged 1w ago → #38 still OPEN
|
|
"Update dashboard" should have closed "Dashboard layout broken"
|
|
```
|
|
|
|
## Downsides
|
|
|
|
- Could be intentional (MR merged to wrong branch, issue tracked across branches)
|
|
- Cross-project references may not be resolvable if target project not synced
|
|
- GitLab auto-close only works when merging to default branch
|
|
|
|
## Extensions
|
|
|
|
- Flag likely cause: branch mismatch (target_branch != project.default_branch)
|
|
- `lore closure-gaps --auto-close` — actually close the issues via API (dangerous, needs confirmation)
|