```python
def add_one(tally: dict, name: str, amount: int) -> dict:
    """Return a new tally with the specified amount added to the count of the given name."""
    return {**tally, name: tally.get(name, 0) + amount}

def merge_tally(left: dict, right: dict) -> dict:
    """Return a new tally with counts from both tallies combined, summing counts for shared names."""
    merged = left.copy()
    for name, count in right.items():
        merged[name] = merged.get(name, 0) + count
    return merged
```