Problem
Every report starts with the same boilerplate:
```bash
gh pr list --repo X --state all --limit 500 --json ... | python3 -c "flatten..."
gh issue list --repo X --state all --limit 500 --json ... | python3 -c "flatten..."
gh api graphql ... | python3 -c "extract..."
```
This is 50+ lines of Python per report, repeated identically three times across Effect-TS, React, and uv.
Proposal
New command:
```bash
vajra ingest github astral-sh/uv --output /tmp/uv_data/
Produces:
/tmp/uv_data/commits.json (from git log)
/tmp/uv_data/prs.json (from GitHub API, flattened)
/tmp/uv_data/issues.json (from GitHub API, flattened)
/tmp/uv_data/releases.json (from GitHub API)
/tmp/uv_data/reviews.json (from GitHub GraphQL)
```
Each file is a clean JSON array ready for vajra analysis. Author objects flattened to login strings. Labels flattened to comma-separated. Dates in ISO 8601.
Implementation
- Shell out to `gh` CLI (require it in PATH)
- Or use GitHub REST/GraphQL API directly via `reqwest`
- Flatten PR/issue data during ingestion (no post-processing needed)
Evidence
Built 3 reports. Wrote the same flattening code 3 times. This is the #1 time sink.
Complexity
Medium-High. New `vajra-ingest` crate with GitHub adapter.
Problem
Every report starts with the same boilerplate:
```bash
gh pr list --repo X --state all --limit 500 --json ... | python3 -c "flatten..."
gh issue list --repo X --state all --limit 500 --json ... | python3 -c "flatten..."
gh api graphql ... | python3 -c "extract..."
```
This is 50+ lines of Python per report, repeated identically three times across Effect-TS, React, and uv.
Proposal
New command:
```bash
vajra ingest github astral-sh/uv --output /tmp/uv_data/
Produces:
/tmp/uv_data/commits.json (from git log)
/tmp/uv_data/prs.json (from GitHub API, flattened)
/tmp/uv_data/issues.json (from GitHub API, flattened)
/tmp/uv_data/releases.json (from GitHub API)
/tmp/uv_data/reviews.json (from GitHub GraphQL)
```
Each file is a clean JSON array ready for vajra analysis. Author objects flattened to login strings. Labels flattened to comma-separated. Dates in ISO 8601.
Implementation
Evidence
Built 3 reports. Wrote the same flattening code 3 times. This is the #1 time sink.
Complexity
Medium-High. New `vajra-ingest` crate with GitHub adapter.