```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:
        if not row["qty"].isdigit() or float(row["qty"]) <= 0:
            raise ValueError("qty must be a positive integer or zero")
        totals[row["site"]] = totals.get(row["site"], 0) + int(row["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]
```