# Scorecard Generator Documentation

## Overview

The Scorecard Generator analyzes overnight loop JSONL data and produces comprehensive reports with statistics, trends, and recommendations.

## Usage

### Basic Usage

```bash
# Generate scorecard from default input directory
python uni-wizard/scripts/generate_scorecard.py

# Specify custom input/output directories
python uni-wizard/scripts/generate_scorecard.py \
    --input ~/shared/overnight-loop \
    --output ~/timmy/reports
```

### Cron Setup

```bash
# Generate scorecard every morning at 6 AM
0 6 * * * /root/timmy/venv/bin/python /root/timmy/uni-wizard/scripts/generate_scorecard.py
```

## Input Format

JSONL files in `~/shared/overnight-loop/*.jsonl`:

```json
{"task": "read-soul", "status": "pass", "duration_s": 19.7, "timestamp": "2026-03-29T21:54:12Z"}
{"task": "check-health", "status": "fail", "duration_s": 5.2, "error": "timeout", "timestamp": "2026-03-29T22:15:33Z"}
```

Fields:
- `task`: Task identifier
- `status`: "pass" or "fail"
- `duration_s`: Execution time in seconds
- `timestamp`: ISO 8601 timestamp
- `error`: Error message (for failed tasks)

## Output

### JSON Report

`~/timmy/reports/scorecard_YYYYMMDD.json`:

```json
{
  "generated_at": "2026-03-30T06:00:00Z",
  "summary": {
    "total_tasks": 100,
    "passed": 95,
    "failed": 5,
    "pass_rate": 95.0,
    "duration_stats": {
      "avg": 12.5,
      "median": 10.2,
      "p95": 45.0,
      "min": 1.2,
      "max": 120.5
    }
  },
  "by_task": {...},
  "by_hour": {...},
  "errors": {...},
  "recommendations": [...]
}
```

### Markdown Report

`~/timmy/reports/scorecard_YYYYMMDD.md`:

- Executive summary with pass/fail counts
- Duration statistics (avg, median, p95)
- Per-task breakdown with pass rates
- Hourly timeline showing performance trends
- Error analysis with frequency counts
- Actionable recommendations

## Report Interpretation

### Pass Rate Thresholds

| Pass Rate | Status | Action |
|-----------|--------|--------|
| 95%+ | ✅ Excellent | Continue current operations |
| 85-94% | ⚠️ Good | Monitor for degradation |
| 70-84% | ⚠️ Fair | Review failing tasks |
| <70% | ❌ Poor | Immediate investigation required |

### Duration Guidelines

| Duration | Assessment |
|----------|------------|
| <5s | Fast |
| 5-15s | Normal |
| 15-30s | Slow |
| >30s | Very slow - consider optimization |

## Troubleshooting

### No JSONL files found

```bash
# Check input directory
ls -la ~/shared/overnight-loop/

# Ensure Syncthing is syncing
systemctl status syncthing@root
```

### Malformed lines

The generator skips malformed lines with a warning. Check the JSONL files for syntax errors.

### Empty reports

If no data exists, verify:
1. Overnight loop is running and writing JSONL
2. File permissions allow reading
3. Input path is correct
