Files
gitlore/docs/command-surface-analysis/05-overlap-analysis.md
teernisse 3f38b3fda7 docs: add comprehensive command surface analysis
Deep analysis of the full `lore` CLI command surface (34 commands across
6 categories) covering command inventory, data flow, overlap analysis,
and optimization proposals.

Document structure:
- Main consolidated doc: docs/command-surface-analysis.md (1251 lines)
- Split sections in docs/command-surface-analysis/ for navigation:
  00-overview.md      - Summary, inventory, priorities
  01-entity-commands.md   - issues, mrs, notes, search, count
  02-intelligence-commands.md - who, timeline, me, file-history, trace, related, drift
  03-pipeline-and-infra.md    - sync, ingest, generate-docs, embed, diagnostics
  04-data-flow.md     - Shared data source map, command network graph
  05-overlap-analysis.md  - Quantified overlap percentages for every command pair
  06-agent-workflows.md   - Common agent flows, round-trip costs, token profiles
  07-consolidation-proposals.md  - 5 proposals to reduce 34 commands to 29
  08-robot-optimization-proposals.md - 6 proposals for --include, --batch, --depth
  09-appendices.md    - Robot output envelope, field presets, exit codes

Key findings:
- High overlap pairs: who-workload/me (~85%), health/doctor (~90%)
- 5 consolidation proposals to reduce command count by 15%
- 6 robot-mode optimization proposals targeting agent round-trip reduction
- Full DB table mapping and data flow documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-28 00:08:31 -05:00

171 lines
8.4 KiB
Markdown

# Overlap Analysis
Quantified functional duplication between commands.
---
## 1. High Overlap (>70%)
### `who workload` vs `me` — 85% overlap
| Dimension | `who @user` (workload) | `me --user @user` |
|---|---|---|
| Assigned issues | Yes | Yes |
| Authored MRs | Yes | Yes |
| Reviewing MRs | Yes | Yes |
| Attention state | No | **Yes** |
| Activity feed | No | **Yes** |
| Since-last-check inbox | No | **Yes** |
| Cross-project | Yes | **Yes** |
**Verdict:** `who workload` is a strict subset of `me`. The only reason to use `who workload` is if you DON'T want attention_state/activity/inbox — but `me --issues --mrs --fields minimal` achieves the same thing.
### `health` vs `doctor` — 90% overlap
| Check | `health` | `doctor` |
|---|---|---|
| Config found | Yes | Yes |
| DB exists | Yes | Yes |
| Schema current | Yes | Yes |
| Token valid | No | **Yes** |
| GitLab reachable | No | **Yes** |
| Ollama available | No | **Yes** |
**Verdict:** `health` is a strict subset of `doctor`. However, `health` has unique value as a ~50ms pre-flight with clean exit 0/19 semantics for scripting.
### `file-history` vs `trace` — 75% overlap
| Feature | `file-history` | `trace` |
|---|---|---|
| Find MRs for file | Yes | Yes |
| Rename chain BFS | Yes | Yes |
| DiffNote discussions | `--discussions` | `--discussions` |
| Follow to linked issues | No | **Yes** |
| `--merged` filter | **Yes** | No |
**Verdict:** `trace` is a superset of `file-history` minus the `--merged` filter. Both use the same `resolve_rename_chain()` function and query `mr_file_changes`.
### `related` query-mode vs `search --mode semantic` — 80% overlap
| Feature | `related "text"` | `search "text" --mode semantic` |
|---|---|---|
| Vector similarity | Yes | Yes |
| FTS component | No | No (semantic mode skips FTS) |
| Filters (labels, author, since) | No | **Yes** |
| Explain ranking | No | **Yes** |
| Field selection | No | **Yes** |
| Requires Ollama | Yes | Yes |
**Verdict:** `related "text"` is `search --mode semantic` without any filter capabilities. The entity-seeded mode (`related issues 42`) is NOT duplicated — it seeds from an existing entity's embedding.
---
## 2. Medium Overlap (40-70%)
### `who expert` vs `who overlap` — 50%
Both answer "who works on this file" but with different scoring:
| Aspect | `who expert` | `who overlap` |
|---|---|---|
| Scoring | Half-life decay, signal types (diffnote_author, reviewer, etc.) | Raw touch count |
| Output | Ranked experts with scores | Users with touch counts |
| Use case | "Who should review this?" | "Who else touches this?" |
**Verdict:** Overlap is a simplified version of expert. Expert could include touch_count as a field.
### `timeline` vs `trace` — 45%
Both follow `entity_references` to discover connected entities, but from different entry points:
| Aspect | `timeline` | `trace` |
|---|---|---|
| Entry point | Entity (issue/MR) or search query | File path |
| Direction | Entity -> cross-refs -> events | File -> MRs -> issues -> discussions |
| Output | Chronological events | Causal chains (why code changed) |
| Expansion | Depth-controlled cross-ref following | MR -> issue via entity_references |
**Verdict:** Complementary, not duplicative. Different questions, shared plumbing.
### `auth` vs `doctor` — 100% of auth
`auth` checks: token set + GitLab reachable + user identity.
`doctor` checks: all of the above + DB + schema + Ollama.
**Verdict:** `auth` is completely contained within `doctor`.
### `count` vs `stats` — 40%
Both answer "how much data?":
| Aspect | `count` | `stats` |
|---|---|---|
| Layer | Entity (issues, MRs, notes) | Document index |
| State breakdown | Yes (opened/closed/merged) | No |
| Integrity checks | No | Yes |
| Queue status | No | Yes |
**Verdict:** Different layers. Could be unified under `stats --entities`.
### `notes` vs `issues/mrs detail` — 50%
Both return note content:
| Aspect | `notes` command | Detail view discussions |
|---|---|---|
| Independent filtering | **Yes** (author, path, resolution, contains, type) | No |
| Parent context | Minimal (parent_iid, parent_title) | **Full** (complete entity + all discussions) |
| Cross-entity queries | **Yes** (all notes matching criteria) | No (one entity only) |
**Verdict:** `notes` is for filtered queries across entities. Detail views are for complete context on one entity. Different use cases.
---
## 3. No Significant Overlap
| Command | Why It's Unique |
|---|---|
| `drift` | Only command doing semantic divergence detection |
| `timeline` | Only command doing multi-entity chronological reconstruction with expansion |
| `search` (hybrid) | Only command combining FTS + vector with RRF ranking |
| `me` (inbox) | Only command with cursor-based since-last-check tracking |
| `who expert` | Only command with half-life decay scoring by signal type |
| `who reviews` | Only command analyzing review patterns (approval rate, latency) |
| `who active` | Only command surfacing unresolved discussions needing attention |
---
## 4. Overlap Adjacency Matrix
Rows/columns are commands. Values are estimated functional overlap percentage.
```
issues mrs notes search who-e who-w who-r who-a who-o timeline me fh trace related drift count status stats health doctor
issues - 30 50 20 5 40 0 5 0 15 40 0 10 10 0 20 0 10 0 0
mrs 30 - 50 20 5 40 0 5 0 15 40 5 10 10 0 20 0 10 0 0
notes 50 50 - 15 15 0 5 10 0 10 0 5 5 0 0 0 0 0 0 0
search 20 20 15 - 0 0 0 0 0 15 0 0 0 80 0 0 0 5 0 0
who-expert 5 5 15 0 - 0 10 0 50 0 0 10 10 0 0 0 0 0 0 0
who-workload 40 40 0 0 0 - 0 0 0 0 85 0 0 0 0 0 0 0 0 0
who-reviews 0 0 5 0 10 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0
who-active 5 5 10 0 0 0 0 - 0 5 0 0 0 0 0 0 0 0 0 0
who-overlap 0 0 0 0 50 0 0 0 - 0 0 10 5 0 0 0 0 0 0 0
timeline 15 15 10 15 0 0 0 5 0 - 5 5 45 0 0 0 0 0 0 0
me 40 40 0 0 0 85 0 0 0 5 - 0 0 0 0 0 5 0 5 5
file-history 0 5 5 0 10 0 0 0 10 5 0 - 75 0 0 0 0 0 0 0
trace 10 10 5 0 10 0 0 0 5 45 0 75 - 0 0 0 0 0 0 0
related 10 10 0 80 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0
drift 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0
count 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 40 0 0
status 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 - 20 30 40
stats 10 10 0 5 0 0 0 0 0 0 0 0 0 0 0 40 20 - 0 15
health 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 30 0 - 90
doctor 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 40 15 90 -
```
**Highest overlap pairs (>= 75%):**
1. `health` / `doctor` — 90%
2. `who workload` / `me` — 85%
3. `related` query-mode / `search semantic` — 80%
4. `file-history` / `trace` — 75%