```python
"""A shipment ledger: parse lines, total by site, find the busiest site."""


def load_ledger(lines):
    rows = []
    for line in lines:
        parts = line.split(",")
        if len(parts) != 3:
            raise ValueError("each ledger line is site,item,qty")
        site, item, raw = parts
        if not site or not item:
            raise ValueError("site and item must be non-empty")
        if not raw.isdigit():
            raise ValueError("qty must be a run of decimal digits")
        rows.append({"site": site, "item": item, "qty": int(raw)})
    return rows


def site_totals(rows):
    totals = {}
    for row in rows:
        site = row["site"]
        qty = row["qty"]
        if not qty.isdigit() or int(qty) <= 0:
            raise ValueError("qty must be a positive integer")
        if site in totals:
            totals[site] += int(qty)
        else:
            totals[site] = int(qty)
    return [[site, totals[site]] for site in sorted(totals)]


def busiest_site(rows):
    pairs = site_totals(rows)
    if not pairs:
        return None
    best = pairs[0]
    for pair in pairs:
        if pair[1] > best[1]:
            best = pair
    return best[0]
```